From 69050d847a29b549aaf3971fe942a2f3fc5908f4 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Tue, 13 May 2025 16:32:36 +0300 Subject: [PATCH 01/60] ocean v4 update in packkage.json --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a5fcc2959..1f3d37f3f 100644 --- a/package.json +++ b/package.json @@ -31,7 +31,7 @@ "@loadable/component": "^5.16.4", "@next/third-parties": "^14.2.3", "@oceanprotocol/art": "^3.2.0", - "@oceanprotocol/lib": "^3.2.0", + "@oceanprotocol/lib": "^4.0.1", "@oceanprotocol/typographies": "^0.1.0", "@oceanprotocol/use-dark-mode": "^2.4.3", "@orbisclub/orbis-sdk": "^0.4.89", From 1c03b718d751f3c24606643657847bc6560fbbda Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Thu, 15 May 2025 10:01:15 +0300 Subject: [PATCH 02/60] converting to type:module --- app.config.js => app.config.cjs | 0 next-env.d.ts | 2 +- next.config.js | 55 +- package-lock.json | 6003 +++++++++++++++-- package.json | 14 +- scripts/barge-env.sh | 2 +- ...sses.js => load-development-addresses.cjs} | 1 + scripts/pregenerate.sh | 4 +- ...etadata.js => write-networks-metadata.cjs} | 0 ...po-metadata.js => write-repo-metadata.cjs} | 0 src/@context/Prices/_constants.ts | 2 +- src/@utils/accessDetailsAndPricing.ts | 2 +- src/@utils/nft.ts | 2 +- src/@utils/ocean/fixedRateExchange.ts | 2 +- src/@utils/order.ts | 2 +- src/@utils/provider.ts | 2 +- src/@utils/subgraph.ts | 2 +- .../InputElement/TagsAutoComplete/index.tsx | 2 +- .../@shared/FormInput/InputElement/index.tsx | 2 +- src/components/Publish/_constants.tsx | 2 +- src/components/Publish/_utils.ts | 2 +- src/components/Publish/index.tsx | 2 +- 22 files changed, 5357 insertions(+), 748 deletions(-) rename app.config.js => app.config.cjs (100%) rename scripts/{load-development-addresses.js => load-development-addresses.cjs} (96%) rename scripts/{write-networks-metadata.js => write-networks-metadata.cjs} (100%) rename scripts/{write-repo-metadata.js => write-repo-metadata.cjs} (100%) diff --git a/app.config.js b/app.config.cjs similarity index 100% rename from app.config.js rename to app.config.cjs diff --git a/next-env.d.ts b/next-env.d.ts index 4f11a03dc..52e831b43 100644 --- a/next-env.d.ts +++ b/next-env.d.ts @@ -2,4 +2,4 @@ /// // NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. +// see https://nextjs.org/docs/pages/api-reference/config/typescript for more information. diff --git a/next.config.js b/next.config.js index 30c173b1b..45ff9122e 100644 --- a/next.config.js +++ b/next.config.js @@ -1,8 +1,18 @@ -module.exports = (phase, { defaultConfig }) => { - /** - * @type {import('next').NextConfig} - */ - const nextConfig = { +import withTM from 'next-transpile-modules' +import { fileURLToPath } from 'url' +import path from 'path' +import pkg from 'webpack' +const { ProvidePlugin, IgnorePlugin } = pkg + +// Resolve __dirname for ESM +const __dirname = path.dirname(fileURLToPath(import.meta.url)) + +/** @type {import('next').NextConfig} */ +const nextConfig = (phase, { defaultConfig }) => { + const config = { + experimental: { + esmExternals: 'loose' + }, webpack: (config, options) => { config.module.rules.push( { @@ -12,26 +22,22 @@ module.exports = (phase, { defaultConfig }) => { }, { test: /\.gif$/, - // yay for webpack 5 - // https://webpack.js.org/guides/asset-management/#loading-images type: 'asset/resource' } ) - // for old ocean.js, most likely can be removed later on + + // Ignore electron imports config.plugins.push( - new options.webpack.IgnorePlugin({ + new IgnorePlugin({ resourceRegExp: /^electron$/ }) ) + + // Configure resolve.fallback const fallback = config.resolve.fallback || {} Object.assign(fallback, { - // crypto: require.resolve('crypto-browserify'), - // stream: require.resolve('stream-browserify'), - // assert: require.resolve('assert'), - // os: require.resolve('os-browserify'), - // url: require.resolve('url'), - http: require.resolve('stream-http'), - https: require.resolve('https-browserify'), + http: path.resolve(__dirname, 'node_modules/stream-http'), + https: path.resolve(__dirname, 'node_modules/https-browserify'), fs: false, crypto: false, os: false, @@ -42,12 +48,15 @@ module.exports = (phase, { defaultConfig }) => { }) config.resolve.fallback = fallback + // Provide process and Buffer config.plugins = (config.plugins || []).concat([ - new options.webpack.ProvidePlugin({ - process: 'process/browser', - Buffer: ['buffer', 'Buffer'] + new ProvidePlugin({ + process: path.resolve(__dirname, 'node_modules/process/browser'), + Buffer: [path.resolve(__dirname, 'node_modules/buffer'), 'Buffer'] }) ]) + + // Apply defaultConfig.webpack if it’s a function return typeof defaultConfig.webpack === 'function' ? defaultConfig.webpack(config, options) : config @@ -61,11 +70,9 @@ module.exports = (phase, { defaultConfig }) => { } ] } - - // Prefer loading of ES Modules over CommonJS - // https://nextjs.org/blog/next-11-1#es-modules-support - // experimental: { esmExternals: true } } - return nextConfig + return withTM(['@oceanprotocol/lib', '@oceanprotocol/ddo-js'])(config) } + +export default nextConfig diff --git a/package-lock.json b/package-lock.json index 687212359..e2f95fe77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,13 +16,16 @@ "@loadable/component": "^5.16.4", "@next/third-parties": "^14.2.3", "@oceanprotocol/art": "^3.2.0", - "@oceanprotocol/lib": "^3.2.0", + "@oceanprotocol/lib": "^4.0.1", "@oceanprotocol/typographies": "^0.1.0", "@oceanprotocol/use-dark-mode": "^2.4.3", "@orbisclub/orbis-sdk": "^0.4.89", + "@rdfjs/dataset": "^2.0.2", + "@rdfjs/formats-common": "^3.1.0", "@tippyjs/react": "^4.2.6", "@uiw/react-codemirror": "4.19.5", "@urql/exchange-refocus": "^1.0.0", + "@zazuko/env-node": "^2.1.4", "axios": "^1.7.2", "classnames": "^2.5.1", "connectkit": "^1.3.0", @@ -38,7 +41,8 @@ "js-cookie": "^3.0.5", "match-sorter": "^6.3.4", "myetherwallet-blockies": "^0.1.1", - "next": "^14.2.3", + "next": "^15.2.3", + "next-transpile-modules": "^10.0.1", "npm": "^10.8.0", "posthog-js": "^1.135.2", "query-string": "^9.0.0", @@ -116,6 +120,12 @@ "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", "dev": true }, + "node_modules/@adraffy/ens-normalize": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", + "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==", + "license": "MIT" + }, "node_modules/@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -2070,6 +2080,42 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "node_modules/@bergos/jsonparse": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@bergos/jsonparse/-/jsonparse-1.4.2.tgz", + "integrity": "sha512-qUt0QNJjvg4s1zk+AuLM6s/zcsQ8MvGn7+1f0vPuxvpCYa08YtTryuDInngbEyW5fNGGYe2znKt61RMGd5HnXg==", + "engines": [ + "node >= 0.2.0" + ], + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3" + } + }, + "node_modules/@bergos/jsonparse/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/@ceramicnetwork/common": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/@ceramicnetwork/common/-/common-2.24.0.tgz", @@ -2806,6 +2852,20 @@ "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==" }, + "node_modules/@digitalbazaar/http-client": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@digitalbazaar/http-client/-/http-client-3.4.1.tgz", + "integrity": "sha512-Ahk1N+s7urkgj7WvvUND5f8GiWEPfUw0D41hdElaqLgu8wZScI8gdI0q+qWw5N1d35x7GCRH2uk9mi+Uzo9M3g==", + "license": "BSD-3-Clause", + "dependencies": { + "ky": "^0.33.3", + "ky-universal": "^0.11.0", + "undici": "^5.21.2" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -2815,6 +2875,16 @@ "node": ">=10.0.0" } }, + "node_modules/@emnapi/runtime": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", + "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@emotion/babel-plugin": { "version": "11.10.2", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.2.tgz", @@ -3105,13 +3175,14 @@ } }, "node_modules/@ethereumjs/common": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", - "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", + "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", + "license": "MIT", "peer": true, "dependencies": { "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.1" + "ethereumjs-util": "^7.1.5" } }, "node_modules/@ethereumjs/rlp": { @@ -3126,13 +3197,14 @@ } }, "node_modules/@ethereumjs/tx": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", - "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", + "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", + "license": "MPL-2.0", "peer": true, "dependencies": { - "@ethereumjs/common": "^2.5.0", - "ethereumjs-util": "^7.1.2" + "@ethereumjs/common": "^2.6.4", + "ethereumjs-util": "^7.1.5" } }, "node_modules/@ethereumjs/util": { @@ -3888,6 +3960,15 @@ "@ethersproject/strings": "^5.7.0" } }, + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/@floating-ui/core": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.0.2.tgz", @@ -3977,6 +4058,367 @@ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "cpu": [ + "s390x" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "cpu": [ + "s390x" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "cpu": [ + "wasm32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later AND MIT", + "optional": true, + "dependencies": { + "@emnapi/runtime": "^1.2.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "cpu": [ + "ia32" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, "node_modules/@ipld/dag-cbor": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz", @@ -5482,11 +5924,6 @@ "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" }, - "node_modules/@lit-protocol/sdk-browser/node_modules/tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" - }, "node_modules/@lit/reactive-element": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz", @@ -6180,17 +6617,19 @@ } }, "node_modules/@next/env": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz", - "integrity": "sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==" + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.3.tgz", + "integrity": "sha512-a26KnbW9DFEUsSxAxKBORR/uD9THoYoKbkpFywMN/AFvboTt94b8+g/07T8J6ACsdLag8/PDU60ov4rPxRAixw==", + "license": "MIT" }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz", - "integrity": "sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.3.tgz", + "integrity": "sha512-uaBhA8aLbXLqwjnsHSkxs353WrRgQgiFjduDpc7YXEU0B54IKx3vU+cxQlYwPCyC8uYEEX7THhtQQsfHnvv8dw==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -6200,12 +6639,13 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz", - "integrity": "sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.3.tgz", + "integrity": "sha512-pVwKvJ4Zk7h+4hwhqOUuMx7Ib02u3gDX3HXPKIShBi9JlYllI0nU6TWLbPT94dt7FSi6mSBhfc2JrHViwqbOdw==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "darwin" @@ -6215,12 +6655,13 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz", - "integrity": "sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.3.tgz", + "integrity": "sha512-50ibWdn2RuFFkOEUmo9NCcQbbV9ViQOrUfG48zHBCONciHjaUKtHcYFiCwBVuzD08fzvzkWuuZkd4AqbvKO7UQ==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -6230,12 +6671,13 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz", - "integrity": "sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.3.tgz", + "integrity": "sha512-2gAPA7P652D3HzR4cLyAuVYwYqjG0mt/3pHSWTCyKZq/N/dJcUAEoNQMyUmwTZWCJRKofB+JPuDVP2aD8w2J6Q==", "cpu": [ "arm64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -6245,12 +6687,13 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz", - "integrity": "sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.3.tgz", + "integrity": "sha512-ODSKvrdMgAJOVU4qElflYy1KSZRM3M45JVbeZu42TINCMG3anp7YCBn80RkISV6bhzKwcUqLBAmOiWkaGtBA9w==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -6260,12 +6703,13 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz", - "integrity": "sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.3.tgz", + "integrity": "sha512-ZR9kLwCWrlYxwEoytqPi1jhPd1TlsSJWAc+H/CJHmHkf2nD92MQpSRIURR1iNgA/kuFSdxB8xIPt4p/T78kwsg==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "linux" @@ -6275,27 +6719,13 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz", - "integrity": "sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.3.tgz", + "integrity": "sha512-+G2FrDcfm2YDbhDiObDU/qPriWeiz/9cRR0yMWJeTLGGX6/x8oryO3tt7HhodA1vZ8r2ddJPCjtLcpaVl7TE2Q==", "cpu": [ "arm64" ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz", - "integrity": "sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==", - "cpu": [ - "ia32" - ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -6305,12 +6735,13 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz", - "integrity": "sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.3.tgz", + "integrity": "sha512-gHYS9tc+G2W0ZC8rBL+H6RdtXIyk40uLiaos0yj5US85FNhbFEndMA2nW3z47nzOWiSvXTZ5kBClc3rD0zJg0w==", "cpu": [ "x64" ], + "license": "MIT", "optional": true, "os": [ "win32" @@ -6446,22 +6877,183 @@ "node": ">=10" } }, + "node_modules/@oasisprotocol/deoxysii": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@oasisprotocol/deoxysii/-/deoxysii-0.0.5.tgz", + "integrity": "sha512-a6wYPjk8ALDIiQW/971AKOTSTY1qSdld+Y05F44gVZvlb3FOyHfgbIxXm7CZnUG1A+jK49g5SCWYP+V3/Tc75Q==", + "license": "MIT", + "dependencies": { + "bsaes": "0.0.2", + "uint32": "^0.2.1" + } + }, + "node_modules/@oasisprotocol/sapphire-paratime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@oasisprotocol/sapphire-paratime/-/sapphire-paratime-1.3.2.tgz", + "integrity": "sha512-98EQ2BrT0942B0VY50PKcJ6xmUAcz71y8OBMizP6oBJIh0+ogw/z3r5z4veJitMXM4zQbh5wOFaS9eOcKWX5FA==", + "license": "Apache-2.0", + "dependencies": { + "@noble/hashes": "1.3.2", + "@oasisprotocol/deoxysii": "0.0.5", + "cborg": "1.10.2", + "ethers": "6.10.0", + "tweetnacl": "1.0.3", + "type-fest": "2.19.0" + } + }, + "node_modules/@oasisprotocol/sapphire-paratime/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "license": "MIT", + "dependencies": { + "@noble/hashes": "1.3.2" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@oasisprotocol/sapphire-paratime/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", + "license": "MIT", + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@oasisprotocol/sapphire-paratime/node_modules/@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==", + "license": "MIT" + }, + "node_modules/@oasisprotocol/sapphire-paratime/node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "license": "MIT" + }, + "node_modules/@oasisprotocol/sapphire-paratime/node_modules/ethers": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.10.0.tgz", + "integrity": "sha512-nMNwYHzs6V1FR3Y4cdfxSQmNgZsRj1RiTU25JwvnJLmyzw9z3SKxNc2XKDuiXXo/v9ds5Mp9m6HBabgYQQ26tA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@adraffy/ens-normalize": "1.10.0", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@oasisprotocol/sapphire-paratime/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@oasisprotocol/sapphire-paratime/node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, "node_modules/@oceanprotocol/art": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/@oceanprotocol/art/-/art-3.2.0.tgz", "integrity": "sha512-aUQtg4m5hJlQ0u8C29O9TXJWcAenO3G9vP+vf6LNFkpTDOCMycN/F0SzHS89VNrvGUha8oTDEg7FAkfZBPv2WA==" }, "node_modules/@oceanprotocol/contracts": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-2.0.3.tgz", - "integrity": "sha512-D2YtlsgmhBuSmF/Ue8zMWPtXNiB4zgW09NjUQzvDFrloUo0a7yC8r8L84LrVniw+0Nmly/PhLcdm8i018yc34g==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-2.3.0.tgz", + "integrity": "sha512-vRNj8Giibe22LRWTKk47ZrQs1HkrhLO2vOpSmwjLktqx6UB5JXpH4Tf1kQNpEIKMpoHF69/oHlCMOxjmc4r8ow==", + "license": "Apache-2.0" + }, + "node_modules/@oceanprotocol/ddo-js": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@oceanprotocol/ddo-js/-/ddo-js-0.0.1.tgz", + "integrity": "sha512-PoS7dG82+oqQ/StP05ObR2n4HGXYqf1KH3bR3lsrhi76JK5Ov866h0QTUN1oy3TVSvWqdtVrSjZRkacZyz2RWA==", + "license": "Apache-2.0", + "dependencies": { + "@rdfjs/dataset": "^2.0.2", + "@rdfjs/formats-common": "^3.1.0", + "@rdfjs/types": "^1.1.2", + "@types/rdfjs__data-model": "^2.0.8", + "@types/rdfjs__dataset": "^2.0.7", + "@types/rdfjs__formats-common": "^3.1.5", + "@types/rdfjs__parser-jsonld": "^2.1.7", + "@types/rdfjs__to-ntriples": "^3.0.0", + "@zazuko/env-node": "^2.1.4", + "axios": "^1.7.9", + "chai": "^5.1.2", + "crypto": "^1.0.1", + "ethers": "^5.7.2", + "jose": "^5.9.6", + "lodash": "^4.17.21", + "rdf-validate-shacl": "^0.5.6" + } + }, + "node_modules/@oceanprotocol/ddo-js/node_modules/@rdfjs/types": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.2.tgz", + "integrity": "sha512-wqpOJK1QCbmsGNtyzYnojPU8gRDPid2JO0Q0kMtb4j65xhCK880cnKAfEOwC+dX85VJcCByQx5zOwyyfCjDJsg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } }, "node_modules/@oceanprotocol/lib": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-3.2.0.tgz", - "integrity": "sha512-Mfc9L35dZNAqusCgbQtyJZspSNv9OydWNOKkQU+w5PB40TfXmAyb/IpbYsMzQ/j7oJBSeO2Ewh9JNayyVtUgcQ==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-4.0.1.tgz", + "integrity": "sha512-CgwoXSILBfPUAAwp6fCsdSa8LnYhauHtVrRgHN7ldGDXybadgC6tGf1QNsuq6M3UM3B0sF+dkQ0vbnjztVft0A==", + "license": "Apache-2.0", "dependencies": { - "@oceanprotocol/contracts": "^2.0.3", + "@oasisprotocol/sapphire-paratime": "^1.3.2", + "@oceanprotocol/contracts": "^2.2.0", + "@oceanprotocol/ddo-js": "^0.0.1-next.7", + "@rdfjs/dataset": "^2.0.2", + "@rdfjs/formats-common": "^3.1.0", + "@zazuko/env-node": "^2.1.4", "cross-fetch": "^4.0.0", "crypto-js": "^4.1.1", "decimal.js": "^10.4.1", @@ -6472,17 +7064,19 @@ } }, "node_modules/@oceanprotocol/lib/node_modules/cross-fetch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", - "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", + "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", + "license": "MIT", "dependencies": { - "node-fetch": "^2.6.12" + "node-fetch": "^2.7.0" } }, "node_modules/@oceanprotocol/lib/node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -6501,17 +7095,20 @@ "node_modules/@oceanprotocol/lib/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" }, "node_modules/@oceanprotocol/lib/node_modules/webidl-conversions": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" }, "node_modules/@oceanprotocol/lib/node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -7554,6 +8151,622 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@rdfjs/data-model": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@rdfjs/data-model/-/data-model-2.1.0.tgz", + "integrity": "sha512-pnjwSqDCXxxJQPm3TyDaqoWynYYQBl1pZC7rIPhdck7RbcEVF8hIBg5vXXosUbNcW3qwyAEBtYGojoWRnxBPew==", + "license": "MIT", + "bin": { + "rdfjs-data-model-test": "bin/test.js" + } + }, + "node_modules/@rdfjs/dataset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@rdfjs/dataset/-/dataset-2.0.2.tgz", + "integrity": "sha512-6YJx+5n5Uxzq9dd9I0GGcIo6eopZOPfcsAfxSGX5d+YBzDgVa1cbtEBFnaPyPKiQsOm4+Cr3nwypjpg02YKPlA==", + "license": "MIT", + "bin": { + "rdfjs-dataset-test": "bin/test.js" + } + }, + "node_modules/@rdfjs/environment": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rdfjs/environment/-/environment-1.0.0.tgz", + "integrity": "sha512-+S5YjSvfoQR5r7YQCRCCVHvIEyrWia7FJv2gqM3s5EDfotoAQmFeBagApa9c/eQFi5EiNhmBECE5nB8LIxTaHg==", + "license": "MIT" + }, + "node_modules/@rdfjs/fetch-lite": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@rdfjs/fetch-lite/-/fetch-lite-3.3.0.tgz", + "integrity": "sha512-K3hZC4+Ch0UmYA1w0Xv/8cCVPD5ulKwRa6A/iTn3BFbZpVAb5KoBfOfnOhe6VJEa50raUvTHR1gp1YdvUnYt9g==", + "license": "MIT", + "dependencies": { + "is-stream": "^4.0.1", + "nodeify-fetch": "^3.1.0", + "readable-stream": "^4.5.2" + } + }, + "node_modules/@rdfjs/fetch-lite/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@rdfjs/fetch-lite/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@rdfjs/fetch-lite/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@rdfjs/formats": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/formats/-/formats-4.0.1.tgz", + "integrity": "sha512-Rg53vP+x1bnGAqJNKgEzJEUPDhj+tCpzb6wdmfLoVFq4XoZ589+cg2ScFDUMMyAVsgKXvSWjDhQ9f9ab254ZxA==", + "license": "MIT", + "dependencies": { + "@rdfjs/parser-jsonld": "^2.1.0", + "@rdfjs/parser-n3": "^2.0.1", + "@rdfjs/serializer-jsonld": "^2.0.0", + "@rdfjs/serializer-jsonld-ext": "^4.0.0", + "@rdfjs/serializer-ntriples": "^2.0.0", + "@rdfjs/serializer-turtle": "^1.1.1", + "@rdfjs/sink-map": "^2.0.0", + "rdfxml-streaming-parser": "^3.0.1" + } + }, + "node_modules/@rdfjs/formats-common": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rdfjs/formats-common/-/formats-common-3.1.0.tgz", + "integrity": "sha512-wgz5za/Uls+pttLdLl/aH0m0LQNgjqpWwk9exNs2Smmb2CosynRo4S0+CxeNOVZh4zeUm7oAlr1CK/tyg4Ff6g==", + "license": "MIT", + "dependencies": { + "@rdfjs/parser-jsonld": "^2.0.0", + "@rdfjs/parser-n3": "^2.0.0", + "@rdfjs/serializer-jsonld": "^2.0.0", + "@rdfjs/serializer-ntriples": "^2.0.0", + "@rdfjs/sink-map": "^2.0.0", + "rdfxml-streaming-parser": "^2.2.0" + } + }, + "node_modules/@rdfjs/formats/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@rdfjs/formats/node_modules/rdfxml-streaming-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rdfxml-streaming-parser/-/rdfxml-streaming-parser-3.0.1.tgz", + "integrity": "sha512-lJtJ85xEJHc5BXohOPtxjYMEbGK3uiRxROwJLVNGanjuKLT9BWJluoNr3RzS9vQNmjkQwhhYmrbIftw1WUOj7Q==", + "license": "MIT", + "dependencies": { + "@rubensworks/saxes": "^6.0.1", + "@types/readable-stream": "^4.0.18", + "buffer": "^6.0.3", + "rdf-data-factory": "^2.0.0", + "readable-stream": "^4.4.2", + "relative-to-absolute-iri": "^1.0.0", + "validate-iri": "^1.0.0" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/rubensworks/" + } + }, + "node_modules/@rdfjs/formats/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@rdfjs/namespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/namespace/-/namespace-2.0.1.tgz", + "integrity": "sha512-U85NWVGnL3gWvOZ4eXwUcv3/bom7PAcutSBQqmVWvOaslPy+kDzAJCH1WYBLpdQd4yMmJ+bpJcDl9rcHtXeixg==", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1" + } + }, + "node_modules/@rdfjs/parser-jsonld": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@rdfjs/parser-jsonld/-/parser-jsonld-2.1.3.tgz", + "integrity": "sha512-VYnPEwVdqFAPTo9F8XIN4UpGPdNzhBaCFv5b5OT74pA7H8so4aTno3Yd6M5I9bhTrUoCQjpjgr+ugYlvWxdBIA==", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "jsonld-streaming-parser": "^5.0.0", + "readable-stream": "^4.5.2" + } + }, + "node_modules/@rdfjs/parser-jsonld/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@rdfjs/parser-jsonld/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@rdfjs/parser-n3": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@rdfjs/parser-n3/-/parser-n3-2.1.0.tgz", + "integrity": "sha512-/DiosB+0vPzgAs1WXcCB8MbA5hqq0fIh9VhMg7fBmoJ/I8Xl6Op/AOxVu9x1XZCHSNwO/VsJT/HYKEctZVRKSQ==", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + } + }, + "node_modules/@rdfjs/parser-n3/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@rdfjs/parser-n3/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@rdfjs/prefix-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@rdfjs/prefix-map/-/prefix-map-0.1.2.tgz", + "integrity": "sha512-qapFYVPYyYepg0sFy7T512667iZsN9a3RNcyNBTBV+O8wrU3v/URQZOipCTNrEm1BXzZ7KCK1Yi8HrE1y+uRuQ==", + "license": "MIT", + "dependencies": { + "readable-stream": "^4.3.0" + } + }, + "node_modules/@rdfjs/prefix-map/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@rdfjs/prefix-map/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@rdfjs/serializer-jsonld": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/serializer-jsonld/-/serializer-jsonld-2.0.1.tgz", + "integrity": "sha512-O8WzdY7THsse/nMsrMLd2e51ADHO2SIUrkiZ9Va/8W3lXeeeiwDRPMppWy/i9yL4q6EM8iMW1riV7E0mK3fsBQ==", + "license": "MIT", + "dependencies": { + "@rdfjs/sink": "^2.0.1", + "readable-stream": "^4.5.2" + } + }, + "node_modules/@rdfjs/serializer-jsonld-ext": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/serializer-jsonld-ext/-/serializer-jsonld-ext-4.0.1.tgz", + "integrity": "sha512-eGNAdhsV8wkmCadyIN+PBfsN+BIiqplAd5VMc++wf5McsVi/vPNrWcBINdrNnlegml8nLUy0rlKztCQ/4pxW8w==", + "license": "MIT", + "dependencies": { + "@rdfjs/sink": "^2.0.1", + "jsonld": "^8.3.3", + "readable-stream": "^4.7.0", + "stream-chunks": "^1.0.0" + } + }, + "node_modules/@rdfjs/serializer-jsonld-ext/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@rdfjs/serializer-jsonld-ext/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@rdfjs/serializer-jsonld/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@rdfjs/serializer-jsonld/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@rdfjs/serializer-ntriples": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/serializer-ntriples/-/serializer-ntriples-2.0.1.tgz", + "integrity": "sha512-G1ZI0qaN/MUHxeCwr59JscO2LdyIb6MNQdXOv7NFBZuodyHsxxhJRFmMVn+3SEXeNJbVeEEbWBrLglCUgJ8XjQ==", + "license": "MIT", + "dependencies": { + "@rdfjs/sink": "^2.0.1", + "@rdfjs/to-ntriples": "^3.0.1", + "duplex-to": "^2.0.0", + "readable-stream": "^4.5.2" + } + }, + "node_modules/@rdfjs/serializer-ntriples/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@rdfjs/serializer-ntriples/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@rdfjs/serializer-turtle": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rdfjs/serializer-turtle/-/serializer-turtle-1.1.5.tgz", + "integrity": "sha512-uvIFUOuMuk8JrJnng/tWKIQ+8XI6YLEms75YdvZ49LtIyyfbDqKz76EybgnD/zZYfMhVVkguKtheBC9h08g1PQ==", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/prefix-map": "^0.1.1", + "@rdfjs/sink": "^2.0.0", + "@rdfjs/term-map": "^2.0.0", + "@rdfjs/to-ntriples": "^3.0.1", + "@rdfjs/tree": "^0.2.1", + "readable-stream": "^4.3.0", + "stream-chunks": "^1.0.0" + } + }, + "node_modules/@rdfjs/serializer-turtle/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@rdfjs/serializer-turtle/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@rdfjs/sink": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/sink/-/sink-2.0.1.tgz", + "integrity": "sha512-smzIFGF6EH1sLAJR9F3p2wMNrN44JjPeYAoITTJLqtuNC319K7IXaJ+qNLBGTtapZ/jvpx2Tks0TjcH9KrAvEA==", + "license": "MIT" + }, + "node_modules/@rdfjs/sink-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/sink-map/-/sink-map-2.0.1.tgz", + "integrity": "sha512-BwCTTsMN/tfQl6QzD2oHn9A08e4af+hlzAz/d5XXrlOkYMEDUAqFuh2Odj9EbayhAEeN4wA743Mj2yC0/s69rg==", + "license": "MIT" + }, + "node_modules/@rdfjs/term-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@rdfjs/term-map/-/term-map-2.0.2.tgz", + "integrity": "sha512-EJ2FmmdEUsSR/tU1nrizRLWzH24YzhuvesrbUWxC3Fs0ilYNdtTbg0RaFJDUnJF3HkbNBQe8Zrt/uvU/hcKnHg==", + "license": "MIT", + "dependencies": { + "@rdfjs/to-ntriples": "^3.0.1" + } + }, + "node_modules/@rdfjs/term-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@rdfjs/term-set/-/term-set-2.0.3.tgz", + "integrity": "sha512-DyXrKWEx+mtAFUZVU7bc3Va6/KZ8PsIp0RVdyWT9jfDgI/HCvNisZaBtAcm+SYTC45o+7WLkbudkk1bfaKVB0A==", + "license": "MIT", + "dependencies": { + "@rdfjs/to-ntriples": "^3.0.1" + } + }, + "node_modules/@rdfjs/to-ntriples": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/to-ntriples/-/to-ntriples-3.0.1.tgz", + "integrity": "sha512-gjoPAvh4j7AbGMjcDn/8R4cW+d/FPtbfbMM0uQXkyfBFtNUW2iVgrqsgJ65roLc54Y9A2TTFaeeTGSvY9a0HCQ==", + "license": "MIT" + }, + "node_modules/@rdfjs/traverser": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@rdfjs/traverser/-/traverser-0.1.4.tgz", + "integrity": "sha512-53QYlxiQIxH8k4jutjet1EjdZfyKCDSsfqnj2YejAJ1X8mLDMSOsneMM5savBwBR0ROfAhKVtZVb+pego+JLiw==", + "license": "MIT", + "dependencies": { + "@rdfjs/to-ntriples": "^3.0.1" + } + }, + "node_modules/@rdfjs/tree": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@rdfjs/tree/-/tree-0.2.1.tgz", + "integrity": "sha512-J70CQ7R8Ivfs1FFUxtFN7ADb5wTMgbhn0O558NXSXQHItmSavT6cXmQlIokbmboU+grhu56iR/8Bl9do8LCq+w==", + "license": "MIT", + "dependencies": { + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/term-map": "^2.0.0", + "@rdfjs/term-set": "^2.0.1" + } + }, + "node_modules/@rdfjs/types": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-2.0.1.tgz", + "integrity": "sha512-uyAzpugX7KekAXAHq26m3JlUIZJOC0uSBhpnefGV5i15bevDyyejoB7I+9MKeUrzXD8OOUI3+4FeV1wwQr5ihA==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@react-native-community/cli": { "version": "10.2.2", "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-10.2.2.tgz", @@ -9190,6 +10403,18 @@ "loose-envify": "^1.1.0" } }, + "node_modules/@rubensworks/saxes": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@rubensworks/saxes/-/saxes-6.0.1.tgz", + "integrity": "sha512-UW4OTIsOtJ5KSXo2Tchi4lhZqu+tlHrOAs4nNti7CrtB53kAZl3/hyrTi6HkMihxdbDM6m2Zc3swc/ZewEe1xw==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=v12.22.12" + } + }, "node_modules/@safe-global/safe-apps-provider": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-provider/-/safe-apps-provider-0.15.2.tgz", @@ -9292,6 +10517,12 @@ "@scure/base": "~1.1.0" } }, + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "license": "MIT" + }, "node_modules/@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -9322,6 +10553,7 @@ "version": "4.6.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -15481,21 +16713,29 @@ "node_modules/@swc/counter": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "license": "Apache-2.0" }, "node_modules/@swc/helpers": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", - "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", "dependencies": { - "@swc/counter": "^0.1.3", - "tslib": "^2.4.0" + "tslib": "^2.8.0" } }, + "node_modules/@swc/helpers/node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, "node_modules/@szmarczak/http-timer": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "license": "MIT", "peer": true, "dependencies": { "defer-to-connect": "^2.0.1" @@ -15772,6 +17012,19 @@ "node": ">= 10" } }, + "node_modules/@tpluscode/rdf-ns-builders": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@tpluscode/rdf-ns-builders/-/rdf-ns-builders-5.0.0.tgz", + "integrity": "sha512-rtMFbArdief+s0z2A3TOb/gNe5O5xn9LDiEpilCf6lGYCUIfyqoOvZY80fS/eILwcF2Mj6cUQN1WBQ+1neJmaw==", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.1.0", + "@rdfjs/namespace": "^2.0.1", + "@rdfjs/types": "^2", + "@types/rdfjs__namespace": "^2.0.10", + "@zazuko/prefixes": "^2.3.0" + } + }, "node_modules/@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", @@ -15848,6 +17101,7 @@ "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "license": "MIT", "peer": true, "dependencies": { "@types/http-cache-semantics": "*", @@ -15865,6 +17119,17 @@ "clipboard": "*" } }, + "node_modules/@types/clownface": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/clownface/-/clownface-2.0.10.tgz", + "integrity": "sha512-Vz48oQux0YArQ66wfRp54NlxvEmpyTqbFIH435AsgN7C+p4MXao/rjXUisULL6436bxjFk4VluZr7J2HQkBHmQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@rdfjs/types": ">=1", + "@types/rdfjs__environment": "*" + } + }, "node_modules/@types/debug": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", @@ -15942,11 +17207,21 @@ "dev": true }, "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "license": "MIT", "peer": true }, + "node_modules/@types/http-link-header": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/http-link-header/-/http-link-header-1.0.7.tgz", + "integrity": "sha512-snm5oLckop0K3cTDAiBnZDy6ncx9DJ3mCRDvs42C884MbVYPP74Tiq2hFsSDRTyjK6RyDYDIulPiW23ge+g5Lw==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/is-function": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.1.tgz", @@ -16051,10 +17326,17 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "node_modules/@types/jsonld": { + "version": "1.5.15", + "resolved": "https://registry.npmjs.org/@types/jsonld/-/jsonld-1.5.15.tgz", + "integrity": "sha512-PlAFPZjL+AuGYmwlqwKEL0IMP8M8RexH0NIPGfCVWSQ041H2rR/8OlyZSD7KsCVoN8vCfWdtWDBxX8yBVP+xow==", + "license": "MIT" + }, "node_modules/@types/keyv": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "license": "MIT", "peer": true, "dependencies": { "@types/node": "*" @@ -16139,9 +17421,10 @@ "dev": true }, "node_modules/@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", + "license": "MIT", "peer": true, "dependencies": { "@types/node": "*" @@ -16169,6 +17452,221 @@ "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", "dev": true }, + "node_modules/@types/rdf-dataset-ext": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/rdf-dataset-ext/-/rdf-dataset-ext-1.0.8.tgz", + "integrity": "sha512-ngMGOzAm+yvrfTzFhlmPNa9lfWO72IkdqYRR+HNIPX3x+RPLf6qRpAi8GAZCg0rkpGt2JJqDQF3FgVxE6ykr/w==", + "license": "MIT", + "peer": true, + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/readable-stream": "*" + } + }, + "node_modules/@types/rdfjs__data-model": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@types/rdfjs__data-model/-/rdfjs__data-model-2.0.9.tgz", + "integrity": "sha512-rgQSlM9jr7XMZdC0xUIr0zsxf5FvdB4cxxzv+MlHm6uJGip5qi0q+BluNhakAzaM2I56nKLDqSE3I/XuOaHGnA==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/@types/rdfjs__dataset": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/rdfjs__dataset/-/rdfjs__dataset-2.0.7.tgz", + "integrity": "sha512-+GaYIL9C7N1N0HyH+obU4IXuL7DX+fXuf827aUQ2Vx2UghO47+OTxo2v3seEQj/1YHoHBfQFk5Y4P6Q7Ht4Hqw==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/@types/rdfjs__environment": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/rdfjs__environment/-/rdfjs__environment-1.0.0.tgz", + "integrity": "sha512-MDcnv3qfJvbHoEpUQXj5muT8g3e+xz1D8sGevrq3+Q4TzeEvQf5ijGX5l8485XFYrN/OBApgzXkHMZC04/kd5w==", + "license": "MIT", + "peer": true, + "dependencies": { + "@rdfjs/types": "*", + "@types/node": "*" + } + }, + "node_modules/@types/rdfjs__fetch-lite": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/rdfjs__fetch-lite/-/rdfjs__fetch-lite-3.0.11.tgz", + "integrity": "sha512-1bHxBn62bmTPq/HY9Jr+iKCdBp8RTEJ4WA0ycihghRF8zWQfw6T7E5CqdPi4nncmgF70LOz7jF/4jeLGdb6H2A==", + "license": "MIT", + "peer": true, + "dependencies": { + "@rdfjs/types": "*", + "@types/node": "*", + "@types/rdfjs__formats": "*" + } + }, + "node_modules/@types/rdfjs__formats": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/rdfjs__formats/-/rdfjs__formats-4.0.1.tgz", + "integrity": "sha512-Zj7hQEn5HeCj+pJCWshY2gqBcdBdwyc2j20Ht3PH91pkdRuG2AlGDD3N9PQ1oZ3+J6Q96rAlhxUbjQUp9+s3FQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/node": "*", + "@types/rdfjs__parser-jsonld": "*", + "@types/rdfjs__parser-n3": "*", + "@types/rdfjs__serializer-jsonld": "*", + "@types/rdfjs__serializer-jsonld-ext": "*", + "@types/rdfjs__serializer-ntriples": "*", + "@types/rdfjs__serializer-turtle": "*", + "@types/rdfjs__sink-map": "*", + "rdfxml-streaming-parser": ">=2" + } + }, + "node_modules/@types/rdfjs__formats-common": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@types/rdfjs__formats-common/-/rdfjs__formats-common-3.1.5.tgz", + "integrity": "sha512-Zt74nSd9NemOq90/2cMrBVwnHJIXHFFDS7tkY4Slei1eRoQJpws059Lx9O+mqaFspkD3r81Enu/5CiNfQg9V7g==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/node": "*", + "@types/rdfjs__parser-jsonld": "*", + "@types/rdfjs__parser-n3": "*", + "@types/rdfjs__serializer-jsonld": "*", + "@types/rdfjs__serializer-ntriples": "*", + "@types/rdfjs__sink-map": "*", + "rdfxml-streaming-parser": ">=2" + } + }, + "node_modules/@types/rdfjs__namespace": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/rdfjs__namespace/-/rdfjs__namespace-2.0.10.tgz", + "integrity": "sha512-xoVzEIOxcpyteEmzaj94MSBbrBFs+vqv05joMhzLEiPRwsBBDnhkdBCaaDxR1Tf7wOW0kB2R1IYe4C3vEBFPgA==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/@types/rdfjs__parser-jsonld": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@types/rdfjs__parser-jsonld/-/rdfjs__parser-jsonld-2.1.7.tgz", + "integrity": "sha512-n35K+c1Y95580N202Jxly6xjFE953FF+Y2mwxok6zLfMo4rgIfgMBElnNwpja0IeYXTuzGm1tEz7va3lItGrTg==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/jsonld": "*" + } + }, + "node_modules/@types/rdfjs__parser-n3": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/rdfjs__parser-n3/-/rdfjs__parser-n3-2.0.6.tgz", + "integrity": "sha512-VHfdq7BDV6iMCtHkzTFSOuUWnqGlMUmEF0UZyK4+g9SzLWvc6TMcU5TYwQPQIz/e0s7dZ+xomxx6mVtIzsRQ/A==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0" + } + }, + "node_modules/@types/rdfjs__prefix-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@types/rdfjs__prefix-map/-/rdfjs__prefix-map-0.1.5.tgz", + "integrity": "sha512-RAwyS/2dT9X79QwM0F8KLweTfuBoe6xtiAlU7wKPB+/t/sfk6A50LYtAWaDVP5qBjcu50UkKkZT+VR47CiLkfg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/@types/rdfjs__serializer-jsonld": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/rdfjs__serializer-jsonld/-/rdfjs__serializer-jsonld-2.0.5.tgz", + "integrity": "sha512-ubdLD9QgZzAt+65NSPzh2qWCPWcGYlHEWgkP6uRwfm7JC48Xh/QjzwOTG13MTomOkQqcN4R7PIG0j3Ca8iyNWQ==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0" + } + }, + "node_modules/@types/rdfjs__serializer-jsonld-ext": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/rdfjs__serializer-jsonld-ext/-/rdfjs__serializer-jsonld-ext-4.0.1.tgz", + "integrity": "sha512-jgbQ/1kV7nESKG7SY8FJED6K4OFznr6Sz3ybF1ncpBR7TUBTuy3InpZOVRK4Wjpy2zi84iIAzJ1CIIo9NZh2Xw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/jsonld": "*", + "@types/node": "*" + } + }, + "node_modules/@types/rdfjs__serializer-ntriples": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/rdfjs__serializer-ntriples/-/rdfjs__serializer-ntriples-2.0.6.tgz", + "integrity": "sha512-Nn3e3eyuymLvbI5MFzI7ODD/X6ZGpbB9fLaWOB00RtFHd2vttk3wQL2fzzsZZQPJ/ihC/xlFE4cNQkO6SoHa7w==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0" + } + }, + "node_modules/@types/rdfjs__serializer-turtle": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@types/rdfjs__serializer-turtle/-/rdfjs__serializer-turtle-1.1.0.tgz", + "integrity": "sha512-NGHnbz5985UwS/YS6WL/FkS94B+QiVTdsfvJCqPwLmY3E7UeClw91c2KbiphZUR/uh7uwLwxeKKhV2T1gYgT5Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/node": "*", + "@types/rdfjs__prefix-map": "*" + } + }, + "node_modules/@types/rdfjs__sink-map": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/rdfjs__sink-map/-/rdfjs__sink-map-2.0.5.tgz", + "integrity": "sha512-ycUBlOMbp9YpjrBrMwGv3uiqulOWgodess06cinYLxomOTc2ET9rEQklgM5rJqnu5WMsVP8SFG3fFw36/5hADQ==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/@types/rdfjs__term-map": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/rdfjs__term-map/-/rdfjs__term-map-2.0.10.tgz", + "integrity": "sha512-YlpYkya+Xq9fmcw+BMi1SCh+w2sBu7G0/qd2+ZhB4QIK3V1xq2o3EOAZnlahyQdwrW9t5+Ihw8IVVvZsJvDOTA==", + "license": "MIT", + "peer": true, + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/@types/rdfjs__term-set": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@types/rdfjs__term-set/-/rdfjs__term-set-2.0.9.tgz", + "integrity": "sha512-RRXs5DwFGanZyT705f7KLSiN68gUVUtGWTp508CXJhLfD7AWmilqc1BLgLUoac48h3pnh9w5lRhwFm6fj1ZE5Q==", + "license": "MIT", + "peer": true, + "dependencies": { + "@rdfjs/types": "*" + } + }, + "node_modules/@types/rdfjs__to-ntriples": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/rdfjs__to-ntriples/-/rdfjs__to-ntriples-3.0.0.tgz", + "integrity": "sha512-3qZGpe2L3s2fAwmLvDDrcPCVDQmmEsg1KpwDd6bLPcCWQ7BISWHIQX/k/l1VU9EZB8uNoEAcmRmeVJY2jnu7wA==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0" + } + }, + "node_modules/@types/rdfjs__traverser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@types/rdfjs__traverser/-/rdfjs__traverser-0.1.5.tgz", + "integrity": "sha512-tTpiM6lAddw+bGRDjhzwdpo1EQK73m8gYgMVNfO4OsevnuLZvQJeCJBckpuDC4H5HVAEwCapI0UlH9dVnZ9u5g==", + "license": "MIT", + "peer": true, + "dependencies": { + "@rdfjs/types": "*" + } + }, "node_modules/@types/react": { "version": "18.3.3", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", @@ -16222,6 +17720,16 @@ "@types/react": "*" } }, + "node_modules/@types/readable-stream": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.18.tgz", + "integrity": "sha512-21jK/1j+Wg+7jVw1xnSwy/2Q1VgVjWuFssbYGTREPUBeZ+rqVFl2udq0IkxzPC0ZhOzVceUbyIACFZKLqKEBlA==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, "node_modules/@types/remove-markdown": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/@types/remove-markdown/-/remove-markdown-0.3.4.tgz", @@ -16229,18 +17737,20 @@ "dev": true }, "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", + "license": "MIT", "peer": true, "dependencies": { "@types/node": "*" } }, "node_modules/@types/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", + "license": "MIT", "peer": true, "dependencies": { "@types/node": "*" @@ -16707,6 +18217,15 @@ "react": ">=16.8.0" } }, + "node_modules/@vocabulary/sh": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@vocabulary/sh/-/sh-1.1.6.tgz", + "integrity": "sha512-8IfAQoKh57THz8LA2+n1jaY/VC2XaqMNSsJgzBKSSrj20y5PSMAawb6dMsxoLxqDIPBDs1TFRl/9CijUnwbBUA==", + "license": "MIT", + "peerDependencies": { + "@rdfjs/types": "^2.0.0" + } + }, "node_modules/@wagmi/chains": { "version": "0.2.22", "resolved": "https://registry.npmjs.org/@wagmi/chains/-/chains-0.2.22.tgz", @@ -18519,6 +20038,128 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "node_modules/@zazuko/env-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@zazuko/env-core/-/env-core-1.1.2.tgz", + "integrity": "sha512-mnLG40utuT7jPBPLs6fJ0puhfagnXSj+S8t9+zUGs3YlrOq/7b2zr64Hi3p3etwDdApaQ0VgQuNIY9doaruS1Q==", + "dependencies": { + "@rdfjs/environment": "^1.0.0" + }, + "peerDependencies": { + "@types/rdfjs__environment": "^1.0.0" + } + }, + "node_modules/@zazuko/env-node": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@zazuko/env-node/-/env-node-2.1.5.tgz", + "integrity": "sha512-qYrePSWiz9XOB5R0NfvuaogmPP8gLcMsl18G7sYW1h6RB4l3aiofAr4YAKTK+bpJgGjeivDDi64lsQjF2F6p0g==", + "license": "MIT", + "dependencies": { + "@rdfjs/fetch-lite": "^3.2.2", + "@rdfjs/formats": "^4.0.0", + "@zazuko/env": "^2.5.3", + "@zazuko/rdf-utils-fs": "^3.3.0" + }, + "peerDependencies": { + "@types/rdfjs__fetch-lite": "^3.0.11", + "@types/rdfjs__formats": "^4.0.1" + } + }, + "node_modules/@zazuko/env-node/node_modules/@tpluscode/rdf-ns-builders": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tpluscode/rdf-ns-builders/-/rdf-ns-builders-4.3.0.tgz", + "integrity": "sha512-x3uh9mYwAU+PrALaDKhVjml1TCCWWduo6J8rybd9SMEEAoooXq1MYb13MRputjRT/kYaFyCND7LMobzhxZ/+bg==", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2", + "@rdfjs/namespace": "^2", + "@rdfjs/types": "*", + "@types/rdfjs__namespace": "^2.0.2", + "@zazuko/prefixes": "^2.0.1" + } + }, + "node_modules/@zazuko/env-node/node_modules/@zazuko/env": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/@zazuko/env/-/env-2.5.3.tgz", + "integrity": "sha512-kivvYoXGFjva1CuXeK/jaaWMy9eXhhFmuSfSJGVW2wH7XbcZehJObjPXEVlZ3kKLCFhuv96j8Ot3SkbYaOtuLA==", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/dataset": "^2.0.1", + "@rdfjs/formats": "^4.0.0", + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/term-map": "^2.0.0", + "@rdfjs/term-set": "^2.0.1", + "@rdfjs/traverser": "^0.1.2", + "@tpluscode/rdf-ns-builders": "^4.1.0", + "@zazuko/env-core": "^1.1.2", + "@zazuko/prefixes": "^2.1.0", + "clownface": "^2.0.2", + "get-stream": "^9.0.1", + "rdf-dataset-ext": "^1.1.0" + }, + "peerDependencies": { + "@rdfjs/types": "^2", + "@types/clownface": "^2.0.0", + "@types/rdf-dataset-ext": "^1.0.8", + "@types/rdfjs__data-model": "^2.0.9", + "@types/rdfjs__dataset": "^2.0.7", + "@types/rdfjs__environment": "^1.0.0", + "@types/rdfjs__formats": "^4.0.1", + "@types/rdfjs__namespace": "^2.0.10", + "@types/rdfjs__term-map": "^2.0.10", + "@types/rdfjs__term-set": "^2.0.9", + "@types/rdfjs__traverser": "^0.1.5" + } + }, + "node_modules/@zazuko/env-node/node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@zazuko/env-node/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@zazuko/prefixes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@zazuko/prefixes/-/prefixes-2.4.0.tgz", + "integrity": "sha512-bd53k5XgFKWR56sofHeAcIbv8o0m2HsJlbHaHbrMufUCdgiZsCLvZn84Vh1dhcsyBHOD0EIo9AD4pNWDQLVRaw==", + "license": "MIT" + }, + "node_modules/@zazuko/rdf-utils-fs": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@zazuko/rdf-utils-fs/-/rdf-utils-fs-3.3.1.tgz", + "integrity": "sha512-4HjTbJUwiCFanMMcaaZkLIkWUdVjXSQstAyxnfzsUOmh8Q43iVBL+mYAl17zoi47III0POL6hitRsN1JJ5tUFg==", + "license": "MIT", + "dependencies": { + "readable-stream": ">=3.6.0" + }, + "peerDependencies": { + "@rdfjs/types": "*", + "@types/rdfjs__environment": "0 - 1", + "@types/rdfjs__formats": "^4" + } + }, "node_modules/@zeit/schemas": { "version": "2.36.0", "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.36.0.tgz", @@ -18558,7 +20199,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "peer": true, "dependencies": { "event-target-shim": "^5.0.0" }, @@ -18567,9 +20207,10 @@ } }, "node_modules/abortcontroller-polyfill": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", - "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.8.tgz", + "integrity": "sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==", + "license": "MIT", "peer": true }, "node_modules/absolute-path": { @@ -19854,6 +21495,7 @@ "version": "0.2.6", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "license": "MIT", "peer": true, "dependencies": { "safer-buffer": "~2.1.0" @@ -19863,6 +21505,7 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, "dependencies": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -19884,6 +21527,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "license": "MIT", "peer": true, "engines": { "node": ">=0.8" @@ -19904,6 +21548,15 @@ "inherits": "2.0.3" } }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "license": "MIT", + "engines": { + "node": ">=12" + } + }, "node_modules/assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -20052,21 +21705,24 @@ "version": "0.7.0", "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "license": "Apache-2.0", "peer": true, "engines": { "node": "*" } }, "node_modules/aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", + "license": "MIT", "peer": true }, "node_modules/axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", + "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "license": "MIT", "dependencies": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -20730,11 +22386,19 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "license": "BSD-3-Clause", "peer": true, "dependencies": { "tweetnacl": "^0.14.3" } }, + "node_modules/bcrypt-pbkdf/node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "license": "Unlicense", + "peer": true + }, "node_modules/bech32": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", @@ -21048,6 +22712,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, "dependencies": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -21058,6 +22723,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, "dependencies": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -21069,6 +22735,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, "dependencies": { "bn.js": "^5.0.0", "randombytes": "^2.0.1" @@ -21077,12 +22744,14 @@ "node_modules/browserify-rsa/node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true }, "node_modules/browserify-sign": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, "dependencies": { "bn.js": "^5.1.1", "browserify-rsa": "^4.0.1", @@ -21098,12 +22767,14 @@ "node_modules/browserify-sign/node_modules/bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true }, "node_modules/browserify-sign/node_modules/safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, "funding": [ { "type": "github", @@ -21177,6 +22848,15 @@ "safe-buffer": "^5.1.2" } }, + "node_modules/bsaes": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/bsaes/-/bsaes-0.0.2.tgz", + "integrity": "sha512-iVxJFMOvCUG85sX2UVpZ9IgvH6Jjc5xpd/W8pALvFE7zfCqHkV7hW3M2XZtpg9biPS0K4Eka96bbNNgLohcpgQ==", + "license": "MIT", + "dependencies": { + "uint32": "^0.2.1" + } + }, "node_modules/bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -21236,6 +22916,7 @@ "version": "0.0.5", "resolved": "https://registry.npmjs.org/buffer-to-arraybuffer/-/buffer-to-arraybuffer-0.0.5.tgz", "integrity": "sha512-3dthu5CYiVB1DEJp61FtApNnNndTckcqe4pFcLdvHtrpG+kcyekCJKg4MRiDcFW7A6AODnXB9U4dwQiCW5kzJQ==", + "license": "MIT", "peer": true }, "node_modules/buffer-xor": { @@ -21549,15 +23230,17 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-6.1.0.tgz", "integrity": "sha512-KJ/Dmo1lDDhmW2XDPMo+9oiy/CeqosPguPCrgcVzKyZrL6pM1gU2GmPY/xo6OQPTUaA/c0kwHuywB4E6nmT9ww==", + "license": "MIT", "peer": true, "engines": { "node": ">=10.6.0" } }, "node_modules/cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "license": "MIT", "peer": true, "dependencies": { "clone-response": "^1.0.2", @@ -21576,6 +23259,7 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "license": "MIT", "peer": true, "dependencies": { "pump": "^3.0.0" @@ -21591,6 +23275,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -21619,6 +23304,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/call-me-maybe": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", @@ -21798,12 +23496,14 @@ "version": "0.12.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "license": "Apache-2.0", "peer": true }, "node_modules/cborg": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.10.1.tgz", - "integrity": "sha512-et6Qm8MOUY2kCWa5GKk2MlBVoPjHv0hQBmlzI/Z7+5V3VJCeIkGehIB3vWknNsm2kOkAIs6wEKJFJo8luWQQ/w==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.10.2.tgz", + "integrity": "sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==", + "license": "Apache-2.0", "bin": { "cborg": "cli.js" } @@ -21818,6 +23518,22 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -21985,6 +23701,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, "node_modules/chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -22043,6 +23768,7 @@ "resolved": "https://registry.npmjs.org/cids/-/cids-0.7.5.tgz", "integrity": "sha512-zT7mPeghoWAu+ppn8+BS1tQ5qGmbMfB4AregnQjA/qHY3GC1m1ptI9GkWNlgeu38r7CuRdXB47uY2XgAYt6QVA==", "deprecated": "This module has been superseded by the multiformats module", + "license": "MIT", "peer": true, "dependencies": { "buffer": "^5.5.0", @@ -22061,6 +23787,7 @@ "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-1.0.4.tgz", "integrity": "sha512-NDd7FeS3QamVtbgfvu5h7fd1IlbaC4EQ0/pgU4zqE2vdHCmBGsUa0TiM8/TdSeG6BMPC92OOCf8F1ocE/Wkrrg==", "deprecated": "This module has been superseded by the multiformats module", + "license": "MIT", "peer": true, "dependencies": { "buffer": "^5.6.0", @@ -22094,6 +23821,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/class-is/-/class-is-1.1.0.tgz", "integrity": "sha512-rhjH9AG1fvabIDoGRVH587413LPjTZgmDF9fOFCbFJQV4yuocX1mHxxvXI4g3cGwbVY9wAYIoKlg1N79frJKQw==", + "license": "MIT", "peer": true }, "node_modules/class-utils": { @@ -22500,7 +24228,8 @@ "node_modules/client-only": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "license": "MIT" }, "node_modules/clipboard": { "version": "2.0.11", @@ -22557,6 +24286,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "license": "MIT", "peer": true, "dependencies": { "mimic-response": "^1.0.0" @@ -22565,6 +24295,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/clownface": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/clownface/-/clownface-2.0.3.tgz", + "integrity": "sha512-E76TBJ7CgU9+/5paSAvuNdMO+fzFThnvRVtidosktYppYkXM8V7tid8Ezzo8S1OmoWxKUam3yfkZlfCid4OiJQ==", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/environment": "0 - 1", + "@rdfjs/namespace": "^2.0.0" + } + }, "node_modules/clsx": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", @@ -22634,6 +24375,20 @@ "node": ">=0.10.0" } }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "license": "MIT", + "optional": true, + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, "node_modules/color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -22650,6 +24405,17 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "license": "MIT", + "optional": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, "node_modules/color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", @@ -23163,6 +24929,7 @@ "version": "2.5.2", "resolved": "https://registry.npmjs.org/content-hash/-/content-hash-2.5.2.tgz", "integrity": "sha512-FvIQKy0S1JaWV10sMsA7TRx8bpU+pqPkhbsfvOJAdjRXvYxEckAwQWGwtRjiaJfh+E0DvcWUGqcdjwMGFjsSdw==", + "license": "ISC", "peer": true, "dependencies": { "cids": "^0.7.1", @@ -23309,6 +25076,7 @@ "version": "2.8.5", "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", "peer": true, "dependencies": { "object-assign": "^4", @@ -23669,6 +25437,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, "dependencies": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" @@ -23866,10 +25635,18 @@ } } }, + "node_modules/crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", + "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.", + "license": "ISC" + }, "node_modules/crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, "dependencies": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", @@ -23888,9 +25665,10 @@ } }, "node_modules/crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==", + "license": "MIT" }, "node_modules/css-color-keywords": { "version": "1.0.0", @@ -24216,6 +25994,7 @@ "version": "1.14.1", "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "license": "MIT", "peer": true, "dependencies": { "assert-plus": "^1.0.0" @@ -24379,6 +26158,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "license": "MIT", "peer": true, "dependencies": { "mimic-response": "^3.1.0" @@ -24394,6 +26174,7 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -24408,6 +26189,15 @@ "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -24474,6 +26264,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -24593,6 +26384,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, "dependencies": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -24927,6 +26719,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, "dependencies": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -25118,6 +26911,26 @@ "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", "dev": true }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplex-to": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/duplex-to/-/duplex-to-2.0.0.tgz", + "integrity": "sha512-f2nMnk11mwDptEFBTv2mcWHpF4ENAbuQ63yTiSy/99rG4Exsxsf0GJhJYq/AHF2cdMYswSx23LPuoijBflpquQ==", + "license": "MIT" + }, "node_modules/duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -25170,6 +26983,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "license": "MIT", "peer": true, "dependencies": { "jsbn": "~0.1.0", @@ -25299,7 +27113,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -25312,7 +27125,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, "engines": { "node": ">=6" } @@ -25462,12 +27274,10 @@ "dev": true }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "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==", + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -25532,10 +27342,10 @@ "dev": true }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -25544,14 +27354,16 @@ } }, "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, + "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" }, "engines": { "node": ">= 0.4" @@ -25626,6 +27438,7 @@ "version": "4.2.8", "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "license": "MIT", "peer": true }, "node_modules/es6-shim": { @@ -26687,6 +28500,7 @@ "version": "2.0.8", "resolved": "https://registry.npmjs.org/eth-ens-namehash/-/eth-ens-namehash-2.0.8.tgz", "integrity": "sha512-VWEI1+KJfz4Km//dadyvBBoBeSQ0MHTXPvr8UIXiLW6IanxvAV+DmlZAijZwAyggqGUfwQBeHf7tc9wzc1piSw==", + "license": "ISC", "peer": true, "dependencies": { "idna-uts46-hx": "^2.3.1", @@ -26697,6 +28511,7 @@ "version": "0.5.7", "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.5.7.tgz", "integrity": "sha512-GII20kjaPX0zJ8wzkTbNDYMY7msuZcTWk8S5UOh6806Jq/wz1J8/bnr8uGU0DAUmYDjj2Mr4X1cW8v/GLYnR+g==", + "license": "MIT", "peer": true }, "node_modules/eth-json-rpc-filters": { @@ -26729,6 +28544,7 @@ "version": "0.1.29", "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.1.29.tgz", "integrity": "sha512-bfttrr3/7gG4E02HoWTDUcDDslN003OlOoBxk9virpAZQ1ja/jDgwkWB8QfJF7ojuEowrqy+lzp9VcJG7/k5bQ==", + "license": "MIT", "peer": true, "dependencies": { "bn.js": "^4.11.6", @@ -26743,6 +28559,7 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/ws/-/ws-3.3.3.tgz", "integrity": "sha512-nnWLa/NwZSt4KQJu51MYlCcSQ5g7INpOrOMt4XV8j4dqTXdmlUmSHQ8/oLC069ckre0fRsgfvsKwbTdtKLCDkA==", + "license": "MIT", "peer": true, "dependencies": { "async-limiter": "~1.0.0", @@ -26768,18 +28585,33 @@ } }, "node_modules/ethereum-bloom-filters": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", - "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz", + "integrity": "sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==", + "license": "MIT", "peer": true, "dependencies": { - "js-sha3": "^0.8.0" + "@noble/hashes": "^1.4.0" + } + }, + "node_modules/ethereum-bloom-filters/node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "license": "MIT", + "peer": true, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, "node_modules/ethereum-cryptography": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "license": "MIT", "peer": true, "dependencies": { "@types/pbkdf2": "^3.0.0", @@ -26803,6 +28635,7 @@ "version": "7.1.5", "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "license": "MPL-2.0", "peer": true, "dependencies": { "@types/bn.js": "^5.1.0", @@ -26816,9 +28649,10 @@ } }, "node_modules/ethereumjs-util/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "license": "MIT", "peer": true }, "node_modules/ethers": { @@ -26872,6 +28706,7 @@ "version": "0.1.6", "resolved": "https://registry.npmjs.org/ethjs-unit/-/ethjs-unit-0.1.6.tgz", "integrity": "sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==", + "license": "MIT", "peer": true, "dependencies": { "bn.js": "4.11.6", @@ -26886,13 +28721,13 @@ "version": "4.11.6", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "license": "MIT", "peer": true }, "node_modules/event-target-shim": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "peer": true, "engines": { "node": ">=6" } @@ -27321,6 +29156,7 @@ "engines": [ "node >=0.6.0" ], + "license": "MIT", "peer": true }, "node_modules/fast-deep-equal": { @@ -27867,6 +29703,7 @@ "version": "0.6.1", "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "license": "Apache-2.0", "peer": true, "engines": { "node": "*" @@ -28046,6 +29883,7 @@ "version": "1.7.1", "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-1.7.1.tgz", "integrity": "sha512-EFRDrsMm/kyqbTQocNvRXMLjc7Es2Vk+IQFx/YW7hkUH1eBl4J1fqiP34l74Yt0pFLCNpc06fkbVk00008mzjg==", + "license": "MIT", "peer": true }, "node_modules/formdata-polyfill": { @@ -28252,6 +30090,7 @@ "version": "1.2.7", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "license": "ISC", "peer": true, "dependencies": { "minipass": "^2.6.0" @@ -28409,15 +30248,21 @@ } }, "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.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -28440,6 +30285,19 @@ "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.2.tgz", "integrity": "sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==" }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", @@ -28490,6 +30348,7 @@ "version": "0.1.7", "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "license": "MIT", "peer": true, "dependencies": { "assert-plus": "^1.0.0" @@ -28789,11 +30648,12 @@ } }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { - "get-intrinsic": "^1.1.3" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -28803,6 +30663,7 @@ "version": "12.1.0", "resolved": "https://registry.npmjs.org/got/-/got-12.1.0.tgz", "integrity": "sha512-hBv2ty9QN2RdbJJMK3hesmSkFTjVIHyIDDbssCKnSmq62edGgImJWD10Eb1k77TiV1bxloxqcFAVK8+9pkhOig==", + "license": "MIT", "peer": true, "dependencies": { "@sindresorhus/is": "^4.6.0", @@ -28916,6 +30777,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "license": "ISC", "peer": true, "engines": { "node": ">=4" @@ -28926,6 +30788,7 @@ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", "deprecated": "this library is no longer supported", + "license": "MIT", "peer": true, "dependencies": { "ajv": "^6.12.3", @@ -29024,6 +30887,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, "engines": { "node": ">= 0.4" }, @@ -29032,9 +30896,10 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -29899,9 +31764,10 @@ } }, "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", + "license": "BSD-2-Clause", "peer": true }, "node_modules/http-call": { @@ -29953,8 +31819,18 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/http-https/-/http-https-1.0.0.tgz", "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==", + "license": "ISC", "peer": true }, + "node_modules/http-link-header": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.1.3.tgz", + "integrity": "sha512-3cZ0SRL8fb9MUlU3mKM61FcQvPfXx2dBrZW3Vbg5CXa8jFlK8OaEpePenLe1oEXQduhz8b0QjsqfS59QP4AJDQ==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -29982,6 +31858,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "license": "MIT", "peer": true, "dependencies": { "assert-plus": "^1.0.0", @@ -29994,9 +31871,10 @@ } }, "node_modules/http2-wrapper": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", - "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "license": "MIT", "peer": true, "dependencies": { "quick-lru": "^5.1.1", @@ -30090,6 +31968,7 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/idna-uts46-hx/-/idna-uts46-hx-2.3.1.tgz", "integrity": "sha512-PWoF9Keq6laYdIRwwCdhTPl60xRqAloYNMQLiyUnG42VjT53oW07BXIRM+NK7eQjzXjAk2gUvX9caRxlnF9TAA==", + "license": "MIT", "peer": true, "dependencies": { "punycode": "2.1.0" @@ -30102,6 +31981,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", "integrity": "sha512-Yxz2kRwT90aPiWEMHVYnEf4+rhwF1tBmmZ4KepCP+Wkium9JxtWnUm1nqGwpiAHr/tnTSeHqr3wb++jgSkXjhA==", + "license": "MIT", "peer": true, "engines": { "node": ">=6" @@ -30755,6 +32635,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "license": "MIT", "peer": true, "engines": { "node": ">=6.5.0", @@ -31253,6 +33134,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "license": "MIT", "peer": true }, "node_modules/istanbul-lib-coverage": { @@ -33919,6 +35801,15 @@ "@sideway/pinpoint": "^2.0.0" } }, + "node_modules/jose": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-5.10.0.tgz", + "integrity": "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/panva" + } + }, "node_modules/js-cookie": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", @@ -33962,6 +35853,7 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "license": "MIT", "peer": true }, "node_modules/jsc-android": { @@ -34308,6 +36200,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "license": "MIT", "peer": true }, "node_modules/json-parse-better-errors": { @@ -34346,6 +36239,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "license": "(AFL-2.1 OR BSD-3-Clause)", "peer": true }, "node_modules/json-schema-traverse": { @@ -34392,6 +36286,115 @@ "graceful-fs": "^4.1.6" } }, + "node_modules/jsonld": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-8.3.3.tgz", + "integrity": "sha512-9YcilrF+dLfg9NTEof/mJLMtbdX1RJ8dbWtJgE00cMOIohb1lIyJl710vFiTaiHTl6ZYODJuBd32xFvUhmv3kg==", + "license": "BSD-3-Clause", + "dependencies": { + "@digitalbazaar/http-client": "^3.4.1", + "canonicalize": "^1.0.1", + "lru-cache": "^6.0.0", + "rdf-canonize": "^3.4.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/jsonld-context-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonld-context-parser/-/jsonld-context-parser-3.0.0.tgz", + "integrity": "sha512-Kg6TVtBUdIm057ht/8WNhM9BROt+BeYaDGXbzrKaa3xA99csee+CsD8IMCTizRgzoO8PIzvzcxxCoRvpq1xNQw==", + "license": "MIT", + "dependencies": { + "@types/http-link-header": "^1.0.1", + "@types/node": "^18.0.0", + "http-link-header": "^1.0.2", + "relative-to-absolute-iri": "^1.0.5" + }, + "bin": { + "jsonld-context-parse": "bin/jsonld-context-parse.js" + } + }, + "node_modules/jsonld-streaming-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/jsonld-streaming-parser/-/jsonld-streaming-parser-5.0.0.tgz", + "integrity": "sha512-Q6Bfbmig8fFpIbJgJTi4LLzco9dz0YuBM/mDvUYXzP8L/+me6P3pRy4exrhCpv49Bwv2oQFFIHM7wIwCKma2XA==", + "license": "MIT", + "dependencies": { + "@bergos/jsonparse": "^1.4.0", + "@types/http-link-header": "^1.0.1", + "@types/readable-stream": "^4.0.0", + "buffer": "^6.0.3", + "canonicalize": "^1.0.1", + "http-link-header": "^1.0.2", + "jsonld-context-parser": "^3.0.0", + "rdf-data-factory": "^2.0.0", + "readable-stream": "^4.0.0" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/rubensworks/" + } + }, + "node_modules/jsonld-streaming-parser/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/jsonld-streaming-parser/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/jsonld/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jsonld/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "license": "ISC" + }, "node_modules/jsontokens": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/jsontokens/-/jsontokens-4.0.1.tgz", @@ -34406,6 +36409,7 @@ "version": "1.4.2", "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "license": "MIT", "peer": true, "dependencies": { "assert-plus": "1.0.0", @@ -34551,9 +36555,10 @@ "integrity": "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==" }, "node_modules/keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "license": "MIT", "peer": true, "dependencies": { "json-buffer": "3.0.1" @@ -34609,6 +36614,61 @@ ], "peer": true }, + "node_modules/ky": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/ky/-/ky-0.33.3.tgz", + "integrity": "sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky?sponsor=1" + } + }, + "node_modules/ky-universal": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/ky-universal/-/ky-universal-0.11.0.tgz", + "integrity": "sha512-65KyweaWvk+uKKkCrfAf+xqN2/epw1IJDtlyCPxYffFCMR8u1sp2U65NtWpnozYfZxQ6IUzIlvUcw+hQ82U2Xw==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "node-fetch": "^3.2.10" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky-universal?sponsor=1" + }, + "peerDependencies": { + "ky": ">=0.31.4", + "web-streams-polyfill": ">=3.2.1" + }, + "peerDependenciesMeta": { + "web-streams-polyfill": { + "optional": true + } + } + }, + "node_modules/ky-universal/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, "node_modules/lazy-universal-dotenv": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz", @@ -35572,6 +37632,12 @@ "node": ">=0.10.0" } }, + "node_modules/loupe": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", + "license": "MIT" + }, "node_modules/lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", @@ -35585,6 +37651,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "license": "MIT", "peer": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" @@ -35752,6 +37819,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, "node_modules/md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -37871,6 +39947,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, "dependencies": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -37921,6 +39998,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "license": "MIT", "peer": true, "engines": { "node": ">=4" @@ -37974,6 +40052,7 @@ "version": "2.9.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "license": "ISC", "peer": true, "dependencies": { "safe-buffer": "^5.1.2", @@ -38074,6 +40153,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "license": "MIT", "peer": true, "dependencies": { "minipass": "^2.9.0" @@ -38139,6 +40219,7 @@ "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", "integrity": "sha512-Hepn5kb1lJPtVW84RFT40YG1OddBNTOVUZR2bzQUHc+Z03en8/3uX0+060JDhcEzyO08HmipsN9DcnFMxhIL9w==", "deprecated": "This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that.", + "license": "ISC", "peer": true, "dependencies": { "mkdirp": "*" @@ -38173,6 +40254,7 @@ "version": "4.14.0", "resolved": "https://registry.npmjs.org/mock-fs/-/mock-fs-4.14.0.tgz", "integrity": "sha512-qYvlv/exQ4+svI3UOvPUpLDF0OMX5euvUH0Ny4N5QyRyhNdgAgUrVH3iUINSzEPLvx0kbo/Bp28GJKIqvE7URw==", + "license": "MIT", "peer": true }, "node_modules/moment": { @@ -38261,6 +40343,7 @@ "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.6.1.tgz", "integrity": "sha512-pFfAwyTjbbQgNc3G7D48JkJxWtoJoBMaR4xQUOuB8RnCgRqaYmWNFeJTTvrJ2w51bjLq2zTby6Rqj9TQ9elSUw==", "deprecated": "This module has been superseded by the multiformats module", + "license": "MIT", "peer": true, "dependencies": { "base-x": "^3.0.8", @@ -38272,6 +40355,7 @@ "resolved": "https://registry.npmjs.org/multicodec/-/multicodec-0.5.7.tgz", "integrity": "sha512-PscoRxm3f+88fAtELwUnZxGDkduE2HD9Q6GHUOywQLjOGT/HAdhjLDYNZ1e7VR0s0TP0EwZ16LNUTFpoBGivOA==", "deprecated": "This module has been superseded by the multiformats module", + "license": "MIT", "peer": true, "dependencies": { "varint": "^5.0.0" @@ -38290,6 +40374,7 @@ "version": "0.4.21", "resolved": "https://registry.npmjs.org/multihashes/-/multihashes-0.4.21.tgz", "integrity": "sha512-uVSvmeCWf36pU2nB4/1kzYZjsXD9vofZKpgudqkceYY5g2aZZXJ5r9lxuzoRLl1OAp28XljXsEJ/X/85ZsKmKw==", + "license": "MIT", "peer": true, "dependencies": { "buffer": "^5.5.0", @@ -38302,6 +40387,7 @@ "resolved": "https://registry.npmjs.org/multibase/-/multibase-0.7.0.tgz", "integrity": "sha512-TW8q03O0f6PNFTQDvh3xxH03c8CjGaaYrjkl9UQPG6rz53TQzzxJVCIWVjzcbN/Q5Y53Zd0IBQBMVktVgNx4Fg==", "deprecated": "This module has been superseded by the multiformats module", + "license": "MIT", "peer": true, "dependencies": { "base-x": "^3.0.8", @@ -38357,6 +40443,59 @@ "resolved": "https://registry.npmjs.org/myetherwallet-blockies/-/myetherwallet-blockies-0.1.1.tgz", "integrity": "sha512-2UPR88/+L7rTVLqTM1Fu3Er9+m6XLMGaanP5wyq5+dGyv9TFbB5ohXRJA0jeYf+30gtlOlhlvzAWtwB6BiHWxQ==" }, + "node_modules/n3": { + "version": "1.25.2", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.25.2.tgz", + "integrity": "sha512-ZBPnAgOw4sze/hnyoydNA5Ts9wbwiG+BXssTkdBKD6IkQZcg1IfQdo5AMU9JhsIu/RGtRD1QD0gphEhk/6ZnWA==", + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "readable-stream": "^4.0.0" + }, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/n3/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/n3/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/nan": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", @@ -38368,6 +40507,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/nano-json-stream-parser/-/nano-json-stream-parser-0.1.2.tgz", "integrity": "sha512-9MqxMH/BSJC7dnLsEMPyfN5Dvoo49IsPFYMcHw3Bcfc2kN0lpHRBSzlMSVx4HGyJ7s9B31CyBTVehWJoQ8Ctew==", + "license": "MIT", "peer": true }, "node_modules/nanoclone": { @@ -38477,40 +40617,42 @@ "dev": true }, "node_modules/next": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.3.tgz", - "integrity": "sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/next/-/next-15.2.3.tgz", + "integrity": "sha512-x6eDkZxk2rPpu46E1ZVUWIBhYCLszmUY6fvHBFcbzJ9dD+qRX6vcHusaqqDlnY+VngKzKbAiG2iRCkPbmi8f7w==", + "license": "MIT", "dependencies": { - "@next/env": "14.2.3", - "@swc/helpers": "0.5.5", + "@next/env": "15.2.3", + "@swc/counter": "0.1.3", + "@swc/helpers": "0.5.15", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", - "graceful-fs": "^4.2.11", "postcss": "8.4.31", - "styled-jsx": "5.1.1" + "styled-jsx": "5.1.6" }, "bin": { "next": "dist/bin/next" }, "engines": { - "node": ">=18.17.0" + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.3", - "@next/swc-darwin-x64": "14.2.3", - "@next/swc-linux-arm64-gnu": "14.2.3", - "@next/swc-linux-arm64-musl": "14.2.3", - "@next/swc-linux-x64-gnu": "14.2.3", - "@next/swc-linux-x64-musl": "14.2.3", - "@next/swc-win32-arm64-msvc": "14.2.3", - "@next/swc-win32-ia32-msvc": "14.2.3", - "@next/swc-win32-x64-msvc": "14.2.3" + "@next/swc-darwin-arm64": "15.2.3", + "@next/swc-darwin-x64": "15.2.3", + "@next/swc-linux-arm64-gnu": "15.2.3", + "@next/swc-linux-arm64-musl": "15.2.3", + "@next/swc-linux-x64-gnu": "15.2.3", + "@next/swc-linux-x64-musl": "15.2.3", + "@next/swc-win32-arm64-msvc": "15.2.3", + "@next/swc-win32-x64-msvc": "15.2.3", + "sharp": "^0.33.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", - "react": "^18.2.0", - "react-dom": "^18.2.0", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "peerDependenciesMeta": { @@ -38520,6 +40662,9 @@ "@playwright/test": { "optional": true }, + "babel-plugin-react-compiler": { + "optional": true + }, "sass": { "optional": true } @@ -38530,6 +40675,15 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, + "node_modules/next-transpile-modules": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/next-transpile-modules/-/next-transpile-modules-10.0.1.tgz", + "integrity": "sha512-4VX/LCMofxIYAVV58UmD+kr8jQflpLWvas/BQ4Co0qWLWzVh06FoZkECkrX5eEZT6oJFqie6+kfbTA3EZCVtdQ==", + "license": "MIT", + "dependencies": { + "enhanced-resolve": "^5.10.0" + } + }, "node_modules/next/node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", @@ -38847,6 +41001,76 @@ "url": "https://github.com/sponsors/antelle" } }, + "node_modules/nodeify-fetch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nodeify-fetch/-/nodeify-fetch-3.1.0.tgz", + "integrity": "sha512-ZV81vM//sEgTgXwVZlOONzcOCdTGQ53mV65FVSNXgPQHa8oCwRLtLbnGxL/1S/Yw90bcXUDKMz00jEnaeazo+A==", + "license": "MIT", + "dependencies": { + "lodash": "^4.17.21", + "node-fetch": "^3.2.10", + "readable-stream": "^4.2.0", + "stream-chunks": "^1.0.0" + } + }, + "node_modules/nodeify-fetch/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/nodeify-fetch/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/nodeify-fetch/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -41352,6 +43576,7 @@ "version": "1.7.0", "resolved": "https://registry.npmjs.org/number-to-bn/-/number-to-bn-1.7.0.tgz", "integrity": "sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==", + "license": "MIT", "peer": true, "dependencies": { "bn.js": "4.11.6", @@ -41366,6 +43591,7 @@ "version": "4.11.6", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.6.tgz", "integrity": "sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==", + "license": "MIT", "peer": true }, "node_modules/nwsapi": { @@ -41378,6 +43604,7 @@ "version": "0.9.0", "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "license": "Apache-2.0", "peer": true, "engines": { "node": "*" @@ -41672,6 +43899,7 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/oboe/-/oboe-2.1.5.tgz", "integrity": "sha512-zRFWiF+FoicxEs3jNI/WYUrVEgA7DeET/InK0XQuudGHRg8iIob3cNPrJTKaz4004uaA9Pbe+Dwa8iluhjLZWA==", + "license": "BSD", "peer": true, "dependencies": { "http-https": "^1.0.0" @@ -41954,6 +44182,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "license": "MIT", "peer": true, "engines": { "node": ">=12.20" @@ -42174,6 +44403,7 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, "dependencies": { "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", @@ -42201,9 +44431,10 @@ } }, "node_modules/parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.6.tgz", + "integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==", + "license": "MIT", "peer": true }, "node_modules/parse-json": { @@ -42470,6 +44701,15 @@ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" }, + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, "node_modules/pbkdf2": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", @@ -42489,6 +44729,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "license": "MIT", "peer": true }, "node_modules/picocolors": { @@ -43247,6 +45488,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, "dependencies": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -43620,6 +45862,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "license": "MIT", "peer": true, "engines": { "node": ">=10" @@ -43655,6 +45898,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, "dependencies": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" @@ -43734,6 +45978,192 @@ "node": ">=0.10.0" } }, + "node_modules/rdf-canonize": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-3.4.0.tgz", + "integrity": "sha512-fUeWjrkOO0t1rg7B2fdyDTvngj+9RlUyL92vOdiB7c0FPguWVsniIMjEtHH+meLBO9rzkUlUzBVXgWrjI8P9LA==", + "license": "BSD-3-Clause", + "dependencies": { + "setimmediate": "^1.0.5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/rdf-data-factory": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-2.0.2.tgz", + "integrity": "sha512-WzPoYHwQYWvIP9k+7IBLY1b4nIDitzAK4mA37WumAF/Cjvu/KOtYJH9IPZnUTWNSd5K2+pq4vrcE9WZC4sRHhg==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "^2.0.0" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/rubensworks/" + } + }, + "node_modules/rdf-dataset-ext": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/rdf-dataset-ext/-/rdf-dataset-ext-1.1.0.tgz", + "integrity": "sha512-CH85RfRKN9aSlbju8T7aM8hgCSWMBsh2eh/tGxUUtWMN+waxi6iFDt8/r4PAEmKaEA82guimZJ4ISbmJ2rvWQg==", + "deprecated": "rdf-dataset-ext is deprecated. Switching to rdf-ext is recommended.", + "license": "MIT", + "dependencies": { + "rdf-canonize": "^3.0.0", + "readable-stream": "3 - 4" + } + }, + "node_modules/rdf-literal": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/rdf-literal/-/rdf-literal-1.3.2.tgz", + "integrity": "sha512-79Stlu3sXy0kq9/decHFLf3xNPuY6sfhFPhd/diWErgaFr0Ekyg38Vh9bnVcqDYu48CFRi0t+hrFii49n92Hbw==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "rdf-data-factory": "^1.1.0" + } + }, + "node_modules/rdf-literal/node_modules/@rdfjs/types": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.2.tgz", + "integrity": "sha512-wqpOJK1QCbmsGNtyzYnojPU8gRDPid2JO0Q0kMtb4j65xhCK880cnKAfEOwC+dX85VJcCByQx5zOwyyfCjDJsg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/rdf-literal/node_modules/rdf-data-factory": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-1.1.3.tgz", + "integrity": "sha512-ny6CI7m2bq4lfQQmDYvcb2l1F9KtGwz9chipX4oWu2aAtVoXjb7k3d8J1EsgAsEbMXnBipB/iuRen5H2fwRWWQ==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "^1.0.0" + } + }, + "node_modules/rdf-validate-datatype": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/rdf-validate-datatype/-/rdf-validate-datatype-0.2.2.tgz", + "integrity": "sha512-mH9qL8i0WBbZ6HJCA26BB6V+WV2MraKvitez3SV0QegBWVQ4wYO49CgfFBzoAYg6tlnhFXl9MkrOAQ07X2N1FA==", + "license": "MIT", + "dependencies": { + "@rdfjs/term-map": "^2.0.0", + "@tpluscode/rdf-ns-builders": "3 - 5" + } + }, + "node_modules/rdf-validate-shacl": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/rdf-validate-shacl/-/rdf-validate-shacl-0.5.10.tgz", + "integrity": "sha512-I+TRVGeKn5eG/kTzVGRGGNThCSkgX/v7EUSOUEsIcHubyyShQYzRbQqyU45zKzNjLWdqp9abFHw1ULUPzWyo1A==", + "license": "MIT", + "dependencies": { + "@rdfjs/data-model": "^2", + "@rdfjs/dataset": "^2", + "@rdfjs/environment": "^1", + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/term-set": "^2.0.1", + "@rdfjs/types": "^1.1.0", + "@vocabulary/sh": "^1.1.5", + "clownface": "^2.0.0", + "debug": "^4.3.2", + "rdf-literal": "^1.3.2", + "rdf-validate-datatype": "^0.2.0" + } + }, + "node_modules/rdf-validate-shacl/node_modules/@rdfjs/types": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.2.tgz", + "integrity": "sha512-wqpOJK1QCbmsGNtyzYnojPU8gRDPid2JO0Q0kMtb4j65xhCK880cnKAfEOwC+dX85VJcCByQx5zOwyyfCjDJsg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/rdfxml-streaming-parser": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/rdfxml-streaming-parser/-/rdfxml-streaming-parser-2.4.0.tgz", + "integrity": "sha512-f+tdI1wxOiPzMbFWRtOwinwPsqac0WIN80668yFKcVdFCSTGOWTM70ucQGUSdDZZo7pce/UvZgV0C3LDj0P7tg==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "@rubensworks/saxes": "^6.0.1", + "@types/readable-stream": "^2.3.13", + "buffer": "^6.0.3", + "rdf-data-factory": "^1.1.0", + "readable-stream": "^4.4.2", + "relative-to-absolute-iri": "^1.0.0", + "validate-iri": "^1.0.0" + } + }, + "node_modules/rdfxml-streaming-parser/node_modules/@rdfjs/types": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.2.tgz", + "integrity": "sha512-wqpOJK1QCbmsGNtyzYnojPU8gRDPid2JO0Q0kMtb4j65xhCK880cnKAfEOwC+dX85VJcCByQx5zOwyyfCjDJsg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/rdfxml-streaming-parser/node_modules/@types/readable-stream": { + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", + "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "node_modules/rdfxml-streaming-parser/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/rdfxml-streaming-parser/node_modules/rdf-data-factory": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-1.1.3.tgz", + "integrity": "sha512-ny6CI7m2bq4lfQQmDYvcb2l1F9KtGwz9chipX4oWu2aAtVoXjb7k3d8J1EsgAsEbMXnBipB/iuRen5H2fwRWWQ==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "^1.0.0" + } + }, + "node_modules/rdfxml-streaming-parser/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -44677,6 +47107,12 @@ "node": ">= 0.10" } }, + "node_modules/relative-to-absolute-iri": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/relative-to-absolute-iri/-/relative-to-absolute-iri-1.0.7.tgz", + "integrity": "sha512-Xjyl4HmIzg2jzK/Un2gELqbcE8Fxy85A/aLSHE6PE/3+OGsFwmKVA1vRyGaz6vLWSqLDMHA+5rjD/xbibSQN1Q==", + "license": "MIT" + }, "node_modules/remark": { "version": "15.0.1", "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", @@ -45501,6 +47937,7 @@ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "license": "Apache-2.0", "peer": true, "dependencies": { "aws-sign2": "~0.7.0", @@ -45532,6 +47969,7 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "license": "MIT", "peer": true, "dependencies": { "asynckit": "^0.4.0", @@ -45543,9 +47981,10 @@ } }, "node_modules/request/node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "license": "MIT", "peer": true, "engines": { "node": ">=6" @@ -45555,6 +47994,7 @@ "version": "6.5.3", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "license": "BSD-3-Clause", "peer": true, "engines": { "node": ">=0.6" @@ -45564,6 +48004,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "license": "BSD-3-Clause", "peer": true, "dependencies": { "psl": "^1.1.28", @@ -45635,6 +48076,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "license": "MIT", "peer": true }, "node_modules/resolve-cwd": { @@ -45677,6 +48119,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "license": "MIT", "peer": true, "dependencies": { "lowercase-keys": "^2.0.0" @@ -45689,6 +48132,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -45781,6 +48225,7 @@ "version": "2.2.7", "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "license": "MPL-2.0", "peer": true, "dependencies": { "bn.js": "^5.2.0" @@ -45790,9 +48235,10 @@ } }, "node_modules/rlp/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "license": "MIT", "peer": true }, "node_modules/roarr": { @@ -46297,20 +48743,51 @@ "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, "node_modules/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz", + "integrity": "sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==", "hasInstallScript": true, + "license": "MIT", "peer": true, "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", + "elliptic": "^6.5.7", + "node-addon-api": "^5.0.0", "node-gyp-build": "^4.2.0" }, "engines": { - "node": ">=10.0.0" + "node": ">=18.0.0" + } + }, + "node_modules/secp256k1/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "license": "MIT", + "peer": true + }, + "node_modules/secp256k1/node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "license": "MIT", + "peer": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, + "node_modules/secp256k1/node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "license": "MIT", + "peer": true + }, "node_modules/section-matter": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", @@ -46770,6 +49247,7 @@ "version": "0.1.12", "resolved": "https://registry.npmjs.org/servify/-/servify-0.1.12.tgz", "integrity": "sha512-/xE6GvsKKqyo1BAY+KxOWXcLpPsUUyji7Qg3bVD7hh1eRze5bR1uYiuDA/k3Gof1s9BTzQZEJK8sNcNGFIzeWw==", + "license": "MIT", "peer": true, "dependencies": { "body-parser": "^1.16.0", @@ -46870,6 +49348,69 @@ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" }, + "node_modules/sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "hasInstallScript": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5" + } + }, + "node_modules/sharp/node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "license": "Apache-2.0", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sharp/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "optional": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -46964,12 +49505,14 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "peer": true }, "node_modules/simple-get": { "version": "2.8.2", "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-2.8.2.tgz", "integrity": "sha512-Ijd/rV5o+mSBBs4F/x9oDPtTx9Zb6X9brmnXvMW4J7IR15ngi9q5xxqWBKU744jTZiaXtxaPL7uHG6vtN8kUkw==", + "license": "MIT", "peer": true, "dependencies": { "decompress-response": "^3.3.0", @@ -46981,6 +49524,7 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "license": "MIT", "peer": true, "dependencies": { "mimic-response": "^1.0.0" @@ -46989,6 +49533,23 @@ "node": ">=4" } }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "license": "MIT", + "optional": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT", + "optional": true + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -47367,9 +49928,10 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "node_modules/sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "license": "MIT", "peer": true, "dependencies": { "asn1": "~0.2.3", @@ -47391,6 +49953,13 @@ "node": ">=0.10.0" } }, + "node_modules/sshpk/node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "license": "Unlicense", + "peer": true + }, "node_modules/ssri": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", @@ -47647,6 +50216,40 @@ "safe-buffer": "~5.1.0" } }, + "node_modules/stream-chunks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-chunks/-/stream-chunks-1.0.0.tgz", + "integrity": "sha512-/G+kinLx3pKXChtuko82taA4gZo56zFG2b2BbhmugmS0TUPBL40c5b2vjonS+gAHYK/cSKM9m0WTvAJYgDUeNw==", + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3", + "string_decoder": "^1.3.0" + } + }, + "node_modules/stream-chunks/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "node_modules/stream-each": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", @@ -47925,6 +50528,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "license": "MIT", "peer": true, "dependencies": { "is-hex-prefixed": "1.0.0" @@ -48057,9 +50661,10 @@ } }, "node_modules/styled-jsx": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", - "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "license": "MIT", "dependencies": { "client-only": "0.0.1" }, @@ -48067,7 +50672,7 @@ "node": ">= 12.0.0" }, "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0" + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" }, "peerDependenciesMeta": { "@babel/core": { @@ -48196,6 +50801,7 @@ "version": "0.1.42", "resolved": "https://registry.npmjs.org/swarm-js/-/swarm-js-0.1.42.tgz", "integrity": "sha512-BV7c/dVlA3R6ya1lMlSSNPLYrntt0LUq4YMgy3iwpCIc6rZnS5W2wUoctarZ5pXlpKtxDDf9hNziEkcfrxdhqQ==", + "license": "MIT", "peer": true, "dependencies": { "bluebird": "^3.5.0", @@ -48215,6 +50821,7 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "license": "MIT", "peer": true, "dependencies": { "defer-to-connect": "^2.0.0" @@ -48227,6 +50834,7 @@ "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "license": "MIT", "peer": true, "engines": { "node": ">=10.6.0" @@ -48236,6 +50844,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz", "integrity": "sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==", + "license": "MIT", "peer": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -48244,9 +50853,10 @@ } }, "node_modules/swarm-js/node_modules/got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "license": "MIT", "peer": true, "dependencies": { "@sindresorhus/is": "^4.0.0", @@ -48272,6 +50882,7 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "license": "MIT", "peer": true, "dependencies": { "quick-lru": "^5.1.1", @@ -48285,6 +50896,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "license": "MIT", "peer": true, "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -48294,6 +50906,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -48303,6 +50916,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "license": "MIT", "peer": true, "engines": { "node": ">=8" @@ -48312,6 +50926,7 @@ "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "license": "MIT", "peer": true, "engines": { "node": ">= 4.0.0" @@ -48453,6 +51068,7 @@ "version": "4.4.19", "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.19.tgz", "integrity": "sha512-a20gEsvHnWe0ygBY8JbxoM4w3SJdhc7ZAuxkLqh+nvNQN2IOt0B5lLgM490X5Hl8FF0dl0tOf2ewFYAlIFgzVA==", + "license": "ISC", "peer": true, "dependencies": { "chownr": "^1.1.4", @@ -48471,6 +51087,7 @@ "version": "0.5.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "license": "MIT", "peer": true, "dependencies": { "minimist": "^1.2.6" @@ -48497,6 +51114,7 @@ "url": "https://feross.org/support" } ], + "license": "MIT", "peer": true }, "node_modules/telejson": { @@ -48739,6 +51357,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", + "license": "MIT", "peer": true, "engines": { "node": ">=0.10.0" @@ -49212,10 +51831,10 @@ } }, "node_modules/tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "peer": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "license": "Unlicense" }, "node_modules/tweetnacl-util": { "version": "0.15.1", @@ -49411,6 +52030,12 @@ "node": ">=0.8.0" } }, + "node_modules/uint32": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/uint32/-/uint32-0.2.1.tgz", + "integrity": "sha512-d3i8kc/4s1CFW5g3FctmF1Bu2GVXGBMTn82JY2BW0ZtTtI8pRx1YWGPCFBwRF4uYVSJ7ua4y+qYEPqS+x+3w7Q==", + "license": "Do, what You want" + }, "node_modules/uint8-varint": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/uint8-varint/-/uint8-varint-2.0.4.tgz", @@ -49470,6 +52095,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz", "integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==", + "license": "MIT", "peer": true }, "node_modules/unbox-primitive": { @@ -49492,6 +52118,18 @@ "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==" }, + "node_modules/undici": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", + "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^2.0.0" + }, + "engines": { + "node": ">=14.0" + } + }, "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -50065,6 +52703,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/url-set-query/-/url-set-query-1.0.0.tgz", "integrity": "sha512-3AChu4NiXquPfeckE5R5cGdiHCMWJx1dwCWOmWIL4KHAziJNOFIYJlpGFeKDvwLPHovZRCxK3cYlwzqI9Vp+Gg==", + "license": "MIT", "peer": true }, "node_modules/urql": { @@ -50136,12 +52775,14 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/utf8/-/utf8-3.0.0.tgz", "integrity": "sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==", + "license": "MIT", "peer": true }, "node_modules/util": { "version": "0.12.5", "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", + "license": "MIT", "peer": true, "dependencies": { "inherits": "^2.0.3", @@ -50216,6 +52857,12 @@ "node": ">=10.12.0" } }, + "node_modules/validate-iri": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/validate-iri/-/validate-iri-1.0.1.tgz", + "integrity": "sha512-gLXi7351CoyVVQw8XE5sgpYawRKatxE7kj/xmCxXOZS1kMdtcqC0ILIqLuVEVnAUQSL/evOGG3eQ+8VgbdnstA==", + "license": "MIT" + }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -50278,6 +52925,7 @@ "engines": [ "node >=0.6.0" ], + "license": "MIT", "peer": true, "dependencies": { "assert-plus": "^1.0.0", @@ -50812,29 +53460,31 @@ } }, "node_modules/web3": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.8.1.tgz", - "integrity": "sha512-tAqFsQhGv340C9OgRJIuoScN7f7wa1tUvsnnDUMt9YE6J4gcm7TV2Uwv+KERnzvV+xgdeuULYpsioRRNKrUvoQ==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.10.4.tgz", + "integrity": "sha512-kgJvQZjkmjOEKimx/tJQsqWfRDPTTcBfYPa9XletxuHLpHcXdx67w8EFn5AW3eVxCutE9dTVHgGa9VYe8vgsEA==", "hasInstallScript": true, + "license": "LGPL-3.0", "peer": true, "dependencies": { - "web3-bzz": "1.8.1", - "web3-core": "1.8.1", - "web3-eth": "1.8.1", - "web3-eth-personal": "1.8.1", - "web3-net": "1.8.1", - "web3-shh": "1.8.1", - "web3-utils": "1.8.1" + "web3-bzz": "1.10.4", + "web3-core": "1.10.4", + "web3-eth": "1.10.4", + "web3-eth-personal": "1.10.4", + "web3-net": "1.10.4", + "web3-shh": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-bzz": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.8.1.tgz", - "integrity": "sha512-dJJHS84nvpoxv6ijTMkdUSlRr5beCXNtx4UZcrFLHBva8dT63QEtKdLyDt2AyMJJdVzTCk78uir/6XtVWrdS6w==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.4.tgz", + "integrity": "sha512-ZZ/X4sJ0Uh2teU9lAGNS8EjveEppoHNQiKlOXAjedsrdWuaMErBPdLQjXfcrYvN6WM6Su9PMsAxf3FXXZ+HwQw==", "hasInstallScript": true, + "license": "LGPL-3.0", "peer": true, "dependencies": { "@types/node": "^12.12.6", @@ -50849,59 +53499,64 @@ "version": "12.20.55", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "license": "MIT", "peer": true }, "node_modules/web3-core": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.8.1.tgz", - "integrity": "sha512-LbRZlJH2N6nS3n3Eo9Y++25IvzMY7WvYnp4NM/Ajhh97dAdglYs6rToQ2DbL2RLvTYmTew4O/y9WmOk4nq9COw==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.10.4.tgz", + "integrity": "sha512-B6elffYm81MYZDTrat7aEhnhdtVE3lDBUZft16Z8awYMZYJDbnykEbJVS+l3mnA7AQTnSDr/1MjWofGDLBJPww==", + "license": "LGPL-3.0", "peer": true, "dependencies": { - "@types/bn.js": "^5.1.0", + "@types/bn.js": "^5.1.1", "@types/node": "^12.12.6", "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.8.1", - "web3-core-method": "1.8.1", - "web3-core-requestmanager": "1.8.1", - "web3-utils": "1.8.1" + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-core-requestmanager": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-core-helpers": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.1.tgz", - "integrity": "sha512-ClzNO6T1S1gifC+BThw0+GTfcsjLEY8T1qUp6Ly2+w4PntAdNtKahxWKApWJ0l9idqot/fFIDXwO3Euu7I0Xqw==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", + "license": "LGPL-3.0", "peer": true, "dependencies": { - "web3-eth-iban": "1.8.1", - "web3-utils": "1.8.1" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-core-method": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.8.1.tgz", - "integrity": "sha512-oYGRodktfs86NrnFwaWTbv2S38JnpPslFwSSARwFv4W9cjbGUW3LDeA5MKD/dRY+ssZ5OaekeMsUCLoGhX68yA==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.4.tgz", + "integrity": "sha512-uZTb7flr+Xl6LaDsyTeE2L1TylokCJwTDrIVfIfnrGmnwLc6bmTWCCrm71sSrQ0hqs6vp/MKbQYIYqUN0J8WyA==", + "license": "LGPL-3.0", "peer": true, "dependencies": { "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.8.1", - "web3-core-promievent": "1.8.1", - "web3-core-subscriptions": "1.8.1", - "web3-utils": "1.8.1" + "web3-core-helpers": "1.10.4", + "web3-core-promievent": "1.10.4", + "web3-core-subscriptions": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-core-promievent": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.8.1.tgz", - "integrity": "sha512-9mxqHlgB0MrZI4oUIRFkuoJMNj3E7btjrMv3sMer/Z9rYR1PfoSc1aAokw4rxKIcAh+ylVtd/acaB2HKB7aRPg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.4.tgz", + "integrity": "sha512-2de5WnJQ72YcIhYwV/jHLc4/cWJnznuoGTJGD29ncFQHAfwW/MItHFSVKPPA5v8AhJe+r6y4Y12EKvZKjQVBvQ==", + "license": "LGPL-3.0", "peer": true, "dependencies": { "eventemitter3": "4.0.4" @@ -50914,32 +53569,35 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", + "license": "MIT", "peer": true }, "node_modules/web3-core-requestmanager": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.8.1.tgz", - "integrity": "sha512-x+VC2YPPwZ1khvqA6TA69LvfFCOZXsoUVOxmTx/vIN22PrY9KzKhxcE7pBSiGhmab1jtmRYXUbcQSVpAXqL8cw==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.4.tgz", + "integrity": "sha512-vqP6pKH8RrhT/2MoaU+DY/OsYK9h7HmEBNCdoMj+4ZwujQtw/Mq2JifjwsJ7gits7Q+HWJwx8q6WmQoVZAWugg==", + "license": "LGPL-3.0", "peer": true, "dependencies": { - "util": "^0.12.0", - "web3-core-helpers": "1.8.1", - "web3-providers-http": "1.8.1", - "web3-providers-ipc": "1.8.1", - "web3-providers-ws": "1.8.1" + "util": "^0.12.5", + "web3-core-helpers": "1.10.4", + "web3-providers-http": "1.10.4", + "web3-providers-ipc": "1.10.4", + "web3-providers-ws": "1.10.4" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-core-subscriptions": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.8.1.tgz", - "integrity": "sha512-bmCMq5OeA3E2vZUh8Js1HcJbhwtsE+yeMqGC4oIZB3XsL5SLqyKLB/pU+qUYqQ9o4GdcrFTDPhPg1bgvf7p1Pw==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.4.tgz", + "integrity": "sha512-o0lSQo/N/f7/L76C0HV63+S54loXiE9fUPfHFcTtpJRQNDBVsSDdWRdePbWwR206XlsBqD5VHApck1//jEafTw==", + "license": "LGPL-3.0", "peer": true, "dependencies": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.8.1" + "web3-core-helpers": "1.10.4" }, "engines": { "node": ">=8.0.0" @@ -50949,67 +53607,71 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", + "license": "MIT", "peer": true }, "node_modules/web3-core/node_modules/@types/node": { "version": "12.20.55", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "license": "MIT", "peer": true }, "node_modules/web3-eth": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.8.1.tgz", - "integrity": "sha512-LgyzbhFqiFRd8M8sBXoFN4ztzOnkeckl3H/9lH5ek7AdoRMhBg7tYpYRP3E5qkhd/q+yiZmcUgy1AF6NHrC1wg==", - "peer": true, - "dependencies": { - "web3-core": "1.8.1", - "web3-core-helpers": "1.8.1", - "web3-core-method": "1.8.1", - "web3-core-subscriptions": "1.8.1", - "web3-eth-abi": "1.8.1", - "web3-eth-accounts": "1.8.1", - "web3-eth-contract": "1.8.1", - "web3-eth-ens": "1.8.1", - "web3-eth-iban": "1.8.1", - "web3-eth-personal": "1.8.1", - "web3-net": "1.8.1", - "web3-utils": "1.8.1" + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.4.tgz", + "integrity": "sha512-Sql2kYKmgt+T/cgvg7b9ce24uLS7xbFrxE4kuuor1zSCGrjhTJ5rRNG8gTJUkAJGKJc7KgnWmgW+cOfMBPUDSA==", + "license": "LGPL-3.0", + "peer": true, + "dependencies": { + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-core-subscriptions": "1.10.4", + "web3-eth-abi": "1.10.4", + "web3-eth-accounts": "1.10.4", + "web3-eth-contract": "1.10.4", + "web3-eth-ens": "1.10.4", + "web3-eth-iban": "1.10.4", + "web3-eth-personal": "1.10.4", + "web3-net": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-abi": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.8.1.tgz", - "integrity": "sha512-0mZvCRTIG0UhDhJwNQJgJxu4b4DyIpuMA0GTfqxqeuqzX4Q/ZvmoNurw0ExTfXaGPP82UUmmdkRi6FdZOx+C6w==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.4.tgz", + "integrity": "sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==", + "license": "LGPL-3.0", "peer": true, "dependencies": { "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.8.1" + "web3-utils": "1.10.4" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-accounts": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.8.1.tgz", - "integrity": "sha512-mgzxSYgN54/NsOFBO1Fq1KkXp1S5KlBvI/DlgvajU72rupoFMq6Cu6Yp9GUaZ/w2ij9PzEJuFJk174XwtfMCmg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.4.tgz", + "integrity": "sha512-ysy5sVTg9snYS7tJjxVoQAH6DTOTkRGR8emEVCWNGLGiB9txj+qDvSeT0izjurS/g7D5xlMAgrEHLK1Vi6I3yg==", + "license": "LGPL-3.0", "peer": true, "dependencies": { - "@ethereumjs/common": "2.5.0", - "@ethereumjs/tx": "3.3.2", - "crypto-browserify": "3.12.0", + "@ethereumjs/common": "2.6.5", + "@ethereumjs/tx": "3.5.2", + "@ethereumjs/util": "^8.1.0", "eth-lib": "0.2.8", - "ethereumjs-util": "^7.0.10", "scrypt-js": "^3.0.1", "uuid": "^9.0.0", - "web3-core": "1.8.1", - "web3-core-helpers": "1.8.1", - "web3-core-method": "1.8.1", - "web3-utils": "1.8.1" + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { "node": ">=8.0.0" @@ -51019,6 +53681,7 @@ "version": "0.2.8", "resolved": "https://registry.npmjs.org/eth-lib/-/eth-lib-0.2.8.tgz", "integrity": "sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw==", + "license": "MIT", "peer": true, "dependencies": { "bn.js": "^4.11.6", @@ -51027,83 +53690,93 @@ } }, "node_modules/web3-eth-accounts/node_modules/uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", "peer": true, "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/web3-eth-contract": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.8.1.tgz", - "integrity": "sha512-1wphnl+/xwCE2io44JKnN+ti3oa47BKRiVzvWd42icwRbcpFfRxH9QH+aQX3u8VZIISNH7dAkTWpGIIJgGFTmg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.4.tgz", + "integrity": "sha512-Q8PfolOJ4eV9TvnTj1TGdZ4RarpSLmHnUnzVxZ/6/NiTfe4maJz99R0ISgwZkntLhLRtw0C7LRJuklzGYCNN3A==", + "license": "LGPL-3.0", "peer": true, "dependencies": { - "@types/bn.js": "^5.1.0", - "web3-core": "1.8.1", - "web3-core-helpers": "1.8.1", - "web3-core-method": "1.8.1", - "web3-core-promievent": "1.8.1", - "web3-core-subscriptions": "1.8.1", - "web3-eth-abi": "1.8.1", - "web3-utils": "1.8.1" + "@types/bn.js": "^5.1.1", + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-core-promievent": "1.10.4", + "web3-core-subscriptions": "1.10.4", + "web3-eth-abi": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-ens": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.8.1.tgz", - "integrity": "sha512-FT8xTI9uN8RxeBQa/W8pLa2aoFh4+EE34w7W2271LICKzla1dtLyb6XSdn48vsUcPmhWsTVk9mO9RTU0l4LGQQ==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.4.tgz", + "integrity": "sha512-LLrvxuFeVooRVZ9e5T6OWKVflHPFgrVjJ/jtisRWcmI7KN/b64+D/wJzXqgmp6CNsMQcE7rpmf4CQmJCrTdsgg==", + "license": "LGPL-3.0", "peer": true, "dependencies": { "content-hash": "^2.5.2", "eth-ens-namehash": "2.0.8", - "web3-core": "1.8.1", - "web3-core-helpers": "1.8.1", - "web3-core-promievent": "1.8.1", - "web3-eth-abi": "1.8.1", - "web3-eth-contract": "1.8.1", - "web3-utils": "1.8.1" + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-promievent": "1.10.4", + "web3-eth-abi": "1.10.4", + "web3-eth-contract": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-iban": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.1.tgz", - "integrity": "sha512-DomoQBfvIdtM08RyMGkMVBOH0vpOIxSSQ+jukWk/EkMLGMWJtXw/K2c2uHAeq3L/VPWNB7zXV2DUEGV/lNE2Dg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", + "license": "LGPL-3.0", "peer": true, "dependencies": { "bn.js": "^5.2.1", - "web3-utils": "1.8.1" + "web3-utils": "1.10.4" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-eth-iban/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "license": "MIT", "peer": true }, "node_modules/web3-eth-personal": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.8.1.tgz", - "integrity": "sha512-myIYMvj7SDIoV9vE5BkVdon3pya1WinaXItugoii2VoTcQNPOtBxmYVH+XS5ErzCJlnxzphpQrkywyY64bbbCA==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.4.tgz", + "integrity": "sha512-BRa/hs6jU1hKHz+AC/YkM71RP3f0Yci1dPk4paOic53R4ZZG4MgwKRkJhgt3/GPuPliwS46f/i5A7fEGBT4F9w==", + "license": "LGPL-3.0", "peer": true, "dependencies": { "@types/node": "^12.12.6", - "web3-core": "1.8.1", - "web3-core-helpers": "1.8.1", - "web3-core-method": "1.8.1", - "web3-net": "1.8.1", - "web3-utils": "1.8.1" + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-net": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { "node": ">=8.0.0" @@ -51113,58 +53786,119 @@ "version": "12.20.55", "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "license": "MIT", "peer": true }, "node_modules/web3-net": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.8.1.tgz", - "integrity": "sha512-LyEJAwogdFo0UAXZqoSJGFjopdt+kLw0P00FSZn2yszbgcoI7EwC+nXiOsEe12xz4LqpYLOtbR7+gxgiTVjjHQ==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.10.4.tgz", + "integrity": "sha512-mKINnhOOnZ4koA+yV2OT5s5ztVjIx7IY9a03w6s+yao/BUn+Luuty0/keNemZxTr1E8Ehvtn28vbOtW7Ids+Ow==", + "license": "LGPL-3.0", "peer": true, "dependencies": { - "web3-core": "1.8.1", - "web3-core-method": "1.8.1", - "web3-utils": "1.8.1" + "web3-core": "1.10.4", + "web3-core-method": "1.10.4", + "web3-utils": "1.10.4" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-providers-http": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.8.1.tgz", - "integrity": "sha512-1Zyts4O9W/UNEPkp+jyL19Jc3D15S4yp8xuLTjVhcUEAlHo24NDWEKxtZGUuHk4HrKL2gp8OlsDbJ7MM+ESDgg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.4.tgz", + "integrity": "sha512-m2P5Idc8hdiO0l60O6DSCPw0kw64Zgi0pMjbEFRmxKIck2Py57RQMu4bxvkxJwkF06SlGaEQF8rFZBmuX7aagQ==", + "license": "LGPL-3.0", "peer": true, "dependencies": { - "abortcontroller-polyfill": "^1.7.3", - "cross-fetch": "^3.1.4", + "abortcontroller-polyfill": "^1.7.5", + "cross-fetch": "^4.0.0", "es6-promise": "^4.2.8", - "web3-core-helpers": "1.8.1" + "web3-core-helpers": "1.10.4" }, "engines": { "node": ">=8.0.0" } }, + "node_modules/web3-providers-http/node_modules/cross-fetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", + "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", + "license": "MIT", + "peer": true, + "dependencies": { + "node-fetch": "^2.7.0" + } + }, + "node_modules/web3-providers-http/node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "peer": true, + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/web3-providers-http/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT", + "peer": true + }, + "node_modules/web3-providers-http/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause", + "peer": true + }, + "node_modules/web3-providers-http/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "peer": true, + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/web3-providers-ipc": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.8.1.tgz", - "integrity": "sha512-nw/W5nclvi+P2z2dYkLWReKLnocStflWqFl+qjtv0xn3MrUTyXMzSF0+61i77+16xFsTgzo4wS/NWIOVkR0EFA==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.4.tgz", + "integrity": "sha512-YRF/bpQk9z3WwjT+A6FI/GmWRCASgd+gC0si7f9zbBWLXjwzYAKG73bQBaFRAHex1hl4CVcM5WUMaQXf3Opeuw==", + "license": "LGPL-3.0", "peer": true, "dependencies": { "oboe": "2.1.5", - "web3-core-helpers": "1.8.1" + "web3-core-helpers": "1.10.4" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-providers-ws": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.8.1.tgz", - "integrity": "sha512-TNefIDAMpdx57+YdWpYZ/xdofS0P+FfKaDYXhn24ie/tH9G+AB+UBSOKnjN0KSadcRSCMBwGPRiEmNHPavZdsA==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.4.tgz", + "integrity": "sha512-j3FBMifyuFFmUIPVQR4pj+t5ILhAexAui0opgcpu9R5LxQrLRUZxHSnU+YO25UycSOa/NAX8A+qkqZNpcFAlxA==", + "license": "LGPL-3.0", "peer": true, "dependencies": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.8.1", + "web3-core-helpers": "1.10.4", "websocket": "^1.0.32" }, "engines": { @@ -51175,33 +53909,37 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.4.tgz", "integrity": "sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ==", + "license": "MIT", "peer": true }, "node_modules/web3-shh": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.8.1.tgz", - "integrity": "sha512-sqHgarnfcY2Qt3PYS4R6YveHrDy7hmL09yeLLHHCI+RKirmjLVqV0rc5LJWUtlbYI+kDoa5gbgde489M9ZAC0g==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.4.tgz", + "integrity": "sha512-cOH6iFFM71lCNwSQrC3niqDXagMqrdfFW85hC9PFUrAr3PUrIem8TNstTc3xna2bwZeWG6OBy99xSIhBvyIACw==", "hasInstallScript": true, + "license": "LGPL-3.0", "peer": true, "dependencies": { - "web3-core": "1.8.1", - "web3-core-method": "1.8.1", - "web3-core-subscriptions": "1.8.1", - "web3-net": "1.8.1" + "web3-core": "1.10.4", + "web3-core-method": "1.10.4", + "web3-core-subscriptions": "1.10.4", + "web3-net": "1.10.4" }, "engines": { "node": ">=8.0.0" } }, "node_modules/web3-utils": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.1.tgz", - "integrity": "sha512-LgnM9p6V7rHHUGfpMZod+NST8cRfGzJ1BTXAyNo7A9cJX9LczBfSRxJp+U/GInYe9mby40t3v22AJdlELibnsQ==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz", + "integrity": "sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==", + "license": "LGPL-3.0", "peer": true, "dependencies": { + "@ethereumjs/util": "^8.1.0", "bn.js": "^5.2.1", "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", + "ethereum-cryptography": "^2.1.2", "ethjs-unit": "0.1.6", "number-to-bn": "1.7.0", "randombytes": "^2.1.0", @@ -51211,12 +53949,81 @@ "node": ">=8.0.0" } }, + "node_modules/web3-utils/node_modules/@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "1.4.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/web3-utils/node_modules/@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, "node_modules/web3-utils/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "license": "MIT", "peer": true }, + "node_modules/web3-utils/node_modules/ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "license": "MIT", + "peer": true, + "dependencies": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } + }, "node_modules/webidl-conversions": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", @@ -51673,6 +54480,7 @@ "version": "2.6.0", "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.6.0.tgz", "integrity": "sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA==", + "license": "MIT", "peer": true, "dependencies": { "global": "~4.4.0", @@ -51685,6 +54493,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/xhr-request/-/xhr-request-1.1.0.tgz", "integrity": "sha512-Y7qzEaR3FDtL3fP30k9wO/e+FBnBByZeybKOhASsGP30NIkRAAkKD/sCnLvgEfAIEC1rcmK7YG8f4oEnIrrWzA==", + "license": "MIT", "peer": true, "dependencies": { "buffer-to-arraybuffer": "^0.0.5", @@ -51700,6 +54509,7 @@ "version": "0.1.3", "resolved": "https://registry.npmjs.org/xhr-request-promise/-/xhr-request-promise-0.1.3.tgz", "integrity": "sha512-YUBytBsuwgitWtdRzXDDkWAXzhdGB8bYm0sSzMPZT7Z2MBjMSTHFsyCT1yCRATY+XC69DUrQraRAEgcoCRaIPg==", + "license": "MIT", "peer": true, "dependencies": { "xhr-request": "^1.1.0" @@ -51709,6 +54519,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "license": "MIT", "peer": true, "dependencies": { "decode-uri-component": "^0.2.0", @@ -51723,6 +54534,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "license": "MIT", "peer": true, "engines": { "node": ">=0.10.0" @@ -51740,8 +54552,7 @@ "node_modules/xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, "node_modules/xtend": { "version": "4.0.2", @@ -51941,6 +54752,11 @@ "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", "dev": true }, + "@adraffy/ens-normalize": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/@adraffy/ens-normalize/-/ens-normalize-1.10.0.tgz", + "integrity": "sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==" + }, "@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -53259,6 +56075,25 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, + "@bergos/jsonparse": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@bergos/jsonparse/-/jsonparse-1.4.2.tgz", + "integrity": "sha512-qUt0QNJjvg4s1zk+AuLM6s/zcsQ8MvGn7+1f0vPuxvpCYa08YtTryuDInngbEyW5fNGGYe2znKt61RMGd5HnXg==", + "requires": { + "buffer": "^6.0.3" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } + } + }, "@ceramicnetwork/common": { "version": "2.24.0", "resolved": "https://registry.npmjs.org/@ceramicnetwork/common/-/common-2.24.0.tgz", @@ -53879,12 +56714,31 @@ } } }, + "@digitalbazaar/http-client": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@digitalbazaar/http-client/-/http-client-3.4.1.tgz", + "integrity": "sha512-Ahk1N+s7urkgj7WvvUND5f8GiWEPfUw0D41hdElaqLgu8wZScI8gdI0q+qWw5N1d35x7GCRH2uk9mi+Uzo9M3g==", + "requires": { + "ky": "^0.33.3", + "ky-universal": "^0.11.0", + "undici": "^5.21.2" + } + }, "@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true }, + "@emnapi/runtime": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", + "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", + "optional": true, + "requires": { + "tslib": "^2.4.0" + } + }, "@emotion/babel-plugin": { "version": "11.10.2", "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.10.2.tgz", @@ -54113,13 +56967,13 @@ "dev": true }, "@ethereumjs/common": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.5.0.tgz", - "integrity": "sha512-DEHjW6e38o+JmB/NO3GZBpW4lpaiBpkFgXF6jLcJ6gETBYpEyaA5nTimsWBUJR3Vmtm/didUEbNjajskugZORg==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", + "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", "peer": true, "requires": { "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.1" + "ethereumjs-util": "^7.1.5" } }, "@ethereumjs/rlp": { @@ -54128,13 +56982,13 @@ "integrity": "sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==" }, "@ethereumjs/tx": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.3.2.tgz", - "integrity": "sha512-6AaJhwg4ucmwTvw/1qLaZUX5miWrwZ4nLOUsKyb/HtzS3BMw/CasKhdi1ims9mBKeK9sOJCH4qGKOBGyJCeeog==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", + "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", "peer": true, "requires": { - "@ethereumjs/common": "^2.5.0", - "ethereumjs-util": "^7.1.2" + "@ethereumjs/common": "^2.6.4", + "ethereumjs-util": "^7.1.5" } }, "@ethereumjs/util": { @@ -54574,6 +57428,11 @@ "@ethersproject/strings": "^5.7.0" } }, + "@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==" + }, "@floating-ui/core": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.0.2.tgz", @@ -54652,6 +57511,147 @@ "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", "dev": true }, + "@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "optional": true, + "requires": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "optional": true, + "requires": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "optional": true + }, + "@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "optional": true + }, + "@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "optional": true + }, + "@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "optional": true + }, + "@img/sharp-libvips-linux-s390x": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.0.4.tgz", + "integrity": "sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==", + "optional": true + }, + "@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "optional": true + }, + "@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "optional": true + }, + "@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "optional": true + }, + "@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "optional": true, + "requires": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "optional": true, + "requires": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "@img/sharp-linux-s390x": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.33.5.tgz", + "integrity": "sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==", + "optional": true, + "requires": { + "@img/sharp-libvips-linux-s390x": "1.0.4" + } + }, + "@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "optional": true, + "requires": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "optional": true, + "requires": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "optional": true, + "requires": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "@img/sharp-wasm32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.33.5.tgz", + "integrity": "sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==", + "optional": true, + "requires": { + "@emnapi/runtime": "^1.2.0" + } + }, + "@img/sharp-win32-ia32": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.33.5.tgz", + "integrity": "sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==", + "optional": true + }, + "@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "optional": true + }, "@ipld/dag-cbor": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/@ipld/dag-cbor/-/dag-cbor-7.0.3.tgz", @@ -55860,11 +58860,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/pako/-/pako-2.1.0.tgz", "integrity": "sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==" - }, - "tweetnacl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", - "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" } } }, @@ -56420,62 +59415,56 @@ } }, "@next/env": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz", - "integrity": "sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA==" + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.2.3.tgz", + "integrity": "sha512-a26KnbW9DFEUsSxAxKBORR/uD9THoYoKbkpFywMN/AFvboTt94b8+g/07T8J6ACsdLag8/PDU60ov4rPxRAixw==" }, "@next/swc-darwin-arm64": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz", - "integrity": "sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.2.3.tgz", + "integrity": "sha512-uaBhA8aLbXLqwjnsHSkxs353WrRgQgiFjduDpc7YXEU0B54IKx3vU+cxQlYwPCyC8uYEEX7THhtQQsfHnvv8dw==", "optional": true }, "@next/swc-darwin-x64": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz", - "integrity": "sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.2.3.tgz", + "integrity": "sha512-pVwKvJ4Zk7h+4hwhqOUuMx7Ib02u3gDX3HXPKIShBi9JlYllI0nU6TWLbPT94dt7FSi6mSBhfc2JrHViwqbOdw==", "optional": true }, "@next/swc-linux-arm64-gnu": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz", - "integrity": "sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.2.3.tgz", + "integrity": "sha512-50ibWdn2RuFFkOEUmo9NCcQbbV9ViQOrUfG48zHBCONciHjaUKtHcYFiCwBVuzD08fzvzkWuuZkd4AqbvKO7UQ==", "optional": true }, "@next/swc-linux-arm64-musl": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz", - "integrity": "sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.2.3.tgz", + "integrity": "sha512-2gAPA7P652D3HzR4cLyAuVYwYqjG0mt/3pHSWTCyKZq/N/dJcUAEoNQMyUmwTZWCJRKofB+JPuDVP2aD8w2J6Q==", "optional": true }, "@next/swc-linux-x64-gnu": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz", - "integrity": "sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.2.3.tgz", + "integrity": "sha512-ODSKvrdMgAJOVU4qElflYy1KSZRM3M45JVbeZu42TINCMG3anp7YCBn80RkISV6bhzKwcUqLBAmOiWkaGtBA9w==", "optional": true }, "@next/swc-linux-x64-musl": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz", - "integrity": "sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.2.3.tgz", + "integrity": "sha512-ZR9kLwCWrlYxwEoytqPi1jhPd1TlsSJWAc+H/CJHmHkf2nD92MQpSRIURR1iNgA/kuFSdxB8xIPt4p/T78kwsg==", "optional": true }, "@next/swc-win32-arm64-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz", - "integrity": "sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==", - "optional": true - }, - "@next/swc-win32-ia32-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz", - "integrity": "sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.2.3.tgz", + "integrity": "sha512-+G2FrDcfm2YDbhDiObDU/qPriWeiz/9cRR0yMWJeTLGGX6/x8oryO3tt7HhodA1vZ8r2ddJPCjtLcpaVl7TE2Q==", "optional": true }, "@next/swc-win32-x64-msvc": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz", - "integrity": "sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.2.3.tgz", + "integrity": "sha512-gHYS9tc+G2W0ZC8rBL+H6RdtXIyk40uLiaos0yj5US85FNhbFEndMA2nW3z47nzOWiSvXTZ5kBClc3rD0zJg0w==", "optional": true }, "@next/third-parties": { @@ -56565,22 +59554,132 @@ "rimraf": "^3.0.2" } }, + "@oasisprotocol/deoxysii": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@oasisprotocol/deoxysii/-/deoxysii-0.0.5.tgz", + "integrity": "sha512-a6wYPjk8ALDIiQW/971AKOTSTY1qSdld+Y05F44gVZvlb3FOyHfgbIxXm7CZnUG1A+jK49g5SCWYP+V3/Tc75Q==", + "requires": { + "bsaes": "0.0.2", + "uint32": "^0.2.1" + } + }, + "@oasisprotocol/sapphire-paratime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@oasisprotocol/sapphire-paratime/-/sapphire-paratime-1.3.2.tgz", + "integrity": "sha512-98EQ2BrT0942B0VY50PKcJ6xmUAcz71y8OBMizP6oBJIh0+ogw/z3r5z4veJitMXM4zQbh5wOFaS9eOcKWX5FA==", + "requires": { + "@noble/hashes": "1.3.2", + "@oasisprotocol/deoxysii": "0.0.5", + "cborg": "1.10.2", + "ethers": "6.10.0", + "tweetnacl": "1.0.3", + "type-fest": "2.19.0" + }, + "dependencies": { + "@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "requires": { + "@noble/hashes": "1.3.2" + } + }, + "@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==" + }, + "@types/node": { + "version": "18.15.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.15.13.tgz", + "integrity": "sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==" + }, + "aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==" + }, + "ethers": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.10.0.tgz", + "integrity": "sha512-nMNwYHzs6V1FR3Y4cdfxSQmNgZsRj1RiTU25JwvnJLmyzw9z3SKxNc2XKDuiXXo/v9ds5Mp9m6HBabgYQQ26tA==", + "requires": { + "@adraffy/ens-normalize": "1.10.0", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "18.15.13", + "aes-js": "4.0.0-beta.5", + "tslib": "2.4.0", + "ws": "8.5.0" + } + }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==" + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "requires": {} + } + } + }, "@oceanprotocol/art": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/@oceanprotocol/art/-/art-3.2.0.tgz", "integrity": "sha512-aUQtg4m5hJlQ0u8C29O9TXJWcAenO3G9vP+vf6LNFkpTDOCMycN/F0SzHS89VNrvGUha8oTDEg7FAkfZBPv2WA==" }, "@oceanprotocol/contracts": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-2.0.3.tgz", - "integrity": "sha512-D2YtlsgmhBuSmF/Ue8zMWPtXNiB4zgW09NjUQzvDFrloUo0a7yC8r8L84LrVniw+0Nmly/PhLcdm8i018yc34g==" + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-2.3.0.tgz", + "integrity": "sha512-vRNj8Giibe22LRWTKk47ZrQs1HkrhLO2vOpSmwjLktqx6UB5JXpH4Tf1kQNpEIKMpoHF69/oHlCMOxjmc4r8ow==" + }, + "@oceanprotocol/ddo-js": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@oceanprotocol/ddo-js/-/ddo-js-0.0.1.tgz", + "integrity": "sha512-PoS7dG82+oqQ/StP05ObR2n4HGXYqf1KH3bR3lsrhi76JK5Ov866h0QTUN1oy3TVSvWqdtVrSjZRkacZyz2RWA==", + "requires": { + "@rdfjs/dataset": "^2.0.2", + "@rdfjs/formats-common": "^3.1.0", + "@rdfjs/types": "^1.1.2", + "@types/rdfjs__data-model": "^2.0.8", + "@types/rdfjs__dataset": "^2.0.7", + "@types/rdfjs__formats-common": "^3.1.5", + "@types/rdfjs__parser-jsonld": "^2.1.7", + "@types/rdfjs__to-ntriples": "^3.0.0", + "@zazuko/env-node": "^2.1.4", + "axios": "^1.7.9", + "chai": "^5.1.2", + "crypto": "^1.0.1", + "ethers": "^5.7.2", + "jose": "^5.9.6", + "lodash": "^4.17.21", + "rdf-validate-shacl": "^0.5.6" + }, + "dependencies": { + "@rdfjs/types": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.2.tgz", + "integrity": "sha512-wqpOJK1QCbmsGNtyzYnojPU8gRDPid2JO0Q0kMtb4j65xhCK880cnKAfEOwC+dX85VJcCByQx5zOwyyfCjDJsg==", + "requires": { + "@types/node": "*" + } + } + } }, "@oceanprotocol/lib": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-3.2.0.tgz", - "integrity": "sha512-Mfc9L35dZNAqusCgbQtyJZspSNv9OydWNOKkQU+w5PB40TfXmAyb/IpbYsMzQ/j7oJBSeO2Ewh9JNayyVtUgcQ==", - "requires": { - "@oceanprotocol/contracts": "^2.0.3", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-4.0.1.tgz", + "integrity": "sha512-CgwoXSILBfPUAAwp6fCsdSa8LnYhauHtVrRgHN7ldGDXybadgC6tGf1QNsuq6M3UM3B0sF+dkQ0vbnjztVft0A==", + "requires": { + "@oasisprotocol/sapphire-paratime": "^1.3.2", + "@oceanprotocol/contracts": "^2.2.0", + "@oceanprotocol/ddo-js": "^0.0.1-next.7", + "@rdfjs/dataset": "^2.0.2", + "@rdfjs/formats-common": "^3.1.0", + "@zazuko/env-node": "^2.1.4", "cross-fetch": "^4.0.0", "crypto-js": "^4.1.1", "decimal.js": "^10.4.1", @@ -56588,11 +59687,11 @@ }, "dependencies": { "cross-fetch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", - "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", + "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", "requires": { - "node-fetch": "^2.6.12" + "node-fetch": "^2.7.0" } }, "node-fetch": { @@ -57314,6 +60413,429 @@ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" }, + "@rdfjs/data-model": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@rdfjs/data-model/-/data-model-2.1.0.tgz", + "integrity": "sha512-pnjwSqDCXxxJQPm3TyDaqoWynYYQBl1pZC7rIPhdck7RbcEVF8hIBg5vXXosUbNcW3qwyAEBtYGojoWRnxBPew==" + }, + "@rdfjs/dataset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@rdfjs/dataset/-/dataset-2.0.2.tgz", + "integrity": "sha512-6YJx+5n5Uxzq9dd9I0GGcIo6eopZOPfcsAfxSGX5d+YBzDgVa1cbtEBFnaPyPKiQsOm4+Cr3nwypjpg02YKPlA==" + }, + "@rdfjs/environment": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rdfjs/environment/-/environment-1.0.0.tgz", + "integrity": "sha512-+S5YjSvfoQR5r7YQCRCCVHvIEyrWia7FJv2gqM3s5EDfotoAQmFeBagApa9c/eQFi5EiNhmBECE5nB8LIxTaHg==" + }, + "@rdfjs/fetch-lite": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@rdfjs/fetch-lite/-/fetch-lite-3.3.0.tgz", + "integrity": "sha512-K3hZC4+Ch0UmYA1w0Xv/8cCVPD5ulKwRa6A/iTn3BFbZpVAb5KoBfOfnOhe6VJEa50raUvTHR1gp1YdvUnYt9g==", + "requires": { + "is-stream": "^4.0.1", + "nodeify-fetch": "^3.1.0", + "readable-stream": "^4.5.2" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==" + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } + } + }, + "@rdfjs/formats": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/formats/-/formats-4.0.1.tgz", + "integrity": "sha512-Rg53vP+x1bnGAqJNKgEzJEUPDhj+tCpzb6wdmfLoVFq4XoZ589+cg2ScFDUMMyAVsgKXvSWjDhQ9f9ab254ZxA==", + "requires": { + "@rdfjs/parser-jsonld": "^2.1.0", + "@rdfjs/parser-n3": "^2.0.1", + "@rdfjs/serializer-jsonld": "^2.0.0", + "@rdfjs/serializer-jsonld-ext": "^4.0.0", + "@rdfjs/serializer-ntriples": "^2.0.0", + "@rdfjs/serializer-turtle": "^1.1.1", + "@rdfjs/sink-map": "^2.0.0", + "rdfxml-streaming-parser": "^3.0.1" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "rdfxml-streaming-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rdfxml-streaming-parser/-/rdfxml-streaming-parser-3.0.1.tgz", + "integrity": "sha512-lJtJ85xEJHc5BXohOPtxjYMEbGK3uiRxROwJLVNGanjuKLT9BWJluoNr3RzS9vQNmjkQwhhYmrbIftw1WUOj7Q==", + "requires": { + "@rubensworks/saxes": "^6.0.1", + "@types/readable-stream": "^4.0.18", + "buffer": "^6.0.3", + "rdf-data-factory": "^2.0.0", + "readable-stream": "^4.4.2", + "relative-to-absolute-iri": "^1.0.0", + "validate-iri": "^1.0.0" + } + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } + } + }, + "@rdfjs/formats-common": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rdfjs/formats-common/-/formats-common-3.1.0.tgz", + "integrity": "sha512-wgz5za/Uls+pttLdLl/aH0m0LQNgjqpWwk9exNs2Smmb2CosynRo4S0+CxeNOVZh4zeUm7oAlr1CK/tyg4Ff6g==", + "requires": { + "@rdfjs/parser-jsonld": "^2.0.0", + "@rdfjs/parser-n3": "^2.0.0", + "@rdfjs/serializer-jsonld": "^2.0.0", + "@rdfjs/serializer-ntriples": "^2.0.0", + "@rdfjs/sink-map": "^2.0.0", + "rdfxml-streaming-parser": "^2.2.0" + } + }, + "@rdfjs/namespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/namespace/-/namespace-2.0.1.tgz", + "integrity": "sha512-U85NWVGnL3gWvOZ4eXwUcv3/bom7PAcutSBQqmVWvOaslPy+kDzAJCH1WYBLpdQd4yMmJ+bpJcDl9rcHtXeixg==", + "requires": { + "@rdfjs/data-model": "^2.0.1" + } + }, + "@rdfjs/parser-jsonld": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@rdfjs/parser-jsonld/-/parser-jsonld-2.1.3.tgz", + "integrity": "sha512-VYnPEwVdqFAPTo9F8XIN4UpGPdNzhBaCFv5b5OT74pA7H8so4aTno3Yd6M5I9bhTrUoCQjpjgr+ugYlvWxdBIA==", + "requires": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "jsonld-streaming-parser": "^5.0.0", + "readable-stream": "^4.5.2" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } + } + }, + "@rdfjs/parser-n3": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@rdfjs/parser-n3/-/parser-n3-2.1.0.tgz", + "integrity": "sha512-/DiosB+0vPzgAs1WXcCB8MbA5hqq0fIh9VhMg7fBmoJ/I8Xl6Op/AOxVu9x1XZCHSNwO/VsJT/HYKEctZVRKSQ==", + "requires": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } + } + }, + "@rdfjs/prefix-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@rdfjs/prefix-map/-/prefix-map-0.1.2.tgz", + "integrity": "sha512-qapFYVPYyYepg0sFy7T512667iZsN9a3RNcyNBTBV+O8wrU3v/URQZOipCTNrEm1BXzZ7KCK1Yi8HrE1y+uRuQ==", + "requires": { + "readable-stream": "^4.3.0" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } + } + }, + "@rdfjs/serializer-jsonld": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/serializer-jsonld/-/serializer-jsonld-2.0.1.tgz", + "integrity": "sha512-O8WzdY7THsse/nMsrMLd2e51ADHO2SIUrkiZ9Va/8W3lXeeeiwDRPMppWy/i9yL4q6EM8iMW1riV7E0mK3fsBQ==", + "requires": { + "@rdfjs/sink": "^2.0.1", + "readable-stream": "^4.5.2" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } + } + }, + "@rdfjs/serializer-jsonld-ext": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/serializer-jsonld-ext/-/serializer-jsonld-ext-4.0.1.tgz", + "integrity": "sha512-eGNAdhsV8wkmCadyIN+PBfsN+BIiqplAd5VMc++wf5McsVi/vPNrWcBINdrNnlegml8nLUy0rlKztCQ/4pxW8w==", + "requires": { + "@rdfjs/sink": "^2.0.1", + "jsonld": "^8.3.3", + "readable-stream": "^4.7.0", + "stream-chunks": "^1.0.0" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } + } + }, + "@rdfjs/serializer-ntriples": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/serializer-ntriples/-/serializer-ntriples-2.0.1.tgz", + "integrity": "sha512-G1ZI0qaN/MUHxeCwr59JscO2LdyIb6MNQdXOv7NFBZuodyHsxxhJRFmMVn+3SEXeNJbVeEEbWBrLglCUgJ8XjQ==", + "requires": { + "@rdfjs/sink": "^2.0.1", + "@rdfjs/to-ntriples": "^3.0.1", + "duplex-to": "^2.0.0", + "readable-stream": "^4.5.2" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } + } + }, + "@rdfjs/serializer-turtle": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rdfjs/serializer-turtle/-/serializer-turtle-1.1.5.tgz", + "integrity": "sha512-uvIFUOuMuk8JrJnng/tWKIQ+8XI6YLEms75YdvZ49LtIyyfbDqKz76EybgnD/zZYfMhVVkguKtheBC9h08g1PQ==", + "requires": { + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/prefix-map": "^0.1.1", + "@rdfjs/sink": "^2.0.0", + "@rdfjs/term-map": "^2.0.0", + "@rdfjs/to-ntriples": "^3.0.1", + "@rdfjs/tree": "^0.2.1", + "readable-stream": "^4.3.0", + "stream-chunks": "^1.0.0" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } + } + }, + "@rdfjs/sink": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/sink/-/sink-2.0.1.tgz", + "integrity": "sha512-smzIFGF6EH1sLAJR9F3p2wMNrN44JjPeYAoITTJLqtuNC319K7IXaJ+qNLBGTtapZ/jvpx2Tks0TjcH9KrAvEA==" + }, + "@rdfjs/sink-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/sink-map/-/sink-map-2.0.1.tgz", + "integrity": "sha512-BwCTTsMN/tfQl6QzD2oHn9A08e4af+hlzAz/d5XXrlOkYMEDUAqFuh2Odj9EbayhAEeN4wA743Mj2yC0/s69rg==" + }, + "@rdfjs/term-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@rdfjs/term-map/-/term-map-2.0.2.tgz", + "integrity": "sha512-EJ2FmmdEUsSR/tU1nrizRLWzH24YzhuvesrbUWxC3Fs0ilYNdtTbg0RaFJDUnJF3HkbNBQe8Zrt/uvU/hcKnHg==", + "requires": { + "@rdfjs/to-ntriples": "^3.0.1" + } + }, + "@rdfjs/term-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@rdfjs/term-set/-/term-set-2.0.3.tgz", + "integrity": "sha512-DyXrKWEx+mtAFUZVU7bc3Va6/KZ8PsIp0RVdyWT9jfDgI/HCvNisZaBtAcm+SYTC45o+7WLkbudkk1bfaKVB0A==", + "requires": { + "@rdfjs/to-ntriples": "^3.0.1" + } + }, + "@rdfjs/to-ntriples": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/to-ntriples/-/to-ntriples-3.0.1.tgz", + "integrity": "sha512-gjoPAvh4j7AbGMjcDn/8R4cW+d/FPtbfbMM0uQXkyfBFtNUW2iVgrqsgJ65roLc54Y9A2TTFaeeTGSvY9a0HCQ==" + }, + "@rdfjs/traverser": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@rdfjs/traverser/-/traverser-0.1.4.tgz", + "integrity": "sha512-53QYlxiQIxH8k4jutjet1EjdZfyKCDSsfqnj2YejAJ1X8mLDMSOsneMM5savBwBR0ROfAhKVtZVb+pego+JLiw==", + "requires": { + "@rdfjs/to-ntriples": "^3.0.1" + } + }, + "@rdfjs/tree": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@rdfjs/tree/-/tree-0.2.1.tgz", + "integrity": "sha512-J70CQ7R8Ivfs1FFUxtFN7ADb5wTMgbhn0O558NXSXQHItmSavT6cXmQlIokbmboU+grhu56iR/8Bl9do8LCq+w==", + "requires": { + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/term-map": "^2.0.0", + "@rdfjs/term-set": "^2.0.1" + } + }, + "@rdfjs/types": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-2.0.1.tgz", + "integrity": "sha512-uyAzpugX7KekAXAHq26m3JlUIZJOC0uSBhpnefGV5i15bevDyyejoB7I+9MKeUrzXD8OOUI3+4FeV1wwQr5ihA==", + "requires": { + "@types/node": "*" + } + }, "@react-native-community/cli": { "version": "10.2.2", "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-10.2.2.tgz", @@ -58554,6 +62076,14 @@ } } }, + "@rubensworks/saxes": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@rubensworks/saxes/-/saxes-6.0.1.tgz", + "integrity": "sha512-UW4OTIsOtJ5KSXo2Tchi4lhZqu+tlHrOAs4nNti7CrtB53kAZl3/hyrTi6HkMihxdbDM6m2Zc3swc/ZewEe1xw==", + "requires": { + "xmlchars": "^2.2.0" + } + }, "@safe-global/safe-apps-provider": { "version": "0.15.2", "resolved": "https://registry.npmjs.org/@safe-global/safe-apps-provider/-/safe-apps-provider-0.15.2.tgz", @@ -58628,6 +62158,11 @@ "@scure/base": "~1.1.0" } }, + "@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==" + }, "@sideway/address": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", @@ -63450,12 +66985,18 @@ "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==" }, "@swc/helpers": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.5.tgz", - "integrity": "sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==", + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", "requires": { - "@swc/counter": "^0.1.3", - "tslib": "^2.4.0" + "tslib": "^2.8.0" + }, + "dependencies": { + "tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + } } }, "@szmarczak/http-timer": { @@ -63637,6 +67178,18 @@ "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true }, + "@tpluscode/rdf-ns-builders": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@tpluscode/rdf-ns-builders/-/rdf-ns-builders-5.0.0.tgz", + "integrity": "sha512-rtMFbArdief+s0z2A3TOb/gNe5O5xn9LDiEpilCf6lGYCUIfyqoOvZY80fS/eILwcF2Mj6cUQN1WBQ+1neJmaw==", + "requires": { + "@rdfjs/data-model": "^2.1.0", + "@rdfjs/namespace": "^2.0.1", + "@rdfjs/types": "^2", + "@types/rdfjs__namespace": "^2.0.10", + "@zazuko/prefixes": "^2.3.0" + } + }, "@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", @@ -63726,6 +67279,16 @@ "clipboard": "*" } }, + "@types/clownface": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/clownface/-/clownface-2.0.10.tgz", + "integrity": "sha512-Vz48oQux0YArQ66wfRp54NlxvEmpyTqbFIH435AsgN7C+p4MXao/rjXUisULL6436bxjFk4VluZr7J2HQkBHmQ==", + "peer": true, + "requires": { + "@rdfjs/types": ">=1", + "@types/rdfjs__environment": "*" + } + }, "@types/debug": { "version": "4.1.7", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", @@ -63803,11 +67366,19 @@ "dev": true }, "@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", "peer": true }, + "@types/http-link-header": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/http-link-header/-/http-link-header-1.0.7.tgz", + "integrity": "sha512-snm5oLckop0K3cTDAiBnZDy6ncx9DJ3mCRDvs42C884MbVYPP74Tiq2hFsSDRTyjK6RyDYDIulPiW23ge+g5Lw==", + "requires": { + "@types/node": "*" + } + }, "@types/is-function": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/is-function/-/is-function-1.0.1.tgz", @@ -63904,6 +67475,11 @@ "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, + "@types/jsonld": { + "version": "1.5.15", + "resolved": "https://registry.npmjs.org/@types/jsonld/-/jsonld-1.5.15.tgz", + "integrity": "sha512-PlAFPZjL+AuGYmwlqwKEL0IMP8M8RexH0NIPGfCVWSQ041H2rR/8OlyZSD7KsCVoN8vCfWdtWDBxX8yBVP+xow==" + }, "@types/keyv": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", @@ -63992,9 +67568,9 @@ "dev": true }, "@types/pbkdf2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", - "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", "peer": true, "requires": { "@types/node": "*" @@ -64022,6 +67598,201 @@ "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", "dev": true }, + "@types/rdf-dataset-ext": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/rdf-dataset-ext/-/rdf-dataset-ext-1.0.8.tgz", + "integrity": "sha512-ngMGOzAm+yvrfTzFhlmPNa9lfWO72IkdqYRR+HNIPX3x+RPLf6qRpAi8GAZCg0rkpGt2JJqDQF3FgVxE6ykr/w==", + "peer": true, + "requires": { + "@rdfjs/types": ">=1.0.0", + "@types/readable-stream": "*" + } + }, + "@types/rdfjs__data-model": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@types/rdfjs__data-model/-/rdfjs__data-model-2.0.9.tgz", + "integrity": "sha512-rgQSlM9jr7XMZdC0xUIr0zsxf5FvdB4cxxzv+MlHm6uJGip5qi0q+BluNhakAzaM2I56nKLDqSE3I/XuOaHGnA==", + "requires": { + "@rdfjs/types": "*" + } + }, + "@types/rdfjs__dataset": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/rdfjs__dataset/-/rdfjs__dataset-2.0.7.tgz", + "integrity": "sha512-+GaYIL9C7N1N0HyH+obU4IXuL7DX+fXuf827aUQ2Vx2UghO47+OTxo2v3seEQj/1YHoHBfQFk5Y4P6Q7Ht4Hqw==", + "requires": { + "@rdfjs/types": "*" + } + }, + "@types/rdfjs__environment": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/rdfjs__environment/-/rdfjs__environment-1.0.0.tgz", + "integrity": "sha512-MDcnv3qfJvbHoEpUQXj5muT8g3e+xz1D8sGevrq3+Q4TzeEvQf5ijGX5l8485XFYrN/OBApgzXkHMZC04/kd5w==", + "peer": true, + "requires": { + "@rdfjs/types": "*", + "@types/node": "*" + } + }, + "@types/rdfjs__fetch-lite": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/rdfjs__fetch-lite/-/rdfjs__fetch-lite-3.0.11.tgz", + "integrity": "sha512-1bHxBn62bmTPq/HY9Jr+iKCdBp8RTEJ4WA0ycihghRF8zWQfw6T7E5CqdPi4nncmgF70LOz7jF/4jeLGdb6H2A==", + "peer": true, + "requires": { + "@rdfjs/types": "*", + "@types/node": "*", + "@types/rdfjs__formats": "*" + } + }, + "@types/rdfjs__formats": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/rdfjs__formats/-/rdfjs__formats-4.0.1.tgz", + "integrity": "sha512-Zj7hQEn5HeCj+pJCWshY2gqBcdBdwyc2j20Ht3PH91pkdRuG2AlGDD3N9PQ1oZ3+J6Q96rAlhxUbjQUp9+s3FQ==", + "peer": true, + "requires": { + "@rdfjs/types": ">=1.0.0", + "@types/node": "*", + "@types/rdfjs__parser-jsonld": "*", + "@types/rdfjs__parser-n3": "*", + "@types/rdfjs__serializer-jsonld": "*", + "@types/rdfjs__serializer-jsonld-ext": "*", + "@types/rdfjs__serializer-ntriples": "*", + "@types/rdfjs__serializer-turtle": "*", + "@types/rdfjs__sink-map": "*", + "rdfxml-streaming-parser": ">=2" + } + }, + "@types/rdfjs__formats-common": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@types/rdfjs__formats-common/-/rdfjs__formats-common-3.1.5.tgz", + "integrity": "sha512-Zt74nSd9NemOq90/2cMrBVwnHJIXHFFDS7tkY4Slei1eRoQJpws059Lx9O+mqaFspkD3r81Enu/5CiNfQg9V7g==", + "requires": { + "@rdfjs/types": ">=1.0.0", + "@types/node": "*", + "@types/rdfjs__parser-jsonld": "*", + "@types/rdfjs__parser-n3": "*", + "@types/rdfjs__serializer-jsonld": "*", + "@types/rdfjs__serializer-ntriples": "*", + "@types/rdfjs__sink-map": "*", + "rdfxml-streaming-parser": ">=2" + } + }, + "@types/rdfjs__namespace": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/rdfjs__namespace/-/rdfjs__namespace-2.0.10.tgz", + "integrity": "sha512-xoVzEIOxcpyteEmzaj94MSBbrBFs+vqv05joMhzLEiPRwsBBDnhkdBCaaDxR1Tf7wOW0kB2R1IYe4C3vEBFPgA==", + "requires": { + "@rdfjs/types": "*" + } + }, + "@types/rdfjs__parser-jsonld": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@types/rdfjs__parser-jsonld/-/rdfjs__parser-jsonld-2.1.7.tgz", + "integrity": "sha512-n35K+c1Y95580N202Jxly6xjFE953FF+Y2mwxok6zLfMo4rgIfgMBElnNwpja0IeYXTuzGm1tEz7va3lItGrTg==", + "requires": { + "@rdfjs/types": ">=1.0.0", + "@types/jsonld": "*" + } + }, + "@types/rdfjs__parser-n3": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/rdfjs__parser-n3/-/rdfjs__parser-n3-2.0.6.tgz", + "integrity": "sha512-VHfdq7BDV6iMCtHkzTFSOuUWnqGlMUmEF0UZyK4+g9SzLWvc6TMcU5TYwQPQIz/e0s7dZ+xomxx6mVtIzsRQ/A==", + "requires": { + "@rdfjs/types": ">=1.0.0" + } + }, + "@types/rdfjs__prefix-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@types/rdfjs__prefix-map/-/rdfjs__prefix-map-0.1.5.tgz", + "integrity": "sha512-RAwyS/2dT9X79QwM0F8KLweTfuBoe6xtiAlU7wKPB+/t/sfk6A50LYtAWaDVP5qBjcu50UkKkZT+VR47CiLkfg==", + "peer": true, + "requires": { + "@rdfjs/types": "*" + } + }, + "@types/rdfjs__serializer-jsonld": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/rdfjs__serializer-jsonld/-/rdfjs__serializer-jsonld-2.0.5.tgz", + "integrity": "sha512-ubdLD9QgZzAt+65NSPzh2qWCPWcGYlHEWgkP6uRwfm7JC48Xh/QjzwOTG13MTomOkQqcN4R7PIG0j3Ca8iyNWQ==", + "requires": { + "@rdfjs/types": ">=1.0.0" + } + }, + "@types/rdfjs__serializer-jsonld-ext": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/rdfjs__serializer-jsonld-ext/-/rdfjs__serializer-jsonld-ext-4.0.1.tgz", + "integrity": "sha512-jgbQ/1kV7nESKG7SY8FJED6K4OFznr6Sz3ybF1ncpBR7TUBTuy3InpZOVRK4Wjpy2zi84iIAzJ1CIIo9NZh2Xw==", + "peer": true, + "requires": { + "@rdfjs/types": ">=1.0.0", + "@types/jsonld": "*", + "@types/node": "*" + } + }, + "@types/rdfjs__serializer-ntriples": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/rdfjs__serializer-ntriples/-/rdfjs__serializer-ntriples-2.0.6.tgz", + "integrity": "sha512-Nn3e3eyuymLvbI5MFzI7ODD/X6ZGpbB9fLaWOB00RtFHd2vttk3wQL2fzzsZZQPJ/ihC/xlFE4cNQkO6SoHa7w==", + "requires": { + "@rdfjs/types": ">=1.0.0" + } + }, + "@types/rdfjs__serializer-turtle": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@types/rdfjs__serializer-turtle/-/rdfjs__serializer-turtle-1.1.0.tgz", + "integrity": "sha512-NGHnbz5985UwS/YS6WL/FkS94B+QiVTdsfvJCqPwLmY3E7UeClw91c2KbiphZUR/uh7uwLwxeKKhV2T1gYgT5Q==", + "peer": true, + "requires": { + "@rdfjs/types": ">=1.0.0", + "@types/node": "*", + "@types/rdfjs__prefix-map": "*" + } + }, + "@types/rdfjs__sink-map": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/rdfjs__sink-map/-/rdfjs__sink-map-2.0.5.tgz", + "integrity": "sha512-ycUBlOMbp9YpjrBrMwGv3uiqulOWgodess06cinYLxomOTc2ET9rEQklgM5rJqnu5WMsVP8SFG3fFw36/5hADQ==", + "requires": { + "@rdfjs/types": "*" + } + }, + "@types/rdfjs__term-map": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/rdfjs__term-map/-/rdfjs__term-map-2.0.10.tgz", + "integrity": "sha512-YlpYkya+Xq9fmcw+BMi1SCh+w2sBu7G0/qd2+ZhB4QIK3V1xq2o3EOAZnlahyQdwrW9t5+Ihw8IVVvZsJvDOTA==", + "peer": true, + "requires": { + "@rdfjs/types": "*" + } + }, + "@types/rdfjs__term-set": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@types/rdfjs__term-set/-/rdfjs__term-set-2.0.9.tgz", + "integrity": "sha512-RRXs5DwFGanZyT705f7KLSiN68gUVUtGWTp508CXJhLfD7AWmilqc1BLgLUoac48h3pnh9w5lRhwFm6fj1ZE5Q==", + "peer": true, + "requires": { + "@rdfjs/types": "*" + } + }, + "@types/rdfjs__to-ntriples": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/rdfjs__to-ntriples/-/rdfjs__to-ntriples-3.0.0.tgz", + "integrity": "sha512-3qZGpe2L3s2fAwmLvDDrcPCVDQmmEsg1KpwDd6bLPcCWQ7BISWHIQX/k/l1VU9EZB8uNoEAcmRmeVJY2jnu7wA==", + "requires": { + "@rdfjs/types": ">=1.0.0" + } + }, + "@types/rdfjs__traverser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@types/rdfjs__traverser/-/rdfjs__traverser-0.1.5.tgz", + "integrity": "sha512-tTpiM6lAddw+bGRDjhzwdpo1EQK73m8gYgMVNfO4OsevnuLZvQJeCJBckpuDC4H5HVAEwCapI0UlH9dVnZ9u5g==", + "peer": true, + "requires": { + "@rdfjs/types": "*" + } + }, "@types/react": { "version": "18.3.3", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz", @@ -64075,6 +67846,15 @@ "@types/react": "*" } }, + "@types/readable-stream": { + "version": "4.0.18", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.18.tgz", + "integrity": "sha512-21jK/1j+Wg+7jVw1xnSwy/2Q1VgVjWuFssbYGTREPUBeZ+rqVFl2udq0IkxzPC0ZhOzVceUbyIACFZKLqKEBlA==", + "requires": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, "@types/remove-markdown": { "version": "0.3.4", "resolved": "https://registry.npmjs.org/@types/remove-markdown/-/remove-markdown-0.3.4.tgz", @@ -64082,18 +67862,18 @@ "dev": true }, "@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", + "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", "peer": true, "requires": { "@types/node": "*" } }, "@types/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", "peer": true, "requires": { "@types/node": "*" @@ -64421,6 +68201,12 @@ "integrity": "sha512-hgfExDzUU9uTRTPDCpw2s9jWTxcxmpJya3fK5ADpf5VDpSy8WYwY/kh28XE0tUcbsljeP8wfan48QvAQTSSa3Q==", "requires": {} }, + "@vocabulary/sh": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@vocabulary/sh/-/sh-1.1.6.tgz", + "integrity": "sha512-8IfAQoKh57THz8LA2+n1jaY/VC2XaqMNSsJgzBKSSrj20y5PSMAawb6dMsxoLxqDIPBDs1TFRl/9CijUnwbBUA==", + "requires": {} + }, "@wagmi/chains": { "version": "0.2.22", "resolved": "https://registry.npmjs.org/@wagmi/chains/-/chains-0.2.22.tgz", @@ -66051,6 +69837,86 @@ "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", "dev": true }, + "@zazuko/env-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@zazuko/env-core/-/env-core-1.1.2.tgz", + "integrity": "sha512-mnLG40utuT7jPBPLs6fJ0puhfagnXSj+S8t9+zUGs3YlrOq/7b2zr64Hi3p3etwDdApaQ0VgQuNIY9doaruS1Q==", + "requires": { + "@rdfjs/environment": "^1.0.0" + } + }, + "@zazuko/env-node": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@zazuko/env-node/-/env-node-2.1.5.tgz", + "integrity": "sha512-qYrePSWiz9XOB5R0NfvuaogmPP8gLcMsl18G7sYW1h6RB4l3aiofAr4YAKTK+bpJgGjeivDDi64lsQjF2F6p0g==", + "requires": { + "@rdfjs/fetch-lite": "^3.2.2", + "@rdfjs/formats": "^4.0.0", + "@zazuko/env": "^2.5.3", + "@zazuko/rdf-utils-fs": "^3.3.0" + }, + "dependencies": { + "@tpluscode/rdf-ns-builders": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tpluscode/rdf-ns-builders/-/rdf-ns-builders-4.3.0.tgz", + "integrity": "sha512-x3uh9mYwAU+PrALaDKhVjml1TCCWWduo6J8rybd9SMEEAoooXq1MYb13MRputjRT/kYaFyCND7LMobzhxZ/+bg==", + "requires": { + "@rdfjs/data-model": "^2", + "@rdfjs/namespace": "^2", + "@rdfjs/types": "*", + "@types/rdfjs__namespace": "^2.0.2", + "@zazuko/prefixes": "^2.0.1" + } + }, + "@zazuko/env": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/@zazuko/env/-/env-2.5.3.tgz", + "integrity": "sha512-kivvYoXGFjva1CuXeK/jaaWMy9eXhhFmuSfSJGVW2wH7XbcZehJObjPXEVlZ3kKLCFhuv96j8Ot3SkbYaOtuLA==", + "requires": { + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/dataset": "^2.0.1", + "@rdfjs/formats": "^4.0.0", + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/term-map": "^2.0.0", + "@rdfjs/term-set": "^2.0.1", + "@rdfjs/traverser": "^0.1.2", + "@tpluscode/rdf-ns-builders": "^4.1.0", + "@zazuko/env-core": "^1.1.2", + "@zazuko/prefixes": "^2.1.0", + "clownface": "^2.0.2", + "get-stream": "^9.0.1", + "rdf-dataset-ext": "^1.1.0" + } + }, + "get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "requires": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + } + }, + "is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==" + } + } + }, + "@zazuko/prefixes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@zazuko/prefixes/-/prefixes-2.4.0.tgz", + "integrity": "sha512-bd53k5XgFKWR56sofHeAcIbv8o0m2HsJlbHaHbrMufUCdgiZsCLvZn84Vh1dhcsyBHOD0EIo9AD4pNWDQLVRaw==" + }, + "@zazuko/rdf-utils-fs": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@zazuko/rdf-utils-fs/-/rdf-utils-fs-3.3.1.tgz", + "integrity": "sha512-4HjTbJUwiCFanMMcaaZkLIkWUdVjXSQstAyxnfzsUOmh8Q43iVBL+mYAl17zoi47III0POL6hitRsN1JJ5tUFg==", + "requires": { + "readable-stream": ">=3.6.0" + } + }, "@zeit/schemas": { "version": "2.36.0", "resolved": "https://registry.npmjs.org/@zeit/schemas/-/schemas-2.36.0.tgz", @@ -66073,15 +69939,14 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "peer": true, "requires": { "event-target-shim": "^5.0.0" } }, "abortcontroller-polyfill": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.5.tgz", - "integrity": "sha512-JMJ5soJWP18htbbxJjG7bG6yuI6pRhgJ0scHHTfkUjf6wjP912xZWvM+A4sJK3gqd9E8fcPbDnOefbA9Th/FIQ==", + "version": "1.7.8", + "resolved": "https://registry.npmjs.org/abortcontroller-polyfill/-/abortcontroller-polyfill-1.7.8.tgz", + "integrity": "sha512-9f1iZ2uWh92VcrU9Y8x+LdM4DLj75VE0MJB8zuF1iUnroEptStw+DQ8EQPMUdfe5k+PkB1uUfDQfWbhstH8LrQ==", "peer": true }, "absolute-path": { @@ -67103,6 +70968,7 @@ "version": "5.4.1", "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, "requires": { "bn.js": "^4.0.0", "inherits": "^2.0.1", @@ -67143,6 +71009,11 @@ "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "peer": true }, + "assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==" + }, "assign-symbols": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", @@ -67253,15 +71124,15 @@ "peer": true }, "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.2.tgz", + "integrity": "sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==", "peer": true }, "axios": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.2.tgz", - "integrity": "sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", + "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", "requires": { "follow-redirects": "^1.15.6", "form-data": "^4.0.0", @@ -67787,6 +71658,14 @@ "peer": true, "requires": { "tweetnacl": "^0.14.3" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "peer": true + } } }, "bech32": { @@ -68047,6 +71926,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, "requires": { "browserify-aes": "^1.0.4", "browserify-des": "^1.0.0", @@ -68057,6 +71937,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, "requires": { "cipher-base": "^1.0.1", "des.js": "^1.0.0", @@ -68068,6 +71949,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, "requires": { "bn.js": "^5.0.0", "randombytes": "^2.0.1" @@ -68076,7 +71958,8 @@ "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true } } }, @@ -68084,6 +71967,7 @@ "version": "4.2.1", "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, "requires": { "bn.js": "^5.1.1", "browserify-rsa": "^4.0.1", @@ -68099,12 +71983,14 @@ "bn.js": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true } } }, @@ -68146,6 +72032,14 @@ "safe-buffer": "^5.1.2" } }, + "bsaes": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/bsaes/-/bsaes-0.0.2.tgz", + "integrity": "sha512-iVxJFMOvCUG85sX2UVpZ9IgvH6Jjc5xpd/W8pALvFE7zfCqHkV7hW3M2XZtpg9biPS0K4Eka96bbNNgLohcpgQ==", + "requires": { + "uint32": "^0.2.1" + } + }, "bser": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", @@ -68450,9 +72344,9 @@ "peer": true }, "cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", "peer": true, "requires": { "clone-response": "^1.0.2", @@ -68498,6 +72392,15 @@ "set-function-length": "^1.2.1" } }, + "call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + } + }, "call-me-maybe": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.2.tgz", @@ -68634,9 +72537,9 @@ "peer": true }, "cborg": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.10.1.tgz", - "integrity": "sha512-et6Qm8MOUY2kCWa5GKk2MlBVoPjHv0hQBmlzI/Z7+5V3VJCeIkGehIB3vWknNsm2kOkAIs6wEKJFJo8luWQQ/w==" + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/cborg/-/cborg-1.10.2.tgz", + "integrity": "sha512-b3tFPA9pUr2zCUiCfRd2+wok2/LBSNUMKOuRRok+WlvvAgEt/PlbgPTsZUcwCOs53IJvLgTp0eotwtosE6njug==" }, "ccount": { "version": "1.1.0", @@ -68644,6 +72547,18 @@ "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", "dev": true }, + "chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "requires": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + } + }, "chalk": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", @@ -68769,6 +72684,11 @@ "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", "dev": true }, + "check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==" + }, "chokidar": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", @@ -69227,6 +73147,16 @@ "mimic-response": "^1.0.0" } }, + "clownface": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/clownface/-/clownface-2.0.3.tgz", + "integrity": "sha512-E76TBJ7CgU9+/5paSAvuNdMO+fzFThnvRVtidosktYppYkXM8V7tid8Ezzo8S1OmoWxKUam3yfkZlfCid4OiJQ==", + "requires": { + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/environment": "0 - 1", + "@rdfjs/namespace": "^2.0.0" + } + }, "clsx": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", @@ -69279,6 +73209,16 @@ "object-visit": "^1.0.0" } }, + "color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "optional": true, + "requires": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + } + }, "color-convert": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", @@ -69292,6 +73232,16 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "optional": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, "color-support": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", @@ -70104,6 +74054,7 @@ "version": "4.0.4", "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, "requires": { "bn.js": "^4.1.0", "elliptic": "^6.5.3" @@ -70260,10 +74211,16 @@ "integrity": "sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==", "requires": {} }, + "crypto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", + "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==" + }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, "requires": { "browserify-cipher": "^1.0.0", "browserify-sign": "^4.0.0", @@ -70279,9 +74236,9 @@ } }, "crypto-js": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", - "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" }, "css-color-keywords": { "version": "1.0.0", @@ -70650,6 +74607,11 @@ "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", "dev": true }, + "deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==" + }, "deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -70789,6 +74751,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, "requires": { "inherits": "^2.0.1", "minimalistic-assert": "^1.0.0" @@ -71062,6 +75025,7 @@ "version": "5.0.3", "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, "requires": { "bn.js": "^4.1.0", "miller-rabin": "^4.0.0", @@ -71215,6 +75179,21 @@ "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", "dev": true }, + "dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "requires": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + } + }, + "duplex-to": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/duplex-to/-/duplex-to-2.0.0.tgz", + "integrity": "sha512-f2nMnk11mwDptEFBTv2mcWHpF4ENAbuQ63yTiSy/99rG4Exsxsf0GJhJYq/AHF2cdMYswSx23LPuoijBflpquQ==" + }, "duplexify": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", @@ -71379,7 +75358,6 @@ "version": "5.10.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -71388,8 +75366,7 @@ "tapable": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==" } } }, @@ -71511,12 +75488,9 @@ "dev": true }, "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", @@ -71569,23 +75543,23 @@ "dev": true }, "es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "dev": true, + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "requires": { "es-errors": "^1.3.0" } }, "es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "requires": { - "get-intrinsic": "^1.2.4", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" + "hasown": "^2.0.2" } }, "es-shim-unscopables": { @@ -72480,12 +76454,20 @@ } }, "ethereum-bloom-filters": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.0.10.tgz", - "integrity": "sha512-rxJ5OFN3RwjQxDcFP2Z5+Q9ho4eIdEmSc2ht0fCu8Se9nbXjZ7/031uXoUYJ87KHCOdVeiUuwSnoS7hmYAGVHA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ethereum-bloom-filters/-/ethereum-bloom-filters-1.2.0.tgz", + "integrity": "sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==", "peer": true, "requires": { - "js-sha3": "^0.8.0" + "@noble/hashes": "^1.4.0" + }, + "dependencies": { + "@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "peer": true + } } }, "ethereum-cryptography": { @@ -72525,9 +76507,9 @@ }, "dependencies": { "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", "peer": true } } @@ -72590,8 +76572,7 @@ "event-target-shim": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "peer": true + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" }, "eventemitter3": { "version": "4.0.7", @@ -73783,15 +77764,20 @@ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" }, "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.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "requires": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" } }, "get-package-type": { @@ -73805,6 +77791,15 @@ "resolved": "https://registry.npmjs.org/get-port-please/-/get-port-please-3.1.2.tgz", "integrity": "sha512-Gxc29eLs1fbn6LQ4jSU4vXjlwyZhF5HsGuMAa7gqBP4Rw4yxxltyDUuF5MBclFzDTXO+ACchGQoeela4DSfzdQ==" }, + "get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "requires": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + } + }, "get-stdin": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", @@ -74084,12 +78079,9 @@ } }, "gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { - "get-intrinsic": "^1.1.3" - } + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" }, "got": { "version": "12.1.0", @@ -74262,12 +78254,13 @@ "has-proto": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true }, "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" }, "has-tostringtag": { "version": "1.0.2", @@ -74926,9 +78919,9 @@ } }, "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", + "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", "peer": true }, "http-call": { @@ -74975,6 +78968,11 @@ "integrity": "sha512-o0PWwVCSp3O0wS6FvNr6xfBCHgt0m1tvPLFOCc2iFDKTRAXhB7m8klDf7ErowFH8POa6dVdGatKU5I1YYwzUyg==", "peer": true }, + "http-link-header": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.1.3.tgz", + "integrity": "sha512-3cZ0SRL8fb9MUlU3mKM61FcQvPfXx2dBrZW3Vbg5CXa8jFlK8OaEpePenLe1oEXQduhz8b0QjsqfS59QP4AJDQ==" + }, "http-proxy-agent": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", @@ -75003,9 +79001,9 @@ } }, "http2-wrapper": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.0.tgz", - "integrity": "sha512-kZB0wxMo0sh1PehyjJUWRFEd99KC5TLjZ2cULC4f9iqJBAmKQQXEICjxl5iPJRwP40dpeHFqqhm7tYCvODpqpQ==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", "peer": true, "requires": { "quick-lru": "^5.1.1", @@ -77961,6 +81959,11 @@ "@sideway/pinpoint": "^2.0.0" } }, + "jose": { + "version": "5.10.0", + "resolved": "https://registry.npmjs.org/jose/-/jose-5.10.0.tgz", + "integrity": "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==" + }, "js-cookie": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", @@ -78347,6 +82350,82 @@ "universalify": "^2.0.0" } }, + "jsonld": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-8.3.3.tgz", + "integrity": "sha512-9YcilrF+dLfg9NTEof/mJLMtbdX1RJ8dbWtJgE00cMOIohb1lIyJl710vFiTaiHTl6ZYODJuBd32xFvUhmv3kg==", + "requires": { + "@digitalbazaar/http-client": "^3.4.1", + "canonicalize": "^1.0.1", + "lru-cache": "^6.0.0", + "rdf-canonize": "^3.4.0" + }, + "dependencies": { + "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==", + "requires": { + "yallist": "^4.0.0" + } + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + } + } + }, + "jsonld-context-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonld-context-parser/-/jsonld-context-parser-3.0.0.tgz", + "integrity": "sha512-Kg6TVtBUdIm057ht/8WNhM9BROt+BeYaDGXbzrKaa3xA99csee+CsD8IMCTizRgzoO8PIzvzcxxCoRvpq1xNQw==", + "requires": { + "@types/http-link-header": "^1.0.1", + "@types/node": "^18.0.0", + "http-link-header": "^1.0.2", + "relative-to-absolute-iri": "^1.0.5" + } + }, + "jsonld-streaming-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/jsonld-streaming-parser/-/jsonld-streaming-parser-5.0.0.tgz", + "integrity": "sha512-Q6Bfbmig8fFpIbJgJTi4LLzco9dz0YuBM/mDvUYXzP8L/+me6P3pRy4exrhCpv49Bwv2oQFFIHM7wIwCKma2XA==", + "requires": { + "@bergos/jsonparse": "^1.4.0", + "@types/http-link-header": "^1.0.1", + "@types/readable-stream": "^4.0.0", + "buffer": "^6.0.3", + "canonicalize": "^1.0.1", + "http-link-header": "^1.0.2", + "jsonld-context-parser": "^3.0.0", + "rdf-data-factory": "^2.0.0", + "readable-stream": "^4.0.0" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } + } + }, "jsontokens": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/jsontokens/-/jsontokens-4.0.1.tgz", @@ -78496,9 +82575,9 @@ } }, "keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "peer": true, "requires": { "json-buffer": "3.0.1" @@ -78531,6 +82610,32 @@ "integrity": "sha512-ZkFF4CXKZCDd2+6sBPA0y3hQ+X4uTqIS6JxTl3BEOFJzKr1tId+rxxJgtsk1FQIH3auuvnMj/rkbatUcf9C2Wg==", "peer": true }, + "ky": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/ky/-/ky-0.33.3.tgz", + "integrity": "sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==" + }, + "ky-universal": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/ky-universal/-/ky-universal-0.11.0.tgz", + "integrity": "sha512-65KyweaWvk+uKKkCrfAf+xqN2/epw1IJDtlyCPxYffFCMR8u1sp2U65NtWpnozYfZxQ6IUzIlvUcw+hQ82U2Xw==", + "requires": { + "abort-controller": "^3.0.0", + "node-fetch": "^3.2.10" + }, + "dependencies": { + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + } + } + }, "lazy-universal-dotenv": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/lazy-universal-dotenv/-/lazy-universal-dotenv-3.0.1.tgz", @@ -79273,6 +83378,11 @@ "signal-exit": "^3.0.0" } }, + "loupe": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==" + }, "lower-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", @@ -79407,6 +83517,11 @@ } } }, + "math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" + }, "md5.js": { "version": "1.3.5", "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", @@ -81035,6 +85150,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, "requires": { "bn.js": "^4.0.0", "brorand": "^1.0.1" @@ -81440,6 +85556,38 @@ "resolved": "https://registry.npmjs.org/myetherwallet-blockies/-/myetherwallet-blockies-0.1.1.tgz", "integrity": "sha512-2UPR88/+L7rTVLqTM1Fu3Er9+m6XLMGaanP5wyq5+dGyv9TFbB5ohXRJA0jeYf+30gtlOlhlvzAWtwB6BiHWxQ==" }, + "n3": { + "version": "1.25.2", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.25.2.tgz", + "integrity": "sha512-ZBPnAgOw4sze/hnyoydNA5Ts9wbwiG+BXssTkdBKD6IkQZcg1IfQdo5AMU9JhsIu/RGtRD1QD0gphEhk/6ZnWA==", + "requires": { + "buffer": "^6.0.3", + "readable-stream": "^4.0.0" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } + } + }, "nan": { "version": "2.19.0", "resolved": "https://registry.npmjs.org/nan/-/nan-2.19.0.tgz", @@ -81535,26 +85683,26 @@ "dev": true }, "next": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.3.tgz", - "integrity": "sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==", - "requires": { - "@next/env": "14.2.3", - "@next/swc-darwin-arm64": "14.2.3", - "@next/swc-darwin-x64": "14.2.3", - "@next/swc-linux-arm64-gnu": "14.2.3", - "@next/swc-linux-arm64-musl": "14.2.3", - "@next/swc-linux-x64-gnu": "14.2.3", - "@next/swc-linux-x64-musl": "14.2.3", - "@next/swc-win32-arm64-msvc": "14.2.3", - "@next/swc-win32-ia32-msvc": "14.2.3", - "@next/swc-win32-x64-msvc": "14.2.3", - "@swc/helpers": "0.5.5", + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/next/-/next-15.2.3.tgz", + "integrity": "sha512-x6eDkZxk2rPpu46E1ZVUWIBhYCLszmUY6fvHBFcbzJ9dD+qRX6vcHusaqqDlnY+VngKzKbAiG2iRCkPbmi8f7w==", + "requires": { + "@next/env": "15.2.3", + "@next/swc-darwin-arm64": "15.2.3", + "@next/swc-darwin-x64": "15.2.3", + "@next/swc-linux-arm64-gnu": "15.2.3", + "@next/swc-linux-arm64-musl": "15.2.3", + "@next/swc-linux-x64-gnu": "15.2.3", + "@next/swc-linux-x64-musl": "15.2.3", + "@next/swc-win32-arm64-msvc": "15.2.3", + "@next/swc-win32-x64-msvc": "15.2.3", + "@swc/counter": "0.1.3", + "@swc/helpers": "0.5.15", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", - "graceful-fs": "^4.2.11", "postcss": "8.4.31", - "styled-jsx": "5.1.1" + "sharp": "^0.33.5", + "styled-jsx": "5.1.6" }, "dependencies": { "postcss": { @@ -81574,6 +85722,14 @@ "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" }, + "next-transpile-modules": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/next-transpile-modules/-/next-transpile-modules-10.0.1.tgz", + "integrity": "sha512-4VX/LCMofxIYAVV58UmD+kr8jQflpLWvas/BQ4Co0qWLWzVh06FoZkECkrX5eEZT6oJFqie6+kfbTA3EZCVtdQ==", + "requires": { + "enhanced-resolve": "^5.10.0" + } + }, "nice-try": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", @@ -81824,6 +85980,50 @@ "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", "peer": true }, + "nodeify-fetch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nodeify-fetch/-/nodeify-fetch-3.1.0.tgz", + "integrity": "sha512-ZV81vM//sEgTgXwVZlOONzcOCdTGQ53mV65FVSNXgPQHa8oCwRLtLbnGxL/1S/Yw90bcXUDKMz00jEnaeazo+A==", + "requires": { + "lodash": "^4.17.21", + "node-fetch": "^3.2.10", + "readable-stream": "^4.2.0", + "stream-chunks": "^1.0.0" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "requires": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + } + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } + } + }, "normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -84068,6 +88268,7 @@ "version": "5.1.6", "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, "requires": { "asn1.js": "^5.2.0", "browserify-aes": "^1.0.0", @@ -84091,9 +88292,9 @@ } }, "parse-headers": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz", - "integrity": "sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.6.tgz", + "integrity": "sha512-Tz11t3uKztEW5FEVZnj1ox8GKblWn+PvHY9TmJV5Mll2uHEwRdR/5Li1OlXoECjLYkApdhWy44ocONwXLiKO5A==", "peer": true }, "parse-json": { @@ -84315,6 +88516,11 @@ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==" }, + "pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==" + }, "pbkdf2": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", @@ -84916,6 +89122,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, "requires": { "bn.js": "^4.1.0", "browserify-rsa": "^4.0.0", @@ -85221,6 +89428,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, "requires": { "randombytes": "^2.0.5", "safe-buffer": "^5.1.0" @@ -85279,6 +89487,158 @@ } } }, + "rdf-canonize": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-3.4.0.tgz", + "integrity": "sha512-fUeWjrkOO0t1rg7B2fdyDTvngj+9RlUyL92vOdiB7c0FPguWVsniIMjEtHH+meLBO9rzkUlUzBVXgWrjI8P9LA==", + "requires": { + "setimmediate": "^1.0.5" + } + }, + "rdf-data-factory": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-2.0.2.tgz", + "integrity": "sha512-WzPoYHwQYWvIP9k+7IBLY1b4nIDitzAK4mA37WumAF/Cjvu/KOtYJH9IPZnUTWNSd5K2+pq4vrcE9WZC4sRHhg==", + "requires": { + "@rdfjs/types": "^2.0.0" + } + }, + "rdf-dataset-ext": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/rdf-dataset-ext/-/rdf-dataset-ext-1.1.0.tgz", + "integrity": "sha512-CH85RfRKN9aSlbju8T7aM8hgCSWMBsh2eh/tGxUUtWMN+waxi6iFDt8/r4PAEmKaEA82guimZJ4ISbmJ2rvWQg==", + "requires": { + "rdf-canonize": "^3.0.0", + "readable-stream": "3 - 4" + } + }, + "rdf-literal": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/rdf-literal/-/rdf-literal-1.3.2.tgz", + "integrity": "sha512-79Stlu3sXy0kq9/decHFLf3xNPuY6sfhFPhd/diWErgaFr0Ekyg38Vh9bnVcqDYu48CFRi0t+hrFii49n92Hbw==", + "requires": { + "@rdfjs/types": "*", + "rdf-data-factory": "^1.1.0" + }, + "dependencies": { + "@rdfjs/types": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.2.tgz", + "integrity": "sha512-wqpOJK1QCbmsGNtyzYnojPU8gRDPid2JO0Q0kMtb4j65xhCK880cnKAfEOwC+dX85VJcCByQx5zOwyyfCjDJsg==", + "requires": { + "@types/node": "*" + } + }, + "rdf-data-factory": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-1.1.3.tgz", + "integrity": "sha512-ny6CI7m2bq4lfQQmDYvcb2l1F9KtGwz9chipX4oWu2aAtVoXjb7k3d8J1EsgAsEbMXnBipB/iuRen5H2fwRWWQ==", + "requires": { + "@rdfjs/types": "^1.0.0" + } + } + } + }, + "rdf-validate-datatype": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/rdf-validate-datatype/-/rdf-validate-datatype-0.2.2.tgz", + "integrity": "sha512-mH9qL8i0WBbZ6HJCA26BB6V+WV2MraKvitez3SV0QegBWVQ4wYO49CgfFBzoAYg6tlnhFXl9MkrOAQ07X2N1FA==", + "requires": { + "@rdfjs/term-map": "^2.0.0", + "@tpluscode/rdf-ns-builders": "3 - 5" + } + }, + "rdf-validate-shacl": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/rdf-validate-shacl/-/rdf-validate-shacl-0.5.10.tgz", + "integrity": "sha512-I+TRVGeKn5eG/kTzVGRGGNThCSkgX/v7EUSOUEsIcHubyyShQYzRbQqyU45zKzNjLWdqp9abFHw1ULUPzWyo1A==", + "requires": { + "@rdfjs/data-model": "^2", + "@rdfjs/dataset": "^2", + "@rdfjs/environment": "^1", + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/term-set": "^2.0.1", + "@rdfjs/types": "^1.1.0", + "@vocabulary/sh": "^1.1.5", + "clownface": "^2.0.0", + "debug": "^4.3.2", + "rdf-literal": "^1.3.2", + "rdf-validate-datatype": "^0.2.0" + }, + "dependencies": { + "@rdfjs/types": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.2.tgz", + "integrity": "sha512-wqpOJK1QCbmsGNtyzYnojPU8gRDPid2JO0Q0kMtb4j65xhCK880cnKAfEOwC+dX85VJcCByQx5zOwyyfCjDJsg==", + "requires": { + "@types/node": "*" + } + } + } + }, + "rdfxml-streaming-parser": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/rdfxml-streaming-parser/-/rdfxml-streaming-parser-2.4.0.tgz", + "integrity": "sha512-f+tdI1wxOiPzMbFWRtOwinwPsqac0WIN80668yFKcVdFCSTGOWTM70ucQGUSdDZZo7pce/UvZgV0C3LDj0P7tg==", + "requires": { + "@rdfjs/types": "*", + "@rubensworks/saxes": "^6.0.1", + "@types/readable-stream": "^2.3.13", + "buffer": "^6.0.3", + "rdf-data-factory": "^1.1.0", + "readable-stream": "^4.4.2", + "relative-to-absolute-iri": "^1.0.0", + "validate-iri": "^1.0.0" + }, + "dependencies": { + "@rdfjs/types": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.2.tgz", + "integrity": "sha512-wqpOJK1QCbmsGNtyzYnojPU8gRDPid2JO0Q0kMtb4j65xhCK880cnKAfEOwC+dX85VJcCByQx5zOwyyfCjDJsg==", + "requires": { + "@types/node": "*" + } + }, + "@types/readable-stream": { + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", + "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", + "requires": { + "@types/node": "*", + "safe-buffer": "~5.1.1" + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "rdf-data-factory": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-1.1.3.tgz", + "integrity": "sha512-ny6CI7m2bq4lfQQmDYvcb2l1F9KtGwz9chipX4oWu2aAtVoXjb7k3d8J1EsgAsEbMXnBipB/iuRen5H2fwRWWQ==", + "requires": { + "@rdfjs/types": "^1.0.0" + } + }, + "readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "requires": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + } + } + } + }, "react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -86002,6 +90362,11 @@ "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true }, + "relative-to-absolute-iri": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/relative-to-absolute-iri/-/relative-to-absolute-iri-1.0.7.tgz", + "integrity": "sha512-Xjyl4HmIzg2jzK/Un2gELqbcE8Fxy85A/aLSHE6PE/3+OGsFwmKVA1vRyGaz6vLWSqLDMHA+5rjD/xbibSQN1Q==" + }, "remark": { "version": "15.0.1", "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", @@ -86652,9 +91017,9 @@ } }, "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "peer": true }, "qs": { @@ -86837,9 +91202,9 @@ }, "dependencies": { "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", "peer": true } } @@ -87243,14 +91608,43 @@ "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==" }, "secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.4.tgz", + "integrity": "sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==", "peer": true, "requires": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", + "elliptic": "^6.5.7", + "node-addon-api": "^5.0.0", "node-gyp-build": "^4.2.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "peer": true + }, + "elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "peer": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "peer": true + } } }, "section-matter": { @@ -87688,6 +92082,50 @@ "resolved": "https://registry.npmjs.org/shallowequal/-/shallowequal-1.1.0.tgz", "integrity": "sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==" }, + "sharp": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.33.5.tgz", + "integrity": "sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==", + "optional": true, + "requires": { + "@img/sharp-darwin-arm64": "0.33.5", + "@img/sharp-darwin-x64": "0.33.5", + "@img/sharp-libvips-darwin-arm64": "1.0.4", + "@img/sharp-libvips-darwin-x64": "1.0.4", + "@img/sharp-libvips-linux-arm": "1.0.5", + "@img/sharp-libvips-linux-arm64": "1.0.4", + "@img/sharp-libvips-linux-s390x": "1.0.4", + "@img/sharp-libvips-linux-x64": "1.0.4", + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4", + "@img/sharp-libvips-linuxmusl-x64": "1.0.4", + "@img/sharp-linux-arm": "0.33.5", + "@img/sharp-linux-arm64": "0.33.5", + "@img/sharp-linux-s390x": "0.33.5", + "@img/sharp-linux-x64": "0.33.5", + "@img/sharp-linuxmusl-arm64": "0.33.5", + "@img/sharp-linuxmusl-x64": "0.33.5", + "@img/sharp-wasm32": "0.33.5", + "@img/sharp-win32-ia32": "0.33.5", + "@img/sharp-win32-x64": "0.33.5", + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.6.3" + }, + "dependencies": { + "detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "optional": true + }, + "semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "optional": true + } + } + }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -87770,6 +92208,23 @@ } } }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "optional": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "optional": true + } + } + }, "sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -88082,9 +92537,9 @@ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "sshpk": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", - "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", "peer": true, "requires": { "asn1": "~0.2.3", @@ -88096,6 +92551,14 @@ "jsbn": "~0.1.0", "safer-buffer": "^2.0.2", "tweetnacl": "~0.14.0" + }, + "dependencies": { + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "peer": true + } } }, "ssri": { @@ -88315,6 +92778,26 @@ } } }, + "stream-chunks": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stream-chunks/-/stream-chunks-1.0.0.tgz", + "integrity": "sha512-/G+kinLx3pKXChtuko82taA4gZo56zFG2b2BbhmugmS0TUPBL40c5b2vjonS+gAHYK/cSKM9m0WTvAJYgDUeNw==", + "requires": { + "buffer": "^6.0.3", + "string_decoder": "^1.3.0" + }, + "dependencies": { + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + } + } + }, "stream-each": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", @@ -88607,9 +93090,9 @@ } }, "styled-jsx": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz", - "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", "requires": { "client-only": "0.0.1" } @@ -88746,9 +93229,9 @@ } }, "got": { - "version": "11.8.5", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.5.tgz", - "integrity": "sha512-o0Je4NvQObAuZPHLFoRSkdG2lTgtcynqymzg2Vupdx6PorhaT5MCbIyXG6d4D94kk8ZG57QeosgdiqfJWhEhlQ==", + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", "peer": true, "requires": { "@sindresorhus/is": "^4.0.0", @@ -89508,10 +93991,9 @@ } }, "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", - "peer": true + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==" }, "tweetnacl-util": { "version": "0.15.1", @@ -89653,6 +94135,11 @@ "dev": true, "optional": true }, + "uint32": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/uint32/-/uint32-0.2.1.tgz", + "integrity": "sha512-d3i8kc/4s1CFW5g3FctmF1Bu2GVXGBMTn82JY2BW0ZtTtI8pRx1YWGPCFBwRF4uYVSJ7ua4y+qYEPqS+x+3w7Q==" + }, "uint8-varint": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/uint8-varint/-/uint8-varint-2.0.4.tgz", @@ -89731,6 +94218,14 @@ "resolved": "https://registry.npmjs.org/uncrypto/-/uncrypto-0.1.3.tgz", "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==" }, + "undici": { + "version": "5.29.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.29.0.tgz", + "integrity": "sha512-raqeBD6NQK4SkWhQzeYKd1KmIG6dllBOTt55Rmkt4HtI9mwdWtJljnrXjAFUBLTSN67HWrOIZ3EPF4kjUw80Bg==", + "requires": { + "@fastify/busboy": "^2.0.0" + } + }, "undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -90233,6 +94728,11 @@ "convert-source-map": "^1.6.0" } }, + "validate-iri": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/validate-iri/-/validate-iri-1.0.1.tgz", + "integrity": "sha512-gLXi7351CoyVVQw8XE5sgpYawRKatxE7kj/xmCxXOZS1kMdtcqC0ILIqLuVEVnAUQSL/evOGG3eQ+8VgbdnstA==" + }, "validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -90716,24 +95216,24 @@ "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==" }, "web3": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3/-/web3-1.8.1.tgz", - "integrity": "sha512-tAqFsQhGv340C9OgRJIuoScN7f7wa1tUvsnnDUMt9YE6J4gcm7TV2Uwv+KERnzvV+xgdeuULYpsioRRNKrUvoQ==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3/-/web3-1.10.4.tgz", + "integrity": "sha512-kgJvQZjkmjOEKimx/tJQsqWfRDPTTcBfYPa9XletxuHLpHcXdx67w8EFn5AW3eVxCutE9dTVHgGa9VYe8vgsEA==", "peer": true, "requires": { - "web3-bzz": "1.8.1", - "web3-core": "1.8.1", - "web3-eth": "1.8.1", - "web3-eth-personal": "1.8.1", - "web3-net": "1.8.1", - "web3-shh": "1.8.1", - "web3-utils": "1.8.1" + "web3-bzz": "1.10.4", + "web3-core": "1.10.4", + "web3-eth": "1.10.4", + "web3-eth-personal": "1.10.4", + "web3-net": "1.10.4", + "web3-shh": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-bzz": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.8.1.tgz", - "integrity": "sha512-dJJHS84nvpoxv6ijTMkdUSlRr5beCXNtx4UZcrFLHBva8dT63QEtKdLyDt2AyMJJdVzTCk78uir/6XtVWrdS6w==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-bzz/-/web3-bzz-1.10.4.tgz", + "integrity": "sha512-ZZ/X4sJ0Uh2teU9lAGNS8EjveEppoHNQiKlOXAjedsrdWuaMErBPdLQjXfcrYvN6WM6Su9PMsAxf3FXXZ+HwQw==", "peer": true, "requires": { "@types/node": "^12.12.6", @@ -90750,18 +95250,18 @@ } }, "web3-core": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.8.1.tgz", - "integrity": "sha512-LbRZlJH2N6nS3n3Eo9Y++25IvzMY7WvYnp4NM/Ajhh97dAdglYs6rToQ2DbL2RLvTYmTew4O/y9WmOk4nq9COw==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core/-/web3-core-1.10.4.tgz", + "integrity": "sha512-B6elffYm81MYZDTrat7aEhnhdtVE3lDBUZft16Z8awYMZYJDbnykEbJVS+l3mnA7AQTnSDr/1MjWofGDLBJPww==", "peer": true, "requires": { - "@types/bn.js": "^5.1.0", + "@types/bn.js": "^5.1.1", "@types/node": "^12.12.6", "bignumber.js": "^9.0.0", - "web3-core-helpers": "1.8.1", - "web3-core-method": "1.8.1", - "web3-core-requestmanager": "1.8.1", - "web3-utils": "1.8.1" + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-core-requestmanager": "1.10.4", + "web3-utils": "1.10.4" }, "dependencies": { "@types/node": { @@ -90773,32 +95273,32 @@ } }, "web3-core-helpers": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.8.1.tgz", - "integrity": "sha512-ClzNO6T1S1gifC+BThw0+GTfcsjLEY8T1qUp6Ly2+w4PntAdNtKahxWKApWJ0l9idqot/fFIDXwO3Euu7I0Xqw==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-helpers/-/web3-core-helpers-1.10.4.tgz", + "integrity": "sha512-r+L5ylA17JlD1vwS8rjhWr0qg7zVoVMDvWhajWA5r5+USdh91jRUYosp19Kd1m2vE034v7Dfqe1xYRoH2zvG0g==", "peer": true, "requires": { - "web3-eth-iban": "1.8.1", - "web3-utils": "1.8.1" + "web3-eth-iban": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-core-method": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.8.1.tgz", - "integrity": "sha512-oYGRodktfs86NrnFwaWTbv2S38JnpPslFwSSARwFv4W9cjbGUW3LDeA5MKD/dRY+ssZ5OaekeMsUCLoGhX68yA==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-method/-/web3-core-method-1.10.4.tgz", + "integrity": "sha512-uZTb7flr+Xl6LaDsyTeE2L1TylokCJwTDrIVfIfnrGmnwLc6bmTWCCrm71sSrQ0hqs6vp/MKbQYIYqUN0J8WyA==", "peer": true, "requires": { "@ethersproject/transactions": "^5.6.2", - "web3-core-helpers": "1.8.1", - "web3-core-promievent": "1.8.1", - "web3-core-subscriptions": "1.8.1", - "web3-utils": "1.8.1" + "web3-core-helpers": "1.10.4", + "web3-core-promievent": "1.10.4", + "web3-core-subscriptions": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-core-promievent": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.8.1.tgz", - "integrity": "sha512-9mxqHlgB0MrZI4oUIRFkuoJMNj3E7btjrMv3sMer/Z9rYR1PfoSc1aAokw4rxKIcAh+ylVtd/acaB2HKB7aRPg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-promievent/-/web3-core-promievent-1.10.4.tgz", + "integrity": "sha512-2de5WnJQ72YcIhYwV/jHLc4/cWJnznuoGTJGD29ncFQHAfwW/MItHFSVKPPA5v8AhJe+r6y4Y12EKvZKjQVBvQ==", "peer": true, "requires": { "eventemitter3": "4.0.4" @@ -90813,26 +95313,26 @@ } }, "web3-core-requestmanager": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.8.1.tgz", - "integrity": "sha512-x+VC2YPPwZ1khvqA6TA69LvfFCOZXsoUVOxmTx/vIN22PrY9KzKhxcE7pBSiGhmab1jtmRYXUbcQSVpAXqL8cw==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-requestmanager/-/web3-core-requestmanager-1.10.4.tgz", + "integrity": "sha512-vqP6pKH8RrhT/2MoaU+DY/OsYK9h7HmEBNCdoMj+4ZwujQtw/Mq2JifjwsJ7gits7Q+HWJwx8q6WmQoVZAWugg==", "peer": true, "requires": { - "util": "^0.12.0", - "web3-core-helpers": "1.8.1", - "web3-providers-http": "1.8.1", - "web3-providers-ipc": "1.8.1", - "web3-providers-ws": "1.8.1" + "util": "^0.12.5", + "web3-core-helpers": "1.10.4", + "web3-providers-http": "1.10.4", + "web3-providers-ipc": "1.10.4", + "web3-providers-ws": "1.10.4" } }, "web3-core-subscriptions": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.8.1.tgz", - "integrity": "sha512-bmCMq5OeA3E2vZUh8Js1HcJbhwtsE+yeMqGC4oIZB3XsL5SLqyKLB/pU+qUYqQ9o4GdcrFTDPhPg1bgvf7p1Pw==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-core-subscriptions/-/web3-core-subscriptions-1.10.4.tgz", + "integrity": "sha512-o0lSQo/N/f7/L76C0HV63+S54loXiE9fUPfHFcTtpJRQNDBVsSDdWRdePbWwR206XlsBqD5VHApck1//jEafTw==", "peer": true, "requires": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.8.1" + "web3-core-helpers": "1.10.4" }, "dependencies": { "eventemitter3": { @@ -90844,52 +95344,51 @@ } }, "web3-eth": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.8.1.tgz", - "integrity": "sha512-LgyzbhFqiFRd8M8sBXoFN4ztzOnkeckl3H/9lH5ek7AdoRMhBg7tYpYRP3E5qkhd/q+yiZmcUgy1AF6NHrC1wg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth/-/web3-eth-1.10.4.tgz", + "integrity": "sha512-Sql2kYKmgt+T/cgvg7b9ce24uLS7xbFrxE4kuuor1zSCGrjhTJ5rRNG8gTJUkAJGKJc7KgnWmgW+cOfMBPUDSA==", "peer": true, "requires": { - "web3-core": "1.8.1", - "web3-core-helpers": "1.8.1", - "web3-core-method": "1.8.1", - "web3-core-subscriptions": "1.8.1", - "web3-eth-abi": "1.8.1", - "web3-eth-accounts": "1.8.1", - "web3-eth-contract": "1.8.1", - "web3-eth-ens": "1.8.1", - "web3-eth-iban": "1.8.1", - "web3-eth-personal": "1.8.1", - "web3-net": "1.8.1", - "web3-utils": "1.8.1" + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-core-subscriptions": "1.10.4", + "web3-eth-abi": "1.10.4", + "web3-eth-accounts": "1.10.4", + "web3-eth-contract": "1.10.4", + "web3-eth-ens": "1.10.4", + "web3-eth-iban": "1.10.4", + "web3-eth-personal": "1.10.4", + "web3-net": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-eth-abi": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.8.1.tgz", - "integrity": "sha512-0mZvCRTIG0UhDhJwNQJgJxu4b4DyIpuMA0GTfqxqeuqzX4Q/ZvmoNurw0ExTfXaGPP82UUmmdkRi6FdZOx+C6w==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-abi/-/web3-eth-abi-1.10.4.tgz", + "integrity": "sha512-cZ0q65eJIkd/jyOlQPDjr8X4fU6CRL1eWgdLwbWEpo++MPU/2P4PFk5ZLAdye9T5Sdp+MomePPJ/gHjLMj2VfQ==", "peer": true, "requires": { "@ethersproject/abi": "^5.6.3", - "web3-utils": "1.8.1" + "web3-utils": "1.10.4" } }, "web3-eth-accounts": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.8.1.tgz", - "integrity": "sha512-mgzxSYgN54/NsOFBO1Fq1KkXp1S5KlBvI/DlgvajU72rupoFMq6Cu6Yp9GUaZ/w2ij9PzEJuFJk174XwtfMCmg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-accounts/-/web3-eth-accounts-1.10.4.tgz", + "integrity": "sha512-ysy5sVTg9snYS7tJjxVoQAH6DTOTkRGR8emEVCWNGLGiB9txj+qDvSeT0izjurS/g7D5xlMAgrEHLK1Vi6I3yg==", "peer": true, "requires": { - "@ethereumjs/common": "2.5.0", - "@ethereumjs/tx": "3.3.2", - "crypto-browserify": "3.12.0", + "@ethereumjs/common": "2.6.5", + "@ethereumjs/tx": "3.5.2", + "@ethereumjs/util": "^8.1.0", "eth-lib": "0.2.8", - "ethereumjs-util": "^7.0.10", "scrypt-js": "^3.0.1", "uuid": "^9.0.0", - "web3-core": "1.8.1", - "web3-core-helpers": "1.8.1", - "web3-core-method": "1.8.1", - "web3-utils": "1.8.1" + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-utils": "1.10.4" }, "dependencies": { "eth-lib": { @@ -90904,75 +95403,75 @@ } }, "uuid": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", - "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", "peer": true } } }, "web3-eth-contract": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.8.1.tgz", - "integrity": "sha512-1wphnl+/xwCE2io44JKnN+ti3oa47BKRiVzvWd42icwRbcpFfRxH9QH+aQX3u8VZIISNH7dAkTWpGIIJgGFTmg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-contract/-/web3-eth-contract-1.10.4.tgz", + "integrity": "sha512-Q8PfolOJ4eV9TvnTj1TGdZ4RarpSLmHnUnzVxZ/6/NiTfe4maJz99R0ISgwZkntLhLRtw0C7LRJuklzGYCNN3A==", "peer": true, "requires": { - "@types/bn.js": "^5.1.0", - "web3-core": "1.8.1", - "web3-core-helpers": "1.8.1", - "web3-core-method": "1.8.1", - "web3-core-promievent": "1.8.1", - "web3-core-subscriptions": "1.8.1", - "web3-eth-abi": "1.8.1", - "web3-utils": "1.8.1" + "@types/bn.js": "^5.1.1", + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-core-promievent": "1.10.4", + "web3-core-subscriptions": "1.10.4", + "web3-eth-abi": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-eth-ens": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.8.1.tgz", - "integrity": "sha512-FT8xTI9uN8RxeBQa/W8pLa2aoFh4+EE34w7W2271LICKzla1dtLyb6XSdn48vsUcPmhWsTVk9mO9RTU0l4LGQQ==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-ens/-/web3-eth-ens-1.10.4.tgz", + "integrity": "sha512-LLrvxuFeVooRVZ9e5T6OWKVflHPFgrVjJ/jtisRWcmI7KN/b64+D/wJzXqgmp6CNsMQcE7rpmf4CQmJCrTdsgg==", "peer": true, "requires": { "content-hash": "^2.5.2", "eth-ens-namehash": "2.0.8", - "web3-core": "1.8.1", - "web3-core-helpers": "1.8.1", - "web3-core-promievent": "1.8.1", - "web3-eth-abi": "1.8.1", - "web3-eth-contract": "1.8.1", - "web3-utils": "1.8.1" + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-promievent": "1.10.4", + "web3-eth-abi": "1.10.4", + "web3-eth-contract": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-eth-iban": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.8.1.tgz", - "integrity": "sha512-DomoQBfvIdtM08RyMGkMVBOH0vpOIxSSQ+jukWk/EkMLGMWJtXw/K2c2uHAeq3L/VPWNB7zXV2DUEGV/lNE2Dg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-iban/-/web3-eth-iban-1.10.4.tgz", + "integrity": "sha512-0gE5iNmOkmtBmbKH2aTodeompnNE8jEyvwFJ6s/AF6jkw9ky9Op9cqfzS56AYAbrqEFuClsqB/AoRves7LDELw==", "peer": true, "requires": { "bn.js": "^5.2.1", - "web3-utils": "1.8.1" + "web3-utils": "1.10.4" }, "dependencies": { "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", "peer": true } } }, "web3-eth-personal": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.8.1.tgz", - "integrity": "sha512-myIYMvj7SDIoV9vE5BkVdon3pya1WinaXItugoii2VoTcQNPOtBxmYVH+XS5ErzCJlnxzphpQrkywyY64bbbCA==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-eth-personal/-/web3-eth-personal-1.10.4.tgz", + "integrity": "sha512-BRa/hs6jU1hKHz+AC/YkM71RP3f0Yci1dPk4paOic53R4ZZG4MgwKRkJhgt3/GPuPliwS46f/i5A7fEGBT4F9w==", "peer": true, "requires": { "@types/node": "^12.12.6", - "web3-core": "1.8.1", - "web3-core-helpers": "1.8.1", - "web3-core-method": "1.8.1", - "web3-net": "1.8.1", - "web3-utils": "1.8.1" + "web3-core": "1.10.4", + "web3-core-helpers": "1.10.4", + "web3-core-method": "1.10.4", + "web3-net": "1.10.4", + "web3-utils": "1.10.4" }, "dependencies": { "@types/node": { @@ -90984,46 +95483,88 @@ } }, "web3-net": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.8.1.tgz", - "integrity": "sha512-LyEJAwogdFo0UAXZqoSJGFjopdt+kLw0P00FSZn2yszbgcoI7EwC+nXiOsEe12xz4LqpYLOtbR7+gxgiTVjjHQ==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-net/-/web3-net-1.10.4.tgz", + "integrity": "sha512-mKINnhOOnZ4koA+yV2OT5s5ztVjIx7IY9a03w6s+yao/BUn+Luuty0/keNemZxTr1E8Ehvtn28vbOtW7Ids+Ow==", "peer": true, "requires": { - "web3-core": "1.8.1", - "web3-core-method": "1.8.1", - "web3-utils": "1.8.1" + "web3-core": "1.10.4", + "web3-core-method": "1.10.4", + "web3-utils": "1.10.4" } }, "web3-providers-http": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.8.1.tgz", - "integrity": "sha512-1Zyts4O9W/UNEPkp+jyL19Jc3D15S4yp8xuLTjVhcUEAlHo24NDWEKxtZGUuHk4HrKL2gp8OlsDbJ7MM+ESDgg==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-providers-http/-/web3-providers-http-1.10.4.tgz", + "integrity": "sha512-m2P5Idc8hdiO0l60O6DSCPw0kw64Zgi0pMjbEFRmxKIck2Py57RQMu4bxvkxJwkF06SlGaEQF8rFZBmuX7aagQ==", "peer": true, "requires": { - "abortcontroller-polyfill": "^1.7.3", - "cross-fetch": "^3.1.4", + "abortcontroller-polyfill": "^1.7.5", + "cross-fetch": "^4.0.0", "es6-promise": "^4.2.8", - "web3-core-helpers": "1.8.1" + "web3-core-helpers": "1.10.4" + }, + "dependencies": { + "cross-fetch": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.1.0.tgz", + "integrity": "sha512-uKm5PU+MHTootlWEY+mZ4vvXoCn4fLQxT9dSc1sXVMSFkINTJVN8cAQROpwcKm8bJ/c7rgZVIBWzH5T78sNZZw==", + "peer": true, + "requires": { + "node-fetch": "^2.7.0" + } + }, + "node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "peer": true, + "requires": { + "whatwg-url": "^5.0.0" + } + }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "peer": true + }, + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "peer": true + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "peer": true, + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + } } }, "web3-providers-ipc": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.8.1.tgz", - "integrity": "sha512-nw/W5nclvi+P2z2dYkLWReKLnocStflWqFl+qjtv0xn3MrUTyXMzSF0+61i77+16xFsTgzo4wS/NWIOVkR0EFA==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-providers-ipc/-/web3-providers-ipc-1.10.4.tgz", + "integrity": "sha512-YRF/bpQk9z3WwjT+A6FI/GmWRCASgd+gC0si7f9zbBWLXjwzYAKG73bQBaFRAHex1hl4CVcM5WUMaQXf3Opeuw==", "peer": true, "requires": { "oboe": "2.1.5", - "web3-core-helpers": "1.8.1" + "web3-core-helpers": "1.10.4" } }, "web3-providers-ws": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.8.1.tgz", - "integrity": "sha512-TNefIDAMpdx57+YdWpYZ/xdofS0P+FfKaDYXhn24ie/tH9G+AB+UBSOKnjN0KSadcRSCMBwGPRiEmNHPavZdsA==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-providers-ws/-/web3-providers-ws-1.10.4.tgz", + "integrity": "sha512-j3FBMifyuFFmUIPVQR4pj+t5ILhAexAui0opgcpu9R5LxQrLRUZxHSnU+YO25UycSOa/NAX8A+qkqZNpcFAlxA==", "peer": true, "requires": { "eventemitter3": "4.0.4", - "web3-core-helpers": "1.8.1", + "web3-core-helpers": "1.10.4", "websocket": "^1.0.32" }, "dependencies": { @@ -91036,37 +95577,86 @@ } }, "web3-shh": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.8.1.tgz", - "integrity": "sha512-sqHgarnfcY2Qt3PYS4R6YveHrDy7hmL09yeLLHHCI+RKirmjLVqV0rc5LJWUtlbYI+kDoa5gbgde489M9ZAC0g==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-shh/-/web3-shh-1.10.4.tgz", + "integrity": "sha512-cOH6iFFM71lCNwSQrC3niqDXagMqrdfFW85hC9PFUrAr3PUrIem8TNstTc3xna2bwZeWG6OBy99xSIhBvyIACw==", "peer": true, "requires": { - "web3-core": "1.8.1", - "web3-core-method": "1.8.1", - "web3-core-subscriptions": "1.8.1", - "web3-net": "1.8.1" + "web3-core": "1.10.4", + "web3-core-method": "1.10.4", + "web3-core-subscriptions": "1.10.4", + "web3-net": "1.10.4" } }, "web3-utils": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.8.1.tgz", - "integrity": "sha512-LgnM9p6V7rHHUGfpMZod+NST8cRfGzJ1BTXAyNo7A9cJX9LczBfSRxJp+U/GInYe9mby40t3v22AJdlELibnsQ==", + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/web3-utils/-/web3-utils-1.10.4.tgz", + "integrity": "sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==", "peer": true, "requires": { + "@ethereumjs/util": "^8.1.0", "bn.js": "^5.2.1", "ethereum-bloom-filters": "^1.0.6", - "ethereumjs-util": "^7.1.0", + "ethereum-cryptography": "^2.1.2", "ethjs-unit": "0.1.6", "number-to-bn": "1.7.0", "randombytes": "^2.1.0", "utf8": "3.0.0" }, "dependencies": { + "@noble/curves": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.4.2.tgz", + "integrity": "sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==", + "peer": true, + "requires": { + "@noble/hashes": "1.4.0" + } + }, + "@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", + "peer": true + }, + "@scure/bip32": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.4.0.tgz", + "integrity": "sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==", + "peer": true, + "requires": { + "@noble/curves": "~1.4.0", + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + } + }, + "@scure/bip39": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.3.0.tgz", + "integrity": "sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==", + "peer": true, + "requires": { + "@noble/hashes": "~1.4.0", + "@scure/base": "~1.1.6" + } + }, "bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", "peer": true + }, + "ethereum-cryptography": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-2.2.1.tgz", + "integrity": "sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==", + "peer": true, + "requires": { + "@noble/curves": "1.4.2", + "@noble/hashes": "1.4.0", + "@scure/bip32": "1.4.0", + "@scure/bip39": "1.3.0" + } } } }, @@ -91476,8 +96066,7 @@ "xmlchars": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==" }, "xtend": { "version": "4.0.2", diff --git a/package.json b/package.json index 1f3d37f3f..e06fface7 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,7 @@ "description": "🧜‍♀️ THE Data Market for Ocean Protocol.", "version": "1.0.0", "license": "Apache-2.0", + "type": "module", "homepage": "https://market.oceanprotocol.com", "scripts": { "start": "npm run pregenerate && next dev -p 8000", @@ -35,9 +36,12 @@ "@oceanprotocol/typographies": "^0.1.0", "@oceanprotocol/use-dark-mode": "^2.4.3", "@orbisclub/orbis-sdk": "^0.4.89", + "@rdfjs/dataset": "^2.0.2", + "@rdfjs/formats-common": "^3.1.0", "@tippyjs/react": "^4.2.6", "@uiw/react-codemirror": "4.19.5", "@urql/exchange-refocus": "^1.0.0", + "@zazuko/env-node": "^2.1.4", "axios": "^1.7.2", "classnames": "^2.5.1", "connectkit": "^1.3.0", @@ -53,7 +57,8 @@ "js-cookie": "^3.0.5", "match-sorter": "^6.3.4", "myetherwallet-blockies": "^0.1.1", - "next": "^14.2.3", + "next": "^15.2.3", + "next-transpile-modules": "^10.0.1", "npm": "^10.8.0", "posthog-js": "^1.135.2", "query-string": "^9.0.0", @@ -131,6 +136,13 @@ "engines": { "node": "18" }, + "browser": { + "fs": false, + "path": false, + "os": false, + "net": false, + "tls": false + }, "browserslist": [ ">0.2%", "not dead", diff --git a/scripts/barge-env.sh b/scripts/barge-env.sh index 3dfdd23e5..f957ea9be 100644 --- a/scripts/barge-env.sh +++ b/scripts/barge-env.sh @@ -1,2 +1,2 @@ # Set -node ./scripts/load-development-addresses.js \ No newline at end of file +node ./scripts/load-development-addresses.cjs \ No newline at end of file diff --git a/scripts/load-development-addresses.js b/scripts/load-development-addresses.cjs similarity index 96% rename from scripts/load-development-addresses.js rename to scripts/load-development-addresses.cjs index d7bd883a4..71af6749b 100644 --- a/scripts/load-development-addresses.js +++ b/scripts/load-development-addresses.cjs @@ -74,3 +74,4 @@ updateEnvVariable( '#NEXT_PUBLIC_METADATACACHE_URI', '"http://127.0.0.1:5000" # only for mac' ) +updateEnvVariable('#NEXT_PUBLIC_ROUTER_FACTORY_ADDRESS', addresses.Router) diff --git a/scripts/pregenerate.sh b/scripts/pregenerate.sh index 6544e2f6d..a51390f9c 100755 --- a/scripts/pregenerate.sh +++ b/scripts/pregenerate.sh @@ -1,10 +1,10 @@ #!/usr/bin/env bash # Write out repo metadata -node ./scripts/write-repo-metadata > content/repo-metadata.json +node ./scripts/write-repo-metadata.cjs > content/repo-metadata.json # Generate Apollo typings npm run codegen:apollo # Fetch EVM networks metadata -node ./scripts/write-networks-metadata > content/networks-metadata.json \ No newline at end of file +node ./scripts/write-networks-metadata.cjs > content/networks-metadata.json \ No newline at end of file diff --git a/scripts/write-networks-metadata.js b/scripts/write-networks-metadata.cjs similarity index 100% rename from scripts/write-networks-metadata.js rename to scripts/write-networks-metadata.cjs diff --git a/scripts/write-repo-metadata.js b/scripts/write-repo-metadata.cjs similarity index 100% rename from scripts/write-repo-metadata.js rename to scripts/write-repo-metadata.cjs diff --git a/src/@context/Prices/_constants.ts b/src/@context/Prices/_constants.ts index ab21a99cc..129f50484 100644 --- a/src/@context/Prices/_constants.ts +++ b/src/@context/Prices/_constants.ts @@ -1,5 +1,5 @@ import { Prices } from './_types' -import { coingeckoTokenIds } from '../../../app.config' +import { coingeckoTokenIds } from '../../../app.config.cjs' export const initialData: Prices = coingeckoTokenIds.map((tokenId) => ({ [tokenId]: { diff --git a/src/@utils/accessDetailsAndPricing.ts b/src/@utils/accessDetailsAndPricing.ts index 00a9da385..2cfcdeb26 100644 --- a/src/@utils/accessDetailsAndPricing.ts +++ b/src/@utils/accessDetailsAndPricing.ts @@ -17,7 +17,7 @@ import { consumeMarketOrderFee, publisherMarketOrderFee, customProviderUrl -} from '../../app.config' +} from '../../app.config.cjs' import { Signer } from 'ethers' import { toast } from 'react-toastify' diff --git a/src/@utils/nft.ts b/src/@utils/nft.ts index 84e3eb455..aaeed292e 100644 --- a/src/@utils/nft.ts +++ b/src/@utils/nft.ts @@ -10,7 +10,7 @@ import { getErrorMessage } from '@oceanprotocol/lib' import { SvgWaves } from './SvgWaves' -import { customProviderUrl } from '../../app.config' +import { customProviderUrl } from '../../app.config.cjs' import { Signer, ethers } from 'ethers' import { toast } from 'react-toastify' diff --git a/src/@utils/ocean/fixedRateExchange.ts b/src/@utils/ocean/fixedRateExchange.ts index 0ed016a0d..532ae60d7 100644 --- a/src/@utils/ocean/fixedRateExchange.ts +++ b/src/@utils/ocean/fixedRateExchange.ts @@ -7,7 +7,7 @@ import { import { ethers, Signer } from 'ethers' import abiFre from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' import { getOceanConfig } from '.' -import { consumeMarketFixedSwapFee } from '../../../app.config' +import { consumeMarketFixedSwapFee } from '../../../app.config.cjs' import { getDummySigner } from '@utils/wallet' /** diff --git a/src/@utils/order.ts b/src/@utils/order.ts index 83cca1dec..e18888557 100644 --- a/src/@utils/order.ts +++ b/src/@utils/order.ts @@ -18,7 +18,7 @@ import { consumeMarketOrderFee, consumeMarketFixedSwapFee, customProviderUrl -} from '../../app.config' +} from '../../app.config.cjs' import { toast } from 'react-toastify' async function initializeProvider( diff --git a/src/@utils/provider.ts b/src/@utils/provider.ts index c624a232a..0c4940ae6 100644 --- a/src/@utils/provider.ts +++ b/src/@utils/provider.ts @@ -13,7 +13,7 @@ import { getErrorMessage } from '@oceanprotocol/lib' // if customProviderUrl is set, we need to call provider using this custom endpoint -import { customProviderUrl } from '../../app.config' +import { customProviderUrl } from '../../app.config.cjs' import { KeyValuePair } from '@shared/FormInput/InputElement/KeyValueInput' import { Signer } from 'ethers' import { toast } from 'react-toastify' diff --git a/src/@utils/subgraph.ts b/src/@utils/subgraph.ts index 00f7d16fb..6033796f7 100644 --- a/src/@utils/subgraph.ts +++ b/src/@utils/subgraph.ts @@ -4,7 +4,7 @@ import { getUrqlClientInstance } from '@context/UrqlProvider' import { getOceanConfig } from './ocean' import { OrdersData_orders as OrdersData } from '../@types/subgraph/OrdersData' import { OpcFeesQuery as OpcFeesData } from '../@types/subgraph/OpcFeesQuery' -import appConfig from '../../app.config' +import appConfig from '../../app.config.cjs' const UserTokenOrders = gql` query OrdersData($user: String!) { diff --git a/src/components/@shared/FormInput/InputElement/TagsAutoComplete/index.tsx b/src/components/@shared/FormInput/InputElement/TagsAutoComplete/index.tsx index cb6f5b9b3..8cb8709cb 100644 --- a/src/components/@shared/FormInput/InputElement/TagsAutoComplete/index.tsx +++ b/src/components/@shared/FormInput/InputElement/TagsAutoComplete/index.tsx @@ -4,7 +4,7 @@ import { OnChangeValue } from 'react-select' import { useField } from 'formik' import { InputProps } from '../..' import { getTagsList } from '@utils/aquarius' -import { chainIds } from '../../../../../../app.config' +import { chainIds } from '../../../../../../app.config.cjs' import { useCancelToken } from '@hooks/useCancelToken' import styles from './index.module.css' import { matchSorter } from 'match-sorter' diff --git a/src/components/@shared/FormInput/InputElement/index.tsx b/src/components/@shared/FormInput/InputElement/index.tsx index a803015e2..dd7a2ac30 100644 --- a/src/components/@shared/FormInput/InputElement/index.tsx +++ b/src/components/@shared/FormInput/InputElement/index.tsx @@ -14,7 +14,7 @@ import ContainerInput from '@shared/FormInput/InputElement/ContainerInput' import TagsAutoComplete from './TagsAutoComplete' import TabsFile from '@shared/atoms/TabsFile' import useDarkMode from '@oceanprotocol/use-dark-mode' -import appConfig from '../../../../../app.config' +import appConfig from '../../../../../app.config.cjs' import { extensions, oceanTheme } from '@utils/codemirror' import { ConsumerParameters } from './ConsumerParameters' diff --git a/src/components/Publish/_constants.tsx b/src/components/Publish/_constants.tsx index 4cc72b30a..d0ed49777 100644 --- a/src/components/Publish/_constants.tsx +++ b/src/components/Publish/_constants.tsx @@ -1,5 +1,5 @@ import React from 'react' -import { allowFixedPricing } from '../../../app.config' +import { allowFixedPricing } from '../../../app.config.cjs' import { FormPublishData, MetadataAlgorithmContainer, diff --git a/src/components/Publish/_utils.ts b/src/components/Publish/_utils.ts index 2a02a9054..5a4c45a06 100644 --- a/src/components/Publish/_utils.ts +++ b/src/components/Publish/_utils.ts @@ -31,7 +31,7 @@ import { publisherMarketFixedSwapFee, defaultDatatokenTemplateIndex, customProviderUrl -} from '../../../app.config' +} from '../../../app.config.cjs' import { sanitizeUrl } from '@utils/url' import { getContainerChecksum } from '@utils/docker' import { parseEther } from 'ethers/lib/utils' diff --git a/src/components/Publish/index.tsx b/src/components/Publish/index.tsx index 674b55274..b2f49929b 100644 --- a/src/components/Publish/index.tsx +++ b/src/components/Publish/index.tsx @@ -23,7 +23,7 @@ import { getOceanConfig } from '@utils/ocean' import { validationSchema } from './_validation' import { useAbortController } from '@hooks/useAbortController' import { setNFTMetadataAndTokenURI } from '@utils/nft' -import { customProviderUrl } from '../../../app.config' +import { customProviderUrl } from '../../../app.config.cjs' import { useAccount, useNetwork, useSigner } from 'wagmi' export default function PublishPage({ From 7b1e305a7a8b645c1ffb6f69884639dcd38d4d7e Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Wed, 21 May 2025 10:51:52 +0300 Subject: [PATCH 03/60] shifting to OPF node instance insted of subgraph --- src/@context/MarketMetadata/index.tsx | 56 ++------ src/@context/Profile/index.tsx | 40 ++++-- src/@hooks/useRouter.ts | 129 ++++++++++++++++++ .../factoryRouter/FactoryRouter.type.ts | 13 ++ src/@utils/aquarius/index.ts | 66 ++++++--- src/@utils/ocean/index.ts | 3 +- .../@shared/Web3Feedback/index.test.tsx | 15 -- src/components/@shared/Web3Feedback/index.tsx | 17 +-- src/components/@shared/atoms/Table/index.tsx | 2 +- src/components/@shared/atoms/Time/index.tsx | 2 +- src/components/Profile/Header/Stats.tsx | 3 +- src/components/Profile/History/Downloads.tsx | 11 +- src/components/Publish/Pricing/Fees.tsx | 19 ++- 13 files changed, 255 insertions(+), 121 deletions(-) create mode 100644 src/@hooks/useRouter.ts create mode 100644 src/@types/factoryRouter/FactoryRouter.type.ts diff --git a/src/@context/MarketMetadata/index.tsx b/src/@context/MarketMetadata/index.tsx index 1623d3fa3..7510ad7f5 100644 --- a/src/@context/MarketMetadata/index.tsx +++ b/src/@context/MarketMetadata/index.tsx @@ -7,19 +7,12 @@ import React, { useEffect, useState } from 'react' -import { OpcQuery } from '../../../src/@types/subgraph/OpcQuery' -import { OperationResult } from 'urql' -import { opcQuery } from './_queries' import { MarketMetadataProviderValue, OpcFee } from './_types' import siteContent from '../../../content/site.json' -import appConfig from '../../../app.config' -import { - fetchData, - getQueryContext, - getOpcsApprovedTokens -} from '@utils/subgraph' +import appConfig from '../../../app.config.cjs' import { LoggerInstance } from '@oceanprotocol/lib' -import { useNetwork, useConnect } from 'wagmi' +import { useConnect } from 'wagmi' +import useFactoryRouter from '@hooks/useRouter' const MarketMetadataContext = createContext({} as MarketMetadataProviderValue) @@ -29,29 +22,14 @@ function MarketMetadataProvider({ children: ReactNode }): ReactElement { const { isLoading } = useConnect() - const { chain } = useNetwork() + const { signer, getOpcData } = useFactoryRouter() const [opcFees, setOpcFees] = useState() const [approvedBaseTokens, setApprovedBaseTokens] = useState() useEffect(() => { - async function getOpcData() { - const opcData = [] - for (let i = 0; i < appConfig.chainIdsSupported.length; i++) { - const response: OperationResult = await fetchData( - opcQuery, - null, - getQueryContext(appConfig.chainIdsSupported[i]) - ) - opcData.push({ - chainId: appConfig.chainIdsSupported[i], - approvedTokens: response.data?.opc?.approvedTokens?.map( - (token) => token.address - ), - swapApprovedFee: response.data?.opc?.swapOceanFee, - swapNotApprovedFee: response.data?.opc?.swapNonOceanFee - } as OpcFee) - } + async function getData() { + const opcData = await getOpcData(appConfig.chainIdsSupported) LoggerInstance.log('[MarketMetadata] Got new data.', { opcFees: opcData, siteContent, @@ -59,8 +37,10 @@ function MarketMetadataProvider({ }) setOpcFees(opcData) } - getOpcData() - }, []) + if (signer) { + getData() + } + }, [getOpcData, signer]) const getOpcFeeForToken = useCallback( (tokenAddress: string, chainId: number): string => { @@ -76,23 +56,11 @@ function MarketMetadataProvider({ // ----------------------------------- // Get and set approved base tokens list // ----------------------------------- - const getApprovedBaseTokens = useCallback(async (chainId: number) => { - try { - const approvedTokensList = await getOpcsApprovedTokens(chainId) - setApprovedBaseTokens(approvedTokensList) - LoggerInstance.log( - '[MarketMetadata] Approved baseTokens', - approvedTokensList - ) - } catch (error) { - LoggerInstance.error('[MarketMetadata] Error: ', error.message) - } - }, []) useEffect(() => { if (isLoading) return - getApprovedBaseTokens(chain?.id || 1) - }, [chain?.id, getApprovedBaseTokens, isLoading]) + setApprovedBaseTokens(approvedBaseTokens) + }, [isLoading, approvedBaseTokens]) return ( void } const ProfileContext = createContext({} as ProfileProviderValue) @@ -152,35 +153,47 @@ function ProfileProvider({ const [downloadsTotal, setDownloadsTotal] = useState(0) const [isDownloadsLoading, setIsDownloadsLoading] = useState() const [downloadsInterval, setDownloadsInterval] = useState() + const [currentPage, setCurrentPage] = useState(1) const fetchDownloads = useCallback( - async (cancelToken: CancelToken) => { + async (cancelToken: CancelToken, page = 1) => { if (!accountId || !chainIds) return const dtList: string[] = [] - const tokenOrders = await getUserTokenOrders(accountId, chainIds) - - for (let i = 0; i < tokenOrders?.length; i++) { - dtList.push(tokenOrders[i].datatoken.address) + const orders = await getUserOrders(accountId, cancelToken) + for (let i = 0; i < orders?.results?.length; i++) { + dtList.push(orders.results[i].datatokenAddress) } - const downloads = await getDownloadAssets( + const { downloadedAssets, totalResults } = await getDownloadAssets( dtList, - tokenOrders, + // tokenOrders, chainIds, cancelToken, - ownAccount + ownAccount, + page ) - setDownloads(downloads) - setDownloadsTotal(downloads.length) + setDownloads(downloadedAssets) + setDownloadsTotal(totalResults) LoggerInstance.log( - `[profile] Fetched ${downloads.length} download orders.`, + `[profile] Fetched ${downloadedAssets.length} download orders.`, downloads ) }, - [accountId, chainIds, ownAccount] + [accountId, chainIds, downloads, ownAccount] ) + const handlePageChange = (page: number) => { + setCurrentPage(page) + } + + useEffect(() => { + const cancelToken = axios.CancelToken.source() + fetchDownloads(cancelToken.token, currentPage) + + return () => cancelToken.cancel('Request cancelled.') + }, [currentPage, fetchDownloads]) + useEffect(() => { const cancelTokenSource = axios.CancelToken.source() @@ -241,6 +254,7 @@ function ProfileProvider({ downloads, downloadsTotal, isDownloadsLoading, + handlePageChange, ownAccount, sales }} diff --git a/src/@hooks/useRouter.ts b/src/@hooks/useRouter.ts new file mode 100644 index 000000000..45ce8a581 --- /dev/null +++ b/src/@hooks/useRouter.ts @@ -0,0 +1,129 @@ +import { useEffect, useState } from 'react' +import { Router as FactoryRouter } from '@oceanprotocol/lib' +import { getOceanConfig } from '@utils/ocean' +import { useNetwork, useSigner } from 'wagmi' +import { ethers } from 'ethers' +import { Fees, TokenDetails } from '../@types/factoryRouter/FactoryRouter.type' +import { OpcFee } from '@context/MarketMetadata/_types' + +function useFactoryRouter() { + const { chain } = useNetwork() + const { data: signer } = useSigner() + const [factoryRouter, setFactoryRouter] = useState() + const [approvedTokens, setApprovedTokens] = useState([]) + const [fees, setFees] = useState({ + swapOceanFee: '0', + swapNonOceanFee: '0', + consumeFee: '0', + providerFee: '0' + }) + + useEffect(() => { + if (!signer || !chain?.id) return + const config = getOceanConfig(chain.id) + setFactoryRouter(new FactoryRouter(config?.routerFactoryAddress, signer)) + }, [signer, chain?.id]) + + const fetchFees = async (router: FactoryRouter) => { + try { + const [opcFees, consumeFee, providerFee] = await Promise.all([ + router.contract.getOPCFees(), + router.contract.getOPCConsumeFee(), + router.contract.getOPCProviderFee() + ]) + + return { + swapOceanFee: ethers.utils.formatUnits(opcFees[0], 18), + swapNonOceanFee: ethers.utils.formatUnits(opcFees[1], 18), + consumeFee: ethers.utils.formatUnits(consumeFee, 18), + providerFee: ethers.utils.formatUnits(providerFee, 18) + } + } catch (error) { + console.error('Error fetching fees:', error) + } + } + + useEffect(() => { + const fetchData = async () => { + const result = await fetchFees(factoryRouter) + setFees(result) + } + if (factoryRouter) { + fetchData() + } + }, [factoryRouter]) + + const fetchTokenDetails = async (tokenAddress: string) => { + const tokenAbi = [ + 'function decimals() view returns (uint8)', + 'function symbol() view returns (string)', + 'function name() view returns (string)' + ] + const tokenContract = new ethers.Contract( + tokenAddress, + tokenAbi, + signer.provider + ) + + const [decimals, symbol, name] = await Promise.all([ + tokenContract.decimals(), + tokenContract.symbol(), + tokenContract.name() + ]) + + return { address: tokenAddress, decimals, symbol, name } + } + + useEffect(() => { + const fetchApprovedTokens = async () => { + if (!factoryRouter) return + + try { + const approvedTokens = await factoryRouter.contract.getApprovedTokens() + const tokenDetails = await Promise.all( + approvedTokens.map((tokenAddress) => fetchTokenDetails(tokenAddress)) + ) + setApprovedTokens(tokenDetails) + } catch (error) { + console.error('Error fetching approved tokens:', error) + } + } + + if (factoryRouter) { + fetchApprovedTokens() + } + }, [factoryRouter, fetchTokenDetails]) + + const getOpcData = async (chainIds: number[]) => { + const validChainIds = chainIds.filter((chainId) => { + const config = getOceanConfig(chainId) + return !!config?.routerFactoryAddress + }) + const opcData = await Promise.all( + validChainIds.map(async (chainId) => { + const config = getOceanConfig(chainId) + const factory = new FactoryRouter(config?.routerFactoryAddress, signer) + const fees = await fetchFees(factory) + const approvedTokensAddresses = + await factory.contract.getApprovedTokens() + const tokenDetails: TokenDetails[] = await Promise.all( + approvedTokensAddresses.map((tokenAddress) => + fetchTokenDetails(tokenAddress) + ) + ) + return { + chainId, + approvedTokens: tokenDetails.map((token) => token.address), + swapApprovedFee: fees.swapOceanFee, + swapNotApprovedFee: fees.swapNonOceanFee + } + }) + ) + + return opcData as OpcFee[] + } + + return { approvedTokens, fees, signer, getOpcData } +} + +export default useFactoryRouter diff --git a/src/@types/factoryRouter/FactoryRouter.type.ts b/src/@types/factoryRouter/FactoryRouter.type.ts new file mode 100644 index 000000000..5f31117d8 --- /dev/null +++ b/src/@types/factoryRouter/FactoryRouter.type.ts @@ -0,0 +1,13 @@ +export type TokenDetails = { + address: string + decimals: number + symbol: string + name: string +} + +export type Fees = { + swapOceanFee: string + swapNonOceanFee: string + consumeFee: string + providerFee: string +} diff --git a/src/@utils/aquarius/index.ts b/src/@utils/aquarius/index.ts index 72973c1c6..d774d9a09 100644 --- a/src/@utils/aquarius/index.ts +++ b/src/@utils/aquarius/index.ts @@ -1,7 +1,7 @@ import { Asset, LoggerInstance } from '@oceanprotocol/lib' import axios, { CancelToken, AxiosResponse } from 'axios' import { OrdersData_orders as OrdersData } from '../../@types/subgraph/OrdersData' -import { metadataCacheUri } from '../../../app.config' +import { metadataCacheUri } from '../../../app.config.cjs' import { SortDirectionOptions, SortTermOptions @@ -351,43 +351,75 @@ export async function getUserSales( } } +export async function getUserOrders( + accountId: string, + cancelToken: CancelToken, + page?: number +): Promise { + const filters: FilterTerm[] = [] + filters.push(getFilterTerm('consumer.keyword', accountId)) + filters.push({ + exists: { + field: 'datatokenAddress' + } + }) + const baseQueryparams = { + filters, + ignorePurgatory: true, + esPaginationOptions: { + from: Number(page) - 1 || 0, + size: 9 + } + } as BaseQueryParams + const query = generateBaseQuery(baseQueryparams) + try { + return queryMetadata(query, cancelToken) + } catch (error) { + if (axios.isCancel(error)) { + LoggerInstance.log(error.message) + } else { + LoggerInstance.error(error.message) + } + } +} + export async function getDownloadAssets( dtList: string[], - tokenOrders: OrdersData[], chainIds: number[], cancelToken: CancelToken, - ignoreState = false -): Promise { + ignoreState = false, + page?: number +): Promise<{ downloadedAssets: DownloadedAsset[]; totalResults: number }> { + const filters: FilterTerm[] = [] + filters.push(getFilterTerm('services.datatokenAddress.keyword', dtList)) + filters.push(getFilterTerm('services.type', 'access')) const baseQueryparams = { chainIds, - filters: [ - getFilterTerm('services.datatokenAddress', dtList), - getFilterTerm('services.type', 'access') - ], + filters, ignorePurgatory: true, - ignoreState + ignoreState, + esPaginationOptions: { + from: Number(page) - 1 || 0, + size: 9 + } } as BaseQueryParams const query = generateBaseQuery(baseQueryparams) try { const result = await queryMetadata(query, cancelToken) const downloadedAssets: DownloadedAsset[] = result.results .map((asset) => { - const order = tokenOrders.find( - ({ datatoken }) => - datatoken?.address.toLowerCase() === - asset.services[0].datatokenAddress.toLowerCase() - ) + const timestamp = new Date(asset.event.datetime).getTime() return { asset, networkId: asset.chainId, - dtSymbol: order?.datatoken?.symbol, - timestamp: order?.createdTimestamp + dtSymbol: asset?.datatokens[0]?.symbol, + timestamp } }) .sort((a, b) => b.timestamp - a.timestamp) - return downloadedAssets + return { downloadedAssets, totalResults: result.totalResults } } catch (error) { if (axios.isCancel(error)) { LoggerInstance.log(error.message) diff --git a/src/@utils/ocean/index.ts b/src/@utils/ocean/index.ts index 8f92e29b2..9335834a3 100644 --- a/src/@utils/ocean/index.ts +++ b/src/@utils/ocean/index.ts @@ -20,7 +20,8 @@ export function sanitizeDevelopmentConfig(config: Config): Config { process.env.NEXT_PUBLIC_FIXED_RATE_EXCHANGE_ADDRESS, dispenserAddress: process.env.NEXT_PUBLIC_DISPENSER_ADDRESS, oceanTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS, - nftFactoryAddress: process.env.NEXT_PUBLIC_NFT_FACTORY_ADDRESS + nftFactoryAddress: process.env.NEXT_PUBLIC_NFT_FACTORY_ADDRESS, + routerFactoryAddress: process.env.NEXT_PUBLIC_ROUTER_FACTORY_ADDRESS } as Config } diff --git a/src/components/@shared/Web3Feedback/index.test.tsx b/src/components/@shared/Web3Feedback/index.test.tsx index 46333ce47..0a181f8e9 100644 --- a/src/components/@shared/Web3Feedback/index.test.tsx +++ b/src/components/@shared/Web3Feedback/index.test.tsx @@ -1,17 +1,8 @@ import { render, screen } from '@testing-library/react' import React from 'react' import Web3Feedback from './' -import { useGraphSyncStatus } from '../../../@hooks/useGraphSyncStatus' - -jest.mock('../../../@hooks/useGraphSyncStatus') describe('@shared/Web3Feedback', () => { - ;(useGraphSyncStatus as jest.Mock).mockImplementation(() => ({ - isGraphSynced: true, - blockGraph: '333333', - blockHead: '333333' - })) - it('renders without crashing', () => { render() }) @@ -26,9 +17,6 @@ describe('@shared/Web3Feedback', () => { }) it('renders isGraphSynced === false', async () => { - ;(useGraphSyncStatus as jest.Mock).mockImplementation(() => ({ - isGraphSynced: false - })) render( ) @@ -41,9 +29,6 @@ describe('@shared/Web3Feedback', () => { }) it('do nothing if nothing to show', async () => { - ;(useGraphSyncStatus as jest.Mock).mockImplementation(() => ({ - isGraphSynced: true - })) render( ) diff --git a/src/components/@shared/Web3Feedback/index.tsx b/src/components/@shared/Web3Feedback/index.tsx index fc007cea2..1c1885f02 100644 --- a/src/components/@shared/Web3Feedback/index.tsx +++ b/src/components/@shared/Web3Feedback/index.tsx @@ -2,7 +2,6 @@ import React, { ReactElement, useEffect, useState } from 'react' import Status from '@shared/atoms/Status' import styles from './index.module.css' import WalletNetworkSwitcher from '../WalletNetworkSwitcher' -import { useGraphSyncStatus } from '@hooks/useGraphSyncStatus' export declare type Web3Error = { status: 'error' | 'warning' | 'success' @@ -11,7 +10,6 @@ export declare type Web3Error = { } export default function Web3Feedback({ - networkId, accountId, isAssetNetwork }: { @@ -19,17 +17,14 @@ export default function Web3Feedback({ accountId: string isAssetNetwork?: boolean }): ReactElement { - const { isGraphSynced, blockGraph, blockHead } = useGraphSyncStatus(networkId) const [state, setState] = useState() const [title, setTitle] = useState() const [message, setMessage] = useState() const [showFeedback, setShowFeedback] = useState(false) useEffect(() => { - setShowFeedback( - !accountId || isAssetNetwork === false || isGraphSynced === false - ) - if (accountId && isAssetNetwork && isGraphSynced) return + setShowFeedback(!accountId || isAssetNetwork === false) + if (accountId && isAssetNetwork) return if (!accountId) { setState('error') setTitle('No account connected') @@ -38,18 +33,12 @@ export default function Web3Feedback({ setState('error') setTitle('Not connected to asset network') setMessage('Please connect your wallet.') - } else if (isGraphSynced === false) { - setState('warning') - setTitle('Data out of sync') - setMessage( - `The data for this network has only synced to Ethereum block ${blockGraph} (out of ${blockHead}). Transactions may fail! Please check back soon.` - ) } else { setState('warning') setTitle('Something went wrong.') setMessage('Something went wrong.') } - }, [accountId, isGraphSynced, isAssetNetwork]) + }, [accountId, isAssetNetwork]) return showFeedback ? (
diff --git a/src/components/@shared/atoms/Table/index.tsx b/src/components/@shared/atoms/Table/index.tsx index b5aaace3d..ff179193e 100644 --- a/src/components/@shared/atoms/Table/index.tsx +++ b/src/components/@shared/atoms/Table/index.tsx @@ -38,7 +38,7 @@ export default function Table({ = 9} + pagination={pagination || (data && data.length >= paginationPerPage)} paginationPerPage={paginationPerPage || 10} noDataComponent={} progressPending={isLoading} diff --git a/src/components/@shared/atoms/Time/index.tsx b/src/components/@shared/atoms/Time/index.tsx index 840c6bfb7..d2bea47e4 100644 --- a/src/components/@shared/atoms/Time/index.tsx +++ b/src/components/@shared/atoms/Time/index.tsx @@ -22,7 +22,7 @@ export default function Time({ useEffect(() => { if (!date) return - const dateNew = isUnix ? new Date(Number(date) * 1000) : new Date(date) + const dateNew = isUnix ? new Date(Number(date)) : new Date(date) setDateIso(dateNew.toISOString()) setDateNew(dateNew) }, [date, isUnix]) diff --git a/src/components/Profile/Header/Stats.tsx b/src/components/Profile/Header/Stats.tsx index d9c01aa12..c7e22e3bf 100644 --- a/src/components/Profile/Header/Stats.tsx +++ b/src/components/Profile/Header/Stats.tsx @@ -12,7 +12,7 @@ export default function Stats({ accountId: string }): ReactElement { const { chainIds } = useUserPreferences() - const { assets, assetsTotal, sales } = useProfile() + const { assets, assetsTotal, sales, downloadsTotal } = useProfile() const [totalSales, setTotalSales] = useState(0) @@ -56,6 +56,7 @@ export default function Stats({ value={sales < 0 ? 0 : sales} /> + ) } diff --git a/src/components/Profile/History/Downloads.tsx b/src/components/Profile/History/Downloads.tsx index 805f4c366..eed77aac8 100644 --- a/src/components/Profile/History/Downloads.tsx +++ b/src/components/Profile/History/Downloads.tsx @@ -1,4 +1,4 @@ -import React, { ReactElement } from 'react' +import React, { ReactElement, useEffect } from 'react' import Table, { TableOceanColumn } from '@shared/atoms/Table' import Time from '@shared/atoms/Time' import AssetTitle from '@shared/AssetListTitle' @@ -30,14 +30,19 @@ export default function ComputeDownloads({ }: { accountId: string }): ReactElement { - const { downloads, isDownloadsLoading } = useProfile() + const { downloads, downloadsTotal, isDownloadsLoading, handlePageChange } = + useProfile() const { chainIds } = useUserPreferences() return accountId ? ( diff --git a/src/components/Publish/Pricing/Fees.tsx b/src/components/Publish/Pricing/Fees.tsx index 17cca7231..7c3b54bba 100644 --- a/src/components/Publish/Pricing/Fees.tsx +++ b/src/components/Publish/Pricing/Fees.tsx @@ -2,11 +2,10 @@ import React, { ReactElement, useEffect, useState } from 'react' import Tooltip from '@shared/atoms/Tooltip' import styles from './Fees.module.css' import Input from '@shared/FormInput' -import { getOpcFees } from '@utils/subgraph' -import { OpcFeesQuery_opc as OpcFeesData } from '../../../@types/subgraph/OpcFeesQuery' import { useMarketMetadata } from '@context/MarketMetadata' import Decimal from 'decimal.js' import { useNetwork } from 'wagmi' +import useFactoryRouter from '@hooks/useRouter' const Default = ({ title, @@ -42,16 +41,14 @@ export default function Fees({ const [oceanCommunitySwapFee, setOceanCommunitySwapFee] = useState('') const { chain } = useNetwork() const { appConfig } = useMarketMetadata() - + const { fees } = useFactoryRouter() useEffect(() => { - getOpcFees(chain?.id || 1).then((response: OpcFeesData) => { - setOceanCommunitySwapFee( - response?.swapOceanFee - ? new Decimal(response.swapOceanFee).mul(100).toString() - : '0' - ) - }) - }, [chain?.id]) + setOceanCommunitySwapFee( + fees.swapOceanFee + ? new Decimal(fees.swapOceanFee).mul(100).toString() + : '0' + ) + }, [chain?.id, fees]) return ( <> From 87f966fef3c4144eaf89764b9a8447e21bd7fef2 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Wed, 21 May 2025 11:47:38 +0300 Subject: [PATCH 04/60] fixed npm install issue (updated peer dependencies) --- package-lock.json | 18 +++++++++--------- package.json | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index e2f95fe77..d3d3758d0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@codemirror/language": "^6.10.1", "@coingecko/cryptoformat": "^0.5.4", "@loadable/component": "^5.16.4", - "@next/third-parties": "^14.2.3", + "@next/third-parties": "^15.2.3", "@oceanprotocol/art": "^3.2.0", "@oceanprotocol/lib": "^4.0.1", "@oceanprotocol/typographies": "^0.1.0", @@ -6751,15 +6751,15 @@ } }, "node_modules/@next/third-parties": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-14.2.3.tgz", - "integrity": "sha512-j4E2xBSsEZq4VX2pVm3LpGltSwCxETic6glJWfHyYQvpoMdplCAYrQKpF+E9Gg3jfsrfmRAIdTE11m+biBCx1Q==", + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-15.3.2.tgz", + "integrity": "sha512-zE9xYkMKZ6gLbkP6lWt60yaeKB5r0A4eZhFKAhgik/eO+zzZPFkTy5K7+0ykgfB6MTkcend3BaDXZhz9KnDjYw==", "dependencies": { "third-party-capital": "1.0.20" }, "peerDependencies": { - "next": "^13.0.0 || ^14.0.0", - "react": "^18.2.0" + "next": "^13.0.0 || ^14.0.0 || ^15.0.0", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0" } }, "node_modules/@noble/curves": { @@ -59468,9 +59468,9 @@ "optional": true }, "@next/third-parties": { - "version": "14.2.3", - "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-14.2.3.tgz", - "integrity": "sha512-j4E2xBSsEZq4VX2pVm3LpGltSwCxETic6glJWfHyYQvpoMdplCAYrQKpF+E9Gg3jfsrfmRAIdTE11m+biBCx1Q==", + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/third-parties/-/third-parties-15.3.2.tgz", + "integrity": "sha512-zE9xYkMKZ6gLbkP6lWt60yaeKB5r0A4eZhFKAhgik/eO+zzZPFkTy5K7+0ykgfB6MTkcend3BaDXZhz9KnDjYw==", "requires": { "third-party-capital": "1.0.20" } diff --git a/package.json b/package.json index e06fface7..bc93e128b 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@codemirror/language": "^6.10.1", "@coingecko/cryptoformat": "^0.5.4", "@loadable/component": "^5.16.4", - "@next/third-parties": "^14.2.3", + "@next/third-parties": "^15.2.3", "@oceanprotocol/art": "^3.2.0", "@oceanprotocol/lib": "^4.0.1", "@oceanprotocol/typographies": "^0.1.0", From bec64ab589560c3a5b3b179885138e1132a60b35 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Thu, 22 May 2025 14:20:20 +0300 Subject: [PATCH 05/60] fixing issues in all tests --- .jest/__mocks__/connectkit.js | 11 ++++++++--- .jest/{jest.config.js => jest.config.cjs} | 0 .jest/jest.setup.tsx | 10 ++++++++++ .storybook/{main.js => main.cjs} | 0 .storybook/{preview.js => preview.cjs} | 0 package.json | 4 ++-- .../@shared/Web3Feedback/index.test.tsx | 15 ++++++++------- 7 files changed, 28 insertions(+), 12 deletions(-) rename .jest/{jest.config.js => jest.config.cjs} (100%) rename .storybook/{main.js => main.cjs} (100%) rename .storybook/{preview.js => preview.cjs} (100%) diff --git a/.jest/__mocks__/connectkit.js b/.jest/__mocks__/connectkit.js index 48615f4b1..2d6696dd8 100644 --- a/.jest/__mocks__/connectkit.js +++ b/.jest/__mocks__/connectkit.js @@ -1,3 +1,8 @@ -export function getDefaultClient() { - return jest.fn() -} +// .jest/mocks/connectkit.js + +export const getDefaultClient = jest.fn(() => ({ + autoConnect: true, + connectors: [], + provider: {}, + webSocketProvider: {} +})) diff --git a/.jest/jest.config.js b/.jest/jest.config.cjs similarity index 100% rename from .jest/jest.config.js rename to .jest/jest.config.cjs diff --git a/.jest/jest.setup.tsx b/.jest/jest.setup.tsx index 11c89b9a5..ae49148ca 100644 --- a/.jest/jest.setup.tsx +++ b/.jest/jest.setup.tsx @@ -3,6 +3,16 @@ import { jest } from '@jest/globals' import './__mocks__/matchMedia' import './__mocks__/hooksMocks' import './__mocks__/connectkit' +// 👇 Add these lines to polyfill TextEncoder/TextDecoder +import { TextEncoder, TextDecoder } from 'util' + +// 👇 Safely cast to any to bypass type mismatch in Node environment +if (typeof global.TextEncoder === 'undefined') { + global.TextEncoder = TextEncoder as any +} +if (typeof global.TextDecoder === 'undefined') { + global.TextDecoder = TextDecoder as any +} jest.mock('next/router', () => ({ useRouter: jest.fn().mockImplementation(() => ({ diff --git a/.storybook/main.js b/.storybook/main.cjs similarity index 100% rename from .storybook/main.js rename to .storybook/main.cjs diff --git a/.storybook/preview.js b/.storybook/preview.cjs similarity index 100% rename from .storybook/preview.js rename to .storybook/preview.cjs diff --git a/package.json b/package.json index bc93e128b..2b12697a6 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,8 @@ "pregenerate": "bash scripts/pregenerate.sh", "set-barge-env": "bash scripts/barge-env.sh", "test": "npm run pregenerate && npm run lint && npm run type-check && npm run jest", - "jest": "jest -c .jest/jest.config.js", - "jest:watch": "jest -c .jest/jest.config.js --watch", + "jest": "jest -c .jest/jest.config.cjs", + "jest:watch": "jest -c .jest/jest.config.cjs --watch", "lint": "eslint --ignore-path .gitignore --ext .js --ext .ts --ext .tsx .", "lint:fix": "eslint --ignore-path .gitignore --ext .ts,.tsx . --fix", "format": "prettier --ignore-path .gitignore './**/*.{css,yml,js,ts,tsx,json}' --write", diff --git a/src/components/@shared/Web3Feedback/index.test.tsx b/src/components/@shared/Web3Feedback/index.test.tsx index 0a181f8e9..4183b042d 100644 --- a/src/components/@shared/Web3Feedback/index.test.tsx +++ b/src/components/@shared/Web3Feedback/index.test.tsx @@ -16,15 +16,16 @@ describe('@shared/Web3Feedback', () => { ).toBeInTheDocument() }) - it('renders isGraphSynced === false', async () => { - render( - - ) - expect(await screen.findByText('Data out of sync')).toBeInTheDocument() - }) + // Remove or replace this test, since `isGraphSynced` does not exist in your component: + // it('renders isGraphSynced === false', async () => { + // render( + // + // ) + // expect(await screen.findByText('Data out of sync')).toBeInTheDocument() + // }) it('renders no account', async () => { - render() + render() expect(await screen.findByText('No account connected')).toBeInTheDocument() }) From 8ae5d3036e40aba3b448e447cb7bc5f8595d89ec Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Thu, 22 May 2025 14:27:12 +0300 Subject: [PATCH 06/60] updated github actions upload-artifacts to v4 --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0a8fa0c43..93707d425 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -67,7 +67,7 @@ jobs: - run: npm test - name: Upload coverage artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: coverage-${{ runner.os }} path: coverage/ From 9a377d2d4ea2dfb82c80b535e1834cf1b88ad38c Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Thu, 22 May 2025 17:15:15 +0300 Subject: [PATCH 07/60] skipping storybook --- .github/workflows/ci.yml | 54 ++++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 93707d425..38cac06f4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -102,30 +102,30 @@ jobs: env: CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} - storybook: - runs-on: ${{ matrix.os }} - - strategy: - fail-fast: false - matrix: - os: [ubuntu-latest, macos-latest] - node: ['18'] - - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-node@v3 - with: - node-version: ${{ matrix.node }} - - - name: Cache node_modules - uses: actions/cache@v3 - env: - cache-name: cache-node-modules - with: - path: ~/.npm - key: ${{ runner.os }}-${{ matrix.node }}-storybook-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} - restore-keys: ${{ runner.os }}-${{ matrix.node }}-storybook-${{ env.cache-name }}- - - - run: npm ci - - run: npm run pregenerate - - run: npm run storybook:build + # storybook: + # runs-on: ${{ matrix.os }} + + # strategy: + # fail-fast: false + # matrix: + # os: [ubuntu-latest, macos-latest] + # node: ['18'] + + # steps: + # - uses: actions/checkout@v3 + # - uses: actions/setup-node@v3 + # with: + # node-version: ${{ matrix.node }} + + # - name: Cache node_modules + # uses: actions/cache@v3 + # env: + # cache-name: cache-node-modules + # with: + # path: ~/.npm + # key: ${{ runner.os }}-${{ matrix.node }}-storybook-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + # restore-keys: ${{ runner.os }}-${{ matrix.node }}-storybook-${{ env.cache-name }}- + + # - run: npm ci + # - run: npm run pregenerate + # - run: npm run storybook:build From eb48f33dfb5b2b031e56752b71b8cd1951380add Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Thu, 22 May 2025 17:21:20 +0300 Subject: [PATCH 08/60] updated download artifact in github actions --- .github/workflows/ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 38cac06f4..20648ffc0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -91,7 +91,7 @@ jobs: key: ${{ runner.os }}-coverage-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} restore-keys: ${{ runner.os }}-coverage-${{ env.cache-name }}- - - uses: actions/download-artifact@v3 + - uses: actions/download-artifact@v4 with: name: coverage-${{ runner.os }} From 21073726e7fd74db97b2f06aea3580a81488d330 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Wed, 28 May 2025 14:16:54 +0300 Subject: [PATCH 09/60] Fetch price schema from node instead of subgraph --- src/@context/Asset.tsx | 6 +- src/@context/Profile/index.tsx | 1 - src/@types/Compute.d.ts | 21 ++ src/@types/Price.d.ts | 1 + src/@utils/accessDetailsAndPricing.ts | 317 +++++++----------- src/@utils/aquarius/index.ts | 5 +- .../Asset/AssetActions/Download/index.tsx | 12 +- 7 files changed, 162 insertions(+), 201 deletions(-) diff --git a/src/@context/Asset.tsx b/src/@context/Asset.tsx index 28fe3b2b4..270de94d0 100644 --- a/src/@context/Asset.tsx +++ b/src/@context/Asset.tsx @@ -126,9 +126,9 @@ function AssetProvider({ const accessDetails = await getAccessDetails( asset.chainId, - asset.services[0].datatokenAddress, - asset.services[0].timeout, - accountId + asset.services[0] + // asset.services[0].timeout, + // accountId ) setAsset((prevState) => ({ ...prevState, diff --git a/src/@context/Profile/index.tsx b/src/@context/Profile/index.tsx index f5ce43cf1..be274df91 100644 --- a/src/@context/Profile/index.tsx +++ b/src/@context/Profile/index.tsx @@ -167,7 +167,6 @@ function ProfileProvider({ const { downloadedAssets, totalResults } = await getDownloadAssets( dtList, - // tokenOrders, chainIds, cancelToken, ownAccount, diff --git a/src/@types/Compute.d.ts b/src/@types/Compute.d.ts index f9674f13d..58e97ff50 100644 --- a/src/@types/Compute.d.ts +++ b/src/@types/Compute.d.ts @@ -1,8 +1,16 @@ +import { ComputeEnvironment, ComputeJob } from '@oceanprotocol/lib' import { OrdersData_orders_datatoken as OrdersDatatoken } from '../@types/subgraph/OrdersData' // declaring into global scope to be able to use this as // ambiant types despite the above imports declare global { + interface ComputeJobMetaData extends ComputeJob { + assetName: string + assetDtSymbol: string + networkId: number + providerUrl?: string + } + interface AlgorithmOption { did: string name: string @@ -16,8 +24,21 @@ declare global { createdTimestamp: number } + interface ComputeResults { + computeJobs: ComputeJobMetaData[] + isLoaded: boolean + } + interface totalPriceMap { value: string symbol: string } + + interface ComputeJobExtended extends ComputeJob { + providerUrl: string + } + + interface ComputeEnvironmentExtended extends ComputeEnvironment { + feeToken: string + } } diff --git a/src/@types/Price.d.ts b/src/@types/Price.d.ts index 7d809e767..64ae1b840 100644 --- a/src/@types/Price.d.ts +++ b/src/@types/Price.d.ts @@ -48,6 +48,7 @@ declare global { validOrderTx: string publisherMarketOrderFee: string validProviderFees?: ProviderFees + paymentCollector?: string } interface PricePublishOptions { diff --git a/src/@utils/accessDetailsAndPricing.ts b/src/@utils/accessDetailsAndPricing.ts index 2cfcdeb26..8bc46ae03 100644 --- a/src/@utils/accessDetailsAndPricing.ts +++ b/src/@utils/accessDetailsAndPricing.ts @@ -1,15 +1,13 @@ -import { gql, OperationResult } from 'urql' -import { fetchData, getQueryContext } from './subgraph' -import { - TokenPriceQuery, - TokenPriceQuery_token as TokenPrice -} from '../@types/subgraph/TokenPriceQuery' import { AssetPrice, + Datatoken, + FixedRateExchange, getErrorMessage, LoggerInstance, ProviderFees, - ProviderInstance + ProviderInstance, + Service, + ZERO_ADDRESS } from '@oceanprotocol/lib' import { getFixedBuyPrice } from './ocean/fixedRateExchange' import Decimal from 'decimal.js' @@ -20,143 +18,7 @@ import { } from '../../app.config.cjs' import { Signer } from 'ethers' import { toast } from 'react-toastify' - -const tokenPriceQuery = gql` - query TokenPriceQuery($datatokenId: ID!, $account: String) { - token(id: $datatokenId) { - id - symbol - name - templateId - publishMarketFeeAddress - publishMarketFeeToken - publishMarketFeeAmount - orders( - where: { payer: $account } - orderBy: createdTimestamp - orderDirection: desc - ) { - tx - serviceIndex - createdTimestamp - providerFee - reuses(orderBy: createdTimestamp, orderDirection: desc) { - id - caller - createdTimestamp - tx - block - } - } - dispensers { - id - active - isMinter - maxBalance - token { - id - name - symbol - } - } - fixedRateExchanges { - id - exchangeId - price - publishMarketSwapFee - baseToken { - symbol - name - address - decimals - } - datatoken { - symbol - name - address - } - active - } - } - } -` - -function getAccessDetailsFromTokenPrice( - tokenPrice: TokenPrice, - timeout?: number -): AccessDetails { - const accessDetails = {} as AccessDetails - // Return early when no supported pricing schema found. - if ( - tokenPrice?.dispensers?.length === 0 && - tokenPrice?.fixedRateExchanges?.length === 0 - ) { - accessDetails.type = 'NOT_SUPPORTED' - return accessDetails - } - - if (tokenPrice?.orders?.length > 0) { - const order = tokenPrice.orders[0] - const providerFees: ProviderFees = order?.providerFee - ? JSON.parse(order.providerFee) - : null - accessDetails.validProviderFees = - providerFees?.validUntil && - Date.now() / 1000 < Number(providerFees?.validUntil) - ? providerFees - : null - const reusedOrder = order?.reuses?.length > 0 ? order.reuses[0] : null - // asset is owned if there is an order and asset has timeout 0 (forever) or if the condition is valid - accessDetails.isOwned = - timeout === 0 || Date.now() / 1000 - order?.createdTimestamp < timeout - // the last valid order should be the last reuse order tx id if there is one - accessDetails.validOrderTx = reusedOrder?.tx || order?.tx - } - accessDetails.templateId = - typeof tokenPrice.templateId === 'string' - ? parseInt(tokenPrice.templateId) - : tokenPrice.templateId - // TODO: fetch order fee from sub query - accessDetails.publisherMarketOrderFee = tokenPrice?.publishMarketFeeAmount - - // free is always the best price - if (tokenPrice?.dispensers?.length > 0) { - const dispenser = tokenPrice.dispensers[0] - accessDetails.type = 'free' - accessDetails.addressOrId = dispenser.token.id - - accessDetails.price = '0' - accessDetails.isPurchasable = dispenser.active - accessDetails.datatoken = { - address: dispenser.token.id, - name: dispenser.token.name, - symbol: dispenser.token.symbol - } - } - - // checking for fixed price - if (tokenPrice?.fixedRateExchanges?.length > 0) { - const fixed = tokenPrice.fixedRateExchanges[0] - accessDetails.type = 'fixed' - accessDetails.addressOrId = fixed.exchangeId - accessDetails.price = fixed.price - // in theory we should check dt balance here, we can skip this because in the market we always create fre with minting capabilities. - accessDetails.isPurchasable = fixed.active - accessDetails.baseToken = { - address: fixed.baseToken.address, - name: fixed.baseToken.name, - symbol: fixed.baseToken.symbol, - decimals: fixed.baseToken.decimals - } - accessDetails.datatoken = { - address: fixed.datatoken.address, - name: fixed.datatoken.name, - symbol: fixed.datatoken.symbol - } - } - - return accessDetails -} +import { getDummySigner } from './wallet' /** * This will be used to get price including fees before ordering @@ -165,12 +27,14 @@ function getAccessDetailsFromTokenPrice( */ export async function getOrderPriceAndFees( asset: AssetExtended, + service: Service, + accessDetails: AccessDetails, accountId: string, signer?: Signer, providerFees?: ProviderFees ): Promise { const orderPriceAndFee = { - price: String(asset?.stats?.price?.value || '0'), + price: accessDetails.price || '0', publisherMarketOrderFee: publisherMarketOrderFee || '0', publisherMarketFixedSwapFee: '0', consumeMarketOrderFee: consumeMarketOrderFee || '0', @@ -186,83 +50,152 @@ export async function getOrderPriceAndFees( initializeData = !providerFees && (await ProviderInstance.initialize( - asset?.id, - asset?.services[0].id, + asset.id, + service.id, 0, accountId, - customProviderUrl || asset?.services[0].serviceEndpoint + customProviderUrl || service.serviceEndpoint )) } catch (error) { const message = getErrorMessage(error.message) LoggerInstance.error('[Initialize Provider] Error:', message) + + // Customize error message for accountId non included in allow list + if ( + // TODO: verify if the error code is correctly resolved by the provider + message.includes('ConsumableCodes.CREDENTIAL_NOT_IN_ALLOW_LIST') || + message.includes('denied with code: 3') + ) { + if (accountId !== ZERO_ADDRESS) { + toast.error( + `Consumer address not found in allow list for service ${asset.id}. Access has been denied.` + ) + } + return + } + // Customize error message for accountId included in deny list + if ( + // TODO: verify if the error code is correctly resolved by the provider + message.includes('ConsumableCodes.CREDENTIAL_IN_DENY_LIST') || + message.includes('denied with code: 4') + ) { + if (accountId !== ZERO_ADDRESS) { + toast.error( + `Consumer address found in deny list for service ${asset.id}. Access has been denied.` + ) + } + return + } toast.error(message) } orderPriceAndFee.providerFee = providerFees || initializeData.providerFee // fetch price and swap fees - if (asset?.accessDetails?.type === 'fixed') { - const fixed = await getFixedBuyPrice( - asset?.accessDetails, - asset?.chainId, - signer - ) - orderPriceAndFee.price = fixed.baseTokenAmount + if (accessDetails.type === 'fixed') { + const fixed = await getFixedBuyPrice(accessDetails, asset.chainId, signer) + orderPriceAndFee.price = accessDetails.price orderPriceAndFee.opcFee = fixed.oceanFeeAmount orderPriceAndFee.publisherMarketFixedSwapFee = fixed.marketFeeAmount orderPriceAndFee.consumeMarketFixedSwapFee = fixed.consumeMarketFeeAmount } - // calculate full price, we assume that all the values are in ocean, otherwise this will be incorrect - orderPriceAndFee.price = new Decimal(+orderPriceAndFee.price || 0) - .add(new Decimal(+orderPriceAndFee?.consumeMarketOrderFee || 0)) - .add(new Decimal(+orderPriceAndFee?.publisherMarketOrderFee || 0)) - .toString() + const price = new Decimal(+accessDetails.price || 0) + const consumeMarketFeePercentage = + +orderPriceAndFee?.consumeMarketOrderFee || 0 + const publisherMarketFeePercentage = + +orderPriceAndFee?.publisherMarketOrderFee || 0 + + // Calculate percentage-based fees + const consumeMarketFee = price.mul(consumeMarketFeePercentage).div(100) + const publisherMarketFee = price.mul(publisherMarketFeePercentage).div(100) + // Calculate total + const result = price.add(consumeMarketFee).add(publisherMarketFee).toString() + orderPriceAndFee.price = result return orderPriceAndFee } /** * @param {number} chainId - * @param {string} datatokenAddress - * @param {number} timeout timout of the service, this is needed to return order details - * @param {string} account account that wants to buy, is needed to return order details + * @param {Service} service service of which you want access details to * @returns {Promise} */ export async function getAccessDetails( chainId: number, - datatokenAddress: string, - timeout?: number, - account = '' + service: Service ): Promise { - try { - const queryContext = getQueryContext(Number(chainId)) - const tokenQueryResult: OperationResult< - TokenPriceQuery, - { datatokenId: string; account: string } - > = await fetchData( - tokenPriceQuery, - { - datatokenId: datatokenAddress.toLowerCase(), - account: account?.toLowerCase() - }, - queryContext - ) + const signer = await getDummySigner(chainId) + const datatoken = new Datatoken(signer, chainId) + const { datatokenAddress } = service - const tokenPrice: TokenPrice = tokenQueryResult.data.token - const accessDetails = getAccessDetailsFromTokenPrice(tokenPrice, timeout) - return accessDetails - } catch (error) { - LoggerInstance.error('Error getting access details: ', error.message) + const accessDetails: AccessDetails = { + type: 'NOT_SUPPORTED', + price: '0', + addressOrId: '', + baseToken: { + address: '', + name: '', + symbol: '', + decimals: 0 + }, + datatoken: { + address: datatokenAddress, + name: await datatoken.getName(datatokenAddress), + symbol: await datatoken.getSymbol(datatokenAddress), + decimals: 0 + }, + paymentCollector: await datatoken.getPaymentCollector(datatokenAddress), + templateId: await datatoken.getId(datatokenAddress), + // TODO these 4 records + isOwned: false, + validOrderTx: '', // should be possible to get from ocean-node - orders collection in typesense + isPurchasable: true, + publisherMarketOrderFee: '0' } -} -export function getAvailablePrice(asset: AssetExtended): AssetPrice { - const price: AssetPrice = asset?.stats?.price?.value - ? asset?.stats?.price - : { - value: Number(asset?.accessDetails?.price), - tokenSymbol: asset?.accessDetails?.baseToken?.symbol, - tokenAddress: asset?.accessDetails?.baseToken?.address + // if there is at least 1 dispenser => service is free and use first dispenser + const dispensers = await datatoken.getDispensers(datatokenAddress) + if (dispensers.length > 0) { + return { + ...accessDetails, + type: 'free', + addressOrId: dispensers[0], + price: '0' + } + } + + // if there is 0 dispensers and at least 1 fixed rate => use first fixed rate to get the price details + const fixedRates = await datatoken.getFixedRates(datatokenAddress) + if (fixedRates.length > 0) { + const freAddress = fixedRates[0].contractAddress + const exchangeId = fixedRates[0].id + const fre = new FixedRateExchange(freAddress, signer) + const exchange = await fre.getExchange(exchangeId) + + return { + ...accessDetails, + type: 'fixed', + addressOrId: exchangeId, + price: exchange.fixedRate, + baseToken: { + address: exchange.baseToken, + name: await datatoken.getName(exchange.baseToken), // reuse the datatoken instance since it is ERC20 + symbol: await datatoken.getSymbol(exchange.baseToken), + decimals: parseInt(exchange.btDecimals) } + } + } + + // no dispensers and no fixed rates => service doesn't have price set up + return accessDetails +} + +export function getAvailablePrice(accessDetails: AccessDetails): AssetPrice { + const price: AssetPrice = { + value: Number(accessDetails.price), + tokenSymbol: accessDetails.baseToken?.symbol, + tokenAddress: accessDetails.baseToken?.address + } + return price } diff --git a/src/@utils/aquarius/index.ts b/src/@utils/aquarius/index.ts index d774d9a09..cf9ff4a14 100644 --- a/src/@utils/aquarius/index.ts +++ b/src/@utils/aquarius/index.ts @@ -1,6 +1,5 @@ import { Asset, LoggerInstance } from '@oceanprotocol/lib' import axios, { CancelToken, AxiosResponse } from 'axios' -import { OrdersData_orders as OrdersData } from '../../@types/subgraph/OrdersData' import { metadataCacheUri } from '../../../app.config.cjs' import { SortDirectionOptions, @@ -123,7 +122,7 @@ export async function queryMetadata( ): Promise { try { const response: AxiosResponse = await axios.post( - `${metadataCacheUri}/api/aquarius/assets/query`, + `${metadataCacheUri}/api/aquarius/assets/metadata/query`, { ...query }, { cancelToken } ) @@ -451,7 +450,7 @@ export async function getTagsList( try { const response: AxiosResponse = await axios.post( - `${metadataCacheUri}/api/aquarius/assets/query`, + `${metadataCacheUri}/api/aquarius/assets/metadata/query`, { ...query }, { cancelToken } ) diff --git a/src/components/Asset/AssetActions/Download/index.tsx b/src/components/Asset/AssetActions/Download/index.tsx index 72db7c161..6c9dbb750 100644 --- a/src/components/Asset/AssetActions/Download/index.tsx +++ b/src/components/Asset/AssetActions/Download/index.tsx @@ -10,6 +10,7 @@ import { FileInfo, LoggerInstance, UserCustomParameters, + Service, ZERO_ADDRESS } from '@oceanprotocol/lib' import { order } from '@utils/order' @@ -39,9 +40,14 @@ export default function Download({ isBalanceSufficient, dtBalance, fileIsLoading, - consumableFeedback + consumableFeedback, + service, + accessDetails }: { asset: AssetExtended + service?: Service + accessDetails?: AccessDetails + serviceIndex?: number file: FileInfo isBalanceSufficient: boolean dtBalance: string @@ -67,7 +73,7 @@ export default function Download({ useState() const [retry, setRetry] = useState(false) - const price: AssetPrice = getAvailablePrice(asset) + const price: AssetPrice = getAvailablePrice(accessDetails) const isUnsupportedPricing = !asset?.accessDetails || !asset.services.length || @@ -98,6 +104,8 @@ export default function Download({ const _orderPriceAndFees = await getOrderPriceAndFees( asset, + service, + accessDetails, ZERO_ADDRESS ) setOrderPriceAndFees(_orderPriceAndFees) From 8c3d9e45cf6e193fdb918581f48cce5c5027467a Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Wed, 28 May 2025 14:27:15 +0300 Subject: [PATCH 10/60] NEXT_PUBLIC_NODE_URL changed to 1.c2d --- app.config.cjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app.config.cjs b/app.config.cjs index 48982ee07..1133600d4 100644 --- a/app.config.cjs +++ b/app.config.cjs @@ -6,8 +6,8 @@ module.exports = { // const { appConfig } = useMarketMetadata() // return appConfig.metadataCacheUri metadataCacheUri: - process.env.NEXT_PUBLIC_METADATACACHE_URI || - 'https://v4.aquarius.oceanprotocol.com', + process.env.NEXT_PUBLIC_NODE_URL || + 'https://1.c2d.nodes.oceanprotocol.com:8000/', // List of chainIds which metadata cache queries will return by default. // This preselects the Chains user preferences. @@ -16,7 +16,7 @@ module.exports = { // List of all supported chainIds. Used to populate the Chains user preferences list. chainIdsSupported: [1, 137, 10, 11155111], - customProviderUrl: process.env.NEXT_PUBLIC_PROVIDER_URL, + customProviderUrl: process.env.NEXT_PUBLIC_NODE_URL, infuraProjectId: process.env.NEXT_PUBLIC_INFURA_PROJECT_ID || 'xxx', From cd64512fe00b8eb9aec5a03f35c77f641416882e Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Wed, 28 May 2025 15:45:10 +0300 Subject: [PATCH 11/60] updated generatebaseQuery for node instead of subgraph --- address.config.cjs | 25 ++++++++++ app.config.cjs | 2 +- src/@utils/aquarius/index.ts | 95 ++++++++++++++++++++++++------------ 3 files changed, 91 insertions(+), 31 deletions(-) create mode 100644 address.config.cjs diff --git a/address.config.cjs b/address.config.cjs new file mode 100644 index 000000000..8517b1b52 --- /dev/null +++ b/address.config.cjs @@ -0,0 +1,25 @@ +module.exports = { + whitelists: { + 'nft.owner': [], + 'datatokens.address': [] + }, + featured: [ + { + title: 'Smart Mobility, Automotive', + assets: [] + }, + { + title: 'Manufacturing, Industry 4.0', + assets: [] + }, + { + title: 'Text Analysis, Language Processing, and more', + assets: [] + }, + { + title: 'Finance, Business Analytics, and more', + assets: [] + } + ], + verifiedWallets: {} +} diff --git a/app.config.cjs b/app.config.cjs index 1133600d4..aa030fbd2 100644 --- a/app.config.cjs +++ b/app.config.cjs @@ -17,7 +17,7 @@ module.exports = { chainIdsSupported: [1, 137, 10, 11155111], customProviderUrl: process.env.NEXT_PUBLIC_NODE_URL, - + allowDynamicPricing: process.env.NEXT_PUBLIC_ALLOW_DYNAMIC_PRICING || 'false', infuraProjectId: process.env.NEXT_PUBLIC_INFURA_PROJECT_ID || 'xxx', defaultDatatokenTemplateIndex: 2, diff --git a/src/@utils/aquarius/index.ts b/src/@utils/aquarius/index.ts index cf9ff4a14..1390890f3 100644 --- a/src/@utils/aquarius/index.ts +++ b/src/@utils/aquarius/index.ts @@ -1,6 +1,7 @@ import { Asset, LoggerInstance } from '@oceanprotocol/lib' import axios, { CancelToken, AxiosResponse } from 'axios' -import { metadataCacheUri } from '../../../app.config.cjs' +import { metadataCacheUri, allowDynamicPricing } from '../../../app.config.cjs' +import addressConfig from '../../../address.config.cjs' import { SortDirectionOptions, SortTermOptions @@ -24,44 +25,47 @@ export function escapeEsReservedCharacters(value: string): string { * @param value the value of the filter * @returns json structure of the es filter */ +type TFilterValue = string | number | boolean | number[] | string[] +type TFilterKey = 'terms' | 'term' | 'match' | 'match_phrase' export function getFilterTerm( filterField: string, - value: string | number | boolean | number[] | string[] + value: TFilterValue, + key: TFilterKey = 'term' ): FilterTerm { const isArray = Array.isArray(value) + const useKey = key === 'term' ? (isArray ? 'terms' : 'term') : key return { - [isArray ? 'terms' : 'term']: { + [useKey]: { [filterField]: value } } } -export function generateBaseQuery( - baseQueryParams: BaseQueryParams +export function getDynamicPricingMustNot(): // eslint-disable-next-line camelcase +FilterTerm | undefined { + return allowDynamicPricing === 'true' + ? undefined + : getFilterTerm('stats.price.type', 'pool') +} +export function getWhitelistShould(): FilterTerm[] { + const { whitelists } = addressConfig + + const whitelistFilterTerms = Object.entries(whitelists) + .filter(([field, whitelist]) => whitelist.length > 0) + .map(([field, whitelist]) => + whitelist.map((address) => getFilterTerm(field, address, 'match')) + ) + .reduce((prev, cur) => prev.concat(cur), []) + + return whitelistFilterTerms.length > 0 ? whitelistFilterTerms : [] +} + +export function generateBaseQuery( // need to follow this query to fetch data from elasticsearch + baseQueryParams: BaseQueryParams, + index?: string ): SearchQuery { - const filters: unknown[] = [ - getFilterTerm('_index', 'aquarius'), - getFilterTerm('services.type', 'access'), - getFilterTerm('metadata.type', 'dataset') - ] - baseQueryParams.filters && filters.push(...baseQueryParams.filters) - baseQueryParams.chainIds && - filters.push(getFilterTerm('chainId', baseQueryParams.chainIds)) - !baseQueryParams.ignorePurgatory && - filters.push(getFilterTerm('purgatory.state', false)) - !baseQueryParams.ignoreState && - filters.push({ - bool: { - must_not: [ - { - term: { - 'nft.state': 5 - } - } - ] - } - }) const generatedQuery = { + index: index ?? 'op_ddo_v4.1.0', from: baseQueryParams.esPaginationOptions?.from || 0, size: baseQueryParams.esPaginationOptions?.size >= 0 @@ -70,7 +74,23 @@ export function generateBaseQuery( query: { bool: { ...baseQueryParams.nestedQuery, - filter: filters + filter: [ + ...(baseQueryParams.filters || []), + ...(baseQueryParams.chainIds + ? [getFilterTerm('chainId', baseQueryParams.chainIds)] + : []), + ...(baseQueryParams.ignorePurgatory + ? [] + : [getFilterTerm('purgatory.state', false)]), + { + bool: { + must_not: [ + !baseQueryParams.ignoreState && getFilterTerm('nft.state', 5), + getDynamicPricingMustNot() + ] + } + } + ] } } } as SearchQuery @@ -79,12 +99,27 @@ export function generateBaseQuery( generatedQuery.aggs = baseQueryParams.aggs } - if (baseQueryParams.sortOptions !== undefined) + if (baseQueryParams.sortOptions !== undefined) { generatedQuery.sort = { - [baseQueryParams.sortOptions.sortBy]: + [`${baseQueryParams.sortOptions.sortBy}`]: baseQueryParams.sortOptions.sortDirection || SortDirectionOptions.Descending } + } + + // add whitelist filtering + if (getWhitelistShould()?.length > 0) { + const whitelistQuery = { + bool: { + should: [...getWhitelistShould()], + minimum_should_match: 1 + } + } + Object.hasOwn(generatedQuery.query.bool, 'must') + ? generatedQuery.query.bool.must.push(whitelistQuery) + : (generatedQuery.query.bool.must = [whitelistQuery]) + } + return generatedQuery } From 8e9c0beb0528bdb50b036cc25d1bf815be1d0409 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Wed, 28 May 2025 16:53:21 +0300 Subject: [PATCH 12/60] adding index to search query, fixing test, and price --- src/@types/aquarius/SearchQuery.ts | 1 + src/@utils/aquarius/index.test.ts | 36 +++++++++++++++++++++++++----- src/@utils/aquarius/index.ts | 2 +- 3 files changed, 32 insertions(+), 7 deletions(-) diff --git a/src/@types/aquarius/SearchQuery.ts b/src/@types/aquarius/SearchQuery.ts index 6d2eeca8d..4db1b0cc5 100644 --- a/src/@types/aquarius/SearchQuery.ts +++ b/src/@types/aquarius/SearchQuery.ts @@ -39,6 +39,7 @@ declare global { type Filters = FilterByTypeOptions | FilterByAccessOptions interface SearchQuery { + index?: string from?: number size?: number // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/src/@utils/aquarius/index.test.ts b/src/@utils/aquarius/index.test.ts index 2fbb3ca0a..72a2b3fe3 100644 --- a/src/@utils/aquarius/index.test.ts +++ b/src/@utils/aquarius/index.test.ts @@ -2,25 +2,49 @@ import { SortDirectionOptions, SortTermOptions } from '../../@types/aquarius/SearchQuery' -import { escapeEsReservedCharacters, getFilterTerm, generateBaseQuery } from '.' +import { + escapeEsReservedCharacters, + getFilterTerm, + generateBaseQuery, + getWhitelistShould +} from '.' -const defaultBaseQueryReturn = { +const defaultBaseQueryReturn: SearchQuery = { from: 0, + index: 'op_ddo_v4.1.0', query: { bool: { filter: [ - { term: { _index: 'aquarius' } }, - { term: { 'services.type': 'access' } }, - { term: { 'metadata.type': 'dataset' } }, { terms: { chainId: [1, 3] } }, + // { term: { _index: 'aquarius' } }, { term: { 'purgatory.state': false } }, - { bool: { must_not: [{ term: { 'nft.state': 5 } }] } } + { + bool: { + must_not: [ + { term: { 'nft.state': 5 } }, + { term: { 'price.type': 'pool' } } + ] + } + } ] } }, size: 1000 } +// add whitelist filtering +if (getWhitelistShould()?.length > 0) { + const whitelistQuery = { + bool: { + should: [...getWhitelistShould()], + minimum_should_match: 1 + } + } + Object.hasOwn(defaultBaseQueryReturn.query.bool, 'must') + ? defaultBaseQueryReturn.query.bool.must.push(whitelistQuery) + : (defaultBaseQueryReturn.query.bool.must = [whitelistQuery]) +} + describe('@utils/aquarius', () => { test('escapeEsReservedCharacters', () => { expect(escapeEsReservedCharacters('<')).toBe('\\<') diff --git a/src/@utils/aquarius/index.ts b/src/@utils/aquarius/index.ts index 1390890f3..8fde2b024 100644 --- a/src/@utils/aquarius/index.ts +++ b/src/@utils/aquarius/index.ts @@ -45,7 +45,7 @@ export function getDynamicPricingMustNot(): // eslint-disable-next-line camelcas FilterTerm | undefined { return allowDynamicPricing === 'true' ? undefined - : getFilterTerm('stats.price.type', 'pool') + : getFilterTerm('price.type', 'pool') } export function getWhitelistShould(): FilterTerm[] { const { whitelists } = addressConfig From 41b45c98231d04975e17ad2aae062eb2ed7e0c27 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Thu, 29 May 2025 11:26:17 +0300 Subject: [PATCH 13/60] fixed router configs for blockchain data --- app.config.cjs | 8 +++-- chains.config.cjs | 70 +++++++++++++++++++++++++++++++++++++++++ src/@hooks/useRouter.ts | 60 ++++++++++++++++++----------------- 3 files changed, 107 insertions(+), 31 deletions(-) create mode 100644 chains.config.cjs diff --git a/app.config.cjs b/app.config.cjs index aa030fbd2..55e905ed3 100644 --- a/app.config.cjs +++ b/app.config.cjs @@ -7,19 +7,21 @@ module.exports = { // return appConfig.metadataCacheUri metadataCacheUri: process.env.NEXT_PUBLIC_NODE_URL || - 'https://1.c2d.nodes.oceanprotocol.com:8000/', + 'https://1.c2d.nodes.oceanprotocol.com:8000', // List of chainIds which metadata cache queries will return by default. // This preselects the Chains user preferences. - chainIds: [1, 137, 10], + chainIds: [11155111, 8996], // List of all supported chainIds. Used to populate the Chains user preferences list. - chainIdsSupported: [1, 137, 10, 11155111], + chainIdsSupported: [11155111, 8996], customProviderUrl: process.env.NEXT_PUBLIC_NODE_URL, allowDynamicPricing: process.env.NEXT_PUBLIC_ALLOW_DYNAMIC_PRICING || 'false', infuraProjectId: process.env.NEXT_PUBLIC_INFURA_PROJECT_ID || 'xxx', + defaultDatatokenCap: + '115792089237316195423570985008687907853269984665640564039457', defaultDatatokenTemplateIndex: 2, // The ETH address the marketplace fee will be sent to. marketFeeAddress: diff --git a/chains.config.cjs b/chains.config.cjs new file mode 100644 index 000000000..0addde07c --- /dev/null +++ b/chains.config.cjs @@ -0,0 +1,70 @@ +// chain configs in ocean.js ConfigHelperConfig format +// see: https://github.com/oceanprotocol/ocean.js/blob/e07a7cb6ecea12b39ed96f994b4abe37806799a1/src/utils/ConfigHelper.ts#L8 + +const chains = [ + { + chainId: 11155111, + isDefault: false, + isCustom: true, + network: 'pontusx-devnet', + oceanTokenSymbol: 'OCEAN', + oceanTokenAddress: '0xdF171F74a8d3f4e2A789A566Dce9Fa4945196112', + nftFactoryAddress: '0xFdC4a5DEaCDfc6D82F66e894539461a269900E13', + fixedRateExchangeAddress: '0x8372715D834d286c9aECE1AcD51Da5755B32D505', + dispenserAddress: '0x5461b629E01f72E0A468931A36e039Eea394f9eA', + opfCommunityFeeCollector: '0x1f84fB438292269219f9396D57431eA9257C23d4', + startBlock: 57428, + transactionBlockTimeout: 50, + transactionConfirmationBlocks: 1, + transactionPollingTimeout: 750, + gasFeeMultiplier: 1.1, + providerUri: 'https://provider.dev.pontus-x.eu', + providerAddress: '0x68C24FA5b2319C81b34f248d1f928601D2E5246B', + metadataCacheUri: 'https://aquarius.pontus-x.eu', + nodeUri: 'https://rpc.dev.pontus-x.eu', + subgraphUri: 'https://subgraph.dev.pontus-x.eu', + explorerUri: 'https://explorer.pontus-x.eu/devnet/pontusx' + }, + { + chainId: 8996, + isDefault: true, + isCustom: true, + network: 'pontusx-testnet', + oceanTokenSymbol: 'OCEAN', + oceanTokenAddress: '0x5B190F9E2E721f8c811E4d584383E3d57b865C69', + nftFactoryAddress: '0x2C4d542ff791890D9290Eec89C9348A4891A6Fd2', + fixedRateExchangeAddress: '0xcE0F39abB6DA2aE4d072DA78FA0A711cBB62764E', + dispenserAddress: '0xaB5B68F88Bc881CAA427007559E9bbF8818026dE', + opfCommunityFeeCollector: '0xACC8d1B2a0007951fb4ed622ACB1C4fcCAbe778D', + startBlock: 82191, + transactionBlockTimeout: 50, + transactionConfirmationBlocks: 1, + transactionPollingTimeout: 750, + gasFeeMultiplier: 1.1, + providerUri: 'https://provider.test.pontus-x.eu', + providerAddress: '0x9546d39CE3E48BC942f0be4AA9652cBe0Aff3592', + metadataCacheUri: 'https://aquarius.pontus-x.eu', + nodeUri: 'https://rpc.test.pontus-x.eu', + subgraphUri: 'https://subgraph.test.pontus-x.eu', + explorerUri: 'https://explorer.pontus-x.eu/testnet/pontusx' + } +] + +const getDefaultChainIds = () => { + return chains.filter((chain) => chain.isDefault).map((c) => c.chainId) +} + +const getSupportedChainIds = () => { + return chains.map((c) => c.chainId) +} + +const getCustomChainIds = () => { + return chains.filter((c) => c.isCustom).map((c) => c.chainId) +} + +module.exports = { + chains, + getDefaultChainIds, + getSupportedChainIds, + getCustomChainIds +} diff --git a/src/@hooks/useRouter.ts b/src/@hooks/useRouter.ts index 45ce8a581..7fe583f71 100644 --- a/src/@hooks/useRouter.ts +++ b/src/@hooks/useRouter.ts @@ -1,5 +1,5 @@ import { useEffect, useState } from 'react' -import { Router as FactoryRouter } from '@oceanprotocol/lib' +import { Router as FactoryRouter, LoggerInstance } from '@oceanprotocol/lib' import { getOceanConfig } from '@utils/ocean' import { useNetwork, useSigner } from 'wagmi' import { ethers } from 'ethers' @@ -21,7 +21,9 @@ function useFactoryRouter() { useEffect(() => { if (!signer || !chain?.id) return const config = getOceanConfig(chain.id) - setFactoryRouter(new FactoryRouter(config?.routerFactoryAddress, signer)) + setFactoryRouter( + new FactoryRouter(config?.routerFactoryAddress, signer, config.chainId) + ) }, [signer, chain?.id]) const fetchFees = async (router: FactoryRouter) => { @@ -31,7 +33,6 @@ function useFactoryRouter() { router.contract.getOPCConsumeFee(), router.contract.getOPCProviderFee() ]) - return { swapOceanFee: ethers.utils.formatUnits(opcFees[0], 18), swapNonOceanFee: ethers.utils.formatUnits(opcFees[1], 18), @@ -92,35 +93,38 @@ function useFactoryRouter() { if (factoryRouter) { fetchApprovedTokens() } - }, [factoryRouter, fetchTokenDetails]) - + }, [factoryRouter]) const getOpcData = async (chainIds: number[]) => { - const validChainIds = chainIds.filter((chainId) => { - const config = getOceanConfig(chainId) - return !!config?.routerFactoryAddress - }) - const opcData = await Promise.all( - validChainIds.map(async (chainId) => { + const fetchOpcData = async (chainIds: number[]) => { + const validChainIds = chainIds.filter((chainId) => { const config = getOceanConfig(chainId) - const factory = new FactoryRouter(config?.routerFactoryAddress, signer) - const fees = await fetchFees(factory) - const approvedTokensAddresses = - await factory.contract.getApprovedTokens() - const tokenDetails: TokenDetails[] = await Promise.all( - approvedTokensAddresses.map((tokenAddress) => - fetchTokenDetails(tokenAddress) - ) - ) - return { - chainId, - approvedTokens: tokenDetails.map((token) => token.address), - swapApprovedFee: fees.swapOceanFee, - swapNotApprovedFee: fees.swapNonOceanFee - } + return !!config?.routerFactoryAddress }) - ) + const opcData = await Promise.all( + validChainIds.map(async (chainId) => { + const fees = await fetchFees(factoryRouter) + const approvedTokensAddresses = + await factoryRouter.contract.getApprovedTokens() + const tokenDetails: TokenDetails[] = await Promise.all( + approvedTokensAddresses.map((tokenAddress) => + fetchTokenDetails(tokenAddress) + ) + ) + return { + chainId, + approvedTokens: tokenDetails.map((token) => token.address), + swapApprovedFee: fees.swapOceanFee, + swapNotApprovedFee: fees.swapNonOceanFee + } + }) + ) + + return opcData as OpcFee[] + } - return opcData as OpcFee[] + if (factoryRouter) { + return fetchOpcData(chainIds) + } } return { approvedTokens, fees, signer, getOpcData } From b75932bf4f8dcd7a8ab2cc4567eb46e26f0f4a21 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Fri, 30 May 2025 10:01:02 +0300 Subject: [PATCH 14/60] fixed sepolia, price and v3 blastapi issues --- src/@hooks/useNftFactory.ts | 12 +++- src/@utils/accessDetailsAndPricing.ts | 80 +++++++++++++++++---- src/@utils/ocean/index.ts | 17 +++-- src/@utils/wallet/chains.ts | 29 ++++++++ src/@utils/wallet/index.ts | 10 ++- src/components/Asset/AssetActions/index.tsx | 1 + 6 files changed, 127 insertions(+), 22 deletions(-) create mode 100644 src/@utils/wallet/chains.ts diff --git a/src/@hooks/useNftFactory.ts b/src/@hooks/useNftFactory.ts index 560abdef2..6ca8dc1ab 100644 --- a/src/@hooks/useNftFactory.ts +++ b/src/@hooks/useNftFactory.ts @@ -11,8 +11,18 @@ function useNftFactory(): NftFactory { useEffect(() => { if (!signer || !chain?.id) return + const networkId = chain.id + console.log('Calling getOceanConfig with:', networkId) + const config = getOceanConfig(chain.id) - const factory = new NftFactory(config?.nftFactoryAddress, signer) + console.log('Network Config', config) + + if (!config) { + console.error(`No config found for network ${networkId}`) + return + } + + const factory = new NftFactory(config.nftFactoryAddress, signer) setNftFactory(factory) }, [signer, chain?.id]) diff --git a/src/@utils/accessDetailsAndPricing.ts b/src/@utils/accessDetailsAndPricing.ts index 8bc46ae03..3308f6899 100644 --- a/src/@utils/accessDetailsAndPricing.ts +++ b/src/@utils/accessDetailsAndPricing.ts @@ -19,13 +19,17 @@ import { import { Signer } from 'ethers' import { toast } from 'react-toastify' import { getDummySigner } from './wallet' +// import { Service } from 'src/@types/ddo/Service' +import AssetExtended from 'src/@types/AssetExtended' +import { CancelToken } from 'axios' +import { getUserOrders } from './aquarius' /** * This will be used to get price including fees before ordering * @param {AssetExtended} asset * @return {Promise} */ -export async function getOrderPriceAndFees( +export async function getOrderPriceAndFees( // this function give price asset: AssetExtended, service: Service, accessDetails: AccessDetails, @@ -47,16 +51,21 @@ export async function getOrderPriceAndFees( // fetch provider fee let initializeData try { - initializeData = - !providerFees && - (await ProviderInstance.initialize( - asset.id, - service.id, - 0, - accountId, - customProviderUrl || service.serviceEndpoint - )) + const initialize = await ProviderInstance.initialize( + asset.id, + service.id, + 0, + accountId, + customProviderUrl || service.serviceEndpoint + ) + initializeData = !providerFees && initialize } catch (error) { + if (error.message.includes('Unexpected token')) { + // toast.error( + // `Use the initializeCompute endpoint to initialize compute jobs` + // ) + return + } const message = getErrorMessage(error.message) LoggerInstance.error('[Initialize Provider] Error:', message) @@ -88,7 +97,7 @@ export async function getOrderPriceAndFees( } toast.error(message) } - orderPriceAndFee.providerFee = providerFees || initializeData.providerFee + orderPriceAndFee.providerFee = providerFees || initializeData?.providerFee // fetch price and swap fees if (accessDetails.type === 'fixed') { @@ -122,7 +131,9 @@ export async function getOrderPriceAndFees( */ export async function getAccessDetails( chainId: number, - service: Service + service: Service, + accountId: string, + cancelToken: CancelToken ): Promise { const signer = await getDummySigner(chainId) const datatoken = new Datatoken(signer, chainId) @@ -152,6 +163,41 @@ export async function getAccessDetails( isPurchasable: true, publisherMarketOrderFee: '0' } + try { + // Check for past orders + let allOrders: any[] = [] + let page = 1 + let totalPages = 1 + + // Fetch all orders across all pages + while (page <= totalPages) { + const res = await getUserOrders(accountId, cancelToken, page) + allOrders = allOrders.concat(res?.results || []) + const orderTotal = res?.totalPages || 0 + totalPages = orderTotal + page++ + } + + const order = allOrders.find( + (order) => + order.datatokenAddress.toLowerCase() === + datatokenAddress.toLowerCase() || + order.payer.toLowerCase() === datatokenAddress.toLowerCase() + ) + if (order) { + const orderTimestamp = order.timestamp + const timeout = Number(service.timeout) + const now = Date.now() + + const isValid = + timeout === 0 || + (orderTimestamp && orderTimestamp * 1000 + timeout * 1000 > now) + accessDetails.isOwned = isValid + accessDetails.validOrderTx = isValid ? order.orderId : '' + } + } catch (err) { + LoggerInstance.error('[getAccessDetails] Failed to fetch user orders', err) + } // if there is at least 1 dispenser => service is free and use first dispenser const dispensers = await datatoken.getDispensers(datatokenAddress) @@ -192,9 +238,13 @@ export async function getAccessDetails( export function getAvailablePrice(accessDetails: AccessDetails): AssetPrice { const price: AssetPrice = { - value: Number(accessDetails.price), - tokenSymbol: accessDetails.baseToken?.symbol, - tokenAddress: accessDetails.baseToken?.address + value: accessDetails?.price ? Number(accessDetails.price) : 0, + tokenSymbol: accessDetails?.baseToken?.symbol || '', + tokenAddress: accessDetails?.baseToken?.address || '' + } + + if (!accessDetails?.price) { + console.warn('Missing price in accessDetails:', accessDetails) } return price diff --git a/src/@utils/ocean/index.ts b/src/@utils/ocean/index.ts index 9335834a3..b325f0cab 100644 --- a/src/@utils/ocean/index.ts +++ b/src/@utils/ocean/index.ts @@ -21,11 +21,16 @@ export function sanitizeDevelopmentConfig(config: Config): Config { dispenserAddress: process.env.NEXT_PUBLIC_DISPENSER_ADDRESS, oceanTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS, nftFactoryAddress: process.env.NEXT_PUBLIC_NFT_FACTORY_ADDRESS, - routerFactoryAddress: process.env.NEXT_PUBLIC_ROUTER_FACTORY_ADDRESS + routerFactoryAddress: process.env.NEXT_PUBLIC_ROUTER_FACTORY_ADDRESS, + accessListFactory: process.env.NEXT_PUBLIC_ACCESS_LIST_FACTORY_ADDRESS } as Config } export function getOceanConfig(network: string | number): Config { + if (!network) { + console.warn('getOceanConfig: called with undefined network') + return undefined + } let config = new ConfigHelper().getConfig( network, network === 'polygon' || @@ -33,8 +38,6 @@ export function getOceanConfig(network: string | number): Config { network === 1287 || network === 'bsc' || network === 56 || - network === 'gaiaxtestnet' || - network === 2021000 || network === 8996 ? undefined : process.env.NEXT_PUBLIC_INFURA_PROJECT_ID @@ -42,6 +45,12 @@ export function getOceanConfig(network: string | number): Config { if (network === 8996) { config = { ...config, ...sanitizeDevelopmentConfig(config) } } + + // Override RPC URL for Sepolia if it's set (the reason is ocean.js supports only infura) + if (network === 11155111 && process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL) { + config.nodeUri = process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL + } + return config as Config } @@ -52,7 +61,7 @@ export function getDevelopmentConfig(): Config { // fixedRateExchangeAddress: contractAddresses.development?.FixedRateExchange, // metadataContractAddress: contractAddresses.development?.Metadata, // oceanTokenAddress: contractAddresses.development?.Ocean, - // There is no subgraph in barge so we hardcode the Polygon Mumbai one for now + // There is no subgraph in barge so we hardcode the Sepolia one for now subgraphUri: 'https://v4.subgraph.sepolia.oceanprotocol.com' } as Config } diff --git a/src/@utils/wallet/chains.ts b/src/@utils/wallet/chains.ts new file mode 100644 index 000000000..eb44fed07 --- /dev/null +++ b/src/@utils/wallet/chains.ts @@ -0,0 +1,29 @@ +import { Chain } from 'wagmi' +import * as wagmiChains from 'wagmi/chains' + +export const getSupportedChains = (chainIdsSupported: number[]): Chain[] => { + const supportedChains = [wagmiChains] + .map((chain) => { + return Object.values(chain).filter((chain) => + chainIdsSupported.includes(chain.id) + ) + }) + .flat() + + // Current version of wagmi doesn't support custom RPCs (e.g blastapi) + // Override RPC URLs for chains if it's set in env + const chains = supportedChains.map((chain) => { + if (chain.id === 11155111 && process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL) { + return { + ...chain, + rpcUrls: { + public: { http: [process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL] }, + default: { http: [process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL] } + } + } + } + return chain + }) + + return chains +} diff --git a/src/@utils/wallet/index.ts b/src/@utils/wallet/index.ts index 12f6b74f4..7c3d559d4 100644 --- a/src/@utils/wallet/index.ts +++ b/src/@utils/wallet/index.ts @@ -1,11 +1,14 @@ import { LoggerInstance } from '@oceanprotocol/lib' import { createClient, erc20ABI } from 'wagmi' import { mainnet, polygon, optimism, sepolia } from 'wagmi/chains' +import { localhost } from '@wagmi/core/chains' import { ethers, Contract, Signer } from 'ethers' import { formatEther } from 'ethers/lib/utils' import { getDefaultClient } from 'connectkit' import { getNetworkDisplayName } from '@hooks/useNetworkMetadata' import { getOceanConfig } from '../ocean' +import { getSupportedChains } from './chains' +import { chainIdsSupported } from '../../../app.config.cjs' export async function getDummySigner(chainId: number): Promise { if (typeof chainId !== 'number') { @@ -25,12 +28,15 @@ export async function getDummySigner(chainId: number): Promise { } // Wagmi client +const chains = [...getSupportedChains(chainIdsSupported)] +if (process.env.NEXT_PUBLIC_MARKET_DEVELOPMENT === 'true') { + chains.push({ ...localhost, id: 8996 }) +} export const wagmiClient = createClient( getDefaultClient({ appName: 'Ocean Market', infuraId: process.env.NEXT_PUBLIC_INFURA_PROJECT_ID, - // TODO: mapping between appConfig.chainIdsSupported and wagmi chainId - chains: [mainnet, polygon, optimism, sepolia], + chains, walletConnectProjectId: process.env.NEXT_PUBLIC_WALLETCONNECT_PROJECT_ID }) ) diff --git a/src/components/Asset/AssetActions/index.tsx b/src/components/Asset/AssetActions/index.tsx index 93ecac616..567d4ba78 100644 --- a/src/components/Asset/AssetActions/index.tsx +++ b/src/components/Asset/AssetActions/index.tsx @@ -151,6 +151,7 @@ export default function AssetActions({ isBalanceSufficient={isBalanceSufficient} file={fileMetadata} fileIsLoading={fileIsLoading} + accessDetails={asset.accessDetails} // Ensure this is passed /> From 579291dc200765c4d104414051466dfe2c3829c8 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Thu, 5 Jun 2025 15:24:46 +0300 Subject: [PATCH 15/60] debug changes for publish --- .jest/__fixtures__/algorithmAquarius.ts | 80 ++--- .jest/__fixtures__/datasetAquarius.ts | 78 ++--- .../__fixtures__/datasetsWithAccessDetails.ts | 4 +- .jest/__fixtures__/marketMetadata.ts | 2 +- .jest/__fixtures__/prices.ts | 30 +- app.config.cjs | 6 +- package-lock.json | 308 +++++++++--------- package.json | 3 +- src/@context/Asset.tsx | 37 ++- src/@context/Filter.tsx | 69 ++++ src/@context/MarketMetadata/index.tsx | 15 +- src/@context/Prices/_utils.ts | 4 +- src/@context/UrqlProvider.tsx | 9 +- src/@hooks/useNftFactory.ts | 1 + src/@types/AssetExtended.d.ts | 7 +- src/@utils/accessDetailsAndPricing.ts | 36 +- src/@utils/aquarius/index.ts | 52 +-- src/@utils/ocean/index.ts | 26 +- src/@utils/wallet/chains.ts | 5 +- .../FormInput/InputElement/Provider/index.tsx | 7 +- src/components/@shared/Price/index.tsx | 6 +- .../Asset/AssetActions/Download/index.tsx | 8 +- src/components/Asset/AssetActions/index.tsx | 1 + .../Asset/AssetContent/EditHistory.tsx | 2 +- .../Asset/AssetContent/MetaFull.tsx | 21 +- src/components/Asset/AssetContent/index.tsx | 2 + src/components/Asset/index.tsx | 2 + src/components/Footer/MarketStats/Total.tsx | 100 +++++- src/components/Publish/_utils.ts | 18 +- src/components/Publish/index.tsx | 17 +- 30 files changed, 617 insertions(+), 339 deletions(-) create mode 100644 src/@context/Filter.tsx diff --git a/.jest/__fixtures__/algorithmAquarius.ts b/.jest/__fixtures__/algorithmAquarius.ts index f784cacd0..c4c47839a 100644 --- a/.jest/__fixtures__/algorithmAquarius.ts +++ b/.jest/__fixtures__/algorithmAquarius.ts @@ -1,6 +1,7 @@ -import { Asset } from '@oceanprotocol/lib' +// import { DDO } from '@oceanprotocol/lib' +// import { Asset } from '@oceanprotocol/ddo-js' -export const algorithmAquarius: Asset = { +export const algorithmAquarius: AssetExtended = { '@context': ['https://w3id.org/did/v1'], id: 'did:op:6654b0793765b269696cec8d2f0d077d9bbcdd3c4f033d941ab9684e8ad06630', nftAddress: '0xbA5BA7B09e2FA1eb0258f647503F81D2Af5cb07d', @@ -50,42 +51,45 @@ export const algorithmAquarius: Asset = { timeout: 604800 } ], - event: { - tx: '0x3e07a75c1cc5d4146222a93ab4319144e60ecca3ebfb8b15f1ff339d6f479dc9', - block: 7680195, - from: '0x903322C7E45A60d7c8C3EA236c5beA9Af86310c7', - contract: '0xbA5BA7B09e2FA1eb0258f647503F81D2Af5cb07d', - datetime: '2022-09-29T11:31:12' - }, - nft: { - address: '0xbA5BA7B09e2FA1eb0258f647503F81D2Af5cb07d', - name: 'Ocean Data NFT', - symbol: 'OCEAN-NFT', - state: 0, - tokenURI: - 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDo2NjU0YjA3OTM3NjViMjY5Njk2Y2VjOGQyZjBkMDc3ZDliYmNkZDNjNGYwMzNkOTQxYWI5Njg0ZThhZDA2NjMwIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjY2NTRiMDc5Mzc2NWIyNjk2OTZjZWM4ZDJmMGQwNzdkOWJiY2RkM2M0ZjAzM2Q5NDFhYjk2ODRlOGFkMDY2MzAiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDI5QzksMjUgMTksMjIgMjksMjFDMzgsMTkgNDksMTkgNjEsMjFDNzIsMjIgODUsMjUgOTksMjlMOTksOTlaJy8lM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmJiJyBkPSdNMCw5OUwwLDU1QzgsNDkgMTcsNDQgMjgsNDNDMzgsNDEgNTAsNDIgNjMsNDNDNzUsNDMgODcsNDIgOTksNDJMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJmZicgZD0nTTAsOTlMMCw2OEMxMSw2NiAyMiw2NSAzMiw2N0M0MSw2OCA1MCw3MyA2MSw3NkM3MSw3OCA4NSw3OCA5OSw3OUw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFIn0=', - owner: '0x99840Df5Cb42faBE0Feb8811Aaa4BC99cA6C84e0', - created: '2022-09-29T11:31:12' - }, - datatokens: [ - { - address: '0x067e1E6ec580F3F0f6781679A4A5AB07A6464b08', - name: 'Stupendous Orca Token', - symbol: 'STUORC-59', - serviceId: - 'dbc42f4c62d2452f8731fd023eacfae74e9c7a42fbd12ce84310f13342e4aab1' - } - ], - stats: { - orders: 22, - price: { - value: 3231343254, - tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', - tokenSymbol: 'OCEAN' + + indexedMetadata: { + nft: { + address: '0xbA5BA7B09e2FA1eb0258f647503F81D2Af5cb07d', + name: 'Ocean Data NFT', + symbol: 'OCEAN-NFT', + state: 0, + tokenURI: + 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDo2NjU0YjA3OTM3NjViMjY5Njk2Y2VjOGQyZjBkMDc3ZDliYmNkZDNjNGYwMzNkOTQxYWI5Njg0ZThhZDA2NjMwIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjY2NTRiMDc5Mzc2NWIyNjk2OTZjZWM4ZDJmMGQwNzdkOWJiY2RkM2M0ZjAzM2Q5NDFhYjk2ODRlOGFkMDY2MzAiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDI5QzksMjUgMTksMjIgMjksMjFDMzgsMTkgNDksMTkgNjEsMjFDNzIsMjIgODUsMjUgOTksMjlMOTksOTlaJy8lM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmJiJyBkPSdNMCw5OUwwLDU1QzgsNDkgMTcsNDQgMjgsNDNDMzgsNDEgNTAsNDIgNjMsNDNDNzUsNDMgODcsNDIgOTksNDJMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJmZicgZD0nTTAsOTlMMCw2OEMxMSw2NiAyMiw2NSAzMiw2N0M0MSw2OCA1MCw3MyA2MSw3NkM3MSw3OCA4NSw3OCA5OSw3OUw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFIn0=', + owner: '0x99840Df5Cb42faBE0Feb8811Aaa4BC99cA6C84e0', + created: '2022-09-29T11:31:12' + }, + event: { + txid: '0x3e07a75c1cc5d4146222a93ab4319144e60ecca3ebfb8b15f1ff339d6f479dc9', + block: 7680195, + from: '0x903322C7E45A60d7c8C3EA236c5beA9Af86310c7', + contract: '0xbA5BA7B09e2FA1eb0258f647503F81D2Af5cb07d', + datetime: '2022-09-29T11:31:12' + }, + stats: [ + { + datatokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', + name: 'string', + symbol: 'OCEAN', + serviceId: + 'dbc42f4c62d2452f8731fd023eacfae74e9c7a42fbd12ce84310f13342e4aab1', + orders: 22, + prices: [ + { + type: 'fixedrate', + price: '2', + contract: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a' + } + ] + } + ], + purgatory: { + state: false, + reason: '' } - }, - purgatory: { - state: false, - reason: '' } } diff --git a/.jest/__fixtures__/datasetAquarius.ts b/.jest/__fixtures__/datasetAquarius.ts index c581c3261..ad15a889b 100644 --- a/.jest/__fixtures__/datasetAquarius.ts +++ b/.jest/__fixtures__/datasetAquarius.ts @@ -1,6 +1,6 @@ -import { Asset } from '@oceanprotocol/lib' +// import { Asset } from '@oceanprotocol/lib' -export const datasetAquarius: Asset = { +export const datasetAquarius: AssetExtended = { '@context': ['https://w3id.org/did/v1'], id: 'did:op:6654b0793765b269696cec8d2f0d077d9bbcdd3c4f033d941ab9684e8ad06630', nftAddress: '0xbA5BA7B09e2FA1eb0258f647503F81D2Af5cb07d', @@ -39,42 +39,44 @@ export const datasetAquarius: Asset = { timeout: 604800 } ], - event: { - tx: '0x3e07a75c1cc5d4146222a93ab4319144e60ecca3ebfb8b15f1ff339d6f479dc9', - block: 7680195, - from: '0x903322C7E45A60d7c8C3EA236c5beA9Af86310c7', - contract: '0xbA5BA7B09e2FA1eb0258f647503F81D2Af5cb07d', - datetime: '2022-09-29T11:31:12' - }, - nft: { - address: '0xbA5BA7B09e2FA1eb0258f647503F81D2Af5cb07d', - name: 'Ocean Data NFT', - symbol: 'OCEAN-NFT', - state: 0, - tokenURI: - 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDo2NjU0YjA3OTM3NjViMjY5Njk2Y2VjOGQyZjBkMDc3ZDliYmNkZDNjNGYwMzNkOTQxYWI5Njg0ZThhZDA2NjMwIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjY2NTRiMDc5Mzc2NWIyNjk2OTZjZWM4ZDJmMGQwNzdkOWJiY2RkM2M0ZjAzM2Q5NDFhYjk2ODRlOGFkMDY2MzAiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDI5QzksMjUgMTksMjIgMjksMjFDMzgsMTkgNDksMTkgNjEsMjFDNzIsMjIgODUsMjUgOTksMjlMOTksOTlaJy8lM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmJiJyBkPSdNMCw5OUwwLDU1QzgsNDkgMTcsNDQgMjgsNDNDMzgsNDEgNTAsNDIgNjMsNDNDNzUsNDMgODcsNDIgOTksNDJMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJmZicgZD0nTTAsOTlMMCw2OEMxMSw2NiAyMiw2NSAzMiw2N0M0MSw2OCA1MCw3MyA2MSw3NkM3MSw3OCA4NSw3OCA5OSw3OUw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFIn0=', - owner: '0x99840Df5Cb42faBE0Feb8811Aaa4BC99cA6C84e0', - created: '2022-09-29T11:31:12' - }, - datatokens: [ - { - address: '0x067e1E6ec580F3F0f6781679A4A5AB07A6464b08', - name: 'Stupendous Orca Token', - symbol: 'STUORC-59', - serviceId: - 'dbc42f4c62d2452f8731fd023eacfae74e9c7a42fbd12ce84310f13342e4aab1' - } - ], - stats: { - orders: 22, - price: { - value: 3231343254, - tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', - tokenSymbol: 'OCEAN' + indexedMetadata: { + nft: { + address: '0xbA5BA7B09e2FA1eb0258f647503F81D2Af5cb07d', + name: 'Ocean Data NFT', + symbol: 'OCEAN-NFT', + state: 0, + tokenURI: + 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDo2NjU0YjA3OTM3NjViMjY5Njk2Y2VjOGQyZjBkMDc3ZDliYmNkZDNjNGYwMzNkOTQxYWI5Njg0ZThhZDA2NjMwIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjY2NTRiMDc5Mzc2NWIyNjk2OTZjZWM4ZDJmMGQwNzdkOWJiY2RkM2M0ZjAzM2Q5NDFhYjk2ODRlOGFkMDY2MzAiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDI5QzksMjUgMTksMjIgMjksMjFDMzgsMTkgNDksMTkgNjEsMjFDNzIsMjIgODUsMjUgOTksMjlMOTksOTlaJy8lM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmJiJyBkPSdNMCw5OUwwLDU1QzgsNDkgMTcsNDQgMjgsNDNDMzgsNDEgNTAsNDIgNjMsNDNDNzUsNDMgODcsNDIgOTksNDJMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJmZicgZD0nTTAsOTlMMCw2OEMxMSw2NiAyMiw2NSAzMiw2N0M0MSw2OCA1MCw3MyA2MSw3NkM3MSw3OCA4NSw3OCA5OSw3OUw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFIn0=', + owner: '0x99840Df5Cb42faBE0Feb8811Aaa4BC99cA6C84e0', + created: '2022-09-29T11:31:12' + }, + event: { + txid: '0x3e07a75c1cc5d4146222a93ab4319144e60ecca3ebfb8b15f1ff339d6f479dc9', + block: 7680195, + from: '0x903322C7E45A60d7c8C3EA236c5beA9Af86310c7', + contract: '0xbA5BA7B09e2FA1eb0258f647503F81D2Af5cb07d', + datetime: '2022-09-29T11:31:12' + }, + stats: [ + { + datatokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', + name: 'string', + symbol: 'OCEAN', + serviceId: + 'dbc42f4c62d2452f8731fd023eacfae74e9c7a42fbd12ce84310f13342e4aab1', + orders: 22, + prices: [ + { + type: 'fixedrate', + price: '2', + contract: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a' + } + ] + } + ], + purgatory: { + state: false, + reason: '' } - }, - purgatory: { - state: false, - reason: '' } } diff --git a/.jest/__fixtures__/datasetsWithAccessDetails.ts b/.jest/__fixtures__/datasetsWithAccessDetails.ts index 4b4fe1b20..7d0320e67 100644 --- a/.jest/__fixtures__/datasetsWithAccessDetails.ts +++ b/.jest/__fixtures__/datasetsWithAccessDetails.ts @@ -98,7 +98,7 @@ export const assets: AssetExtended[] = [ contract: '0x866e4ED7b001f40c4067d0a37d6d401a0B13EfD6', datetime: '2022-10-06T23:06:11', from: '0x58754d9b3dbB4ddF5AC3502AcB963743b15e6398', - tx: '0x8af31b8dae91094f0d559fa13c51b7fcb278f9cb8525c2e7badabacf77989a7a' + txid: '0x8af31b8dae91094f0d559fa13c51b7fcb278f9cb8525c2e7badabacf77989a7a' }, id: 'did:op:dabbcf352e9d90d4e4f44a50440b0798a1a1d90e762ab2c7edba6ab4f2129deb', metadata: { @@ -1482,7 +1482,7 @@ export const assets: AssetExtended[] = [ contract: '0x3a1deC08e0367D8eCCBa714DF23949c105B7D06B', datetime: '2022-10-04T02:38:59', from: '0x8542472a8De568cD3B09A53368C1962d8DfDBE2f', - tx: '0x9f717d0386598349b0e19c45f7dcf2ead5b219b25e1fc08902ebe651c48398fb' + txid: '0x9f717d0386598349b0e19c45f7dcf2ead5b219b25e1fc08902ebe651c48398fb' }, id: 'did:op:9442a55c25e9a0fd30231089ec34e430d0325ce0d3e03ab1aa27579eb56f7570', metadata: { diff --git a/.jest/__fixtures__/marketMetadata.ts b/.jest/__fixtures__/marketMetadata.ts index 1f8f92728..fa3354774 100644 --- a/.jest/__fixtures__/marketMetadata.ts +++ b/.jest/__fixtures__/marketMetadata.ts @@ -1,5 +1,5 @@ import siteContent from '../../content/site.json' -import appConfig from '../../app.config' +import appConfig from '../../app.config.cjs' export default { getOpcFeeForToken: jest.fn(), diff --git a/.jest/__fixtures__/prices.ts b/.jest/__fixtures__/prices.ts index dd5bc5967..4284cc562 100644 --- a/.jest/__fixtures__/prices.ts +++ b/.jest/__fixtures__/prices.ts @@ -1,20 +1,20 @@ export default { prices: { - h2o: { - btc: 0.00009013, - cad: 2.38, - cny: 12.36, - eth: 0.00132713, - eur: 1.78, - gbp: 1.55, - hkd: 13.53, - inr: 141.78, - jpy: 253.21, - link: 0.24050954, - rub: 109.81, - sgd: 2.47, - usd: 1.72 - }, + // h2o: { + // btc: 0.00009013, + // cad: 2.38, + // cny: 12.36, + // eth: 0.00132713, + // eur: 1.78, + // gbp: 1.55, + // hkd: 13.53, + // inr: 141.78, + // jpy: 253.21, + // link: 0.24050954, + // rub: 109.81, + // sgd: 2.47, + // usd: 1.72 + // }, 'matic-network': { btc: 0.0000414, cad: 1.093, diff --git a/app.config.cjs b/app.config.cjs index 55e905ed3..dbc154798 100644 --- a/app.config.cjs +++ b/app.config.cjs @@ -11,10 +11,10 @@ module.exports = { // List of chainIds which metadata cache queries will return by default. // This preselects the Chains user preferences. - chainIds: [11155111, 8996], + chainIds: [11155420, 11155111, 8996], // List of all supported chainIds. Used to populate the Chains user preferences list. - chainIdsSupported: [11155111, 8996], + chainIdsSupported: [11155420, 11155111, 8996], customProviderUrl: process.env.NEXT_PUBLIC_NODE_URL, allowDynamicPricing: process.env.NEXT_PUBLIC_ALLOW_DYNAMIC_PRICING || 'false', @@ -61,7 +61,7 @@ module.exports = { // Tokens to fetch the spot prices from coingecko, against above currencies. // Refers to Coingecko API tokenIds. - coingeckoTokenIds: ['ocean-protocol', 'h2o', 'ethereum', 'matic-network'], + coingeckoTokenIds: ['ocean-protocol', 'ethereum', 'matic-network'], // Config for https://github.com/oceanprotocol/use-dark-mode darkModeConfig: { diff --git a/package-lock.json b/package-lock.json index d3d3758d0..79deaf946 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,7 +16,7 @@ "@loadable/component": "^5.16.4", "@next/third-parties": "^15.2.3", "@oceanprotocol/art": "^3.2.0", - "@oceanprotocol/lib": "^4.0.1", + "@oceanprotocol/lib": "^4.1.3", "@oceanprotocol/typographies": "^0.1.0", "@oceanprotocol/use-dark-mode": "^2.4.3", "@orbisclub/orbis-sdk": "^0.4.89", @@ -65,6 +65,7 @@ "slugify": "^1.6.6", "swr": "^1.3.0", "urql": "^3.0.4", + "use-debounce": "^9.0.4", "wagmi": "^0.12.19", "yup": "^0.32.11" }, @@ -7004,60 +7005,43 @@ "integrity": "sha512-aUQtg4m5hJlQ0u8C29O9TXJWcAenO3G9vP+vf6LNFkpTDOCMycN/F0SzHS89VNrvGUha8oTDEg7FAkfZBPv2WA==" }, "node_modules/@oceanprotocol/contracts": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-2.3.0.tgz", - "integrity": "sha512-vRNj8Giibe22LRWTKk47ZrQs1HkrhLO2vOpSmwjLktqx6UB5JXpH4Tf1kQNpEIKMpoHF69/oHlCMOxjmc4r8ow==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-2.3.1.tgz", + "integrity": "sha512-43Vz+DJfoNZLteg91sYvNDR5tJLWcAXl78VoSTriw38j81p6FSLcPNCHzPZKwX9FxyMk3uQe9U4u9REUBEQUfw==", "license": "Apache-2.0" }, "node_modules/@oceanprotocol/ddo-js": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@oceanprotocol/ddo-js/-/ddo-js-0.0.1.tgz", - "integrity": "sha512-PoS7dG82+oqQ/StP05ObR2n4HGXYqf1KH3bR3lsrhi76JK5Ov866h0QTUN1oy3TVSvWqdtVrSjZRkacZyz2RWA==", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@oceanprotocol/ddo-js/-/ddo-js-0.0.8.tgz", + "integrity": "sha512-Rv/vbsWjMEmwsLX57TYmJ0nuV3lOnJ4C6IKFvW14lfsN72e6i8kBshpFx7tYjpuVyW+WgyHvGOGjQmf0WBj0Mw==", "license": "Apache-2.0", "dependencies": { - "@rdfjs/dataset": "^2.0.2", "@rdfjs/formats-common": "^3.1.0", - "@rdfjs/types": "^1.1.2", - "@types/rdfjs__data-model": "^2.0.8", - "@types/rdfjs__dataset": "^2.0.7", "@types/rdfjs__formats-common": "^3.1.5", - "@types/rdfjs__parser-jsonld": "^2.1.7", - "@types/rdfjs__to-ntriples": "^3.0.0", "@zazuko/env-node": "^2.1.4", - "axios": "^1.7.9", "chai": "^5.1.2", - "crypto": "^1.0.1", "ethers": "^5.7.2", - "jose": "^5.9.6", - "lodash": "^4.17.21", + "rdf-literal": "^2.0.0", "rdf-validate-shacl": "^0.5.6" } }, - "node_modules/@oceanprotocol/ddo-js/node_modules/@rdfjs/types": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.2.tgz", - "integrity": "sha512-wqpOJK1QCbmsGNtyzYnojPU8gRDPid2JO0Q0kMtb4j65xhCK880cnKAfEOwC+dX85VJcCByQx5zOwyyfCjDJsg==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@oceanprotocol/lib": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-4.0.1.tgz", - "integrity": "sha512-CgwoXSILBfPUAAwp6fCsdSa8LnYhauHtVrRgHN7ldGDXybadgC6tGf1QNsuq6M3UM3B0sF+dkQ0vbnjztVft0A==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-4.1.3.tgz", + "integrity": "sha512-PmMwrZPpWo/bBErK/LddVRXdWNBKdFqUgckMR2UukaftApBNqYukefodPOUoOSRAZyVBdAcsXh74MyeWvOff4w==", "license": "Apache-2.0", "dependencies": { "@oasisprotocol/sapphire-paratime": "^1.3.2", - "@oceanprotocol/contracts": "^2.2.0", - "@oceanprotocol/ddo-js": "^0.0.1-next.7", + "@oceanprotocol/contracts": "^2.3.0", + "@oceanprotocol/ddo-js": "^0.0.8", "@rdfjs/dataset": "^2.0.2", "@rdfjs/formats-common": "^3.1.0", "@zazuko/env-node": "^2.1.4", "cross-fetch": "^4.0.0", "crypto-js": "^4.1.1", "decimal.js": "^10.4.1", - "ethers": "^5.7.2" + "ethers": "^5.7.2", + "form-data": "^2.3.3" }, "peerDependencies": { "web3": "^1.8.0" @@ -7072,6 +7056,22 @@ "node-fetch": "^2.7.0" } }, + "node_modules/@oceanprotocol/lib/node_modules/form-data": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.3.tgz", + "integrity": "sha512-XHIrMD0NpDrNM/Ckf7XJiBbLl57KEhT3+i3yY+eWm+cqYZJQTZrKo8Y8AWKnuV5GT4scfuUGt9LzNoIx3dU1nQ==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.35", + "safe-buffer": "^5.2.1" + }, + "engines": { + "node": ">= 0.12" + } + }, "node_modules/@oceanprotocol/lib/node_modules/node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -7092,6 +7092,26 @@ } } }, + "node_modules/@oceanprotocol/lib/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/@oceanprotocol/lib/node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -17468,6 +17488,7 @@ "resolved": "https://registry.npmjs.org/@types/rdfjs__data-model/-/rdfjs__data-model-2.0.9.tgz", "integrity": "sha512-rgQSlM9jr7XMZdC0xUIr0zsxf5FvdB4cxxzv+MlHm6uJGip5qi0q+BluNhakAzaM2I56nKLDqSE3I/XuOaHGnA==", "license": "MIT", + "peer": true, "dependencies": { "@rdfjs/types": "*" } @@ -17477,6 +17498,7 @@ "resolved": "https://registry.npmjs.org/@types/rdfjs__dataset/-/rdfjs__dataset-2.0.7.tgz", "integrity": "sha512-+GaYIL9C7N1N0HyH+obU4IXuL7DX+fXuf827aUQ2Vx2UghO47+OTxo2v3seEQj/1YHoHBfQFk5Y4P6Q7Ht4Hqw==", "license": "MIT", + "peer": true, "dependencies": { "@rdfjs/types": "*" } @@ -17648,15 +17670,6 @@ "@rdfjs/types": "*" } }, - "node_modules/@types/rdfjs__to-ntriples": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/rdfjs__to-ntriples/-/rdfjs__to-ntriples-3.0.0.tgz", - "integrity": "sha512-3qZGpe2L3s2fAwmLvDDrcPCVDQmmEsg1KpwDd6bLPcCWQ7BISWHIQX/k/l1VU9EZB8uNoEAcmRmeVJY2jnu7wA==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": ">=1.0.0" - } - }, "node_modules/@types/rdfjs__traverser": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/@types/rdfjs__traverser/-/rdfjs__traverser-0.1.5.tgz", @@ -25635,13 +25648,6 @@ } } }, - "node_modules/crypto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", - "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", - "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in.", - "license": "ISC" - }, "node_modules/crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -27357,7 +27363,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", @@ -35801,15 +35806,6 @@ "@sideway/pinpoint": "^2.0.0" } }, - "node_modules/jose": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/jose/-/jose-5.10.0.tgz", - "integrity": "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/panva" - } - }, "node_modules/js-cookie": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", @@ -46015,31 +46011,16 @@ } }, "node_modules/rdf-literal": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/rdf-literal/-/rdf-literal-1.3.2.tgz", - "integrity": "sha512-79Stlu3sXy0kq9/decHFLf3xNPuY6sfhFPhd/diWErgaFr0Ekyg38Vh9bnVcqDYu48CFRi0t+hrFii49n92Hbw==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": "*", - "rdf-data-factory": "^1.1.0" - } - }, - "node_modules/rdf-literal/node_modules/@rdfjs/types": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.2.tgz", - "integrity": "sha512-wqpOJK1QCbmsGNtyzYnojPU8gRDPid2JO0Q0kMtb4j65xhCK880cnKAfEOwC+dX85VJcCByQx5zOwyyfCjDJsg==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/rdf-literal/node_modules/rdf-data-factory": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-1.1.3.tgz", - "integrity": "sha512-ny6CI7m2bq4lfQQmDYvcb2l1F9KtGwz9chipX4oWu2aAtVoXjb7k3d8J1EsgAsEbMXnBipB/iuRen5H2fwRWWQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rdf-literal/-/rdf-literal-2.0.0.tgz", + "integrity": "sha512-jlQ+h7EvnXmncmk8OzOYR8T3gNfd4g0LQXbflHkEkancic8dh0Tdt5RiRq8vUFndjIeNHt1RWeA5TAj6rgrtng==", "license": "MIT", "dependencies": { - "@rdfjs/types": "^1.0.0" + "rdf-data-factory": "^2.0.0" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/rubensworks/" } }, "node_modules/rdf-validate-datatype": { @@ -46080,6 +46061,25 @@ "@types/node": "*" } }, + "node_modules/rdf-validate-shacl/node_modules/rdf-data-factory": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-1.1.3.tgz", + "integrity": "sha512-ny6CI7m2bq4lfQQmDYvcb2l1F9KtGwz9chipX4oWu2aAtVoXjb7k3d8J1EsgAsEbMXnBipB/iuRen5H2fwRWWQ==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "^1.0.0" + } + }, + "node_modules/rdf-validate-shacl/node_modules/rdf-literal": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/rdf-literal/-/rdf-literal-1.3.2.tgz", + "integrity": "sha512-79Stlu3sXy0kq9/decHFLf3xNPuY6sfhFPhd/diWErgaFr0Ekyg38Vh9bnVcqDYu48CFRi0t+hrFii49n92Hbw==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": "*", + "rdf-data-factory": "^1.1.0" + } + }, "node_modules/rdfxml-streaming-parser": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/rdfxml-streaming-parser/-/rdfxml-streaming-parser-2.4.0.tgz", @@ -52727,6 +52727,18 @@ "node": ">=0.10.0" } }, + "node_modules/use-debounce": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/use-debounce/-/use-debounce-9.0.4.tgz", + "integrity": "sha512-6X8H/mikbrt0XE8e+JXRtZ8yYVvKkdYRfmIhWZYsP8rcNs9hk3APV8Ua2mFkKRLcJKVdnX2/Vwrmg2GWKUQEaQ==", + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0" + } + }, "node_modules/use-isomorphic-layout-effect": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", @@ -59632,58 +59644,40 @@ "integrity": "sha512-aUQtg4m5hJlQ0u8C29O9TXJWcAenO3G9vP+vf6LNFkpTDOCMycN/F0SzHS89VNrvGUha8oTDEg7FAkfZBPv2WA==" }, "@oceanprotocol/contracts": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-2.3.0.tgz", - "integrity": "sha512-vRNj8Giibe22LRWTKk47ZrQs1HkrhLO2vOpSmwjLktqx6UB5JXpH4Tf1kQNpEIKMpoHF69/oHlCMOxjmc4r8ow==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-2.3.1.tgz", + "integrity": "sha512-43Vz+DJfoNZLteg91sYvNDR5tJLWcAXl78VoSTriw38j81p6FSLcPNCHzPZKwX9FxyMk3uQe9U4u9REUBEQUfw==" }, "@oceanprotocol/ddo-js": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@oceanprotocol/ddo-js/-/ddo-js-0.0.1.tgz", - "integrity": "sha512-PoS7dG82+oqQ/StP05ObR2n4HGXYqf1KH3bR3lsrhi76JK5Ov866h0QTUN1oy3TVSvWqdtVrSjZRkacZyz2RWA==", + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/@oceanprotocol/ddo-js/-/ddo-js-0.0.8.tgz", + "integrity": "sha512-Rv/vbsWjMEmwsLX57TYmJ0nuV3lOnJ4C6IKFvW14lfsN72e6i8kBshpFx7tYjpuVyW+WgyHvGOGjQmf0WBj0Mw==", "requires": { - "@rdfjs/dataset": "^2.0.2", "@rdfjs/formats-common": "^3.1.0", - "@rdfjs/types": "^1.1.2", - "@types/rdfjs__data-model": "^2.0.8", - "@types/rdfjs__dataset": "^2.0.7", "@types/rdfjs__formats-common": "^3.1.5", - "@types/rdfjs__parser-jsonld": "^2.1.7", - "@types/rdfjs__to-ntriples": "^3.0.0", "@zazuko/env-node": "^2.1.4", - "axios": "^1.7.9", "chai": "^5.1.2", - "crypto": "^1.0.1", "ethers": "^5.7.2", - "jose": "^5.9.6", - "lodash": "^4.17.21", + "rdf-literal": "^2.0.0", "rdf-validate-shacl": "^0.5.6" - }, - "dependencies": { - "@rdfjs/types": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.2.tgz", - "integrity": "sha512-wqpOJK1QCbmsGNtyzYnojPU8gRDPid2JO0Q0kMtb4j65xhCK880cnKAfEOwC+dX85VJcCByQx5zOwyyfCjDJsg==", - "requires": { - "@types/node": "*" - } - } } }, "@oceanprotocol/lib": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-4.0.1.tgz", - "integrity": "sha512-CgwoXSILBfPUAAwp6fCsdSa8LnYhauHtVrRgHN7ldGDXybadgC6tGf1QNsuq6M3UM3B0sF+dkQ0vbnjztVft0A==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/@oceanprotocol/lib/-/lib-4.1.3.tgz", + "integrity": "sha512-PmMwrZPpWo/bBErK/LddVRXdWNBKdFqUgckMR2UukaftApBNqYukefodPOUoOSRAZyVBdAcsXh74MyeWvOff4w==", "requires": { "@oasisprotocol/sapphire-paratime": "^1.3.2", - "@oceanprotocol/contracts": "^2.2.0", - "@oceanprotocol/ddo-js": "^0.0.1-next.7", + "@oceanprotocol/contracts": "^2.3.0", + "@oceanprotocol/ddo-js": "^0.0.8", "@rdfjs/dataset": "^2.0.2", "@rdfjs/formats-common": "^3.1.0", "@zazuko/env-node": "^2.1.4", "cross-fetch": "^4.0.0", "crypto-js": "^4.1.1", "decimal.js": "^10.4.1", - "ethers": "^5.7.2" + "ethers": "^5.7.2", + "form-data": "^2.3.3" }, "dependencies": { "cross-fetch": { @@ -59694,6 +59688,18 @@ "node-fetch": "^2.7.0" } }, + "form-data": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.3.tgz", + "integrity": "sha512-XHIrMD0NpDrNM/Ckf7XJiBbLl57KEhT3+i3yY+eWm+cqYZJQTZrKo8Y8AWKnuV5GT4scfuUGt9LzNoIx3dU1nQ==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.35", + "safe-buffer": "^5.2.1" + } + }, "node-fetch": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", @@ -59702,6 +59708,11 @@ "whatwg-url": "^5.0.0" } }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" + }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -67612,6 +67623,7 @@ "version": "2.0.9", "resolved": "https://registry.npmjs.org/@types/rdfjs__data-model/-/rdfjs__data-model-2.0.9.tgz", "integrity": "sha512-rgQSlM9jr7XMZdC0xUIr0zsxf5FvdB4cxxzv+MlHm6uJGip5qi0q+BluNhakAzaM2I56nKLDqSE3I/XuOaHGnA==", + "peer": true, "requires": { "@rdfjs/types": "*" } @@ -67620,6 +67632,7 @@ "version": "2.0.7", "resolved": "https://registry.npmjs.org/@types/rdfjs__dataset/-/rdfjs__dataset-2.0.7.tgz", "integrity": "sha512-+GaYIL9C7N1N0HyH+obU4IXuL7DX+fXuf827aUQ2Vx2UghO47+OTxo2v3seEQj/1YHoHBfQFk5Y4P6Q7Ht4Hqw==", + "peer": true, "requires": { "@rdfjs/types": "*" } @@ -67776,14 +67789,6 @@ "@rdfjs/types": "*" } }, - "@types/rdfjs__to-ntriples": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/rdfjs__to-ntriples/-/rdfjs__to-ntriples-3.0.0.tgz", - "integrity": "sha512-3qZGpe2L3s2fAwmLvDDrcPCVDQmmEsg1KpwDd6bLPcCWQ7BISWHIQX/k/l1VU9EZB8uNoEAcmRmeVJY2jnu7wA==", - "requires": { - "@rdfjs/types": ">=1.0.0" - } - }, "@types/rdfjs__traverser": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/@types/rdfjs__traverser/-/rdfjs__traverser-0.1.5.tgz", @@ -74211,11 +74216,6 @@ "integrity": "sha512-DAxroI2uSOgUKLz00NX6A8U/8EE3SZHmIND+10jkVSaypvyt57J5JEOxAQOL6lQxyzi/wZbTIwssU1uy69h5Vg==", "requires": {} }, - "crypto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", - "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==" - }, "crypto-browserify": { "version": "3.12.0", "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", @@ -75554,7 +75554,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, "requires": { "es-errors": "^1.3.0", "get-intrinsic": "^1.2.6", @@ -81959,11 +81958,6 @@ "@sideway/pinpoint": "^2.0.0" } }, - "jose": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/jose/-/jose-5.10.0.tgz", - "integrity": "sha512-s+3Al/p9g32Iq+oqXxkW//7jk2Vig6FF1CFqzVXoTUXt2qz89YWbL+OwS17NFYEvxC35n0FKeGO2LGYSxeM2Gg==" - }, "js-cookie": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz", @@ -89513,30 +89507,11 @@ } }, "rdf-literal": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/rdf-literal/-/rdf-literal-1.3.2.tgz", - "integrity": "sha512-79Stlu3sXy0kq9/decHFLf3xNPuY6sfhFPhd/diWErgaFr0Ekyg38Vh9bnVcqDYu48CFRi0t+hrFii49n92Hbw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rdf-literal/-/rdf-literal-2.0.0.tgz", + "integrity": "sha512-jlQ+h7EvnXmncmk8OzOYR8T3gNfd4g0LQXbflHkEkancic8dh0Tdt5RiRq8vUFndjIeNHt1RWeA5TAj6rgrtng==", "requires": { - "@rdfjs/types": "*", - "rdf-data-factory": "^1.1.0" - }, - "dependencies": { - "@rdfjs/types": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.2.tgz", - "integrity": "sha512-wqpOJK1QCbmsGNtyzYnojPU8gRDPid2JO0Q0kMtb4j65xhCK880cnKAfEOwC+dX85VJcCByQx5zOwyyfCjDJsg==", - "requires": { - "@types/node": "*" - } - }, - "rdf-data-factory": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-1.1.3.tgz", - "integrity": "sha512-ny6CI7m2bq4lfQQmDYvcb2l1F9KtGwz9chipX4oWu2aAtVoXjb7k3d8J1EsgAsEbMXnBipB/iuRen5H2fwRWWQ==", - "requires": { - "@rdfjs/types": "^1.0.0" - } - } + "rdf-data-factory": "^2.0.0" } }, "rdf-validate-datatype": { @@ -89573,6 +89548,23 @@ "requires": { "@types/node": "*" } + }, + "rdf-data-factory": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-1.1.3.tgz", + "integrity": "sha512-ny6CI7m2bq4lfQQmDYvcb2l1F9KtGwz9chipX4oWu2aAtVoXjb7k3d8J1EsgAsEbMXnBipB/iuRen5H2fwRWWQ==", + "requires": { + "@rdfjs/types": "^1.0.0" + } + }, + "rdf-literal": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/rdf-literal/-/rdf-literal-1.3.2.tgz", + "integrity": "sha512-79Stlu3sXy0kq9/decHFLf3xNPuY6sfhFPhd/diWErgaFr0Ekyg38Vh9bnVcqDYu48CFRi0t+hrFii49n92Hbw==", + "requires": { + "@rdfjs/types": "*", + "rdf-data-factory": "^1.1.0" + } } } }, @@ -94630,6 +94622,12 @@ "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==" }, + "use-debounce": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/use-debounce/-/use-debounce-9.0.4.tgz", + "integrity": "sha512-6X8H/mikbrt0XE8e+JXRtZ8yYVvKkdYRfmIhWZYsP8rcNs9hk3APV8Ua2mFkKRLcJKVdnX2/Vwrmg2GWKUQEaQ==", + "requires": {} + }, "use-isomorphic-layout-effect": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", diff --git a/package.json b/package.json index 2b12697a6..5dbf840fc 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,7 @@ "@loadable/component": "^5.16.4", "@next/third-parties": "^15.2.3", "@oceanprotocol/art": "^3.2.0", - "@oceanprotocol/lib": "^4.0.1", + "@oceanprotocol/lib": "^4.1.3", "@oceanprotocol/typographies": "^0.1.0", "@oceanprotocol/use-dark-mode": "^2.4.3", "@orbisclub/orbis-sdk": "^0.4.89", @@ -81,6 +81,7 @@ "slugify": "^1.6.6", "swr": "^1.3.0", "urql": "^3.0.4", + "use-debounce": "^9.0.4", "wagmi": "^0.12.19", "yup": "^0.32.11" }, diff --git a/src/@context/Asset.tsx b/src/@context/Asset.tsx index 270de94d0..1e2fcd72a 100644 --- a/src/@context/Asset.tsx +++ b/src/@context/Asset.tsx @@ -7,7 +7,8 @@ import React, { useCallback, ReactNode } from 'react' -import { Config, LoggerInstance, Purgatory } from '@oceanprotocol/lib' +import { Config, LoggerInstance } from '@oceanprotocol/lib' +import { Purgatory } from '@oceanprotocol/ddo-js' import { CancelToken } from 'axios' import { getAsset } from '@utils/aquarius' import { useCancelToken } from '@hooks/useCancelToken' @@ -43,6 +44,7 @@ function AssetProvider({ did: string children: ReactNode }): ReactElement { + console.log('In Asset Provider!!!!!!!!!!!!') const { appConfig } = useMarketMetadata() const { address: accountId } = useAccount() const { chain } = useNetwork() @@ -79,6 +81,11 @@ function AssetProvider({ LoggerInstance.log('[asset] Fetching asset...') setLoading(true) const asset = await getAsset(did, token) + console.log('DDO Asset in AssetProvider!!!!!!!!!!!!', asset) + console.log( + 'DDO Asset in AssetProvider!!!!!!!!!!!!', + asset.indexedMetadata.nft.state + ) if (!asset) { setError( @@ -89,13 +96,16 @@ function AssetProvider({ return } - if (asset.nft.state === (1 | 2 | 3)) { + if (asset.indexedMetadata.nft.state === (1 | 2 | 3)) { setTitle( `This asset has been set as "${assetStateToString( - asset.nft.state + asset.indexedMetadata.nft.state )}" by the publisher` ) - setError(`\`${did}\`` + `\n\nPublisher Address: ${asset.nft.owner}`) + setError( + `\`${did}\`` + + `\n\nPublisher Address: ${asset.indexedMetadata.nft.owner}` + ) LoggerInstance.error(`[asset] Failed getting asset for ${did}`, asset) return } @@ -106,10 +116,10 @@ function AssetProvider({ ...asset })) setTitle(asset.metadata?.name) - setOwner(asset.nft?.owner) - setIsInPurgatory(asset.purgatory?.state) - setPurgatoryData(asset.purgatory) - setAssetState(assetStateToString(asset.nft.state)) + setOwner(asset.indexedMetadata.nft?.owner) + setIsInPurgatory(asset.indexedMetadata.purgatory?.state) + setPurgatoryData(asset.indexedMetadata.purgatory) + setAssetState(assetStateToString(asset.indexedMetadata.nft.state)) LoggerInstance.log('[asset] Got asset', asset) } @@ -126,10 +136,11 @@ function AssetProvider({ const accessDetails = await getAccessDetails( asset.chainId, - asset.services[0] - // asset.services[0].timeout, - // accountId + asset.services[0], + accountId, + newCancelToken() ) + console.log('access details fetched!!', accessDetails) setAsset((prevState) => ({ ...prevState, accessDetails @@ -196,8 +207,8 @@ function AssetProvider({ // Set Asset State as a string // ----------------------------------- useEffect(() => { - if (!asset?.nft) return - setAssetState(assetStateToString(asset.nft.state)) + if (!asset?.indexedMetadata.nft) return + setAssetState(assetStateToString(asset.indexedMetadata.nft.state)) }, [asset]) return ( diff --git a/src/@context/Filter.tsx b/src/@context/Filter.tsx new file mode 100644 index 000000000..aee84b1cc --- /dev/null +++ b/src/@context/Filter.tsx @@ -0,0 +1,69 @@ +import { + createContext, + useContext, + ReactElement, + ReactNode, + useState +} from 'react' +import { + SortDirectionOptions, + SortTermOptions +} from '../../src/@types/aquarius/SearchQuery' + +export interface Filters { + [key: string]: string[] +} + +export interface Sort { + sort: SortTermOptions + sortOrder: SortDirectionOptions +} + +interface FilterValue { + filters: Filters + setFilters: (filters: Filters) => void + ignorePurgatory: boolean + setIgnorePurgatory: (value: boolean) => void + sort: Sort + setSort: (sort: Sort) => void +} + +const FilterContext = createContext({} as FilterValue) + +function FilterProvider({ children }: { children: ReactNode }): ReactElement { + const [filters, setFilters] = useState({ + accessType: [], + serviceType: [], + filterSet: [], + filterTime: [], + assetState: [] + }) + const [ignorePurgatory, setIgnorePurgatory] = useState(true) + const [sort, setSort] = useState({ + sort: SortTermOptions.Created, + sortOrder: SortDirectionOptions.Descending + }) + + return ( + // eslint-disable-next-line react/react-in-jsx-scope + + {children} + + ) +} + +// Helper hook to access the provider values +const useFilter = (): FilterValue => useContext(FilterContext) + +export { FilterProvider, useFilter } diff --git a/src/@context/MarketMetadata/index.tsx b/src/@context/MarketMetadata/index.tsx index 7510ad7f5..c99f1d76d 100644 --- a/src/@context/MarketMetadata/index.tsx +++ b/src/@context/MarketMetadata/index.tsx @@ -59,7 +59,20 @@ function MarketMetadataProvider({ useEffect(() => { if (isLoading) return - setApprovedBaseTokens(approvedBaseTokens) + + const oceanToken: TokenInfo = { + address: appConfig.oceanTokenAddress, + name: 'OCEAN', + symbol: 'OCEAN', + decimals: 18 + } + + setApprovedBaseTokens((prevTokens = []) => { + const hasOceanToken = prevTokens.some( + (token) => token.address === oceanToken.address + ) + return hasOceanToken ? prevTokens : [...prevTokens, oceanToken] + }) }, [isLoading, approvedBaseTokens]) return ( diff --git a/src/@context/Prices/_utils.ts b/src/@context/Prices/_utils.ts index 67310f5eb..4279c7d19 100644 --- a/src/@context/Prices/_utils.ts +++ b/src/@context/Prices/_utils.ts @@ -5,14 +5,12 @@ export function getCoingeckoTokenId(symbol: string) { // can be OCEAN or mOCEAN const isOcean = symbol?.toLowerCase().includes('ocean') // can be H2O or H20 - const isH2o = symbol?.toLowerCase().includes('h2') + // const isH2o = symbol?.toLowerCase().includes('h2') const isEth = symbol?.toLowerCase() === 'eth' const isMatic = symbol?.toLowerCase() === 'matic' const priceTokenId = isOcean ? 'ocean-protocol' - : isH2o - ? 'h2o' : isEth ? 'ethereum' : isMatic diff --git a/src/@context/UrqlProvider.tsx b/src/@context/UrqlProvider.tsx index d73ef871f..d738c1621 100644 --- a/src/@context/UrqlProvider.tsx +++ b/src/@context/UrqlProvider.tsx @@ -13,6 +13,7 @@ import { getOceanConfig } from '@utils/ocean' let urqlClient: Client function createUrqlClient(subgraphUri: string) { + // for now let's keep this file const client = createClient({ url: `${subgraphUri}/subgraphs/name/oceanprotocol/ocean-subgraph`, exchanges: [dedupExchange, refocusExchange(), fetchExchange] @@ -40,17 +41,17 @@ export default function UrqlClientProvider({ useEffect(() => { const oceanConfig = getOceanConfig(1) - if (!oceanConfig?.subgraphUri) { + if (!oceanConfig?.nodeUri) { LoggerInstance.error( - 'No subgraphUri defined, preventing UrqlProvider from initialization.' + 'No NodeURI defined, preventing UrqlProvider from initialization.' ) return } - const newClient = createUrqlClient(oceanConfig.subgraphUri) + const newClient = createUrqlClient(oceanConfig.nodeUri) urqlClient = newClient setClient(newClient) - LoggerInstance.log(`[URQL] Client connected to ${oceanConfig.subgraphUri}`) + LoggerInstance.log(`[URQL] Client connected to ${oceanConfig.nodeUri}`) }, []) return client ? {children} : <> diff --git a/src/@hooks/useNftFactory.ts b/src/@hooks/useNftFactory.ts index 6ca8dc1ab..3aab6191e 100644 --- a/src/@hooks/useNftFactory.ts +++ b/src/@hooks/useNftFactory.ts @@ -23,6 +23,7 @@ function useNftFactory(): NftFactory { } const factory = new NftFactory(config.nftFactoryAddress, signer) + console.log('nft factory address', config.nftFactoryAddress) setNftFactory(factory) }, [signer, chain?.id]) diff --git a/src/@types/AssetExtended.d.ts b/src/@types/AssetExtended.d.ts index 71d63e265..0e85f2905 100644 --- a/src/@types/AssetExtended.d.ts +++ b/src/@types/AssetExtended.d.ts @@ -1,4 +1,4 @@ -import { Asset } from '@oceanprotocol/lib' +import { Asset, Event } from '@oceanprotocol/ddo-js' // declaring into global scope to be able to use this as // ambiant types despite the above imports @@ -6,7 +6,8 @@ declare global { interface AssetExtended extends Asset { accessDetails?: AccessDetails views?: number - metadata: MetadataExtended - services: ServiceExtended[] + // indexedMetadata?: any + event?: Event + // datatokens: Datatoken[] } } diff --git a/src/@utils/accessDetailsAndPricing.ts b/src/@utils/accessDetailsAndPricing.ts index 3308f6899..2b5bfa7a6 100644 --- a/src/@utils/accessDetailsAndPricing.ts +++ b/src/@utils/accessDetailsAndPricing.ts @@ -1,14 +1,13 @@ import { - AssetPrice, Datatoken, FixedRateExchange, getErrorMessage, LoggerInstance, ProviderFees, ProviderInstance, - Service, ZERO_ADDRESS } from '@oceanprotocol/lib' +import { AssetPrice, Service } from '@oceanprotocol/ddo-js' import { getFixedBuyPrice } from './ocean/fixedRateExchange' import Decimal from 'decimal.js' import { @@ -135,9 +134,28 @@ export async function getAccessDetails( accountId: string, cancelToken: CancelToken ): Promise { + console.log('I am in get access!!!!') const signer = await getDummySigner(chainId) + console.log('I am in get access!!!! chainid', chainId) + console.log('I am in get access!!!! signer', signer) + const datatoken = new Datatoken(signer, chainId) + console.log('data token', datatoken) const { datatokenAddress } = service + console.log('I am in get access!!!! datatokenAddress', datatokenAddress) + try { + const datatokenname = await datatoken.getName(datatokenAddress) + console.log('name!!', datatokenname) + const symbol = await datatoken.getSymbol(datatokenAddress) + console.log('symbol!!', symbol) + + const paymentCollector = await datatoken.getPaymentCollector( + datatokenAddress + ) + console.log('nampayment colleter!!', paymentCollector) + } catch (error: any) { + console.log('error!!!', error) + } const accessDetails: AccessDetails = { type: 'NOT_SUPPORTED', @@ -163,7 +181,9 @@ export async function getAccessDetails( isPurchasable: true, publisherMarketOrderFee: '0' } + console.log('access details in getaccess!', accessDetails) try { + console.log('I am in access details !!!') // Check for past orders let allOrders: any[] = [] let page = 1 @@ -172,6 +192,8 @@ export async function getAccessDetails( // Fetch all orders across all pages while (page <= totalPages) { const res = await getUserOrders(accountId, cancelToken, page) + console.log('I am in get access!!!! getUserOrders', res) + allOrders = allOrders.concat(res?.results || []) const orderTotal = res?.totalPages || 0 totalPages = orderTotal @@ -184,6 +206,7 @@ export async function getAccessDetails( datatokenAddress.toLowerCase() || order.payer.toLowerCase() === datatokenAddress.toLowerCase() ) + console.log('I am in access details !!! order', order) if (order) { const orderTimestamp = order.timestamp const timeout = Number(service.timeout) @@ -233,14 +256,17 @@ export async function getAccessDetails( } // no dispensers and no fixed rates => service doesn't have price set up + // console.log('Access Details!!', accessDetails) return accessDetails } export function getAvailablePrice(accessDetails: AccessDetails): AssetPrice { + console.log('Access Details!!', accessDetails) const price: AssetPrice = { - value: accessDetails?.price ? Number(accessDetails.price) : 0, - tokenSymbol: accessDetails?.baseToken?.symbol || '', - tokenAddress: accessDetails?.baseToken?.address || '' + type: 'fixedrate', + price: accessDetails?.price ? Number(accessDetails.price).toString() : '0', + token: accessDetails?.baseToken?.symbol || '', + contract: accessDetails?.baseToken?.address || '' } if (!accessDetails?.price) { diff --git a/src/@utils/aquarius/index.ts b/src/@utils/aquarius/index.ts index 8fde2b024..4cdb42605 100644 --- a/src/@utils/aquarius/index.ts +++ b/src/@utils/aquarius/index.ts @@ -1,4 +1,5 @@ -import { Asset, LoggerInstance } from '@oceanprotocol/lib' +import { LoggerInstance } from '@oceanprotocol/lib' +import { Asset } from '@oceanprotocol/ddo-js' import axios, { CancelToken, AxiosResponse } from 'axios' import { metadataCacheUri, allowDynamicPricing } from '../../../app.config.cjs' import addressConfig from '../../../address.config.cjs' @@ -6,6 +7,7 @@ import { SortDirectionOptions, SortTermOptions } from '../../@types/aquarius/SearchQuery' +import { isValidDid } from '@utils/ddo' export interface UserSales { id: string @@ -81,11 +83,12 @@ export function generateBaseQuery( // need to follow this query to fetch data fr : []), ...(baseQueryParams.ignorePurgatory ? [] - : [getFilterTerm('purgatory.state', false)]), + : [getFilterTerm('indexedMetadata.purgatory.state', false)]), { bool: { must_not: [ - !baseQueryParams.ignoreState && getFilterTerm('nft.state', 5), + !baseQueryParams.ignoreState && + getFilterTerm('indexedMetadata.nft.state', 5), getDynamicPricingMustNot() ] } @@ -124,7 +127,7 @@ export function generateBaseQuery( // need to follow this query to fetch data fr } export function transformQueryResult( - queryResult: SearchResponse, + queryResult, from = 0, size = 21 ): PagedAssets { @@ -133,21 +136,16 @@ export function transformQueryResult( page: 0, totalPages: 0, totalResults: 0, - aggregations: [] + aggregations: {} } + result.results = queryResult.results - result.results = (queryResult.hits.hits || []).map( - (hit) => hit._source as Asset - ) - - result.aggregations = queryResult.aggregations - result.totalResults = queryResult.hits.total.value - result.totalPages = - result.totalResults / size < 1 - ? Math.floor(result.totalResults / size) - : Math.ceil(result.totalResults / size) - result.page = from ? from / size + 1 : 1 + result.totalResults = + queryResult.totalResults || queryResult.results.length || 0 + result.totalPages = Math.ceil(result.totalResults / size) + result.page = from ? from + 1 : 1 + result.aggregations = queryResult.aggregations || {} return result } @@ -177,13 +175,24 @@ export async function getAsset( cancelToken: CancelToken ): Promise { try { + if (!isValidDid(did)) { + console.log('DID is not valid!!!!!!!!!!!!') + return + } + const response: AxiosResponse = await axios.get( `${metadataCacheUri}/api/aquarius/assets/ddo/${did}`, { cancelToken } ) + console.log('Asset Being fetched from Aqurious API Response', response) if (!response || response.status !== 200 || !response.data) return const data = { ...response.data } + console.log( + 'Asset Being fetched from Aqurious API Response Data!!!!!!', + data + ) + return data } catch (error) { if (axios.isCancel(error)) { @@ -392,20 +401,15 @@ export async function getUserOrders( ): Promise { const filters: FilterTerm[] = [] filters.push(getFilterTerm('consumer.keyword', accountId)) - filters.push({ - exists: { - field: 'datatokenAddress' - } - }) const baseQueryparams = { filters, ignorePurgatory: true, esPaginationOptions: { - from: Number(page) - 1 || 0, - size: 9 + from: page || 0, + size: 1000 } } as BaseQueryParams - const query = generateBaseQuery(baseQueryparams) + const query = generateBaseQuery(baseQueryparams, 'order') try { return queryMetadata(query, cancelToken) } catch (error) { diff --git a/src/@utils/ocean/index.ts b/src/@utils/ocean/index.ts index b325f0cab..ccbb51ed1 100644 --- a/src/@utils/ocean/index.ts +++ b/src/@utils/ocean/index.ts @@ -1,4 +1,5 @@ import { ConfigHelper, Config } from '@oceanprotocol/lib' +// import { Config } from '@oceanprotocol/ddo-js' import { ethers } from 'ethers' import abiDatatoken from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' @@ -11,10 +12,10 @@ import abiDatatoken from '@oceanprotocol/contracts/artifacts/contracts/templates */ export function sanitizeDevelopmentConfig(config: Config): Config { return { - subgraphUri: process.env.NEXT_PUBLIC_SUBGRAPH_URI || config.subgraphUri, - metadataCacheUri: - process.env.NEXT_PUBLIC_METADATACACHE_URI || config.metadataCacheUri, - providerUri: process.env.NEXT_PUBLIC_PROVIDER_URL || config.providerUri, + // subgraphUri: process.env.NEXT_PUBLIC_SUBGRAPH_URI || config.subgraphUri, + // metadataCacheUri: + // process.env.NEXT_PUBLIC_METADATACACHE_URI || config.metadataCacheUri, + web3Provider: process.env.NEXT_PUBLIC_PROVIDER_URL || config.web3Provider, nodeUri: process.env.NEXT_PUBLIC_RPC_URL || config.nodeUri, fixedRateExchangeAddress: process.env.NEXT_PUBLIC_FIXED_RATE_EXCHANGE_ADDRESS, @@ -47,8 +48,19 @@ export function getOceanConfig(network: string | number): Config { } // Override RPC URL for Sepolia if it's set (the reason is ocean.js supports only infura) - if (network === 11155111 && process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL) { - config.nodeUri = process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL + if ( + (network === 11155420 || network === 11155111) && + process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL + ) { + // config.nodeUri = process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL + // config.providerUri = process.env.NEXT_PUBLIC_NODE_URL + // config.metadataCacheUri = process.env.NEXT_PUBLIC_NODE_URL + // config.subgraphUri = process.env.NEXT_PUBLIC_SUBGRAPH_URI + + config.nodeUri = process.env.NEXT_PUBLIC_NODE_URL + config.oceanNodeUri = process.env.NEXT_PUBLIC_NODE_URL + // config.metadataCacheUri = process.env.NEXT_PUBLIC_NODE_URL + // config.subgraphUri = process.env.NEXT_PUBLIC_NODE_URL } return config as Config @@ -62,7 +74,7 @@ export function getDevelopmentConfig(): Config { // metadataContractAddress: contractAddresses.development?.Metadata, // oceanTokenAddress: contractAddresses.development?.Ocean, // There is no subgraph in barge so we hardcode the Sepolia one for now - subgraphUri: 'https://v4.subgraph.sepolia.oceanprotocol.com' + // subgraphUri: 'https://v4.subgraph.sepolia.oceanprotocol.com' } as Config } diff --git a/src/@utils/wallet/chains.ts b/src/@utils/wallet/chains.ts index eb44fed07..40f816e3f 100644 --- a/src/@utils/wallet/chains.ts +++ b/src/@utils/wallet/chains.ts @@ -13,7 +13,10 @@ export const getSupportedChains = (chainIdsSupported: number[]): Chain[] => { // Current version of wagmi doesn't support custom RPCs (e.g blastapi) // Override RPC URLs for chains if it's set in env const chains = supportedChains.map((chain) => { - if (chain.id === 11155111 && process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL) { + if ( + (chain.id === 11155111 || chain.id === 11155420) && + process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL + ) { return { ...chain, rpcUrls: { diff --git a/src/components/@shared/FormInput/InputElement/Provider/index.tsx b/src/components/@shared/FormInput/InputElement/Provider/index.tsx index 78c844c57..b5480adc9 100644 --- a/src/components/@shared/FormInput/InputElement/Provider/index.tsx +++ b/src/components/@shared/FormInput/InputElement/Provider/index.tsx @@ -52,7 +52,8 @@ export default function CustomProvider(props: InputProps): ReactElement { const providerResponse = await axios.get(field.value.url, { cancelToken: newCancelToken() }) - const userChainId = chain?.id || 1 + const userChainId = String(chain?.id) || 1 + console.log('user chain id', userChainId) const providerChain = providerResponse?.data?.chainId || providerResponse?.data?.chainIds @@ -61,6 +62,10 @@ export default function CustomProvider(props: InputProps): ReactElement { ? true : !!(providerChain.length > 0 && providerChain.includes(userChainId)) + console.log('provider url providerchain!', providerChain) + console.log('provider url response!', isCompatible) + console.log('provider url response!', isCompatible) + if (!isCompatible) { setFieldError( `${field.name}.url`, diff --git a/src/components/@shared/Price/index.tsx b/src/components/@shared/Price/index.tsx index f70673ad9..ea4fe3ea2 100644 --- a/src/components/@shared/Price/index.tsx +++ b/src/components/@shared/Price/index.tsx @@ -1,5 +1,5 @@ import React, { ReactElement } from 'react' -import { AssetPrice } from '@oceanprotocol/lib' +import { AssetPrice } from '@oceanprotocol/ddo-js' import PriceUnit from './PriceUnit' export default function Price({ @@ -19,8 +19,8 @@ export default function Price({ if (!price && !orderPriceAndFees) return return ( { - Number(asset?.nft.state) === 4 && setIsOrderDisabled(true) - }, [asset?.nft.state]) + Number(asset?.indexedMetadata.nft.state) === 4 && setIsOrderDisabled(true) + }, [asset?.indexedMetadata.nft.state]) useEffect(() => { if (isUnsupportedPricing) return @@ -165,6 +164,7 @@ export default function Download({ ]) async function handleOrderOrDownload(dataParams?: UserCustomParameters) { + console.log('In handleOrderOrDownload!!!') setIsLoading(true) setRetry(false) try { diff --git a/src/components/Asset/AssetActions/index.tsx b/src/components/Asset/AssetActions/index.tsx index 567d4ba78..c308f609e 100644 --- a/src/components/Asset/AssetActions/index.tsx +++ b/src/components/Asset/AssetActions/index.tsx @@ -20,6 +20,7 @@ export default function AssetActions({ }: { asset: AssetExtended }): ReactElement { + // console.log('Asset in Asset Action 1! ', asset) const { address: accountId } = useAccount() const { balance } = useBalance() const { chain } = useNetwork() diff --git a/src/components/Asset/AssetContent/EditHistory.tsx b/src/components/Asset/AssetContent/EditHistory.tsx index e6c7bcdcb..ff5ac1bfc 100644 --- a/src/components/Asset/AssetContent/EditHistory.tsx +++ b/src/components/Asset/AssetContent/EditHistory.tsx @@ -63,7 +63,7 @@ export default function EditHistory({ const [result] = useQuery({ query: getReceipts, - variables: { address: asset?.nft.address.toLowerCase() }, + variables: { address: asset?.indexedMetadata.nft.address.toLowerCase() }, context: queryContext, pause: !asset || !queryContext }) diff --git a/src/components/Asset/AssetContent/MetaFull.tsx b/src/components/Asset/AssetContent/MetaFull.tsx index f30b84080..777b5b3d4 100644 --- a/src/components/Asset/AssetContent/MetaFull.tsx +++ b/src/components/Asset/AssetContent/MetaFull.tsx @@ -4,8 +4,6 @@ import styles from './MetaFull.module.css' import Publisher from '@shared/Publisher' import { useAsset } from '@context/Asset' import { Asset, LoggerInstance, Datatoken } from '@oceanprotocol/lib' -import { getPaymentCollector } from '@utils/ocean' -import { useProvider } from 'wagmi' import { getDummySigner } from '@utils/wallet' export default function MetaFull({ ddo }: { ddo: Asset }): ReactElement { @@ -14,15 +12,23 @@ export default function MetaFull({ ddo }: { ddo: Asset }): ReactElement { const [paymentCollector, setPaymentCollector] = useState() useEffect(() => { - if (!ddo) return + console.log('[MetaFull] full DDO:', ddo) + + if (!ddo.datatokens[0]?.address) { + LoggerInstance.error('Datatoken address missing from DDO') + return + } async function getInitialPaymentCollector() { try { const signer = await getDummySigner(ddo.chainId) - const datatoken = new Datatoken(signer) - setPaymentCollector( - await datatoken.getPaymentCollector(ddo.datatokens[0].address) - ) + const datatoken = new Datatoken(signer, ddo.chainId) + const { address } = ddo.datatokens[0] + + LoggerInstance.log('[MetaFull] Using datatoken address:', address) + + const collector = await datatoken.getPaymentCollector(address) + setPaymentCollector(collector) } catch (error) { LoggerInstance.error( '[MetaFull: getInitialPaymentCollector]', @@ -30,6 +36,7 @@ export default function MetaFull({ ddo }: { ddo: Asset }): ReactElement { ) } } + getInitialPaymentCollector() }, [ddo]) diff --git a/src/components/Asset/AssetContent/index.tsx b/src/components/Asset/AssetContent/index.tsx index ef093ac1b..f8dc3744d 100644 --- a/src/components/Asset/AssetContent/index.tsx +++ b/src/components/Asset/AssetContent/index.tsx @@ -24,6 +24,8 @@ export default function AssetContent({ }: { asset: AssetExtended }): ReactElement { + // console.log('DDO Asset in Asset Content!!!!!!!!!!!!', asset) + const { isInPurgatory, purgatoryData, isOwner, isAssetNetwork } = useAsset() const { address: accountId } = useAccount() const { debug } = useUserPreferences() diff --git a/src/components/Asset/index.tsx b/src/components/Asset/index.tsx index edc1cf761..0dc8e939b 100644 --- a/src/components/Asset/index.tsx +++ b/src/components/Asset/index.tsx @@ -9,6 +9,8 @@ import AssetContent from './AssetContent' export default function AssetDetails({ uri }: { uri: string }): ReactElement { const router = useRouter() const { asset, title, error, isInPurgatory, loading } = useAsset() + // console.log('DDO Asset in Component Asset!!!!!!!!!!!!', asset) + const [pageTitle, setPageTitle] = useState() useEffect(() => { diff --git a/src/components/Footer/MarketStats/Total.tsx b/src/components/Footer/MarketStats/Total.tsx index 34ee13b18..b85840489 100644 --- a/src/components/Footer/MarketStats/Total.tsx +++ b/src/components/Footer/MarketStats/Total.tsx @@ -1,17 +1,109 @@ import PriceUnit from '@shared/Price/PriceUnit' -import React, { ReactElement } from 'react' +import React, { ReactElement, useEffect, useState, useCallback } from 'react' +import { useRouter } from 'next/router' import { StatsTotal } from './_types' +import { getResults, updateQueryStringParameter } from '../../Search/utils' +import { useDebouncedCallback } from 'use-debounce' +import queryString from 'query-string' +import { useCancelToken } from '@hooks/useCancelToken' +import { useUserPreferences } from '@context/UserPreferences' export default function MarketStatsTotal({ total }: { total: StatsTotal }): ReactElement { + const router = useRouter() + const [parsed, setParsed] = useState>() + const { chainIds } = useUserPreferences() + const [queryResult, setQueryResult] = useState() + const [loading, setLoading] = useState(true) + const newCancelToken = useCancelToken() + const isSearchPage = true + + useEffect(() => { + const parsed = queryString.parse(location.search, { + arrayFormat: 'separator' + }) + setParsed(parsed) + }, [router]) + + const updatePage = useCallback( + (page: number) => { + const { pathname, query } = router + const newUrl = updateQueryStringParameter( + pathname + + '?' + + JSON.stringify(query) + .replace(/"|{|}/g, '') + .replace(/:/g, '=') + .replace(/,/g, '&'), + 'page', + `${page}` + ) + return router.push(newUrl) + }, + [router] + ) + + const fetchAssets = useDebouncedCallback( + async (parsed: queryString.ParsedQuery, chainIds: number[]) => { + setLoading(true) + // setTotalResults(undefined) + const queryResult = await getResults(parsed, chainIds, newCancelToken()) + setQueryResult(queryResult) + console.log('Total assets found:', queryResult) + + // setTotalResults(queryResult?.totalResults || 0) + console.log('Number of assets', queryResult?.totalResults) + // setTotalPagesNumber(queryResult?.totalPages || 0) + setLoading(false) + }, + 500 + ) + useEffect(() => { + if (!parsed || !queryResult) return + const { page } = parsed + if (queryResult.totalPages < Number(page)) updatePage(1) + }, [parsed, queryResult, updatePage]) + + useEffect(() => { + if (!parsed || !chainIds) return + + fetchAssets(parsed, chainIds) + }, [parsed, chainIds, fetchAssets]) + return ( <> - orders across{' '} - assets with{' '} - different datatokens. + {loading ? ( + Loading statistics... + ) : ( + <> + {' '} + orders across{' '} + {' '} + assets with{' '} + {' '} + different datatokens. +
+ Debug info:{' '} + {JSON.stringify({ + queryResult, + parsed, + chainIds + })} +
+ + )} ) } diff --git a/src/components/Publish/_utils.ts b/src/components/Publish/_utils.ts index 5a4c45a06..094842a87 100644 --- a/src/components/Publish/_utils.ts +++ b/src/components/Publish/_utils.ts @@ -1,6 +1,5 @@ import { Config, - DDO, FreCreationParams, generateDid, DatatokenCreateParams, @@ -10,11 +9,14 @@ import { NftCreateData, NftFactory, ZERO_ADDRESS, - getEventFromTx, + getEventFromTx +} from '@oceanprotocol/lib' +import { ConsumerParameter, Metadata, - Service -} from '@oceanprotocol/lib' + Service, + DDO +} from '@oceanprotocol/ddo-js' import { mapTimeoutStringToSeconds, normalizeFile } from '@utils/ddo' import { generateNftCreateData } from '@utils/nft' import { getEncryptedFiles } from '@utils/provider' @@ -236,11 +238,13 @@ export async function createTokensAndPricing( config: Config, nftFactory: NftFactory ) { + console.log('I am in create Pricing!!!!') const nftCreateData: NftCreateData = generateNftCreateData( values.metadata.nft, accountId, values.metadata.transferable ) + console.log(' Creating NFT with metadata!!!!!!!!!!', nftCreateData) LoggerInstance.log('[publish] Creating NFT with metadata', nftCreateData) // TODO: cap is hardcoded for now to 1000, this needs to be discussed at some point const ercParams: DatatokenCreateParams = { @@ -291,6 +295,12 @@ export async function createTokensAndPricing( freParams ) + console.log('Data pasing nftdata !!!!!!!!', nftCreateData) + console.log('Data pasing ercParams !!!!!!!!', ercParams) + console.log('Data pasing freParams !!!!!!!!', freParams) + + console.log('I am in create Pricing NFT factory result!!!!', result) + const trxReceipt = await result.wait() const nftCreatedEvent = getEventFromTx(trxReceipt, 'NFTCreated') const tokenCreatedEvent = getEventFromTx(trxReceipt, 'TokenCreated') diff --git a/src/components/Publish/index.tsx b/src/components/Publish/index.tsx index b2f49929b..588bca7b8 100644 --- a/src/components/Publish/index.tsx +++ b/src/components/Publish/index.tsx @@ -16,9 +16,9 @@ import useNftFactory from '@hooks/useNftFactory' import { ProviderInstance, LoggerInstance, - DDO, getErrorMessage } from '@oceanprotocol/lib' +import { DDO } from '@oceanprotocol/ddo-js' import { getOceanConfig } from '@utils/ocean' import { validationSchema } from './_validation' import { useAbortController } from '@hooks/useAbortController' @@ -58,6 +58,7 @@ export default function PublishPage({ erc721Address: string datatokenAddress: string }> { + console.log('in create method!!!!, ') setFeedback((prevState) => ({ ...prevState, '1': { @@ -69,10 +70,14 @@ export default function PublishPage({ try { const config = getOceanConfig(chain?.id) + console.log('in create method!!!! config!!!!! , ', config) + LoggerInstance.log('[publish] using config: ', config) const { erc721Address, datatokenAddress, txHash } = await createTokensAndPricing(values, accountId, config, nftFactory) + console.log('data in publish:', erc721Address, datatokenAddress) + console.log('data in publish: txHash!!!!', txHash) const isSuccess = Boolean(erc721Address && datatokenAddress && txHash) if (!isSuccess) throw new Error('No Token created. Please try again.') @@ -243,6 +248,7 @@ export default function PublishPage({ // Orchestrate publishing // -------------------------------------------------- async function handleSubmit(values: FormPublishData) { + console.log('in handleSubmit!!!!!!!!!!') // Syncing variables with state, enabling retry of failed steps let _erc721Address = erc721Address let _datatokenAddress = datatokenAddress @@ -251,11 +257,20 @@ export default function PublishPage({ let _did = did if (!_erc721Address || !_datatokenAddress) { + console.log( + 'in handleSubmit (!_erc721Address || !_datatokenAddress) !!!!!!!!!!', + values + ) const { erc721Address, datatokenAddress } = await create(values) _erc721Address = erc721Address _datatokenAddress = datatokenAddress setErc721Address(erc721Address) setDatatokenAddress(datatokenAddress) + console.log( + 'in handleSubmit (!_erc721Address || !_datatokenAddress) !!!!!!!!!!', + erc721Address, + datatokenAddress + ) } if (!_ddo || !_ddoEncrypted) { From 42e305a4f8f38e3f46a70105b6999c90f13e1d8e Mon Sep 17 00:00:00 2001 From: AdriGeorge Date: Thu, 5 Jun 2025 16:14:50 +0300 Subject: [PATCH 16/60] fix: getAccessDetails --- src/@context/Asset.tsx | 2 +- src/@context/MarketMetadata/index.tsx | 2 +- src/@utils/accessDetailsAndPricing.ts | 13 ++- src/@utils/aquarius/index.ts | 5 +- src/@utils/ocean/index.ts | 7 +- .../Asset/AssetContent/EditHistory.tsx | 96 ------------------- src/components/Asset/AssetContent/index.tsx | 4 +- src/components/Asset/RelatedAssets/index.tsx | 2 +- 8 files changed, 21 insertions(+), 110 deletions(-) delete mode 100644 src/components/Asset/AssetContent/EditHistory.tsx diff --git a/src/@context/Asset.tsx b/src/@context/Asset.tsx index 1e2fcd72a..a3f18c5e7 100644 --- a/src/@context/Asset.tsx +++ b/src/@context/Asset.tsx @@ -44,10 +44,10 @@ function AssetProvider({ did: string children: ReactNode }): ReactElement { - console.log('In Asset Provider!!!!!!!!!!!!') const { appConfig } = useMarketMetadata() const { address: accountId } = useAccount() const { chain } = useNetwork() + console.log('chain in AssetProvider', chain) const [isInPurgatory, setIsInPurgatory] = useState(false) const [purgatoryData, setPurgatoryData] = useState() diff --git a/src/@context/MarketMetadata/index.tsx b/src/@context/MarketMetadata/index.tsx index c99f1d76d..715b3124e 100644 --- a/src/@context/MarketMetadata/index.tsx +++ b/src/@context/MarketMetadata/index.tsx @@ -40,7 +40,7 @@ function MarketMetadataProvider({ if (signer) { getData() } - }, [getOpcData, signer]) + }, [signer]) const getOpcFeeForToken = useCallback( (tokenAddress: string, chainId: number): string => { diff --git a/src/@utils/accessDetailsAndPricing.ts b/src/@utils/accessDetailsAndPricing.ts index 2b5bfa7a6..e75610650 100644 --- a/src/@utils/accessDetailsAndPricing.ts +++ b/src/@utils/accessDetailsAndPricing.ts @@ -134,16 +134,15 @@ export async function getAccessDetails( accountId: string, cancelToken: CancelToken ): Promise { - console.log('I am in get access!!!!') + console.log('I am in get access!!!!', chainId) const signer = await getDummySigner(chainId) - console.log('I am in get access!!!! chainid', chainId) - console.log('I am in get access!!!! signer', signer) const datatoken = new Datatoken(signer, chainId) console.log('data token', datatoken) const { datatokenAddress } = service console.log('I am in get access!!!! datatokenAddress', datatokenAddress) try { + console.log('before taking name') const datatokenname = await datatoken.getName(datatokenAddress) console.log('name!!', datatokenname) const symbol = await datatoken.getSymbol(datatokenAddress) @@ -223,7 +222,9 @@ export async function getAccessDetails( } // if there is at least 1 dispenser => service is free and use first dispenser + console.log('before dispensers') const dispensers = await datatoken.getDispensers(datatokenAddress) + console.log('after dispensers', dispensers) if (dispensers.length > 0) { return { ...accessDetails, @@ -234,13 +235,17 @@ export async function getAccessDetails( } // if there is 0 dispensers and at least 1 fixed rate => use first fixed rate to get the price details + console.log('before fixed rates') const fixedRates = await datatoken.getFixedRates(datatokenAddress) + console.log('after fixed rates', fixedRates) if (fixedRates.length > 0) { const freAddress = fixedRates[0].contractAddress const exchangeId = fixedRates[0].id + console.log('freAddress', freAddress) const fre = new FixedRateExchange(freAddress, signer) + console.log('fre', fre, exchangeId) const exchange = await fre.getExchange(exchangeId) - + console.log('exchange', exchange) return { ...accessDetails, type: 'fixed', diff --git a/src/@utils/aquarius/index.ts b/src/@utils/aquarius/index.ts index 4cdb42605..6b780e2d3 100644 --- a/src/@utils/aquarius/index.ts +++ b/src/@utils/aquarius/index.ts @@ -141,7 +141,7 @@ export function transformQueryResult( result.results = queryResult.results result.totalResults = - queryResult.totalResults || queryResult.results.length || 0 + queryResult?.totalResults || queryResult?.results?.length || 0 result.totalPages = Math.ceil(result.totalResults / size) result.page = from ? from + 1 : 1 @@ -154,11 +154,13 @@ export async function queryMetadata( cancelToken: CancelToken ): Promise { try { + console.log('metadataCacheUri', metadataCacheUri) const response: AxiosResponse = await axios.post( `${metadataCacheUri}/api/aquarius/assets/metadata/query`, { ...query }, { cancelToken } ) + console.log('response from queryMetadata', response) if (!response || response.status !== 200 || !response.data) return return transformQueryResult(response.data, query.from, query.size) } catch (error) { @@ -410,6 +412,7 @@ export async function getUserOrders( } } as BaseQueryParams const query = generateBaseQuery(baseQueryparams, 'order') + console.log('query userorder', query) try { return queryMetadata(query, cancelToken) } catch (error) { diff --git a/src/@utils/ocean/index.ts b/src/@utils/ocean/index.ts index ccbb51ed1..de9d973d8 100644 --- a/src/@utils/ocean/index.ts +++ b/src/@utils/ocean/index.ts @@ -15,8 +15,9 @@ export function sanitizeDevelopmentConfig(config: Config): Config { // subgraphUri: process.env.NEXT_PUBLIC_SUBGRAPH_URI || config.subgraphUri, // metadataCacheUri: // process.env.NEXT_PUBLIC_METADATACACHE_URI || config.metadataCacheUri, - web3Provider: process.env.NEXT_PUBLIC_PROVIDER_URL || config.web3Provider, - nodeUri: process.env.NEXT_PUBLIC_RPC_URL || config.nodeUri, + web3Provider: + process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL || config.web3Provider, + nodeUri: process.env.NEXT_PUBLIC_NODE_URL || config.nodeUri, fixedRateExchangeAddress: process.env.NEXT_PUBLIC_FIXED_RATE_EXCHANGE_ADDRESS, dispenserAddress: process.env.NEXT_PUBLIC_DISPENSER_ADDRESS, @@ -57,7 +58,7 @@ export function getOceanConfig(network: string | number): Config { // config.metadataCacheUri = process.env.NEXT_PUBLIC_NODE_URL // config.subgraphUri = process.env.NEXT_PUBLIC_SUBGRAPH_URI - config.nodeUri = process.env.NEXT_PUBLIC_NODE_URL + config.nodeUri = process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL config.oceanNodeUri = process.env.NEXT_PUBLIC_NODE_URL // config.metadataCacheUri = process.env.NEXT_PUBLIC_NODE_URL // config.subgraphUri = process.env.NEXT_PUBLIC_NODE_URL diff --git a/src/components/Asset/AssetContent/EditHistory.tsx b/src/components/Asset/AssetContent/EditHistory.tsx deleted file mode 100644 index ff5ac1bfc..000000000 --- a/src/components/Asset/AssetContent/EditHistory.tsx +++ /dev/null @@ -1,96 +0,0 @@ -import React, { ReactElement, useEffect, useState } from 'react' -import { useAsset } from '@context/Asset' -import ExplorerLink from '@shared/ExplorerLink' -import Time from '@shared/atoms/Time' -import { gql, OperationContext, useQuery } from 'urql' -import { NftUpdate_nftUpdates as NftUpdate } from '../../../@types/subgraph/NftUpdate' -import { getQueryContext } from '@utils/subgraph' -import styles from './EditHistory.module.css' - -const getReceipts = gql` - query NftUpdate($address: String!) { - nftUpdates( - where: { nft: $address } - orderBy: timestamp - orderDirection: desc - ) { - id - nft { - address - } - tx - timestamp - type - } - } -` - -export default function EditHistory({ - receipts, - setReceipts -}: { - receipts: NftUpdate[] - setReceipts: (receipts: NftUpdate[]) => void -}): ReactElement { - const { asset } = useAsset() - - function getUpdateType(type: string): string { - switch (type) { - case 'METADATA_CREATED': - return 'published' - case 'METADATA_UPDATED': - return 'updated' - case 'STATE_UPDATED': - return 'state updated' - case 'TOKENURI_UPDATED': - return 'NFT metadata updated' - default: - return '' - } - } - // - // 1. Construct subgraph query based on DDO. - // Need to wait for it to avoid infinite rerender loop with useQuery. - // - const [queryContext, setQueryContext] = useState() - - useEffect(() => { - if (!asset) return - - const queryContext = getQueryContext(asset.chainId) - setQueryContext(queryContext) - }, [asset]) - - const [result] = useQuery({ - query: getReceipts, - variables: { address: asset?.indexedMetadata.nft.address.toLowerCase() }, - context: queryContext, - pause: !asset || !queryContext - }) - const { data } = result - - // - // 2. Construct display data based on fetched data. - // - useEffect(() => { - if (!data || data.nftUpdates.length === 0) return - const receiptCollection = data.nftUpdates - setReceipts(receiptCollection) - }, [data, setReceipts]) - - return ( - <> -

Metadata History

-
    - {receipts?.map((receipt) => ( -
  • - - {getUpdateType(receipt.type)}{' '} - -
  • - ))} -
- - ) -} diff --git a/src/components/Asset/AssetContent/index.tsx b/src/components/Asset/AssetContent/index.tsx index f8dc3744d..70711a98f 100644 --- a/src/components/Asset/AssetContent/index.tsx +++ b/src/components/Asset/AssetContent/index.tsx @@ -9,7 +9,6 @@ import { useAsset } from '@context/Asset' import Alert from '@shared/atoms/Alert' import DebugOutput from '@shared/DebugOutput' import MetaMain from './MetaMain' -import EditHistory from './EditHistory' import styles from './index.module.css' import NetworkName from '@shared/NetworkName' import content from '../../../../content/purgatory.json' @@ -74,7 +73,6 @@ export default function AssetContent({ )} - {debug === true && } @@ -94,7 +92,7 @@ export default function AssetContent({ isAssetNetwork={isAssetNetwork} />
- +
diff --git a/src/components/Asset/RelatedAssets/index.tsx b/src/components/Asset/RelatedAssets/index.tsx index 34f4c0fb6..c4ede58a3 100644 --- a/src/components/Asset/RelatedAssets/index.tsx +++ b/src/components/Asset/RelatedAssets/index.tsx @@ -51,7 +51,7 @@ export default function RelatedAssets(): ReactElement { asset.nftAddress, 4 - tagResults.length, null, - asset.nft.owner + asset.indexedMetadata.nft.owner ) ) From b8e2ac24890b534b2672f94859553940bbadd86a Mon Sep 17 00:00:00 2001 From: AdriGeorge Date: Fri, 6 Jun 2025 08:44:20 +0300 Subject: [PATCH 17/60] fix: fix --- src/@context/Asset.tsx | 6 -- src/@hooks/useNftFactory.ts | 3 - src/@utils/accessDetailsAndPricing.ts | 73 ++++++++----------- src/@utils/aquarius/index.ts | 9 +-- src/@utils/ocean/index.ts | 2 +- src/@utils/provider.ts | 7 ++ .../FormInput/InputElement/Provider/index.tsx | 5 -- .../Asset/AssetActions/Download/index.tsx | 4 +- src/components/Home/SectionQueryResult.tsx | 1 + src/components/Publish/_utils.ts | 9 --- src/components/Publish/index.tsx | 14 ---- 11 files changed, 44 insertions(+), 89 deletions(-) diff --git a/src/@context/Asset.tsx b/src/@context/Asset.tsx index a3f18c5e7..cbadfcdde 100644 --- a/src/@context/Asset.tsx +++ b/src/@context/Asset.tsx @@ -47,7 +47,6 @@ function AssetProvider({ const { appConfig } = useMarketMetadata() const { address: accountId } = useAccount() const { chain } = useNetwork() - console.log('chain in AssetProvider', chain) const [isInPurgatory, setIsInPurgatory] = useState(false) const [purgatoryData, setPurgatoryData] = useState() @@ -81,11 +80,6 @@ function AssetProvider({ LoggerInstance.log('[asset] Fetching asset...') setLoading(true) const asset = await getAsset(did, token) - console.log('DDO Asset in AssetProvider!!!!!!!!!!!!', asset) - console.log( - 'DDO Asset in AssetProvider!!!!!!!!!!!!', - asset.indexedMetadata.nft.state - ) if (!asset) { setError( diff --git a/src/@hooks/useNftFactory.ts b/src/@hooks/useNftFactory.ts index 3aab6191e..49e5acf9a 100644 --- a/src/@hooks/useNftFactory.ts +++ b/src/@hooks/useNftFactory.ts @@ -12,10 +12,8 @@ function useNftFactory(): NftFactory { if (!signer || !chain?.id) return const networkId = chain.id - console.log('Calling getOceanConfig with:', networkId) const config = getOceanConfig(chain.id) - console.log('Network Config', config) if (!config) { console.error(`No config found for network ${networkId}`) @@ -23,7 +21,6 @@ function useNftFactory(): NftFactory { } const factory = new NftFactory(config.nftFactoryAddress, signer) - console.log('nft factory address', config.nftFactoryAddress) setNftFactory(factory) }, [signer, chain?.id]) diff --git a/src/@utils/accessDetailsAndPricing.ts b/src/@utils/accessDetailsAndPricing.ts index e75610650..5c1640a90 100644 --- a/src/@utils/accessDetailsAndPricing.ts +++ b/src/@utils/accessDetailsAndPricing.ts @@ -36,6 +36,14 @@ export async function getOrderPriceAndFees( // this function give price signer?: Signer, providerFees?: ProviderFees ): Promise { + console.log('getOrderPriceAndFees', { + asset, + service, + accessDetails, + accountId, + signer, + providerFees + }) const orderPriceAndFee = { price: accessDetails.price || '0', publisherMarketOrderFee: publisherMarketOrderFee || '0', @@ -50,6 +58,7 @@ export async function getOrderPriceAndFees( // this function give price // fetch provider fee let initializeData try { + console.log('before initializeProvider', asset, service, accountId) const initialize = await ProviderInstance.initialize( asset.id, service.id, @@ -134,27 +143,10 @@ export async function getAccessDetails( accountId: string, cancelToken: CancelToken ): Promise { - console.log('I am in get access!!!!', chainId) const signer = await getDummySigner(chainId) const datatoken = new Datatoken(signer, chainId) - console.log('data token', datatoken) const { datatokenAddress } = service - console.log('I am in get access!!!! datatokenAddress', datatokenAddress) - try { - console.log('before taking name') - const datatokenname = await datatoken.getName(datatokenAddress) - console.log('name!!', datatokenname) - const symbol = await datatoken.getSymbol(datatokenAddress) - console.log('symbol!!', symbol) - - const paymentCollector = await datatoken.getPaymentCollector( - datatokenAddress - ) - console.log('nampayment colleter!!', paymentCollector) - } catch (error: any) { - console.log('error!!!', error) - } const accessDetails: AccessDetails = { type: 'NOT_SUPPORTED', @@ -180,9 +172,7 @@ export async function getAccessDetails( isPurchasable: true, publisherMarketOrderFee: '0' } - console.log('access details in getaccess!', accessDetails) try { - console.log('I am in access details !!!') // Check for past orders let allOrders: any[] = [] let page = 1 @@ -191,7 +181,6 @@ export async function getAccessDetails( // Fetch all orders across all pages while (page <= totalPages) { const res = await getUserOrders(accountId, cancelToken, page) - console.log('I am in get access!!!! getUserOrders', res) allOrders = allOrders.concat(res?.results || []) const orderTotal = res?.totalPages || 0 @@ -205,7 +194,6 @@ export async function getAccessDetails( datatokenAddress.toLowerCase() || order.payer.toLowerCase() === datatokenAddress.toLowerCase() ) - console.log('I am in access details !!! order', order) if (order) { const orderTimestamp = order.timestamp const timeout = Number(service.timeout) @@ -222,9 +210,9 @@ export async function getAccessDetails( } // if there is at least 1 dispenser => service is free and use first dispenser - console.log('before dispensers') + console.log('before dispensers', datatokenAddress, signer, chainId) const dispensers = await datatoken.getDispensers(datatokenAddress) - console.log('after dispensers', dispensers) + console.log('dispensers', dispensers) if (dispensers.length > 0) { return { ...accessDetails, @@ -235,28 +223,31 @@ export async function getAccessDetails( } // if there is 0 dispensers and at least 1 fixed rate => use first fixed rate to get the price details - console.log('before fixed rates') const fixedRates = await datatoken.getFixedRates(datatokenAddress) console.log('after fixed rates', fixedRates) if (fixedRates.length > 0) { - const freAddress = fixedRates[0].contractAddress - const exchangeId = fixedRates[0].id - console.log('freAddress', freAddress) - const fre = new FixedRateExchange(freAddress, signer) - console.log('fre', fre, exchangeId) - const exchange = await fre.getExchange(exchangeId) - console.log('exchange', exchange) - return { - ...accessDetails, - type: 'fixed', - addressOrId: exchangeId, - price: exchange.fixedRate, - baseToken: { - address: exchange.baseToken, - name: await datatoken.getName(exchange.baseToken), // reuse the datatoken instance since it is ERC20 - symbol: await datatoken.getSymbol(exchange.baseToken), - decimals: parseInt(exchange.btDecimals) + try { + const freAddress = fixedRates[0].contractAddress + const exchangeId = fixedRates[0].id + console.log('freAddress', freAddress, signer) + const fre = new FixedRateExchange(freAddress, signer, chainId) + console.log('fre', fre, exchangeId) + const exchange = await fre.getExchange(exchangeId) + console.log('exchange', exchange) + return { + ...accessDetails, + type: 'fixed', + addressOrId: exchangeId, + price: exchange.fixedRate, + baseToken: { + address: exchange.baseToken, + name: await datatoken.getName(exchange.baseToken), // reuse the datatoken instance since it is ERC20 + symbol: await datatoken.getSymbol(exchange.baseToken), + decimals: parseInt(exchange.btDecimals) + } } + } catch (error) { + console.log('error in getAccessDetails', error) } } diff --git a/src/@utils/aquarius/index.ts b/src/@utils/aquarius/index.ts index 6b780e2d3..da22fc7cc 100644 --- a/src/@utils/aquarius/index.ts +++ b/src/@utils/aquarius/index.ts @@ -154,13 +154,12 @@ export async function queryMetadata( cancelToken: CancelToken ): Promise { try { - console.log('metadataCacheUri', metadataCacheUri) const response: AxiosResponse = await axios.post( `${metadataCacheUri}/api/aquarius/assets/metadata/query`, { ...query }, { cancelToken } ) - console.log('response from queryMetadata', response) + console.log('response', response) if (!response || response.status !== 200 || !response.data) return return transformQueryResult(response.data, query.from, query.size) } catch (error) { @@ -178,7 +177,6 @@ export async function getAsset( ): Promise { try { if (!isValidDid(did)) { - console.log('DID is not valid!!!!!!!!!!!!') return } @@ -186,14 +184,9 @@ export async function getAsset( `${metadataCacheUri}/api/aquarius/assets/ddo/${did}`, { cancelToken } ) - console.log('Asset Being fetched from Aqurious API Response', response) if (!response || response.status !== 200 || !response.data) return const data = { ...response.data } - console.log( - 'Asset Being fetched from Aqurious API Response Data!!!!!!', - data - ) return data } catch (error) { diff --git a/src/@utils/ocean/index.ts b/src/@utils/ocean/index.ts index de9d973d8..a6bc10014 100644 --- a/src/@utils/ocean/index.ts +++ b/src/@utils/ocean/index.ts @@ -59,7 +59,7 @@ export function getOceanConfig(network: string | number): Config { // config.subgraphUri = process.env.NEXT_PUBLIC_SUBGRAPH_URI config.nodeUri = process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL - config.oceanNodeUri = process.env.NEXT_PUBLIC_NODE_URL + // config.oceanNodeUri = process.env.NEXT_PUBLIC_NODE_URL // config.metadataCacheUri = process.env.NEXT_PUBLIC_NODE_URL // config.subgraphUri = process.env.NEXT_PUBLIC_NODE_URL } diff --git a/src/@utils/provider.ts b/src/@utils/provider.ts index 0c4940ae6..4dda9a203 100644 --- a/src/@utils/provider.ts +++ b/src/@utils/provider.ts @@ -163,10 +163,17 @@ export async function getFileInfo( method } try { + console.log( + 'before getFileInfo', + fileUrl, + customProviderUrl, + providerUrl + ) response = await ProviderInstance.getFileInfo( fileUrl, customProviderUrl || providerUrl ) + console.log('response from getFileInfo', response) } catch (error) { const message = getErrorMessage(error.message) LoggerInstance.error('[Provider Get File info] Error:', message) diff --git a/src/components/@shared/FormInput/InputElement/Provider/index.tsx b/src/components/@shared/FormInput/InputElement/Provider/index.tsx index b5480adc9..7effeca6e 100644 --- a/src/components/@shared/FormInput/InputElement/Provider/index.tsx +++ b/src/components/@shared/FormInput/InputElement/Provider/index.tsx @@ -53,7 +53,6 @@ export default function CustomProvider(props: InputProps): ReactElement { cancelToken: newCancelToken() }) const userChainId = String(chain?.id) || 1 - console.log('user chain id', userChainId) const providerChain = providerResponse?.data?.chainId || providerResponse?.data?.chainIds @@ -62,10 +61,6 @@ export default function CustomProvider(props: InputProps): ReactElement { ? true : !!(providerChain.length > 0 && providerChain.includes(userChainId)) - console.log('provider url providerchain!', providerChain) - console.log('provider url response!', isCompatible) - console.log('provider url response!', isCompatible) - if (!isCompatible) { setFieldError( `${field.name}.url`, diff --git a/src/components/Asset/AssetActions/Download/index.tsx b/src/components/Asset/AssetActions/Download/index.tsx index dc1f7b1cc..70a6ec521 100644 --- a/src/components/Asset/AssetActions/Download/index.tsx +++ b/src/components/Asset/AssetActions/Download/index.tsx @@ -100,10 +100,10 @@ export default function Download({ try { !orderPriceAndFees && setIsPriceLoading(true) - + console.log('service', asset) const _orderPriceAndFees = await getOrderPriceAndFees( asset, - service, + service || asset.services[0], accessDetails, ZERO_ADDRESS ) diff --git a/src/components/Home/SectionQueryResult.tsx b/src/components/Home/SectionQueryResult.tsx index 7eed3103f..4b42e30dd 100644 --- a/src/components/Home/SectionQueryResult.tsx +++ b/src/components/Home/SectionQueryResult.tsx @@ -48,6 +48,7 @@ export default function SectionQueryResult({ setLoading(true) const result = await queryMetadata(query, newCancelToken()) + console.log('result', result) if (!isMounted()) return if (queryData && result?.totalResults > 0) { const sortedAssets = sortAssets(result.results, queryData) diff --git a/src/components/Publish/_utils.ts b/src/components/Publish/_utils.ts index 094842a87..219923ffa 100644 --- a/src/components/Publish/_utils.ts +++ b/src/components/Publish/_utils.ts @@ -238,13 +238,11 @@ export async function createTokensAndPricing( config: Config, nftFactory: NftFactory ) { - console.log('I am in create Pricing!!!!') const nftCreateData: NftCreateData = generateNftCreateData( values.metadata.nft, accountId, values.metadata.transferable ) - console.log(' Creating NFT with metadata!!!!!!!!!!', nftCreateData) LoggerInstance.log('[publish] Creating NFT with metadata', nftCreateData) // TODO: cap is hardcoded for now to 1000, this needs to be discussed at some point const ercParams: DatatokenCreateParams = { @@ -294,13 +292,6 @@ export async function createTokensAndPricing( ercParams, freParams ) - - console.log('Data pasing nftdata !!!!!!!!', nftCreateData) - console.log('Data pasing ercParams !!!!!!!!', ercParams) - console.log('Data pasing freParams !!!!!!!!', freParams) - - console.log('I am in create Pricing NFT factory result!!!!', result) - const trxReceipt = await result.wait() const nftCreatedEvent = getEventFromTx(trxReceipt, 'NFTCreated') const tokenCreatedEvent = getEventFromTx(trxReceipt, 'TokenCreated') diff --git a/src/components/Publish/index.tsx b/src/components/Publish/index.tsx index 588bca7b8..b053c7632 100644 --- a/src/components/Publish/index.tsx +++ b/src/components/Publish/index.tsx @@ -58,7 +58,6 @@ export default function PublishPage({ erc721Address: string datatokenAddress: string }> { - console.log('in create method!!!!, ') setFeedback((prevState) => ({ ...prevState, '1': { @@ -70,14 +69,11 @@ export default function PublishPage({ try { const config = getOceanConfig(chain?.id) - console.log('in create method!!!! config!!!!! , ', config) LoggerInstance.log('[publish] using config: ', config) const { erc721Address, datatokenAddress, txHash } = await createTokensAndPricing(values, accountId, config, nftFactory) - console.log('data in publish:', erc721Address, datatokenAddress) - console.log('data in publish: txHash!!!!', txHash) const isSuccess = Boolean(erc721Address && datatokenAddress && txHash) if (!isSuccess) throw new Error('No Token created. Please try again.') @@ -248,7 +244,6 @@ export default function PublishPage({ // Orchestrate publishing // -------------------------------------------------- async function handleSubmit(values: FormPublishData) { - console.log('in handleSubmit!!!!!!!!!!') // Syncing variables with state, enabling retry of failed steps let _erc721Address = erc721Address let _datatokenAddress = datatokenAddress @@ -257,20 +252,11 @@ export default function PublishPage({ let _did = did if (!_erc721Address || !_datatokenAddress) { - console.log( - 'in handleSubmit (!_erc721Address || !_datatokenAddress) !!!!!!!!!!', - values - ) const { erc721Address, datatokenAddress } = await create(values) _erc721Address = erc721Address _datatokenAddress = datatokenAddress setErc721Address(erc721Address) setDatatokenAddress(datatokenAddress) - console.log( - 'in handleSubmit (!_erc721Address || !_datatokenAddress) !!!!!!!!!!', - erc721Address, - datatokenAddress - ) } if (!_ddo || !_ddoEncrypted) { From 3025654faf33a9c88700f99f659f24d0cf6db5b4 Mon Sep 17 00:00:00 2001 From: AdriGeorge Date: Fri, 6 Jun 2025 09:48:37 +0300 Subject: [PATCH 18/60] fix: fix --- src/@context/Profile/index.tsx | 3 ++- src/@types/aquarius/SearchQuery.ts | 3 ++- src/components/Asset/AssetActions/Download/index.tsx | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/@context/Profile/index.tsx b/src/@context/Profile/index.tsx index be274df91..4d9e87fe9 100644 --- a/src/@context/Profile/index.tsx +++ b/src/@context/Profile/index.tsx @@ -8,7 +8,7 @@ import React, { ReactNode } from 'react' import { useUserPreferences } from '../UserPreferences' -import { Asset, LoggerInstance } from '@oceanprotocol/lib' +import { LoggerInstance } from '@oceanprotocol/lib' import { getDownloadAssets, getPublishedAssets, @@ -19,6 +19,7 @@ import axios, { CancelToken } from 'axios' import { useMarketMetadata } from '../MarketMetadata' import { getEnsProfile } from '@utils/ens' import { isAddress } from 'ethers/lib/utils' +import { Asset } from '@oceanprotocol/ddo-js' interface ProfileProviderValue { profile: Profile diff --git a/src/@types/aquarius/SearchQuery.ts b/src/@types/aquarius/SearchQuery.ts index 4db1b0cc5..f7e481676 100644 --- a/src/@types/aquarius/SearchQuery.ts +++ b/src/@types/aquarius/SearchQuery.ts @@ -3,8 +3,9 @@ export enum SortDirectionOptions { Descending = 'desc' } +// todo update this export enum SortTermOptions { - Created = 'nft.created', + Created = 'indexerMetadata.nft.created', Relevance = '_score', Orders = 'stats.orders', Allocated = 'stats.allocated', diff --git a/src/components/Asset/AssetActions/Download/index.tsx b/src/components/Asset/AssetActions/Download/index.tsx index 70a6ec521..15c49f0b9 100644 --- a/src/components/Asset/AssetActions/Download/index.tsx +++ b/src/components/Asset/AssetActions/Download/index.tsx @@ -216,7 +216,7 @@ export default function Download({ hasPreviousOrder={isOwned} hasDatatoken={hasDatatoken} btSymbol={asset?.accessDetails?.baseToken?.symbol} - dtSymbol={asset?.datatokens[0]?.symbol} + dtSymbol={asset?.indexedMetadata.stats[0]?.datatokenAddress} dtBalance={dtBalance} type="submit" assetTimeout={secondsToString(asset?.services?.[0]?.timeout)} From 12bbc7032fd42567465617f64b787582461e3148 Mon Sep 17 00:00:00 2001 From: AdriGeorge Date: Fri, 6 Jun 2025 10:03:38 +0300 Subject: [PATCH 19/60] fix: fix --- src/@utils/provider.ts | 1 + src/components/Asset/AssetActions/Download/index.tsx | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/@utils/provider.ts b/src/@utils/provider.ts index 4dda9a203..7e5e67854 100644 --- a/src/@utils/provider.ts +++ b/src/@utils/provider.ts @@ -46,6 +46,7 @@ export async function getFileDidInfo( withChecksum = false ): Promise { try { + console.log('here in getFileDidInfo', did, serviceId, providerUrl) const response = await ProviderInstance.checkDidFiles( did, serviceId, diff --git a/src/components/Asset/AssetActions/Download/index.tsx b/src/components/Asset/AssetActions/Download/index.tsx index 15c49f0b9..68aa96ac1 100644 --- a/src/components/Asset/AssetActions/Download/index.tsx +++ b/src/components/Asset/AssetActions/Download/index.tsx @@ -53,6 +53,7 @@ export default function Download({ fileIsLoading?: boolean consumableFeedback?: string }): ReactElement { + console.log('asset', asset) const { address: accountId, isConnected } = useAccount() const { data: signer } = useSigner() const { isSupportedOceanNetwork } = useNetworkMetadata() @@ -81,8 +82,8 @@ export default function Download({ !asset?.accessDetails?.baseToken?.symbol) useEffect(() => { - Number(asset?.indexedMetadata.nft.state) === 4 && setIsOrderDisabled(true) - }, [asset?.indexedMetadata.nft.state]) + Number(asset?.indexedMetadata?.nft.state) === 4 && setIsOrderDisabled(true) + }, [asset?.indexedMetadata?.nft.state]) useEffect(() => { if (isUnsupportedPricing) return @@ -216,7 +217,7 @@ export default function Download({ hasPreviousOrder={isOwned} hasDatatoken={hasDatatoken} btSymbol={asset?.accessDetails?.baseToken?.symbol} - dtSymbol={asset?.indexedMetadata.stats[0]?.datatokenAddress} + dtSymbol={asset?.indexedMetadata?.stats[0]?.datatokenAddress} dtBalance={dtBalance} type="submit" assetTimeout={secondsToString(asset?.services?.[0]?.timeout)} From 9ab293a000648e62f7108fd0b203ce6c9f8debe0 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Wed, 11 Jun 2025 14:19:07 +0300 Subject: [PATCH 20/60] query updates for oceanjs v4.1 --- address.config.cjs | 2 +- src/@context/Asset.tsx | 53 +++++++++++++---- src/@types/AssetExtended.d.ts | 2 +- src/@types/aquarius/SearchQuery.ts | 10 ++-- src/@utils/aquarius/index.test.ts | 5 +- src/@utils/aquarius/index.ts | 57 ++++++++++++------- src/@utils/assetConvertor.ts | 8 +-- src/@utils/nft.ts | 3 +- src/components/@shared/AssetTeaser/index.tsx | 9 ++- .../FormInput/InputElement/Provider/index.tsx | 2 +- src/components/@shared/Price/index.tsx | 4 +- .../FormConsumerParameters.tsx | 3 +- src/components/Asset/AssetActions/index.tsx | 2 +- .../Asset/AssetContent/Nft/index.tsx | 4 +- src/components/Asset/Edit/EditMetadata.tsx | 8 +-- src/components/Asset/RelatedAssets/_utils.ts | 4 +- src/components/Asset/RelatedAssets/index.tsx | 5 +- src/components/Header/SearchBar.tsx | 4 +- src/components/Home/SectionQueryResult.tsx | 2 +- src/components/Home/index.tsx | 5 +- src/components/Profile/Header/Stats.tsx | 9 ++- src/components/Publish/Preview/index.tsx | 25 ++++++-- src/components/Search/utils.ts | 2 +- 23 files changed, 147 insertions(+), 81 deletions(-) diff --git a/address.config.cjs b/address.config.cjs index 8517b1b52..252b1d774 100644 --- a/address.config.cjs +++ b/address.config.cjs @@ -1,6 +1,6 @@ module.exports = { whitelists: { - 'nft.owner': [], + 'indexedMetadata.nft.owner': [], 'datatokens.address': [] }, featured: [ diff --git a/src/@context/Asset.tsx b/src/@context/Asset.tsx index cbadfcdde..cca9f0118 100644 --- a/src/@context/Asset.tsx +++ b/src/@context/Asset.tsx @@ -103,20 +103,49 @@ function AssetProvider({ LoggerInstance.error(`[asset] Failed getting asset for ${did}`, asset) return } - if (asset) { - setError(undefined) - setAsset((prevState) => ({ - ...prevState, - ...asset - })) - setTitle(asset.metadata?.name) - setOwner(asset.indexedMetadata.nft?.owner) - setIsInPurgatory(asset.indexedMetadata.purgatory?.state) - setPurgatoryData(asset.indexedMetadata.purgatory) - setAssetState(assetStateToString(asset.indexedMetadata.nft.state)) - LoggerInstance.log('[asset] Got asset', asset) + + let accessDetails: AccessDetails | undefined + // const services = asset?.services + const chainId = asset?.chainId + + if (chainId) { + try { + const accessDetails = await getAccessDetails( + asset.chainId, + asset.services[0], + accountId, + newCancelToken() + ) + console.log('access details fetched!!', accessDetails) + setAsset((prevState) => ({ + ...prevState, + accessDetails + })) + LoggerInstance.log( + `[asset] Got access details for ${did}`, + accessDetails + ) + } catch (err) { + LoggerInstance.error( + `[asset] Error fetching access details for ${did}`, + err + ) + } } + setError(undefined) + setAsset((prevState) => ({ + ...prevState, + ...asset, + accessDetails + })) + setTitle(asset.metadata?.name) + setOwner(asset.indexedMetadata.nft?.owner) + setIsInPurgatory(asset.indexedMetadata.purgatory?.state) + setPurgatoryData(asset.indexedMetadata.purgatory) + setAssetState(assetStateToString(asset.indexedMetadata.nft.state)) + LoggerInstance.log('[asset] Got asset', asset) + setLoading(false) }, [did, accountId] diff --git a/src/@types/AssetExtended.d.ts b/src/@types/AssetExtended.d.ts index 0e85f2905..3cee012cf 100644 --- a/src/@types/AssetExtended.d.ts +++ b/src/@types/AssetExtended.d.ts @@ -8,6 +8,6 @@ declare global { views?: number // indexedMetadata?: any event?: Event - // datatokens: Datatoken[] + datatokens?: Datatoken[] } } diff --git a/src/@types/aquarius/SearchQuery.ts b/src/@types/aquarius/SearchQuery.ts index f7e481676..84ff2d212 100644 --- a/src/@types/aquarius/SearchQuery.ts +++ b/src/@types/aquarius/SearchQuery.ts @@ -5,11 +5,11 @@ export enum SortDirectionOptions { // todo update this export enum SortTermOptions { - Created = 'indexerMetadata.nft.created', + Created = 'indexedMetadata.nft.created', Relevance = '_score', - Orders = 'stats.orders', - Allocated = 'stats.allocated', - Price = 'stats.price.value' + Orders = 'indexedMetadata.stats[0].orders', + Allocated = 'indexedMetadata.stats[0].allocated', + Price = 'indexedMetadata.stats[0].prices[0].price' } // Note: could not figure out how to get `enum` to be ambiant @@ -40,7 +40,7 @@ declare global { type Filters = FilterByTypeOptions | FilterByAccessOptions interface SearchQuery { - index?: string + // index?: string from?: number size?: number // eslint-disable-next-line @typescript-eslint/no-explicit-any diff --git a/src/@utils/aquarius/index.test.ts b/src/@utils/aquarius/index.test.ts index 72a2b3fe3..3205bdafb 100644 --- a/src/@utils/aquarius/index.test.ts +++ b/src/@utils/aquarius/index.test.ts @@ -11,12 +11,11 @@ import { const defaultBaseQueryReturn: SearchQuery = { from: 0, - index: 'op_ddo_v4.1.0', query: { bool: { filter: [ { terms: { chainId: [1, 3] } }, - // { term: { _index: 'aquarius' } }, + { term: { _index: 'aquarius' } }, { term: { 'purgatory.state': false } }, { bool: { @@ -89,7 +88,7 @@ describe('@utils/aquarius', () => { ).toStrictEqual({ ...defaultBaseQueryReturn, sort: { - 'nft.created': 'asc' + 'indexedMetadata.nft.created': 'asc' } }) }) diff --git a/src/@utils/aquarius/index.ts b/src/@utils/aquarius/index.ts index da22fc7cc..269303391 100644 --- a/src/@utils/aquarius/index.ts +++ b/src/@utils/aquarius/index.ts @@ -102,11 +102,13 @@ export function generateBaseQuery( // need to follow this query to fetch data fr generatedQuery.aggs = baseQueryParams.aggs } - if (baseQueryParams.sortOptions !== undefined) { + if ( + baseQueryParams.sortOptions?.sortBy !== undefined && + baseQueryParams.sortOptions?.sortDirection !== undefined + ) { generatedQuery.sort = { - [`${baseQueryParams.sortOptions.sortBy}`]: - baseQueryParams.sortOptions.sortDirection || - SortDirectionOptions.Descending + [baseQueryParams.sortOptions.sortBy]: + baseQueryParams.sortOptions.sortDirection } } @@ -127,25 +129,23 @@ export function generateBaseQuery( // need to follow this query to fetch data fr } export function transformQueryResult( - queryResult, + queryResult: any, from = 0, size = 21 ): PagedAssets { + const rawResults = queryResult[0] || [] + const aggregations = queryResult[1] || {} + + const pagedResults = rawResults.slice(from, from + size) + const result: PagedAssets = { - results: [], - page: 0, - totalPages: 0, - totalResults: 0, - aggregations: {} + results: pagedResults, + page: from ? Math.floor(from / size) + 1 : 1, + totalPages: Math.ceil(rawResults.length / size), + totalResults: rawResults.length, + aggregations } - result.results = queryResult.results - - result.totalResults = - queryResult?.totalResults || queryResult?.results?.length || 0 - result.totalPages = Math.ceil(result.totalResults / size) - result.page = from ? from + 1 : 1 - result.aggregations = queryResult.aggregations || {} return result } @@ -159,8 +159,18 @@ export async function queryMetadata( { ...query }, { cancelToken } ) - console.log('response', response) - if (!response || response.status !== 200 || !response.data) return + console.log('response of the datas!!!', response) + console.log('response of the datas in data array!!!', response.data[0]) + + if (!response || response.status !== 200 || !response.data[0]) return + const transformedResult = transformQueryResult( + response.data, + query.from, + query.size + ) + console.log('Query form', query.from) + console.log('Query size', query.size) + console.log('Transformed Result!', transformedResult) return transformQueryResult(response.data, query.from, query.size) } catch (error) { if (axios.isCancel(error)) { @@ -259,8 +269,10 @@ export async function getPublishedAssets( const filters: FilterTerm[] = [] - filters.push(getFilterTerm('nft.state', [0, 4, 5])) - filters.push(getFilterTerm('nft.owner', accountId.toLowerCase())) + filters.push(getFilterTerm('indexedMetadata.nft.state', [0, 4, 5])) + filters.push( + getFilterTerm('indexedMetadata.nft.owner', accountId.toLowerCase()) + ) // filters.push(getFilterTerm('services.type', 'access')) // filters.push(getFilterTerm('metadata.type', 'dataset')) @@ -323,7 +335,7 @@ async function getTopPublishers( aggs: { topPublishers: { terms: { - field: 'nft.owner.keyword', + field: 'indexedMetadata.nft.owner.keyword', order: { totalSales: 'desc' } }, aggs: { @@ -382,6 +394,7 @@ export async function getUserSales( ): Promise { try { const result = await getPublishedAssets(accountId, chainIds, null) + console.log('Get user published', result) const { totalOrders } = result.aggregations return totalOrders.value } catch (error) { diff --git a/src/@utils/assetConvertor.ts b/src/@utils/assetConvertor.ts index 4370e617c..6614048ff 100644 --- a/src/@utils/assetConvertor.ts +++ b/src/@utils/assetConvertor.ts @@ -1,4 +1,4 @@ -import { PublisherTrustedAlgorithm, Asset } from '@oceanprotocol/lib' +import { PublisherTrustedAlgorithm, Asset } from '@oceanprotocol/ddo-js' import { AssetSelectionAsset } from '@shared/FormInput/InputElement/AssetSelection' import { getServiceByName } from './ddo' import normalizeUrl from 'normalize-url' @@ -14,7 +14,7 @@ export async function transformAssetToAssetSelection( const algoService = getServiceByName(asset, 'access') if ( - asset?.stats?.price?.value >= 0 && + Number(asset?.indexedMetadata?.stats[0]?.prices[0]?.price) >= 0 && normalizeUrl(algoService?.serviceEndpoint) === normalizeUrl(datasetProviderEndpoint) ) { @@ -27,9 +27,9 @@ export async function transformAssetToAssetSelection( const algorithmAsset: AssetSelectionAsset = { did: asset.id, name: asset.metadata.name, - price: asset.stats.price.value, + price: Number(asset.indexedMetadata?.stats[0]?.prices[0]?.price), checked: selected, - symbol: asset.datatokens[0].symbol + symbol: asset.indexedMetadata.stats[0].symbol } selected ? algorithmList.unshift(algorithmAsset) diff --git a/src/@utils/nft.ts b/src/@utils/nft.ts index aaeed292e..a554dba60 100644 --- a/src/@utils/nft.ts +++ b/src/@utils/nft.ts @@ -1,14 +1,13 @@ import { LoggerInstance, - Asset, getHash, Nft, ProviderInstance, - DDO, MetadataAndTokenURI, NftCreateData, getErrorMessage } from '@oceanprotocol/lib' +import { Asset, DDO } from '@oceanprotocol/ddo-js' import { SvgWaves } from './SvgWaves' import { customProviderUrl } from '../../app.config.cjs' import { Signer, ethers } from 'ethers' diff --git a/src/components/@shared/AssetTeaser/index.tsx b/src/components/@shared/AssetTeaser/index.tsx index bd35ffacd..b9fbc22b4 100644 --- a/src/components/@shared/AssetTeaser/index.tsx +++ b/src/components/@shared/AssetTeaser/index.tsx @@ -25,13 +25,16 @@ export default function AssetTeaser({ const { name, type, description } = asset.metadata const { datatokens } = asset const accessType = 'access' - const { owner } = asset.nft - const { orders, allocated, price } = asset.stats + const owner = asset.indexedMetadata?.nft?.owner + const orders = asset.indexedMetadata?.stats[0]?.orders + const price = asset.indexedMetadata?.stats[0]?.prices[0] const isUnsupportedPricing = !asset.services.length || - price.value === undefined || + price === undefined || asset?.accessDetails?.type === 'NOT_SUPPORTED' const { locale } = useUserPreferences() + console.log('Asset in Asset Teaser!!!', asset) + // const price = await getAvailablePrice( return (
diff --git a/src/components/@shared/FormInput/InputElement/Provider/index.tsx b/src/components/@shared/FormInput/InputElement/Provider/index.tsx index 7effeca6e..981c706df 100644 --- a/src/components/@shared/FormInput/InputElement/Provider/index.tsx +++ b/src/components/@shared/FormInput/InputElement/Provider/index.tsx @@ -94,7 +94,7 @@ export default function CustomProvider(props: InputProps): ReactElement { const oceanConfig = getOceanConfig(chain?.id) const providerUrl = - oceanConfig?.providerUri || initialValues.services[0].providerUrl.url + oceanConfig?.nodeUri || initialValues.services[0].providerUrl.url helpers.setValue({ url: providerUrl, valid: true, custom: false }) } diff --git a/src/components/@shared/Price/index.tsx b/src/components/@shared/Price/index.tsx index ea4fe3ea2..768211b23 100644 --- a/src/components/@shared/Price/index.tsx +++ b/src/components/@shared/Price/index.tsx @@ -16,10 +16,12 @@ export default function Price({ conversion?: boolean size?: 'small' | 'mini' | 'large' }): ReactElement { + // console.log('Synbol,,,, In price', symbol) + console.log('Synbol,,,,', price.token) if (!price && !orderPriceAndFees) return return ( {nftImage ? ( - {asset?.nft?.name} + {asset?.indexedMetadata?.nft?.name} ) : ( )} diff --git a/src/components/Asset/Edit/EditMetadata.tsx b/src/components/Asset/Edit/EditMetadata.tsx index 1dcdccfd1..bd7039655 100644 --- a/src/components/Asset/Edit/EditMetadata.tsx +++ b/src/components/Asset/Edit/EditMetadata.tsx @@ -3,12 +3,10 @@ import { Formik } from 'formik' import { LoggerInstance, FixedRateExchange, - Asset, Datatoken, - Nft, - Metadata, - Service + Nft } from '@oceanprotocol/lib' +import { Asset, Metadata, Service } from '@oceanprotocol/ddo-js' import { validationSchema } from './_validation' import { getInitialValues } from './_constants' import { MetadataEditForm } from './_types' @@ -162,7 +160,7 @@ export default function Edit({ // delete custom helper properties injected in the market so we don't write them on chain delete (updatedAsset as AssetExtended).accessDetails delete (updatedAsset as AssetExtended).datatokens - delete (updatedAsset as AssetExtended).stats + delete (updatedAsset as AssetExtended).indexedMetadata?.stats const setMetadataTx = await setNftMetadata( updatedAsset, accountId, diff --git a/src/components/Asset/RelatedAssets/_utils.ts b/src/components/Asset/RelatedAssets/_utils.ts index 40232bdd8..eae0cb3c5 100644 --- a/src/components/Asset/RelatedAssets/_utils.ts +++ b/src/components/Asset/RelatedAssets/_utils.ts @@ -22,10 +22,10 @@ export function generateQuery( tags && { terms: { 'metadata.tags.keyword': tags } }, - owner && { term: { 'nft.owner.keyword': owner } } + owner && { term: { 'indexedMetadata.nft.owner.keyword': owner } } ], sort: { - 'stats.orders': 'desc' + 'indexedMetadata.stats.orders': 'desc' }, sortOptions: { sortBy: SortTermOptions.Orders diff --git a/src/components/Asset/RelatedAssets/index.tsx b/src/components/Asset/RelatedAssets/index.tsx index c4ede58a3..de4a7c4cc 100644 --- a/src/components/Asset/RelatedAssets/index.tsx +++ b/src/components/Asset/RelatedAssets/index.tsx @@ -1,5 +1,6 @@ import React, { ReactElement, useEffect, useState } from 'react' -import { Asset, LoggerInstance } from '@oceanprotocol/lib' +import { LoggerInstance } from '@oceanprotocol/lib' +import { Asset } from '@oceanprotocol/ddo-js' import { generateBaseQuery, queryMetadata } from '@utils/aquarius' import { useUserPreferences } from '@context/UserPreferences' import { useAsset } from '@context/Asset' @@ -20,7 +21,7 @@ export default function RelatedAssets(): ReactElement { if ( !chainIds?.length || !asset?.nftAddress || - !asset?.nft || + !asset?.indexedMetadata?.nft || !asset?.metadata ) { return diff --git a/src/components/Header/SearchBar.tsx b/src/components/Header/SearchBar.tsx index 557a723f3..a12dc68f2 100644 --- a/src/components/Header/SearchBar.tsx +++ b/src/components/Header/SearchBar.tsx @@ -16,7 +16,7 @@ async function emptySearch() { const searchParams = new URLSearchParams(window?.location.href) const text = searchParams.get('text') - if (text !== ('' || undefined || null)) { + if (text !== '' && text !== undefined && text !== null) { await addExistingParamsToUrl(location, ['text', 'owner', 'tags']) } } @@ -37,7 +37,7 @@ export default function SearchBar({ ;(text || owner) && setValue((text || owner) as string) }, [text, owner]) - async function startSearch(e: FormEvent) { + async function startSearch(e: React.SyntheticEvent) { e.preventDefault() if (value === '') setValue(' ') diff --git a/src/components/Home/SectionQueryResult.tsx b/src/components/Home/SectionQueryResult.tsx index 4b42e30dd..5eddcef6d 100644 --- a/src/components/Home/SectionQueryResult.tsx +++ b/src/components/Home/SectionQueryResult.tsx @@ -48,7 +48,7 @@ export default function SectionQueryResult({ setLoading(true) const result = await queryMetadata(query, newCancelToken()) - console.log('result', result) + console.log('result of all the datas!!!!', result) if (!isMounted()) return if (queryData && result?.totalResults > 0) { const sortedAssets = sortAssets(result.results, queryData) diff --git a/src/components/Home/index.tsx b/src/components/Home/index.tsx index c23331225..6c7601d44 100644 --- a/src/components/Home/index.tsx +++ b/src/components/Home/index.tsx @@ -59,7 +59,10 @@ export default function HomePage(): ReactElement { title="Recently Published" query={queryLatest} action={ - } diff --git a/src/components/Profile/Header/Stats.tsx b/src/components/Profile/Header/Stats.tsx index c7e22e3bf..5f5fae196 100644 --- a/src/components/Profile/Header/Stats.tsx +++ b/src/components/Profile/Header/Stats.tsx @@ -23,8 +23,13 @@ export default function Stats({ try { let count = 0 for (const priceInfo of assets) { - if (priceInfo?.stats?.price?.value && priceInfo.stats.orders > 0) { - count += priceInfo.stats.price.value * priceInfo.stats.orders + if ( + priceInfo?.indexedMetadata?.stats[0]?.prices[0]?.price && + priceInfo.indexedMetadata?.stats[0]?.orders > 0 + ) { + count += + Number(priceInfo.indexedMetadata?.stats[0]?.prices[0].price) * + priceInfo.indexedMetadata?.stats[0]?.orders } } setTotalSales(count) diff --git a/src/components/Publish/Preview/index.tsx b/src/components/Publish/Preview/index.tsx index c45fb4f6b..596ab8d9f 100644 --- a/src/components/Publish/Preview/index.tsx +++ b/src/components/Publish/Preview/index.tsx @@ -10,6 +10,9 @@ export default function Preview(): ReactElement { const [asset, setAsset] = useState() const { values } = useFormikContext() + console.log('Values... ', values) + console.log('Asset..', asset) + useEffect(() => { async function makeDdo() { const asset = (await transformPublishFormToDdo(values)) as AssetExtended @@ -34,13 +37,23 @@ export default function Preview(): ReactElement { validOrderTx: '', publisherMarketOrderFee: '0' } - asset.stats = { + asset.indexedMetadata.stats[0] = { + datatokenAddress: '0', // replace with actual value + name: values.metadata.name, // replace with actual value + symbol: values.pricing?.baseToken?.symbol || 'OCEAN', // adjust as needed + serviceId: '0', orders: null, - price: { - value: values.pricing.type === 'free' ? 0 : values.pricing.price, - tokenSymbol: values.pricing?.baseToken?.symbol || 'OCEAN', - tokenAddress: ZERO_ADDRESS - } + prices: [ + { + type: 'dispenser', + price: + values.pricing.type === 'free' + ? '0' + : values.pricing.price.toString(), + token: values.pricing?.baseToken?.symbol || 'OCEAN', + contract: ZERO_ADDRESS + } + ] } setAsset(asset) } diff --git a/src/components/Search/utils.ts b/src/components/Search/utils.ts index cdc23b1b3..103339901 100644 --- a/src/components/Search/utils.ts +++ b/src/components/Search/utils.ts @@ -59,7 +59,7 @@ export function getSearchQuery( : '**' const searchFields = [ 'id', - 'nft.owner', + 'indexedMetadata.nft.owner', 'datatokens.address', 'datatokens.name', 'datatokens.symbol', From 1960a81f8b0d5e7f8dd8bf1216fbff7322b0379a Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Fri, 13 Jun 2025 16:01:48 +0300 Subject: [PATCH 21/60] indexmetadata fixes --- .../__fixtures__/datasetsWithAccessDetails.ts | 2680 +++++++++-------- app.config.cjs | 2 +- src/@context/Profile/index.tsx | 9 +- src/@types/AssetExtended.d.ts | 2 - src/@types/aquarius/SearchQuery.ts | 6 +- src/@utils/aquarius/index.ts | 4 +- src/@utils/order.ts | 10 +- src/@utils/provider.ts | 69 +- src/components/@shared/Price/index.tsx | 6 +- .../Asset/AssetActions/AssetStats/index.tsx | 12 +- .../Asset/AssetActions/Download/index.tsx | 6 +- src/components/Asset/AssetActions/index.tsx | 3 +- src/components/Header/Wallet/Details.tsx | 2 + src/components/Home/Bookmarks.tsx | 4 +- src/components/Publish/Preview/index.tsx | 38 - 15 files changed, 1525 insertions(+), 1328 deletions(-) diff --git a/.jest/__fixtures__/datasetsWithAccessDetails.ts b/.jest/__fixtures__/datasetsWithAccessDetails.ts index 7d0320e67..064d948de 100644 --- a/.jest/__fixtures__/datasetsWithAccessDetails.ts +++ b/.jest/__fixtures__/datasetsWithAccessDetails.ts @@ -83,7 +83,7 @@ export const assets: AssetExtended[] = [ // }, { '@context': ['https://w3id.org/did/v1'], - chainId: 137, + chainId: 11155111, datatokens: [ { address: '0xE5E5056A988EAE27f1624CF1212895f5B01D487b', @@ -93,12 +93,45 @@ export const assets: AssetExtended[] = [ symbol: 'LIMRAY-96' } ], - event: { - block: 34021412, - contract: '0x866e4ED7b001f40c4067d0a37d6d401a0B13EfD6', - datetime: '2022-10-06T23:06:11', - from: '0x58754d9b3dbB4ddF5AC3502AcB963743b15e6398', - txid: '0x8af31b8dae91094f0d559fa13c51b7fcb278f9cb8525c2e7badabacf77989a7a' + indexedMetadata: { + nft: { + address: '0x866e4ED7b001f40c4067d0a37d6d401a0B13EfD6', + created: '2022-10-06T23:06:11', + name: 'Ocean Data NFT', + owner: '0x58754d9b3dbB4ddF5AC3502AcB963743b15e6398', + state: 0, + symbol: 'OCEAN-NFT', + tokenURI: + 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDpkYWJiY2YzNTJlOWQ5MGQ0ZTRmNDRhNTA0NDBiMDc5OGExYTFkOTBlNzYyYWIyYzdlZGJhNmFiNGYyMTI5ZGViIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOmRhYmJjZjM1MmU5ZDkwZDRlNGY0NGE1MDQ0MGIwNzk4YTFhMWQ5MGU3NjJhYjJjN2VkYmE2YWI0ZjIxMjlkZWIiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDIyQzExLDE5IDIzLDE3IDM1LDIwQzQ2LDIyIDU5LDI5IDcwLDMyQzgwLDM0IDg5LDMyIDk5LDMwTDk5LDk5WicvJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJiYicgZD0nTTAsOTlMMCw0NEMxMiw0NyAyNSw1MSAzNiw1MUM0Niw1MCA1NCw0NCA2NSw0MkM3NSwzOSA4Nyw0MCA5OSw0Mkw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmZmJyBkPSdNMCw5OUwwLDY4QzksNjYgMTgsNjUgMzEsNjlDNDMsNzIgNTgsNzkgNzAsODBDODEsODAgOTAsNzQgOTksNjhMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRSJ9' + }, + event: { + block: 34021412, + contract: '0x866e4ED7b001f40c4067d0a37d6d401a0B13EfD6', + datetime: '2022-10-06T23:06:11', + from: '0x58754d9b3dbB4ddF5AC3502AcB963743b15e6398', + txid: '0x8af31b8dae91094f0d559fa13c51b7fcb278f9cb8525c2e7badabacf77989a7a' + }, + stats: [ + { + datatokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', + name: 'string', + symbol: 'OCEAN', + serviceId: + 'dbc42f4c62d2452f8731fd023eacfae74e9c7a42fbd12ce84310f13342e4aab1', + orders: 1, + prices: [ + { + type: 'fixedrate', + price: '2', + contract: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a' + } + ] + } + ], + purgatory: { + state: false, + reason: '' + } }, id: 'did:op:dabbcf352e9d90d4e4f44a50440b0798a1a1d90e762ab2c7edba6ab4f2129deb', metadata: { @@ -127,21 +160,7 @@ export const assets: AssetExtended[] = [ type: 'dataset', updated: '2022-10-06T23:05:51Z' }, - nft: { - address: '0x866e4ED7b001f40c4067d0a37d6d401a0B13EfD6', - created: '2022-10-06T23:06:11', - name: 'Ocean Data NFT', - owner: '0x58754d9b3dbB4ddF5AC3502AcB963743b15e6398', - state: 0, - symbol: 'OCEAN-NFT', - tokenURI: - 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDpkYWJiY2YzNTJlOWQ5MGQ0ZTRmNDRhNTA0NDBiMDc5OGExYTFkOTBlNzYyYWIyYzdlZGJhNmFiNGYyMTI5ZGViIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOmRhYmJjZjM1MmU5ZDkwZDRlNGY0NGE1MDQ0MGIwNzk4YTFhMWQ5MGU3NjJhYjJjN2VkYmE2YWI0ZjIxMjlkZWIiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDIyQzExLDE5IDIzLDE3IDM1LDIwQzQ2LDIyIDU5LDI5IDcwLDMyQzgwLDM0IDg5LDMyIDk5LDMwTDk5LDk5WicvJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJiYicgZD0nTTAsOTlMMCw0NEMxMiw0NyAyNSw1MSAzNiw1MUM0Niw1MCA1NCw0NCA2NSw0MkM3NSwzOSA4Nyw0MCA5OSw0Mkw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmZmJyBkPSdNMCw5OUwwLDY4QzksNjYgMTgsNjUgMzEsNjlDNDMsNzIgNTgsNzkgNzAsODBDODEsODAgOTAsNzQgOTksNjhMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRSJ9' - }, nftAddress: '0x866e4ED7b001f40c4067d0a37d6d401a0B13EfD6', - purgatory: { - state: false, - reason: '' - }, services: [ { datatokenAddress: '0xE5E5056A988EAE27f1624CF1212895f5B01D487b', @@ -153,15 +172,6 @@ export const assets: AssetExtended[] = [ type: 'access' } ], - stats: { - allocated: 45554.69921875, - orders: 1, - price: { - tokenAddress: '0x282d8efCe846A88B159800bd4130ad77443Fa1A1', - tokenSymbol: 'mOCEAN', - value: 100 - } - }, version: '4.1.0', accessDetails: { templateId: 1, @@ -188,187 +198,114 @@ export const assets: AssetExtended[] = [ }, { '@context': ['https://w3id.org/did/v1'], - chainId: 5, + chainId: 137, datatokens: [ { - address: '0x57201e593912f4abBB62fEaa4479598c3Ad0010B', - name: 'Delighted Anchovy Token', + address: '0xE5E5056A988EAE27f1624CF1212895f5B01D487b', + name: 'Limpid Ray Token', serviceId: - '9325f8ff50ff3a46f757e7d819379b4d69fc73e4496880210c8fef8e587addbe', - symbol: 'DELANC-21' - } - ], - event: { - block: 7724118, - contract: '0xca3cCFc6CEcf459200AADA1d4a51024F0EAAC230', - datetime: '2022-10-06T21:31:12', - from: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', - tx: '0x59b3cda87fe2c1c88ee1f253f2ebe2f089b7987791357247bb4af8f96200c119' - }, - id: 'did:op:fcfaffeab039fd4406b4546dab57a0380d971f6a2746f588bbeafeb38fc406c9', - metadata: { - additionalInformation: { - termsAndConditions: true - }, - author: - 'Anna Padée, Pascal Missonnier, Anne Prévot, Grégoire Favre, Isabelle Gothuey, Marco Merlo, Jonas Richiardi', - created: '2022-10-06T21:31:05Z', - description: - 'This is a schizophrenia in ultimatum game task study for Fribourg University. Participants were asked to play the UG in both roles, both as responder and proposer. 128 electrode EEG was recorded during the task. 19 patients with psychosis episodes and 24 healthy controls were recorded during the task.\n\nThis dataset was recorded at the Fribourg University in Switzerland. The project was approved by the Ethics Committee of the University of Fribourg (reference number: 054/13-CER-FR).\n\nParticipants sat in a shielded room, in a comfortable chair and played the game, while EEG was recorded.\n\nFor each role, participants performed three blocks, consisting of 30 repetitions each.', - license: 'https://market.oceanprotocol.com/terms', - name: 'Fribourg Ultimatum Game in Schizophrenia Study (EEG)', - tags: ['eeg', 'schizophrenia', 'psychosis'], - type: 'dataset', - updated: '2022-10-06T21:31:05Z' - }, - nft: { - address: '0xca3cCFc6CEcf459200AADA1d4a51024F0EAAC230', - created: '2022-10-06T21:31:12', - name: 'Ocean Data NFT', - owner: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', - state: 0, - symbol: 'OCEAN-NFT', - tokenURI: - 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBOZXVyYURBTyBNYXJrZXRwbGFjZTogaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOmZjZmFmZmVhYjAzOWZkNDQwNmI0NTQ2ZGFiNTdhMDM4MGQ5NzFmNmEyNzQ2ZjU4OGJiZWFmZWIzOGZjNDA2YzkiLCJleHRlcm5hbF91cmwiOiJodHRwczovL21hcmtldC5vY2VhbnByb3RvY29sLmNvbS9hc3NldC9kaWQ6b3A6ZmNmYWZmZWFiMDM5ZmQ0NDA2YjQ1NDZkYWI1N2EwMzgwZDk3MWY2YTI3NDZmNTg4YmJlYWZlYjM4ZmM0MDZjOSIsImJhY2tncm91bmRfY29sb3IiOiIxNDE0MTQiLCJpbWFnZV9kYXRhIjoiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB2aWV3Qm94PScwIDAgOTkgOTknIGZpbGw9J3VuZGVmaW5lZCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyNzcnIGQ9J00wLDk5TDAsMjVDNywyNyAxNSwyOSAyMywyN0MzMCwyNCAzNywxNyA0NywxOEM1NiwxOCA2NywyNCA3NiwyN0M4NCwyOSA5MSwyNiA5OSwyNEw5OSw5OVonLyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyYmInIGQ9J00wLDk5TDAsNDhDOCw0OCAxNyw0OSAyNiw1MUMzNCw1MiA0Miw1NSA1MCw1NkM1Nyw1NiA2Myw1NCA3Miw1NEM4MCw1MyA4OSw1MyA5OSw1M0w5OSw5OVonJTNFJTNDL3BhdGglM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmZmJyBkPSdNMCw5OUwwLDcxQzksNzMgMTgsNzUgMjcsNzdDMzUsNzggNDMsODAgNTEsODBDNTgsNzkgNjUsNzcgNzMsNzZDODAsNzQgODksNzMgOTksNzNMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRSJ9' - }, - nftAddress: '0xca3cCFc6CEcf459200AADA1d4a51024F0EAAC230', - purgatory: { - state: false, - reason: '' - }, - services: [ - { - datatokenAddress: '0x57201e593912f4abBB62fEaa4479598c3Ad0010B', - files: - '0x043776dfd05df01a140bc2a622625902ce3c50e676801dace92a7a43ea1c35eff5d4970a25b35f4fc13285abe9512d695ad7eceaf3db0b47dbc438566dc165038a5deafb6570f390c4b80afef3d042f57cd3fb664bfc503baf6a772c191dbd458f4ba0d7bd69a738b141d80009b8cb89fcd32c6a90b73a8164445fe34fce90fbc17ca9a6f0f158dd995d1392ad7b821f162eae9b0410bbc452f65b301bb273cf0987e38cf9315ae92af2ed65ac3c0b31e876c2abd7c14b6c7927e85420d62c28ab88b639800d98137d84d8f86f53e43434a322d2db34c175337d57b99015b9fab0be0c026eaa6c334a2d664162ad966cfcdb91cf4aa4499aa4f480a46b2523f83b7c430586f04c89012851b2b0f6e179e95279478d5f12403362e976002257608aa9db50c7673628f1c150b3d1c6f7c660ab3f1851009121003483e4242d6d28563c07b0238e337391ec5cb887000533afda5846e0d9fe5c4b9efd92802409e4f532875dbc14d7dbece876f9d616a11a0ce53c220ba9bda9', - id: '9325f8ff50ff3a46f757e7d819379b4d69fc73e4496880210c8fef8e587addbe', - serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', - timeout: 86400, - type: 'access' + '52ce21def42afaef2b51e90389355e13bd93e502147172b22051f16f74af163d', + symbol: 'LIMRAY-96' } ], - stats: { - allocated: 0, - orders: 1, - price: { - value: 3231343254, - tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', - tokenSymbol: 'OCEAN' - } - }, - version: '4.1.0', - accessDetails: { - templateId: 2, - publisherMarketOrderFee: '0', - type: 'fixed', - addressOrId: - '0x6f09253bd70ed45e9e5d807e80319b71c0f444a27360cf51be749c520d0bbc9b', - price: '7', - isPurchasable: true, - baseToken: { - address: '0xcfdda22c9837ae76e0faa845354f33c62e03653a', - name: 'Ocean Token', - symbol: 'OCEAN', - decimals: 18 + indexedMetadata: { + nft: { + address: '0x866e4ED7b001f40c4067d0a37d6d401a0B13EfD6', + created: '2022-10-06T23:06:11', + name: 'Ocean Data NFT', + owner: '0x58754d9b3dbB4ddF5AC3502AcB963743b15e6398', + state: 0, + symbol: 'OCEAN-NFT', + tokenURI: + 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDpkYWJiY2YzNTJlOWQ5MGQ0ZTRmNDRhNTA0NDBiMDc5OGExYTFkOTBlNzYyYWIyYzdlZGJhNmFiNGYyMTI5ZGViIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOmRhYmJjZjM1MmU5ZDkwZDRlNGY0NGE1MDQ0MGIwNzk4YTFhMWQ5MGU3NjJhYjJjN2VkYmE2YWI0ZjIxMjlkZWIiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDIyQzExLDE5IDIzLDE3IDM1LDIwQzQ2LDIyIDU5LDI5IDcwLDMyQzgwLDM0IDg5LDMyIDk5LDMwTDk5LDk5WicvJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJiYicgZD0nTTAsOTlMMCw0NEMxMiw0NyAyNSw1MSAzNiw1MUM0Niw1MCA1NCw0NCA2NSw0MkM3NSwzOSA4Nyw0MCA5OSw0Mkw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmZmJyBkPSdNMCw5OUwwLDY4QzksNjYgMTgsNjUgMzEsNjlDNDMsNzIgNTgsNzkgNzAsODBDODEsODAgOTAsNzQgOTksNjhMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRSJ9' }, - datatoken: { - address: '0x57201e593912f4abbb62feaa4479598c3ad0010b', - name: 'Delighted Anchovy Token', - symbol: 'DELANC-21' + event: { + block: 34021412, + contract: '0x866e4ED7b001f40c4067d0a37d6d401a0B13EfD6', + datetime: '2022-10-06T23:06:11', + from: '0x58754d9b3dbB4ddF5AC3502AcB963743b15e6398', + txid: '0x8af31b8dae91094f0d559fa13c51b7fcb278f9cb8525c2e7badabacf77989a7a' }, - isOwned: false, - validOrderTx: null - } - }, - { - '@context': ['https://w3id.org/did/v1'], - chainId: 5, - datatokens: [ - { - address: '0xC48934b7FfE9a061039e8a2a0DAe303D2b1b68AF', - name: 'Arcadian Shell Token', - serviceId: - 'f0e61512966f65e3198fc3caecf198a1f20ff3ca781437e15fe9edc7a00745a4', - symbol: 'ARCSHE-59' + stats: [ + { + datatokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', + name: 'string', + symbol: 'OCEAN', + serviceId: + 'dbc42f4c62d2452f8731fd023eacfae74e9c7a42fbd12ce84310f13342e4aab1', + orders: 1, + prices: [ + { + type: 'fixedrate', + price: '2', + contract: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a' + } + ] + } + ], + purgatory: { + state: false, + reason: '' } - ], - event: { - block: 7724103, - contract: '0x59E27Aa74275E2373A965C0a9dca8f112b82D785', - datetime: '2022-10-06T21:27:36', - from: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', - tx: '0xba3eacfddb57f41e383fa3d6b581ebca4a42a4aa1d751e661636f100a4142a23' }, - id: 'did:op:16cf424daaa8cf763c0a753c4fe9045981fdc728571b95021514450d2160bbb8', + id: 'did:op:dabbcf352e9d90d4e4f44a50440b0798a1a1d90e762ab2c7edba6ab4f2129deb', metadata: { additionalInformation: { termsAndConditions: true }, - author: - 'Haxby, J., Gobbini, M., Furey, M., Ishai, A., Schouten, J., and Pietrini, P.', - created: '2022-10-06T21:25:49Z', + author: 'MG_DAO', + created: '2022-10-06T23:05:51Z', description: - 'This dataset was gathered between 2017 and 2018 for as part of the "First-in-human evaluation of [ 11 C]PS13, a novel PET radioligand, to quantify cyclooxygenase-1 in the brain". This dataset consists of 17 subjects and their imaging data as a first release. The second release of this dataset will include blood data for each of the the 17 subjects involved in this study.', + "General Info:\n-------------\nThis dataset curated by the MGH DAO contains key stats about the Sandbox, Decentraland and Axie LANDs NFTs.\n \n__After clicking download, open the .txt file and access all the datasets we have created so far. We update the dataset on a daily basis and store a snapshot of the dataset once per week.__\n \n \nThe data is taken from Etherscan and Opensea and fed to a machine learning algorithm that is trained using past price movements and is retrained on a regular basis to keep the accuracy of the price predictions high.\nThe core of the dataset are the aforementioned price predictions for each land that has enough trading history to compute a reasonable prediction.\n \nThe dataset contains two types of data:\n--------\n* Aggregated data retrieved from Opensea and Etherscan\n \n* Processed data from a machine learning algorithm\n \nThe aggregated data is divided into data for every token id and for the whole NFT collection. It includes variables such as tokenid, LAND coordinates, ask, bid, floor, average, max price, suggested operation, and\nkey volume stats.\n \nThe processed data contains two main variables: A predicted price and a price manipulation index for every token id\n \nEvery dataset is divided in two sheets: A Land Valuation and a Global Stats sheet\n \n \nThe dataset is provided by the MGH DAO and it will be continuously improved. If you have feedback or some suggestions on which data should be added, don't hesitate to write us an email to: info@thedac.info\n \nAbout MetaGameHub\n-----------------------\n \nThe MetaGameHub DAO focuses on the convergence of DeFi, Data and the Metaverse. The MGH DAO is a decentralized state within the open metaverse, where its community members collaboratively decide which LANDs to acquire, how to develop them and monetize them through, lending, renting, advertising and the creation of in-house play-to-earn experiences. MetaGameHub adds value to the metaverse ecosystem by providing valuation tools for virtual LANDs, SDKs (Software Development Kits) for metaverse development, oracle nodes for on-chain LAND pricing, and datasets portraying valuable virtual real estate pricing data. MGH wants to improve the infrastructure and transparency of the virtual real estate market while letting its users navigate through the metaverse in a seamless way.\n\n [Twitter](https://twitter.com/MGH_DAO) | [Telegram](https://t.me/metagamehub_dao) | [Website](https://www.metagamehub.io/) | [Discord](https://discord.gg/uG5XaP6ms3)", license: 'https://market.oceanprotocol.com/terms', - name: 'Novel PET radioligand, [11C]PS13 Quantifying Cyclooxygenase-1 in the Brain (PET)', - tags: ['pet', 'radiogland', 'biomarker'], + links: [ + 'https://docs.google.com/spreadsheets/d/1KA7eaoTQshOTbPqnkoJ-ePvlw6z95zGI1iT7BtzX7nI/edit?usp=sharing' + ], + name: 'The Metaverse LAND Dataset', + tags: [ + 'metaverse', + 'ai', + 'dao', + 'the-sandbox', + 'decentraland', + 'axie', + 'virtual-real-estate', + 'nft' + ], type: 'dataset', - updated: '2022-10-06T21:25:49Z' - }, - nft: { - address: '0x59E27Aa74275E2373A965C0a9dca8f112b82D785', - created: '2022-10-06T21:27:36', - name: 'Ocean Data NFT', - owner: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', - state: 0, - symbol: 'OCEAN-NFT', - tokenURI: - 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBOZXVyYURBTyBNYXJrZXRwbGFjZTogaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjE2Y2Y0MjRkYWFhOGNmNzYzYzBhNzUzYzRmZTkwNDU5ODFmZGM3Mjg1NzFiOTUwMjE1MTQ0NTBkMjE2MGJiYjgiLCJleHRlcm5hbF91cmwiOiJodHRwczovL21hcmtldC5vY2VhbnByb3RvY29sLmNvbS9hc3NldC9kaWQ6b3A6MTZjZjQyNGRhYWE4Y2Y3NjNjMGE3NTNjNGZlOTA0NTk4MWZkYzcyODU3MWI5NTAyMTUxNDQ1MGQyMTYwYmJiOCIsImJhY2tncm91bmRfY29sb3IiOiIxNDE0MTQiLCJpbWFnZV9kYXRhIjoiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB2aWV3Qm94PScwIDAgOTkgOTknIGZpbGw9J3VuZGVmaW5lZCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyNzcnIGQ9J00wLDk5TDAsMzFDMTIsMjUgMjQsMjAgMzUsMTlDNDUsMTcgNTUsMjAgNjYsMjFDNzYsMjEgODcsMjEgOTksMjFMOTksOTlaJy8lM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmJiJyBkPSdNMCw5OUwwLDQ2QzgsNTAgMTYsNTQgMjksNTRDNDEsNTMgNTYsNDYgNjksNDVDODEsNDMgOTAsNDUgOTksNDhMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJmZicgZD0nTTAsOTlMMCw2N0MxMSw2OSAyMiw3MiAzNCw3M0M0NSw3MyA1Niw3MSA2Nyw3MUM3Nyw3MCA4OCw3MSA5OSw3M0w5OSw5OVonJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFIn0=' - }, - nftAddress: '0x59E27Aa74275E2373A965C0a9dca8f112b82D785', - purgatory: { - state: false, - reason: '' + updated: '2022-10-06T23:05:51Z' }, + nftAddress: '0x866e4ED7b001f40c4067d0a37d6d401a0B13EfD6', services: [ { - datatokenAddress: '0xC48934b7FfE9a061039e8a2a0DAe303D2b1b68AF', + datatokenAddress: '0xE5E5056A988EAE27f1624CF1212895f5B01D487b', files: - '0x043e6b925b876905ec72df9e7db50b155b748e6145ca69d27c8c2af814a9e0cd8ade58cbfea27de7d4823ee30c192b0d73260d605f985edf6dfe51c68e8645425d1097d6e204ad3fab1fce3bed78c720df1e875c653b3c0103f8d2e5b1c24946f2c215ad8e365a9b8ff19dd70451540991008447fd103a0b015392675d5e57ddcca093fc5792b45f5ea9f782a94b57f3111e2e5efe2134422985a29387bd8237ad9f5c83630cd2d5afe01a54decf2ce070a446a827e53d015da04ac3d623988ea78a51fd456f5b2ef6049aebdd36065b12bbdbac1879721beaef3ec0e140842299459afc28cb9a1ac805db3cf93849de5d91cff5ab655daf59569621743f5551240b0298d765b3425609e6c864aeace8c91ee40e53e18c30344b901aa8164a975ca0f23e5db8d8a2693ec79f6bfe357cadbe28c3f3023b312161ad32c132d4b867ab51ca8361539c147798ded00845664c2566bf10cfa7ed3afbd91c960ceca43d20611d7d23c1e14816aefe2712052bf2b74fee56efc1f15ab98d8aa6134120651422902d10d5a523ae3a2c6dc9e561', - id: 'f0e61512966f65e3198fc3caecf198a1f20ff3ca781437e15fe9edc7a00745a4', - serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', - timeout: 86400, + '0x044412f77fcd2d53dc6243c921c307c38d0c6cd80a7e230bf7251ce38f444b309398aba1380884026efb87c4429eddd555872a495810e9aa3750054bef0a6e043cf630a80867934a7fd978306dff8e54ca8e8d17cca08ca7e4f5e50d4b39d0485d8212d12021f8ea5f8b1c21d791cb7239dc607cfb403bdf0108d327b3126c946bc3af5e9403f5d8ac58e91957bfc81e09a6d24c97ced61517768c3d2e5d69a6232c0c9a1f0c85759fdfc891affad883f816f419b103148db9d5cc917e0223b88cbb1c02c3e16ed6f1b24300914df2e86fe87d7b5a3abcf5fcbe34f4ea54e13dc984717465b8714602f7e416d053f0caf1361ddad20ec0fb939b8e914f2d87f42a62ad5256ee5b6704cf8df93bf79a501ea2926063d4e24010e05deda814316c2b004c0f130b2d9d48150b504178810ce34af2c75b76a5aa34a12be013efd5794802704ecf5570b60928f44507041d7c1670f65091c10a15fba1aea3010de62574cfaee092dfc37135a577abf2b551cf728922fd42ba5cca7e', + id: '52ce21def42afaef2b51e90389355e13bd93e502147172b22051f16f74af163d', + serviceEndpoint: 'https://v4.provider.polygon.oceanprotocol.com', + timeout: 604800, type: 'access' } ], - stats: { - allocated: 50.2051887512, - orders: 1, - price: { - value: 3231343254, - tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', - tokenSymbol: 'OCEAN' - } - }, version: '4.1.0', accessDetails: { templateId: 1, publisherMarketOrderFee: '0', type: 'fixed', addressOrId: - '0xcaf28ecd5a5a3674f7f7b2d61d9546fa50d16607d55ba7a8f9a4ac818f35f311', - price: '10', + '0x403f7f69caa8c0db7cd2f14d8f90b488ec7e70e83ff1c30d7bbdcd9d3605c529', + price: '100', isPurchasable: true, baseToken: { - address: '0xcfdda22c9837ae76e0faa845354f33c62e03653a', - name: 'Ocean Token', - symbol: 'OCEAN', + address: '0x282d8efce846a88b159800bd4130ad77443fa1a1', + name: 'Ocean Token (PoS)', + symbol: 'mOCEAN', decimals: 18 }, datatoken: { - address: '0xc48934b7ffe9a061039e8a2a0dae303d2b1b68af', - name: 'Arcadian Shell Token', - symbol: 'ARCSHE-59' + address: '0xe5e5056a988eae27f1624cf1212895f5b01d487b', + name: 'Limpid Ray Token', + symbol: 'LIMRAY-96' }, isOwned: false, validOrderTx: null @@ -379,196 +316,175 @@ export const assets: AssetExtended[] = [ chainId: 5, datatokens: [ { - address: '0x1FC8dB81E8b68EB1891f83e742377827b56a0663', - name: 'Querulous Plankton Token', + address: '0xE5E5056A988EAE27f1624CF1212895f5B01D487b', + name: 'Limpid Ray Token', serviceId: - '9a3135912010f6b27a6c1511c0221853136b3cbc1a55c62ce2b147512300402f', - symbol: 'QUEPLA-8' + '52ce21def42afaef2b51e90389355e13bd93e502147172b22051f16f74af163d', + symbol: 'LIMRAY-96' } ], - event: { - block: 7724073, - contract: '0x9293919ED1362e6e0572900B2595a2A0bA1cc77C', - datetime: '2022-10-06T21:20:36', - from: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', - tx: '0x3b4114e150106247ac71ff96c22604993eae1c0c58725eb8df217aaa3d716238' + indexedMetadata: { + nft: { + address: '0x866e4ED7b001f40c4067d0a37d6d401a0B13EfD6', + created: '2022-10-06T23:06:11', + name: 'Ocean Data NFT', + owner: '0x58754d9b3dbB4ddF5AC3502AcB963743b15e6398', + state: 0, + symbol: 'OCEAN-NFT', + tokenURI: + 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDpkYWJiY2YzNTJlOWQ5MGQ0ZTRmNDRhNTA0NDBiMDc5OGExYTFkOTBlNzYyYWIyYzdlZGJhNmFiNGYyMTI5ZGViIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOmRhYmJjZjM1MmU5ZDkwZDRlNGY0NGE1MDQ0MGIwNzk4YTFhMWQ5MGU3NjJhYjJjN2VkYmE2YWI0ZjIxMjlkZWIiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDIyQzExLDE5IDIzLDE3IDM1LDIwQzQ2LDIyIDU5LDI5IDcwLDMyQzgwLDM0IDg5LDMyIDk5LDMwTDk5LDk5WicvJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJiYicgZD0nTTAsOTlMMCw0NEMxMiw0NyAyNSw1MSAzNiw1MUM0Niw1MCA1NCw0NCA2NSw0MkM3NSwzOSA4Nyw0MCA5OSw0Mkw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmZmJyBkPSdNMCw5OUwwLDY4QzksNjYgMTgsNjUgMzEsNjlDNDMsNzIgNTgsNzkgNzAsODBDODEsODAgOTAsNzQgOTksNjhMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRSJ9' + }, + event: { + block: 34021412, + contract: '0x866e4ED7b001f40c4067d0a37d6d401a0B13EfD6', + datetime: '2022-10-06T23:06:11', + from: '0x58754d9b3dbB4ddF5AC3502AcB963743b15e6398', + txid: '0x8af31b8dae91094f0d559fa13c51b7fcb278f9cb8525c2e7badabacf77989a7a' + }, + stats: [ + { + datatokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', + name: 'string', + symbol: 'OCEAN', + serviceId: + 'dbc42f4c62d2452f8731fd023eacfae74e9c7a42fbd12ce84310f13342e4aab1', + orders: 2, + prices: [ + { + type: 'fixedrate', + price: '2', + contract: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a' + } + ] + } + ], + purgatory: { + state: false, + reason: '' + } }, - id: 'did:op:930b016ea9790156593e016ba2a4fe7a8bd276c8043320f8ba34d9b36395069e', + id: 'did:op:dabbcf352e9d90d4e4f44a50440b0798a1a1d90e762ab2c7edba6ab4f2129deb', metadata: { additionalInformation: { termsAndConditions: true }, - author: - 'Gaël Varoquaux, Alexandre Gramfort, Fabian Pedregosa, Vincent Michel, Bertrand Thirion, Richardson, Hilary, Lisandrelli, Grace, Riobueno-Naylor, Alexa, Saxe, Rebecca', - created: '2022-10-06T21:19:37Z', + author: 'MG_DAO', + created: '2022-10-06T23:05:51Z', description: - 'Brain functional networks and parcels can extracted from resting-state fMRI. For this purpose we use a multi-subject version of sparse dictionary learning and estimate a group-level atlas of brain networks. This can be understand as a variant of ICA based on the assumption of sparsity rather than independence.\n\nExperiment Details\nParticipants watched Disney Pixar’s “Partly Cloudy” while lying in the scanner. There was no task; participants were simply instructed to lie still and watch the movie. The movie began after 10s of rest (black screen; TRs 1-5). The first 10s of the movie are the opening credits (disney castle, pixar logo; TRs 6-10). \n\nIPS = 168 TRs\nTR = 2s\nExperiment length: 5.6 minutes\n\nPixar Movie Reverse Correlation Events\nEvents defined by conducting reverse correlation analysis in two separate adult samples, using the average response in ToM brain regions (ToM events) and in the pain matrix (Pain events). Events listed are those that replicated across the two samples. Onsets and Durations are noted in TRs (1 TR = 2s); scanner trigger = TR 1.\n\nEvent types: Theory of Mind (ToM), Physical Sensation/Pain (Pain)\nTRs identified by RC analysis, as reported in Richardson et al. 2018\nToM Event Onsets; Durations \n46; 2\n52; 3\n63; 2\n91; 8\n122; 3\n129; 4\n153; 3\n\nPain Event Onsets; Durations\n38; 2\n49; 1\n56; 2\n71; 5\n100; 2\n108; 6\n117; 3\n134; 3\n159; 2\n\n\nTIMING OF EVENTS FOR MODELING (taking into account hemodynamic lag (4s), scanner trigger = 0):\nAll timings assume 10s from trigger until movie begins to play.\n\nIn seconds:\nMental Event Onsets; Durations\n86; 4\n98; 6\n120; 4\n176; 16\n238; 6\n252; 8\n300; 6\n\nPain Event Onsets; Durations\n70; 4\n92; 2\n106; 4\n136; 10\n194; 4\n210; 12\n228; 6\n262; 6\n312; 4\n\nIn TRs when TR=2:\nMental Event Onsets; Durations\n43; 2\n49; 3\n60; 2\n88; 8\n119; 3\n126; 4\n150; 3\n\nPain Event Onsets; Durations\n35; 2\n46; 1\n53; 2\n68; 5\n97; 2\n105; 6\n114; 3\n131; 3\n156; 2', + "General Info:\n-------------\nThis dataset curated by the MGH DAO contains key stats about the Sandbox, Decentraland and Axie LANDs NFTs.\n \n__After clicking download, open the .txt file and access all the datasets we have created so far. We update the dataset on a daily basis and store a snapshot of the dataset once per week.__\n \n \nThe data is taken from Etherscan and Opensea and fed to a machine learning algorithm that is trained using past price movements and is retrained on a regular basis to keep the accuracy of the price predictions high.\nThe core of the dataset are the aforementioned price predictions for each land that has enough trading history to compute a reasonable prediction.\n \nThe dataset contains two types of data:\n--------\n* Aggregated data retrieved from Opensea and Etherscan\n \n* Processed data from a machine learning algorithm\n \nThe aggregated data is divided into data for every token id and for the whole NFT collection. It includes variables such as tokenid, LAND coordinates, ask, bid, floor, average, max price, suggested operation, and\nkey volume stats.\n \nThe processed data contains two main variables: A predicted price and a price manipulation index for every token id\n \nEvery dataset is divided in two sheets: A Land Valuation and a Global Stats sheet\n \n \nThe dataset is provided by the MGH DAO and it will be continuously improved. If you have feedback or some suggestions on which data should be added, don't hesitate to write us an email to: info@thedac.info\n \nAbout MetaGameHub\n-----------------------\n \nThe MetaGameHub DAO focuses on the convergence of DeFi, Data and the Metaverse. The MGH DAO is a decentralized state within the open metaverse, where its community members collaboratively decide which LANDs to acquire, how to develop them and monetize them through, lending, renting, advertising and the creation of in-house play-to-earn experiences. MetaGameHub adds value to the metaverse ecosystem by providing valuation tools for virtual LANDs, SDKs (Software Development Kits) for metaverse development, oracle nodes for on-chain LAND pricing, and datasets portraying valuable virtual real estate pricing data. MGH wants to improve the infrastructure and transparency of the virtual real estate market while letting its users navigate through the metaverse in a seamless way.\n\n [Twitter](https://twitter.com/MGH_DAO) | [Telegram](https://t.me/metagamehub_dao) | [Website](https://www.metagamehub.io/) | [Discord](https://discord.gg/uG5XaP6ms3)", license: 'https://market.oceanprotocol.com/terms', - name: 'Probabilistic Atlas of Functional Regions in Movie-Watching ', + links: [ + 'https://docs.google.com/spreadsheets/d/1KA7eaoTQshOTbPqnkoJ-ePvlw6z95zGI1iT7BtzX7nI/edit?usp=sharing' + ], + name: 'The Metaverse LAND Dataset', tags: [ - 'msdl', - 'probabilistic-atlas', - 'resting-state', - 'fmri', - 'visual-stimuli' + 'metaverse', + 'ai', + 'dao', + 'the-sandbox', + 'decentraland', + 'axie', + 'virtual-real-estate', + 'nft' ], type: 'dataset', - updated: '2022-10-06T21:19:37Z' - }, - nft: { - address: '0x9293919ED1362e6e0572900B2595a2A0bA1cc77C', - created: '2022-10-06T21:20:36', - name: 'Ocean Data NFT', - owner: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', - state: 0, - symbol: 'OCEAN-NFT', - tokenURI: - 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBOZXVyYURBTyBNYXJrZXRwbGFjZTogaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjkzMGIwMTZlYTk3OTAxNTY1OTNlMDE2YmEyYTRmZTdhOGJkMjc2YzgwNDMzMjBmOGJhMzRkOWIzNjM5NTA2OWUiLCJleHRlcm5hbF91cmwiOiJodHRwczovL21hcmtldC5vY2VhbnByb3RvY29sLmNvbS9hc3NldC9kaWQ6b3A6OTMwYjAxNmVhOTc5MDE1NjU5M2UwMTZiYTJhNGZlN2E4YmQyNzZjODA0MzMyMGY4YmEzNGQ5YjM2Mzk1MDY5ZSIsImJhY2tncm91bmRfY29sb3IiOiIxNDE0MTQiLCJpbWFnZV9kYXRhIjoiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB2aWV3Qm94PScwIDAgOTkgOTknIGZpbGw9J3VuZGVmaW5lZCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyNzcnIGQ9J00wLDk5TDAsMjRDNywyNSAxNSwyNiAyNywyN0MzOCwyNyA1NCwyNiA2NywyNkM3OSwyNSA4OSwyNCA5OSwyNEw5OSw5OVonLyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyYmInIGQ9J00wLDk5TDAsNDFDOSw0NyAxOCw1MyAyOSw1NUM0MCw1NiA1Myw1NCA2NSw1M0M3Nyw1MSA4OCw1MSA5OSw1Mkw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmZmJyBkPSdNMCw5OUwwLDc5QzEzLDc5IDI3LDgwIDM3LDc3QzQ2LDczIDUyLDY2IDYyLDY3QzcxLDY3IDg1LDc0IDk5LDgxTDk5LDk5WiclM0UlM0MvcGF0aCUzRSUzQy9zdmclM0UifQ==' - }, - nftAddress: '0x9293919ED1362e6e0572900B2595a2A0bA1cc77C', - purgatory: { - state: false, - reason: '' + updated: '2022-10-06T23:05:51Z' }, + nftAddress: '0x866e4ED7b001f40c4067d0a37d6d401a0B13EfD6', services: [ { - datatokenAddress: '0x1FC8dB81E8b68EB1891f83e742377827b56a0663', + datatokenAddress: '0xE5E5056A988EAE27f1624CF1212895f5B01D487b', files: - '0x0421fc24dc6b2bbe70ec05954eeda9e60156fc62e4a90aff80d1bd34ff647324bef394500adc3b202bf4d2a22af48cccd414c599579fb054876ccc631ad4fa39eb76bde29c7bde581b6954334891bffef4c4a9d5e08369ec12b26964a552b9f9d0796f053705a71737f692d74be64fa21db0a06811a6eedc4d7b3a4416cddca0aaacaeda4f327e2e7579bdf40c6b894adb72c33c41d181b52b4100a3381f4b7ae0c83effb9edbf025630a6691804b1911560d6d15934ae5ae79e548e72e325173d0a8c8920981367cf1e7ba9126f5be6a756a5e4508e614ed78a15f97f39c5a317fa65de1e2481d144db2802fcdeff77a1b43db7d6ad45a82d7cf375b629387335495d93b63bb78a45219ba0e9ee7c0ab85713d4bd315ccb46eed6c0a87d45e01a9c4cb278f988e1e05f7b24ab25bc9bca3763457116e0c4c8e7336d5fcbed697aa2ec0c13a224a800bb0ce7693d421ff833', - id: '9a3135912010f6b27a6c1511c0221853136b3cbc1a55c62ce2b147512300402f', - serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', - timeout: 86400, + '0x044412f77fcd2d53dc6243c921c307c38d0c6cd80a7e230bf7251ce38f444b309398aba1380884026efb87c4429eddd555872a495810e9aa3750054bef0a6e043cf630a80867934a7fd978306dff8e54ca8e8d17cca08ca7e4f5e50d4b39d0485d8212d12021f8ea5f8b1c21d791cb7239dc607cfb403bdf0108d327b3126c946bc3af5e9403f5d8ac58e91957bfc81e09a6d24c97ced61517768c3d2e5d69a6232c0c9a1f0c85759fdfc891affad883f816f419b103148db9d5cc917e0223b88cbb1c02c3e16ed6f1b24300914df2e86fe87d7b5a3abcf5fcbe34f4ea54e13dc984717465b8714602f7e416d053f0caf1361ddad20ec0fb939b8e914f2d87f42a62ad5256ee5b6704cf8df93bf79a501ea2926063d4e24010e05deda814316c2b004c0f130b2d9d48150b504178810ce34af2c75b76a5aa34a12be013efd5794802704ecf5570b60928f44507041d7c1670f65091c10a15fba1aea3010de62574cfaee092dfc37135a577abf2b551cf728922fd42ba5cca7e', + id: '52ce21def42afaef2b51e90389355e13bd93e502147172b22051f16f74af163d', + serviceEndpoint: 'https://v4.provider.polygon.oceanprotocol.com', + timeout: 604800, type: 'access' } ], - stats: { - allocated: 0, - orders: 1, - price: { - value: 3231343254, - tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', - tokenSymbol: 'OCEAN' - } - }, version: '4.1.0', accessDetails: { templateId: 1, publisherMarketOrderFee: '0', type: 'fixed', addressOrId: - '0x938802c3fe89c54a0e6b1cd47fa5263817282185a2e0f78fa2957ec1aff970fc', - price: '6', + '0x403f7f69caa8c0db7cd2f14d8f90b488ec7e70e83ff1c30d7bbdcd9d3605c529', + price: '100', isPurchasable: true, baseToken: { - address: '0xcfdda22c9837ae76e0faa845354f33c62e03653a', - name: 'Ocean Token', - symbol: 'OCEAN', + address: '0x282d8efce846a88b159800bd4130ad77443fa1a1', + name: 'Ocean Token (PoS)', + symbol: 'mOCEAN', decimals: 18 }, datatoken: { - address: '0x1fc8db81e8b68eb1891f83e742377827b56a0663', - name: 'Querulous Plankton Token', - symbol: 'QUEPLA-8' + address: '0xe5e5056a988eae27f1624cf1212895f5b01d487b', + name: 'Limpid Ray Token', + symbol: 'LIMRAY-96' }, isOwned: false, validOrderTx: null } - }, + } // { // '@context': ['https://w3id.org/did/v1'], - // accessDetails: { - // templateId: 1, - // publisherMarketOrderFee: '0', - // type: 'fixed', - // addressOrId: - // '0xb9060a712a494f584b072b0753dc275e1c531178510679ac085053ee38b5f742', - // price: '5', - // isPurchasable: true, - // baseToken: { - // address: '0xcfdda22c9837ae76e0faa845354f33c62e03653a', - // name: 'Ocean Token', - // symbol: 'OCEAN', - // decimals: 18 - // }, - // datatoken: { - // address: '0x0a9cfaff200efb1d6f125e342dfc78fb3edd28a4', - // name: 'Inspired Ling Token', - // symbol: 'INSLIN-54' - // }, - // isOwned: false, - // validOrderTx: null - // }, // chainId: 5, // datatokens: [ // { - // address: '0x0A9CFaFf200efb1d6F125E342Dfc78Fb3edD28A4', - // name: 'Inspired Ling Token', + // address: '0x57201e593912f4abBB62fEaa4479598c3Ad0010B', + // name: 'Delighted Anchovy Token', // serviceId: - // '383b0e1b8dc3e816af394bfae899eb0c9826f2383602c0fbcd70705e1e9c1302', - // symbol: 'INSLIN-54' + // '9325f8ff50ff3a46f757e7d819379b4d69fc73e4496880210c8fef8e587addbe', + // symbol: 'DELANC-21' // } // ], // event: { - // block: 7723888, - // contract: '0xeB7eC160ce8F73bE2e7d542c2283F1aEa163C07B', - // datetime: '2022-10-06T20:31:36', + // block: 7724118, + // contract: '0xca3cCFc6CEcf459200AADA1d4a51024F0EAAC230', + // datetime: '2022-10-06T21:31:12', // from: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', - // tx: '0x18b1d0af634fab3196921a99618fd9333c4a2113a016bf4757d609ddfdb64432' + // tx: '0x59b3cda87fe2c1c88ee1f253f2ebe2f089b7987791357247bb4af8f96200c119' // }, - // id: 'did:op:6b4314bd7345d07a10ba2c82a352655273b00cdceb2eedd31c8e0d2b5881eb16', + // id: 'did:op:fcfaffeab039fd4406b4546dab57a0380d971f6a2746f588bbeafeb38fc406c9', // metadata: { // additionalInformation: { // termsAndConditions: true // }, // author: - // 'Haxby, J. V., Gobbini, M. I., Furey, M. L., Ishai, A., Schouten, J. L. & Pietrini, P. ', - // created: '2022-10-06T20:30:01Z', + // 'Anna Padée, Pascal Missonnier, Anne Prévot, Grégoire Favre, Isabelle Gothuey, Marco Merlo, Jonas Richiardi', + // created: '2022-10-06T21:31:05Z', // description: - // 'This is a block-design fMRI dataset from a study on face and object representation in human ventral temporal cortex. It consists of 6 subjects with 12 runs per subject. In each run, the subjects passively viewed greyscale images of eight object categories, grouped in 24s blocks separated by rest periods. Each image was shown for 500ms and was followed by a 1500ms inter-stimulus interval. Full-brain fMRI data were recorded with a volume repetition time of 2.5s, thus, a stimulus block was covered by roughly 9 volumes. This dataset has been repeatedly reanalyzed. For a complete description of the experimental design, fMRI acquisition parameters, and previously obtained results see the [references](http://www.pymvpa.org/datadb/haxby2001.html#references) below. \n\n', + // 'This is a schizophrenia in ultimatum game task study for Fribourg University. Participants were asked to play the UG in both roles, both as responder and proposer. 128 electrode EEG was recorded during the task. 19 patients with psychosis episodes and 24 healthy controls were recorded during the task.\n\nThis dataset was recorded at the Fribourg University in Switzerland. The project was approved by the Ethics Committee of the University of Fribourg (reference number: 054/13-CER-FR).\n\nParticipants sat in a shielded room, in a comfortable chair and played the game, while EEG was recorded.\n\nFor each role, participants performed three blocks, consisting of 30 repetitions each.', // license: 'https://market.oceanprotocol.com/terms', - // name: 'Faces and Objects in Ventral Temporal Cortex (fMRI) (Compute) ', - // tags: ['fmri', 'bold', 'visual-stimuli', '4d', 'functional'], + // name: 'Fribourg Ultimatum Game in Schizophrenia Study (EEG)', + // tags: ['eeg', 'schizophrenia', 'psychosis'], // type: 'dataset', - // updated: '2022-10-06T20:30:01Z' + // updated: '2022-10-06T21:31:05Z' // }, // nft: { - // address: '0xeB7eC160ce8F73bE2e7d542c2283F1aEa163C07B', - // created: '2022-10-06T20:30:36', + // address: '0xca3cCFc6CEcf459200AADA1d4a51024F0EAAC230', + // created: '2022-10-06T21:31:12', // name: 'Ocean Data NFT', // owner: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', // state: 0, // symbol: 'OCEAN-NFT', // tokenURI: - // 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBOZXVyYURBTyBNYXJrZXRwbGFjZTogaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjZiNDMxNGJkNzM0NWQwN2ExMGJhMmM4MmEzNTI2NTUyNzNiMDBjZGNlYjJlZWRkMzFjOGUwZDJiNTg4MWViMTYiLCJleHRlcm5hbF91cmwiOiJodHRwczovL21hcmtldC5vY2VhbnByb3RvY29sLmNvbS9hc3NldC9kaWQ6b3A6NmI0MzE0YmQ3MzQ1ZDA3YTEwYmEyYzgyYTM1MjY1NTI3M2IwMGNkY2ViMmVlZGQzMWM4ZTBkMmI1ODgxZWIxNiIsImJhY2tncm91bmRfY29sb3IiOiIxNDE0MTQiLCJpbWFnZV9kYXRhIjoiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB2aWV3Qm94PScwIDAgOTkgOTknIGZpbGw9J3VuZGVmaW5lZCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyNzcnIGQ9J00wLDk5TDAsMjVDMTIsMjYgMjQsMjcgMzUsMjhDNDUsMjggNTIsMjggNjMsMjhDNzMsMjcgODYsMjYgOTksMjVMOTksOTlaJy8lM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmJiJyBkPSdNMCw5OUwwLDQ4QzExLDQ3IDIzLDQ2IDM0LDQ3QzQ0LDQ3IDU1LDQ4IDY2LDQ5Qzc2LDQ5IDg3LDQ5IDk5LDQ5TDk5LDk5WiclM0UlM0MvcGF0aCUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyZmYnIGQ9J00wLDk5TDAsODBDOCw3NCAxNyw2OCAyOCw3MEMzOCw3MSA1MSw3OSA2NCw4MEM3Niw4MCA4Nyw3NCA5OSw2OUw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFIn0=' + // 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBOZXVyYURBTyBNYXJrZXRwbGFjZTogaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOmZjZmFmZmVhYjAzOWZkNDQwNmI0NTQ2ZGFiNTdhMDM4MGQ5NzFmNmEyNzQ2ZjU4OGJiZWFmZWIzOGZjNDA2YzkiLCJleHRlcm5hbF91cmwiOiJodHRwczovL21hcmtldC5vY2VhbnByb3RvY29sLmNvbS9hc3NldC9kaWQ6b3A6ZmNmYWZmZWFiMDM5ZmQ0NDA2YjQ1NDZkYWI1N2EwMzgwZDk3MWY2YTI3NDZmNTg4YmJlYWZlYjM4ZmM0MDZjOSIsImJhY2tncm91bmRfY29sb3IiOiIxNDE0MTQiLCJpbWFnZV9kYXRhIjoiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB2aWV3Qm94PScwIDAgOTkgOTknIGZpbGw9J3VuZGVmaW5lZCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyNzcnIGQ9J00wLDk5TDAsMjVDNywyNyAxNSwyOSAyMywyN0MzMCwyNCAzNywxNyA0NywxOEM1NiwxOCA2NywyNCA3NiwyN0M4NCwyOSA5MSwyNiA5OSwyNEw5OSw5OVonLyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyYmInIGQ9J00wLDk5TDAsNDhDOCw0OCAxNyw0OSAyNiw1MUMzNCw1MiA0Miw1NSA1MCw1NkM1Nyw1NiA2Myw1NCA3Miw1NEM4MCw1MyA4OSw1MyA5OSw1M0w5OSw5OVonJTNFJTNDL3BhdGglM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmZmJyBkPSdNMCw5OUwwLDcxQzksNzMgMTgsNzUgMjcsNzdDMzUsNzggNDMsODAgNTEsODBDNTgsNzkgNjUsNzcgNzMsNzZDODAsNzQgODksNzMgOTksNzNMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRSJ9' // }, - // nftAddress: '0xeB7eC160ce8F73bE2e7d542c2283F1aEa163C07B', + // nftAddress: '0xca3cCFc6CEcf459200AADA1d4a51024F0EAAC230', // purgatory: { // state: false, // reason: '' // }, // services: [ // { - // compute: { - // allowNetworkAccess: true, - // allowRawAlgorithm: false, - // publisherTrustedAlgorithmPublishers: [], - // publisherTrustedAlgorithms: [ - // { - // containerSectionChecksum: - // '54eb02210bad8a5fbe229e1d131a68e80fe32709a196c6ce49f33e5d378b1195', - // did: 'did:op:f86dedf3c872f79f788627025685a680eaac9f8bd7b6e622164fd8563e21e836', - // filesChecksum: - // '2f8afee0a35fbeb72a447c7d1437b6c83f937e6d65a6c7d1990548cc21ff254c' - // } - // ] - // }, - // datatokenAddress: '0x0A9CFaFf200efb1d6F125E342Dfc78Fb3edD28A4', + // datatokenAddress: '0x57201e593912f4abBB62fEaa4479598c3Ad0010B', // files: - // '0x0479c75f624d86700c6b33deb392b2d60bd66a5bd92778851eb124bf3785f270b356ce42a228f5a5eb4dead55fc7892a3f4a9f114dfa5493f480146af72ccdcca5816996b0ff002a69e113509256494d64ad39b86be92c7668baa5060c98f402f60fcf7acd0d25e923cecaa5f483fd14a8568a782023b164f8424a95b43c165e813fd031c7b5887ac467af76d94d2ca8b45e34951694cc60ead2c15137eebc60703b9a12a4a4643ecd343de8d0326abb87e093abacf55ba83c06b2840284e8f17d9c498f02dcfd74239371c25ad0fcac703be994065b7ffa12f3a47ba3d363d31f475e6519e7cc5a65e74cafdf029a1d73a007e886206f4b4e36251721866f399076dd2435c314cdfdc42638a570fe57bb33f2935861c01ec708f80acd738d2a45dd64d374278dc63026ac7f4f8dba979e7cdc4e24e5f39aef4550b1cbf190525bdfa0e30900084aef223863e54bd0866ab958', - // id: '383b0e1b8dc3e816af394bfae899eb0c9826f2383602c0fbcd70705e1e9c1302', + // '0x043776dfd05df01a140bc2a622625902ce3c50e676801dace92a7a43ea1c35eff5d4970a25b35f4fc13285abe9512d695ad7eceaf3db0b47dbc438566dc165038a5deafb6570f390c4b80afef3d042f57cd3fb664bfc503baf6a772c191dbd458f4ba0d7bd69a738b141d80009b8cb89fcd32c6a90b73a8164445fe34fce90fbc17ca9a6f0f158dd995d1392ad7b821f162eae9b0410bbc452f65b301bb273cf0987e38cf9315ae92af2ed65ac3c0b31e876c2abd7c14b6c7927e85420d62c28ab88b639800d98137d84d8f86f53e43434a322d2db34c175337d57b99015b9fab0be0c026eaa6c334a2d664162ad966cfcdb91cf4aa4499aa4f480a46b2523f83b7c430586f04c89012851b2b0f6e179e95279478d5f12403362e976002257608aa9db50c7673628f1c150b3d1c6f7c660ab3f1851009121003483e4242d6d28563c07b0238e337391ec5cb887000533afda5846e0d9fe5c4b9efd92802409e4f532875dbc14d7dbece876f9d616a11a0ce53c220ba9bda9', + // id: '9325f8ff50ff3a46f757e7d819379b4d69fc73e4496880210c8fef8e587addbe', // serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', // timeout: 86400, - // type: 'compute' + // type: 'access' // } // ], // stats: { @@ -580,83 +496,189 @@ export const assets: AssetExtended[] = [ // tokenSymbol: 'OCEAN' // } // }, - // version: '4.1.0' + // version: '4.1.0', + // accessDetails: { + // templateId: 2, + // publisherMarketOrderFee: '0', + // type: 'fixed', + // addressOrId: + // '0x6f09253bd70ed45e9e5d807e80319b71c0f444a27360cf51be749c520d0bbc9b', + // price: '7', + // isPurchasable: true, + // baseToken: { + // address: '0xcfdda22c9837ae76e0faa845354f33c62e03653a', + // name: 'Ocean Token', + // symbol: 'OCEAN', + // decimals: 18 + // }, + // datatoken: { + // address: '0x57201e593912f4abbb62feaa4479598c3ad0010b', + // name: 'Delighted Anchovy Token', + // symbol: 'DELANC-21' + // }, + // isOwned: false, + // validOrderTx: null + // } // }, // { // '@context': ['https://w3id.org/did/v1'], // chainId: 5, // datatokens: [ // { - // address: '0x7626dE49a774c18E0f7Fc658821a87E103f80fab', - // name: 'Lovely Prawn Token', + // address: '0xC48934b7FfE9a061039e8a2a0DAe303D2b1b68AF', + // name: 'Arcadian Shell Token', // serviceId: - // 'be48353fe208e765c24b0a344c2cc826ff0ea18582a162d67f6ad23078595d59', - // symbol: 'LOVPRA-51' + // 'f0e61512966f65e3198fc3caecf198a1f20ff3ca781437e15fe9edc7a00745a4', + // symbol: 'ARCSHE-59' // } // ], // event: { - // block: 7723861, - // contract: '0xACa9d4Df6a4dfF29913A111099bc4aC6363C124F', - // datetime: '2022-10-06T20:24:24', + // block: 7724103, + // contract: '0x59E27Aa74275E2373A965C0a9dca8f112b82D785', + // datetime: '2022-10-06T21:27:36', // from: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', - // tx: '0xdca6494d123c796443c6ce46bb4c02938526a03f86661941eaddcb76377f5825' + // tx: '0xba3eacfddb57f41e383fa3d6b581ebca4a42a4aa1d751e661636f100a4142a23' // }, - // id: 'did:op:f86dedf3c872f79f788627025685a680eaac9f8bd7b6e622164fd8563e21e836', + // id: 'did:op:16cf424daaa8cf763c0a753c4fe9045981fdc728571b95021514450d2160bbb8', // metadata: { // additionalInformation: { // termsAndConditions: true // }, - // algorithm: { - // container: { - // checksum: - // 'sha256:a981ed6282271fc5492c382cd11d5045641880f738c05a855ed6de8d0eecea8f', - // entrypoint: 'python3.8 $ALGO', - // image: 'anmu06/c2d_neuradao', - // tag: 'latest' - // }, - // language: 'py', - // version: '0.1' - // }, - // author: 'Nilearn ', - // created: '2022-10-06T20:24:15Z', + // author: + // 'Haxby, J., Gobbini, M., Furey, M., Ishai, A., Schouten, J., and Pietrini, P.', + // created: '2022-10-06T21:25:49Z', // description: - // 'Plot cuts of an EPI image (by default 3 cuts: Frontal, Axial, and Lateral)\n\nUsing [nilearn.plotting.plot_epi](https://nilearn.github.io/stable/modules/generated/nilearn.plotting.plot_epi.html) to compute and plot EPI. ', + // 'This dataset was gathered between 2017 and 2018 for as part of the "First-in-human evaluation of [ 11 C]PS13, a novel PET radioligand, to quantify cyclooxygenase-1 in the brain". This dataset consists of 17 subjects and their imaging data as a first release. The second release of this dataset will include blood data for each of the the 17 subjects involved in this study.', // license: 'https://market.oceanprotocol.com/terms', - // name: 'fMRI Time-Averaged EPI Visualization ', - // tags: ['epi', 'bold', 'fmri'], - // type: 'algorithm', - // updated: '2022-10-06T20:24:15Z' + // name: 'Novel PET radioligand, [11C]PS13 Quantifying Cyclooxygenase-1 in the Brain (PET)', + // tags: ['pet', 'radiogland', 'biomarker'], + // type: 'dataset', + // updated: '2022-10-06T21:25:49Z' // }, // nft: { - // address: '0xACa9d4Df6a4dfF29913A111099bc4aC6363C124F', - // created: '2022-10-06T20:24:24', + // address: '0x59E27Aa74275E2373A965C0a9dca8f112b82D785', + // created: '2022-10-06T21:27:36', // name: 'Ocean Data NFT', // owner: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', // state: 0, // symbol: 'OCEAN-NFT', // tokenURI: - // 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBOZXVyYURBTyBNYXJrZXRwbGFjZTogaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOmY4NmRlZGYzYzg3MmY3OWY3ODg2MjcwMjU2ODVhNjgwZWFhYzlmOGJkN2I2ZTYyMjE2NGZkODU2M2UyMWU4MzYiLCJleHRlcm5hbF91cmwiOiJodHRwczovL21hcmtldC5vY2VhbnByb3RvY29sLmNvbS9hc3NldC9kaWQ6b3A6Zjg2ZGVkZjNjODcyZjc5Zjc4ODYyNzAyNTY4NWE2ODBlYWFjOWY4YmQ3YjZlNjIyMTY0ZmQ4NTYzZTIxZTgzNiIsImJhY2tncm91bmRfY29sb3IiOiIxNDE0MTQiLCJpbWFnZV9kYXRhIjoiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB2aWV3Qm94PScwIDAgOTkgOTknIGZpbGw9J3VuZGVmaW5lZCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyNzcnIGQ9J00wLDk5TDAsMjVDOCwyNCAxNiwyMyAyNCwyNEMzMSwyNCAzOCwyNyA0NywyOEM1NSwyOCA2NiwyOCA3NSwyOEM4MywyNyA5MSwyNyA5OSwyN0w5OSw5OVonLyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyYmInIGQ9J00wLDk5TDAsNTRDOCw1MiAxNiw1MSAyNSw1MEMzMyw0OCA0MSw0NyA0OSw0NkM1Niw0NCA2NCw0MSA3Myw0M0M4MSw0NCA5MCw0OSA5OSw1NUw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmZmJyBkPSdNMCw5OUwwLDczQzcsNzIgMTUsNzEgMjUsNzBDMzQsNjggNDQsNjcgNTIsNjlDNTksNzAgNjQsNzQgNzIsNzVDNzksNzUgODksNzIgOTksNzBMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRSJ9' + // 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBOZXVyYURBTyBNYXJrZXRwbGFjZTogaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjE2Y2Y0MjRkYWFhOGNmNzYzYzBhNzUzYzRmZTkwNDU5ODFmZGM3Mjg1NzFiOTUwMjE1MTQ0NTBkMjE2MGJiYjgiLCJleHRlcm5hbF91cmwiOiJodHRwczovL21hcmtldC5vY2VhbnByb3RvY29sLmNvbS9hc3NldC9kaWQ6b3A6MTZjZjQyNGRhYWE4Y2Y3NjNjMGE3NTNjNGZlOTA0NTk4MWZkYzcyODU3MWI5NTAyMTUxNDQ1MGQyMTYwYmJiOCIsImJhY2tncm91bmRfY29sb3IiOiIxNDE0MTQiLCJpbWFnZV9kYXRhIjoiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB2aWV3Qm94PScwIDAgOTkgOTknIGZpbGw9J3VuZGVmaW5lZCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyNzcnIGQ9J00wLDk5TDAsMzFDMTIsMjUgMjQsMjAgMzUsMTlDNDUsMTcgNTUsMjAgNjYsMjFDNzYsMjEgODcsMjEgOTksMjFMOTksOTlaJy8lM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmJiJyBkPSdNMCw5OUwwLDQ2QzgsNTAgMTYsNTQgMjksNTRDNDEsNTMgNTYsNDYgNjksNDVDODEsNDMgOTAsNDUgOTksNDhMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJmZicgZD0nTTAsOTlMMCw2N0MxMSw2OSAyMiw3MiAzNCw3M0M0NSw3MyA1Niw3MSA2Nyw3MUM3Nyw3MCA4OCw3MSA5OSw3M0w5OSw5OVonJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFIn0=' // }, - // nftAddress: '0xACa9d4Df6a4dfF29913A111099bc4aC6363C124F', + // nftAddress: '0x59E27Aa74275E2373A965C0a9dca8f112b82D785', // purgatory: { // state: false, // reason: '' // }, // services: [ // { - // compute: { - // allowNetworkAccess: true, - // allowRawAlgorithm: false, - // publisherTrustedAlgorithmPublishers: [], - // publisherTrustedAlgorithms: [] - // }, - // datatokenAddress: '0x7626dE49a774c18E0f7Fc658821a87E103f80fab', + // datatokenAddress: '0xC48934b7FfE9a061039e8a2a0DAe303D2b1b68AF', // files: - // '0x0498ac38d3ac04dc4f33b5a91358b8e121fa5bc86bcb20b8bc1c27ce1f47db491efda1bf90ab4d4c893a636d570f8fdc29eae7e010f846a34cfc24bc751b64f9d104afcc7f22c82a8cffb412886ba9649b73c2b6fe95e5fab0882bc8174823db08af64c14177bfafad0fc43bb9c9db95df61dabeb0ac1fbb27c07d3705cdf6f8fdd5cb37fc2c50ae0db6bf778b7f9f5475ce1730edacd8e48aa99548184ece9df8fabca2bd7535caf9107b3312f15aaaf6bbc2143782824aac54a04a5136bd1af2121b579b8eaa71abccff4bc4147b592e2b7b7a6d928870861996e67b69277ef60128d7cf86ce5abbf860194ab5ebd8dcbc2a29fbddf5f2482510736de7e9427b4f61306df121a1bd757f0c7d0ae7c702bdff2c85f9b9c7956ced9561693da910ac211e3f35a295981a443695be9e8854554c87fd4747a709a3e43a220e380b4c36f4de92f4b0e2a6301b33c9b22356de1fec345b268e632673e3c70bc5eb', - // id: 'be48353fe208e765c24b0a344c2cc826ff0ea18582a162d67f6ad23078595d59', + // '0x043e6b925b876905ec72df9e7db50b155b748e6145ca69d27c8c2af814a9e0cd8ade58cbfea27de7d4823ee30c192b0d73260d605f985edf6dfe51c68e8645425d1097d6e204ad3fab1fce3bed78c720df1e875c653b3c0103f8d2e5b1c24946f2c215ad8e365a9b8ff19dd70451540991008447fd103a0b015392675d5e57ddcca093fc5792b45f5ea9f782a94b57f3111e2e5efe2134422985a29387bd8237ad9f5c83630cd2d5afe01a54decf2ce070a446a827e53d015da04ac3d623988ea78a51fd456f5b2ef6049aebdd36065b12bbdbac1879721beaef3ec0e140842299459afc28cb9a1ac805db3cf93849de5d91cff5ab655daf59569621743f5551240b0298d765b3425609e6c864aeace8c91ee40e53e18c30344b901aa8164a975ca0f23e5db8d8a2693ec79f6bfe357cadbe28c3f3023b312161ad32c132d4b867ab51ca8361539c147798ded00845664c2566bf10cfa7ed3afbd91c960ceca43d20611d7d23c1e14816aefe2712052bf2b74fee56efc1f15ab98d8aa6134120651422902d10d5a523ae3a2c6dc9e561', + // id: 'f0e61512966f65e3198fc3caecf198a1f20ff3ca781437e15fe9edc7a00745a4', // serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', - // timeout: 0, - // type: 'compute' + // timeout: 86400, + // type: 'access' + // } + // ], + // stats: { + // allocated: 50.2051887512, + // orders: 1, + // price: { + // value: 3231343254, + // tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', + // tokenSymbol: 'OCEAN' + // } + // }, + // version: '4.1.0', + // accessDetails: { + // templateId: 1, + // publisherMarketOrderFee: '0', + // type: 'fixed', + // addressOrId: + // '0xcaf28ecd5a5a3674f7f7b2d61d9546fa50d16607d55ba7a8f9a4ac818f35f311', + // price: '10', + // isPurchasable: true, + // baseToken: { + // address: '0xcfdda22c9837ae76e0faa845354f33c62e03653a', + // name: 'Ocean Token', + // symbol: 'OCEAN', + // decimals: 18 + // }, + // datatoken: { + // address: '0xc48934b7ffe9a061039e8a2a0dae303d2b1b68af', + // name: 'Arcadian Shell Token', + // symbol: 'ARCSHE-59' + // }, + // isOwned: false, + // validOrderTx: null + // } + // }, + // { + // '@context': ['https://w3id.org/did/v1'], + // chainId: 5, + // datatokens: [ + // { + // address: '0x1FC8dB81E8b68EB1891f83e742377827b56a0663', + // name: 'Querulous Plankton Token', + // serviceId: + // '9a3135912010f6b27a6c1511c0221853136b3cbc1a55c62ce2b147512300402f', + // symbol: 'QUEPLA-8' + // } + // ], + // event: { + // block: 7724073, + // contract: '0x9293919ED1362e6e0572900B2595a2A0bA1cc77C', + // datetime: '2022-10-06T21:20:36', + // from: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', + // tx: '0x3b4114e150106247ac71ff96c22604993eae1c0c58725eb8df217aaa3d716238' + // }, + // id: 'did:op:930b016ea9790156593e016ba2a4fe7a8bd276c8043320f8ba34d9b36395069e', + // metadata: { + // additionalInformation: { + // termsAndConditions: true + // }, + // author: + // 'Gaël Varoquaux, Alexandre Gramfort, Fabian Pedregosa, Vincent Michel, Bertrand Thirion, Richardson, Hilary, Lisandrelli, Grace, Riobueno-Naylor, Alexa, Saxe, Rebecca', + // created: '2022-10-06T21:19:37Z', + // description: + // 'Brain functional networks and parcels can extracted from resting-state fMRI. For this purpose we use a multi-subject version of sparse dictionary learning and estimate a group-level atlas of brain networks. This can be understand as a variant of ICA based on the assumption of sparsity rather than independence.\n\nExperiment Details\nParticipants watched Disney Pixar’s “Partly Cloudy” while lying in the scanner. There was no task; participants were simply instructed to lie still and watch the movie. The movie began after 10s of rest (black screen; TRs 1-5). The first 10s of the movie are the opening credits (disney castle, pixar logo; TRs 6-10). \n\nIPS = 168 TRs\nTR = 2s\nExperiment length: 5.6 minutes\n\nPixar Movie Reverse Correlation Events\nEvents defined by conducting reverse correlation analysis in two separate adult samples, using the average response in ToM brain regions (ToM events) and in the pain matrix (Pain events). Events listed are those that replicated across the two samples. Onsets and Durations are noted in TRs (1 TR = 2s); scanner trigger = TR 1.\n\nEvent types: Theory of Mind (ToM), Physical Sensation/Pain (Pain)\nTRs identified by RC analysis, as reported in Richardson et al. 2018\nToM Event Onsets; Durations \n46; 2\n52; 3\n63; 2\n91; 8\n122; 3\n129; 4\n153; 3\n\nPain Event Onsets; Durations\n38; 2\n49; 1\n56; 2\n71; 5\n100; 2\n108; 6\n117; 3\n134; 3\n159; 2\n\n\nTIMING OF EVENTS FOR MODELING (taking into account hemodynamic lag (4s), scanner trigger = 0):\nAll timings assume 10s from trigger until movie begins to play.\n\nIn seconds:\nMental Event Onsets; Durations\n86; 4\n98; 6\n120; 4\n176; 16\n238; 6\n252; 8\n300; 6\n\nPain Event Onsets; Durations\n70; 4\n92; 2\n106; 4\n136; 10\n194; 4\n210; 12\n228; 6\n262; 6\n312; 4\n\nIn TRs when TR=2:\nMental Event Onsets; Durations\n43; 2\n49; 3\n60; 2\n88; 8\n119; 3\n126; 4\n150; 3\n\nPain Event Onsets; Durations\n35; 2\n46; 1\n53; 2\n68; 5\n97; 2\n105; 6\n114; 3\n131; 3\n156; 2', + // license: 'https://market.oceanprotocol.com/terms', + // name: 'Probabilistic Atlas of Functional Regions in Movie-Watching ', + // tags: [ + // 'msdl', + // 'probabilistic-atlas', + // 'resting-state', + // 'fmri', + // 'visual-stimuli' + // ], + // type: 'dataset', + // updated: '2022-10-06T21:19:37Z' + // }, + // nft: { + // address: '0x9293919ED1362e6e0572900B2595a2A0bA1cc77C', + // created: '2022-10-06T21:20:36', + // name: 'Ocean Data NFT', + // owner: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', + // state: 0, + // symbol: 'OCEAN-NFT', + // tokenURI: + // 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBOZXVyYURBTyBNYXJrZXRwbGFjZTogaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjkzMGIwMTZlYTk3OTAxNTY1OTNlMDE2YmEyYTRmZTdhOGJkMjc2YzgwNDMzMjBmOGJhMzRkOWIzNjM5NTA2OWUiLCJleHRlcm5hbF91cmwiOiJodHRwczovL21hcmtldC5vY2VhbnByb3RvY29sLmNvbS9hc3NldC9kaWQ6b3A6OTMwYjAxNmVhOTc5MDE1NjU5M2UwMTZiYTJhNGZlN2E4YmQyNzZjODA0MzMyMGY4YmEzNGQ5YjM2Mzk1MDY5ZSIsImJhY2tncm91bmRfY29sb3IiOiIxNDE0MTQiLCJpbWFnZV9kYXRhIjoiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB2aWV3Qm94PScwIDAgOTkgOTknIGZpbGw9J3VuZGVmaW5lZCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyNzcnIGQ9J00wLDk5TDAsMjRDNywyNSAxNSwyNiAyNywyN0MzOCwyNyA1NCwyNiA2NywyNkM3OSwyNSA4OSwyNCA5OSwyNEw5OSw5OVonLyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyYmInIGQ9J00wLDk5TDAsNDFDOSw0NyAxOCw1MyAyOSw1NUM0MCw1NiA1Myw1NCA2NSw1M0M3Nyw1MSA4OCw1MSA5OSw1Mkw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmZmJyBkPSdNMCw5OUwwLDc5QzEzLDc5IDI3LDgwIDM3LDc3QzQ2LDczIDUyLDY2IDYyLDY3QzcxLDY3IDg1LDc0IDk5LDgxTDk5LDk5WiclM0UlM0MvcGF0aCUzRSUzQy9zdmclM0UifQ==' + // }, + // nftAddress: '0x9293919ED1362e6e0572900B2595a2A0bA1cc77C', + // purgatory: { + // state: false, + // reason: '' + // }, + // services: [ + // { + // datatokenAddress: '0x1FC8dB81E8b68EB1891f83e742377827b56a0663', + // files: + // '0x0421fc24dc6b2bbe70ec05954eeda9e60156fc62e4a90aff80d1bd34ff647324bef394500adc3b202bf4d2a22af48cccd414c599579fb054876ccc631ad4fa39eb76bde29c7bde581b6954334891bffef4c4a9d5e08369ec12b26964a552b9f9d0796f053705a71737f692d74be64fa21db0a06811a6eedc4d7b3a4416cddca0aaacaeda4f327e2e7579bdf40c6b894adb72c33c41d181b52b4100a3381f4b7ae0c83effb9edbf025630a6691804b1911560d6d15934ae5ae79e548e72e325173d0a8c8920981367cf1e7ba9126f5be6a756a5e4508e614ed78a15f97f39c5a317fa65de1e2481d144db2802fcdeff77a1b43db7d6ad45a82d7cf375b629387335495d93b63bb78a45219ba0e9ee7c0ab85713d4bd315ccb46eed6c0a87d45e01a9c4cb278f988e1e05f7b24ab25bc9bca3763457116e0c4c8e7336d5fcbed697aa2ec0c13a224a800bb0ce7693d421ff833', + // id: '9a3135912010f6b27a6c1511c0221853136b3cbc1a55c62ce2b147512300402f', + // serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', + // timeout: 86400, + // type: 'access' // } // ], // stats: { @@ -674,8 +696,8 @@ export const assets: AssetExtended[] = [ // publisherMarketOrderFee: '0', // type: 'fixed', // addressOrId: - // '0x1c4f156e06d1b9eeb5aa367869c9d14386918aa12ef4969c3bf242ef6bcba7c8', - // price: '5', + // '0x938802c3fe89c54a0e6b1cd47fa5263817282185a2e0f78fa2957ec1aff970fc', + // price: '6', // isPurchasable: true, // baseToken: { // address: '0xcfdda22c9837ae76e0faa845354f33c62e03653a', @@ -684,888 +706,1106 @@ export const assets: AssetExtended[] = [ // decimals: 18 // }, // datatoken: { - // address: '0x7626de49a774c18e0f7fc658821a87e103f80fab', - // name: 'Lovely Prawn Token', - // symbol: 'LOVPRA-51' + // address: '0x1fc8db81e8b68eb1891f83e742377827b56a0663', + // name: 'Querulous Plankton Token', + // symbol: 'QUEPLA-8' // }, // isOwned: false, // validOrderTx: null // } // }, - { - '@context': ['https://w3id.org/did/v1'], - chainId: 5, - datatokens: [ - { - address: '0x40C929B5265F13E668A3e81c4289A279bd2f7452', - name: 'Fecund Anchovy Token', - serviceId: - '440cdd2f76cd72803ca478fd432d087d6213711ac35163591afe22bbc77a0154', - symbol: 'FECANC-54' - } - ], - event: { - block: 7723800, - contract: '0x9C725CADD67f67B5F755a30879945c3ECF6aAA46', - datetime: '2022-10-06T20:10:12', - from: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', - tx: '0x5ea85c7bc0998a42896a7011d0595f01159647399e1fd008353ac9bb95339a25' - }, - id: 'did:op:2f9cf3eba8ff21db32350aa6d48db89ca86beab7adf729a40a5debdcef8cd7cb', - metadata: { - additionalInformation: { - termsAndConditions: true - }, - author: - 'Haxby, J. V., Gobbini, M. I., Furey, M. L., Ishai, A., Schouten, J. L. & Pietrini, P.', - created: '2022-10-06T20:09:49Z', - description: - 'This is a block-design fMRI dataset from a study on face and object representation in human ventral temporal cortex. It consists of 6 subjects with 12 runs per subject. In each run, the subjects passively viewed greyscale images of eight object categories, grouped in 24s blocks separated by rest periods. Each image was shown for 500ms and was followed by a 1500ms inter-stimulus interval. Full-brain fMRI data were recorded with a volume repetition time of 2.5s, thus, a stimulus block was covered by roughly 9 volumes. This dataset has been repeatedly reanalyzed. For a complete description of the experimental design, fMRI acquisition parameters, and previously obtained results see the [references](http://www.pymvpa.org/datadb/haxby2001.html#references) below.\n\n', - license: 'https://market.oceanprotocol.com/terms', - name: 'Faces and Objects in Ventral Temporal Cortex (fMRI)', - tags: ['fmri', 'bold', '4d', 'functional', 'visual-stimuli'], - type: 'dataset', - updated: '2022-10-06T20:09:49Z' - }, - nft: { - address: '0x9C725CADD67f67B5F755a30879945c3ECF6aAA46', - created: '2022-10-06T20:10:12', - name: 'Ocean Data NFT', - owner: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', - state: 0, - symbol: 'OCEAN-NFT', - tokenURI: - 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBOZXVyYURBTyBNYXJrZXRwbGFjZTogaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjJmOWNmM2ViYThmZjIxZGIzMjM1MGFhNmQ0OGRiODljYTg2YmVhYjdhZGY3MjlhNDBhNWRlYmRjZWY4Y2Q3Y2IiLCJleHRlcm5hbF91cmwiOiJodHRwczovL21hcmtldC5vY2VhbnByb3RvY29sLmNvbS9hc3NldC9kaWQ6b3A6MmY5Y2YzZWJhOGZmMjFkYjMyMzUwYWE2ZDQ4ZGI4OWNhODZiZWFiN2FkZjcyOWE0MGE1ZGViZGNlZjhjZDdjYiIsImJhY2tncm91bmRfY29sb3IiOiIxNDE0MTQiLCJpbWFnZV9kYXRhIjoiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB2aWV3Qm94PScwIDAgOTkgOTknIGZpbGw9J3VuZGVmaW5lZCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyNzcnIGQ9J00wLDk5TDAsMjRDOSwyNSAxOCwyNyAyOSwyOEMzOSwyOCA1MSwyOCA2MywyOEM3NCwyNyA4NiwyNyA5OSwyOEw5OSw5OVonLyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyYmInIGQ9J00wLDk5TDAsNDlDMTIsNDcgMjUsNDUgMzUsNDVDNDQsNDQgNTEsNDQgNjIsNDVDNzIsNDUgODUsNDcgOTksNTBMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJmZicgZD0nTTAsOTlMMCw3NEMxMSw3NCAyMyw3NSAzNCw3NkM0NCw3NiA1Myw3OCA2NCw3OEM3NCw3NyA4Niw3NSA5OSw3NEw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFIn0=' - }, - nftAddress: '0x9C725CADD67f67B5F755a30879945c3ECF6aAA46', - purgatory: { - state: false, - reason: '' - }, - services: [ - { - datatokenAddress: '0x40C929B5265F13E668A3e81c4289A279bd2f7452', - files: - '0x04766f8cb6306eed4cd0fb6938c68a946a2f299525890afac89fab0e3e697748961e5072136e0ae57f20a7b6a6bc8ef12760b2c774e7feea28dcc099c7d52b77201a1f57b0e0d345ec0b51b5beb13af6c2a2a72ab5fb610de8a194f6fa0ef7f0fd84b0b868ed63ff820813c72c6d228fc093e299490a2f8a95cbd43f69e0bcdba524457191f812977ce6239db432641c13442caac3594d962fd3410bd829aea7cc82483473f42417922b12c9f8871a60be7d33ebc5bed37d2416defb59dbd3b63330ab33acea402f1d09145f05504d031cdc53c0120ce5704bad4721af2f71175ac19c7d3d0cde0830d9f59c90a0e8b94e162b025f86171e6145486afeb06b5409ff1e867f32c9191bf7063180f9d883e9fa7d64acb30bd3c5f6cb43c8249ed740859955a6f9036130b2c0832d433f58bfde1267c883c98065168080bba055a4f1d4e394b80f606f81792ef1b8815fdc1184f6', - id: '440cdd2f76cd72803ca478fd432d087d6213711ac35163591afe22bbc77a0154', - serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', - timeout: 0, - type: 'access' - } - ], - stats: { - allocated: 0, - orders: 1, - price: { - value: 3231343254, - tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', - tokenSymbol: 'OCEAN' - } - }, - version: '4.1.0', - accessDetails: { - templateId: 1, - publisherMarketOrderFee: '0', - type: 'fixed', - addressOrId: - '0xe6665bd4541c6584a3e31dbf73a74e91da6c791954ea3d61905e50b6e00e0b4e', - price: '5', - isPurchasable: true, - baseToken: { - address: '0xcfdda22c9837ae76e0faa845354f33c62e03653a', - name: 'Ocean Token', - symbol: 'OCEAN', - decimals: 18 - }, - datatoken: { - address: '0x40c929b5265f13e668a3e81c4289a279bd2f7452', - name: 'Fecund Anchovy Token', - symbol: 'FECANC-54' - }, - isOwned: false, - validOrderTx: null - } - }, - { - '@context': ['https://w3id.org/did/v1'], - chainId: 137, - datatokens: [ - { - address: '0x0A81F1c69e5428067e6124817C7AFFE8bC0adF9f', - name: 'Fabulous Walrus Token', - serviceId: - '485bd67a4bdb69353b4500bb194c6a20c6be57337956cf2f699f3530847ef038', - symbol: 'FABWAL-60' - } - ], - event: { - block: 34000873, - contract: '0x5f7D840050e008F91f9Fd3dba5fE0f91BbE4b14F', - datetime: '2022-10-06T11:16:48', - from: '0xF5dcd98a1C99c2c65C62025Cb23cFB6f12F35497', - tx: '0x8713e0f444dee5a79799d3037047a3463199164232250b056f8723b2402ea320' - }, - id: 'did:op:1ea697b447f0a0b3209048f144c0331ca1a8c10af27e233512a41623b93ff8ed', - metadata: { - additionalInformation: { - termsAndConditions: true - }, - author: 'OPF', - created: '2022-10-06T11:16:17Z', - description: - 'Test asset wrt issue https://github.com/oceanprotocol/ocean.py/issues/990\n\nUrl is https://cexa.oceanprotocol.io/ohlc?exchange=binance&pair=ETH/USDT', - license: 'https://market.oceanprotocol.com/terms', - name: 'CEXA test ocean.py#990 (4)', - tags: ['defi'], - type: 'dataset', - updated: '2022-10-06T11:16:17Z' - }, - nft: { - address: '0x5f7D840050e008F91f9Fd3dba5fE0f91BbE4b14F', - created: '2022-10-06T11:16:48', - name: 'Ocean Data NFT', - owner: '0xF5dcd98a1C99c2c65C62025Cb23cFB6f12F35497', - state: 0, - symbol: 'OCEAN-NFT', - tokenURI: - 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDoxZWE2OTdiNDQ3ZjBhMGIzMjA5MDQ4ZjE0NGMwMzMxY2ExYThjMTBhZjI3ZTIzMzUxMmE0MTYyM2I5M2ZmOGVkIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjFlYTY5N2I0NDdmMGEwYjMyMDkwNDhmMTQ0YzAzMzFjYTFhOGMxMGFmMjdlMjMzNTEyYTQxNjIzYjkzZmY4ZWQiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDI4QzEwLDI0IDIwLDIxIDI3LDIxQzMzLDIwIDM3LDIyIDQ2LDI0QzU0LDI1IDY2LDI3IDc2LDI4Qzg1LDI4IDkyLDI3IDk5LDI2TDk5LDk5WicvJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJiYicgZD0nTTAsOTlMMCw1NkM4LDU1IDE3LDU0IDI1LDUxQzMyLDQ3IDQwLDQwIDQ5LDQyQzU3LDQzIDY4LDUyIDc3LDU0Qzg1LDU1IDkyLDUwIDk5LDQ2TDk5LDk5WiclM0UlM0MvcGF0aCUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyZmYnIGQ9J00wLDk5TDAsNzdDNiw3OCAxMyw4MCAyMSw4MEMyOCw3OSAzNyw3NiA0Niw3NUM1NCw3MyA2NCw3MSA3Myw3MkM4MSw3MiA5MCw3NCA5OSw3Nkw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFIn0=' - }, - nftAddress: '0x5f7D840050e008F91f9Fd3dba5fE0f91BbE4b14F', - purgatory: { - state: false, - reason: '' - }, - services: [ - { - datatokenAddress: '0x0A81F1c69e5428067e6124817C7AFFE8bC0adF9f', - files: - '0x04c5f0ebee297a2121d3f37e46d93ac2c0fc5d642e4c4c4eae152754047ae4b10e0445b4e908166a47c3e98b636cbf9791d0ee1caf37d6f6fa7da539abc52df7e2d55b2b33b0378a38dbaf3e489b830d57e8db8dbc6deff94476eda055f0a5152869e8cee2eae42692070f98aa9b99025a1a4887e84f34176a27b65e6cec455ba60e6628e496c91bd1b222612ed1f530a3976f0fe5ae55afad194fa947fef19b97522ca45c6268afff22d610d1fd6f11d10f02fb42d66d566fca66544537feb717d6c8d6281408c9d4e29905bdac106e7f94750631082fcae42929b3a389d298fac48513397a8e3c235a81acd9675e92dd776f37a762d7a1b706abf26a46e571e9513c4ee9119a8f60d51995fcdcc76a9e048d16bae1e4cfe50824f9b71104e5485b1ef784e95195d3bbed2b604fc24c8f8f4e780e1837aac1cc0194b2db1b91a56671b998f32ffba6d43482cc6cc6e33c1296865d1f4fbe', - id: '485bd67a4bdb69353b4500bb194c6a20c6be57337956cf2f699f3530847ef038', - serviceEndpoint: 'https://v4.provider.polygon.oceanprotocol.com', - timeout: 604800, - type: 'access' - } - ], - stats: { - allocated: 114.1658859253, - orders: 1, - price: { - value: 3231343254, - tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', - tokenSymbol: 'OCEAN' - } - }, - version: '4.1.0', - accessDetails: { - templateId: 1, - publisherMarketOrderFee: '0', - type: 'free', - addressOrId: '0x0a81f1c69e5428067e6124817c7affe8bc0adf9f', - price: '0', - isPurchasable: true, - datatoken: { - address: '0x0a81f1c69e5428067e6124817c7affe8bc0adf9f', - name: 'Fabulous Walrus Token', - symbol: 'FABWAL-60' - }, - baseToken: null, - isOwned: false, - validOrderTx: null - } - }, - { - '@context': ['https://w3id.org/did/v1'], - chainId: 5, - datatokens: [ - { - address: '0xbadac447bF4868aeCa6A9c7448DDAdfe6632509a', - name: 'Tactful Shark Token', - serviceId: - 'c02b30d8930ac5d2561d4c391c74c06a39d6060802be2534218bd3449d9387ce', - symbol: 'TACSHA-14' - } - ], - event: { - block: 7717509, - contract: '0x4eF0395f0319E6d919942ea3a98472cf957967Da', - datetime: '2022-10-05T18:25:48', - from: '0x26D9690eD920682FbC4f3A05e480B8c6ff978ca8', - tx: '0xe3e87b83e0f687dceb8db1eb4d3b8053522a6b722e376e472e71e337ad64c0a2' - }, - id: 'did:op:d1563919dd61c8ea5790b85f3a569fa69e46c84a600290ca377a1cb009bb7694', - metadata: { - additionalInformation: { - termsAndConditions: true - }, - author: 'aaa', - created: '2022-10-05T18:25:38Z', - description: 'Template template moneeey', - license: 'https://market.oceanprotocol.com/terms', - name: 'Template template moneeey', - tags: [], - type: 'dataset', - updated: '2022-10-05T18:25:38Z' - }, - nft: { - address: '0x4eF0395f0319E6d919942ea3a98472cf957967Da', - created: '2022-10-05T18:25:48', - name: 'Ocean Data NFT', - owner: '0x26D9690eD920682FbC4f3A05e480B8c6ff978ca8', - state: 0, - symbol: 'OCEAN-NFT', - tokenURI: - 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDpkMTU2MzkxOWRkNjFjOGVhNTc5MGI4NWYzYTU2OWZhNjllNDZjODRhNjAwMjkwY2EzNzdhMWNiMDA5YmI3Njk0IiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOmQxNTYzOTE5ZGQ2MWM4ZWE1NzkwYjg1ZjNhNTY5ZmE2OWU0NmM4NGE2MDAyOTBjYTM3N2ExY2IwMDliYjc2OTQiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDI5QzUsMjkgMTEsMjkgMjAsMzBDMjgsMzAgMzgsMzEgNDgsMjlDNTcsMjYgNjUsMjEgNzQsMjBDODIsMTggOTAsMTkgOTksMjBMOTksOTlaJy8lM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmJiJyBkPSdNMCw5OUwwLDU3QzksNTcgMTgsNTggMjYsNTVDMzMsNTEgMzksNDIgNDcsNDJDNTQsNDEgNjQsNTAgNzQsNTNDODMsNTUgOTEsNTEgOTksNDdMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJmZicgZD0nTTAsOTlMMCw3NEMxMCw3MiAyMCw3MCAyOCw2OUMzNSw2NyAzOCw2NiA0Niw3MEM1Myw3MyA2NCw3OSA3NCw4MEM4Myw4MCA5MSw3MyA5OSw2N0w5OSw5OVonJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFIn0=' - }, - nftAddress: '0x4eF0395f0319E6d919942ea3a98472cf957967Da', - purgatory: { - state: false, - reason: '' - }, - services: [ - { - datatokenAddress: '0xbadac447bF4868aeCa6A9c7448DDAdfe6632509a', - files: - '0x048db0b48ee8f19f3e163cef39095799876e84ad5a2dd3e5140b2ed0f33f13351d078b07b5e1d38f2427ff0a2a21a24dc0f02756bb51603b384adc83b936621a8861fd5e56d9d51122f391cf1f823ae417a56dc8a0f3f26e85eafad124500175be7c732aec90cc5cc88c83378e3a503334f0e0589ca0f48328bda961dcf26dae6ea209143918f201a81be982bbcfd0294f7d97a4d54e7982b995c4329c5d3c29e084c4d4aaeeeccc9b70f353de7fdc38a70dbcbd0425d9c696e8fefa9ea7a3d4aa4f28c8dcba7536e7afc5aa8d64c5b9b949657aed2249440a80f46b2b84317530a35888ccbc259de8a4c77f91c25d0c507b67e7998143b0e9b0068b72f93a2195a1c5b9260684fa554bdd15721a34cad1308c45483ab935ba9ac1f391b89f10158fb39b712af5f37d135591c21a', - id: 'c02b30d8930ac5d2561d4c391c74c06a39d6060802be2534218bd3449d9387ce', - serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', - timeout: 0, - type: 'access' - } - ], - stats: { - orders: 1, - price: { - value: 3231343254, - tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', - tokenSymbol: 'OCEAN' - } - }, - version: '4.1.0', - accessDetails: { - templateId: 1, - publisherMarketOrderFee: '0', - type: 'fixed', - addressOrId: - '0xdbfa14546d4f2caa1e0d59cbf8ae775c65b0d34369f8c62990c0b0d0bc73ff10', - price: '2', - isPurchasable: true, - baseToken: { - address: '0xcfdda22c9837ae76e0faa845354f33c62e03653a', - name: 'Ocean Token', - symbol: 'OCEAN', - decimals: 18 - }, - datatoken: { - address: '0xbadac447bf4868aeca6a9c7448ddadfe6632509a', - name: 'Tactful Shark Token', - symbol: 'TACSHA-14' - }, - isOwned: false, - validOrderTx: null - } - }, - { - '@context': ['https://w3id.org/did/v1'], - chainId: 5, - datatokens: [ - { - address: '0x772224c2C2bddb88A55b3905aAaf8C7188b02ce3', - name: 'Rebarbative Barnacle Token', - serviceId: - '42e244808872c9f4ad96db99d9877abbf3cae9988dec9bd52ab2e336d7ac83af', - symbol: 'REBBAR-99' - } - ], - event: { - block: 7717490, - contract: '0xf919A3b0D1538CAA24Efe2BeaAbe43F776aE83ED', - datetime: '2022-10-05T18:21:24', - from: '0x26D9690eD920682FbC4f3A05e480B8c6ff978ca8', - tx: '0xa38677962c1c83faad8365fbd924b3ca35fb2c0f07af504d7438eec6e54c9918' - }, - id: 'did:op:aeb9faad199e79eb21cddc15557fa42fe95a02e03c493be8e849594aae60221a', - metadata: { - additionalInformation: { - termsAndConditions: true - }, - author: 'aaaa', - created: '2022-10-05T18:21:13Z', - description: 'Template template ', - license: 'https://market.oceanprotocol.com/terms', - name: 'Template template ', - tags: ['aaa'], - type: 'dataset', - updated: '2022-10-05T18:21:13Z' - }, - nft: { - address: '0xf919A3b0D1538CAA24Efe2BeaAbe43F776aE83ED', - created: '2022-10-05T18:21:24', - name: 'Ocean Data NFT', - owner: '0x26D9690eD920682FbC4f3A05e480B8c6ff978ca8', - state: 0, - symbol: 'OCEAN-NFT', - tokenURI: - 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDphZWI5ZmFhZDE5OWU3OWViMjFjZGRjMTU1NTdmYTQyZmU5NWEwMmUwM2M0OTNiZThlODQ5NTk0YWFlNjAyMjFhIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOmFlYjlmYWFkMTk5ZTc5ZWIyMWNkZGMxNTU1N2ZhNDJmZTk1YTAyZTAzYzQ5M2JlOGU4NDk1OTRhYWU2MDIyMWEiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDE4QzEwLDE3IDIwLDE2IDI4LDE5QzM1LDIxIDM5LDI4IDQ4LDI5QzU2LDI5IDY3LDI0IDc3LDIyQzg2LDE5IDkyLDE4IDk5LDE4TDk5LDk5WicvJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJiYicgZD0nTTAsOTlMMCw0OEM2LDUwIDEzLDUyIDIzLDU1QzMyLDU3IDQ0LDU4IDUzLDU2QzYxLDUzIDY3LDQ1IDc1LDQzQzgyLDQwIDkwLDQxIDk5LDQzTDk5LDk5WiclM0UlM0MvcGF0aCUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyZmYnIGQ9J00wLDk5TDAsNzVDOSw3NCAxOSw3MyAyOCw3NEMzNiw3NCA0NCw3NSA1Miw3NUM1OSw3NCA2Nyw3MyA3NSw3M0M4Miw3MiA5MCw3MSA5OSw3MUw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFIn0=' - }, - nftAddress: '0xf919A3b0D1538CAA24Efe2BeaAbe43F776aE83ED', - purgatory: { - state: false, - reason: '' - }, - services: [ - { - datatokenAddress: '0x772224c2C2bddb88A55b3905aAaf8C7188b02ce3', - files: - '0x0435d6273c00013a79d50a8b4fd8e65b7ccbde5fcb99726d52fb222282f5e80a18873a27908c5ed07fc808175784b162792c4946a735fbbe338c5ce7579ae46451f88c5eda573ae7c7764337d8d165a0fe715aab96f416c606b84f3b2dba9dbd8d7c00ce8ffe67d644ce88a4c9d842a149a93f3e6135b94b448db76960f5375dc661fb9a75b424d28b43553b58af31b02eab5b1e928f71c699eb9a4114284fe0b9eeeaccb3d02848c16a544160e68b18db5cc214f9d56b6c5aa775853248e5a0164045da6b30ccc7a13a45396bf2cf6bc10d31feb3bb9b2c40b3a6c8c97cde85de13b56d2f2d09aee13180b63423b7d30d4c6fd03d8d5ab15395463038c12b2da1ca86f9317011dc215750dd5c16f4360b658aa39f5e2e93b0ff1de9e7a88c5afb23daa5122160c463b973fb9bf8', - id: '42e244808872c9f4ad96db99d9877abbf3cae9988dec9bd52ab2e336d7ac83af', - serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', - timeout: 0, - type: 'access' - } - ], - stats: { - orders: 1, - price: { - value: 3231343254, - tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', - tokenSymbol: 'OCEAN' - } - }, - version: '4.1.0', - accessDetails: { - templateId: 2, - publisherMarketOrderFee: '0', - type: 'free', - addressOrId: '0x772224c2c2bddb88a55b3905aaaf8c7188b02ce3', - price: '0', - isPurchasable: true, - datatoken: { - address: '0x772224c2c2bddb88a55b3905aaaf8c7188b02ce3', - name: 'Rebarbative Barnacle Token', - symbol: 'REBBAR-99' - }, - baseToken: null, - isOwned: false, - validOrderTx: null - } - }, - { - '@context': ['https://w3id.org/did/v1'], - chainId: 137, - datatokens: [ - { - address: '0x89A0170556BB80438081D69F43d8C07a90e9Aa24', - name: 'Invidious Octopus Token', - serviceId: - '8573fbf5e2e5a90631e26bef416f140f815570b5124b8ad52812443d110a57c2', - symbol: 'INVOCT-85' - } - ], - event: { - block: 33956932, - contract: '0x0fb9814D744ed407878D6D7508649b8D43F6b30a', - datetime: '2022-10-05T09:49:12', - from: '0xF5dcd98a1C99c2c65C62025Cb23cFB6f12F35497', - tx: '0xe656b9d934ba1f8c98eb9372fd03709c880486fff0b50476450ef458694b1529' - }, - id: 'did:op:191af71e271d4eb6f9ac582b2a6a78e8d79167da7a13a30878c7b699842aa421', - metadata: { - additionalInformation: { - termsAndConditions: true - }, - author: 'OPF', - created: '2022-10-05T09:42:06Z', - description: - 'Test asset wrt issue https://github.com/oceanprotocol/ocean.py/issues/990\n\nUrl is https://cexa.oceanprotocol.io/ohlc?exchange=binance&pair=ETH/USDT', - license: 'https://market.oceanprotocol.com/terms', - name: 'CEXA test ocean.py#990 (3)', - tags: ['defi'], - type: 'dataset', - updated: '2022-10-05T09:42:06Z' - }, - nft: { - address: '0x0fb9814D744ed407878D6D7508649b8D43F6b30a', - created: '2022-10-05T09:49:12', - name: 'Ocean Data NFT', - owner: '0xF5dcd98a1C99c2c65C62025Cb23cFB6f12F35497', - state: 0, - symbol: 'OCEAN-NFT', - tokenURI: - 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDoxOTFhZjcxZTI3MWQ0ZWI2ZjlhYzU4MmIyYTZhNzhlOGQ3OTE2N2RhN2ExM2EzMDg3OGM3YjY5OTg0MmFhNDIxIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjE5MWFmNzFlMjcxZDRlYjZmOWFjNTgyYjJhNmE3OGU4ZDc5MTY3ZGE3YTEzYTMwODc4YzdiNjk5ODQyYWE0MjEiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDI4QzEwLDI1IDIxLDIyIDMzLDIzQzQ0LDIzIDU3LDI4IDY5LDI5QzgwLDI5IDg5LDI0IDk5LDIwTDk5LDk5WicvJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJiYicgZD0nTTAsOTlMMCw0NEMxMiw0OCAyNSw1MiAzNyw1NEM0OCw1NSA1OCw1MiA2OSw1MUM3OSw0OSA4OSw0OCA5OSw0OEw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmZmJyBkPSdNMCw5OUwwLDc3QzksNzQgMTgsNzEgMjksNzBDMzksNjggNTIsNjcgNjQsNjlDNzUsNzAgODcsNzMgOTksNzdMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRSJ9' - }, - nftAddress: '0x0fb9814D744ed407878D6D7508649b8D43F6b30a', - purgatory: { - state: false, - reason: '' - }, - services: [ - { - datatokenAddress: '0x89A0170556BB80438081D69F43d8C07a90e9Aa24', - files: - '0x040948a7677383b0c920458a6e1eca981061a9e4bf2b34a187d6fea73a21c568f9be5cb92233fc81e986e20b32c20d38a149ab45340b4a8ef9db0c8c000c7b2838b7a7496b5a4e670d97e3b6ed19af64635ba4ad737b2a90f377e5856ade60c0dad8375033d4a134cbff122234bb60e6e3e282e5dbdd6d3b0f9d5a7910e6a77d62c617f08120ac5b5ec88aec6609f22e0e24fe558e87865dc42278d09d5f4a2a30ac869f48221c481feee2dc0d39dc001c09e898964ccee99d16a24b4f41c3391dedc2f71140165541639c3d19385967347352be9c97fa8e7d9db842ab77eca21abf94edc422f83bd8017706d51791f2e282b5a0ec3a23521d898110aa66fa12a0ec6fa4258ca2cf4d7a6d1450b86eda81a936788fcd92f9754efa3fba4e69729e90d88bff58f12e5a1c76a24c57200a35f7bf71b9f525580e1f6ff7139c6c8f04fd4c59650dbfebaf5f5f1dccf4c3bc5d3a65b33c1d9107', - id: '8573fbf5e2e5a90631e26bef416f140f815570b5124b8ad52812443d110a57c2', - serviceEndpoint: 'https://v4.provider.polygon.oceanprotocol.com', - timeout: 604800, - type: 'access' - } - ], - stats: { - allocated: 11159.279296875, - orders: 1, - price: { - value: 0 - } - }, - version: '4.1.0', - accessDetails: { - templateId: 2, - publisherMarketOrderFee: '0', - type: 'free', - addressOrId: '0x89a0170556bb80438081d69f43d8c07a90e9aa24', - price: '0', - isPurchasable: true, - datatoken: { - address: '0x89a0170556bb80438081d69f43d8c07a90e9aa24', - name: 'Invidious Octopus Token', - symbol: 'INVOCT-85' - }, - baseToken: null, - isOwned: false, - validOrderTx: null - } - }, - { - '@context': ['https://w3id.org/did/v1'], - chainId: 5, - datatokens: [ - { - address: '0xAd42c7AfEe47140B5CD87F05d5846c418145f43A', - name: 'Zealous Clam Token', - serviceId: - '081b597131102e14ea5f16d6ba49f46889fb700f88f9430d03ec64441280a894', - symbol: 'ZEACLA-28' - } - ], - event: { - block: 7714916, - contract: '0xeE1c6bE384D3ee734E906443E9d893b03852bFC6', - datetime: '2022-10-05T07:41:24', - from: '0x3e81AA994f774eE914D57946DDF2486EA7d42D65', - tx: '0x20e01c84928b5432216cb7046dc81b50e2902e3e65d1a9b0c93fb7b772e2d979' - }, - id: 'did:op:50c60ce0810bf8f8b1c6ca421e5231b106cf4de784945037498c84147e11dbc5', - metadata: { - additionalInformation: { - termsAndConditions: true - }, - author: 'aaa', - created: '2022-10-05T07:40:44Z', - description: 'asda asda dsadadada', - license: 'https://market.oceanprotocol.com/terms', - name: 'Free testing', - tags: ['aaa'], - type: 'dataset', - updated: '2022-10-05T07:40:44Z' - }, - nft: { - address: '0xeE1c6bE384D3ee734E906443E9d893b03852bFC6', - created: '2022-10-05T07:41:24', - name: 'Ocean Data NFT', - owner: '0x3e81AA994f774eE914D57946DDF2486EA7d42D65', - state: 0, - symbol: 'OCEAN-NFT', - tokenURI: - 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDo1MGM2MGNlMDgxMGJmOGY4YjFjNmNhNDIxZTUyMzFiMTA2Y2Y0ZGU3ODQ5NDUwMzc0OThjODQxNDdlMTFkYmM1IiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjUwYzYwY2UwODEwYmY4ZjhiMWM2Y2E0MjFlNTIzMWIxMDZjZjRkZTc4NDk0NTAzNzQ5OGM4NDE0N2UxMWRiYzUiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDIwQzEzLDI0IDI3LDI4IDM3LDI3QzQ2LDI1IDUzLDE5IDYzLDE4QzcyLDE2IDg1LDIwIDk5LDI1TDk5LDk5WicvJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJiYicgZD0nTTAsOTlMMCw1NkM4LDU0IDE3LDUzIDI5LDUzQzQwLDUyIDU0LDUxIDY3LDUyQzc5LDUyIDg5LDUzIDk5LDU1TDk5LDk5WiclM0UlM0MvcGF0aCUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyZmYnIGQ9J00wLDk5TDAsNjlDMTEsNzMgMjIsNzcgMzQsNzdDNDUsNzYgNTgsNzEgNjksNjlDNzksNjYgODksNjcgOTksNjhMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRSJ9' - }, - nftAddress: '0xeE1c6bE384D3ee734E906443E9d893b03852bFC6', - purgatory: { - state: false, - reason: '' - }, - services: [ - { - datatokenAddress: '0xAd42c7AfEe47140B5CD87F05d5846c418145f43A', - files: - '0x0431fb7120723def69d30ee6aede9846cf0578ae44e22459f7273e4b37f204832f4b87f0ea6cea7bbea820a35d0b18e6c599d3898368ddf03df6a5cd8003a0100274e8405f640815d18e63ce680c3a6fae28b71fc2e072d02c39618a85fa12528f0b740d9ea0f2b4d0795444794f1b614ef1a796deb2399ccaa5b709707a08d5a6b576eac811bfc35f9e02e8d778538dd989fe7d237e46bfffcd680cd9f70d30f5acbbcff33845a95aa1c310864ca95fb076a40174a307d3b71c3259bde027381460f02ff6bcdcfaee9edf6e74dc0adc465b4bcdaac74e6ca7f4181cec45cc5f2c925295b226e586935d7edd644ebe913c491ebfe6144bf605b330e42b7f35a88b55a1f7dc0b19851c0b032494e910b929831e9e5135d79134c2f3cd565a071327d7ba8b83357832603cec9aedc9', - id: '081b597131102e14ea5f16d6ba49f46889fb700f88f9430d03ec64441280a894', - serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', - timeout: 0, - type: 'access' - } - ], - stats: { - orders: 0, - price: { - value: 0 - } - }, - version: '4.1.0', - accessDetails: { - templateId: 2, - publisherMarketOrderFee: '0', - type: 'free', - addressOrId: '0xad42c7afee47140b5cd87f05d5846c418145f43a', - price: '0', - isPurchasable: true, - datatoken: { - address: '0xad42c7afee47140b5cd87f05d5846c418145f43a', - name: 'Zealous Clam Token', - symbol: 'ZEACLA-28' - }, - baseToken: null, - isOwned: false, - validOrderTx: null - } - }, - { - '@context': ['https://w3id.org/did/v1'], - chainId: 137, - credentials: { - allow: [], - deny: [] - }, - datatokens: [ - { - address: '0xf31b9c3EEE46249c29339319Bfd41167DE5980f1', - name: 'ETH predictions: DT1', - serviceId: '0', - symbol: 'DT1' - } - ], - event: { - block: 33937819, - contract: '0xaD244AC409cEfA155059890b425b83F6A4146d69', - datetime: '2022-10-04T22:43:00', - from: '0x7BA3d8551A6f2C70a5d47bb448BcF7EF69661822', - tx: '0xdef98b7863ca74caf4af17315942744bf8c1f909da9e4db1287c6acf2beba1d9' - }, - id: 'did:op:f4b49d04ee8c6973e4f844754805dbfe9e682812121131abbfc1bdf6d6b6eef1', - metadata: { - author: '0x7BA3d', - created: '2022-10-04T17:42:13.745633', - description: 'ETH predictions', - license: 'CC0: PublicDomain', - name: 'ETH predictions', - type: 'dataset', - updated: '2022-10-04T17:42:13.745633' - }, - nft: { - address: '0xaD244AC409cEfA155059890b425b83F6A4146d69', - created: '2022-10-04T22:43:00', - name: 'ETH predictions', - owner: '0x7BA3d8551A6f2C70a5d47bb448BcF7EF69661822', - state: 0, - symbol: 'ETH predictions', - tokenURI: 'https://oceanprotocol.com/nft/' - }, - nftAddress: '0xaD244AC409cEfA155059890b425b83F6A4146d69', - purgatory: { - state: false, - reason: '' - }, - services: [ - { - datatokenAddress: '0xf31b9c3EEE46249c29339319Bfd41167DE5980f1', - description: 'Download service', - files: - '0x044c33205fb032624a234ddce8c8e84b8311ded47f43edbea93825f670145ba127237837013705e7e173f7673f7a7f87be292687e373f13cad812f273f86e293f8c78367b496664c9ea82c5095871b0404def05e719b567bea0f523daf5054c3e2894140b5e9072e075c9df9b8039c5d434bd0569daff8d27c2b9544823890e5072d36f5f417cfe4c8f9c0b3fd48ed546b16fea54fbfff12c8da77549f49dbae52a4894e9ebe08c29903cf458815d43da1fc1ca89322c0cbc7f69e20d4489cb69d9272de03a6f7e89793d0ceda6a7eb41dfbf1d942a47773b32c2df2c4d81ca2ee79043819230621a351bcf0f67f377c7885c3578e4a4f75f9e30f779ffb0b0af81c02a8b8359831bfe4ed7cc1a267a133e09a5264dec1695801b3b3b15a26cf9a24dcb50620abed35fafe45eae01a1681f0aa85ba4648b6574e760eeb414ee18a1de319b0d06fbab40e8ed193fc', - id: '0', - name: 'Download service', - serviceEndpoint: 'https://v4.provider.polygon.oceanprotocol.com', - timeout: 3600, - type: 'access' - } - ], - stats: { - allocated: 0, - orders: 0, - price: { - value: 3231343254, - tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', - tokenSymbol: 'OCEAN' - } - }, - version: '4.1.0', - accessDetails: { - type: 'NOT_SUPPORTED' - } as any - }, - { - '@context': ['https://w3id.org/did/v1'], - chainId: 5, - datatokens: [ - { - address: '0xf5dbd5a675248f92E3F37da98090144C1355ABb5', - name: 'Feckless Orca Token', - serviceId: - '9dec1b8dbf546767988ca98374631b7325a5c0ddb5b75e21e6da0f527cc45285', - symbol: 'FECORC-10' - } - ], - event: { - block: 7710252, - contract: '0x4CA9EfCD6bbFC935FbBaaDAF65aA6f8Fc3504fe1', - datetime: '2022-10-04T12:45:00', - from: '0x9c4e3CaE2B87180BEa0238b25bacf38473c39e11', - tx: '0x01d95a564f99e8c1e7cc585ed00435b405723751ad96e57e86851763f7222ce4' - }, - id: 'did:op:82698600c9f003bdfa97bf054b5bb9b0f83c18b4ea748ce1eddbab8110ff9ea9', - metadata: { - additionalInformation: { - termsAndConditions: true - }, - author: 'Jamie', - created: '2022-10-04T12:44:40Z', - description: - 'Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data ', - license: 'https://market.oceanprotocol.com/terms', - name: 'Test Data', - tags: ['test'], - type: 'dataset', - updated: '2022-10-04T12:44:40Z' - }, - nft: { - address: '0x4CA9EfCD6bbFC935FbBaaDAF65aA6f8Fc3504fe1', - created: '2022-10-04T12:45:00', - name: 'Ocean Data NFT', - owner: '0x9c4e3CaE2B87180BEa0238b25bacf38473c39e11', - state: 0, - symbol: 'OCEAN-NFT', - tokenURI: - 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDo4MjY5ODYwMGM5ZjAwM2JkZmE5N2JmMDU0YjViYjliMGY4M2MxOGI0ZWE3NDhjZTFlZGRiYWI4MTEwZmY5ZWE5IiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjgyNjk4NjAwYzlmMDAzYmRmYTk3YmYwNTRiNWJiOWIwZjgzYzE4YjRlYTc0OGNlMWVkZGJhYjgxMTBmZjllYTkiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDE3QzYsMTYgMTMsMTYgMjIsMTdDMzAsMTcgNDAsMTkgNTAsMjBDNTksMjAgNjcsMjEgNzUsMjFDODIsMjAgOTAsMTkgOTksMTlMOTksOTlaJy8lM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmJiJyBkPSdNMCw5OUwwLDU0QzYsNTAgMTMsNDcgMjIsNDdDMzAsNDYgMzksNDkgNDksNTJDNTgsNTQgNjgsNTggNzcsNTdDODUsNTUgOTIsNDkgOTksNDNMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJmZicgZD0nTTAsOTlMMCw4MkM3LDgwIDE1LDc5IDI0LDc2QzMyLDcyIDQwLDY2IDQ5LDY4QzU3LDY5IDY0LDc4IDczLDgxQzgxLDgzIDkwLDgwIDk5LDc4TDk5LDk5WiclM0UlM0MvcGF0aCUzRSUzQy9zdmclM0UifQ==' - }, - nftAddress: '0x4CA9EfCD6bbFC935FbBaaDAF65aA6f8Fc3504fe1', - purgatory: { - state: false, - reason: '' - }, - services: [ - { - datatokenAddress: '0xf5dbd5a675248f92E3F37da98090144C1355ABb5', - files: - '0x044434dfd2c80154b1a0641420a12d694ea9c762f9a7ca79ca467b5e1995ed2ee5cfe3460a368840ba290dfdec634c72e4204f12cb17a3f4f7108a253d11ed3a5294187b2bc7c8f24e39568a912914732bd2dd2707b0f416f1e729b2eb71f5656e10b33dba2ecd012dfbe01fa2c9dfb850a2386fc4962e5ccdc660b959fd00adef1c70c0f2b4a26df063a52197791bf9eed9136f1ad7b8a6073e196b2cbfb8b4d2a1dd023c15481b956c9419b47df921d72e3706820d4f5f26374fd0ee1bd6cfd9aead3e7168759419f404fac6f9779233c328a26ea41cb5c064cfb342d01fc7bc10a5766407dfc5a5dc3e0cbfc95f8b4cbe8f00895b02d4b42ccb2bbc465ef1e7026c0d922ef7877b1d6065e03922d9549f9aad490f07a03aa713d3028d489a11bcd3be12e2bf6a8d3d6c1a1108401786b5598c6c1411d9f562c137fd991fb2ebd6d1bbb7f46d5392387d0764bb', - id: '9dec1b8dbf546767988ca98374631b7325a5c0ddb5b75e21e6da0f527cc45285', - serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', - timeout: 0, - type: 'access' - } - ], - stats: { - orders: 1, - price: { - value: 3231343254, - tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', - tokenSymbol: 'OCEAN' - } - }, - version: '4.1.0', - accessDetails: { - templateId: 2, - publisherMarketOrderFee: '0', - type: 'fixed', - addressOrId: - '0xadd592e83c3830058bb3649e499b9066c681616ffe6ea12e28dc6adcc63dac16', - price: '1', - isPurchasable: true, - baseToken: { - address: '0xcfdda22c9837ae76e0faa845354f33c62e03653a', - name: 'Ocean Token', - symbol: 'OCEAN', - decimals: 18 - }, - datatoken: { - address: '0xf5dbd5a675248f92e3f37da98090144c1355abb5', - name: 'Feckless Orca Token', - symbol: 'FECORC-10' - }, - isOwned: false, - validOrderTx: null - } - }, - { - '@context': ['https://w3id.org/did/v1'], - chainId: 5, - datatokens: [ - { - address: '0x23C1FD10DADCaF558fB7173b79CfD0D867568a3D', - name: 'Equanimous Barracuda Token', - serviceId: - '89d66d7e77abccb2899b224662a733b42edefeb769138d6562928c38f75b4caa', - symbol: 'EQUBAR-39' - } - ], - event: { - block: 7716390, - contract: '0x3A695322d631451474090F322eA3d8d2eC8c1562', - datetime: '2022-10-05T13:51:24', - from: '0x903322C7E45A60d7c8C3EA236c5beA9Af86310c7', - tx: '0xcea2e02cb67c0c545976baf419a1cacbcad6fd2c4308eca93c49a3135a90e40c' - }, - id: 'did:op:9c1235050bcd51c8ec9a7058110102c9595136834911c315b4f739bc9a880b8e', - metadata: { - additionalInformation: { - termsAndConditions: true - }, - author: 'Jelly', - created: '2022-10-04T11:38:49Z', - description: 'Testitestvwgre btewwgte', - license: 'https://market.oceanprotocol.com/terms', - name: 'Testitest', - tags: [], - type: 'dataset', - updated: '2022-10-04T11:38:49Z' - }, - nft: { - address: '0x3A695322d631451474090F322eA3d8d2eC8c1562', - created: '2022-10-04T11:39:12', - name: 'Ocean Data NFT', - owner: '0x903322C7E45A60d7c8C3EA236c5beA9Af86310c7', - state: 0, - symbol: 'OCEAN-NFT', - tokenURI: - 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDo5YzEyMzUwNTBiY2Q1MWM4ZWM5YTcwNTgxMTAxMDJjOTU5NTEzNjgzNDkxMWMzMTViNGY3MzliYzlhODgwYjhlIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjljMTIzNTA1MGJjZDUxYzhlYzlhNzA1ODExMDEwMmM5NTk1MTM2ODM0OTExYzMxNWI0ZjczOWJjOWE4ODBiOGUiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDIxQzExLDIwIDIyLDIwIDMzLDIxQzQzLDIxIDU0LDIyIDY1LDIzQzc1LDIzIDg3LDIyIDk5LDIyTDk5LDk5WicvJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJiYicgZD0nTTAsOTlMMCw1M0MxMiw0OCAyNSw0NCAzNiw0NUM0Niw0NSA1NCw1MSA2NSw1M0M3NSw1NCA4Nyw1MSA5OSw0OUw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmZmJyBkPSdNMCw5OUwwLDY4QzEyLDczIDI1LDc4IDM2LDgwQzQ2LDgxIDU0LDc4IDY1LDc3Qzc1LDc1IDg3LDc1IDk5LDc2TDk5LDk5WiclM0UlM0MvcGF0aCUzRSUzQy9zdmclM0UifQ==' - }, - nftAddress: '0x3A695322d631451474090F322eA3d8d2eC8c1562', - purgatory: { - state: false, - reason: '' - }, - services: [ - { - datatokenAddress: '0x23C1FD10DADCaF558fB7173b79CfD0D867568a3D', - files: - '0x042f150d201313fa28d6d4ecd45b65eab2a3f88eaae50570d9e6a903b071c74eca5c129d38b7c5adf871e70fc586daba5d8788c405208238a9974519f086a28c9366e049b07eae6ab20f2752ed382a6123a49d74c7f2134f14632393851ead2be2df2634f9b4db2126085cdc57d2e2d144c219bc7a546b2030d128e23c0056da8c26f6d7bffb389c31d76916dd5c6f94f5c7d9a532dd6d3c210bed0f7486e41411911f446a020628136efc3acfa39573dc54ab0b29fbd8985f64a88cc20d2f9a2e0688ff1b8458f8f1a46be4633045b5e9313b612e96dae44f4c9258c2420c13a2bac8082461141b036065c0187b119586c1ea7225e1599e520a34da5e4510d8bec879d982ebf951566ece9ef58c1eb43ac07570a6a8e542b29460bf52914a9f8f3dfd7e423d87dd618e2b04db54e5f7dcf91976cee59ddd63bb09a09ecc98ba44005a', - id: '89d66d7e77abccb2899b224662a733b42edefeb769138d6562928c38f75b4caa', - serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', - timeout: 0, - type: 'access' - } - ], - stats: { - orders: 0, - price: { - value: 0 - } - }, - version: '4.1.0', - accessDetails: { - templateId: 2, - publisherMarketOrderFee: '0', - type: 'free', - addressOrId: '0x23c1fd10dadcaf558fb7173b79cfd0d867568a3d', - price: '0', - isPurchasable: true, - datatoken: { - address: '0x23c1fd10dadcaf558fb7173b79cfd0d867568a3d', - name: 'Equanimous Barracuda Token', - symbol: 'EQUBAR-39' - }, - baseToken: null, - isOwned: false, - validOrderTx: null - } - }, - { - '@context': ['https://w3id.org/did/v1'], - chainId: 1, - datatokens: [ - { - address: '0x98d87B273Ed411A5940a0C4a3717d58C81917Eb5', - name: 'Egregious Anchovy Token', - serviceId: - '60be64b7b7b10944c2b3eac740f476d85b2625a5db32bd0a3db1959f9a8100bb', - symbol: 'EGRANC-29' - } - ], - event: { - block: 15671852, - contract: '0x3a1deC08e0367D8eCCBa714DF23949c105B7D06B', - datetime: '2022-10-04T02:38:59', - from: '0x8542472a8De568cD3B09A53368C1962d8DfDBE2f', - txid: '0x9f717d0386598349b0e19c45f7dcf2ead5b219b25e1fc08902ebe651c48398fb' - }, - id: 'did:op:9442a55c25e9a0fd30231089ec34e430d0325ce0d3e03ab1aa27579eb56f7570', - metadata: { - additionalInformation: { - termsAndConditions: true - }, - author: 'Internet crawler', - created: '2022-10-04T02:38:44Z', - description: - 'Dataset contains personal info of USA citizen (around 157 criteria) such as: email, phone, name, address, geo location, household, real estate, salary, income, etc. Around 500k citizens. Dataset is helpful for financial, real estate companies who want to use it to train their AI/ML model. Or for marketing , sales purposes.', - license: 'https://market.oceanprotocol.com/terms', - links: [ - 'https://drive.google.com/file/d/1oPX-LHBBV6IkQ3kHD7-25jmMVx4ZMoFU/view?usp=sharing' - ], - name: '500k USA citizen dataset including PII, real estate info, salary, household, etc', - tags: [ - 'ai', - 'machine-learning', - 'real-estate', - 'finance', - 'usa-citizen', - 'pii' - ], - type: 'dataset', - updated: '2022-10-04T02:38:44Z' - }, - nft: { - address: '0x3a1deC08e0367D8eCCBa714DF23949c105B7D06B', - created: '2022-10-04T02:38:59', - name: 'Ocean Data NFT', - owner: '0x8542472a8De568cD3B09A53368C1962d8DfDBE2f', - state: 0, - symbol: 'OCEAN-NFT', - tokenURI: - 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDo5NDQyYTU1YzI1ZTlhMGZkMzAyMzEwODllYzM0ZTQzMGQwMzI1Y2UwZDNlMDNhYjFhYTI3NTc5ZWI1NmY3NTcwIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjk0NDJhNTVjMjVlOWEwZmQzMDIzMTA4OWVjMzRlNDMwZDAzMjVjZTBkM2UwM2FiMWFhMjc1NzllYjU2Zjc1NzAiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDIyQzEyLDIyIDI1LDIyIDM2LDIzQzQ2LDIzIDUzLDI1IDY0LDI2Qzc0LDI2IDg2LDI2IDk5LDI2TDk5LDk5WicvJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJiYicgZD0nTTAsOTlMMCw0NkM4LDQ3IDE3LDQ4IDI5LDQ4QzQwLDQ3IDU1LDQ2IDY4LDQ3QzgwLDQ3IDg5LDUwIDk5LDUzTDk5LDk5WiclM0UlM0MvcGF0aCUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyZmYnIGQ9J00wLDk5TDAsNjhDMTAsNzMgMjAsNzkgMzAsODBDMzksODAgNDksNzYgNjEsNzVDNzIsNzMgODUsNzUgOTksNzhMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRSJ9' - }, - nftAddress: '0x3a1deC08e0367D8eCCBa714DF23949c105B7D06B', - purgatory: { - state: false, - reason: '' - }, - services: [ - { - datatokenAddress: '0x98d87B273Ed411A5940a0C4a3717d58C81917Eb5', - files: - '0x04a233b66ca6261147f2729d818d4929a797565508daa51f8041bc07fb47d4374702d5cc0528e80d3a6d039df3ba155cdc251f719e8438f1788aed571b98bb301dfd17fe1b4756cd2652ea9f42ca2b3ec3bc40072215ce0dd9504a1d207a3582dee897597117c02013f8e8aefae8843415784db6e7870b6649f434d7eeed5d2adad1e874c18d826171da760fcfe4a3dfec1816bd494f969c290203707037d5e342d37713fef97ddc36b5e6c9a70e7085d841663705314451d3cbcb08dbc24f2baf365ea09160f4b581c93b415188f0e31aa1365a7be1cdbf8ea912aad046e94a801926b6576a47789dab193b28566b7b650c425b51c5c9865936c76c81e51a54986231d37aa518c2b3e629198f77b343d260a1c697f0ae168d405abd2e38e42a121ebaa3ccec8e8d562dcbadcabf5667aa48663e3ec34af9db86dfcc3dc5749ec4878e8fd643036a693ca4e7589d3e1fa93d936f80e4301ad06f30d9469a82ae3e94ebc94c5d19b708', - id: '60be64b7b7b10944c2b3eac740f476d85b2625a5db32bd0a3db1959f9a8100bb', - serviceEndpoint: 'https://v4.provider.mainnet.oceanprotocol.com', - timeout: 0, - type: 'access' - } - ], - stats: { - allocated: 422.9883117676, - orders: 0, - price: { - value: 3231343254, - tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', - tokenSymbol: 'OCEAN' - } - }, - version: '4.1.0', - accessDetails: { - templateId: 2, - publisherMarketOrderFee: '0', - type: 'fixed', - addressOrId: - '0xfcf20144a14c7b2f51319d938436e34041acbd65e1e29319549ed7923b9fd86e', - price: '1000000', - isPurchasable: true, - baseToken: { - address: '0x967da4048cd07ab37855c090aaf366e4ce1b9f48', - name: 'Ocean Token', - symbol: 'OCEAN', - decimals: 18 - }, - datatoken: { - address: '0x98d87b273ed411a5940a0c4a3717d58c81917eb5', - name: 'Egregious Anchovy Token', - symbol: 'EGRANC-29' - }, - isOwned: false, - validOrderTx: null - } - } + // { + // '@context': ['https://w3id.org/did/v1'], + // accessDetails: { + // templateId: 1, + // publisherMarketOrderFee: '0', + // type: 'fixed', + // addressOrId: + // '0xb9060a712a494f584b072b0753dc275e1c531178510679ac085053ee38b5f742', + // price: '5', + // isPurchasable: true, + // baseToken: { + // address: '0xcfdda22c9837ae76e0faa845354f33c62e03653a', + // name: 'Ocean Token', + // symbol: 'OCEAN', + // decimals: 18 + // }, + // datatoken: { + // address: '0x0a9cfaff200efb1d6f125e342dfc78fb3edd28a4', + // name: 'Inspired Ling Token', + // symbol: 'INSLIN-54' + // }, + // isOwned: false, + // validOrderTx: null + // }, + // chainId: 5, + // datatokens: [ + // { + // address: '0x0A9CFaFf200efb1d6F125E342Dfc78Fb3edD28A4', + // name: 'Inspired Ling Token', + // serviceId: + // '383b0e1b8dc3e816af394bfae899eb0c9826f2383602c0fbcd70705e1e9c1302', + // symbol: 'INSLIN-54' + // } + // ], + // event: { + // block: 7723888, + // contract: '0xeB7eC160ce8F73bE2e7d542c2283F1aEa163C07B', + // datetime: '2022-10-06T20:31:36', + // from: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', + // tx: '0x18b1d0af634fab3196921a99618fd9333c4a2113a016bf4757d609ddfdb64432' + // }, + // id: 'did:op:6b4314bd7345d07a10ba2c82a352655273b00cdceb2eedd31c8e0d2b5881eb16', + // metadata: { + // additionalInformation: { + // termsAndConditions: true + // }, + // author: + // 'Haxby, J. V., Gobbini, M. I., Furey, M. L., Ishai, A., Schouten, J. L. & Pietrini, P. ', + // created: '2022-10-06T20:30:01Z', + // description: + // 'This is a block-design fMRI dataset from a study on face and object representation in human ventral temporal cortex. It consists of 6 subjects with 12 runs per subject. In each run, the subjects passively viewed greyscale images of eight object categories, grouped in 24s blocks separated by rest periods. Each image was shown for 500ms and was followed by a 1500ms inter-stimulus interval. Full-brain fMRI data were recorded with a volume repetition time of 2.5s, thus, a stimulus block was covered by roughly 9 volumes. This dataset has been repeatedly reanalyzed. For a complete description of the experimental design, fMRI acquisition parameters, and previously obtained results see the [references](http://www.pymvpa.org/datadb/haxby2001.html#references) below. \n\n', + // license: 'https://market.oceanprotocol.com/terms', + // name: 'Faces and Objects in Ventral Temporal Cortex (fMRI) (Compute) ', + // tags: ['fmri', 'bold', 'visual-stimuli', '4d', 'functional'], + // type: 'dataset', + // updated: '2022-10-06T20:30:01Z' + // }, + // nft: { + // address: '0xeB7eC160ce8F73bE2e7d542c2283F1aEa163C07B', + // created: '2022-10-06T20:30:36', + // name: 'Ocean Data NFT', + // owner: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', + // state: 0, + // symbol: 'OCEAN-NFT', + // tokenURI: + // 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBOZXVyYURBTyBNYXJrZXRwbGFjZTogaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjZiNDMxNGJkNzM0NWQwN2ExMGJhMmM4MmEzNTI2NTUyNzNiMDBjZGNlYjJlZWRkMzFjOGUwZDJiNTg4MWViMTYiLCJleHRlcm5hbF91cmwiOiJodHRwczovL21hcmtldC5vY2VhbnByb3RvY29sLmNvbS9hc3NldC9kaWQ6b3A6NmI0MzE0YmQ3MzQ1ZDA3YTEwYmEyYzgyYTM1MjY1NTI3M2IwMGNkY2ViMmVlZGQzMWM4ZTBkMmI1ODgxZWIxNiIsImJhY2tncm91bmRfY29sb3IiOiIxNDE0MTQiLCJpbWFnZV9kYXRhIjoiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB2aWV3Qm94PScwIDAgOTkgOTknIGZpbGw9J3VuZGVmaW5lZCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyNzcnIGQ9J00wLDk5TDAsMjVDMTIsMjYgMjQsMjcgMzUsMjhDNDUsMjggNTIsMjggNjMsMjhDNzMsMjcgODYsMjYgOTksMjVMOTksOTlaJy8lM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmJiJyBkPSdNMCw5OUwwLDQ4QzExLDQ3IDIzLDQ2IDM0LDQ3QzQ0LDQ3IDU1LDQ4IDY2LDQ5Qzc2LDQ5IDg3LDQ5IDk5LDQ5TDk5LDk5WiclM0UlM0MvcGF0aCUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyZmYnIGQ9J00wLDk5TDAsODBDOCw3NCAxNyw2OCAyOCw3MEMzOCw3MSA1MSw3OSA2NCw4MEM3Niw4MCA4Nyw3NCA5OSw2OUw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFIn0=' + // }, + // nftAddress: '0xeB7eC160ce8F73bE2e7d542c2283F1aEa163C07B', + // purgatory: { + // state: false, + // reason: '' + // }, + // services: [ + // { + // compute: { + // allowNetworkAccess: true, + // allowRawAlgorithm: false, + // publisherTrustedAlgorithmPublishers: [], + // publisherTrustedAlgorithms: [ + // { + // containerSectionChecksum: + // '54eb02210bad8a5fbe229e1d131a68e80fe32709a196c6ce49f33e5d378b1195', + // did: 'did:op:f86dedf3c872f79f788627025685a680eaac9f8bd7b6e622164fd8563e21e836', + // filesChecksum: + // '2f8afee0a35fbeb72a447c7d1437b6c83f937e6d65a6c7d1990548cc21ff254c' + // } + // ] + // }, + // datatokenAddress: '0x0A9CFaFf200efb1d6F125E342Dfc78Fb3edD28A4', + // files: + // '0x0479c75f624d86700c6b33deb392b2d60bd66a5bd92778851eb124bf3785f270b356ce42a228f5a5eb4dead55fc7892a3f4a9f114dfa5493f480146af72ccdcca5816996b0ff002a69e113509256494d64ad39b86be92c7668baa5060c98f402f60fcf7acd0d25e923cecaa5f483fd14a8568a782023b164f8424a95b43c165e813fd031c7b5887ac467af76d94d2ca8b45e34951694cc60ead2c15137eebc60703b9a12a4a4643ecd343de8d0326abb87e093abacf55ba83c06b2840284e8f17d9c498f02dcfd74239371c25ad0fcac703be994065b7ffa12f3a47ba3d363d31f475e6519e7cc5a65e74cafdf029a1d73a007e886206f4b4e36251721866f399076dd2435c314cdfdc42638a570fe57bb33f2935861c01ec708f80acd738d2a45dd64d374278dc63026ac7f4f8dba979e7cdc4e24e5f39aef4550b1cbf190525bdfa0e30900084aef223863e54bd0866ab958', + // id: '383b0e1b8dc3e816af394bfae899eb0c9826f2383602c0fbcd70705e1e9c1302', + // serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', + // timeout: 86400, + // type: 'compute' + // } + // ], + // stats: { + // allocated: 0, + // orders: 1, + // price: { + // value: 3231343254, + // tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', + // tokenSymbol: 'OCEAN' + // } + // }, + // version: '4.1.0' + // }, + // { + // '@context': ['https://w3id.org/did/v1'], + // chainId: 5, + // datatokens: [ + // { + // address: '0x7626dE49a774c18E0f7Fc658821a87E103f80fab', + // name: 'Lovely Prawn Token', + // serviceId: + // 'be48353fe208e765c24b0a344c2cc826ff0ea18582a162d67f6ad23078595d59', + // symbol: 'LOVPRA-51' + // } + // ], + // event: { + // block: 7723861, + // contract: '0xACa9d4Df6a4dfF29913A111099bc4aC6363C124F', + // datetime: '2022-10-06T20:24:24', + // from: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', + // tx: '0xdca6494d123c796443c6ce46bb4c02938526a03f86661941eaddcb76377f5825' + // }, + // id: 'did:op:f86dedf3c872f79f788627025685a680eaac9f8bd7b6e622164fd8563e21e836', + // metadata: { + // additionalInformation: { + // termsAndConditions: true + // }, + // algorithm: { + // container: { + // checksum: + // 'sha256:a981ed6282271fc5492c382cd11d5045641880f738c05a855ed6de8d0eecea8f', + // entrypoint: 'python3.8 $ALGO', + // image: 'anmu06/c2d_neuradao', + // tag: 'latest' + // }, + // language: 'py', + // version: '0.1' + // }, + // author: 'Nilearn ', + // created: '2022-10-06T20:24:15Z', + // description: + // 'Plot cuts of an EPI image (by default 3 cuts: Frontal, Axial, and Lateral)\n\nUsing [nilearn.plotting.plot_epi](https://nilearn.github.io/stable/modules/generated/nilearn.plotting.plot_epi.html) to compute and plot EPI. ', + // license: 'https://market.oceanprotocol.com/terms', + // name: 'fMRI Time-Averaged EPI Visualization ', + // tags: ['epi', 'bold', 'fmri'], + // type: 'algorithm', + // updated: '2022-10-06T20:24:15Z' + // }, + // nft: { + // address: '0xACa9d4Df6a4dfF29913A111099bc4aC6363C124F', + // created: '2022-10-06T20:24:24', + // name: 'Ocean Data NFT', + // owner: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', + // state: 0, + // symbol: 'OCEAN-NFT', + // tokenURI: + // 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBOZXVyYURBTyBNYXJrZXRwbGFjZTogaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOmY4NmRlZGYzYzg3MmY3OWY3ODg2MjcwMjU2ODVhNjgwZWFhYzlmOGJkN2I2ZTYyMjE2NGZkODU2M2UyMWU4MzYiLCJleHRlcm5hbF91cmwiOiJodHRwczovL21hcmtldC5vY2VhbnByb3RvY29sLmNvbS9hc3NldC9kaWQ6b3A6Zjg2ZGVkZjNjODcyZjc5Zjc4ODYyNzAyNTY4NWE2ODBlYWFjOWY4YmQ3YjZlNjIyMTY0ZmQ4NTYzZTIxZTgzNiIsImJhY2tncm91bmRfY29sb3IiOiIxNDE0MTQiLCJpbWFnZV9kYXRhIjoiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB2aWV3Qm94PScwIDAgOTkgOTknIGZpbGw9J3VuZGVmaW5lZCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyNzcnIGQ9J00wLDk5TDAsMjVDOCwyNCAxNiwyMyAyNCwyNEMzMSwyNCAzOCwyNyA0NywyOEM1NSwyOCA2NiwyOCA3NSwyOEM4MywyNyA5MSwyNyA5OSwyN0w5OSw5OVonLyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyYmInIGQ9J00wLDk5TDAsNTRDOCw1MiAxNiw1MSAyNSw1MEMzMyw0OCA0MSw0NyA0OSw0NkM1Niw0NCA2NCw0MSA3Myw0M0M4MSw0NCA5MCw0OSA5OSw1NUw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmZmJyBkPSdNMCw5OUwwLDczQzcsNzIgMTUsNzEgMjUsNzBDMzQsNjggNDQsNjcgNTIsNjlDNTksNzAgNjQsNzQgNzIsNzVDNzksNzUgODksNzIgOTksNzBMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRSJ9' + // }, + // nftAddress: '0xACa9d4Df6a4dfF29913A111099bc4aC6363C124F', + // purgatory: { + // state: false, + // reason: '' + // }, + // services: [ + // { + // compute: { + // allowNetworkAccess: true, + // allowRawAlgorithm: false, + // publisherTrustedAlgorithmPublishers: [], + // publisherTrustedAlgorithms: [] + // }, + // datatokenAddress: '0x7626dE49a774c18E0f7Fc658821a87E103f80fab', + // files: + // '0x0498ac38d3ac04dc4f33b5a91358b8e121fa5bc86bcb20b8bc1c27ce1f47db491efda1bf90ab4d4c893a636d570f8fdc29eae7e010f846a34cfc24bc751b64f9d104afcc7f22c82a8cffb412886ba9649b73c2b6fe95e5fab0882bc8174823db08af64c14177bfafad0fc43bb9c9db95df61dabeb0ac1fbb27c07d3705cdf6f8fdd5cb37fc2c50ae0db6bf778b7f9f5475ce1730edacd8e48aa99548184ece9df8fabca2bd7535caf9107b3312f15aaaf6bbc2143782824aac54a04a5136bd1af2121b579b8eaa71abccff4bc4147b592e2b7b7a6d928870861996e67b69277ef60128d7cf86ce5abbf860194ab5ebd8dcbc2a29fbddf5f2482510736de7e9427b4f61306df121a1bd757f0c7d0ae7c702bdff2c85f9b9c7956ced9561693da910ac211e3f35a295981a443695be9e8854554c87fd4747a709a3e43a220e380b4c36f4de92f4b0e2a6301b33c9b22356de1fec345b268e632673e3c70bc5eb', + // id: 'be48353fe208e765c24b0a344c2cc826ff0ea18582a162d67f6ad23078595d59', + // serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', + // timeout: 0, + // type: 'compute' + // } + // ], + // stats: { + // allocated: 0, + // orders: 1, + // price: { + // value: 3231343254, + // tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', + // tokenSymbol: 'OCEAN' + // } + // }, + // version: '4.1.0', + // accessDetails: { + // templateId: 1, + // publisherMarketOrderFee: '0', + // type: 'fixed', + // addressOrId: + // '0x1c4f156e06d1b9eeb5aa367869c9d14386918aa12ef4969c3bf242ef6bcba7c8', + // price: '5', + // isPurchasable: true, + // baseToken: { + // address: '0xcfdda22c9837ae76e0faa845354f33c62e03653a', + // name: 'Ocean Token', + // symbol: 'OCEAN', + // decimals: 18 + // }, + // datatoken: { + // address: '0x7626de49a774c18e0f7fc658821a87e103f80fab', + // name: 'Lovely Prawn Token', + // symbol: 'LOVPRA-51' + // }, + // isOwned: false, + // validOrderTx: null + // } + // }, + // { + // '@context': ['https://w3id.org/did/v1'], + // chainId: 5, + // datatokens: [ + // { + // address: '0x40C929B5265F13E668A3e81c4289A279bd2f7452', + // name: 'Fecund Anchovy Token', + // serviceId: + // '440cdd2f76cd72803ca478fd432d087d6213711ac35163591afe22bbc77a0154', + // symbol: 'FECANC-54' + // } + // ], + // event: { + // block: 7723800, + // contract: '0x9C725CADD67f67B5F755a30879945c3ECF6aAA46', + // datetime: '2022-10-06T20:10:12', + // from: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', + // tx: '0x5ea85c7bc0998a42896a7011d0595f01159647399e1fd008353ac9bb95339a25' + // }, + // id: 'did:op:2f9cf3eba8ff21db32350aa6d48db89ca86beab7adf729a40a5debdcef8cd7cb', + // metadata: { + // additionalInformation: { + // termsAndConditions: true + // }, + // author: + // 'Haxby, J. V., Gobbini, M. I., Furey, M. L., Ishai, A., Schouten, J. L. & Pietrini, P.', + // created: '2022-10-06T20:09:49Z', + // description: + // 'This is a block-design fMRI dataset from a study on face and object representation in human ventral temporal cortex. It consists of 6 subjects with 12 runs per subject. In each run, the subjects passively viewed greyscale images of eight object categories, grouped in 24s blocks separated by rest periods. Each image was shown for 500ms and was followed by a 1500ms inter-stimulus interval. Full-brain fMRI data were recorded with a volume repetition time of 2.5s, thus, a stimulus block was covered by roughly 9 volumes. This dataset has been repeatedly reanalyzed. For a complete description of the experimental design, fMRI acquisition parameters, and previously obtained results see the [references](http://www.pymvpa.org/datadb/haxby2001.html#references) below.\n\n', + // license: 'https://market.oceanprotocol.com/terms', + // name: 'Faces and Objects in Ventral Temporal Cortex (fMRI)', + // tags: ['fmri', 'bold', '4d', 'functional', 'visual-stimuli'], + // type: 'dataset', + // updated: '2022-10-06T20:09:49Z' + // }, + // nft: { + // address: '0x9C725CADD67f67B5F755a30879945c3ECF6aAA46', + // created: '2022-10-06T20:10:12', + // name: 'Ocean Data NFT', + // owner: '0x7E0ad0B2CD0560Caf9a4Fc25904d2AB7238d140b', + // state: 0, + // symbol: 'OCEAN-NFT', + // tokenURI: + // 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBOZXVyYURBTyBNYXJrZXRwbGFjZTogaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjJmOWNmM2ViYThmZjIxZGIzMjM1MGFhNmQ0OGRiODljYTg2YmVhYjdhZGY3MjlhNDBhNWRlYmRjZWY4Y2Q3Y2IiLCJleHRlcm5hbF91cmwiOiJodHRwczovL21hcmtldC5vY2VhbnByb3RvY29sLmNvbS9hc3NldC9kaWQ6b3A6MmY5Y2YzZWJhOGZmMjFkYjMyMzUwYWE2ZDQ4ZGI4OWNhODZiZWFiN2FkZjcyOWE0MGE1ZGViZGNlZjhjZDdjYiIsImJhY2tncm91bmRfY29sb3IiOiIxNDE0MTQiLCJpbWFnZV9kYXRhIjoiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB2aWV3Qm94PScwIDAgOTkgOTknIGZpbGw9J3VuZGVmaW5lZCcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyNzcnIGQ9J00wLDk5TDAsMjRDOSwyNSAxOCwyNyAyOSwyOEMzOSwyOCA1MSwyOCA2MywyOEM3NCwyNyA4NiwyNyA5OSwyOEw5OSw5OVonLyUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyYmInIGQ9J00wLDk5TDAsNDlDMTIsNDcgMjUsNDUgMzUsNDVDNDQsNDQgNTEsNDQgNjIsNDVDNzIsNDUgODUsNDcgOTksNTBMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJmZicgZD0nTTAsOTlMMCw3NEMxMSw3NCAyMyw3NSAzNCw3NkM0NCw3NiA1Myw3OCA2NCw3OEM3NCw3NyA4Niw3NSA5OSw3NEw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFIn0=' + // }, + // nftAddress: '0x9C725CADD67f67B5F755a30879945c3ECF6aAA46', + // purgatory: { + // state: false, + // reason: '' + // }, + // services: [ + // { + // datatokenAddress: '0x40C929B5265F13E668A3e81c4289A279bd2f7452', + // files: + // '0x04766f8cb6306eed4cd0fb6938c68a946a2f299525890afac89fab0e3e697748961e5072136e0ae57f20a7b6a6bc8ef12760b2c774e7feea28dcc099c7d52b77201a1f57b0e0d345ec0b51b5beb13af6c2a2a72ab5fb610de8a194f6fa0ef7f0fd84b0b868ed63ff820813c72c6d228fc093e299490a2f8a95cbd43f69e0bcdba524457191f812977ce6239db432641c13442caac3594d962fd3410bd829aea7cc82483473f42417922b12c9f8871a60be7d33ebc5bed37d2416defb59dbd3b63330ab33acea402f1d09145f05504d031cdc53c0120ce5704bad4721af2f71175ac19c7d3d0cde0830d9f59c90a0e8b94e162b025f86171e6145486afeb06b5409ff1e867f32c9191bf7063180f9d883e9fa7d64acb30bd3c5f6cb43c8249ed740859955a6f9036130b2c0832d433f58bfde1267c883c98065168080bba055a4f1d4e394b80f606f81792ef1b8815fdc1184f6', + // id: '440cdd2f76cd72803ca478fd432d087d6213711ac35163591afe22bbc77a0154', + // serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', + // timeout: 0, + // type: 'access' + // } + // ], + // stats: { + // allocated: 0, + // orders: 1, + // price: { + // value: 3231343254, + // tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', + // tokenSymbol: 'OCEAN' + // } + // }, + // version: '4.1.0', + // accessDetails: { + // templateId: 1, + // publisherMarketOrderFee: '0', + // type: 'fixed', + // addressOrId: + // '0xe6665bd4541c6584a3e31dbf73a74e91da6c791954ea3d61905e50b6e00e0b4e', + // price: '5', + // isPurchasable: true, + // baseToken: { + // address: '0xcfdda22c9837ae76e0faa845354f33c62e03653a', + // name: 'Ocean Token', + // symbol: 'OCEAN', + // decimals: 18 + // }, + // datatoken: { + // address: '0x40c929b5265f13e668a3e81c4289a279bd2f7452', + // name: 'Fecund Anchovy Token', + // symbol: 'FECANC-54' + // }, + // isOwned: false, + // validOrderTx: null + // } + // }, + // { + // '@context': ['https://w3id.org/did/v1'], + // chainId: 137, + // datatokens: [ + // { + // address: '0x0A81F1c69e5428067e6124817C7AFFE8bC0adF9f', + // name: 'Fabulous Walrus Token', + // serviceId: + // '485bd67a4bdb69353b4500bb194c6a20c6be57337956cf2f699f3530847ef038', + // symbol: 'FABWAL-60' + // } + // ], + // event: { + // block: 34000873, + // contract: '0x5f7D840050e008F91f9Fd3dba5fE0f91BbE4b14F', + // datetime: '2022-10-06T11:16:48', + // from: '0xF5dcd98a1C99c2c65C62025Cb23cFB6f12F35497', + // tx: '0x8713e0f444dee5a79799d3037047a3463199164232250b056f8723b2402ea320' + // }, + // id: 'did:op:1ea697b447f0a0b3209048f144c0331ca1a8c10af27e233512a41623b93ff8ed', + // metadata: { + // additionalInformation: { + // termsAndConditions: true + // }, + // author: 'OPF', + // created: '2022-10-06T11:16:17Z', + // description: + // 'Test asset wrt issue https://github.com/oceanprotocol/ocean.py/issues/990\n\nUrl is https://cexa.oceanprotocol.io/ohlc?exchange=binance&pair=ETH/USDT', + // license: 'https://market.oceanprotocol.com/terms', + // name: 'CEXA test ocean.py#990 (4)', + // tags: ['defi'], + // type: 'dataset', + // updated: '2022-10-06T11:16:17Z' + // }, + // nft: { + // address: '0x5f7D840050e008F91f9Fd3dba5fE0f91BbE4b14F', + // created: '2022-10-06T11:16:48', + // name: 'Ocean Data NFT', + // owner: '0xF5dcd98a1C99c2c65C62025Cb23cFB6f12F35497', + // state: 0, + // symbol: 'OCEAN-NFT', + // tokenURI: + // 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDoxZWE2OTdiNDQ3ZjBhMGIzMjA5MDQ4ZjE0NGMwMzMxY2ExYThjMTBhZjI3ZTIzMzUxMmE0MTYyM2I5M2ZmOGVkIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjFlYTY5N2I0NDdmMGEwYjMyMDkwNDhmMTQ0YzAzMzFjYTFhOGMxMGFmMjdlMjMzNTEyYTQxNjIzYjkzZmY4ZWQiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDI4QzEwLDI0IDIwLDIxIDI3LDIxQzMzLDIwIDM3LDIyIDQ2LDI0QzU0LDI1IDY2LDI3IDc2LDI4Qzg1LDI4IDkyLDI3IDk5LDI2TDk5LDk5WicvJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJiYicgZD0nTTAsOTlMMCw1NkM4LDU1IDE3LDU0IDI1LDUxQzMyLDQ3IDQwLDQwIDQ5LDQyQzU3LDQzIDY4LDUyIDc3LDU0Qzg1LDU1IDkyLDUwIDk5LDQ2TDk5LDk5WiclM0UlM0MvcGF0aCUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyZmYnIGQ9J00wLDk5TDAsNzdDNiw3OCAxMyw4MCAyMSw4MEMyOCw3OSAzNyw3NiA0Niw3NUM1NCw3MyA2NCw3MSA3Myw3MkM4MSw3MiA5MCw3NCA5OSw3Nkw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFIn0=' + // }, + // nftAddress: '0x5f7D840050e008F91f9Fd3dba5fE0f91BbE4b14F', + // purgatory: { + // state: false, + // reason: '' + // }, + // services: [ + // { + // datatokenAddress: '0x0A81F1c69e5428067e6124817C7AFFE8bC0adF9f', + // files: + // '0x04c5f0ebee297a2121d3f37e46d93ac2c0fc5d642e4c4c4eae152754047ae4b10e0445b4e908166a47c3e98b636cbf9791d0ee1caf37d6f6fa7da539abc52df7e2d55b2b33b0378a38dbaf3e489b830d57e8db8dbc6deff94476eda055f0a5152869e8cee2eae42692070f98aa9b99025a1a4887e84f34176a27b65e6cec455ba60e6628e496c91bd1b222612ed1f530a3976f0fe5ae55afad194fa947fef19b97522ca45c6268afff22d610d1fd6f11d10f02fb42d66d566fca66544537feb717d6c8d6281408c9d4e29905bdac106e7f94750631082fcae42929b3a389d298fac48513397a8e3c235a81acd9675e92dd776f37a762d7a1b706abf26a46e571e9513c4ee9119a8f60d51995fcdcc76a9e048d16bae1e4cfe50824f9b71104e5485b1ef784e95195d3bbed2b604fc24c8f8f4e780e1837aac1cc0194b2db1b91a56671b998f32ffba6d43482cc6cc6e33c1296865d1f4fbe', + // id: '485bd67a4bdb69353b4500bb194c6a20c6be57337956cf2f699f3530847ef038', + // serviceEndpoint: 'https://v4.provider.polygon.oceanprotocol.com', + // timeout: 604800, + // type: 'access' + // } + // ], + // stats: { + // allocated: 114.1658859253, + // orders: 1, + // price: { + // value: 3231343254, + // tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', + // tokenSymbol: 'OCEAN' + // } + // }, + // version: '4.1.0', + // accessDetails: { + // templateId: 1, + // publisherMarketOrderFee: '0', + // type: 'free', + // addressOrId: '0x0a81f1c69e5428067e6124817c7affe8bc0adf9f', + // price: '0', + // isPurchasable: true, + // datatoken: { + // address: '0x0a81f1c69e5428067e6124817c7affe8bc0adf9f', + // name: 'Fabulous Walrus Token', + // symbol: 'FABWAL-60' + // }, + // baseToken: null, + // isOwned: false, + // validOrderTx: null + // } + // }, + // { + // '@context': ['https://w3id.org/did/v1'], + // chainId: 5, + // datatokens: [ + // { + // address: '0xbadac447bF4868aeCa6A9c7448DDAdfe6632509a', + // name: 'Tactful Shark Token', + // serviceId: + // 'c02b30d8930ac5d2561d4c391c74c06a39d6060802be2534218bd3449d9387ce', + // symbol: 'TACSHA-14' + // } + // ], + // event: { + // block: 7717509, + // contract: '0x4eF0395f0319E6d919942ea3a98472cf957967Da', + // datetime: '2022-10-05T18:25:48', + // from: '0x26D9690eD920682FbC4f3A05e480B8c6ff978ca8', + // tx: '0xe3e87b83e0f687dceb8db1eb4d3b8053522a6b722e376e472e71e337ad64c0a2' + // }, + // id: 'did:op:d1563919dd61c8ea5790b85f3a569fa69e46c84a600290ca377a1cb009bb7694', + // metadata: { + // additionalInformation: { + // termsAndConditions: true + // }, + // author: 'aaa', + // created: '2022-10-05T18:25:38Z', + // description: 'Template template moneeey', + // license: 'https://market.oceanprotocol.com/terms', + // name: 'Template template moneeey', + // tags: [], + // type: 'dataset', + // updated: '2022-10-05T18:25:38Z' + // }, + // nft: { + // address: '0x4eF0395f0319E6d919942ea3a98472cf957967Da', + // created: '2022-10-05T18:25:48', + // name: 'Ocean Data NFT', + // owner: '0x26D9690eD920682FbC4f3A05e480B8c6ff978ca8', + // state: 0, + // symbol: 'OCEAN-NFT', + // tokenURI: + // 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDpkMTU2MzkxOWRkNjFjOGVhNTc5MGI4NWYzYTU2OWZhNjllNDZjODRhNjAwMjkwY2EzNzdhMWNiMDA5YmI3Njk0IiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOmQxNTYzOTE5ZGQ2MWM4ZWE1NzkwYjg1ZjNhNTY5ZmE2OWU0NmM4NGE2MDAyOTBjYTM3N2ExY2IwMDliYjc2OTQiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDI5QzUsMjkgMTEsMjkgMjAsMzBDMjgsMzAgMzgsMzEgNDgsMjlDNTcsMjYgNjUsMjEgNzQsMjBDODIsMTggOTAsMTkgOTksMjBMOTksOTlaJy8lM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmJiJyBkPSdNMCw5OUwwLDU3QzksNTcgMTgsNTggMjYsNTVDMzMsNTEgMzksNDIgNDcsNDJDNTQsNDEgNjQsNTAgNzQsNTNDODMsNTUgOTEsNTEgOTksNDdMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJmZicgZD0nTTAsOTlMMCw3NEMxMCw3MiAyMCw3MCAyOCw2OUMzNSw2NyAzOCw2NiA0Niw3MEM1Myw3MyA2NCw3OSA3NCw4MEM4Myw4MCA5MSw3MyA5OSw2N0w5OSw5OVonJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFIn0=' + // }, + // nftAddress: '0x4eF0395f0319E6d919942ea3a98472cf957967Da', + // purgatory: { + // state: false, + // reason: '' + // }, + // services: [ + // { + // datatokenAddress: '0xbadac447bF4868aeCa6A9c7448DDAdfe6632509a', + // files: + // '0x048db0b48ee8f19f3e163cef39095799876e84ad5a2dd3e5140b2ed0f33f13351d078b07b5e1d38f2427ff0a2a21a24dc0f02756bb51603b384adc83b936621a8861fd5e56d9d51122f391cf1f823ae417a56dc8a0f3f26e85eafad124500175be7c732aec90cc5cc88c83378e3a503334f0e0589ca0f48328bda961dcf26dae6ea209143918f201a81be982bbcfd0294f7d97a4d54e7982b995c4329c5d3c29e084c4d4aaeeeccc9b70f353de7fdc38a70dbcbd0425d9c696e8fefa9ea7a3d4aa4f28c8dcba7536e7afc5aa8d64c5b9b949657aed2249440a80f46b2b84317530a35888ccbc259de8a4c77f91c25d0c507b67e7998143b0e9b0068b72f93a2195a1c5b9260684fa554bdd15721a34cad1308c45483ab935ba9ac1f391b89f10158fb39b712af5f37d135591c21a', + // id: 'c02b30d8930ac5d2561d4c391c74c06a39d6060802be2534218bd3449d9387ce', + // serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', + // timeout: 0, + // type: 'access' + // } + // ], + // stats: { + // orders: 1, + // price: { + // value: 3231343254, + // tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', + // tokenSymbol: 'OCEAN' + // } + // }, + // version: '4.1.0', + // accessDetails: { + // templateId: 1, + // publisherMarketOrderFee: '0', + // type: 'fixed', + // addressOrId: + // '0xdbfa14546d4f2caa1e0d59cbf8ae775c65b0d34369f8c62990c0b0d0bc73ff10', + // price: '2', + // isPurchasable: true, + // baseToken: { + // address: '0xcfdda22c9837ae76e0faa845354f33c62e03653a', + // name: 'Ocean Token', + // symbol: 'OCEAN', + // decimals: 18 + // }, + // datatoken: { + // address: '0xbadac447bf4868aeca6a9c7448ddadfe6632509a', + // name: 'Tactful Shark Token', + // symbol: 'TACSHA-14' + // }, + // isOwned: false, + // validOrderTx: null + // } + // }, + // { + // '@context': ['https://w3id.org/did/v1'], + // chainId: 5, + // datatokens: [ + // { + // address: '0x772224c2C2bddb88A55b3905aAaf8C7188b02ce3', + // name: 'Rebarbative Barnacle Token', + // serviceId: + // '42e244808872c9f4ad96db99d9877abbf3cae9988dec9bd52ab2e336d7ac83af', + // symbol: 'REBBAR-99' + // } + // ], + // event: { + // block: 7717490, + // contract: '0xf919A3b0D1538CAA24Efe2BeaAbe43F776aE83ED', + // datetime: '2022-10-05T18:21:24', + // from: '0x26D9690eD920682FbC4f3A05e480B8c6ff978ca8', + // tx: '0xa38677962c1c83faad8365fbd924b3ca35fb2c0f07af504d7438eec6e54c9918' + // }, + // id: 'did:op:aeb9faad199e79eb21cddc15557fa42fe95a02e03c493be8e849594aae60221a', + // metadata: { + // additionalInformation: { + // termsAndConditions: true + // }, + // author: 'aaaa', + // created: '2022-10-05T18:21:13Z', + // description: 'Template template ', + // license: 'https://market.oceanprotocol.com/terms', + // name: 'Template template ', + // tags: ['aaa'], + // type: 'dataset', + // updated: '2022-10-05T18:21:13Z' + // }, + // nft: { + // address: '0xf919A3b0D1538CAA24Efe2BeaAbe43F776aE83ED', + // created: '2022-10-05T18:21:24', + // name: 'Ocean Data NFT', + // owner: '0x26D9690eD920682FbC4f3A05e480B8c6ff978ca8', + // state: 0, + // symbol: 'OCEAN-NFT', + // tokenURI: + // 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDphZWI5ZmFhZDE5OWU3OWViMjFjZGRjMTU1NTdmYTQyZmU5NWEwMmUwM2M0OTNiZThlODQ5NTk0YWFlNjAyMjFhIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOmFlYjlmYWFkMTk5ZTc5ZWIyMWNkZGMxNTU1N2ZhNDJmZTk1YTAyZTAzYzQ5M2JlOGU4NDk1OTRhYWU2MDIyMWEiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDE4QzEwLDE3IDIwLDE2IDI4LDE5QzM1LDIxIDM5LDI4IDQ4LDI5QzU2LDI5IDY3LDI0IDc3LDIyQzg2LDE5IDkyLDE4IDk5LDE4TDk5LDk5WicvJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJiYicgZD0nTTAsOTlMMCw0OEM2LDUwIDEzLDUyIDIzLDU1QzMyLDU3IDQ0LDU4IDUzLDU2QzYxLDUzIDY3LDQ1IDc1LDQzQzgyLDQwIDkwLDQxIDk5LDQzTDk5LDk5WiclM0UlM0MvcGF0aCUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyZmYnIGQ9J00wLDk5TDAsNzVDOSw3NCAxOSw3MyAyOCw3NEMzNiw3NCA0NCw3NSA1Miw3NUM1OSw3NCA2Nyw3MyA3NSw3M0M4Miw3MiA5MCw3MSA5OSw3MUw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0Mvc3ZnJTNFIn0=' + // }, + // nftAddress: '0xf919A3b0D1538CAA24Efe2BeaAbe43F776aE83ED', + // purgatory: { + // state: false, + // reason: '' + // }, + // services: [ + // { + // datatokenAddress: '0x772224c2C2bddb88A55b3905aAaf8C7188b02ce3', + // files: + // '0x0435d6273c00013a79d50a8b4fd8e65b7ccbde5fcb99726d52fb222282f5e80a18873a27908c5ed07fc808175784b162792c4946a735fbbe338c5ce7579ae46451f88c5eda573ae7c7764337d8d165a0fe715aab96f416c606b84f3b2dba9dbd8d7c00ce8ffe67d644ce88a4c9d842a149a93f3e6135b94b448db76960f5375dc661fb9a75b424d28b43553b58af31b02eab5b1e928f71c699eb9a4114284fe0b9eeeaccb3d02848c16a544160e68b18db5cc214f9d56b6c5aa775853248e5a0164045da6b30ccc7a13a45396bf2cf6bc10d31feb3bb9b2c40b3a6c8c97cde85de13b56d2f2d09aee13180b63423b7d30d4c6fd03d8d5ab15395463038c12b2da1ca86f9317011dc215750dd5c16f4360b658aa39f5e2e93b0ff1de9e7a88c5afb23daa5122160c463b973fb9bf8', + // id: '42e244808872c9f4ad96db99d9877abbf3cae9988dec9bd52ab2e336d7ac83af', + // serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', + // timeout: 0, + // type: 'access' + // } + // ], + // stats: { + // orders: 1, + // price: { + // value: 3231343254, + // tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', + // tokenSymbol: 'OCEAN' + // } + // }, + // version: '4.1.0', + // accessDetails: { + // templateId: 2, + // publisherMarketOrderFee: '0', + // type: 'free', + // addressOrId: '0x772224c2c2bddb88a55b3905aaaf8c7188b02ce3', + // price: '0', + // isPurchasable: true, + // datatoken: { + // address: '0x772224c2c2bddb88a55b3905aaaf8c7188b02ce3', + // name: 'Rebarbative Barnacle Token', + // symbol: 'REBBAR-99' + // }, + // baseToken: null, + // isOwned: false, + // validOrderTx: null + // } + // }, + // { + // '@context': ['https://w3id.org/did/v1'], + // chainId: 137, + // datatokens: [ + // { + // address: '0x89A0170556BB80438081D69F43d8C07a90e9Aa24', + // name: 'Invidious Octopus Token', + // serviceId: + // '8573fbf5e2e5a90631e26bef416f140f815570b5124b8ad52812443d110a57c2', + // symbol: 'INVOCT-85' + // } + // ], + // event: { + // block: 33956932, + // contract: '0x0fb9814D744ed407878D6D7508649b8D43F6b30a', + // datetime: '2022-10-05T09:49:12', + // from: '0xF5dcd98a1C99c2c65C62025Cb23cFB6f12F35497', + // tx: '0xe656b9d934ba1f8c98eb9372fd03709c880486fff0b50476450ef458694b1529' + // }, + // id: 'did:op:191af71e271d4eb6f9ac582b2a6a78e8d79167da7a13a30878c7b699842aa421', + // metadata: { + // additionalInformation: { + // termsAndConditions: true + // }, + // author: 'OPF', + // created: '2022-10-05T09:42:06Z', + // description: + // 'Test asset wrt issue https://github.com/oceanprotocol/ocean.py/issues/990\n\nUrl is https://cexa.oceanprotocol.io/ohlc?exchange=binance&pair=ETH/USDT', + // license: 'https://market.oceanprotocol.com/terms', + // name: 'CEXA test ocean.py#990 (3)', + // tags: ['defi'], + // type: 'dataset', + // updated: '2022-10-05T09:42:06Z' + // }, + // nft: { + // address: '0x0fb9814D744ed407878D6D7508649b8D43F6b30a', + // created: '2022-10-05T09:49:12', + // name: 'Ocean Data NFT', + // owner: '0xF5dcd98a1C99c2c65C62025Cb23cFB6f12F35497', + // state: 0, + // symbol: 'OCEAN-NFT', + // tokenURI: + // 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDoxOTFhZjcxZTI3MWQ0ZWI2ZjlhYzU4MmIyYTZhNzhlOGQ3OTE2N2RhN2ExM2EzMDg3OGM3YjY5OTg0MmFhNDIxIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjE5MWFmNzFlMjcxZDRlYjZmOWFjNTgyYjJhNmE3OGU4ZDc5MTY3ZGE3YTEzYTMwODc4YzdiNjk5ODQyYWE0MjEiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDI4QzEwLDI1IDIxLDIyIDMzLDIzQzQ0LDIzIDU3LDI4IDY5LDI5QzgwLDI5IDg5LDI0IDk5LDIwTDk5LDk5WicvJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJiYicgZD0nTTAsOTlMMCw0NEMxMiw0OCAyNSw1MiAzNyw1NEM0OCw1NSA1OCw1MiA2OSw1MUM3OSw0OSA4OSw0OCA5OSw0OEw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmZmJyBkPSdNMCw5OUwwLDc3QzksNzQgMTgsNzEgMjksNzBDMzksNjggNTIsNjcgNjQsNjlDNzUsNzAgODcsNzMgOTksNzdMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRSJ9' + // }, + // nftAddress: '0x0fb9814D744ed407878D6D7508649b8D43F6b30a', + // purgatory: { + // state: false, + // reason: '' + // }, + // services: [ + // { + // datatokenAddress: '0x89A0170556BB80438081D69F43d8C07a90e9Aa24', + // files: + // '0x040948a7677383b0c920458a6e1eca981061a9e4bf2b34a187d6fea73a21c568f9be5cb92233fc81e986e20b32c20d38a149ab45340b4a8ef9db0c8c000c7b2838b7a7496b5a4e670d97e3b6ed19af64635ba4ad737b2a90f377e5856ade60c0dad8375033d4a134cbff122234bb60e6e3e282e5dbdd6d3b0f9d5a7910e6a77d62c617f08120ac5b5ec88aec6609f22e0e24fe558e87865dc42278d09d5f4a2a30ac869f48221c481feee2dc0d39dc001c09e898964ccee99d16a24b4f41c3391dedc2f71140165541639c3d19385967347352be9c97fa8e7d9db842ab77eca21abf94edc422f83bd8017706d51791f2e282b5a0ec3a23521d898110aa66fa12a0ec6fa4258ca2cf4d7a6d1450b86eda81a936788fcd92f9754efa3fba4e69729e90d88bff58f12e5a1c76a24c57200a35f7bf71b9f525580e1f6ff7139c6c8f04fd4c59650dbfebaf5f5f1dccf4c3bc5d3a65b33c1d9107', + // id: '8573fbf5e2e5a90631e26bef416f140f815570b5124b8ad52812443d110a57c2', + // serviceEndpoint: 'https://v4.provider.polygon.oceanprotocol.com', + // timeout: 604800, + // type: 'access' + // } + // ], + // stats: { + // allocated: 11159.279296875, + // orders: 1, + // price: { + // value: 0 + // } + // }, + // version: '4.1.0', + // accessDetails: { + // templateId: 2, + // publisherMarketOrderFee: '0', + // type: 'free', + // addressOrId: '0x89a0170556bb80438081d69f43d8c07a90e9aa24', + // price: '0', + // isPurchasable: true, + // datatoken: { + // address: '0x89a0170556bb80438081d69f43d8c07a90e9aa24', + // name: 'Invidious Octopus Token', + // symbol: 'INVOCT-85' + // }, + // baseToken: null, + // isOwned: false, + // validOrderTx: null + // } + // }, + // { + // '@context': ['https://w3id.org/did/v1'], + // chainId: 5, + // datatokens: [ + // { + // address: '0xAd42c7AfEe47140B5CD87F05d5846c418145f43A', + // name: 'Zealous Clam Token', + // serviceId: + // '081b597131102e14ea5f16d6ba49f46889fb700f88f9430d03ec64441280a894', + // symbol: 'ZEACLA-28' + // } + // ], + // event: { + // block: 7714916, + // contract: '0xeE1c6bE384D3ee734E906443E9d893b03852bFC6', + // datetime: '2022-10-05T07:41:24', + // from: '0x3e81AA994f774eE914D57946DDF2486EA7d42D65', + // tx: '0x20e01c84928b5432216cb7046dc81b50e2902e3e65d1a9b0c93fb7b772e2d979' + // }, + // id: 'did:op:50c60ce0810bf8f8b1c6ca421e5231b106cf4de784945037498c84147e11dbc5', + // metadata: { + // additionalInformation: { + // termsAndConditions: true + // }, + // author: 'aaa', + // created: '2022-10-05T07:40:44Z', + // description: 'asda asda dsadadada', + // license: 'https://market.oceanprotocol.com/terms', + // name: 'Free testing', + // tags: ['aaa'], + // type: 'dataset', + // updated: '2022-10-05T07:40:44Z' + // }, + // nft: { + // address: '0xeE1c6bE384D3ee734E906443E9d893b03852bFC6', + // created: '2022-10-05T07:41:24', + // name: 'Ocean Data NFT', + // owner: '0x3e81AA994f774eE914D57946DDF2486EA7d42D65', + // state: 0, + // symbol: 'OCEAN-NFT', + // tokenURI: + // 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDo1MGM2MGNlMDgxMGJmOGY4YjFjNmNhNDIxZTUyMzFiMTA2Y2Y0ZGU3ODQ5NDUwMzc0OThjODQxNDdlMTFkYmM1IiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjUwYzYwY2UwODEwYmY4ZjhiMWM2Y2E0MjFlNTIzMWIxMDZjZjRkZTc4NDk0NTAzNzQ5OGM4NDE0N2UxMWRiYzUiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDIwQzEzLDI0IDI3LDI4IDM3LDI3QzQ2LDI1IDUzLDE5IDYzLDE4QzcyLDE2IDg1LDIwIDk5LDI1TDk5LDk5WicvJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJiYicgZD0nTTAsOTlMMCw1NkM4LDU0IDE3LDUzIDI5LDUzQzQwLDUyIDU0LDUxIDY3LDUyQzc5LDUyIDg5LDUzIDk5LDU1TDk5LDk5WiclM0UlM0MvcGF0aCUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyZmYnIGQ9J00wLDk5TDAsNjlDMTEsNzMgMjIsNzcgMzQsNzdDNDUsNzYgNTgsNzEgNjksNjlDNzksNjYgODksNjcgOTksNjhMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRSJ9' + // }, + // nftAddress: '0xeE1c6bE384D3ee734E906443E9d893b03852bFC6', + // purgatory: { + // state: false, + // reason: '' + // }, + // services: [ + // { + // datatokenAddress: '0xAd42c7AfEe47140B5CD87F05d5846c418145f43A', + // files: + // '0x0431fb7120723def69d30ee6aede9846cf0578ae44e22459f7273e4b37f204832f4b87f0ea6cea7bbea820a35d0b18e6c599d3898368ddf03df6a5cd8003a0100274e8405f640815d18e63ce680c3a6fae28b71fc2e072d02c39618a85fa12528f0b740d9ea0f2b4d0795444794f1b614ef1a796deb2399ccaa5b709707a08d5a6b576eac811bfc35f9e02e8d778538dd989fe7d237e46bfffcd680cd9f70d30f5acbbcff33845a95aa1c310864ca95fb076a40174a307d3b71c3259bde027381460f02ff6bcdcfaee9edf6e74dc0adc465b4bcdaac74e6ca7f4181cec45cc5f2c925295b226e586935d7edd644ebe913c491ebfe6144bf605b330e42b7f35a88b55a1f7dc0b19851c0b032494e910b929831e9e5135d79134c2f3cd565a071327d7ba8b83357832603cec9aedc9', + // id: '081b597131102e14ea5f16d6ba49f46889fb700f88f9430d03ec64441280a894', + // serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', + // timeout: 0, + // type: 'access' + // } + // ], + // stats: { + // orders: 0, + // price: { + // value: 0 + // } + // }, + // version: '4.1.0', + // accessDetails: { + // templateId: 2, + // publisherMarketOrderFee: '0', + // type: 'free', + // addressOrId: '0xad42c7afee47140b5cd87f05d5846c418145f43a', + // price: '0', + // isPurchasable: true, + // datatoken: { + // address: '0xad42c7afee47140b5cd87f05d5846c418145f43a', + // name: 'Zealous Clam Token', + // symbol: 'ZEACLA-28' + // }, + // baseToken: null, + // isOwned: false, + // validOrderTx: null + // } + // }, + // { + // '@context': ['https://w3id.org/did/v1'], + // chainId: 137, + // credentials: { + // allow: [], + // deny: [] + // }, + // datatokens: [ + // { + // address: '0xf31b9c3EEE46249c29339319Bfd41167DE5980f1', + // name: 'ETH predictions: DT1', + // serviceId: '0', + // symbol: 'DT1' + // } + // ], + // event: { + // block: 33937819, + // contract: '0xaD244AC409cEfA155059890b425b83F6A4146d69', + // datetime: '2022-10-04T22:43:00', + // from: '0x7BA3d8551A6f2C70a5d47bb448BcF7EF69661822', + // tx: '0xdef98b7863ca74caf4af17315942744bf8c1f909da9e4db1287c6acf2beba1d9' + // }, + // id: 'did:op:f4b49d04ee8c6973e4f844754805dbfe9e682812121131abbfc1bdf6d6b6eef1', + // metadata: { + // author: '0x7BA3d', + // created: '2022-10-04T17:42:13.745633', + // description: 'ETH predictions', + // license: 'CC0: PublicDomain', + // name: 'ETH predictions', + // type: 'dataset', + // updated: '2022-10-04T17:42:13.745633' + // }, + // nft: { + // address: '0xaD244AC409cEfA155059890b425b83F6A4146d69', + // created: '2022-10-04T22:43:00', + // name: 'ETH predictions', + // owner: '0x7BA3d8551A6f2C70a5d47bb448BcF7EF69661822', + // state: 0, + // symbol: 'ETH predictions', + // tokenURI: 'https://oceanprotocol.com/nft/' + // }, + // nftAddress: '0xaD244AC409cEfA155059890b425b83F6A4146d69', + // purgatory: { + // state: false, + // reason: '' + // }, + // services: [ + // { + // datatokenAddress: '0xf31b9c3EEE46249c29339319Bfd41167DE5980f1', + // description: 'Download service', + // files: + // '0x044c33205fb032624a234ddce8c8e84b8311ded47f43edbea93825f670145ba127237837013705e7e173f7673f7a7f87be292687e373f13cad812f273f86e293f8c78367b496664c9ea82c5095871b0404def05e719b567bea0f523daf5054c3e2894140b5e9072e075c9df9b8039c5d434bd0569daff8d27c2b9544823890e5072d36f5f417cfe4c8f9c0b3fd48ed546b16fea54fbfff12c8da77549f49dbae52a4894e9ebe08c29903cf458815d43da1fc1ca89322c0cbc7f69e20d4489cb69d9272de03a6f7e89793d0ceda6a7eb41dfbf1d942a47773b32c2df2c4d81ca2ee79043819230621a351bcf0f67f377c7885c3578e4a4f75f9e30f779ffb0b0af81c02a8b8359831bfe4ed7cc1a267a133e09a5264dec1695801b3b3b15a26cf9a24dcb50620abed35fafe45eae01a1681f0aa85ba4648b6574e760eeb414ee18a1de319b0d06fbab40e8ed193fc', + // id: '0', + // name: 'Download service', + // serviceEndpoint: 'https://v4.provider.polygon.oceanprotocol.com', + // timeout: 3600, + // type: 'access' + // } + // ], + // stats: { + // allocated: 0, + // orders: 0, + // price: { + // value: 3231343254, + // tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', + // tokenSymbol: 'OCEAN' + // } + // }, + // version: '4.1.0', + // accessDetails: { + // type: 'NOT_SUPPORTED' + // } as any + // }, + // { + // '@context': ['https://w3id.org/did/v1'], + // chainId: 5, + // datatokens: [ + // { + // address: '0xf5dbd5a675248f92E3F37da98090144C1355ABb5', + // name: 'Feckless Orca Token', + // serviceId: + // '9dec1b8dbf546767988ca98374631b7325a5c0ddb5b75e21e6da0f527cc45285', + // symbol: 'FECORC-10' + // } + // ], + // event: { + // block: 7710252, + // contract: '0x4CA9EfCD6bbFC935FbBaaDAF65aA6f8Fc3504fe1', + // datetime: '2022-10-04T12:45:00', + // from: '0x9c4e3CaE2B87180BEa0238b25bacf38473c39e11', + // tx: '0x01d95a564f99e8c1e7cc585ed00435b405723751ad96e57e86851763f7222ce4' + // }, + // id: 'did:op:82698600c9f003bdfa97bf054b5bb9b0f83c18b4ea748ce1eddbab8110ff9ea9', + // metadata: { + // additionalInformation: { + // termsAndConditions: true + // }, + // author: 'Jamie', + // created: '2022-10-04T12:44:40Z', + // description: + // 'Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data Test Data ', + // license: 'https://market.oceanprotocol.com/terms', + // name: 'Test Data', + // tags: ['test'], + // type: 'dataset', + // updated: '2022-10-04T12:44:40Z' + // }, + // nft: { + // address: '0x4CA9EfCD6bbFC935FbBaaDAF65aA6f8Fc3504fe1', + // created: '2022-10-04T12:45:00', + // name: 'Ocean Data NFT', + // owner: '0x9c4e3CaE2B87180BEa0238b25bacf38473c39e11', + // state: 0, + // symbol: 'OCEAN-NFT', + // tokenURI: + // 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDo4MjY5ODYwMGM5ZjAwM2JkZmE5N2JmMDU0YjViYjliMGY4M2MxOGI0ZWE3NDhjZTFlZGRiYWI4MTEwZmY5ZWE5IiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjgyNjk4NjAwYzlmMDAzYmRmYTk3YmYwNTRiNWJiOWIwZjgzYzE4YjRlYTc0OGNlMWVkZGJhYjgxMTBmZjllYTkiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDE3QzYsMTYgMTMsMTYgMjIsMTdDMzAsMTcgNDAsMTkgNTAsMjBDNTksMjAgNjcsMjEgNzUsMjFDODIsMjAgOTAsMTkgOTksMTlMOTksOTlaJy8lM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmJiJyBkPSdNMCw5OUwwLDU0QzYsNTAgMTMsNDcgMjIsNDdDMzAsNDYgMzksNDkgNDksNTJDNTgsNTQgNjgsNTggNzcsNTdDODUsNTUgOTIsNDkgOTksNDNMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJmZicgZD0nTTAsOTlMMCw4MkM3LDgwIDE1LDc5IDI0LDc2QzMyLDcyIDQwLDY2IDQ5LDY4QzU3LDY5IDY0LDc4IDczLDgxQzgxLDgzIDkwLDgwIDk5LDc4TDk5LDk5WiclM0UlM0MvcGF0aCUzRSUzQy9zdmclM0UifQ==' + // }, + // nftAddress: '0x4CA9EfCD6bbFC935FbBaaDAF65aA6f8Fc3504fe1', + // purgatory: { + // state: false, + // reason: '' + // }, + // services: [ + // { + // datatokenAddress: '0xf5dbd5a675248f92E3F37da98090144C1355ABb5', + // files: + // '0x044434dfd2c80154b1a0641420a12d694ea9c762f9a7ca79ca467b5e1995ed2ee5cfe3460a368840ba290dfdec634c72e4204f12cb17a3f4f7108a253d11ed3a5294187b2bc7c8f24e39568a912914732bd2dd2707b0f416f1e729b2eb71f5656e10b33dba2ecd012dfbe01fa2c9dfb850a2386fc4962e5ccdc660b959fd00adef1c70c0f2b4a26df063a52197791bf9eed9136f1ad7b8a6073e196b2cbfb8b4d2a1dd023c15481b956c9419b47df921d72e3706820d4f5f26374fd0ee1bd6cfd9aead3e7168759419f404fac6f9779233c328a26ea41cb5c064cfb342d01fc7bc10a5766407dfc5a5dc3e0cbfc95f8b4cbe8f00895b02d4b42ccb2bbc465ef1e7026c0d922ef7877b1d6065e03922d9549f9aad490f07a03aa713d3028d489a11bcd3be12e2bf6a8d3d6c1a1108401786b5598c6c1411d9f562c137fd991fb2ebd6d1bbb7f46d5392387d0764bb', + // id: '9dec1b8dbf546767988ca98374631b7325a5c0ddb5b75e21e6da0f527cc45285', + // serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', + // timeout: 0, + // type: 'access' + // } + // ], + // stats: { + // orders: 1, + // price: { + // value: 3231343254, + // tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', + // tokenSymbol: 'OCEAN' + // } + // }, + // version: '4.1.0', + // accessDetails: { + // templateId: 2, + // publisherMarketOrderFee: '0', + // type: 'fixed', + // addressOrId: + // '0xadd592e83c3830058bb3649e499b9066c681616ffe6ea12e28dc6adcc63dac16', + // price: '1', + // isPurchasable: true, + // baseToken: { + // address: '0xcfdda22c9837ae76e0faa845354f33c62e03653a', + // name: 'Ocean Token', + // symbol: 'OCEAN', + // decimals: 18 + // }, + // datatoken: { + // address: '0xf5dbd5a675248f92e3f37da98090144c1355abb5', + // name: 'Feckless Orca Token', + // symbol: 'FECORC-10' + // }, + // isOwned: false, + // validOrderTx: null + // } + // }, + // { + // '@context': ['https://w3id.org/did/v1'], + // chainId: 5, + // datatokens: [ + // { + // address: '0x23C1FD10DADCaF558fB7173b79CfD0D867568a3D', + // name: 'Equanimous Barracuda Token', + // serviceId: + // '89d66d7e77abccb2899b224662a733b42edefeb769138d6562928c38f75b4caa', + // symbol: 'EQUBAR-39' + // } + // ], + // event: { + // block: 7716390, + // contract: '0x3A695322d631451474090F322eA3d8d2eC8c1562', + // datetime: '2022-10-05T13:51:24', + // from: '0x903322C7E45A60d7c8C3EA236c5beA9Af86310c7', + // tx: '0xcea2e02cb67c0c545976baf419a1cacbcad6fd2c4308eca93c49a3135a90e40c' + // }, + // id: 'did:op:9c1235050bcd51c8ec9a7058110102c9595136834911c315b4f739bc9a880b8e', + // metadata: { + // additionalInformation: { + // termsAndConditions: true + // }, + // author: 'Jelly', + // created: '2022-10-04T11:38:49Z', + // description: 'Testitestvwgre btewwgte', + // license: 'https://market.oceanprotocol.com/terms', + // name: 'Testitest', + // tags: [], + // type: 'dataset', + // updated: '2022-10-04T11:38:49Z' + // }, + // nft: { + // address: '0x3A695322d631451474090F322eA3d8d2eC8c1562', + // created: '2022-10-04T11:39:12', + // name: 'Ocean Data NFT', + // owner: '0x903322C7E45A60d7c8C3EA236c5beA9Af86310c7', + // state: 0, + // symbol: 'OCEAN-NFT', + // tokenURI: + // 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDo5YzEyMzUwNTBiY2Q1MWM4ZWM5YTcwNTgxMTAxMDJjOTU5NTEzNjgzNDkxMWMzMTViNGY3MzliYzlhODgwYjhlIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjljMTIzNTA1MGJjZDUxYzhlYzlhNzA1ODExMDEwMmM5NTk1MTM2ODM0OTExYzMxNWI0ZjczOWJjOWE4ODBiOGUiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDIxQzExLDIwIDIyLDIwIDMzLDIxQzQzLDIxIDU0LDIyIDY1LDIzQzc1LDIzIDg3LDIyIDk5LDIyTDk5LDk5WicvJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJiYicgZD0nTTAsOTlMMCw1M0MxMiw0OCAyNSw0NCAzNiw0NUM0Niw0NSA1NCw1MSA2NSw1M0M3NSw1NCA4Nyw1MSA5OSw0OUw5OSw5OVonJTNFJTNDL3BhdGglM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5MmZmJyBkPSdNMCw5OUwwLDY4QzEyLDczIDI1LDc4IDM2LDgwQzQ2LDgxIDU0LDc4IDY1LDc3Qzc1LDc1IDg3LDc1IDk5LDc2TDk5LDk5WiclM0UlM0MvcGF0aCUzRSUzQy9zdmclM0UifQ==' + // }, + // nftAddress: '0x3A695322d631451474090F322eA3d8d2eC8c1562', + // purgatory: { + // state: false, + // reason: '' + // }, + // services: [ + // { + // datatokenAddress: '0x23C1FD10DADCaF558fB7173b79CfD0D867568a3D', + // files: + // '0x042f150d201313fa28d6d4ecd45b65eab2a3f88eaae50570d9e6a903b071c74eca5c129d38b7c5adf871e70fc586daba5d8788c405208238a9974519f086a28c9366e049b07eae6ab20f2752ed382a6123a49d74c7f2134f14632393851ead2be2df2634f9b4db2126085cdc57d2e2d144c219bc7a546b2030d128e23c0056da8c26f6d7bffb389c31d76916dd5c6f94f5c7d9a532dd6d3c210bed0f7486e41411911f446a020628136efc3acfa39573dc54ab0b29fbd8985f64a88cc20d2f9a2e0688ff1b8458f8f1a46be4633045b5e9313b612e96dae44f4c9258c2420c13a2bac8082461141b036065c0187b119586c1ea7225e1599e520a34da5e4510d8bec879d982ebf951566ece9ef58c1eb43ac07570a6a8e542b29460bf52914a9f8f3dfd7e423d87dd618e2b04db54e5f7dcf91976cee59ddd63bb09a09ecc98ba44005a', + // id: '89d66d7e77abccb2899b224662a733b42edefeb769138d6562928c38f75b4caa', + // serviceEndpoint: 'https://v4.provider.goerli.oceanprotocol.com', + // timeout: 0, + // type: 'access' + // } + // ], + // stats: { + // orders: 0, + // price: { + // value: 0 + // } + // }, + // version: '4.1.0', + // accessDetails: { + // templateId: 2, + // publisherMarketOrderFee: '0', + // type: 'free', + // addressOrId: '0x23c1fd10dadcaf558fb7173b79cfd0d867568a3d', + // price: '0', + // isPurchasable: true, + // datatoken: { + // address: '0x23c1fd10dadcaf558fb7173b79cfd0d867568a3d', + // name: 'Equanimous Barracuda Token', + // symbol: 'EQUBAR-39' + // }, + // baseToken: null, + // isOwned: false, + // validOrderTx: null + // } + // }, + // { + // '@context': ['https://w3id.org/did/v1'], + // chainId: 1, + // datatokens: [ + // { + // address: '0x98d87B273Ed411A5940a0C4a3717d58C81917Eb5', + // name: 'Egregious Anchovy Token', + // serviceId: + // '60be64b7b7b10944c2b3eac740f476d85b2625a5db32bd0a3db1959f9a8100bb', + // symbol: 'EGRANC-29' + // } + // ], + // event: { + // block: 15671852, + // contract: '0x3a1deC08e0367D8eCCBa714DF23949c105B7D06B', + // datetime: '2022-10-04T02:38:59', + // from: '0x8542472a8De568cD3B09A53368C1962d8DfDBE2f', + // txid: '0x9f717d0386598349b0e19c45f7dcf2ead5b219b25e1fc08902ebe651c48398fb' + // }, + // id: 'did:op:9442a55c25e9a0fd30231089ec34e430d0325ce0d3e03ab1aa27579eb56f7570', + // metadata: { + // additionalInformation: { + // termsAndConditions: true + // }, + // author: 'Internet crawler', + // created: '2022-10-04T02:38:44Z', + // description: + // 'Dataset contains personal info of USA citizen (around 157 criteria) such as: email, phone, name, address, geo location, household, real estate, salary, income, etc. Around 500k citizens. Dataset is helpful for financial, real estate companies who want to use it to train their AI/ML model. Or for marketing , sales purposes.', + // license: 'https://market.oceanprotocol.com/terms', + // links: [ + // 'https://drive.google.com/file/d/1oPX-LHBBV6IkQ3kHD7-25jmMVx4ZMoFU/view?usp=sharing' + // ], + // name: '500k USA citizen dataset including PII, real estate info, salary, household, etc', + // tags: [ + // 'ai', + // 'machine-learning', + // 'real-estate', + // 'finance', + // 'usa-citizen', + // 'pii' + // ], + // type: 'dataset', + // updated: '2022-10-04T02:38:44Z' + // }, + // nft: { + // address: '0x3a1deC08e0367D8eCCBa714DF23949c105B7D06B', + // created: '2022-10-04T02:38:59', + // name: 'Ocean Data NFT', + // owner: '0x8542472a8De568cD3B09A53368C1962d8DfDBE2f', + // state: 0, + // symbol: 'OCEAN-NFT', + // tokenURI: + // 'data:application/json;base64,eyJuYW1lIjoiT2NlYW4gRGF0YSBORlQiLCJzeW1ib2wiOiJPQ0VBTi1ORlQiLCJkZXNjcmlwdGlvbiI6IlRoaXMgTkZUIHJlcHJlc2VudHMgYW4gYXNzZXQgaW4gdGhlIE9jZWFuIFByb3RvY29sIHY0IGVjb3N5c3RlbS5cblxuVmlldyBvbiBPY2VhbiBNYXJrZXQ6IGh0dHBzOi8vbWFya2V0Lm9jZWFucHJvdG9jb2wuY29tL2Fzc2V0L2RpZDpvcDo5NDQyYTU1YzI1ZTlhMGZkMzAyMzEwODllYzM0ZTQzMGQwMzI1Y2UwZDNlMDNhYjFhYTI3NTc5ZWI1NmY3NTcwIiwiZXh0ZXJuYWxfdXJsIjoiaHR0cHM6Ly9tYXJrZXQub2NlYW5wcm90b2NvbC5jb20vYXNzZXQvZGlkOm9wOjk0NDJhNTVjMjVlOWEwZmQzMDIzMTA4OWVjMzRlNDMwZDAzMjVjZTBkM2UwM2FiMWFhMjc1NzllYjU2Zjc1NzAiLCJiYWNrZ3JvdW5kX2NvbG9yIjoiMTQxNDE0IiwiaW1hZ2VfZGF0YSI6ImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0Nzdmcgdmlld0JveD0nMCAwIDk5IDk5JyBmaWxsPSd1bmRlZmluZWQnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyclM0UlM0NwYXRoIGZpbGw9JyUyM2ZmNDA5Mjc3JyBkPSdNMCw5OUwwLDIyQzEyLDIyIDI1LDIyIDM2LDIzQzQ2LDIzIDUzLDI1IDY0LDI2Qzc0LDI2IDg2LDI2IDk5LDI2TDk5LDk5WicvJTNFJTNDcGF0aCBmaWxsPSclMjNmZjQwOTJiYicgZD0nTTAsOTlMMCw0NkM4LDQ3IDE3LDQ4IDI5LDQ4QzQwLDQ3IDU1LDQ2IDY4LDQ3QzgwLDQ3IDg5LDUwIDk5LDUzTDk5LDk5WiclM0UlM0MvcGF0aCUzRSUzQ3BhdGggZmlsbD0nJTIzZmY0MDkyZmYnIGQ9J00wLDk5TDAsNjhDMTAsNzMgMjAsNzkgMzAsODBDMzksODAgNDksNzYgNjEsNzVDNzIsNzMgODUsNzUgOTksNzhMOTksOTlaJyUzRSUzQy9wYXRoJTNFJTNDL3N2ZyUzRSJ9' + // }, + // nftAddress: '0x3a1deC08e0367D8eCCBa714DF23949c105B7D06B', + // purgatory: { + // state: false, + // reason: '' + // }, + // services: [ + // { + // datatokenAddress: '0x98d87B273Ed411A5940a0C4a3717d58C81917Eb5', + // files: + // '0x04a233b66ca6261147f2729d818d4929a797565508daa51f8041bc07fb47d4374702d5cc0528e80d3a6d039df3ba155cdc251f719e8438f1788aed571b98bb301dfd17fe1b4756cd2652ea9f42ca2b3ec3bc40072215ce0dd9504a1d207a3582dee897597117c02013f8e8aefae8843415784db6e7870b6649f434d7eeed5d2adad1e874c18d826171da760fcfe4a3dfec1816bd494f969c290203707037d5e342d37713fef97ddc36b5e6c9a70e7085d841663705314451d3cbcb08dbc24f2baf365ea09160f4b581c93b415188f0e31aa1365a7be1cdbf8ea912aad046e94a801926b6576a47789dab193b28566b7b650c425b51c5c9865936c76c81e51a54986231d37aa518c2b3e629198f77b343d260a1c697f0ae168d405abd2e38e42a121ebaa3ccec8e8d562dcbadcabf5667aa48663e3ec34af9db86dfcc3dc5749ec4878e8fd643036a693ca4e7589d3e1fa93d936f80e4301ad06f30d9469a82ae3e94ebc94c5d19b708', + // id: '60be64b7b7b10944c2b3eac740f476d85b2625a5db32bd0a3db1959f9a8100bb', + // serviceEndpoint: 'https://v4.provider.mainnet.oceanprotocol.com', + // timeout: 0, + // type: 'access' + // } + // ], + // stats: { + // allocated: 422.9883117676, + // orders: 0, + // price: { + // value: 3231343254, + // tokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', + // tokenSymbol: 'OCEAN' + // } + // }, + // version: '4.1.0', + // accessDetails: { + // templateId: 2, + // publisherMarketOrderFee: '0', + // type: 'fixed', + // addressOrId: + // '0xfcf20144a14c7b2f51319d938436e34041acbd65e1e29319549ed7923b9fd86e', + // price: '1000000', + // isPurchasable: true, + // baseToken: { + // address: '0x967da4048cd07ab37855c090aaf366e4ce1b9f48', + // name: 'Ocean Token', + // symbol: 'OCEAN', + // decimals: 18 + // }, + // datatoken: { + // address: '0x98d87b273ed411a5940a0c4a3717d58c81917eb5', + // name: 'Egregious Anchovy Token', + // symbol: 'EGRANC-29' + // }, + // isOwned: false, + // validOrderTx: null + // } + // } ] diff --git a/app.config.cjs b/app.config.cjs index dbc154798..f638f5348 100644 --- a/app.config.cjs +++ b/app.config.cjs @@ -7,7 +7,7 @@ module.exports = { // return appConfig.metadataCacheUri metadataCacheUri: process.env.NEXT_PUBLIC_NODE_URL || - 'https://1.c2d.nodes.oceanprotocol.com:8000', + 'https://2.c2d.nodes.oceanprotocol.com:8000', // List of chainIds which metadata cache queries will return by default. // This preselects the Chains user preferences. diff --git a/src/@context/Profile/index.tsx b/src/@context/Profile/index.tsx index 4d9e87fe9..026692c81 100644 --- a/src/@context/Profile/index.tsx +++ b/src/@context/Profile/index.tsx @@ -166,13 +166,20 @@ function ProfileProvider({ dtList.push(orders.results[i].datatokenAddress) } - const { downloadedAssets, totalResults } = await getDownloadAssets( + const result = await getDownloadAssets( dtList, chainIds, cancelToken, ownAccount, page ) + + if (!result) { + LoggerInstance.error('getDownloadAssets returned undefined') + return + } + + const { downloadedAssets, totalResults } = result setDownloads(downloadedAssets) setDownloadsTotal(totalResults) LoggerInstance.log( diff --git a/src/@types/AssetExtended.d.ts b/src/@types/AssetExtended.d.ts index 3cee012cf..bb06c6632 100644 --- a/src/@types/AssetExtended.d.ts +++ b/src/@types/AssetExtended.d.ts @@ -6,8 +6,6 @@ declare global { interface AssetExtended extends Asset { accessDetails?: AccessDetails views?: number - // indexedMetadata?: any - event?: Event datatokens?: Datatoken[] } } diff --git a/src/@types/aquarius/SearchQuery.ts b/src/@types/aquarius/SearchQuery.ts index 84ff2d212..6bfd6f7ac 100644 --- a/src/@types/aquarius/SearchQuery.ts +++ b/src/@types/aquarius/SearchQuery.ts @@ -7,9 +7,9 @@ export enum SortDirectionOptions { export enum SortTermOptions { Created = 'indexedMetadata.nft.created', Relevance = '_score', - Orders = 'indexedMetadata.stats[0].orders', - Allocated = 'indexedMetadata.stats[0].allocated', - Price = 'indexedMetadata.stats[0].prices[0].price' + Orders = 'indexedMetadata.stats.orders', + Allocated = 'indexedMetadata.stats.allocated', + Price = 'indexedMetadata.stats.prices.price' } // Note: could not figure out how to get `enum` to be ambiant diff --git a/src/@utils/aquarius/index.ts b/src/@utils/aquarius/index.ts index 269303391..d79b9cb17 100644 --- a/src/@utils/aquarius/index.ts +++ b/src/@utils/aquarius/index.ts @@ -455,7 +455,9 @@ export async function getDownloadAssets( const result = await queryMetadata(query, cancelToken) const downloadedAssets: DownloadedAsset[] = result.results .map((asset) => { - const timestamp = new Date(asset.event.datetime).getTime() + const timestamp = new Date( + asset?.indexedMetadata?.event?.datetime + ).getTime() return { asset, diff --git a/src/@utils/order.ts b/src/@utils/order.ts index e18888557..731486838 100644 --- a/src/@utils/order.ts +++ b/src/@utils/order.ts @@ -85,6 +85,7 @@ export async function order( switch (asset.accessDetails?.type) { case 'fixed': { + console.log('In fixed price case') // this assumes all fees are in ocean const freParams = { @@ -135,13 +136,20 @@ export async function order( ) } if (asset.accessDetails?.templateId === 2) { + freParams.maxBaseTokenAmount = ( + Number(freParams.maxBaseTokenAmount) + + (Number(freParams.maxBaseTokenAmount) + + Number(orderPriceAndFees.opcFee)) + ).toString() const tx: any = await approve( signer, config, accountId, asset.accessDetails.baseToken.address, asset.accessDetails.datatoken.address, - orderPriceAndFees.price, + ( + Number(orderPriceAndFees.price) + Number(orderPriceAndFees.opcFee) + ).toString(), false ) diff --git a/src/@utils/provider.ts b/src/@utils/provider.ts index 7e5e67854..3e4cba494 100644 --- a/src/@utils/provider.ts +++ b/src/@utils/provider.ts @@ -1,7 +1,5 @@ import { Arweave, - GraphqlQuery, - Smartcontract, downloadFileBrowser, FileInfo, Ipfs, @@ -70,7 +68,8 @@ export async function getFileInfo( headers?: KeyValuePair[], abi?: string, chainId?: number, - method?: string + method?: string, + withChecksum = false ): Promise { let response const headersProvider = {} @@ -90,7 +89,8 @@ export async function getFileInfo( try { response = await ProviderInstance.getFileInfo( fileIPFS, - customProviderUrl || providerUrl + customProviderUrl || providerUrl, + withChecksum ) } catch (error) { const message = getErrorMessage(error.message) @@ -107,46 +107,8 @@ export async function getFileInfo( try { response = await ProviderInstance.getFileInfo( fileArweave, - customProviderUrl || providerUrl - ) - } catch (error) { - const message = getErrorMessage(error.message) - LoggerInstance.error('[Provider Get File info] Error:', message) - toast.error(message) - } - break - } - case 'graphql': { - const fileGraphql: GraphqlQuery = { - type: storageType, - url: file, - headers: headersProvider, - query - } - try { - response = await ProviderInstance.getFileInfo( - fileGraphql, - customProviderUrl || providerUrl - ) - } catch (error) { - const message = getErrorMessage(error.message) - LoggerInstance.error('[Provider Get File info] Error:', message) - toast.error(message) - } - break - } - case 'smartcontract': { - // clean obj - const fileSmartContract: Smartcontract = { - chainId, - type: storageType, - address: file, - abi: JSON.parse(abi) as AbiItem - } - try { - response = await ProviderInstance.getFileInfo( - fileSmartContract, - customProviderUrl || providerUrl + customProviderUrl || providerUrl, + withChecksum ) } catch (error) { const message = getErrorMessage(error.message) @@ -164,17 +126,11 @@ export async function getFileInfo( method } try { - console.log( - 'before getFileInfo', - fileUrl, - customProviderUrl, - providerUrl - ) response = await ProviderInstance.getFileInfo( fileUrl, - customProviderUrl || providerUrl + customProviderUrl || providerUrl, + withChecksum ) - console.log('response from getFileInfo', response) } catch (error) { const message = getErrorMessage(error.message) LoggerInstance.error('[Provider Get File info] Error:', message) @@ -190,10 +146,18 @@ export async function downloadFile( signer: Signer, asset: AssetExtended, accountId: string, + // verifierSessionId: string, validOrderTx?: string, userCustomParameters?: UserCustomParameters ) { let downloadUrl + console.log( + 'access details in id in download ', + asset.accessDetails.validOrderTx, + ' ', + validOrderTx + ) + console.log('asset id ', asset.id) try { downloadUrl = await ProviderInstance.getDownloadUrl( asset.id, @@ -204,6 +168,7 @@ export async function downloadFile( signer, userCustomParameters ) + console.log('Download URL: ', downloadUrl) } catch (error) { const message = getErrorMessage(error.message) LoggerInstance.error('[Provider Get download url] Error:', message) diff --git a/src/components/@shared/Price/index.tsx b/src/components/@shared/Price/index.tsx index 768211b23..2ef9ae053 100644 --- a/src/components/@shared/Price/index.tsx +++ b/src/components/@shared/Price/index.tsx @@ -1,6 +1,7 @@ import React, { ReactElement } from 'react' import { AssetPrice } from '@oceanprotocol/ddo-js' import PriceUnit from './PriceUnit' +import { getOceanConfig } from '@utils/ocean' export default function Price({ price, @@ -16,13 +17,16 @@ export default function Price({ conversion?: boolean size?: 'small' | 'mini' | 'large' }): ReactElement { + const oceanConfig = getOceanConfig(11155111) + const symbol = oceanConfig.oceanTokenSymbol + // console.log('Synbol,,,, In price', symbol) console.log('Synbol,,,,', price.token) if (!price && !orderPriceAndFees) return return ( - {!asset?.stats || asset?.stats?.orders < 0 ? ( + {!asset?.indexedMetadata.stats || + asset?.indexedMetadata.stats[0]?.orders < 0 ? ( N/A - ) : asset?.stats?.orders === 0 ? ( + ) : asset?.indexedMetadata?.stats[0]?.orders === 0 ? ( No sales yet ) : ( - {asset.stats.orders} sale - {asset.stats.orders === 1 ? '' : 's'} + + {asset.indexedMetadata?.stats[0].orders} + {' '} + sale + {asset?.indexedMetadata?.stats[0]?.orders === 1 ? '' : 's'} )} diff --git a/src/components/Asset/AssetActions/Download/index.tsx b/src/components/Asset/AssetActions/Download/index.tsx index 68aa96ac1..9fa936c46 100644 --- a/src/components/Asset/AssetActions/Download/index.tsx +++ b/src/components/Asset/AssetActions/Download/index.tsx @@ -101,7 +101,7 @@ export default function Download({ try { !orderPriceAndFees && setIsPriceLoading(true) - console.log('service', asset) + console.log('service in download', asset) const _orderPriceAndFees = await getOrderPriceAndFees( asset, service || asset.services[0], @@ -116,7 +116,7 @@ export default function Download({ } } - init() + if (!orderPriceAndFees) init() /** * we listen to the assets' changes to get the most updated price @@ -185,6 +185,8 @@ export default function Download({ asset.accessDetails.datatoken?.symbol )[asset.accessDetails.type === 'fixed' ? 2 : 1] ) + console.log('order price', orderPriceAndFees) + console.log('order accessDetails', accessDetails) const orderTx = await order( signer, asset, diff --git a/src/components/Asset/AssetActions/index.tsx b/src/components/Asset/AssetActions/index.tsx index 2a068a53d..b3d53ab7c 100644 --- a/src/components/Asset/AssetActions/index.tsx +++ b/src/components/Asset/AssetActions/index.tsx @@ -107,9 +107,10 @@ export default function AssetActions({ try { const datatokenInstance = new Datatoken(web3Provider as any) const dtBalance = await datatokenInstance.balance( - asset.services[0].datatokenAddress, + asset.accessDetails?.baseToken.address, accountId ) + console.log('DT Balance! ', dtBalance) setDtBalance(dtBalance) } catch (e) { LoggerInstance.error(e.message) diff --git a/src/components/Header/Wallet/Details.tsx b/src/components/Header/Wallet/Details.tsx index cb14579bf..e514e2c6c 100644 --- a/src/components/Header/Wallet/Details.tsx +++ b/src/components/Header/Wallet/Details.tsx @@ -42,6 +42,8 @@ export default function Details(): ReactElement { address: oceanConfig.oceanTokenAddress, symbol: oceanConfig.oceanTokenSymbol }) + console.log('ocean token address, ', oceanConfig.oceanTokenAddress) + console.log('ocean token address, ', oceanConfig.oceanTokenSymbol) }, [networkData, chain?.id]) return ( diff --git a/src/components/Home/Bookmarks.tsx b/src/components/Home/Bookmarks.tsx index a34f7175c..b2138c83c 100644 --- a/src/components/Home/Bookmarks.tsx +++ b/src/components/Home/Bookmarks.tsx @@ -31,7 +31,9 @@ const columns: TableOceanColumn[] = [ }, { name: 'Price', - selector: (row) => , + selector: (row) => ( + + ), right: true } ] diff --git a/src/components/Publish/Preview/index.tsx b/src/components/Publish/Preview/index.tsx index 596ab8d9f..5b3bf959c 100644 --- a/src/components/Publish/Preview/index.tsx +++ b/src/components/Publish/Preview/index.tsx @@ -17,44 +17,6 @@ export default function Preview(): ReactElement { async function makeDdo() { const asset = (await transformPublishFormToDdo(values)) as AssetExtended // dummy BestPrice to trigger certain AssetActions - asset.accessDetails = { - type: values.pricing.type, - addressOrId: ZERO_ADDRESS, - templateId: 1, - price: `${values.pricing.price}`, - baseToken: { - address: ZERO_ADDRESS, - name: values.pricing?.baseToken?.symbol || 'OCEAN', - symbol: values.pricing?.baseToken?.symbol || 'OCEAN' - }, - datatoken: { - address: ZERO_ADDRESS, - name: '', - symbol: '' - }, - isPurchasable: true, - isOwned: false, - validOrderTx: '', - publisherMarketOrderFee: '0' - } - asset.indexedMetadata.stats[0] = { - datatokenAddress: '0', // replace with actual value - name: values.metadata.name, // replace with actual value - symbol: values.pricing?.baseToken?.symbol || 'OCEAN', // adjust as needed - serviceId: '0', - orders: null, - prices: [ - { - type: 'dispenser', - price: - values.pricing.type === 'free' - ? '0' - : values.pricing.price.toString(), - token: values.pricing?.baseToken?.symbol || 'OCEAN', - contract: ZERO_ADDRESS - } - ] - } setAsset(asset) } makeDdo() From fd6fd0a1dd6f08c026356c8dd69e7d2b37545e1a Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Mon, 16 Jun 2025 15:29:06 +0300 Subject: [PATCH 22/60] updated to new OPF node --- src/@hooks/useGraphSyncStatus.ts | 90 --------- src/@utils/ddo.ts | 56 +++--- src/@utils/index.ts | 2 +- src/@utils/nft.ts | 2 +- src/@utils/ocean/index.ts | 22 +-- src/@utils/subgraph.ts | 174 ------------------ src/@utils/wallet/chains.ts | 6 +- .../@shared/AssetListTitle/index.tsx | 2 +- .../ConsumerParameters/_validation.ts | 2 +- .../AssetActions/ConsumerParameters/index.tsx | 3 +- .../AssetActions/Download/_validation.ts | 2 +- src/components/Asset/AssetActions/index.tsx | 17 +- .../Asset/AssetContent/MetaMain/MetaAsset.tsx | 11 +- .../Asset/AssetContent/MetaMain/MetaInfo.tsx | 2 +- .../Asset/AssetContent/MetaSecondary.tsx | 2 +- .../Asset/Edit/DebugEditMetadata.tsx | 2 +- src/components/Asset/Edit/_constants.ts | 2 +- src/components/Footer/MarketStats/index.tsx | 60 +++--- src/components/Publish/Debug/index.tsx | 2 +- src/components/Publish/Steps.tsx | 2 +- src/components/Publish/_types.ts | 3 +- 21 files changed, 94 insertions(+), 370 deletions(-) delete mode 100644 src/@hooks/useGraphSyncStatus.ts delete mode 100644 src/@utils/subgraph.ts diff --git a/src/@hooks/useGraphSyncStatus.ts b/src/@hooks/useGraphSyncStatus.ts deleted file mode 100644 index 816a3a687..000000000 --- a/src/@hooks/useGraphSyncStatus.ts +++ /dev/null @@ -1,90 +0,0 @@ -import { useState, useEffect } from 'react' -import { Config, LoggerInstance } from '@oceanprotocol/lib' -import axios, { AxiosResponse } from 'axios' -import { getOceanConfig } from '@utils/ocean' -import { useBlockNumber } from 'wagmi' - -const blockDifferenceThreshold = 30 -const graphQueryBody = - '{"query": "query Meta { _meta { block { hash number } deployment hasIndexingErrors } }", "variables": {},"operationName":"Meta"}' - -export interface UseGraphSyncStatus { - isGraphSynced: boolean - blockHead: number - blockGraph: number -} - -async function fetchGraph( - url: string, - queryBody: string -): Promise { - try { - const response = await axios.post(url, { ...JSON.parse(queryBody) }) - return response - } catch (error) { - LoggerInstance.error('Error parsing json: ' + error.message) - } -} - -async function getBlockSubgraph(subgraphUri: string) { - const response: any = await fetchGraph( - `${subgraphUri}/subgraphs/name/oceanprotocol/ocean-subgraph`, - graphQueryBody - ) - const blockNumberGraph = Number(response?.data?.data?._meta?.block?.number) - return blockNumberGraph -} - -export function useGraphSyncStatus(networkId: number): UseGraphSyncStatus { - const { data: blockHead, isLoading } = useBlockNumber() - const [blockGraph, setBlockGraph] = useState() - const [isGraphSynced, setIsGraphSynced] = useState(true) - const [isSubgraphLoading, setIsSubgraphLoading] = useState(false) - const [oceanConfig, setOceanConfig] = useState() - - // Grab ocean config based on passed networkId - useEffect(() => { - if (!networkId) return - - const oceanConfig = getOceanConfig(networkId) - setOceanConfig(oceanConfig) - }, [networkId]) - - // Log head block - useEffect(() => { - if (!blockHead) return - LoggerInstance.log('[GraphStatus] Head block: ', blockHead) - }, [blockHead]) - - // Get and set subgraph block - useEffect(() => { - if (!oceanConfig?.subgraphUri) return - - async function initBlockSubgraph() { - setIsSubgraphLoading(true) - const blockGraph = await getBlockSubgraph(oceanConfig.subgraphUri) - setBlockGraph(blockGraph) - setIsSubgraphLoading(false) - LoggerInstance.log( - '[GraphStatus] Latest block from subgraph: ', - blockGraph - ) - } - initBlockSubgraph() - }, [oceanConfig]) - - // Set sync status - useEffect(() => { - if ((!blockGraph && !blockHead) || isLoading || isSubgraphLoading) return - - const difference = blockHead - blockGraph - - if (difference > blockDifferenceThreshold) { - setIsGraphSynced(false) - return - } - setIsGraphSynced(true) - }, [blockGraph, blockHead, isLoading, isSubgraphLoading]) - - return { blockHead, blockGraph, isGraphSynced } -} diff --git a/src/@utils/ddo.ts b/src/@utils/ddo.ts index 10f7998e2..a6522db0a 100644 --- a/src/@utils/ddo.ts +++ b/src/@utils/ddo.ts @@ -3,18 +3,8 @@ import { FormConsumerParameter, FormPublishData } from '@components/Publish/_types' -import { - Arweave, - Asset, - ConsumerParameter, - DDO, - FileInfo, - GraphqlQuery, - Ipfs, - Service, - Smartcontract, - UrlFile -} from '@oceanprotocol/lib' +import { Arweave, FileInfo, Ipfs, UrlFile } from '@oceanprotocol/lib' +import { Asset, ConsumerParameter, DDO, Service } from '@oceanprotocol/ddo-js' import { checkJson } from './codemirror' export function isValidDid(did: string): boolean { @@ -129,27 +119,27 @@ export function normalizeFile( } as Arweave break } - case 'graphql': { - fileObj = { - type: storageType, - url: file[0]?.url || file?.url, - query: file[0]?.query || file?.query, - headers: headersProvider - } as GraphqlQuery - break - } - case 'smartcontract': { - // clean obj - fileObj = { - chainId, - type: storageType, - address: file[0]?.address || file?.address || file[0]?.url || file?.url, - abi: checkJson(file[0]?.abi || file?.abi) - ? JSON.parse(file[0]?.abi || file?.abi) - : file[0]?.abi || file?.abi - } as Smartcontract - break - } + // case 'graphql': { + // fileObj = { + // type: storageType, + // url: file[0]?.url || file?.url, + // query: file[0]?.query || file?.query, + // headers: headersProvider + // } as GraphqlQuery + // break + // } + // case 'smartcontract': { + // // clean obj + // fileObj = { + // chainId, + // type: storageType, + // address: file[0]?.address || file?.address || file[0]?.url || file?.url, + // abi: checkJson(file[0]?.abi || file?.abi) + // ? JSON.parse(file[0]?.abi || file?.abi) + // : file[0]?.abi || file?.abi + // } as Smartcontract + // break + // } default: { fileObj = { type: 'url', diff --git a/src/@utils/index.ts b/src/@utils/index.ts index 5777f65f3..c21c9e35a 100644 --- a/src/@utils/index.ts +++ b/src/@utils/index.ts @@ -1,4 +1,4 @@ -import { Asset } from '@oceanprotocol/lib' +import { Asset } from '@oceanprotocol/ddo-js' // Boolean value that will be true if we are inside a browser, false otherwise export const isBrowser = typeof window !== 'undefined' diff --git a/src/@utils/nft.ts b/src/@utils/nft.ts index a554dba60..1fe9b94c6 100644 --- a/src/@utils/nft.ts +++ b/src/@utils/nft.ts @@ -174,7 +174,7 @@ export async function setNFTMetadataAndTokenURI( external_url: externalUrl }) ).toString('base64') - const nft = new Nft(signer) + const nft = new Nft(signer, asset.chainId) // added chainID it is used in OE market // theoretically used by aquarius or provider, not implemented yet, will remain hardcoded const flags = '0x02' diff --git a/src/@utils/ocean/index.ts b/src/@utils/ocean/index.ts index a6bc10014..146ad18a1 100644 --- a/src/@utils/ocean/index.ts +++ b/src/@utils/ocean/index.ts @@ -12,12 +12,8 @@ import abiDatatoken from '@oceanprotocol/contracts/artifacts/contracts/templates */ export function sanitizeDevelopmentConfig(config: Config): Config { return { - // subgraphUri: process.env.NEXT_PUBLIC_SUBGRAPH_URI || config.subgraphUri, - // metadataCacheUri: - // process.env.NEXT_PUBLIC_METADATACACHE_URI || config.metadataCacheUri, - web3Provider: - process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL || config.web3Provider, - nodeUri: process.env.NEXT_PUBLIC_NODE_URL || config.nodeUri, + nodeUri: process.env.NEXT_PUBLIC_NODE_URI || config.nodeUri, + oceanNodeUri: process.env.NEXT_PUBLIC_PROVIDER_URL || config.oceanNodeUri, fixedRateExchangeAddress: process.env.NEXT_PUBLIC_FIXED_RATE_EXCHANGE_ADDRESS, dispenserAddress: process.env.NEXT_PUBLIC_DISPENSER_ADDRESS, @@ -49,19 +45,9 @@ export function getOceanConfig(network: string | number): Config { } // Override RPC URL for Sepolia if it's set (the reason is ocean.js supports only infura) - if ( - (network === 11155420 || network === 11155111) && - process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL - ) { - // config.nodeUri = process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL - // config.providerUri = process.env.NEXT_PUBLIC_NODE_URL - // config.metadataCacheUri = process.env.NEXT_PUBLIC_NODE_URL - // config.subgraphUri = process.env.NEXT_PUBLIC_SUBGRAPH_URI - - config.nodeUri = process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL + if (network === 11155111 && process.env.NEXT_PUBLIC_NODE_URI) { + config.nodeUri = process.env.NEXT_PUBLIC_NODE_URI // config.oceanNodeUri = process.env.NEXT_PUBLIC_NODE_URL - // config.metadataCacheUri = process.env.NEXT_PUBLIC_NODE_URL - // config.subgraphUri = process.env.NEXT_PUBLIC_NODE_URL } return config as Config diff --git a/src/@utils/subgraph.ts b/src/@utils/subgraph.ts deleted file mode 100644 index 6033796f7..000000000 --- a/src/@utils/subgraph.ts +++ /dev/null @@ -1,174 +0,0 @@ -import { gql, OperationResult, TypedDocumentNode, OperationContext } from 'urql' -import { LoggerInstance } from '@oceanprotocol/lib' -import { getUrqlClientInstance } from '@context/UrqlProvider' -import { getOceanConfig } from './ocean' -import { OrdersData_orders as OrdersData } from '../@types/subgraph/OrdersData' -import { OpcFeesQuery as OpcFeesData } from '../@types/subgraph/OpcFeesQuery' -import appConfig from '../../app.config.cjs' - -const UserTokenOrders = gql` - query OrdersData($user: String!) { - orders( - orderBy: createdTimestamp - orderDirection: desc - where: { consumer: $user } - ) { - consumer { - id - } - datatoken { - id - address - symbol - } - consumerMarketToken { - address - symbol - } - createdTimestamp - tx - } - } -` - -const OpcFeesQuery = gql` - query OpcFeesQuery($id: ID!) { - opc(id: $id) { - swapOceanFee - swapNonOceanFee - orderFee - providerFee - } - } -` - -const OpcsApprovedTokensQuery = gql` - query OpcsApprovedTokensQuery { - opcs { - approvedTokens { - address: id - symbol - name - decimals - } - } - } -` - -export function getSubgraphUri(chainId: number): string { - const config = getOceanConfig(chainId) - return config.subgraphUri -} - -export function getQueryContext(chainId: number): OperationContext { - try { - if (!appConfig.chainIdsSupported.includes(chainId)) - throw Object.assign( - new Error('network not supported, query context cancelled') - ) - - const queryContext: OperationContext = { - url: `${getSubgraphUri( - Number(chainId) - )}/subgraphs/name/oceanprotocol/ocean-subgraph`, - requestPolicy: 'network-only' - } - return queryContext - } catch (error) { - LoggerInstance.error('Get query context error: ', error.message) - } -} - -export async function fetchData( - query: TypedDocumentNode, - variables: any, - context: OperationContext -): Promise { - try { - const client = getUrqlClientInstance() - - const response = await client.query(query, variables, context).toPromise() - return response - } catch (error) { - LoggerInstance.error('Error fetchData: ', error.message) - } - return null -} - -export async function fetchDataForMultipleChains( - query: TypedDocumentNode, - variables: any, - chainIds: number[] -): Promise { - let datas: any[] = [] - try { - for (const chainId of chainIds) { - const context: OperationContext = getQueryContext(chainId) - const response = await fetchData(query, variables, context) - if (!response || response.error) continue - datas = datas.concat(response?.data) - } - return datas - } catch (error) { - LoggerInstance.error('Error fetchDataForMultipleChains: ', error.message) - } -} - -export async function getOpcFees(chainId: number) { - let opcFees - const variables = { - id: 1 - } - const context = getQueryContext(chainId) - try { - const response: OperationResult = await fetchData( - OpcFeesQuery, - variables, - context - ) - opcFees = response?.data?.opc - } catch (error) { - LoggerInstance.error('Error getOpcFees: ', error.message) - throw Error(error.message) - } - return opcFees -} - -export async function getUserTokenOrders( - accountId: string, - chainIds: number[] -): Promise { - const data: OrdersData[] = [] - const variables = { user: accountId?.toLowerCase() } - - try { - const tokenOrders = await fetchDataForMultipleChains( - UserTokenOrders, - variables, - chainIds - ) - for (let i = 0; i < tokenOrders?.length; i++) { - tokenOrders[i].orders.forEach((tokenOrder: OrdersData) => { - data.push(tokenOrder) - }) - } - - return data - } catch (error) { - LoggerInstance.error('Error getUserTokenOrders', error.message) - } -} - -export async function getOpcsApprovedTokens( - chainId: number -): Promise { - const context = getQueryContext(chainId) - - try { - const response = await fetchData(OpcsApprovedTokensQuery, null, context) - return response?.data?.opcs[0].approvedTokens - } catch (error) { - LoggerInstance.error('Error getOpcsApprovedTokens: ', error.message) - throw Error(error.message) - } -} diff --git a/src/@utils/wallet/chains.ts b/src/@utils/wallet/chains.ts index 40f816e3f..361c521fa 100644 --- a/src/@utils/wallet/chains.ts +++ b/src/@utils/wallet/chains.ts @@ -15,13 +15,13 @@ export const getSupportedChains = (chainIdsSupported: number[]): Chain[] => { const chains = supportedChains.map((chain) => { if ( (chain.id === 11155111 || chain.id === 11155420) && - process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL + process.env.NEXT_PUBLIC_NODE_URI ) { return { ...chain, rpcUrls: { - public: { http: [process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL] }, - default: { http: [process.env.NEXT_PUBLIC_SEPOLIA_RPC_URL] } + public: { http: [process.env.NEXT_PUBLIC_NODE_URI] }, + default: { http: [process.env.NEXT_PUBLIC_NODE_URI] } } } } diff --git a/src/components/@shared/AssetListTitle/index.tsx b/src/components/@shared/AssetListTitle/index.tsx index e8b705ffe..e60413083 100644 --- a/src/components/@shared/AssetListTitle/index.tsx +++ b/src/components/@shared/AssetListTitle/index.tsx @@ -3,7 +3,7 @@ import React, { ReactElement, useEffect, useState } from 'react' import { getAssetsNames } from '@utils/aquarius' import styles from './index.module.css' import axios from 'axios' -import { Asset } from '@oceanprotocol/lib' +import { Asset } from '@oceanprotocol/ddo-js' import { useMarketMetadata } from '@context/MarketMetadata' export default function AssetListTitle({ diff --git a/src/components/Asset/AssetActions/ConsumerParameters/_validation.ts b/src/components/Asset/AssetActions/ConsumerParameters/_validation.ts index 3f60af0b7..203012b07 100644 --- a/src/components/Asset/AssetActions/ConsumerParameters/_validation.ts +++ b/src/components/Asset/AssetActions/ConsumerParameters/_validation.ts @@ -1,4 +1,4 @@ -import { ConsumerParameter } from '@oceanprotocol/lib' +import { ConsumerParameter } from '@oceanprotocol/ddo-js' import * as Yup from 'yup' import { SchemaLike } from 'yup/lib/types' diff --git a/src/components/Asset/AssetActions/ConsumerParameters/index.tsx b/src/components/Asset/AssetActions/ConsumerParameters/index.tsx index ebf3b3077..e60955d9e 100644 --- a/src/components/Asset/AssetActions/ConsumerParameters/index.tsx +++ b/src/components/Asset/AssetActions/ConsumerParameters/index.tsx @@ -2,7 +2,8 @@ import React, { ReactElement, useCallback, useEffect, useState } from 'react' import FormConsumerParameters from './FormConsumerParameters' import styles from './index.module.css' import Tabs, { TabsItem } from '@shared/atoms/Tabs' -import { ConsumerParameter, UserCustomParameters } from '@oceanprotocol/lib' +import { UserCustomParameters } from '@oceanprotocol/lib' +import { ConsumerParameter } from '@oceanprotocol/ddo-js' export function parseConsumerParameterValues( formValues?: UserCustomParameters, diff --git a/src/components/Asset/AssetActions/Download/_validation.ts b/src/components/Asset/AssetActions/Download/_validation.ts index 12bfdade2..53616867f 100644 --- a/src/components/Asset/AssetActions/Download/_validation.ts +++ b/src/components/Asset/AssetActions/Download/_validation.ts @@ -1,6 +1,6 @@ import * as Yup from 'yup' import { getUserCustomParameterValidationSchema } from '../ConsumerParameters/_validation' -import { ConsumerParameter } from '@oceanprotocol/lib' +import { ConsumerParameter } from '@oceanprotocol/ddo-js' export function getDownloadValidationSchema( parameters: ConsumerParameter[] diff --git a/src/components/Asset/AssetActions/index.tsx b/src/components/Asset/AssetActions/index.tsx index b3d53ab7c..fd33f854e 100644 --- a/src/components/Asset/AssetActions/index.tsx +++ b/src/components/Asset/AssetActions/index.tsx @@ -101,21 +101,28 @@ export default function AssetActions({ // Get and set user DT balance useEffect(() => { - if (!web3Provider || !accountId || !isAssetNetwork) return + const isReady = + web3Provider && + accountId && + asset?.accessDetails?.baseToken?.address && + isAssetNetwork + + if (!isReady) return async function init() { try { const datatokenInstance = new Datatoken(web3Provider as any) const dtBalance = await datatokenInstance.balance( - asset.accessDetails?.baseToken.address, + asset.accessDetails.baseToken.address, accountId ) - console.log('DT Balance! ', dtBalance) + console.log('DT Balance!', dtBalance) setDtBalance(dtBalance) - } catch (e) { - LoggerInstance.error(e.message) + } catch (e: any) { + LoggerInstance.error('[DT Balance Error]', e.message || e) } } + init() }, [web3Provider, accountId, asset, isAssetNetwork]) diff --git a/src/components/Asset/AssetContent/MetaMain/MetaAsset.tsx b/src/components/Asset/AssetContent/MetaMain/MetaAsset.tsx index d4f160622..185698546 100644 --- a/src/components/Asset/AssetContent/MetaMain/MetaAsset.tsx +++ b/src/components/Asset/AssetContent/MetaMain/MetaAsset.tsx @@ -1,11 +1,12 @@ import { useAsset } from '@context/Asset' -import { Asset } from '@oceanprotocol/lib' +import { Asset } from '@oceanprotocol/ddo-js' import AddToken from '@shared/AddToken' import ExplorerLink from '@shared/ExplorerLink' import Publisher from '@shared/Publisher' import React, { ReactElement } from 'react' import { useAccount } from 'wagmi' import styles from './MetaAsset.module.css' +import { getOceanConfig } from '@utils/ocean' export default function MetaAsset({ asset, @@ -14,6 +15,8 @@ export default function MetaAsset({ asset: AssetExtended isBlockscoutExplorer: boolean }): ReactElement { + const oceanConfig = getOceanConfig(11155111) // replace chainId with actual id + const symbol = oceanConfig.oceanTokenSymbol const { isAssetNetwork } = useAsset() const { connector: activeConnector } = useAccount() @@ -22,7 +25,7 @@ export default function MetaAsset({ return (
- Owned by + Owned by diff --git a/src/components/Asset/AssetContent/MetaMain/MetaInfo.tsx b/src/components/Asset/AssetContent/MetaMain/MetaInfo.tsx index 64b6bd1af..9eebd5d98 100644 --- a/src/components/Asset/AssetContent/MetaMain/MetaInfo.tsx +++ b/src/components/Asset/AssetContent/MetaMain/MetaInfo.tsx @@ -12,7 +12,7 @@ export default function MetaInfo({ nftPublisher: string }): ReactElement { const accessType = 'access' - const nftOwner = asset?.nft?.owner + const nftOwner = asset?.indexedMetadata?.nft?.owner return (
diff --git a/src/components/Asset/AssetContent/MetaSecondary.tsx b/src/components/Asset/AssetContent/MetaSecondary.tsx index e3b58e2d9..f2fe941d9 100644 --- a/src/components/Asset/AssetContent/MetaSecondary.tsx +++ b/src/components/Asset/AssetContent/MetaSecondary.tsx @@ -3,7 +3,7 @@ import MetaItem from './MetaItem' import styles from './MetaSecondary.module.css' import Tags from '@shared/atoms/Tags' import Button from '@shared/atoms/Button' -import { Asset } from '@oceanprotocol/lib' +import { Asset } from '@oceanprotocol/ddo-js' const SampleButton = ({ url }: { url: string }) => ( diff --git a/src/components/Search/utils.ts b/src/components/Search/utils.ts index c2647f2a0..834f1c3e9 100644 --- a/src/components/Search/utils.ts +++ b/src/components/Search/utils.ts @@ -128,7 +128,7 @@ export function getSearchQuery( nestedQuery, esPaginationOptions: { from: page || 0, - size: Number(offset) || 21 + size: Number(offset) || 1000 }, sortOptions: { sortBy: sort, sortDirection }, filters From ae78001fd0aa50a66659dffae17a2a5c80e282f0 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Thu, 19 Jun 2025 15:59:51 +0300 Subject: [PATCH 41/60] commenting publishers profiles on home page --- src/components/Home/index.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Home/index.tsx b/src/components/Home/index.tsx index e49e6da0b..e80bf182e 100644 --- a/src/components/Home/index.tsx +++ b/src/components/Home/index.tsx @@ -75,7 +75,7 @@ export default function HomePage(): ReactElement { {/* */} - + {/* */} Date: Thu, 19 Jun 2025 16:47:24 +0300 Subject: [PATCH 42/60] fix: nativetoken balance, cleaning console.log --- app.config.cjs | 2 ++ chains.config.cjs | 6 ++-- src/@hooks/useBalance.tsx | 38 +++++++++++++++------ src/@utils/ocean/index.ts | 1 + src/components/Footer/MarketStats/Total.tsx | 1 - src/components/Header/Wallet/Details.tsx | 4 +-- 6 files changed, 36 insertions(+), 16 deletions(-) diff --git a/app.config.cjs b/app.config.cjs index e504b7eaf..d45b6949b 100644 --- a/app.config.cjs +++ b/app.config.cjs @@ -18,6 +18,8 @@ module.exports = { allowDynamicPricing: process.env.NEXT_PUBLIC_ALLOW_DYNAMIC_PRICING || 'false', infuraProjectId: process.env.NEXT_PUBLIC_INFURA_PROJECT_ID || 'xxx', + oceanTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS, + oceanTokenSymbol: process.env.NEXT_PUBLIC_OCEAN_TOKEN_SYMBOL || 'OCEAN', defaultDatatokenCap: '115792089237316195423570985008687907853269984665640564039457', defaultDatatokenTemplateIndex: 2, diff --git a/chains.config.cjs b/chains.config.cjs index 0addde07c..7793ca4c7 100644 --- a/chains.config.cjs +++ b/chains.config.cjs @@ -6,9 +6,9 @@ const chains = [ chainId: 11155111, isDefault: false, isCustom: true, - network: 'pontusx-devnet', + network: 'Eth Sepolia', oceanTokenSymbol: 'OCEAN', - oceanTokenAddress: '0xdF171F74a8d3f4e2A789A566Dce9Fa4945196112', + oceanTokenAddress: '0x1B083D8584dd3e6Ff37d04a6e7e82b5F622f3985', nftFactoryAddress: '0xFdC4a5DEaCDfc6D82F66e894539461a269900E13', fixedRateExchangeAddress: '0x8372715D834d286c9aECE1AcD51Da5755B32D505', dispenserAddress: '0x5461b629E01f72E0A468931A36e039Eea394f9eA', @@ -31,7 +31,7 @@ const chains = [ isCustom: true, network: 'pontusx-testnet', oceanTokenSymbol: 'OCEAN', - oceanTokenAddress: '0x5B190F9E2E721f8c811E4d584383E3d57b865C69', + oceanTokenAddress: '0x1B083D8584dd3e6Ff37d04a6e7e82b5F622f3985', nftFactoryAddress: '0x2C4d542ff791890D9290Eec89C9348A4891A6Fd2', fixedRateExchangeAddress: '0xcE0F39abB6DA2aE4d072DA78FA0A711cBB62764E', dispenserAddress: '0xaB5B68F88Bc881CAA427007559E9bbF8818026dE', diff --git a/src/@hooks/useBalance.tsx b/src/@hooks/useBalance.tsx index 2c624c6ac..a95ea3579 100644 --- a/src/@hooks/useBalance.tsx +++ b/src/@hooks/useBalance.tsx @@ -33,8 +33,15 @@ function useBalance(): BalanceProviderValue { !address || !chain?.id || !web3provider - ) + ) { + LoggerInstance.warn('[useBalance] Missing required data:', { + balanceNativeToken: balanceNativeToken?.formatted, + address, + chainId: chain?.id, + web3provider: !!web3provider + }) return + } try { const userBalance = balanceNativeToken?.formatted @@ -45,19 +52,30 @@ function useBalance(): BalanceProviderValue { await Promise.all( approvedBaseTokens.map(async (token) => { const { address: tokenAddress, decimals, symbol } = token - const tokenBalance = await getTokenBalance( - address, - decimals, - tokenAddress, - web3provider - ) - newBalance[symbol.toLocaleLowerCase()] = tokenBalance + try { + const tokenBalance = await getTokenBalance( + address, + decimals, + tokenAddress, + web3provider + ) + newBalance[symbol.toLocaleLowerCase()] = tokenBalance + } catch (error) { + LoggerInstance.error( + '[useBalance] Error fetching token balance:', + { + symbol, + tokenAddress, + error: error.message + } + ) + } }) ) + } else { + LoggerInstance.warn('[useBalance] No approved base tokens found') } - setBalance(newBalance) - LoggerInstance.log('[useBalance] Balance: ', newBalance) } catch (error) { LoggerInstance.error('[useBalance] Error: ', error.message) } diff --git a/src/@utils/ocean/index.ts b/src/@utils/ocean/index.ts index 146ad18a1..160cf69eb 100644 --- a/src/@utils/ocean/index.ts +++ b/src/@utils/ocean/index.ts @@ -18,6 +18,7 @@ export function sanitizeDevelopmentConfig(config: Config): Config { process.env.NEXT_PUBLIC_FIXED_RATE_EXCHANGE_ADDRESS, dispenserAddress: process.env.NEXT_PUBLIC_DISPENSER_ADDRESS, oceanTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS, + oceanTokenSymbol: process.env.NEXT_PUBLIC_OCEAN_TOKEN_SYMBOL || 'OCEAN', nftFactoryAddress: process.env.NEXT_PUBLIC_NFT_FACTORY_ADDRESS, routerFactoryAddress: process.env.NEXT_PUBLIC_ROUTER_FACTORY_ADDRESS, accessListFactory: process.env.NEXT_PUBLIC_ACCESS_LIST_FACTORY_ADDRESS diff --git a/src/components/Footer/MarketStats/Total.tsx b/src/components/Footer/MarketStats/Total.tsx index c6b54ed83..97fa1ba06 100644 --- a/src/components/Footer/MarketStats/Total.tsx +++ b/src/components/Footer/MarketStats/Total.tsx @@ -33,7 +33,6 @@ export default function MarketStatsTotal({ setLoading(true) const result = await queryStats(query, newCancelToken()) - console.log('Query Results ', result) setTotalOrders(result.totalOrders) setTotalAssets(result.pagedAssets.totalResults) setLoading(false) diff --git a/src/components/Header/Wallet/Details.tsx b/src/components/Header/Wallet/Details.tsx index cb14579bf..d241176de 100644 --- a/src/components/Header/Wallet/Details.tsx +++ b/src/components/Header/Wallet/Details.tsx @@ -57,11 +57,11 @@ export default function Details(): ReactElement { significantFigures: 4 })} - + /> */} ))} From df735cd4037892d22628083f605ccf9daa1878f6 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Fri, 20 Jun 2025 17:30:18 +0300 Subject: [PATCH 43/60] implemented topPublishers : Fixes in profile and tags --- src/@utils/aquarius/index.ts | 72 ++++++++++++++++++------ src/components/Home/index.tsx | 2 +- src/components/Publish/Preview/index.tsx | 1 - 3 files changed, 55 insertions(+), 20 deletions(-) diff --git a/src/@utils/aquarius/index.ts b/src/@utils/aquarius/index.ts index 8f0f610b9..25c54aac1 100644 --- a/src/@utils/aquarius/index.ts +++ b/src/@utils/aquarius/index.ts @@ -130,22 +130,21 @@ export function generateBaseQuery( export function transformQueryResult( queryResult: any, from = 0, - size = 21 + size = Number.MAX_SAFE_INTEGER ): PagedAssets { - const rawResults = queryResult[0] || [] - const aggregations = queryResult[1] || {} + const rawResults = (queryResult || []).flat() + const aggregations = queryResult || {} - const pagedResults = rawResults.slice(from, from + size) + const effectiveSize = Math.max(size, rawResults.length + 1) + // const pagedResults = rawResults.slice(from, from + effectiveSize) - const result: PagedAssets = { - results: pagedResults, - page: from ? Math.floor(from / size) + 1 : 1, - totalPages: Math.ceil(rawResults.length / size), + return { + results: rawResults, + page: from ? Math.floor(from / effectiveSize) + 1 : 1, + totalPages: Math.ceil(rawResults.length / effectiveSize), totalResults: rawResults.length, aggregations } - - return result } export async function queryMetadata( @@ -178,6 +177,7 @@ export async function queryMetadata( } } } + export async function queryMetadataTags( query: SearchQuery, cancelToken: CancelToken @@ -212,6 +212,9 @@ export async function queryMetadataTags( asset.metadata && Array.isArray(asset.metadata.tags) && asset.metadata.tags.length > 0 + // Check if asset has sales (orders > 0) + const hasSales = asset.indexedMetadata?.stats?.[0]?.orders > 0 + if (!hasValidTags) { LoggerInstance.warn( `Asset skipped due to invalid tags: ${JSON.stringify({ @@ -220,8 +223,17 @@ export async function queryMetadataTags( metadata: asset.metadata })}` ) + } else if (!hasSales) { + LoggerInstance.warn( + `Asset skipped due to zero sales: ${JSON.stringify({ + id: asset.id, + chainId: asset.chainId, + orders: asset.indexedMetadata?.stats?.[0]?.orders + })}` + ) } - return hasValidTags + + return hasValidTags && hasSales }) .flatMap((asset: any) => asset.metadata.tags) ) @@ -415,7 +427,7 @@ export async function getPublishedAssets( ignoreState, esPaginationOptions: { from: page || 0, - size: 9 + size: 1000 } } as BaseQueryParams @@ -469,7 +481,7 @@ async function getTopPublishers( }, esPaginationOptions: { from: (Number(page) - 1 || 0) * 9, - size: 9 + size: 1000 } } as BaseQueryParams @@ -477,7 +489,6 @@ async function getTopPublishers( try { const result = await queryMetadata(query, cancelToken) - console.log('Result in Query call', result) return result } catch (error) { if (axios.isCancel(error)) { @@ -496,7 +507,7 @@ export async function getTopAssetsPublishers( try { const result = await getTopPublishers(chainIds, null) - console.log('Publisher result', result) + if (result.aggregations?.topPublishers?.buckets) { const { topPublishers } = result.aggregations for (const bucket of topPublishers.buckets) { @@ -507,12 +518,35 @@ export async function getTopAssetsPublishers( } } else if (result.results && Array.isArray(result.results)) { const publisherMap: { [key: string]: number } = {} + for (const asset of result.results) { - const publisherId = asset.owner || asset.nftAddress || asset.id - if (publisherId) { - publisherMap[publisherId] = (publisherMap[publisherId] || 0) + 1 + // Extract owner from indexedMetadata.nft.owner + const owner = asset.indexedMetadata?.nft?.owner + if (!owner) { + console.warn('Asset missing owner:', { + id: asset.id, + nftAddress: asset.nftAddress, + indexedMetadata: asset.indexedMetadata + }) + continue } + + // Extract orders from indexedMetadata.stats[0].orders + const orders = asset.indexedMetadata?.stats?.[0]?.orders || 0 + if (typeof orders !== 'number') { + console.warn('Invalid orders value for asset:', { + id: asset.id, + owner, + orders: asset.indexedMetadata?.stats?.[0]?.orders + }) + continue + } + + // Accumulate sales for the owner + publisherMap[owner] = (publisherMap[owner] || 0) + orders } + + // Convert publisherMap to UserSales array for (const [id, totalSales] of Object.entries(publisherMap)) { publishers.push({ id, totalSales }) } @@ -520,6 +554,8 @@ export async function getTopAssetsPublishers( console.warn('Unexpected response format from getTopPublishers:', result) return [] } + + // Sort by totalSales (descending) and take top nrItems publishers.sort((a, b) => b.totalSales - a.totalSales) return publishers.slice(0, nrItems) } catch (error) { diff --git a/src/components/Home/index.tsx b/src/components/Home/index.tsx index e80bf182e..e49e6da0b 100644 --- a/src/components/Home/index.tsx +++ b/src/components/Home/index.tsx @@ -75,7 +75,7 @@ export default function HomePage(): ReactElement { {/* */} - {/* */} + () const { values } = useFormikContext() - console.log('values ', values) useEffect(() => { async function makeDdo() { From 14358e384fe4479996a17c05a6e90e8bf7144eac Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Mon, 23 Jun 2025 12:58:26 +0300 Subject: [PATCH 44/60] fixed pricing loading in AssetAction --- .../Asset/AssetActions/Download/index.tsx | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/src/components/Asset/AssetActions/Download/index.tsx b/src/components/Asset/AssetActions/Download/index.tsx index 34a619c28..9a1c8a32c 100644 --- a/src/components/Asset/AssetActions/Download/index.tsx +++ b/src/components/Asset/AssetActions/Download/index.tsx @@ -233,6 +233,7 @@ export default function Download({ const AssetAction = ({ asset }: { asset: AssetExtended }) => { const { isValid } = useFormikContext() + const isPricingLoaded = !isPriceLoading && orderPriceAndFees return (
@@ -242,23 +243,21 @@ export default function Download({ state="info" text={`The publisher temporarily disabled ordering for this asset`} /> + ) : !isPricingLoaded ? ( + + ) : isUnsupportedPricing ? ( + ) : ( <> - {isUnsupportedPricing ? ( - - ) : ( - <> - {asset && } - {!isInPurgatory && ( -
- -
- )} - + {asset && } + {!isInPurgatory && ( +
+ +
)} )} From 82e7b77db58bf45d737e9d6a4cf6ab0bde0c2c57 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Tue, 24 Jun 2025 10:35:46 +0300 Subject: [PATCH 45/60] fixed: fetching price in AssetAction --- src/@utils/accessDetailsAndPricing.ts | 5 +-- .../@shared/DirectMessages/DmButton.tsx | 3 +- src/components/@shared/Price/PriceUnit.tsx | 34 ++++++++++++------- src/components/@shared/Price/index.tsx | 15 +++++++- .../Asset/AssetActions/Download/index.tsx | 16 +++++++-- 5 files changed, 52 insertions(+), 21 deletions(-) diff --git a/src/@utils/accessDetailsAndPricing.ts b/src/@utils/accessDetailsAndPricing.ts index 60f0c0d3c..d56d7044f 100644 --- a/src/@utils/accessDetailsAndPricing.ts +++ b/src/@utils/accessDetailsAndPricing.ts @@ -242,13 +242,14 @@ export async function getAccessDetails( export function getAvailablePrice(accessDetails: AccessDetails): AssetPrice { const price: AssetPrice = { type: 'fixedrate', - price: accessDetails?.price ? Number(accessDetails.price).toString() : '0', + price: Number(accessDetails?.price).toString(), token: accessDetails?.baseToken?.symbol || '', contract: accessDetails?.baseToken?.address || '' } - if (!accessDetails?.price) { + if (!accessDetails || accessDetails.price === undefined) { console.warn('Missing price in accessDetails:', accessDetails) + return null } return price diff --git a/src/components/@shared/DirectMessages/DmButton.tsx b/src/components/@shared/DirectMessages/DmButton.tsx index 461f9a4e0..0939129c7 100644 --- a/src/components/@shared/DirectMessages/DmButton.tsx +++ b/src/components/@shared/DirectMessages/DmButton.tsx @@ -1,7 +1,6 @@ import React, { useEffect, useState } from 'react' import Button from '@shared/atoms/Button' -import styles from './DmButton.module.css' -import { useAccount, useConnect } from 'wagmi' +import { useAccount } from 'wagmi' import { useOrbis } from '@context/DirectMessages' export default function DmButton({ diff --git a/src/components/@shared/Price/PriceUnit.tsx b/src/components/@shared/Price/PriceUnit.tsx index 7b551f84e..1c8149def 100644 --- a/src/components/@shared/Price/PriceUnit.tsx +++ b/src/components/@shared/Price/PriceUnit.tsx @@ -21,21 +21,29 @@ export default function PriceUnit({ }): ReactElement { const { locale } = useUserPreferences() + if (price === 0) { + return ( +
Free
+ ) + } + + if (isNaN(price)) { + return ( +
+ Invalid Price +
+ ) + } + return (
- {price === 0 ? ( -
Free
- ) : !price || Number.isNaN(price) ? ( -
-
- ) : ( - <> -
- {formatNumber(price, locale, decimals)} - {symbol} -
- {conversion && } - - )} + <> +
+ {formatNumber(price, locale, decimals)} + {symbol} +
+ {conversion && } +
) } diff --git a/src/components/@shared/Price/index.tsx b/src/components/@shared/Price/index.tsx index 577ff0969..e6010458f 100644 --- a/src/components/@shared/Price/index.tsx +++ b/src/components/@shared/Price/index.tsx @@ -2,6 +2,7 @@ import React, { ReactElement } from 'react' import { AssetPrice } from '@oceanprotocol/ddo-js' import PriceUnit from './PriceUnit' import { getOceanConfig } from '@utils/ocean' +import Loader from '@shared/atoms/Loader' export default function Price({ price, @@ -21,9 +22,21 @@ export default function Price({ const symbol = oceanConfig.oceanTokenSymbol if (!price && !orderPriceAndFees) return + if (!price || price.price === undefined || price.price === null) { + return + } + + const rawPrice = price?.price + console.log('Raw price', rawPrice) + const parsedPrice = + rawPrice === null || rawPrice === undefined + ? null + : isNaN(Number(rawPrice)) + ? NaN + : Number(rawPrice) return ( () const [retry, setRetry] = useState(false) - const price: AssetPrice = getAvailablePrice(accessDetails) const isUnsupportedPricing = !asset?.accessDetails || !asset.services.length || @@ -80,6 +80,10 @@ export default function Download({ (asset?.accessDetails?.type === 'fixed' && !asset?.accessDetails?.baseToken?.symbol) + useEffect(() => { + const price: AssetPrice = getAvailablePrice(accessDetails) + setAssetPrice(price) + }, [accessDetails]) useEffect(() => { Number(asset?.indexedMetadata?.nft.state) === 4 && setIsOrderDisabled(true) }, [asset?.indexedMetadata?.nft.state]) @@ -233,7 +237,9 @@ export default function Download({ const AssetAction = ({ asset }: { asset: AssetExtended }) => { const { isValid } = useFormikContext() - const isPricingLoaded = !isPriceLoading && orderPriceAndFees + const isPricingLoaded = + asset?.accessDetails?.type === 'free' || + (!isPriceLoading && orderPriceAndFees) return (
@@ -294,7 +300,11 @@ export default function Download({ ) : ( Date: Wed, 25 Jun 2025 09:46:31 +0300 Subject: [PATCH 46/60] price sort fix --- src/@types/aquarius/SearchQuery.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/@types/aquarius/SearchQuery.ts b/src/@types/aquarius/SearchQuery.ts index 18cbf1ea6..6b595d5a6 100644 --- a/src/@types/aquarius/SearchQuery.ts +++ b/src/@types/aquarius/SearchQuery.ts @@ -9,7 +9,7 @@ export enum SortTermOptions { Relevance = '_score', Orders = 'indexedMetadata.stats.orders', Allocated = 'indexedMetadata.stats.allocated', - Price = 'indexedMetadata.stats.prices.price', + Price = 'indexedMetadata.stats.prices.price.keyword', Sales = 'indexedMetadata.events.block' } From 58cab858019e6692ad678a6afe1ac18a3b437f8e Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Wed, 25 Jun 2025 10:38:08 +0300 Subject: [PATCH 47/60] AssetAction Page optimisation --- .../Asset/AssetActions/Download/index.tsx | 254 +++++++++--------- src/components/Asset/AssetActions/index.tsx | 187 +++++++------ 2 files changed, 230 insertions(+), 211 deletions(-) diff --git a/src/components/Asset/AssetActions/Download/index.tsx b/src/components/Asset/AssetActions/Download/index.tsx index 9a1314d7c..a180301df 100644 --- a/src/components/Asset/AssetActions/Download/index.tsx +++ b/src/components/Asset/AssetActions/Download/index.tsx @@ -1,4 +1,4 @@ -import React, { ReactElement, useEffect, useState } from 'react' +import React, { ReactElement, useEffect, useState, useCallback } from 'react' import FileIcon from '@shared/FileIcon' import Price from '@shared/Price' import { useAsset } from '@context/Asset' @@ -11,7 +11,6 @@ import { UserCustomParameters, ZERO_ADDRESS } from '@oceanprotocol/lib' -import { AssetPrice, Service } from '@oceanprotocol/ddo-js' import { order } from '@utils/order' import { downloadFile } from '@utils/provider' import { getOrderFeedback } from '@utils/feedback' @@ -33,25 +32,23 @@ import { Form, Formik, useFormikContext } from 'formik' import { getDownloadValidationSchema } from './_validation' import { getDefaultValues } from '../ConsumerParameters/FormConsumerParameters' -export default function Download({ +// Cache for pricing data +const priceCache = new Map() + +export default React.memo(function Download({ asset, file, isBalanceSufficient, dtBalance, fileIsLoading, - consumableFeedback, - service, accessDetails }: { asset: AssetExtended - service?: Service - accessDetails?: AccessDetails - serviceIndex?: number file: FileInfo isBalanceSufficient: boolean dtBalance: string fileIsLoading?: boolean - consumableFeedback?: string + accessDetails?: AccessDetails }): ReactElement { const { address: accountId, isConnected } = useAccount() const { data: signer } = useSigner() @@ -68,148 +65,158 @@ export default function Download({ const [isOwned, setIsOwned] = useState(false) const [validOrderTx, setValidOrderTx] = useState('') const [isOrderDisabled, setIsOrderDisabled] = useState(false) - const [assetPrice, setAssetPrice] = useState(null) + const [assetPrice, setAssetPrice] = useState(null) const [orderPriceAndFees, setOrderPriceAndFees] = useState() const [retry, setRetry] = useState(false) const isUnsupportedPricing = - !asset?.accessDetails || + !accessDetails || !asset.services.length || - asset?.accessDetails?.type === 'NOT_SUPPORTED' || - (asset?.accessDetails?.type === 'fixed' && - !asset?.accessDetails?.baseToken?.symbol) - - useEffect(() => { - const price: AssetPrice = getAvailablePrice(accessDetails) - setAssetPrice(price) - }, [accessDetails]) - useEffect(() => { - Number(asset?.indexedMetadata?.nft.state) === 4 && setIsOrderDisabled(true) - }, [asset?.indexedMetadata?.nft.state]) + accessDetails?.type === 'NOT_SUPPORTED' || + (accessDetails?.type === 'fixed' && !accessDetails?.baseToken?.symbol) - useEffect(() => { - if (isUnsupportedPricing) return + // Memoized price fetching + const fetchPriceAndFees = useCallback(async () => { + if ( + isUnsupportedPricing || + accessDetails.addressOrId === ZERO_ADDRESS || + accessDetails.type === 'free' + ) + return - setIsOwned(asset?.accessDetails?.isOwned || false) - setValidOrderTx(asset?.accessDetails?.validOrderTx || '') + const cacheKey = `${asset.id}-${accessDetails.addressOrId}` + if (priceCache.has(cacheKey)) { + setOrderPriceAndFees(priceCache.get(cacheKey)) + return + } - // get full price and fees - async function init() { - if ( - asset.accessDetails.addressOrId === ZERO_ADDRESS || - asset.accessDetails.type === 'free' + try { + setIsPriceLoading(true) + const _orderPriceAndFees = await getOrderPriceAndFees( + asset, + asset.services[0], + accessDetails, + ZERO_ADDRESS ) - return - - try { - !orderPriceAndFees && setIsPriceLoading(true) - const _orderPriceAndFees = await getOrderPriceAndFees( - asset, - service || asset.services[0], - accessDetails, - ZERO_ADDRESS - ) + if (isMounted()) { setOrderPriceAndFees(_orderPriceAndFees) - !orderPriceAndFees && setIsPriceLoading(false) - } catch (error) { - LoggerInstance.error('getOrderPriceAndFees', error) - setIsPriceLoading(false) + priceCache.set(cacheKey, _orderPriceAndFees) } + } catch (error) { + LoggerInstance.error('getOrderPriceAndFees', error) + } finally { + if (isMounted()) setIsPriceLoading(false) } + }, [accessDetails, isUnsupportedPricing, isMounted]) - if (!orderPriceAndFees) init() + // Initialize pricing and ownership + useEffect(() => { + if (isUnsupportedPricing) return - /** - * we listen to the assets' changes to get the most updated price - * based on the asset and the poolData's information. - * Not adding isLoading and getOpcFeeForToken because we set these here. It is a compromise - */ - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [asset, getOpcFeeForToken, isUnsupportedPricing]) + setAssetPrice(getAvailablePrice(accessDetails)) + setIsOwned(accessDetails?.isOwned || false) + setValidOrderTx(accessDetails?.validOrderTx || '') + setIsOrderDisabled(Number(asset?.indexedMetadata?.nft.state) === 4) + fetchPriceAndFees() + }, [ + accessDetails, + asset?.indexedMetadata?.nft.state, + isUnsupportedPricing, + fetchPriceAndFees + ]) + + // Update datatoken status useEffect(() => { setHasDatatoken(Number(dtBalance) >= 1) }, [dtBalance]) + // Update disabled state useEffect(() => { - if ( - (asset?.accessDetails?.type === 'fixed' && !orderPriceAndFees) || - !isMounted || - !accountId || - isUnsupportedPricing - ) - return + if (isUnsupportedPricing || !isMounted || !accountId) return - /** - * disabled in these cases: - * - if the asset is not purchasable - * - if the user is on the wrong network - * - if user balance is not sufficient - * - if user has no datatokens - */ const isDisabled = - !asset?.accessDetails.isPurchasable || + !accessDetails?.isPurchasable || !isAssetNetwork || ((!isBalanceSufficient || !isAssetNetwork) && !isOwned && !hasDatatoken) - setIsDisabled(isDisabled) + if (isMounted()) setIsDisabled(isDisabled) }, [ isMounted, - asset?.accessDetails, isBalanceSufficient, isAssetNetwork, hasDatatoken, accountId, isOwned, - isUnsupportedPricing, - orderPriceAndFees + isUnsupportedPricing ]) - async function handleOrderOrDownload(dataParams?: UserCustomParameters) { - setIsLoading(true) - setRetry(false) - try { - if (isOwned) { - setStatusText( - getOrderFeedback( - asset.accessDetails.baseToken?.symbol, - asset.accessDetails.datatoken?.symbol - )[3] - ) + // Handle order or download with retry logic + const handleOrderOrDownload = useCallback( + async (dataParams?: UserCustomParameters, attempt = 1, maxAttempts = 3) => { + setIsLoading(true) + setRetry(false) - await downloadFile(signer, asset, accountId, validOrderTx, dataParams) - } else { - setStatusText( - getOrderFeedback( - asset.accessDetails.baseToken?.symbol, - asset.accessDetails.datatoken?.symbol - )[asset.accessDetails.type === 'fixed' ? 2 : 1] - ) - const orderTx = await order( - signer, - asset, - orderPriceAndFees, - accountId, - hasDatatoken - ) - const tx = await orderTx.wait() - if (!tx) { - throw new Error() + try { + if (isOwned) { + setStatusText( + getOrderFeedback( + accessDetails.baseToken?.symbol, + accessDetails.datatoken?.symbol + )[3] + ) + await downloadFile(signer, asset, accountId, validOrderTx, dataParams) + } else { + setStatusText( + getOrderFeedback( + accessDetails.baseToken?.symbol, + accessDetails.datatoken?.symbol + )[accessDetails.type === 'fixed' ? 2 : 1] + ) + const orderTx = await order( + signer, + asset, + orderPriceAndFees, + accountId, + hasDatatoken + ) + const tx = await orderTx.wait() + if (!tx) throw new Error() + if (isMounted()) { + setIsOwned(true) + setValidOrderTx(tx.transactionHash) + } + } + } catch (error) { + LoggerInstance.error(error) + if (attempt < maxAttempts) { + const delay = Math.pow(2, attempt) * 1000 // Exponential backoff + await new Promise((resolve) => setTimeout(resolve, delay)) + return handleOrderOrDownload(dataParams, attempt + 1, maxAttempts) } - setIsOwned(true) - setValidOrderTx(tx.transactionHash) + setRetry(true) + toast.error( + isOwned + ? 'Failed to download file!' + : 'An error occurred, please retry.' + ) + } finally { + if (isMounted()) setIsLoading(false) } - } catch (error) { - LoggerInstance.error(error) - setRetry(true) - const message = isOwned - ? 'Failed to download file!' - : 'An error occurred, please retry. Check console for more information.' - toast.error(message) - } - setIsLoading(false) - } + }, + [ + isOwned, + accessDetails, + signer, + asset, + accountId, + validOrderTx, + orderPriceAndFees, + hasDatatoken, + isMounted + ] + ) const PurchaseButton = ({ isValid }: { isValid?: boolean }) => ( { const { isValid } = useFormikContext() const isPricingLoaded = - asset?.accessDetails?.type === 'free' || - (!isPriceLoading && orderPriceAndFees) + accessDetails?.type === 'free' || (!isPriceLoading && orderPriceAndFees) return (
@@ -259,7 +265,7 @@ export default function Download({ /> ) : ( <> - {asset && } + {!isInPurgatory && (
@@ -300,11 +306,7 @@ export default function Download({ ) : ( ) -} +}) diff --git a/src/components/Asset/AssetActions/index.tsx b/src/components/Asset/AssetActions/index.tsx index a47edfa84..9ca5d03a2 100644 --- a/src/components/Asset/AssetActions/index.tsx +++ b/src/components/Asset/AssetActions/index.tsx @@ -1,4 +1,10 @@ -import React, { ReactElement, useState, useEffect } from 'react' +import React, { + ReactElement, + useState, + useEffect, + useCallback, + useMemo +} from 'react' import Download from './Download' import { FileInfo, LoggerInstance, Datatoken } from '@oceanprotocol/lib' import { compareAsBN } from '@utils/numbers' @@ -15,7 +21,10 @@ import AssetStats from './AssetStats' import { useAccount, useProvider, useNetwork } from 'wagmi' import useBalance from '@hooks/useBalance' -export default function AssetActions({ +// Simple in-memory cache for file metadata +const fileMetadataCache = new Map() + +export default React.memo(function AssetActions({ asset }: { asset: AssetExtended @@ -27,106 +36,113 @@ export default function AssetActions({ const { isAssetNetwork } = useAsset() const newCancelToken = useCancelToken() const isMounted = useIsMounted() - - // TODO: using this for the publish preview works fine, but produces a console warning - // on asset details page as there is no formik context there: - // Warning: Formik context is undefined, please verify you are calling useFormikContext() - // as child of a component. - const formikState = useFormikContext() + const formikValues = useFormikContext() const [isBalanceSufficient, setIsBalanceSufficient] = useState() const [dtBalance, setDtBalance] = useState() const [fileMetadata, setFileMetadata] = useState() const [fileIsLoading, setFileIsLoading] = useState(false) - // Get and set file info - useEffect(() => { + // Memoized file info initialization + const initFileInfo = useCallback(async () => { + const cacheKey = `${asset?.id}-${asset?.services[0]?.id}` + if (fileMetadataCache.has(cacheKey)) { + setFileMetadata(fileMetadataCache.get(cacheKey)) + return + } + const oceanConfig = getOceanConfig(asset?.chainId) if (!oceanConfig) return - async function initFileInfo() { - setFileIsLoading(true) - const providerUrl = - formikState?.values?.services[0].providerUrl.url || - asset?.services[0]?.serviceEndpoint - - const storageType = formikState?.values?.services - ? formikState?.values?.services[0].files[0].type - : null - - // TODO: replace 'any' with correct typing - const file = formikState?.values?.services[0].files[0] as any - const query = file?.query || undefined - const abi = file?.abi || undefined - const headers = file?.headers || undefined - const method = file?.method || undefined - - try { - const fileInfoResponse = formikState?.values?.services?.[0].files?.[0] - .url - ? await getFileInfo( - formikState?.values?.services?.[0].files?.[0].url, - providerUrl, - storageType, - query, - headers, - abi, - chain?.id, - method - ) - : await getFileDidInfo(asset?.id, asset?.services[0]?.id, providerUrl) - - fileInfoResponse && setFileMetadata(fileInfoResponse[0]) - - // set the content type in the Dataset Schema + setFileIsLoading(true) + const providerUrl = + formikValues?.values.services[0].providerUrl.url || + asset?.services[0]?.serviceEndpoint + + const storageType = formikValues?.values.services + ? formikValues?.values.services[0].files[0].type + : null + const file = formikValues?.values.services[0].files[0] as any + const query = file?.query || undefined + const abi = file?.abi || undefined + const headers = file?.headers || undefined + const method = file?.method || undefined + + try { + const fileInfoResponse = formikValues?.values.services?.[0].files?.[0].url + ? await getFileInfo( + formikValues?.values.services?.[0].files?.[0].url, + providerUrl, + storageType, + query, + headers, + abi, + chain?.id, + method + ) + : await getFileDidInfo(asset?.id, asset?.services[0]?.id, providerUrl) + + if (fileInfoResponse && isMounted()) { + setFileMetadata(fileInfoResponse[0]) + fileMetadataCache.set(cacheKey, fileInfoResponse[0]) + + // Update dataset schema const datasetSchema = document.scripts?.namedItem('datasetSchema') if (datasetSchema) { const datasetSchemaJSON = JSON.parse(datasetSchema.innerText) if (datasetSchemaJSON?.distribution[0]['@type'] === 'DataDownload') { - const contentType = fileInfoResponse[0]?.contentType - datasetSchemaJSON.distribution[0].encodingFormat = contentType + datasetSchemaJSON.distribution[0].encodingFormat = + fileInfoResponse[0]?.contentType datasetSchema.innerText = JSON.stringify(datasetSchemaJSON) } } - - setFileIsLoading(false) - } catch (error) { - setFileIsLoading(false) - LoggerInstance.error(error.message) } + } catch (error) { + LoggerInstance.error(error.message) + } finally { + if (isMounted()) setFileIsLoading(false) } - initFileInfo() - }, [asset, isMounted, newCancelToken, formikState?.values?.services]) + }, [asset, formikValues, chain?.id, newCancelToken, isMounted]) - // Get and set user DT balance - useEffect(() => { - const isReady = - web3Provider && - accountId && - asset?.accessDetails?.baseToken?.address && - isAssetNetwork - - if (!isReady) return - - async function init() { - try { - const datatokenInstance = new Datatoken(web3Provider as any) - const dtBalance = await datatokenInstance.balance( - asset.accessDetails.baseToken.address, - accountId - ) - setDtBalance(dtBalance) - } catch (e: any) { - LoggerInstance.error('[DT Balance Error]', e.message || e) - } + // Memoized datatoken balance initialization + const initDtBalance = useCallback(async () => { + if ( + !web3Provider || + !accountId || + !asset?.accessDetails?.baseToken?.address || + !isAssetNetwork + ) + return + + try { + const datatokenInstance = new Datatoken(web3Provider as any) + const dtBalance = await datatokenInstance.balance( + asset.accessDetails.baseToken.address, + accountId + ) + if (isMounted()) setDtBalance(dtBalance) + } catch (e: any) { + LoggerInstance.error('[DT Balance Error]', e.message || e) } + }, [web3Provider, accountId, asset, isAssetNetwork, isMounted]) + + // Fetch file info + useEffect(() => { + initFileInfo() + }, [initFileInfo]) - init() - }, [web3Provider, accountId, asset, isAssetNetwork]) + // Fetch datatoken balance + useEffect(() => { + initDtBalance() + }, [initDtBalance]) // Check user balance against price useEffect(() => { - if (asset?.accessDetails?.type === 'free') setIsBalanceSufficient(true) + if (asset?.accessDetails?.type === 'free') { + setIsBalanceSufficient(true) + return + } + if ( !asset?.accessDetails?.price || !asset?.accessDetails?.baseToken?.symbol || @@ -140,15 +156,16 @@ export default function AssetActions({ balance, asset?.accessDetails?.baseToken?.symbol ) - setIsBalanceSufficient( + const isSufficient = compareAsBN(baseTokenBalance, `${asset?.accessDetails.price}`) || - Number(dtBalance) >= 1 - ) + Number(dtBalance) >= 1 + + if (isMounted()) setIsBalanceSufficient(isSufficient) return () => { - setIsBalanceSufficient(false) + if (isMounted()) setIsBalanceSufficient(false) } - }, [balance, accountId, asset?.accessDetails, dtBalance]) + }, [balance, accountId, asset?.accessDetails, dtBalance, isMounted]) return (
@@ -158,9 +175,9 @@ export default function AssetActions({ isBalanceSufficient={isBalanceSufficient} file={fileMetadata} fileIsLoading={fileIsLoading} - accessDetails={asset.accessDetails} // Ensure this is passed + accessDetails={asset.accessDetails} />
) -} +}) From 2ebc661583d25cead2fec0ac145b9a54395d2b99 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Thu, 26 Jun 2025 11:16:22 +0300 Subject: [PATCH 48/60] added chainId check in factory --- src/@hooks/useRouter.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/@hooks/useRouter.ts b/src/@hooks/useRouter.ts index 7fe583f71..7c1f859b4 100644 --- a/src/@hooks/useRouter.ts +++ b/src/@hooks/useRouter.ts @@ -21,6 +21,7 @@ function useFactoryRouter() { useEffect(() => { if (!signer || !chain?.id) return const config = getOceanConfig(chain.id) + if (!config) return setFactoryRouter( new FactoryRouter(config?.routerFactoryAddress, signer, config.chainId) ) From 6415e2cef95f661bb44e371ebc75407819508218 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Fri, 27 Jun 2025 16:21:47 +0300 Subject: [PATCH 49/60] implemented weth payments --- .jest/__fixtures__/algorithmAquarius.ts | 2 +- .jest/__fixtures__/datasetAquarius.ts | 2 +- .../__fixtures__/datasetWithAccessDetails.ts | 2 +- .../__fixtures__/datasetsWithAccessDetails.ts | 6 ++--- .jest/__fixtures__/web3.ts | 8 +++---- app.config.cjs | 2 +- chains.config.cjs | 8 +++---- content/price.json | 2 +- documentation/build-a-marketplace/README.md | 22 +++++++++---------- documentation/using-ocean-market.md | 16 +++++++------- src/@context/MarketMetadata/index.tsx | 4 ++-- src/@context/Prices/_utils.ts | 4 ++-- src/@context/Prices/index.test.tsx | 4 ++-- src/@utils/ocean/index.ts | 3 ++- src/components/@shared/Price/Conversion.tsx | 2 +- .../Asset/AssetActions/ButtonBuy/index.tsx | 2 +- src/components/Profile/Header/Stats.tsx | 2 +- src/components/Publish/Preview/index.tsx | 4 ++-- src/components/Publish/Pricing/index.tsx | 2 +- src/components/Publish/Steps.tsx | 2 +- src/components/Publish/_constants.tsx | 2 +- 21 files changed, 51 insertions(+), 50 deletions(-) diff --git a/.jest/__fixtures__/algorithmAquarius.ts b/.jest/__fixtures__/algorithmAquarius.ts index c4c47839a..3a7ab984d 100644 --- a/.jest/__fixtures__/algorithmAquarius.ts +++ b/.jest/__fixtures__/algorithmAquarius.ts @@ -74,7 +74,7 @@ export const algorithmAquarius: AssetExtended = { { datatokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', name: 'string', - symbol: 'OCEAN', + symbol: 'WETH', serviceId: 'dbc42f4c62d2452f8731fd023eacfae74e9c7a42fbd12ce84310f13342e4aab1', orders: 22, diff --git a/.jest/__fixtures__/datasetAquarius.ts b/.jest/__fixtures__/datasetAquarius.ts index ad15a889b..edb8275fb 100644 --- a/.jest/__fixtures__/datasetAquarius.ts +++ b/.jest/__fixtures__/datasetAquarius.ts @@ -61,7 +61,7 @@ export const datasetAquarius: AssetExtended = { { datatokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', name: 'string', - symbol: 'OCEAN', + symbol: 'WETH', serviceId: 'dbc42f4c62d2452f8731fd023eacfae74e9c7a42fbd12ce84310f13342e4aab1', orders: 22, diff --git a/.jest/__fixtures__/datasetWithAccessDetails.ts b/.jest/__fixtures__/datasetWithAccessDetails.ts index af527ba5d..6788d5fe7 100644 --- a/.jest/__fixtures__/datasetWithAccessDetails.ts +++ b/.jest/__fixtures__/datasetWithAccessDetails.ts @@ -15,7 +15,7 @@ export const asset: AssetExtended = { baseToken: { address: '0xcfdda22c9837ae76e0faa845354f33c62e03653a', name: 'Ocean Token', - symbol: 'OCEAN', + symbol: 'WETH', decimals: 18 }, datatoken: { diff --git a/.jest/__fixtures__/datasetsWithAccessDetails.ts b/.jest/__fixtures__/datasetsWithAccessDetails.ts index 064d948de..01bf20898 100644 --- a/.jest/__fixtures__/datasetsWithAccessDetails.ts +++ b/.jest/__fixtures__/datasetsWithAccessDetails.ts @@ -115,7 +115,7 @@ export const assets: AssetExtended[] = [ { datatokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', name: 'string', - symbol: 'OCEAN', + symbol: 'WETH', serviceId: 'dbc42f4c62d2452f8731fd023eacfae74e9c7a42fbd12ce84310f13342e4aab1', orders: 1, @@ -230,7 +230,7 @@ export const assets: AssetExtended[] = [ { datatokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', name: 'string', - symbol: 'OCEAN', + symbol: 'WETH', serviceId: 'dbc42f4c62d2452f8731fd023eacfae74e9c7a42fbd12ce84310f13342e4aab1', orders: 1, @@ -345,7 +345,7 @@ export const assets: AssetExtended[] = [ { datatokenAddress: '0xCfDdA22C9837aE76E0faA845354f33C62E03653a', name: 'string', - symbol: 'OCEAN', + symbol: 'WETH', serviceId: 'dbc42f4c62d2452f8731fd023eacfae74e9c7a42fbd12ce84310f13342e4aab1', orders: 2, diff --git a/.jest/__fixtures__/web3.ts b/.jest/__fixtures__/web3.ts index bd6fc8d9c..36a7bf910 100644 --- a/.jest/__fixtures__/web3.ts +++ b/.jest/__fixtures__/web3.ts @@ -5,13 +5,13 @@ export default { accountId: '0x99840Df5Cb42faBE0Feb8811Aaa4BC99cA6C84e0', approvedBaseTokens: [ { - address: '0xcfdda22c9837ae76e0faa845354f33c62e03653a', - symbol: 'OCEAN', - name: 'Ocean Token', + address: '0x5f207d42f869fd1c71d7f0f81a2a67fc20ff7323', + symbol: 'WETH', + name: 'WETH Token', decimals: 18 } ], - balance: { eth: '0', ocean: '1000' }, + balance: { eth: '0', weth: '1000' }, block: 7751969, chainId: 5, connect: jest.fn(), diff --git a/app.config.cjs b/app.config.cjs index d45b6949b..7db203c75 100644 --- a/app.config.cjs +++ b/app.config.cjs @@ -19,7 +19,7 @@ module.exports = { infuraProjectId: process.env.NEXT_PUBLIC_INFURA_PROJECT_ID || 'xxx', oceanTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS, - oceanTokenSymbol: process.env.NEXT_PUBLIC_OCEAN_TOKEN_SYMBOL || 'OCEAN', + oceanTokenSymbol: process.env.NEXT_PUBLIC_OCEAN_TOKEN_SYMBOL || 'WETH', defaultDatatokenCap: '115792089237316195423570985008687907853269984665640564039457', defaultDatatokenTemplateIndex: 2, diff --git a/chains.config.cjs b/chains.config.cjs index 7793ca4c7..8894126fc 100644 --- a/chains.config.cjs +++ b/chains.config.cjs @@ -7,8 +7,8 @@ const chains = [ isDefault: false, isCustom: true, network: 'Eth Sepolia', - oceanTokenSymbol: 'OCEAN', - oceanTokenAddress: '0x1B083D8584dd3e6Ff37d04a6e7e82b5F622f3985', + oceanTokenSymbol: 'WETH', + oceanTokenAddress: '0x5f207d42f869fd1c71d7f0f81a2a67fc20ff7323', nftFactoryAddress: '0xFdC4a5DEaCDfc6D82F66e894539461a269900E13', fixedRateExchangeAddress: '0x8372715D834d286c9aECE1AcD51Da5755B32D505', dispenserAddress: '0x5461b629E01f72E0A468931A36e039Eea394f9eA', @@ -30,8 +30,8 @@ const chains = [ isDefault: true, isCustom: true, network: 'pontusx-testnet', - oceanTokenSymbol: 'OCEAN', - oceanTokenAddress: '0x1B083D8584dd3e6Ff37d04a6e7e82b5F622f3985', + oceanTokenSymbol: 'WETH', + oceanTokenAddress: '0x5f207d42f869fd1c71d7f0f81a2a67fc20ff7323', nftFactoryAddress: '0x2C4d542ff791890D9290Eec89C9348A4891A6Fd2', fixedRateExchangeAddress: '0xcE0F39abB6DA2aE4d072DA78FA0A711cBB62764E', dispenserAddress: '0xaB5B68F88Bc881CAA427007559E9bbF8818026dE', diff --git a/content/price.json b/content/price.json index 1c741b62c..68db29a10 100644 --- a/content/price.json +++ b/content/price.json @@ -4,7 +4,7 @@ "title": "Fixed", "info": "Set your price for accessing this dataset. The datatoken for this dataset will be worth the entered amount of the selected base token.", "tooltips": { - "communityFee": "Goes to Ocean DAO for teams to improve the tools, build apps, do outreach, and more. A small fraction is used to burn OCEAN. This fee is collected when downloading or using an asset in a compute job.", + "communityFee": "Goes to Ocean DAO for teams to improve the tools, build apps, do outreach, and more. A small fraction is used to burn WETH. This fee is collected when downloading or using an asset in a compute job.", "marketplaceFee": "Goes to the marketplace owner that is hosting and providing the marketplace and is collected when downloading or using an asset in a compute job. In Ocean Market, it is treated as network revenue that goes to the Ocean community." } }, diff --git a/documentation/build-a-marketplace/README.md b/documentation/build-a-marketplace/README.md index 6dc3af009..1f3856d54 100644 --- a/documentation/build-a-marketplace/README.md +++ b/documentation/build-a-marketplace/README.md @@ -19,9 +19,9 @@ Using Ocean Market is already a big improvement on the alternatives that are out The tutorial covers: -* Forking and running Ocean Market locally -* Customizing your fork of Ocean market -* Quick deployment of Ocean Market +- Forking and running Ocean Market locally +- Customizing your fork of Ocean market +- Quick deployment of Ocean Market ## Preparation @@ -29,19 +29,19 @@ The tutorial covers: If you’re completely unfamiliar with Ocean Market or web3 applications in general, you will benefit from reading these guides first: -* To use your clone of Ocean Market, you’ll need a wallet. We recommend getting set up with metamask. -* You’ll also need some OCEAN on a testnet to use your marketplace. -* When you have the testnet tokens, have a go at publishing a data NFT on Ocean Market. -* Run through the process of consuming a data asset on Ocean Market. +- To use your clone of Ocean Market, you’ll need a wallet. We recommend getting set up with metamask. +- You’ll also need some WETH on a testnet to use your marketplace. +- When you have the testnet tokens, have a go at publishing a data NFT on Ocean Market. +- Run through the process of consuming a data asset on Ocean Market. For more information visit the [Ocean Docs](https://docs.oceanprotocol.com/) **Required Prerequisites** -* Git. Instructions for installing Git can be found [here](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). -* Node.js can be downloaded from [here](https://nodejs.org/en/download/) (we’re using version 18 in this guide) -* A decent code editor, such as [Visual Studio Code](https://code.visualstudio.com/). -* You’ll need a Github account to fork Ocean Market via [Github](https://github.com/). +- Git. Instructions for installing Git can be found [here](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git). +- Node.js can be downloaded from [here](https://nodejs.org/en/download/) (we’re using version 18 in this guide) +- A decent code editor, such as [Visual Studio Code](https://code.visualstudio.com/). +- You’ll need a Github account to fork Ocean Market via [Github](https://github.com/). {% hint style="warning" %} Let's emphasize an important aspect of building dApps. It's crucial to keep in mind that practically everything can be added to the blockchain 😵 When you integrate with these components, it becomes **crucial** for you, as a developer, to ensure **proper sanitization** of the responses on your end. This means you should carefully **validate and filter** the data received to **prevent** any potential vulnerabilities or security risks in your applications. diff --git a/documentation/using-ocean-market.md b/documentation/using-ocean-market.md index 2b3d4b0aa..c5a912e7a 100644 --- a/documentation/using-ocean-market.md +++ b/documentation/using-ocean-market.md @@ -10,14 +10,14 @@ The Ocean Market is a place for buyers + sellers of top-notch data and algorithm #### **You can:** -* Buy access to unique data, algorithms, and compute jobs. 🛍️ -* Tokenize & monetize your intellectual property through blockchain technology. 💪 +- Buy access to unique data, algorithms, and compute jobs. 🛍️ +- Tokenize & monetize your intellectual property through blockchain technology. 💪 #### **Learn to:** -* Publish an NFT -* Download NFT Assets -* Host Your Assets +- Publish an NFT +- Download NFT Assets +- Host Your Assets For more information visit the [Ocean Docs](https://docs.oceanprotocol.com/) @@ -25,6 +25,6 @@ For more information visit the [Ocean Docs](https://docs.oceanprotocol.com/) **If you are new to web3** and blockchain technologies then we suggest you first get familiar with some Web3 basics: -* Wallet Basics 👛 -* Set Up MetaMask 🦊 -* Manage Your OCEAN 🪙 +- Wallet Basics 👛 +- Set Up MetaMask 🦊 +- Manage Your WETH 🪙 diff --git a/src/@context/MarketMetadata/index.tsx b/src/@context/MarketMetadata/index.tsx index 715b3124e..9b8789551 100644 --- a/src/@context/MarketMetadata/index.tsx +++ b/src/@context/MarketMetadata/index.tsx @@ -62,8 +62,8 @@ function MarketMetadataProvider({ const oceanToken: TokenInfo = { address: appConfig.oceanTokenAddress, - name: 'OCEAN', - symbol: 'OCEAN', + name: 'WETH', + symbol: 'WETH', decimals: 18 } diff --git a/src/@context/Prices/_utils.ts b/src/@context/Prices/_utils.ts index 4279c7d19..d0835452f 100644 --- a/src/@context/Prices/_utils.ts +++ b/src/@context/Prices/_utils.ts @@ -2,8 +2,8 @@ // Deal with differences between token symbol & Coingecko API IDs // export function getCoingeckoTokenId(symbol: string) { - // can be OCEAN or mOCEAN - const isOcean = symbol?.toLowerCase().includes('ocean') + // can be WETH or mOCEAN + const isOcean = symbol?.toLowerCase().includes('weth') // can be H2O or H20 // const isH2o = symbol?.toLowerCase().includes('h2') const isEth = symbol?.toLowerCase() === 'eth' diff --git a/src/@context/Prices/index.test.tsx b/src/@context/Prices/index.test.tsx index 02e636d19..6d1c2fe3b 100644 --- a/src/@context/Prices/index.test.tsx +++ b/src/@context/Prices/index.test.tsx @@ -27,8 +27,8 @@ test('useSWR is called', async () => { // expect(result.current.prices['ocean-protocol'].eur).toBe('2') }) -test('should get correct Coingecko API ID for OCEAN', async () => { - const id1 = getCoingeckoTokenId('OCEAN') +test('should get correct Coingecko API ID for WETH', async () => { + const id1 = getCoingeckoTokenId('WETH') expect(id1).toBe('ocean-protocol') const id2 = getCoingeckoTokenId('mOCEAN') diff --git a/src/@utils/ocean/index.ts b/src/@utils/ocean/index.ts index 160cf69eb..fda25cd46 100644 --- a/src/@utils/ocean/index.ts +++ b/src/@utils/ocean/index.ts @@ -18,7 +18,7 @@ export function sanitizeDevelopmentConfig(config: Config): Config { process.env.NEXT_PUBLIC_FIXED_RATE_EXCHANGE_ADDRESS, dispenserAddress: process.env.NEXT_PUBLIC_DISPENSER_ADDRESS, oceanTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS, - oceanTokenSymbol: process.env.NEXT_PUBLIC_OCEAN_TOKEN_SYMBOL || 'OCEAN', + oceanTokenSymbol: process.env.NEXT_PUBLIC_OCEAN_TOKEN_SYMBOL || 'WETH', nftFactoryAddress: process.env.NEXT_PUBLIC_NFT_FACTORY_ADDRESS, routerFactoryAddress: process.env.NEXT_PUBLIC_ROUTER_FACTORY_ADDRESS, accessListFactory: process.env.NEXT_PUBLIC_ACCESS_LIST_FACTORY_ADDRESS @@ -48,6 +48,7 @@ export function getOceanConfig(network: string | number): Config { // Override RPC URL for Sepolia if it's set (the reason is ocean.js supports only infura) if (network === 11155111 && process.env.NEXT_PUBLIC_NODE_URI) { config.nodeUri = process.env.NEXT_PUBLIC_NODE_URI + config.oceanTokenSymbol = process.env.NEXT_PUBLIC_OCEAN_TOKEN_SYMBOL // config.oceanNodeUri = process.env.NEXT_PUBLIC_NODE_URL } diff --git a/src/components/@shared/Price/Conversion.tsx b/src/components/@shared/Price/Conversion.tsx index d97c1aa12..523b9ea87 100644 --- a/src/components/@shared/Price/Conversion.tsx +++ b/src/components/@shared/Price/Conversion.tsx @@ -10,7 +10,7 @@ export default function Conversion({ className, hideApproximateSymbol }: { - price: number // expects price in OCEAN, not wei + price: number // expects price in WETH, not wei symbol: string className?: string hideApproximateSymbol?: boolean diff --git a/src/components/Asset/AssetActions/ButtonBuy/index.tsx b/src/components/Asset/AssetActions/ButtonBuy/index.tsx index 9ed1957ac..7aa8b8256 100644 --- a/src/components/Asset/AssetActions/ButtonBuy/index.tsx +++ b/src/components/Asset/AssetActions/ButtonBuy/index.tsx @@ -86,7 +86,7 @@ function getAlgoHelpText( isSupportedOceanNetwork ? `You already bought the selected ${selectedComputeAssetType}, allowing you to use it without paying again.` : hasDatatokenSelectedComputeAsset - ? `You own ${dtBalanceSelectedComputeAsset} ${dtSymbolSelectedComputeAsset} allowing you to use the selected ${selectedComputeAssetType} by spending 1 ${dtSymbolSelectedComputeAsset}, but without paying OCEAN again.` + ? `You own ${dtBalanceSelectedComputeAsset} ${dtSymbolSelectedComputeAsset} allowing you to use the selected ${selectedComputeAssetType} by spending 1 ${dtSymbolSelectedComputeAsset}, but without paying WETH again.` : isAccountConnected && !isSupportedOceanNetwork ? `Connect to the correct network to interact with this asset.` : isBalanceSufficient === false diff --git a/src/components/Profile/Header/Stats.tsx b/src/components/Profile/Header/Stats.tsx index 5f5fae196..24a8e28c0 100644 --- a/src/components/Profile/Header/Stats.tsx +++ b/src/components/Profile/Header/Stats.tsx @@ -48,7 +48,7 @@ export default function Stats({ totalSales > 0 ? ( ) : ( diff --git a/src/components/Publish/Preview/index.tsx b/src/components/Publish/Preview/index.tsx index 3cdf5a95f..04a97c546 100644 --- a/src/components/Publish/Preview/index.tsx +++ b/src/components/Publish/Preview/index.tsx @@ -22,8 +22,8 @@ export default function Preview(): ReactElement { price: `${values.pricing.price}`, baseToken: { address: ZERO_ADDRESS, - name: values.pricing?.baseToken?.symbol || 'OCEAN', - symbol: values.pricing?.baseToken?.symbol || 'OCEAN' + name: values.pricing?.baseToken?.symbol || 'WETH', + symbol: values.pricing?.baseToken?.symbol || 'WETH' }, datatoken: { address: ZERO_ADDRESS, diff --git a/src/components/Publish/Pricing/index.tsx b/src/components/Publish/Pricing/index.tsx index 4043b6ee2..0b5fa1d68 100644 --- a/src/components/Publish/Pricing/index.tsx +++ b/src/components/Publish/Pricing/index.tsx @@ -21,7 +21,7 @@ export default function PricingFields(): ReactElement { const defaultBaseToken = approvedBaseTokens?.find((token) => - token.name.toLowerCase().includes('ocean') + token.name.toLowerCase().includes('weth') ) || approvedBaseTokens?.[0] const isBaseTokenSet = !!approvedBaseTokens?.find( diff --git a/src/components/Publish/Steps.tsx b/src/components/Publish/Steps.tsx index 317162b21..bd0dcfcd4 100644 --- a/src/components/Publish/Steps.tsx +++ b/src/components/Publish/Steps.tsx @@ -32,7 +32,7 @@ export function Steps({ const defaultBaseToken = approvedBaseTokens?.find((token) => - token.name.toLowerCase().includes('ocean') + token.name.toLowerCase().includes('weth') ) || approvedBaseTokens?.[0] const isBaseTokenSet = !!approvedBaseTokens?.find( (token) => token?.address === values?.pricing?.baseToken?.address diff --git a/src/components/Publish/_constants.tsx b/src/components/Publish/_constants.tsx index d0ed49777..b46a73c4e 100644 --- a/src/components/Publish/_constants.tsx +++ b/src/components/Publish/_constants.tsx @@ -75,7 +75,7 @@ export const initialValues: FormPublishData = { } ], pricing: { - baseToken: { address: '', name: '', symbol: 'OCEAN', decimals: 18 }, + baseToken: { address: '', name: '', symbol: 'WETH', decimals: 18 }, price: 0, type: allowFixedPricing === 'true' ? 'fixed' : 'free', freeAgreement: false From 49b9deed8ce6a4a1da19db61d7e77969e64e2482 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Mon, 30 Jun 2025 11:10:57 +0300 Subject: [PATCH 50/60] static changes for testing WETH --- app.config.cjs | 3 ++- src/@utils/ocean/index.ts | 6 ++++-- src/components/@shared/Price/index.tsx | 5 +++-- .../Asset/AssetContent/MetaMain/MetaAsset.tsx | 8 +++++--- src/components/Header/Wallet/Details.tsx | 6 ++++-- src/components/Publish/_utils.ts | 14 ++++++++------ 6 files changed, 26 insertions(+), 16 deletions(-) diff --git a/app.config.cjs b/app.config.cjs index 7db203c75..f2ad51a36 100644 --- a/app.config.cjs +++ b/app.config.cjs @@ -18,7 +18,8 @@ module.exports = { allowDynamicPricing: process.env.NEXT_PUBLIC_ALLOW_DYNAMIC_PRICING || 'false', infuraProjectId: process.env.NEXT_PUBLIC_INFURA_PROJECT_ID || 'xxx', - oceanTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS, + // oceanTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS, + oceanTokenAddress: '0x5f207d42f869fd1c71d7f0f81a2a67fc20ff7323', oceanTokenSymbol: process.env.NEXT_PUBLIC_OCEAN_TOKEN_SYMBOL || 'WETH', defaultDatatokenCap: '115792089237316195423570985008687907853269984665640564039457', diff --git a/src/@utils/ocean/index.ts b/src/@utils/ocean/index.ts index fda25cd46..0cb8fe295 100644 --- a/src/@utils/ocean/index.ts +++ b/src/@utils/ocean/index.ts @@ -17,7 +17,8 @@ export function sanitizeDevelopmentConfig(config: Config): Config { fixedRateExchangeAddress: process.env.NEXT_PUBLIC_FIXED_RATE_EXCHANGE_ADDRESS, dispenserAddress: process.env.NEXT_PUBLIC_DISPENSER_ADDRESS, - oceanTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS, + // oceanTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS, + oceanTokenAddress: '0x5f207d42f869fd1c71d7f0f81a2a67fc20ff7323', oceanTokenSymbol: process.env.NEXT_PUBLIC_OCEAN_TOKEN_SYMBOL || 'WETH', nftFactoryAddress: process.env.NEXT_PUBLIC_NFT_FACTORY_ADDRESS, routerFactoryAddress: process.env.NEXT_PUBLIC_ROUTER_FACTORY_ADDRESS, @@ -48,7 +49,8 @@ export function getOceanConfig(network: string | number): Config { // Override RPC URL for Sepolia if it's set (the reason is ocean.js supports only infura) if (network === 11155111 && process.env.NEXT_PUBLIC_NODE_URI) { config.nodeUri = process.env.NEXT_PUBLIC_NODE_URI - config.oceanTokenSymbol = process.env.NEXT_PUBLIC_OCEAN_TOKEN_SYMBOL + config.oceanTokenSymbol = + process.env.NEXT_PUBLIC_OCEAN_TOKEN_SYMBOL || 'WETH' // config.oceanNodeUri = process.env.NEXT_PUBLIC_NODE_URL } diff --git a/src/components/@shared/Price/index.tsx b/src/components/@shared/Price/index.tsx index e6010458f..16fb60c80 100644 --- a/src/components/@shared/Price/index.tsx +++ b/src/components/@shared/Price/index.tsx @@ -18,8 +18,9 @@ export default function Price({ conversion?: boolean size?: 'small' | 'mini' | 'large' }): ReactElement { - const oceanConfig = getOceanConfig(11155111) - const symbol = oceanConfig.oceanTokenSymbol + // const oceanConfig = getOceanConfig(11155111) + // const symbol = oceanConfig.oceanTokenSymbol + const symbol = 'WETH' if (!price && !orderPriceAndFees) return if (!price || price.price === undefined || price.price === null) { diff --git a/src/components/Asset/AssetContent/MetaMain/MetaAsset.tsx b/src/components/Asset/AssetContent/MetaMain/MetaAsset.tsx index 185698546..5f7c11ba6 100644 --- a/src/components/Asset/AssetContent/MetaMain/MetaAsset.tsx +++ b/src/components/Asset/AssetContent/MetaMain/MetaAsset.tsx @@ -4,7 +4,7 @@ import AddToken from '@shared/AddToken' import ExplorerLink from '@shared/ExplorerLink' import Publisher from '@shared/Publisher' import React, { ReactElement } from 'react' -import { useAccount } from 'wagmi' +import { useAccount, useNetwork } from 'wagmi' import styles from './MetaAsset.module.css' import { getOceanConfig } from '@utils/ocean' @@ -15,8 +15,10 @@ export default function MetaAsset({ asset: AssetExtended isBlockscoutExplorer: boolean }): ReactElement { - const oceanConfig = getOceanConfig(11155111) // replace chainId with actual id - const symbol = oceanConfig.oceanTokenSymbol + const { chain } = useNetwork() + const oceanConfig = getOceanConfig(chain.id) + // const symbol = oceanConfig.oceanTokenSymbol + const symbol = 'WETH' const { isAssetNetwork } = useAsset() const { connector: activeConnector } = useAccount() diff --git a/src/components/Header/Wallet/Details.tsx b/src/components/Header/Wallet/Details.tsx index d241176de..d46add595 100644 --- a/src/components/Header/Wallet/Details.tsx +++ b/src/components/Header/Wallet/Details.tsx @@ -39,8 +39,10 @@ export default function Details(): ReactElement { oceanConfig && setOceanTokenMetadata({ - address: oceanConfig.oceanTokenAddress, - symbol: oceanConfig.oceanTokenSymbol + // address: oceanConfig.oceanTokenAddress, + // symbol: oceanConfig.oceanTokenSymbol + address: '0x5f207d42f869fd1c71d7f0f81a2a67fc20ff7323', + symbol: 'WETH' }) }, [networkData, chain?.id]) diff --git a/src/components/Publish/_utils.ts b/src/components/Publish/_utils.ts index 219923ffa..8fab86203 100644 --- a/src/components/Publish/_utils.ts +++ b/src/components/Publish/_utils.ts @@ -250,9 +250,10 @@ export async function createTokensAndPricing( minter: accountId, paymentCollector: accountId, mpFeeAddress: marketFeeAddress, - feeToken: - process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS || - values.pricing.baseToken.address, + // feeToken: + // process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS || + // values.pricing.baseToken.address, + feeToken: '0x5f207d42f869fd1c71d7f0f81a2a67fc20ff7323', feeAmount: publisherMarketOrderFee, // max number cap: '115792089237316195423570985008687907853269984665640564039457', @@ -268,9 +269,10 @@ export async function createTokensAndPricing( case 'fixed': { const freParams: FreCreationParams = { fixedRateAddress: config.fixedRateExchangeAddress, - baseTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS - ? process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS - : values.pricing.baseToken.address, + // baseTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS + // ? process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS + // : values.pricing.baseToken.address, + baseTokenAddress: '0x5f207d42f869fd1c71d7f0f81a2a67fc20ff7323', owner: accountId, marketFeeCollector: marketFeeAddress, baseTokenDecimals: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS From b35bf2cb6c6c5e21772694730829f50bdc7b6876 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Tue, 1 Jul 2025 09:35:08 +0300 Subject: [PATCH 51/60] updating price conversion for weth --- src/@context/Prices/_utils.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/@context/Prices/_utils.ts b/src/@context/Prices/_utils.ts index d0835452f..d9c0b299d 100644 --- a/src/@context/Prices/_utils.ts +++ b/src/@context/Prices/_utils.ts @@ -3,9 +3,10 @@ // export function getCoingeckoTokenId(symbol: string) { // can be WETH or mOCEAN - const isOcean = symbol?.toLowerCase().includes('weth') + const isOcean = symbol?.toLowerCase().includes('ocean') // can be H2O or H20 // const isH2o = symbol?.toLowerCase().includes('h2') + const isWeth = symbol?.toLowerCase() === 'weth' const isEth = symbol?.toLowerCase() === 'eth' const isMatic = symbol?.toLowerCase() === 'matic' @@ -13,6 +14,8 @@ export function getCoingeckoTokenId(symbol: string) { ? 'ocean-protocol' : isEth ? 'ethereum' + : isWeth + ? 'ethereum' : isMatic ? 'matic-network' : symbol?.toLowerCase() From 6b2c49badaa80acf1a4b034f03b8d0ab737c3275 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Tue, 1 Jul 2025 11:59:09 +0300 Subject: [PATCH 52/60] fixing issue in decimals and getFeesAndPricing --- src/@utils/accessDetailsAndPricing.ts | 78 +++++++++++++----------- src/@utils/numbers.ts | 14 +++-- src/components/@shared/Price/index.tsx | 1 + src/components/Publish/Pricing/Price.tsx | 2 +- src/components/Publish/_validation.ts | 5 +- 5 files changed, 59 insertions(+), 41 deletions(-) diff --git a/src/@utils/accessDetailsAndPricing.ts b/src/@utils/accessDetailsAndPricing.ts index d56d7044f..8942e0c77 100644 --- a/src/@utils/accessDetailsAndPricing.ts +++ b/src/@utils/accessDetailsAndPricing.ts @@ -15,7 +15,7 @@ import { publisherMarketOrderFee, customProviderUrl } from '../../app.config.cjs' -import { Signer } from 'ethers' +import { Signer, ethers } from 'ethers' import { toast } from 'react-toastify' import { getDummySigner } from './wallet' // import { Service } from 'src/@types/ddo/Service' @@ -28,7 +28,7 @@ import { getUserOrders } from './aquarius' * @param {AssetExtended} asset * @return {Promise} */ -export async function getOrderPriceAndFees( // this function give price +export async function getOrderPriceAndFees( asset: AssetExtended, service: Service, accessDetails: AccessDetails, @@ -36,6 +36,8 @@ export async function getOrderPriceAndFees( // this function give price signer?: Signer, providerFees?: ProviderFees ): Promise { + const tokenDecimals = 18 // Replace with actual token decimals (fetch via contract if needed) + const orderPriceAndFee = { price: accessDetails.price || '0', publisherMarketOrderFee: publisherMarketOrderFee || '0', @@ -59,67 +61,75 @@ export async function getOrderPriceAndFees( // this function give price ) initializeData = !providerFees && initialize } catch (error) { - if (error.message.includes('Unexpected token')) { - // toast.error( - // `Use the initializeCompute endpoint to initialize compute jobs` - // ) - return - } const message = getErrorMessage(error.message) LoggerInstance.error('[Initialize Provider] Error:', message) - - // Customize error message for accountId non included in allow list if ( - // TODO: verify if the error code is correctly resolved by the provider message.includes('ConsumableCodes.CREDENTIAL_NOT_IN_ALLOW_LIST') || message.includes('denied with code: 3') ) { if (accountId !== ZERO_ADDRESS) { toast.error( - `Consumer address not found in allow list for service ${asset.id}. Access has been denied.` + `Consumer address not found in allow list for service ${asset.id}.` ) } - return + return orderPriceAndFee } - // Customize error message for accountId included in deny list if ( - // TODO: verify if the error code is correctly resolved by the provider message.includes('ConsumableCodes.CREDENTIAL_IN_DENY_LIST') || message.includes('denied with code: 4') ) { if (accountId !== ZERO_ADDRESS) { toast.error( - `Consumer address found in deny list for service ${asset.id}. Access has been denied.` + `Consumer address found in deny list for service ${asset.id}.` ) } - return + return orderPriceAndFee } toast.error(message) } orderPriceAndFee.providerFee = providerFees || initializeData?.providerFee - // fetch price and swap fees + // Fetch price and swap fees if (accessDetails.type === 'fixed') { const fixed = await getFixedBuyPrice(accessDetails, asset.chainId, signer) - orderPriceAndFee.price = accessDetails.price - orderPriceAndFee.opcFee = fixed.oceanFeeAmount - orderPriceAndFee.publisherMarketFixedSwapFee = fixed.marketFeeAmount - orderPriceAndFee.consumeMarketFixedSwapFee = fixed.consumeMarketFeeAmount - } + orderPriceAndFee.price = ethers.utils + .parseUnits(accessDetails.price, tokenDecimals) + .toString() + orderPriceAndFee.opcFee = ethers.utils + .parseUnits(fixed.oceanFeeAmount, tokenDecimals) + .toString() + orderPriceAndFee.publisherMarketFixedSwapFee = ethers.utils + .parseUnits(fixed.marketFeeAmount, tokenDecimals) + .toString() + orderPriceAndFee.consumeMarketFixedSwapFee = ethers.utils + .parseUnits(fixed.consumeMarketFeeAmount, tokenDecimals) + .toString() + } else { + const price = new Decimal(+accessDetails.price || 0) + const consumeMarketFeePercentage = + Number(orderPriceAndFee?.consumeMarketOrderFee) || 0 + const publisherMarketFeePercentage = + Number(orderPriceAndFee?.publisherMarketOrderFee) || 0 - const price = new Decimal(+accessDetails.price || 0) - const consumeMarketFeePercentage = - +orderPriceAndFee?.consumeMarketOrderFee || 0 - const publisherMarketFeePercentage = - +orderPriceAndFee?.publisherMarketOrderFee || 0 + if ( + isNaN(consumeMarketFeePercentage) || + isNaN(publisherMarketFeePercentage) + ) { + LoggerInstance.error('Invalid fee percentage') + return orderPriceAndFee + } - // Calculate percentage-based fees - const consumeMarketFee = price.mul(consumeMarketFeePercentage).div(100) - const publisherMarketFee = price.mul(publisherMarketFeePercentage).div(100) + const consumeMarketFee = price.mul(consumeMarketFeePercentage).div(100) + const publisherMarketFee = price.mul(publisherMarketFeePercentage).div(100) + const result = price.add(consumeMarketFee).add(publisherMarketFee) + + // Format result to respect token decimals + orderPriceAndFee.price = ethers.utils + .parseUnits(result.toFixed(tokenDecimals), tokenDecimals) + .toString() + } - // Calculate total - const result = price.add(consumeMarketFee).add(publisherMarketFee).toString() - orderPriceAndFee.price = result + LoggerInstance.log('OrderPriceAndFees:', orderPriceAndFee) return orderPriceAndFee } diff --git a/src/@utils/numbers.ts b/src/@utils/numbers.ts index aa82804b5..af17d23e4 100644 --- a/src/@utils/numbers.ts +++ b/src/@utils/numbers.ts @@ -6,12 +6,16 @@ export function formatNumber( locale: string, decimals?: string ): string { + const priceStr = price.toString() + const decimalPlacesInPrice = priceStr.includes('.') + ? priceStr.split('.')[1].length + : 0 + const targetDecimalPlaces = decimals + ? Math.min(Number(decimals), decimalPlacesInPrice) + : decimalPlacesInPrice + return formatCurrency(price, '', locale, false, { - // Not exactly clear what `significant figures` are for this library, - // but setting this seems to give us the formatting we want. - // See https://github.com/oceanprotocol/market/issues/70 - significantFigures: 4, - ...(decimals && { decimalPlaces: Number(decimals) }) + decimalPlaces: targetDecimalPlaces }) } diff --git a/src/components/@shared/Price/index.tsx b/src/components/@shared/Price/index.tsx index 16fb60c80..cbe4426b8 100644 --- a/src/components/@shared/Price/index.tsx +++ b/src/components/@shared/Price/index.tsx @@ -42,6 +42,7 @@ export default function Price({ className={className} size={size} conversion={conversion} + decimals="4" /> ) } diff --git a/src/components/Publish/Pricing/Price.tsx b/src/components/Publish/Pricing/Price.tsx index b3aac60d6..f4f954956 100644 --- a/src/components/Publish/Pricing/Price.tsx +++ b/src/components/Publish/Pricing/Price.tsx @@ -36,7 +36,7 @@ export default function Price({
1 ? ( diff --git a/src/components/Publish/_validation.ts b/src/components/Publish/_validation.ts index 934de8bc9..091bda530 100644 --- a/src/components/Publish/_validation.ts +++ b/src/components/Publish/_validation.ts @@ -112,7 +112,10 @@ const validationPricing = { // https://github.com/jquense/yup#mixedwhenkeys-string--arraystring-builder-object--value-schema-schema-schema price: Yup.number() - .min(1, (param: { min: number }) => `Must be more or equal to ${param.min}`) + .min( + 0.0001, + (param: { min: number }) => `Must be more or equal to ${param.min}` + ) .max( 1000000, (param: { max: number }) => `Must be less than or equal to ${param.max}` From 40453828c3e5ab08142b7a1168c70c8459fd9051 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Wed, 2 Jul 2025 12:48:13 +0300 Subject: [PATCH 53/60] edit asset price fixed --- content/pages/editMetadata.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/pages/editMetadata.json b/content/pages/editMetadata.json index 9d7a0a04e..4ed5b1ce6 100644 --- a/content/pages/editMetadata.json +++ b/content/pages/editMetadata.json @@ -22,7 +22,7 @@ "name": "price", "label": "New Price", "type": "number", - "min": "1", + "min": "0.0001", "placeholder": "0", "help": "Enter a new price.", "required": true From 378b884ba59dbc35a75c13661c4d08f40af7ab13 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Wed, 2 Jul 2025 14:26:07 +0300 Subject: [PATCH 54/60] cleaning code and fetching address and symbol from env --- app.config.cjs | 3 +-- src/@context/MarketMetadata/index.tsx | 4 ++-- src/@utils/ocean/index.ts | 3 +-- src/components/@shared/Price/index.tsx | 8 ++++---- .../Asset/AssetContent/MetaMain/MetaAsset.tsx | 3 +-- src/components/Header/Wallet/Details.tsx | 6 ++---- src/components/Publish/_utils.ts | 14 ++++++-------- 7 files changed, 17 insertions(+), 24 deletions(-) diff --git a/app.config.cjs b/app.config.cjs index f2ad51a36..7db203c75 100644 --- a/app.config.cjs +++ b/app.config.cjs @@ -18,8 +18,7 @@ module.exports = { allowDynamicPricing: process.env.NEXT_PUBLIC_ALLOW_DYNAMIC_PRICING || 'false', infuraProjectId: process.env.NEXT_PUBLIC_INFURA_PROJECT_ID || 'xxx', - // oceanTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS, - oceanTokenAddress: '0x5f207d42f869fd1c71d7f0f81a2a67fc20ff7323', + oceanTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS, oceanTokenSymbol: process.env.NEXT_PUBLIC_OCEAN_TOKEN_SYMBOL || 'WETH', defaultDatatokenCap: '115792089237316195423570985008687907853269984665640564039457', diff --git a/src/@context/MarketMetadata/index.tsx b/src/@context/MarketMetadata/index.tsx index 9b8789551..e3956a655 100644 --- a/src/@context/MarketMetadata/index.tsx +++ b/src/@context/MarketMetadata/index.tsx @@ -62,8 +62,8 @@ function MarketMetadataProvider({ const oceanToken: TokenInfo = { address: appConfig.oceanTokenAddress, - name: 'WETH', - symbol: 'WETH', + name: process.env.NEXT_PUBLIC_OCEAN_TOKEN_SYMBOL, + symbol: process.env.NEXT_PUBLIC_OCEAN_TOKEN_SYMBOL, decimals: 18 } diff --git a/src/@utils/ocean/index.ts b/src/@utils/ocean/index.ts index 0cb8fe295..459b8d7a1 100644 --- a/src/@utils/ocean/index.ts +++ b/src/@utils/ocean/index.ts @@ -17,8 +17,7 @@ export function sanitizeDevelopmentConfig(config: Config): Config { fixedRateExchangeAddress: process.env.NEXT_PUBLIC_FIXED_RATE_EXCHANGE_ADDRESS, dispenserAddress: process.env.NEXT_PUBLIC_DISPENSER_ADDRESS, - // oceanTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS, - oceanTokenAddress: '0x5f207d42f869fd1c71d7f0f81a2a67fc20ff7323', + oceanTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS, oceanTokenSymbol: process.env.NEXT_PUBLIC_OCEAN_TOKEN_SYMBOL || 'WETH', nftFactoryAddress: process.env.NEXT_PUBLIC_NFT_FACTORY_ADDRESS, routerFactoryAddress: process.env.NEXT_PUBLIC_ROUTER_FACTORY_ADDRESS, diff --git a/src/components/@shared/Price/index.tsx b/src/components/@shared/Price/index.tsx index cbe4426b8..ee79820c6 100644 --- a/src/components/@shared/Price/index.tsx +++ b/src/components/@shared/Price/index.tsx @@ -3,6 +3,7 @@ import { AssetPrice } from '@oceanprotocol/ddo-js' import PriceUnit from './PriceUnit' import { getOceanConfig } from '@utils/ocean' import Loader from '@shared/atoms/Loader' +import { useNetwork } from 'wagmi' export default function Price({ price, @@ -18,9 +19,9 @@ export default function Price({ conversion?: boolean size?: 'small' | 'mini' | 'large' }): ReactElement { - // const oceanConfig = getOceanConfig(11155111) - // const symbol = oceanConfig.oceanTokenSymbol - const symbol = 'WETH' + const { chain } = useNetwork() + const oceanConfig = getOceanConfig(chain.id) + const symbol = oceanConfig.oceanTokenSymbol if (!price && !orderPriceAndFees) return if (!price || price.price === undefined || price.price === null) { @@ -28,7 +29,6 @@ export default function Price({ } const rawPrice = price?.price - console.log('Raw price', rawPrice) const parsedPrice = rawPrice === null || rawPrice === undefined ? null diff --git a/src/components/Asset/AssetContent/MetaMain/MetaAsset.tsx b/src/components/Asset/AssetContent/MetaMain/MetaAsset.tsx index 5f7c11ba6..092b521a5 100644 --- a/src/components/Asset/AssetContent/MetaMain/MetaAsset.tsx +++ b/src/components/Asset/AssetContent/MetaMain/MetaAsset.tsx @@ -17,8 +17,7 @@ export default function MetaAsset({ }): ReactElement { const { chain } = useNetwork() const oceanConfig = getOceanConfig(chain.id) - // const symbol = oceanConfig.oceanTokenSymbol - const symbol = 'WETH' + const symbol = oceanConfig.oceanTokenSymbol const { isAssetNetwork } = useAsset() const { connector: activeConnector } = useAccount() diff --git a/src/components/Header/Wallet/Details.tsx b/src/components/Header/Wallet/Details.tsx index d46add595..d241176de 100644 --- a/src/components/Header/Wallet/Details.tsx +++ b/src/components/Header/Wallet/Details.tsx @@ -39,10 +39,8 @@ export default function Details(): ReactElement { oceanConfig && setOceanTokenMetadata({ - // address: oceanConfig.oceanTokenAddress, - // symbol: oceanConfig.oceanTokenSymbol - address: '0x5f207d42f869fd1c71d7f0f81a2a67fc20ff7323', - symbol: 'WETH' + address: oceanConfig.oceanTokenAddress, + symbol: oceanConfig.oceanTokenSymbol }) }, [networkData, chain?.id]) diff --git a/src/components/Publish/_utils.ts b/src/components/Publish/_utils.ts index 8fab86203..219923ffa 100644 --- a/src/components/Publish/_utils.ts +++ b/src/components/Publish/_utils.ts @@ -250,10 +250,9 @@ export async function createTokensAndPricing( minter: accountId, paymentCollector: accountId, mpFeeAddress: marketFeeAddress, - // feeToken: - // process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS || - // values.pricing.baseToken.address, - feeToken: '0x5f207d42f869fd1c71d7f0f81a2a67fc20ff7323', + feeToken: + process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS || + values.pricing.baseToken.address, feeAmount: publisherMarketOrderFee, // max number cap: '115792089237316195423570985008687907853269984665640564039457', @@ -269,10 +268,9 @@ export async function createTokensAndPricing( case 'fixed': { const freParams: FreCreationParams = { fixedRateAddress: config.fixedRateExchangeAddress, - // baseTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS - // ? process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS - // : values.pricing.baseToken.address, - baseTokenAddress: '0x5f207d42f869fd1c71d7f0f81a2a67fc20ff7323', + baseTokenAddress: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS + ? process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS + : values.pricing.baseToken.address, owner: accountId, marketFeeCollector: marketFeeAddress, baseTokenDecimals: process.env.NEXT_PUBLIC_OCEAN_TOKEN_ADDRESS From 29734a772d47ec8e6d43a8dd83986829c2906a54 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Wed, 2 Jul 2025 14:32:53 +0300 Subject: [PATCH 55/60] just to rebuild --- src/components/Footer/MarketStats/Total.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/Footer/MarketStats/Total.tsx b/src/components/Footer/MarketStats/Total.tsx index 97fa1ba06..8cad03f64 100644 --- a/src/components/Footer/MarketStats/Total.tsx +++ b/src/components/Footer/MarketStats/Total.tsx @@ -43,6 +43,7 @@ export default function MarketStatsTotal({ fetchAssets() }, [chainIds, fetchAssets]) + console.log('test') return ( <> From 87ebbfe23a2a79d84fddb829a25c40f5a0b4803d Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Wed, 2 Jul 2025 14:33:25 +0300 Subject: [PATCH 56/60] remove console --- src/components/Footer/MarketStats/Total.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/Footer/MarketStats/Total.tsx b/src/components/Footer/MarketStats/Total.tsx index 8cad03f64..97fa1ba06 100644 --- a/src/components/Footer/MarketStats/Total.tsx +++ b/src/components/Footer/MarketStats/Total.tsx @@ -43,7 +43,6 @@ export default function MarketStatsTotal({ fetchAssets() }, [chainIds, fetchAssets]) - console.log('test') return ( <> From 9491aa5892a704f47acc1bdc8cc53b640799e259 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Wed, 2 Jul 2025 17:31:41 +0300 Subject: [PATCH 57/60] fixing price issue in edit asset --- src/components/Asset/Edit/FormEditMetadata.tsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/components/Asset/Edit/FormEditMetadata.tsx b/src/components/Asset/Edit/FormEditMetadata.tsx index 29e258787..c366dc117 100644 --- a/src/components/Asset/Edit/FormEditMetadata.tsx +++ b/src/components/Asset/Edit/FormEditMetadata.tsx @@ -95,6 +95,9 @@ export default function FormEditMetadata({ {...getFieldContent('price', data)} component={Input} name="price" + type="number" + min="0.0001" + step="any" /> )} From a98a1da2b03c39564fbe0c8d6c4591eab884763e Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Wed, 2 Jul 2025 18:55:32 +0300 Subject: [PATCH 58/60] fixed chainid issue --- src/components/@shared/Price/index.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/@shared/Price/index.tsx b/src/components/@shared/Price/index.tsx index ee79820c6..a6e95c65c 100644 --- a/src/components/@shared/Price/index.tsx +++ b/src/components/@shared/Price/index.tsx @@ -20,7 +20,8 @@ export default function Price({ size?: 'small' | 'mini' | 'large' }): ReactElement { const { chain } = useNetwork() - const oceanConfig = getOceanConfig(chain.id) + const chainId = chain?.id || 11155111 + const oceanConfig = getOceanConfig(chainId) const symbol = oceanConfig.oceanTokenSymbol if (!price && !orderPriceAndFees) return From 8350bd21ed83bf193f39c62ae2f722ef678e2450 Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Wed, 2 Jul 2025 19:09:41 +0300 Subject: [PATCH 59/60] chainid issue resolved --- src/components/Asset/AssetContent/MetaMain/MetaAsset.tsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/Asset/AssetContent/MetaMain/MetaAsset.tsx b/src/components/Asset/AssetContent/MetaMain/MetaAsset.tsx index 092b521a5..7bd8771c7 100644 --- a/src/components/Asset/AssetContent/MetaMain/MetaAsset.tsx +++ b/src/components/Asset/AssetContent/MetaMain/MetaAsset.tsx @@ -16,7 +16,8 @@ export default function MetaAsset({ isBlockscoutExplorer: boolean }): ReactElement { const { chain } = useNetwork() - const oceanConfig = getOceanConfig(chain.id) + const chainId = chain?.id || 11155111 + const oceanConfig = getOceanConfig(chainId) const symbol = oceanConfig.oceanTokenSymbol const { isAssetNetwork } = useAsset() const { connector: activeConnector } = useAccount() From eeb6146ebc8f54b17b1e8c2dacbb98ffc4b7ed2a Mon Sep 17 00:00:00 2001 From: ahmedraza118 Date: Thu, 3 Jul 2025 14:27:16 +0300 Subject: [PATCH 60/60] updating env variables in pricing and basetoken --- src/components/Asset/Edit/FormEditMetadata.tsx | 2 +- src/components/Publish/Pricing/Price.tsx | 2 +- src/components/Publish/Steps.tsx | 4 +++- src/components/Publish/_validation.ts | 6 ++++-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/components/Asset/Edit/FormEditMetadata.tsx b/src/components/Asset/Edit/FormEditMetadata.tsx index c366dc117..3e93750d3 100644 --- a/src/components/Asset/Edit/FormEditMetadata.tsx +++ b/src/components/Asset/Edit/FormEditMetadata.tsx @@ -96,7 +96,7 @@ export default function FormEditMetadata({ component={Input} name="price" type="number" - min="0.0001" + min={process.env.NEXT_PUBLIC_MIN_ASSET_PRICE} step="any" /> )} diff --git a/src/components/Publish/Pricing/Price.tsx b/src/components/Publish/Pricing/Price.tsx index f4f954956..6c71be421 100644 --- a/src/components/Publish/Pricing/Price.tsx +++ b/src/components/Publish/Pricing/Price.tsx @@ -36,7 +36,7 @@ export default function Price({
1 ? ( diff --git a/src/components/Publish/Steps.tsx b/src/components/Publish/Steps.tsx index bd0dcfcd4..d5c8aaaa0 100644 --- a/src/components/Publish/Steps.tsx +++ b/src/components/Publish/Steps.tsx @@ -32,7 +32,9 @@ export function Steps({ const defaultBaseToken = approvedBaseTokens?.find((token) => - token.name.toLowerCase().includes('weth') + token.name + .toLowerCase() + .includes(process.env.NEXT_PUBLIC_OCEAN_TOKEN_SYMBOL.toLowerCase()) ) || approvedBaseTokens?.[0] const isBaseTokenSet = !!approvedBaseTokens?.find( (token) => token?.address === values?.pricing?.baseToken?.address diff --git a/src/components/Publish/_validation.ts b/src/components/Publish/_validation.ts index 091bda530..5b30d6438 100644 --- a/src/components/Publish/_validation.ts +++ b/src/components/Publish/_validation.ts @@ -8,7 +8,9 @@ import { validationConsumerParameters } from '@components/@shared/FormInput/Inpu // TODO: conditional validation // e.g. when algo is selected, Docker image is required // hint, hint: https://github.com/jquense/yup#mixedwhenkeys-string--arraystring-builder-object--value-schema-schema-schema - +const minAssetPrice = parseFloat( + process.env.NEXT_PUBLIC_MIN_ASSET_PRICE || '0.0001' +) const validationMetadata = { type: Yup.string() .matches(/dataset|algorithm/g, { excludeEmptyString: true }) @@ -113,7 +115,7 @@ const validationPricing = { price: Yup.number() .min( - 0.0001, + minAssetPrice, (param: { min: number }) => `Must be more or equal to ${param.min}` ) .max(