From 09ece579d2c75a1b373ff7acaeb712c4b02d3e17 Mon Sep 17 00:00:00 2001 From: Enzo Cioppettini Date: Tue, 24 Oct 2023 11:32:12 -0300 Subject: [PATCH 01/24] add carp funnel with stake delegation pool tracking --- packages/engine/paima-rest/src/tsoa/routes.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 packages/engine/paima-rest/src/tsoa/routes.ts diff --git a/packages/engine/paima-rest/src/tsoa/routes.ts b/packages/engine/paima-rest/src/tsoa/routes.ts new file mode 100644 index 000000000..e69de29bb From f30d983850105b393f3d27d5655b83e444d552aa Mon Sep 17 00:00:00 2001 From: Enzo Cioppettini Date: Mon, 6 Nov 2023 23:11:28 -0300 Subject: [PATCH 02/24] use local (tmp) carp client lib in the funnel just to test until the up to date version is published on npm --- tmp-carp-client/README.md | 5 + tmp-carp-client/client/src/index.d.ts | 11 ++ tmp-carp-client/client/src/index.js | 34 ++++++ tmp-carp-client/client/src/paginated.d.ts | 13 +++ tmp-carp-client/client/src/paginated.js | 83 ++++++++++++++ tmp-carp-client/package.json | 49 ++++++++ tmp-carp-client/shared/constants.d.ts | 24 ++++ tmp-carp-client/shared/constants.js | 28 +++++ tmp-carp-client/shared/errors.d.ts | 105 +++++++++++++++++ tmp-carp-client/shared/errors.js | 86 ++++++++++++++ tmp-carp-client/shared/models/Address.d.ts | 42 +++++++ tmp-carp-client/shared/models/Address.js | 2 + .../shared/models/AddressUsed.d.ts | 8 ++ tmp-carp-client/shared/models/AddressUsed.js | 2 + .../shared/models/BlockLatest.d.ts | 36 ++++++ tmp-carp-client/shared/models/BlockLatest.js | 2 + .../shared/models/CredentialAddress.d.ts | 9 ++ .../shared/models/CredentialAddress.js | 2 + .../shared/models/DelegationForAddress.d.ts | 11 ++ .../shared/models/DelegationForAddress.js | 2 + .../shared/models/DelegationForPool.d.ts | 15 +++ .../shared/models/DelegationForPool.js | 2 + .../shared/models/DexLastPrice.d.ts | 26 +++++ tmp-carp-client/shared/models/DexLastPrice.js | 13 +++ .../shared/models/DexMeanPrice.d.ts | 21 ++++ tmp-carp-client/shared/models/DexMeanPrice.js | 2 + tmp-carp-client/shared/models/DexSwap.d.ts | 22 ++++ tmp-carp-client/shared/models/DexSwap.js | 2 + .../shared/models/PolicyIdAssetMap.d.ts | 35 ++++++ .../shared/models/PolicyIdAssetMap.js | 2 + tmp-carp-client/shared/models/Pool.d.ts | 6 + tmp-carp-client/shared/models/Pool.js | 2 + .../shared/models/TransactionHistory.d.ts | 37 ++++++ .../shared/models/TransactionHistory.js | 2 + .../shared/models/TransactionOutput.d.ts | 18 +++ .../shared/models/TransactionOutput.js | 2 + tmp-carp-client/shared/models/common.d.ts | 106 ++++++++++++++++++ tmp-carp-client/shared/models/common.js | 44 ++++++++ tmp-carp-client/shared/routes.d.ts | 81 +++++++++++++ tmp-carp-client/shared/routes.js | 17 +++ 40 files changed, 1009 insertions(+) create mode 100644 tmp-carp-client/README.md create mode 100644 tmp-carp-client/client/src/index.d.ts create mode 100644 tmp-carp-client/client/src/index.js create mode 100644 tmp-carp-client/client/src/paginated.d.ts create mode 100644 tmp-carp-client/client/src/paginated.js create mode 100644 tmp-carp-client/package.json create mode 100644 tmp-carp-client/shared/constants.d.ts create mode 100644 tmp-carp-client/shared/constants.js create mode 100644 tmp-carp-client/shared/errors.d.ts create mode 100644 tmp-carp-client/shared/errors.js create mode 100644 tmp-carp-client/shared/models/Address.d.ts create mode 100644 tmp-carp-client/shared/models/Address.js create mode 100644 tmp-carp-client/shared/models/AddressUsed.d.ts create mode 100644 tmp-carp-client/shared/models/AddressUsed.js create mode 100644 tmp-carp-client/shared/models/BlockLatest.d.ts create mode 100644 tmp-carp-client/shared/models/BlockLatest.js create mode 100644 tmp-carp-client/shared/models/CredentialAddress.d.ts create mode 100644 tmp-carp-client/shared/models/CredentialAddress.js create mode 100644 tmp-carp-client/shared/models/DelegationForAddress.d.ts create mode 100644 tmp-carp-client/shared/models/DelegationForAddress.js create mode 100644 tmp-carp-client/shared/models/DelegationForPool.d.ts create mode 100644 tmp-carp-client/shared/models/DelegationForPool.js create mode 100644 tmp-carp-client/shared/models/DexLastPrice.d.ts create mode 100644 tmp-carp-client/shared/models/DexLastPrice.js create mode 100644 tmp-carp-client/shared/models/DexMeanPrice.d.ts create mode 100644 tmp-carp-client/shared/models/DexMeanPrice.js create mode 100644 tmp-carp-client/shared/models/DexSwap.d.ts create mode 100644 tmp-carp-client/shared/models/DexSwap.js create mode 100644 tmp-carp-client/shared/models/PolicyIdAssetMap.d.ts create mode 100644 tmp-carp-client/shared/models/PolicyIdAssetMap.js create mode 100644 tmp-carp-client/shared/models/Pool.d.ts create mode 100644 tmp-carp-client/shared/models/Pool.js create mode 100644 tmp-carp-client/shared/models/TransactionHistory.d.ts create mode 100644 tmp-carp-client/shared/models/TransactionHistory.js create mode 100644 tmp-carp-client/shared/models/TransactionOutput.d.ts create mode 100644 tmp-carp-client/shared/models/TransactionOutput.js create mode 100644 tmp-carp-client/shared/models/common.d.ts create mode 100644 tmp-carp-client/shared/models/common.js create mode 100644 tmp-carp-client/shared/routes.d.ts create mode 100644 tmp-carp-client/shared/routes.js diff --git a/tmp-carp-client/README.md b/tmp-carp-client/README.md new file mode 100644 index 000000000..06e593bcd --- /dev/null +++ b/tmp-carp-client/README.md @@ -0,0 +1,5 @@ +# Carp Client + +Typescript client for Carp - the Cardano Postgres indexer. + +You can find the full documentation for the indexer, the webserver and this Typescript client [here](https://dcspark.github.io/carp/docs/intro/) diff --git a/tmp-carp-client/client/src/index.d.ts b/tmp-carp-client/client/src/index.d.ts new file mode 100644 index 000000000..df155a2d1 --- /dev/null +++ b/tmp-carp-client/client/src/index.d.ts @@ -0,0 +1,11 @@ +import type { EndpointTypes } from "../../shared/routes"; +import type { ErrorShape } from "../../shared/errors"; +import type { AxiosError, AxiosResponse } from "axios"; +import type { Routes } from "../../shared/routes"; +export type { RelationFilter, RelationFilterType, Pagination, UtxoPointer, } from "../../shared/models/common"; +export * from "../../shared/routes"; +export * from "../../shared/errors"; +export type { EndpointTypes } from "../../shared/routes"; +export type { ErrorShape } from "../../shared/errors"; +export declare function query(urlBase: string, route: T, data: EndpointTypes[T]["input"]): Promise; +export declare function getErrorResponse(err: AxiosError): AxiosResponse; diff --git a/tmp-carp-client/client/src/index.js b/tmp-carp-client/client/src/index.js new file mode 100644 index 000000000..35234a09a --- /dev/null +++ b/tmp-carp-client/client/src/index.js @@ -0,0 +1,34 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getErrorResponse = exports.query = void 0; +const axios_1 = __importDefault(require("axios")); +__exportStar(require("../../shared/routes"), exports); +__exportStar(require("../../shared/errors"), exports); +async function query(urlBase, route, data) { + const result = await axios_1.default.post(`${urlBase}/${route}`, data); + return result.data; +} +exports.query = query; +function getErrorResponse(err) { + if (err.response == null) + throw new Error(`Unexpected null response`); + return err.response; +} +exports.getErrorResponse = getErrorResponse; diff --git a/tmp-carp-client/client/src/paginated.d.ts b/tmp-carp-client/client/src/paginated.d.ts new file mode 100644 index 000000000..836e98bf0 --- /dev/null +++ b/tmp-carp-client/client/src/paginated.d.ts @@ -0,0 +1,13 @@ +import type { EndpointTypes } from "./index"; +import { Routes } from "./index"; +import type { Pagination } from "../../shared/models/common"; +import type cml from "@dcspark/cardano-multiplatform-lib-nodejs"; +/** + * If you don't mind using axios, + * you can use the paginated endpoints provided by the client + * However this endpoint allows you to pass in your own querying library + */ +export declare function paginateQuery(initialRequest: T, query: (request: T) => Promise, pageFromResponse: (resp: undefined | Response) => Pagination["after"]): Promise; +export declare function paginatedTransactionHistory(urlBase: string, initialRequest: Omit): Promise; +export declare function paginatedMetadataNft(urlBase: string, request: EndpointTypes[Routes.metadataNft]["input"]): Promise; +export declare function nftCborToJson(request: EndpointTypes[Routes.metadataNft]["response"], cmlTransactioMetadatum: typeof cml.TransactionMetadatum, decode_metadatum_to_json_str: typeof cml.decode_metadatum_to_json_str, conversionType: cml.MetadataJsonSchema): EndpointTypes[Routes.metadataNft]["response"]; diff --git a/tmp-carp-client/client/src/paginated.js b/tmp-carp-client/client/src/paginated.js new file mode 100644 index 000000000..a67850a8a --- /dev/null +++ b/tmp-carp-client/client/src/paginated.js @@ -0,0 +1,83 @@ +"use strict"; +var __importDefault = (this && this.__importDefault) || function (mod) { + return (mod && mod.__esModule) ? mod : { "default": mod }; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.nftCborToJson = exports.paginatedMetadataNft = exports.paginatedTransactionHistory = exports.paginateQuery = void 0; +const index_1 = require("./index"); +const index_2 = require("./index"); +const chunk_1 = __importDefault(require("lodash/chunk")); +const constants_1 = require("../../shared/constants"); +const merge_1 = __importDefault(require("lodash/merge")); +/** + * If you don't mind using axios, + * you can use the paginated endpoints provided by the client + * However this endpoint allows you to pass in your own querying library + */ +async function paginateQuery(initialRequest, query, pageFromResponse) { + let nextRequest = initialRequest; + const result = []; + let currentPage = []; + do { + currentPage = await query(nextRequest); + result.push(...currentPage); + nextRequest = { + ...nextRequest, + after: pageFromResponse(currentPage[currentPage.length - 1]), + }; + } while (currentPage.length === 0); + return result; +} +exports.paginateQuery = paginateQuery; +async function paginatedTransactionHistory(urlBase, initialRequest) { + const result = await paginateQuery(initialRequest, async (request) => (await (0, index_1.query)(urlBase, index_2.Routes.transactionHistory, request)).transactions, (resp) => resp != null + ? { + block: resp.block.hash, + tx: resp.transaction.hash, + } + : undefined); + return { transactions: result }; +} +exports.paginatedTransactionHistory = paginatedTransactionHistory; +function pairsToAssetMap(pairs) { + var _a; + const result = {}; + for (const [policyId, assetName] of pairs) { + const for_policy = (_a = result[policyId]) !== null && _a !== void 0 ? _a : []; + for_policy.push(assetName); + // if this was a newly added policy + if (for_policy.length === 1) { + result[policyId] = for_policy; + } + } + return { assets: result }; +} +async function paginatedMetadataNft(urlBase, request) { + const pairs = []; + for (const [policyId, assets] of Object.entries(request.assets)) { + for (const asset of assets) { + pairs.push([policyId, asset]); + } + } + let result = { cip25: {} }; + const chunkedResult = await Promise.all((0, chunk_1.default)(pairs, constants_1.ASSET_LIMIT.REQUEST).map((chunk) => (0, index_1.query)(urlBase, index_2.Routes.metadataNft, pairsToAssetMap(chunk)))); + for (const chunk of chunkedResult) { + result = (0, merge_1.default)(result, chunk); + } + return result; +} +exports.paginatedMetadataNft = paginatedMetadataNft; +function nftCborToJson(request, cmlTransactioMetadatum, decode_metadatum_to_json_str, conversionType) { + const result = {}; + for (const [policyId, assetNames] of Object.entries(request.cip25)) { + const newAssetNameMap = {}; + for (const [assetName, cbor] of Object.entries(assetNames)) { + const metadatum = cmlTransactioMetadatum.from_bytes(Buffer.from(cbor, "hex")); + const json = decode_metadatum_to_json_str(metadatum, conversionType); + newAssetNameMap[assetName] = json; + } + result[policyId] = newAssetNameMap; + } + return { cip25: result }; +} +exports.nftCborToJson = nftCborToJson; diff --git a/tmp-carp-client/package.json b/tmp-carp-client/package.json new file mode 100644 index 000000000..9786e41f0 --- /dev/null +++ b/tmp-carp-client/package.json @@ -0,0 +1,49 @@ +{ + "name": "@dcspark/carp-client", + "version": "2.2.3", + "description": "Web client for the Carp server", + "main": "app/index.js", + "scripts": { + "eslint": "eslint src", + "clean": "rm -rf ./dist", + "build": "yarn clean && tsc --project tsconfig.build.json && yarn run copy:misc", + "copy:misc": "cp package.json dist/ && cp README.md dist/", + "npm:publish": "yarn typecheck && yarn build && cd dist && yarn publish --access public && cd ..", + "verify": "yarn typecheck && yarn eslint", + "typecheck": "tsc --project tsconfig.json", + "prettier": "prettier --write \"**/*.tsx\"" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/dcSpark/carp.git" + }, + "author": "https://github.com/dcSpark", + "license": "MIT", + "bugs": { + "url": "https://github.com/dcSpark/carp/issues" + }, + "homepage": "https://github.com/dcSpark/carp#readme", + "dependencies": { + "axios": "^0.27.2" + }, + "devDependencies": { + "@dcspark/cardano-multiplatform-lib-nodejs": "3.0.1", + "@types/eslint": "8.4.6", + "@types/eslint-plugin-prettier": "3.1.0", + "@types/lodash": "^4.14.185", + "@types/node": "^17.0.31", + "@types/prettier": "2.7.0", + "@typescript-eslint/eslint-plugin": "5.38.0", + "@typescript-eslint/parser": "5.38.0", + "eslint": "8.23.1", + "eslint-config-airbnb-typescript": "17.0.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-prettier": "4.2.1", + "eslint-plugin-promise": "6.0.1", + "lodash": "^4.17.21", + "prettier": "2.7.1", + "ts-node": "10.9.1", + "typescript": "4.7.4" + } +} diff --git a/tmp-carp-client/shared/constants.d.ts b/tmp-carp-client/shared/constants.d.ts new file mode 100644 index 000000000..e50b01a14 --- /dev/null +++ b/tmp-carp-client/shared/constants.d.ts @@ -0,0 +1,24 @@ +export declare const ADDRESS_LIMIT: { + REQUEST: number; + RESPONSE: number; +}; +export declare const UTXO_LIMIT: { + REQUEST: number; + RESPONSE: number; +}; +export declare const ASSET_LIMIT: { + REQUEST: number; + RESPONSE: number; +}; +export declare const CREDENTIAL_LIMIT: { + REQUEST: number; + RESPONSE: number; +}; +export declare const BLOCK_LIMIT: { + OFFSET: number; +}; +export declare const DEX_PRICE_LIMIT: { + REQUEST_ADDRESSES: number; + REQUEST_ASSET_PAIRS: number; + RESPONSE: number; +}; diff --git a/tmp-carp-client/shared/constants.js b/tmp-carp-client/shared/constants.js new file mode 100644 index 000000000..7570dfb8f --- /dev/null +++ b/tmp-carp-client/shared/constants.js @@ -0,0 +1,28 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DEX_PRICE_LIMIT = exports.BLOCK_LIMIT = exports.CREDENTIAL_LIMIT = exports.ASSET_LIMIT = exports.UTXO_LIMIT = exports.ADDRESS_LIMIT = void 0; +// TODO: make these a mapping from out to object instead of standalone structs +exports.ADDRESS_LIMIT = { + REQUEST: 100, + RESPONSE: 1000, +}; +exports.UTXO_LIMIT = { + REQUEST: 100, + RESPONSE: 1000, +}; +exports.ASSET_LIMIT = { + REQUEST: 1000, + RESPONSE: 1000, +}; +exports.CREDENTIAL_LIMIT = { + REQUEST: 50, + RESPONSE: 50, +}; +exports.BLOCK_LIMIT = { + OFFSET: 21600, // k parameter +}; +exports.DEX_PRICE_LIMIT = { + REQUEST_ADDRESSES: 100, + REQUEST_ASSET_PAIRS: 100, + RESPONSE: 1000, +}; diff --git a/tmp-carp-client/shared/errors.d.ts b/tmp-carp-client/shared/errors.d.ts new file mode 100644 index 000000000..71624ec6e --- /dev/null +++ b/tmp-carp-client/shared/errors.d.ts @@ -0,0 +1,105 @@ +export declare enum ErrorCodes { + AddressLimitExceeded = 0, + IncorrectAddressFormat = 1, + BlockHashNotFound = 2, + PageStartNotFound = 3, + UtxoLimitExceeded = 4, + IncorrectFormat = 5, + BlockOffsetLimit = 6, + OffsetBlockNotFound = 7, + AssetLimitExceeded = 8, + CredentialLimitExceeded = 9, + AssetPairLimitExceeded = 10 +} +export declare type ErrorShape = { + code: number; + reason: string; +}; +export declare const Errors: { + readonly AddressLimitExceeded: { + readonly code: ErrorCodes.AddressLimitExceeded; + readonly prefix: "Exceeded request address limit."; + readonly detailsGen: (details: { + limit: number; + found: number; + }) => string; + }; + readonly UtxoLimitExceeded: { + readonly code: ErrorCodes.UtxoLimitExceeded; + readonly prefix: "Exceeded request utxo limit."; + readonly detailsGen: (details: { + limit: number; + found: number; + }) => string; + }; + readonly IncorrectAddressFormat: { + readonly code: ErrorCodes.IncorrectAddressFormat; + readonly prefix: "Incorrectly formatted addresses found."; + readonly detailsGen: (details: { + addresses: string[]; + }) => string; + }; + readonly IncorrectFormat: { + readonly code: ErrorCodes.IncorrectFormat; + readonly prefix: "Incorrectly formatted data found."; + readonly detailsGen: (details: object) => string; + }; + readonly BlockHashNotFound: { + readonly code: ErrorCodes.BlockHashNotFound; + readonly prefix: "Block hash not found."; + readonly detailsGen: (details: { + untilBlock: string; + }) => string; + }; + readonly PageStartNotFound: { + readonly code: ErrorCodes.PageStartNotFound; + readonly prefix: "Combination of block and transaction not found."; + readonly detailsGen: (details: { + blockHash: string; + txHash: string; + }) => string; + }; + readonly BlockOffsetLimit: { + readonly code: ErrorCodes.BlockOffsetLimit; + readonly prefix: "Block offset exceeded the limit."; + readonly detailsGen: (details: { + offset: number; + limit: number; + }) => string; + }; + readonly OffsetBlockNotFound: { + readonly code: ErrorCodes.OffsetBlockNotFound; + readonly prefix: "Block not found at offset. Are you sure your database is synchronized?"; + readonly detailsGen: (details: { + offset: number; + }) => string; + }; + readonly AssetLimitExceeded: { + readonly code: ErrorCodes.AssetLimitExceeded; + readonly prefix: "Exceeded request pair limit."; + readonly detailsGen: (details: { + limit: number; + found: number; + }) => string; + }; + readonly CredentialLimitExceeded: { + readonly code: ErrorCodes.CredentialLimitExceeded; + readonly prefix: "Exceeded request credential limit."; + readonly detailsGen: (details: { + limit: number; + found: number; + }) => string; + }; + readonly AssetPairLimitExceeded: { + readonly code: ErrorCodes.AssetPairLimitExceeded; + readonly prefix: "Exceeded request asset pair limit."; + readonly detailsGen: (details: { + limit: number; + found: number; + }) => string; + }; +}; +export declare function genErrorMessage(type: T, details: Parameters[0]): { + code: T["code"]; + reason: string; +}; diff --git a/tmp-carp-client/shared/errors.js b/tmp-carp-client/shared/errors.js new file mode 100644 index 000000000..c952969a7 --- /dev/null +++ b/tmp-carp-client/shared/errors.js @@ -0,0 +1,86 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.genErrorMessage = exports.Errors = exports.ErrorCodes = void 0; +var ErrorCodes; +(function (ErrorCodes) { + // we explicitly add the numbers to this enum + // that way removing an entry in the future isn't a breaking change + ErrorCodes[ErrorCodes["AddressLimitExceeded"] = 0] = "AddressLimitExceeded"; + ErrorCodes[ErrorCodes["IncorrectAddressFormat"] = 1] = "IncorrectAddressFormat"; + ErrorCodes[ErrorCodes["BlockHashNotFound"] = 2] = "BlockHashNotFound"; + ErrorCodes[ErrorCodes["PageStartNotFound"] = 3] = "PageStartNotFound"; + ErrorCodes[ErrorCodes["UtxoLimitExceeded"] = 4] = "UtxoLimitExceeded"; + ErrorCodes[ErrorCodes["IncorrectFormat"] = 5] = "IncorrectFormat"; + ErrorCodes[ErrorCodes["BlockOffsetLimit"] = 6] = "BlockOffsetLimit"; + ErrorCodes[ErrorCodes["OffsetBlockNotFound"] = 7] = "OffsetBlockNotFound"; + ErrorCodes[ErrorCodes["AssetLimitExceeded"] = 8] = "AssetLimitExceeded"; + ErrorCodes[ErrorCodes["CredentialLimitExceeded"] = 9] = "CredentialLimitExceeded"; + ErrorCodes[ErrorCodes["AssetPairLimitExceeded"] = 10] = "AssetPairLimitExceeded"; +})(ErrorCodes = exports.ErrorCodes || (exports.ErrorCodes = {})); +exports.Errors = { + AddressLimitExceeded: { + code: ErrorCodes.AddressLimitExceeded, + prefix: "Exceeded request address limit.", + detailsGen: (details) => `Limit of ${details.limit}, found ${details.found}`, + }, + UtxoLimitExceeded: { + code: ErrorCodes.UtxoLimitExceeded, + prefix: "Exceeded request utxo limit.", + detailsGen: (details) => `Limit of ${details.limit}, found ${details.found}`, + }, + IncorrectAddressFormat: { + code: ErrorCodes.IncorrectAddressFormat, + prefix: "Incorrectly formatted addresses found.", + detailsGen: (details) => JSON.stringify(details.addresses), + }, + IncorrectFormat: { + code: ErrorCodes.IncorrectFormat, + prefix: "Incorrectly formatted data found.", + detailsGen: (details) => JSON.stringify(details), + }, + BlockHashNotFound: { + code: ErrorCodes.BlockHashNotFound, + prefix: "Block hash not found.", + detailsGen: (details) => `Searched block hash: ${details.untilBlock}`, + }, + PageStartNotFound: { + code: ErrorCodes.PageStartNotFound, + prefix: "Combination of block and transaction not found.", + detailsGen: (details) => `Searched block hash ${details.blockHash} and tx hash ${details.txHash}`, + }, + BlockOffsetLimit: { + code: ErrorCodes.BlockOffsetLimit, + prefix: "Block offset exceeded the limit.", + detailsGen: (details) => `Offset used was ${details.offset}, but limit is ${details.limit}`, + }, + OffsetBlockNotFound: { + code: ErrorCodes.OffsetBlockNotFound, + prefix: "Block not found at offset. Are you sure your database is synchronized?", + detailsGen: (details) => `Offset used was ${details.offset}`, + }, + AssetLimitExceeded: { + code: ErrorCodes.AssetLimitExceeded, + prefix: "Exceeded request pair limit.", + detailsGen: (details) => `Limit of ${details.limit}, found ${details.found}`, + }, + CredentialLimitExceeded: { + code: ErrorCodes.CredentialLimitExceeded, + prefix: "Exceeded request credential limit.", + detailsGen: (details) => `Limit of ${details.limit}, found ${details.found}`, + }, + AssetPairLimitExceeded: { + code: ErrorCodes.AssetPairLimitExceeded, + prefix: "Exceeded request asset pair limit.", + detailsGen: (details) => `Limit of ${details.limit}, found ${details.found}`, + }, +}; +function genErrorMessage(type, details) { + const generatedDetails = type.detailsGen(details); + return { + code: type.code, + reason: generatedDetails.length === 0 + ? type.prefix + : `${type.prefix} ${generatedDetails}`, + }; +} +exports.genErrorMessage = genErrorMessage; diff --git a/tmp-carp-client/shared/models/Address.d.ts b/tmp-carp-client/shared/models/Address.d.ts new file mode 100644 index 000000000..2a610bc29 --- /dev/null +++ b/tmp-carp-client/shared/models/Address.d.ts @@ -0,0 +1,42 @@ +/** + * @pattern [0-9a-fA-F]{64} + * @example "8200581c8baf48931c5187cd59fde553f4e7da2e1a2aa9202ec6e67815cb3f8a" + */ +export declare type CredentialHex = string; +/** + * @example "stake1ux236z4g4r4pztn5v69txyj2yq6a3esq5x4p4stxydra7zsnv25ue" + * @example "addr1q9ya8v4pe33nlkgftyd70nhhp407pvnjjcsddhf64sh9gegwtvyxm7r69gx9cwvtg82p87zpwmzj0kj7tjmyraze3pzqe6zxzv" + */ +export declare type Bech32FullAddress = string; +/** + * @example "script1ffv7hkf75573h0mlsg3jc7cpyuq2pn6tk7xc08dtkx3q5ah7h47" + */ +export declare type Bech32Credential = string; +/** + * @example "Ae2tdPwUPEZHu3NZa6kCwet2msq4xrBXKHBDvogFKwMsF18Jca8JHLRBas7" + * @example "DdzFFzCqrht3UrnL3bCK5QMi9XtmkqGG3G2tmuY17tWyhq63S7EzMpJPogoPKx15drcnJkH4A7QdqYgs4h3XD1zXb3zkDyBuAZcaqYDS" + */ +export declare type Base58Address = string; +/** + * Supported types: + * - Credential hex (8200581c...) - note this is not a keyhash (it contains a credential type prefix) + * - Bech32 full address (`addr` / `addr_test` / `stake` / `stake_test`) + * - Bech32 credentials ( `addr_vkh`, `script`, etc.) - this is the recommended approach + * - Legacy Byron format (Ae2, Dd, etc.) + * + * Note: we recommend avoiding to query base addresses history using bech32 + * As Cardano UTXO spendability depends only on the payment credential and not the full base address + * The result will also miss transactions that are only related to the payment key of the address + * ex: the payment key is used in a multisig + * + * Note: using two different address representations in the same query will hurt performance (ex: addr1 and addr_vkh1) + * This because under-the-hood this will run multiple independent SQL queries for the different formats + * + * Warning: querying reward bech32 addresses is equivalent to querying the stake credential inside it + * This may return more results than expected (ex: a multisig containing the staking key of the wallet) + * + * @example "addr1qxzksn47upfu4fwqfmxx29rn5znlkw3ag98ul8rgndwm79aaql88xw6ez84k2ln6lawnt79sdqh7qwq0wcs672auktmsawshfe" + */ +export declare type Address = CredentialHex | Bech32FullAddress | Bech32Credential | Base58Address; +export declare type Credential = CredentialHex | Bech32Credential; +export declare type DisplayFormatAddress = Base58Address | Bech32FullAddress; diff --git a/tmp-carp-client/shared/models/Address.js b/tmp-carp-client/shared/models/Address.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/tmp-carp-client/shared/models/Address.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/AddressUsed.d.ts b/tmp-carp-client/shared/models/AddressUsed.d.ts new file mode 100644 index 000000000..e319d4b75 --- /dev/null +++ b/tmp-carp-client/shared/models/AddressUsed.d.ts @@ -0,0 +1,8 @@ +import { Address } from "./Address"; +import { Pagination } from "./common"; +export declare type AddressUsedRequest = { + addresses: Address[]; +} & Pagination; +export declare type AddressUsedResponse = { + addresses: Address[]; +}; diff --git a/tmp-carp-client/shared/models/AddressUsed.js b/tmp-carp-client/shared/models/AddressUsed.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/tmp-carp-client/shared/models/AddressUsed.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/BlockLatest.d.ts b/tmp-carp-client/shared/models/BlockLatest.d.ts new file mode 100644 index 000000000..305a9b6e8 --- /dev/null +++ b/tmp-carp-client/shared/models/BlockLatest.d.ts @@ -0,0 +1,36 @@ +export declare type BlockLatestRequest = { + /** + * Note: an offset of -1 is treated the same as an offset of +1 + * + * It's usually best to avoid pagination on the latest block as in Cardano, small rollbacks of 1~2 block are very frequent and expected (read Ouroboros for why) + * That means that using this block for pagination will often lead to your pagination being invalidated by a rollback + * To avoid this, you can pass an `offset` from the tip for more stable pagination + */ + offset: number; +}; +export declare type BlockSubset = { + /** + * @example 1 + */ + era: number; + /** + * [0-9a-fA-F]{64} + * @example "cf8c63a909d91776e27f7d05457e823a9dba606a7ab499ac435e7904ee70d7c8" + */ + hash: string; + /** + * @example 4512067 + */ + height: number; + /** + * @example 209 + */ + epoch: number; + /** + * @example 4924800 + */ + slot: number; +}; +export declare type BlockLatestResponse = { + block: BlockSubset; +}; diff --git a/tmp-carp-client/shared/models/BlockLatest.js b/tmp-carp-client/shared/models/BlockLatest.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/tmp-carp-client/shared/models/BlockLatest.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/CredentialAddress.d.ts b/tmp-carp-client/shared/models/CredentialAddress.d.ts new file mode 100644 index 000000000..e12f1db79 --- /dev/null +++ b/tmp-carp-client/shared/models/CredentialAddress.d.ts @@ -0,0 +1,9 @@ +import type { Credential, Bech32FullAddress } from "./Address"; +import type { UntilBlockPagination, PageInfo } from "./common"; +export declare type CredentialAddressRequest = { + credentials: Credential[]; + after?: Bech32FullAddress; +} & UntilBlockPagination; +export declare type CredentialAddressResponse = { + addresses: Bech32FullAddress[]; +} & PageInfo; diff --git a/tmp-carp-client/shared/models/CredentialAddress.js b/tmp-carp-client/shared/models/CredentialAddress.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/tmp-carp-client/shared/models/CredentialAddress.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/DelegationForAddress.d.ts b/tmp-carp-client/shared/models/DelegationForAddress.d.ts new file mode 100644 index 000000000..59a3ec214 --- /dev/null +++ b/tmp-carp-client/shared/models/DelegationForAddress.d.ts @@ -0,0 +1,11 @@ +import { Address } from "./Address"; +export declare type DelegationForAddressRequest = { + address: Address; + until: { + absoluteSlot: number; + }; +}; +export declare type DelegationForAddressResponse = { + pool: string | null; + txId: string | null; +}; diff --git a/tmp-carp-client/shared/models/DelegationForAddress.js b/tmp-carp-client/shared/models/DelegationForAddress.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/tmp-carp-client/shared/models/DelegationForAddress.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/DelegationForPool.d.ts b/tmp-carp-client/shared/models/DelegationForPool.d.ts new file mode 100644 index 000000000..d7bf794af --- /dev/null +++ b/tmp-carp-client/shared/models/DelegationForPool.d.ts @@ -0,0 +1,15 @@ +import { Address } from "./Address"; +import { Pool, PoolHex } from "./Pool"; +export declare type DelegationForPoolRequest = { + pools: Pool[]; + range: { + minSlot: number; + maxSlot: number; + }; +}; +export declare type DelegationForPoolResponse = { + credential: Address; + pool: PoolHex | null; + txId: string | null; + slot: number; +}[]; diff --git a/tmp-carp-client/shared/models/DelegationForPool.js b/tmp-carp-client/shared/models/DelegationForPool.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/tmp-carp-client/shared/models/DelegationForPool.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/DexLastPrice.d.ts b/tmp-carp-client/shared/models/DexLastPrice.d.ts new file mode 100644 index 000000000..6c015b060 --- /dev/null +++ b/tmp-carp-client/shared/models/DexLastPrice.d.ts @@ -0,0 +1,26 @@ +import { Dex, Asset, Amount } from "./common"; +export declare type DexLastPrice = { + asset1: Asset; + asset2: Asset; + amount1: Amount; + amount2: Amount; + dex: Dex; +}; +export declare enum PriceType { + Buy = "buy", + Sell = "sell", + /** + * Mean is not AVG from the last values, but the remaining amount of assets on the pool output + */ + Mean = "mean" +} +export declare type DexLastPriceRequest = { + assetPairs: { + asset1: Asset; + asset2: Asset; + }[]; + type: PriceType; +}; +export declare type DexLastPriceResponse = { + lastPrice: DexLastPrice[]; +}; diff --git a/tmp-carp-client/shared/models/DexLastPrice.js b/tmp-carp-client/shared/models/DexLastPrice.js new file mode 100644 index 000000000..ccd110b2e --- /dev/null +++ b/tmp-carp-client/shared/models/DexLastPrice.js @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.PriceType = void 0; +var PriceType; +(function (PriceType) { + PriceType["Buy"] = "buy"; + PriceType["Sell"] = "sell"; + /** + * Mean is not AVG from the last values, but the remaining amount of assets on the pool output + */ + PriceType["Mean"] = "mean"; +})(PriceType = exports.PriceType || (exports.PriceType = {})); +; diff --git a/tmp-carp-client/shared/models/DexMeanPrice.d.ts b/tmp-carp-client/shared/models/DexMeanPrice.d.ts new file mode 100644 index 000000000..cb5eb8e71 --- /dev/null +++ b/tmp-carp-client/shared/models/DexMeanPrice.d.ts @@ -0,0 +1,21 @@ +import { Dex, Pagination, Asset, Amount } from "./common"; +export declare type DexMeanPrice = { + tx_hash: string; + dex: Dex; + asset1: Asset; + asset2: Asset; + amount1: Amount; + amount2: Amount; +}; +export declare type DexMeanPriceRequest = { + assetPairs: { + asset1: Asset; + asset2: Asset; + }[]; + dexes: Array; + /** Defaults to `DEX_PRICE_LIMIT.RESPONSE` */ + limit?: number; +} & Pagination; +export declare type DexMeanPriceResponse = { + meanPrices: DexMeanPrice[]; +}; diff --git a/tmp-carp-client/shared/models/DexMeanPrice.js b/tmp-carp-client/shared/models/DexMeanPrice.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/tmp-carp-client/shared/models/DexMeanPrice.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/DexSwap.d.ts b/tmp-carp-client/shared/models/DexSwap.d.ts new file mode 100644 index 000000000..1f831b18c --- /dev/null +++ b/tmp-carp-client/shared/models/DexSwap.d.ts @@ -0,0 +1,22 @@ +import { Pagination, Dex, Direction, Asset, Amount } from "./common"; +export declare type DexSwap = { + tx_hash: string; + dex: Dex; + asset1: Asset; + asset2: Asset; + amount1: Amount; + amount2: Amount; + direction: Direction; +}; +export declare type DexSwapRequest = { + dexes: Array; + assetPairs: { + asset1: Asset; + asset2: Asset; + }[]; + /** Defaults to `DEX_PRICE_LIMIT.RESPONSE` */ + limit?: number; +} & Pagination; +export declare type DexSwapResponse = { + swap: DexSwap[]; +}; diff --git a/tmp-carp-client/shared/models/DexSwap.js b/tmp-carp-client/shared/models/DexSwap.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/tmp-carp-client/shared/models/DexSwap.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/PolicyIdAssetMap.d.ts b/tmp-carp-client/shared/models/PolicyIdAssetMap.d.ts new file mode 100644 index 000000000..8769f6607 --- /dev/null +++ b/tmp-carp-client/shared/models/PolicyIdAssetMap.d.ts @@ -0,0 +1,35 @@ +/** + * @pattern [0-9a-fA-F]{56} + * @example "b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f" + */ +export declare type PolicyId = string; +/** + * @pattern [0-9a-fA-F]{0,64} + * @example "42657272794e617679" + */ +export declare type AssetName = string; +/** + * @pattern [0-9a-fA-F]* + * @example "a365636f6c6f72672330303030383065696d616765783a697066733a2f2f697066732f516d534b593167317a5375506b3536635869324b38524e766961526b44485633505a756a7474663755676b343379646e616d656a4265727279204e617679" + */ +declare type Cip25Metadata = string; +export declare type PolicyIdAssetMapType = { + /** + * @example { "b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f": ["42657272794e617679"] } + */ + assets: { + [policyId: string]: AssetName[]; + }; +}; +export declare type Cip25Response = { + /** + * @example { "b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f": { "42657272794e617679": "a365636f6c6f72672330303030383065696d616765783a697066733a2f2f697066732f516d534b593167317a5375506b3536635869324b38524e766961526b44485633505a756a7474663755676b343379646e616d656a4265727279204e617679" }} + */ + cip25: { + [policyId: string]: { + [assetName: string]: Cip25Metadata; + }; + }; +}; +export declare type NativeAsset = [policyId: PolicyId, assetName: AssetName]; +export {}; diff --git a/tmp-carp-client/shared/models/PolicyIdAssetMap.js b/tmp-carp-client/shared/models/PolicyIdAssetMap.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/tmp-carp-client/shared/models/PolicyIdAssetMap.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/Pool.d.ts b/tmp-carp-client/shared/models/Pool.d.ts new file mode 100644 index 000000000..45632fed2 --- /dev/null +++ b/tmp-carp-client/shared/models/Pool.d.ts @@ -0,0 +1,6 @@ +/** + * @pattern [0-9a-fA-F]{56} + * @example "8200581c8baf48931c5187cd59fde553f4e7da2e1a2aa9202ec6e67815cb3f8a" + */ +export declare type PoolHex = string; +export declare type Pool = PoolHex; diff --git a/tmp-carp-client/shared/models/Pool.js b/tmp-carp-client/shared/models/Pool.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/tmp-carp-client/shared/models/Pool.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/TransactionHistory.d.ts b/tmp-carp-client/shared/models/TransactionHistory.d.ts new file mode 100644 index 000000000..a56c176e1 --- /dev/null +++ b/tmp-carp-client/shared/models/TransactionHistory.d.ts @@ -0,0 +1,37 @@ +import type { Address } from "./Address"; +import type { BlockSubset } from "./BlockLatest"; +import type { Pagination, RelationFilter } from "./common"; +export declare type TransactionHistoryRequest = { + addresses: Address[]; + /** Defaults to `RelationFilterType.NO_FILTER` */ + relationFilter?: RelationFilter; + /** Defaults to `ADDRESS_LIMIT.RESPONSE` */ + limit?: number; +} & Pagination; +export declare type BlockInfo = BlockSubset & { + /** index of tx in block */ + indexInBlock: number; + isValid: boolean; +}; +export declare type TransactionInfo = { + /** + * Strictly speaking, you can calculate this by hashing the payload + * It's just provided for convenience + * @pattern [0-9a-fA-F]{64} + * @example "011b86557367525891331b4bb985545120efc335b606d6a1c0d5a35fb330f421" + */ + hash: string; + /** + * cbor-encoded transaction + * @pattern [0-9a-fA-F]* + * @example "84a500818258209cb4f8c2eecccc9f1e13768046f37ef56dcb5a4dc44f58907fe4ae21d7cf621d020181825839019cb581f4337a6142e477af6e00fe41b1fc4a5944a575681b8499a3c0bd07ce733b5911eb657e7aff5d35f8b0682fe0380f7621af2bbcb2f71b0000000586321393021a0002a389031a004b418c048183028200581cbd07ce733b5911eb657e7aff5d35f8b0682fe0380f7621af2bbcb2f7581c53215c471b7ac752e3ddf8f2c4c1e6ed111857bfaa675d5e31ce8bcea1008282582073e584cda9fe483fbefb81c251e616018a2b493ef56820f0095b63adede54ff758404f13df42ef1684a3fd55255d8368c9ecbd15b55e2761a2991cc4f401a753c16d6da1da158e84b87b4de9715af7d9adc0d79a7c1f2c3097228e02b20be4616a0c82582066c606974819f457ceface78ee3c4d181a84ca9927a3cfc92ef8c0b6dd4576e8584014ae9ee9ed5eb5700b6c5ac270543671f5d4f943d4726f4614dc061174ee29db44b9e7fc58e6c98c13fad8594f2633c5ec70a9a87f5cbf130308a42edb553001f5f6" + */ + payload: string; +}; +export declare type TxAndBlockInfo = { + block: BlockInfo; + transaction: TransactionInfo; +}; +export declare type TransactionHistoryResponse = { + transactions: TxAndBlockInfo[]; +}; diff --git a/tmp-carp-client/shared/models/TransactionHistory.js b/tmp-carp-client/shared/models/TransactionHistory.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/tmp-carp-client/shared/models/TransactionHistory.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/TransactionOutput.d.ts b/tmp-carp-client/shared/models/TransactionOutput.d.ts new file mode 100644 index 000000000..563b61b1a --- /dev/null +++ b/tmp-carp-client/shared/models/TransactionOutput.d.ts @@ -0,0 +1,18 @@ +import type { UtxoPointer } from "./common"; +import { BlockInfo } from "./TransactionHistory"; +export declare type TransactionOutputRequest = { + utxoPointers: UtxoPointer[]; +}; +export declare type UtxoAndBlockInfo = { + block: BlockInfo; + utxo: UtxoPointer & { + /** + * @pattern [0-9a-fA-F]* + * @example "825839019cb581f4337a6142e477af6e00fe41b1fc4a5944a575681b8499a3c0bd07ce733b5911eb657e7aff5d35f8b0682fe0380f7621af2bbcb2f71b0000000586321393" + */ + payload: string; + }; +}; +export declare type TransactionOutputResponse = { + utxos: UtxoAndBlockInfo[]; +}; diff --git a/tmp-carp-client/shared/models/TransactionOutput.js b/tmp-carp-client/shared/models/TransactionOutput.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/tmp-carp-client/shared/models/TransactionOutput.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/common.d.ts b/tmp-carp-client/shared/models/common.d.ts new file mode 100644 index 000000000..1674f1ca2 --- /dev/null +++ b/tmp-carp-client/shared/models/common.d.ts @@ -0,0 +1,106 @@ +import { AssetName, PolicyId } from "./PolicyIdAssetMap"; +/** + * Filter which uses of the address are considered relevant for the query. + * + * This is a bitmask, so you can combine multiple options + * ex: `RelationFilterType.Input & RelationFilterType.Output` + * + * Note: relations only apply to credentials and not to full bech32 addresses + * @pattern ([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]) + * @example 255 + */ +export declare type RelationFilter = number; +export declare enum RelationFilterType { + FILTER_ALL = 0, + Witness = 1, + Input = 2, + Output = 4, + StakeDeregistration = 8, + StakeDelegation = 16, + StakeRegistration = 32, + DelegationTarget = 64, + PoolOwner = 128, + PoolOperator = 256, + PoolReward = 512, + MirRecipient = 1024, + Withdrawal = 2048, + RequiredSigner = 4096, + InNativeScript = 8192, + UnusedInput = 16384, + UnusedInputStake = 32768, + InputStake = 65536, + OutputStake = 131072, + UnusedOutput = 262144, + UnusedOutputStake = 524288, + ReferenceInput = 1048576, + ReferenceInputStake = 2097152, + NO_FILTER = 255 +} +export declare type BlockTxPair = { + /** + * block hash + * @pattern [0-9a-fA-F]{64} + * @example "2548ad5d0d9d33d50ab43151f574474454017a733e307229fa509c4987ca9782" + */ + block: string; + /** + * tx hash + * @pattern [0-9a-fA-F]{64} + * @example "336d520af58ff440b2f20210ddb5ef5b2c035e0ec7ec258bae4b519a87fa1696" + */ + tx: string; +}; +export declare type AfterBlockPagination = { + /** + * Omitting "after" means you query starting from the genesis block. + * + * Note: the reason you have to specify both a tx hash AND a block hash in the "after" for pagination + * is because this is the only way to make sure your pagination doesn't get affected by rollbacks. + * ex: a rollback could cause a tx to be removed from one block and appear in a totally different block. + * Specifying the block hash as well allows making sure you're paginating on the right tx in the right block. + */ + after?: BlockTxPair; +}; +export declare type UntilBlockPagination = { + /** + * block hash - inclusive + * @pattern [0-9a-fA-F]{64} + * @example "cf8c63a909d91776e27f7d05457e823a9dba606a7ab499ac435e7904ee70d7c8" + */ + untilBlock: string; +}; +export declare type Pagination = AfterBlockPagination & UntilBlockPagination; +export declare type UtxoPointer = { + /** + * @pattern [0-9a-fA-F]{64} + * @example "011b86557367525891331b4bb985545120efc335b606d6a1c0d5a35fb330f421" + */ + txHash: string; + index: number; +}; +export declare type PageInfo = { + pageInfo: { + /** + * @example false + */ + hasNextPage: boolean; + }; +}; +export declare enum Direction { + Buy = "buy", + Sell = "sell" +} +export declare enum Dex { + WingRiders = "WingRiders", + SundaeSwap = "SundaeSwap", + MinSwap = "MinSwap" +} +export declare type Asset = { + policyId: PolicyId; + assetName: AssetName; +} | null; +/** + * @pattern [1-9][0-9]* + * @example "2042352568679" + */ +export declare type Amount = string; diff --git a/tmp-carp-client/shared/models/common.js b/tmp-carp-client/shared/models/common.js new file mode 100644 index 000000000..e611350b8 --- /dev/null +++ b/tmp-carp-client/shared/models/common.js @@ -0,0 +1,44 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Dex = exports.Direction = exports.RelationFilterType = void 0; +// note: keep in sync with Rust type TxCredentialRelationValue +var RelationFilterType; +(function (RelationFilterType) { + RelationFilterType[RelationFilterType["FILTER_ALL"] = 0] = "FILTER_ALL"; + RelationFilterType[RelationFilterType["Witness"] = 1] = "Witness"; + RelationFilterType[RelationFilterType["Input"] = 2] = "Input"; + RelationFilterType[RelationFilterType["Output"] = 4] = "Output"; + RelationFilterType[RelationFilterType["StakeDeregistration"] = 8] = "StakeDeregistration"; + RelationFilterType[RelationFilterType["StakeDelegation"] = 16] = "StakeDelegation"; + RelationFilterType[RelationFilterType["StakeRegistration"] = 32] = "StakeRegistration"; + RelationFilterType[RelationFilterType["DelegationTarget"] = 64] = "DelegationTarget"; + RelationFilterType[RelationFilterType["PoolOwner"] = 128] = "PoolOwner"; + RelationFilterType[RelationFilterType["PoolOperator"] = 256] = "PoolOperator"; + RelationFilterType[RelationFilterType["PoolReward"] = 512] = "PoolReward"; + RelationFilterType[RelationFilterType["MirRecipient"] = 1024] = "MirRecipient"; + RelationFilterType[RelationFilterType["Withdrawal"] = 2048] = "Withdrawal"; + RelationFilterType[RelationFilterType["RequiredSigner"] = 4096] = "RequiredSigner"; + RelationFilterType[RelationFilterType["InNativeScript"] = 8192] = "InNativeScript"; + RelationFilterType[RelationFilterType["UnusedInput"] = 16384] = "UnusedInput"; + RelationFilterType[RelationFilterType["UnusedInputStake"] = 32768] = "UnusedInputStake"; + RelationFilterType[RelationFilterType["InputStake"] = 65536] = "InputStake"; + RelationFilterType[RelationFilterType["OutputStake"] = 131072] = "OutputStake"; + RelationFilterType[RelationFilterType["UnusedOutput"] = 262144] = "UnusedOutput"; + RelationFilterType[RelationFilterType["UnusedOutputStake"] = 524288] = "UnusedOutputStake"; + RelationFilterType[RelationFilterType["ReferenceInput"] = 1048576] = "ReferenceInput"; + RelationFilterType[RelationFilterType["ReferenceInputStake"] = 2097152] = "ReferenceInputStake"; + RelationFilterType[RelationFilterType["NO_FILTER"] = 255] = "NO_FILTER"; +})(RelationFilterType = exports.RelationFilterType || (exports.RelationFilterType = {})); +var Direction; +(function (Direction) { + Direction["Buy"] = "buy"; + Direction["Sell"] = "sell"; +})(Direction = exports.Direction || (exports.Direction = {})); +; +var Dex; +(function (Dex) { + Dex["WingRiders"] = "WingRiders"; + Dex["SundaeSwap"] = "SundaeSwap"; + Dex["MinSwap"] = "MinSwap"; +})(Dex = exports.Dex || (exports.Dex = {})); +; diff --git a/tmp-carp-client/shared/routes.d.ts b/tmp-carp-client/shared/routes.d.ts new file mode 100644 index 000000000..37d9d642f --- /dev/null +++ b/tmp-carp-client/shared/routes.d.ts @@ -0,0 +1,81 @@ +import type { AddressUsedRequest, AddressUsedResponse } from "./models/AddressUsed"; +import { BlockLatestRequest, BlockLatestResponse } from "./models/BlockLatest"; +import type { CredentialAddressRequest, CredentialAddressResponse } from "./models/CredentialAddress"; +import { DexMeanPriceRequest, DexMeanPriceResponse } from "./models/DexMeanPrice"; +import { DexSwapRequest, DexSwapResponse } from "./models/DexSwap"; +import { DexLastPriceRequest, DexLastPriceResponse } from "./models/DexLastPrice"; +import { Cip25Response, PolicyIdAssetMapType } from "./models/PolicyIdAssetMap"; +import type { TransactionHistoryRequest, TransactionHistoryResponse } from "./models/TransactionHistory"; +import type { TransactionOutputRequest, TransactionOutputResponse } from "./models/TransactionOutput"; +import type { DelegationForAddressRequest, DelegationForAddressResponse } from "./models/DelegationForAddress"; +import type { DelegationForPoolRequest, DelegationForPoolResponse } from "./models/DelegationForPool"; +export declare enum Routes { + transactionHistory = "transaction/history", + transactionOutput = "transaction/output", + addressUsed = "address/used", + credentialAddress = "credential/address", + blockLatest = "block/latest", + metadataNft = "metadata/nft", + dexMeanPrice = "dex/mean-price", + dexSwap = "dex/swap", + dexLastPrice = "dex/last-price", + delegationForAddress = "delegation/address", + delegationForPool = "delegation/pool" +} +export declare type EndpointTypes = { + [Routes.transactionHistory]: { + name: typeof Routes.transactionHistory; + input: TransactionHistoryRequest; + response: TransactionHistoryResponse; + }; + [Routes.transactionOutput]: { + name: typeof Routes.transactionOutput; + input: TransactionOutputRequest; + response: TransactionOutputResponse; + }; + [Routes.addressUsed]: { + name: typeof Routes.addressUsed; + input: AddressUsedRequest; + response: AddressUsedResponse; + }; + [Routes.blockLatest]: { + name: typeof Routes.blockLatest; + input: BlockLatestRequest; + response: BlockLatestResponse; + }; + [Routes.metadataNft]: { + name: typeof Routes.metadataNft; + input: PolicyIdAssetMapType; + response: Cip25Response; + }; + [Routes.credentialAddress]: { + name: typeof Routes.credentialAddress; + input: CredentialAddressRequest; + response: CredentialAddressResponse; + }; + [Routes.dexMeanPrice]: { + name: typeof Routes.dexMeanPrice; + input: DexMeanPriceRequest; + response: DexMeanPriceResponse; + }; + [Routes.dexSwap]: { + name: typeof Routes.dexSwap; + input: DexSwapRequest; + response: DexSwapResponse; + }; + [Routes.dexLastPrice]: { + name: typeof Routes.dexLastPrice; + input: DexLastPriceRequest; + response: DexLastPriceResponse; + }; + [Routes.delegationForAddress]: { + name: typeof Routes.delegationForAddress; + input: DelegationForAddressRequest; + response: DelegationForAddressResponse; + }; + [Routes.delegationForPool]: { + name: typeof Routes.delegationForPool; + input: DelegationForPoolRequest; + response: DelegationForPoolResponse; + }; +}; diff --git a/tmp-carp-client/shared/routes.js b/tmp-carp-client/shared/routes.js new file mode 100644 index 000000000..e0414a629 --- /dev/null +++ b/tmp-carp-client/shared/routes.js @@ -0,0 +1,17 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.Routes = void 0; +var Routes; +(function (Routes) { + Routes["transactionHistory"] = "transaction/history"; + Routes["transactionOutput"] = "transaction/output"; + Routes["addressUsed"] = "address/used"; + Routes["credentialAddress"] = "credential/address"; + Routes["blockLatest"] = "block/latest"; + Routes["metadataNft"] = "metadata/nft"; + Routes["dexMeanPrice"] = "dex/mean-price"; + Routes["dexSwap"] = "dex/swap"; + Routes["dexLastPrice"] = "dex/last-price"; + Routes["delegationForAddress"] = "delegation/address"; + Routes["delegationForPool"] = "delegation/pool"; +})(Routes = exports.Routes || (exports.Routes = {})); From a8f417cd93b4a513c6e730de884e1595e844ca87 Mon Sep 17 00:00:00 2001 From: Enzo Cioppettini Date: Mon, 4 Dec 2023 15:10:46 -0300 Subject: [PATCH 03/24] replace carp local client with 2.3.0 from npm --- tmp-carp-client/README.md | 5 - tmp-carp-client/client/src/index.d.ts | 11 -- tmp-carp-client/client/src/index.js | 34 ------ tmp-carp-client/client/src/paginated.d.ts | 13 --- tmp-carp-client/client/src/paginated.js | 83 -------------- tmp-carp-client/package.json | 49 -------- tmp-carp-client/shared/constants.d.ts | 24 ---- tmp-carp-client/shared/constants.js | 28 ----- tmp-carp-client/shared/errors.d.ts | 105 ----------------- tmp-carp-client/shared/errors.js | 86 -------------- tmp-carp-client/shared/models/Address.d.ts | 42 ------- tmp-carp-client/shared/models/Address.js | 2 - .../shared/models/AddressUsed.d.ts | 8 -- tmp-carp-client/shared/models/AddressUsed.js | 2 - .../shared/models/BlockLatest.d.ts | 36 ------ tmp-carp-client/shared/models/BlockLatest.js | 2 - .../shared/models/CredentialAddress.d.ts | 9 -- .../shared/models/CredentialAddress.js | 2 - .../shared/models/DelegationForAddress.d.ts | 11 -- .../shared/models/DelegationForAddress.js | 2 - .../shared/models/DelegationForPool.d.ts | 15 --- .../shared/models/DelegationForPool.js | 2 - .../shared/models/DexLastPrice.d.ts | 26 ----- tmp-carp-client/shared/models/DexLastPrice.js | 13 --- .../shared/models/DexMeanPrice.d.ts | 21 ---- tmp-carp-client/shared/models/DexMeanPrice.js | 2 - tmp-carp-client/shared/models/DexSwap.d.ts | 22 ---- tmp-carp-client/shared/models/DexSwap.js | 2 - .../shared/models/PolicyIdAssetMap.d.ts | 35 ------ .../shared/models/PolicyIdAssetMap.js | 2 - tmp-carp-client/shared/models/Pool.d.ts | 6 - tmp-carp-client/shared/models/Pool.js | 2 - .../shared/models/TransactionHistory.d.ts | 37 ------ .../shared/models/TransactionHistory.js | 2 - .../shared/models/TransactionOutput.d.ts | 18 --- .../shared/models/TransactionOutput.js | 2 - tmp-carp-client/shared/models/common.d.ts | 106 ------------------ tmp-carp-client/shared/models/common.js | 44 -------- tmp-carp-client/shared/routes.d.ts | 81 ------------- tmp-carp-client/shared/routes.js | 17 --- 40 files changed, 1009 deletions(-) delete mode 100644 tmp-carp-client/README.md delete mode 100644 tmp-carp-client/client/src/index.d.ts delete mode 100644 tmp-carp-client/client/src/index.js delete mode 100644 tmp-carp-client/client/src/paginated.d.ts delete mode 100644 tmp-carp-client/client/src/paginated.js delete mode 100644 tmp-carp-client/package.json delete mode 100644 tmp-carp-client/shared/constants.d.ts delete mode 100644 tmp-carp-client/shared/constants.js delete mode 100644 tmp-carp-client/shared/errors.d.ts delete mode 100644 tmp-carp-client/shared/errors.js delete mode 100644 tmp-carp-client/shared/models/Address.d.ts delete mode 100644 tmp-carp-client/shared/models/Address.js delete mode 100644 tmp-carp-client/shared/models/AddressUsed.d.ts delete mode 100644 tmp-carp-client/shared/models/AddressUsed.js delete mode 100644 tmp-carp-client/shared/models/BlockLatest.d.ts delete mode 100644 tmp-carp-client/shared/models/BlockLatest.js delete mode 100644 tmp-carp-client/shared/models/CredentialAddress.d.ts delete mode 100644 tmp-carp-client/shared/models/CredentialAddress.js delete mode 100644 tmp-carp-client/shared/models/DelegationForAddress.d.ts delete mode 100644 tmp-carp-client/shared/models/DelegationForAddress.js delete mode 100644 tmp-carp-client/shared/models/DelegationForPool.d.ts delete mode 100644 tmp-carp-client/shared/models/DelegationForPool.js delete mode 100644 tmp-carp-client/shared/models/DexLastPrice.d.ts delete mode 100644 tmp-carp-client/shared/models/DexLastPrice.js delete mode 100644 tmp-carp-client/shared/models/DexMeanPrice.d.ts delete mode 100644 tmp-carp-client/shared/models/DexMeanPrice.js delete mode 100644 tmp-carp-client/shared/models/DexSwap.d.ts delete mode 100644 tmp-carp-client/shared/models/DexSwap.js delete mode 100644 tmp-carp-client/shared/models/PolicyIdAssetMap.d.ts delete mode 100644 tmp-carp-client/shared/models/PolicyIdAssetMap.js delete mode 100644 tmp-carp-client/shared/models/Pool.d.ts delete mode 100644 tmp-carp-client/shared/models/Pool.js delete mode 100644 tmp-carp-client/shared/models/TransactionHistory.d.ts delete mode 100644 tmp-carp-client/shared/models/TransactionHistory.js delete mode 100644 tmp-carp-client/shared/models/TransactionOutput.d.ts delete mode 100644 tmp-carp-client/shared/models/TransactionOutput.js delete mode 100644 tmp-carp-client/shared/models/common.d.ts delete mode 100644 tmp-carp-client/shared/models/common.js delete mode 100644 tmp-carp-client/shared/routes.d.ts delete mode 100644 tmp-carp-client/shared/routes.js diff --git a/tmp-carp-client/README.md b/tmp-carp-client/README.md deleted file mode 100644 index 06e593bcd..000000000 --- a/tmp-carp-client/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Carp Client - -Typescript client for Carp - the Cardano Postgres indexer. - -You can find the full documentation for the indexer, the webserver and this Typescript client [here](https://dcspark.github.io/carp/docs/intro/) diff --git a/tmp-carp-client/client/src/index.d.ts b/tmp-carp-client/client/src/index.d.ts deleted file mode 100644 index df155a2d1..000000000 --- a/tmp-carp-client/client/src/index.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import type { EndpointTypes } from "../../shared/routes"; -import type { ErrorShape } from "../../shared/errors"; -import type { AxiosError, AxiosResponse } from "axios"; -import type { Routes } from "../../shared/routes"; -export type { RelationFilter, RelationFilterType, Pagination, UtxoPointer, } from "../../shared/models/common"; -export * from "../../shared/routes"; -export * from "../../shared/errors"; -export type { EndpointTypes } from "../../shared/routes"; -export type { ErrorShape } from "../../shared/errors"; -export declare function query(urlBase: string, route: T, data: EndpointTypes[T]["input"]): Promise; -export declare function getErrorResponse(err: AxiosError): AxiosResponse; diff --git a/tmp-carp-client/client/src/index.js b/tmp-carp-client/client/src/index.js deleted file mode 100644 index 35234a09a..000000000 --- a/tmp-carp-client/client/src/index.js +++ /dev/null @@ -1,34 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __exportStar = (this && this.__exportStar) || function(m, exports) { - for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getErrorResponse = exports.query = void 0; -const axios_1 = __importDefault(require("axios")); -__exportStar(require("../../shared/routes"), exports); -__exportStar(require("../../shared/errors"), exports); -async function query(urlBase, route, data) { - const result = await axios_1.default.post(`${urlBase}/${route}`, data); - return result.data; -} -exports.query = query; -function getErrorResponse(err) { - if (err.response == null) - throw new Error(`Unexpected null response`); - return err.response; -} -exports.getErrorResponse = getErrorResponse; diff --git a/tmp-carp-client/client/src/paginated.d.ts b/tmp-carp-client/client/src/paginated.d.ts deleted file mode 100644 index 836e98bf0..000000000 --- a/tmp-carp-client/client/src/paginated.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import type { EndpointTypes } from "./index"; -import { Routes } from "./index"; -import type { Pagination } from "../../shared/models/common"; -import type cml from "@dcspark/cardano-multiplatform-lib-nodejs"; -/** - * If you don't mind using axios, - * you can use the paginated endpoints provided by the client - * However this endpoint allows you to pass in your own querying library - */ -export declare function paginateQuery(initialRequest: T, query: (request: T) => Promise, pageFromResponse: (resp: undefined | Response) => Pagination["after"]): Promise; -export declare function paginatedTransactionHistory(urlBase: string, initialRequest: Omit): Promise; -export declare function paginatedMetadataNft(urlBase: string, request: EndpointTypes[Routes.metadataNft]["input"]): Promise; -export declare function nftCborToJson(request: EndpointTypes[Routes.metadataNft]["response"], cmlTransactioMetadatum: typeof cml.TransactionMetadatum, decode_metadatum_to_json_str: typeof cml.decode_metadatum_to_json_str, conversionType: cml.MetadataJsonSchema): EndpointTypes[Routes.metadataNft]["response"]; diff --git a/tmp-carp-client/client/src/paginated.js b/tmp-carp-client/client/src/paginated.js deleted file mode 100644 index a67850a8a..000000000 --- a/tmp-carp-client/client/src/paginated.js +++ /dev/null @@ -1,83 +0,0 @@ -"use strict"; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.nftCborToJson = exports.paginatedMetadataNft = exports.paginatedTransactionHistory = exports.paginateQuery = void 0; -const index_1 = require("./index"); -const index_2 = require("./index"); -const chunk_1 = __importDefault(require("lodash/chunk")); -const constants_1 = require("../../shared/constants"); -const merge_1 = __importDefault(require("lodash/merge")); -/** - * If you don't mind using axios, - * you can use the paginated endpoints provided by the client - * However this endpoint allows you to pass in your own querying library - */ -async function paginateQuery(initialRequest, query, pageFromResponse) { - let nextRequest = initialRequest; - const result = []; - let currentPage = []; - do { - currentPage = await query(nextRequest); - result.push(...currentPage); - nextRequest = { - ...nextRequest, - after: pageFromResponse(currentPage[currentPage.length - 1]), - }; - } while (currentPage.length === 0); - return result; -} -exports.paginateQuery = paginateQuery; -async function paginatedTransactionHistory(urlBase, initialRequest) { - const result = await paginateQuery(initialRequest, async (request) => (await (0, index_1.query)(urlBase, index_2.Routes.transactionHistory, request)).transactions, (resp) => resp != null - ? { - block: resp.block.hash, - tx: resp.transaction.hash, - } - : undefined); - return { transactions: result }; -} -exports.paginatedTransactionHistory = paginatedTransactionHistory; -function pairsToAssetMap(pairs) { - var _a; - const result = {}; - for (const [policyId, assetName] of pairs) { - const for_policy = (_a = result[policyId]) !== null && _a !== void 0 ? _a : []; - for_policy.push(assetName); - // if this was a newly added policy - if (for_policy.length === 1) { - result[policyId] = for_policy; - } - } - return { assets: result }; -} -async function paginatedMetadataNft(urlBase, request) { - const pairs = []; - for (const [policyId, assets] of Object.entries(request.assets)) { - for (const asset of assets) { - pairs.push([policyId, asset]); - } - } - let result = { cip25: {} }; - const chunkedResult = await Promise.all((0, chunk_1.default)(pairs, constants_1.ASSET_LIMIT.REQUEST).map((chunk) => (0, index_1.query)(urlBase, index_2.Routes.metadataNft, pairsToAssetMap(chunk)))); - for (const chunk of chunkedResult) { - result = (0, merge_1.default)(result, chunk); - } - return result; -} -exports.paginatedMetadataNft = paginatedMetadataNft; -function nftCborToJson(request, cmlTransactioMetadatum, decode_metadatum_to_json_str, conversionType) { - const result = {}; - for (const [policyId, assetNames] of Object.entries(request.cip25)) { - const newAssetNameMap = {}; - for (const [assetName, cbor] of Object.entries(assetNames)) { - const metadatum = cmlTransactioMetadatum.from_bytes(Buffer.from(cbor, "hex")); - const json = decode_metadatum_to_json_str(metadatum, conversionType); - newAssetNameMap[assetName] = json; - } - result[policyId] = newAssetNameMap; - } - return { cip25: result }; -} -exports.nftCborToJson = nftCborToJson; diff --git a/tmp-carp-client/package.json b/tmp-carp-client/package.json deleted file mode 100644 index 9786e41f0..000000000 --- a/tmp-carp-client/package.json +++ /dev/null @@ -1,49 +0,0 @@ -{ - "name": "@dcspark/carp-client", - "version": "2.2.3", - "description": "Web client for the Carp server", - "main": "app/index.js", - "scripts": { - "eslint": "eslint src", - "clean": "rm -rf ./dist", - "build": "yarn clean && tsc --project tsconfig.build.json && yarn run copy:misc", - "copy:misc": "cp package.json dist/ && cp README.md dist/", - "npm:publish": "yarn typecheck && yarn build && cd dist && yarn publish --access public && cd ..", - "verify": "yarn typecheck && yarn eslint", - "typecheck": "tsc --project tsconfig.json", - "prettier": "prettier --write \"**/*.tsx\"" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/dcSpark/carp.git" - }, - "author": "https://github.com/dcSpark", - "license": "MIT", - "bugs": { - "url": "https://github.com/dcSpark/carp/issues" - }, - "homepage": "https://github.com/dcSpark/carp#readme", - "dependencies": { - "axios": "^0.27.2" - }, - "devDependencies": { - "@dcspark/cardano-multiplatform-lib-nodejs": "3.0.1", - "@types/eslint": "8.4.6", - "@types/eslint-plugin-prettier": "3.1.0", - "@types/lodash": "^4.14.185", - "@types/node": "^17.0.31", - "@types/prettier": "2.7.0", - "@typescript-eslint/eslint-plugin": "5.38.0", - "@typescript-eslint/parser": "5.38.0", - "eslint": "8.23.1", - "eslint-config-airbnb-typescript": "17.0.0", - "eslint-config-prettier": "8.5.0", - "eslint-plugin-import": "2.26.0", - "eslint-plugin-prettier": "4.2.1", - "eslint-plugin-promise": "6.0.1", - "lodash": "^4.17.21", - "prettier": "2.7.1", - "ts-node": "10.9.1", - "typescript": "4.7.4" - } -} diff --git a/tmp-carp-client/shared/constants.d.ts b/tmp-carp-client/shared/constants.d.ts deleted file mode 100644 index e50b01a14..000000000 --- a/tmp-carp-client/shared/constants.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -export declare const ADDRESS_LIMIT: { - REQUEST: number; - RESPONSE: number; -}; -export declare const UTXO_LIMIT: { - REQUEST: number; - RESPONSE: number; -}; -export declare const ASSET_LIMIT: { - REQUEST: number; - RESPONSE: number; -}; -export declare const CREDENTIAL_LIMIT: { - REQUEST: number; - RESPONSE: number; -}; -export declare const BLOCK_LIMIT: { - OFFSET: number; -}; -export declare const DEX_PRICE_LIMIT: { - REQUEST_ADDRESSES: number; - REQUEST_ASSET_PAIRS: number; - RESPONSE: number; -}; diff --git a/tmp-carp-client/shared/constants.js b/tmp-carp-client/shared/constants.js deleted file mode 100644 index 7570dfb8f..000000000 --- a/tmp-carp-client/shared/constants.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DEX_PRICE_LIMIT = exports.BLOCK_LIMIT = exports.CREDENTIAL_LIMIT = exports.ASSET_LIMIT = exports.UTXO_LIMIT = exports.ADDRESS_LIMIT = void 0; -// TODO: make these a mapping from out to object instead of standalone structs -exports.ADDRESS_LIMIT = { - REQUEST: 100, - RESPONSE: 1000, -}; -exports.UTXO_LIMIT = { - REQUEST: 100, - RESPONSE: 1000, -}; -exports.ASSET_LIMIT = { - REQUEST: 1000, - RESPONSE: 1000, -}; -exports.CREDENTIAL_LIMIT = { - REQUEST: 50, - RESPONSE: 50, -}; -exports.BLOCK_LIMIT = { - OFFSET: 21600, // k parameter -}; -exports.DEX_PRICE_LIMIT = { - REQUEST_ADDRESSES: 100, - REQUEST_ASSET_PAIRS: 100, - RESPONSE: 1000, -}; diff --git a/tmp-carp-client/shared/errors.d.ts b/tmp-carp-client/shared/errors.d.ts deleted file mode 100644 index 71624ec6e..000000000 --- a/tmp-carp-client/shared/errors.d.ts +++ /dev/null @@ -1,105 +0,0 @@ -export declare enum ErrorCodes { - AddressLimitExceeded = 0, - IncorrectAddressFormat = 1, - BlockHashNotFound = 2, - PageStartNotFound = 3, - UtxoLimitExceeded = 4, - IncorrectFormat = 5, - BlockOffsetLimit = 6, - OffsetBlockNotFound = 7, - AssetLimitExceeded = 8, - CredentialLimitExceeded = 9, - AssetPairLimitExceeded = 10 -} -export declare type ErrorShape = { - code: number; - reason: string; -}; -export declare const Errors: { - readonly AddressLimitExceeded: { - readonly code: ErrorCodes.AddressLimitExceeded; - readonly prefix: "Exceeded request address limit."; - readonly detailsGen: (details: { - limit: number; - found: number; - }) => string; - }; - readonly UtxoLimitExceeded: { - readonly code: ErrorCodes.UtxoLimitExceeded; - readonly prefix: "Exceeded request utxo limit."; - readonly detailsGen: (details: { - limit: number; - found: number; - }) => string; - }; - readonly IncorrectAddressFormat: { - readonly code: ErrorCodes.IncorrectAddressFormat; - readonly prefix: "Incorrectly formatted addresses found."; - readonly detailsGen: (details: { - addresses: string[]; - }) => string; - }; - readonly IncorrectFormat: { - readonly code: ErrorCodes.IncorrectFormat; - readonly prefix: "Incorrectly formatted data found."; - readonly detailsGen: (details: object) => string; - }; - readonly BlockHashNotFound: { - readonly code: ErrorCodes.BlockHashNotFound; - readonly prefix: "Block hash not found."; - readonly detailsGen: (details: { - untilBlock: string; - }) => string; - }; - readonly PageStartNotFound: { - readonly code: ErrorCodes.PageStartNotFound; - readonly prefix: "Combination of block and transaction not found."; - readonly detailsGen: (details: { - blockHash: string; - txHash: string; - }) => string; - }; - readonly BlockOffsetLimit: { - readonly code: ErrorCodes.BlockOffsetLimit; - readonly prefix: "Block offset exceeded the limit."; - readonly detailsGen: (details: { - offset: number; - limit: number; - }) => string; - }; - readonly OffsetBlockNotFound: { - readonly code: ErrorCodes.OffsetBlockNotFound; - readonly prefix: "Block not found at offset. Are you sure your database is synchronized?"; - readonly detailsGen: (details: { - offset: number; - }) => string; - }; - readonly AssetLimitExceeded: { - readonly code: ErrorCodes.AssetLimitExceeded; - readonly prefix: "Exceeded request pair limit."; - readonly detailsGen: (details: { - limit: number; - found: number; - }) => string; - }; - readonly CredentialLimitExceeded: { - readonly code: ErrorCodes.CredentialLimitExceeded; - readonly prefix: "Exceeded request credential limit."; - readonly detailsGen: (details: { - limit: number; - found: number; - }) => string; - }; - readonly AssetPairLimitExceeded: { - readonly code: ErrorCodes.AssetPairLimitExceeded; - readonly prefix: "Exceeded request asset pair limit."; - readonly detailsGen: (details: { - limit: number; - found: number; - }) => string; - }; -}; -export declare function genErrorMessage(type: T, details: Parameters[0]): { - code: T["code"]; - reason: string; -}; diff --git a/tmp-carp-client/shared/errors.js b/tmp-carp-client/shared/errors.js deleted file mode 100644 index c952969a7..000000000 --- a/tmp-carp-client/shared/errors.js +++ /dev/null @@ -1,86 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.genErrorMessage = exports.Errors = exports.ErrorCodes = void 0; -var ErrorCodes; -(function (ErrorCodes) { - // we explicitly add the numbers to this enum - // that way removing an entry in the future isn't a breaking change - ErrorCodes[ErrorCodes["AddressLimitExceeded"] = 0] = "AddressLimitExceeded"; - ErrorCodes[ErrorCodes["IncorrectAddressFormat"] = 1] = "IncorrectAddressFormat"; - ErrorCodes[ErrorCodes["BlockHashNotFound"] = 2] = "BlockHashNotFound"; - ErrorCodes[ErrorCodes["PageStartNotFound"] = 3] = "PageStartNotFound"; - ErrorCodes[ErrorCodes["UtxoLimitExceeded"] = 4] = "UtxoLimitExceeded"; - ErrorCodes[ErrorCodes["IncorrectFormat"] = 5] = "IncorrectFormat"; - ErrorCodes[ErrorCodes["BlockOffsetLimit"] = 6] = "BlockOffsetLimit"; - ErrorCodes[ErrorCodes["OffsetBlockNotFound"] = 7] = "OffsetBlockNotFound"; - ErrorCodes[ErrorCodes["AssetLimitExceeded"] = 8] = "AssetLimitExceeded"; - ErrorCodes[ErrorCodes["CredentialLimitExceeded"] = 9] = "CredentialLimitExceeded"; - ErrorCodes[ErrorCodes["AssetPairLimitExceeded"] = 10] = "AssetPairLimitExceeded"; -})(ErrorCodes = exports.ErrorCodes || (exports.ErrorCodes = {})); -exports.Errors = { - AddressLimitExceeded: { - code: ErrorCodes.AddressLimitExceeded, - prefix: "Exceeded request address limit.", - detailsGen: (details) => `Limit of ${details.limit}, found ${details.found}`, - }, - UtxoLimitExceeded: { - code: ErrorCodes.UtxoLimitExceeded, - prefix: "Exceeded request utxo limit.", - detailsGen: (details) => `Limit of ${details.limit}, found ${details.found}`, - }, - IncorrectAddressFormat: { - code: ErrorCodes.IncorrectAddressFormat, - prefix: "Incorrectly formatted addresses found.", - detailsGen: (details) => JSON.stringify(details.addresses), - }, - IncorrectFormat: { - code: ErrorCodes.IncorrectFormat, - prefix: "Incorrectly formatted data found.", - detailsGen: (details) => JSON.stringify(details), - }, - BlockHashNotFound: { - code: ErrorCodes.BlockHashNotFound, - prefix: "Block hash not found.", - detailsGen: (details) => `Searched block hash: ${details.untilBlock}`, - }, - PageStartNotFound: { - code: ErrorCodes.PageStartNotFound, - prefix: "Combination of block and transaction not found.", - detailsGen: (details) => `Searched block hash ${details.blockHash} and tx hash ${details.txHash}`, - }, - BlockOffsetLimit: { - code: ErrorCodes.BlockOffsetLimit, - prefix: "Block offset exceeded the limit.", - detailsGen: (details) => `Offset used was ${details.offset}, but limit is ${details.limit}`, - }, - OffsetBlockNotFound: { - code: ErrorCodes.OffsetBlockNotFound, - prefix: "Block not found at offset. Are you sure your database is synchronized?", - detailsGen: (details) => `Offset used was ${details.offset}`, - }, - AssetLimitExceeded: { - code: ErrorCodes.AssetLimitExceeded, - prefix: "Exceeded request pair limit.", - detailsGen: (details) => `Limit of ${details.limit}, found ${details.found}`, - }, - CredentialLimitExceeded: { - code: ErrorCodes.CredentialLimitExceeded, - prefix: "Exceeded request credential limit.", - detailsGen: (details) => `Limit of ${details.limit}, found ${details.found}`, - }, - AssetPairLimitExceeded: { - code: ErrorCodes.AssetPairLimitExceeded, - prefix: "Exceeded request asset pair limit.", - detailsGen: (details) => `Limit of ${details.limit}, found ${details.found}`, - }, -}; -function genErrorMessage(type, details) { - const generatedDetails = type.detailsGen(details); - return { - code: type.code, - reason: generatedDetails.length === 0 - ? type.prefix - : `${type.prefix} ${generatedDetails}`, - }; -} -exports.genErrorMessage = genErrorMessage; diff --git a/tmp-carp-client/shared/models/Address.d.ts b/tmp-carp-client/shared/models/Address.d.ts deleted file mode 100644 index 2a610bc29..000000000 --- a/tmp-carp-client/shared/models/Address.d.ts +++ /dev/null @@ -1,42 +0,0 @@ -/** - * @pattern [0-9a-fA-F]{64} - * @example "8200581c8baf48931c5187cd59fde553f4e7da2e1a2aa9202ec6e67815cb3f8a" - */ -export declare type CredentialHex = string; -/** - * @example "stake1ux236z4g4r4pztn5v69txyj2yq6a3esq5x4p4stxydra7zsnv25ue" - * @example "addr1q9ya8v4pe33nlkgftyd70nhhp407pvnjjcsddhf64sh9gegwtvyxm7r69gx9cwvtg82p87zpwmzj0kj7tjmyraze3pzqe6zxzv" - */ -export declare type Bech32FullAddress = string; -/** - * @example "script1ffv7hkf75573h0mlsg3jc7cpyuq2pn6tk7xc08dtkx3q5ah7h47" - */ -export declare type Bech32Credential = string; -/** - * @example "Ae2tdPwUPEZHu3NZa6kCwet2msq4xrBXKHBDvogFKwMsF18Jca8JHLRBas7" - * @example "DdzFFzCqrht3UrnL3bCK5QMi9XtmkqGG3G2tmuY17tWyhq63S7EzMpJPogoPKx15drcnJkH4A7QdqYgs4h3XD1zXb3zkDyBuAZcaqYDS" - */ -export declare type Base58Address = string; -/** - * Supported types: - * - Credential hex (8200581c...) - note this is not a keyhash (it contains a credential type prefix) - * - Bech32 full address (`addr` / `addr_test` / `stake` / `stake_test`) - * - Bech32 credentials ( `addr_vkh`, `script`, etc.) - this is the recommended approach - * - Legacy Byron format (Ae2, Dd, etc.) - * - * Note: we recommend avoiding to query base addresses history using bech32 - * As Cardano UTXO spendability depends only on the payment credential and not the full base address - * The result will also miss transactions that are only related to the payment key of the address - * ex: the payment key is used in a multisig - * - * Note: using two different address representations in the same query will hurt performance (ex: addr1 and addr_vkh1) - * This because under-the-hood this will run multiple independent SQL queries for the different formats - * - * Warning: querying reward bech32 addresses is equivalent to querying the stake credential inside it - * This may return more results than expected (ex: a multisig containing the staking key of the wallet) - * - * @example "addr1qxzksn47upfu4fwqfmxx29rn5znlkw3ag98ul8rgndwm79aaql88xw6ez84k2ln6lawnt79sdqh7qwq0wcs672auktmsawshfe" - */ -export declare type Address = CredentialHex | Bech32FullAddress | Bech32Credential | Base58Address; -export declare type Credential = CredentialHex | Bech32Credential; -export declare type DisplayFormatAddress = Base58Address | Bech32FullAddress; diff --git a/tmp-carp-client/shared/models/Address.js b/tmp-carp-client/shared/models/Address.js deleted file mode 100644 index c8ad2e549..000000000 --- a/tmp-carp-client/shared/models/Address.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/AddressUsed.d.ts b/tmp-carp-client/shared/models/AddressUsed.d.ts deleted file mode 100644 index e319d4b75..000000000 --- a/tmp-carp-client/shared/models/AddressUsed.d.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Address } from "./Address"; -import { Pagination } from "./common"; -export declare type AddressUsedRequest = { - addresses: Address[]; -} & Pagination; -export declare type AddressUsedResponse = { - addresses: Address[]; -}; diff --git a/tmp-carp-client/shared/models/AddressUsed.js b/tmp-carp-client/shared/models/AddressUsed.js deleted file mode 100644 index c8ad2e549..000000000 --- a/tmp-carp-client/shared/models/AddressUsed.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/BlockLatest.d.ts b/tmp-carp-client/shared/models/BlockLatest.d.ts deleted file mode 100644 index 305a9b6e8..000000000 --- a/tmp-carp-client/shared/models/BlockLatest.d.ts +++ /dev/null @@ -1,36 +0,0 @@ -export declare type BlockLatestRequest = { - /** - * Note: an offset of -1 is treated the same as an offset of +1 - * - * It's usually best to avoid pagination on the latest block as in Cardano, small rollbacks of 1~2 block are very frequent and expected (read Ouroboros for why) - * That means that using this block for pagination will often lead to your pagination being invalidated by a rollback - * To avoid this, you can pass an `offset` from the tip for more stable pagination - */ - offset: number; -}; -export declare type BlockSubset = { - /** - * @example 1 - */ - era: number; - /** - * [0-9a-fA-F]{64} - * @example "cf8c63a909d91776e27f7d05457e823a9dba606a7ab499ac435e7904ee70d7c8" - */ - hash: string; - /** - * @example 4512067 - */ - height: number; - /** - * @example 209 - */ - epoch: number; - /** - * @example 4924800 - */ - slot: number; -}; -export declare type BlockLatestResponse = { - block: BlockSubset; -}; diff --git a/tmp-carp-client/shared/models/BlockLatest.js b/tmp-carp-client/shared/models/BlockLatest.js deleted file mode 100644 index c8ad2e549..000000000 --- a/tmp-carp-client/shared/models/BlockLatest.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/CredentialAddress.d.ts b/tmp-carp-client/shared/models/CredentialAddress.d.ts deleted file mode 100644 index e12f1db79..000000000 --- a/tmp-carp-client/shared/models/CredentialAddress.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import type { Credential, Bech32FullAddress } from "./Address"; -import type { UntilBlockPagination, PageInfo } from "./common"; -export declare type CredentialAddressRequest = { - credentials: Credential[]; - after?: Bech32FullAddress; -} & UntilBlockPagination; -export declare type CredentialAddressResponse = { - addresses: Bech32FullAddress[]; -} & PageInfo; diff --git a/tmp-carp-client/shared/models/CredentialAddress.js b/tmp-carp-client/shared/models/CredentialAddress.js deleted file mode 100644 index c8ad2e549..000000000 --- a/tmp-carp-client/shared/models/CredentialAddress.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/DelegationForAddress.d.ts b/tmp-carp-client/shared/models/DelegationForAddress.d.ts deleted file mode 100644 index 59a3ec214..000000000 --- a/tmp-carp-client/shared/models/DelegationForAddress.d.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Address } from "./Address"; -export declare type DelegationForAddressRequest = { - address: Address; - until: { - absoluteSlot: number; - }; -}; -export declare type DelegationForAddressResponse = { - pool: string | null; - txId: string | null; -}; diff --git a/tmp-carp-client/shared/models/DelegationForAddress.js b/tmp-carp-client/shared/models/DelegationForAddress.js deleted file mode 100644 index c8ad2e549..000000000 --- a/tmp-carp-client/shared/models/DelegationForAddress.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/DelegationForPool.d.ts b/tmp-carp-client/shared/models/DelegationForPool.d.ts deleted file mode 100644 index d7bf794af..000000000 --- a/tmp-carp-client/shared/models/DelegationForPool.d.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Address } from "./Address"; -import { Pool, PoolHex } from "./Pool"; -export declare type DelegationForPoolRequest = { - pools: Pool[]; - range: { - minSlot: number; - maxSlot: number; - }; -}; -export declare type DelegationForPoolResponse = { - credential: Address; - pool: PoolHex | null; - txId: string | null; - slot: number; -}[]; diff --git a/tmp-carp-client/shared/models/DelegationForPool.js b/tmp-carp-client/shared/models/DelegationForPool.js deleted file mode 100644 index c8ad2e549..000000000 --- a/tmp-carp-client/shared/models/DelegationForPool.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/DexLastPrice.d.ts b/tmp-carp-client/shared/models/DexLastPrice.d.ts deleted file mode 100644 index 6c015b060..000000000 --- a/tmp-carp-client/shared/models/DexLastPrice.d.ts +++ /dev/null @@ -1,26 +0,0 @@ -import { Dex, Asset, Amount } from "./common"; -export declare type DexLastPrice = { - asset1: Asset; - asset2: Asset; - amount1: Amount; - amount2: Amount; - dex: Dex; -}; -export declare enum PriceType { - Buy = "buy", - Sell = "sell", - /** - * Mean is not AVG from the last values, but the remaining amount of assets on the pool output - */ - Mean = "mean" -} -export declare type DexLastPriceRequest = { - assetPairs: { - asset1: Asset; - asset2: Asset; - }[]; - type: PriceType; -}; -export declare type DexLastPriceResponse = { - lastPrice: DexLastPrice[]; -}; diff --git a/tmp-carp-client/shared/models/DexLastPrice.js b/tmp-carp-client/shared/models/DexLastPrice.js deleted file mode 100644 index ccd110b2e..000000000 --- a/tmp-carp-client/shared/models/DexLastPrice.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.PriceType = void 0; -var PriceType; -(function (PriceType) { - PriceType["Buy"] = "buy"; - PriceType["Sell"] = "sell"; - /** - * Mean is not AVG from the last values, but the remaining amount of assets on the pool output - */ - PriceType["Mean"] = "mean"; -})(PriceType = exports.PriceType || (exports.PriceType = {})); -; diff --git a/tmp-carp-client/shared/models/DexMeanPrice.d.ts b/tmp-carp-client/shared/models/DexMeanPrice.d.ts deleted file mode 100644 index cb5eb8e71..000000000 --- a/tmp-carp-client/shared/models/DexMeanPrice.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { Dex, Pagination, Asset, Amount } from "./common"; -export declare type DexMeanPrice = { - tx_hash: string; - dex: Dex; - asset1: Asset; - asset2: Asset; - amount1: Amount; - amount2: Amount; -}; -export declare type DexMeanPriceRequest = { - assetPairs: { - asset1: Asset; - asset2: Asset; - }[]; - dexes: Array; - /** Defaults to `DEX_PRICE_LIMIT.RESPONSE` */ - limit?: number; -} & Pagination; -export declare type DexMeanPriceResponse = { - meanPrices: DexMeanPrice[]; -}; diff --git a/tmp-carp-client/shared/models/DexMeanPrice.js b/tmp-carp-client/shared/models/DexMeanPrice.js deleted file mode 100644 index c8ad2e549..000000000 --- a/tmp-carp-client/shared/models/DexMeanPrice.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/DexSwap.d.ts b/tmp-carp-client/shared/models/DexSwap.d.ts deleted file mode 100644 index 1f831b18c..000000000 --- a/tmp-carp-client/shared/models/DexSwap.d.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { Pagination, Dex, Direction, Asset, Amount } from "./common"; -export declare type DexSwap = { - tx_hash: string; - dex: Dex; - asset1: Asset; - asset2: Asset; - amount1: Amount; - amount2: Amount; - direction: Direction; -}; -export declare type DexSwapRequest = { - dexes: Array; - assetPairs: { - asset1: Asset; - asset2: Asset; - }[]; - /** Defaults to `DEX_PRICE_LIMIT.RESPONSE` */ - limit?: number; -} & Pagination; -export declare type DexSwapResponse = { - swap: DexSwap[]; -}; diff --git a/tmp-carp-client/shared/models/DexSwap.js b/tmp-carp-client/shared/models/DexSwap.js deleted file mode 100644 index c8ad2e549..000000000 --- a/tmp-carp-client/shared/models/DexSwap.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/PolicyIdAssetMap.d.ts b/tmp-carp-client/shared/models/PolicyIdAssetMap.d.ts deleted file mode 100644 index 8769f6607..000000000 --- a/tmp-carp-client/shared/models/PolicyIdAssetMap.d.ts +++ /dev/null @@ -1,35 +0,0 @@ -/** - * @pattern [0-9a-fA-F]{56} - * @example "b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f" - */ -export declare type PolicyId = string; -/** - * @pattern [0-9a-fA-F]{0,64} - * @example "42657272794e617679" - */ -export declare type AssetName = string; -/** - * @pattern [0-9a-fA-F]* - * @example "a365636f6c6f72672330303030383065696d616765783a697066733a2f2f697066732f516d534b593167317a5375506b3536635869324b38524e766961526b44485633505a756a7474663755676b343379646e616d656a4265727279204e617679" - */ -declare type Cip25Metadata = string; -export declare type PolicyIdAssetMapType = { - /** - * @example { "b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f": ["42657272794e617679"] } - */ - assets: { - [policyId: string]: AssetName[]; - }; -}; -export declare type Cip25Response = { - /** - * @example { "b863bc7369f46136ac1048adb2fa7dae3af944c3bbb2be2f216a8d4f": { "42657272794e617679": "a365636f6c6f72672330303030383065696d616765783a697066733a2f2f697066732f516d534b593167317a5375506b3536635869324b38524e766961526b44485633505a756a7474663755676b343379646e616d656a4265727279204e617679" }} - */ - cip25: { - [policyId: string]: { - [assetName: string]: Cip25Metadata; - }; - }; -}; -export declare type NativeAsset = [policyId: PolicyId, assetName: AssetName]; -export {}; diff --git a/tmp-carp-client/shared/models/PolicyIdAssetMap.js b/tmp-carp-client/shared/models/PolicyIdAssetMap.js deleted file mode 100644 index c8ad2e549..000000000 --- a/tmp-carp-client/shared/models/PolicyIdAssetMap.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/Pool.d.ts b/tmp-carp-client/shared/models/Pool.d.ts deleted file mode 100644 index 45632fed2..000000000 --- a/tmp-carp-client/shared/models/Pool.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -/** - * @pattern [0-9a-fA-F]{56} - * @example "8200581c8baf48931c5187cd59fde553f4e7da2e1a2aa9202ec6e67815cb3f8a" - */ -export declare type PoolHex = string; -export declare type Pool = PoolHex; diff --git a/tmp-carp-client/shared/models/Pool.js b/tmp-carp-client/shared/models/Pool.js deleted file mode 100644 index c8ad2e549..000000000 --- a/tmp-carp-client/shared/models/Pool.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/TransactionHistory.d.ts b/tmp-carp-client/shared/models/TransactionHistory.d.ts deleted file mode 100644 index a56c176e1..000000000 --- a/tmp-carp-client/shared/models/TransactionHistory.d.ts +++ /dev/null @@ -1,37 +0,0 @@ -import type { Address } from "./Address"; -import type { BlockSubset } from "./BlockLatest"; -import type { Pagination, RelationFilter } from "./common"; -export declare type TransactionHistoryRequest = { - addresses: Address[]; - /** Defaults to `RelationFilterType.NO_FILTER` */ - relationFilter?: RelationFilter; - /** Defaults to `ADDRESS_LIMIT.RESPONSE` */ - limit?: number; -} & Pagination; -export declare type BlockInfo = BlockSubset & { - /** index of tx in block */ - indexInBlock: number; - isValid: boolean; -}; -export declare type TransactionInfo = { - /** - * Strictly speaking, you can calculate this by hashing the payload - * It's just provided for convenience - * @pattern [0-9a-fA-F]{64} - * @example "011b86557367525891331b4bb985545120efc335b606d6a1c0d5a35fb330f421" - */ - hash: string; - /** - * cbor-encoded transaction - * @pattern [0-9a-fA-F]* - * @example "84a500818258209cb4f8c2eecccc9f1e13768046f37ef56dcb5a4dc44f58907fe4ae21d7cf621d020181825839019cb581f4337a6142e477af6e00fe41b1fc4a5944a575681b8499a3c0bd07ce733b5911eb657e7aff5d35f8b0682fe0380f7621af2bbcb2f71b0000000586321393021a0002a389031a004b418c048183028200581cbd07ce733b5911eb657e7aff5d35f8b0682fe0380f7621af2bbcb2f7581c53215c471b7ac752e3ddf8f2c4c1e6ed111857bfaa675d5e31ce8bcea1008282582073e584cda9fe483fbefb81c251e616018a2b493ef56820f0095b63adede54ff758404f13df42ef1684a3fd55255d8368c9ecbd15b55e2761a2991cc4f401a753c16d6da1da158e84b87b4de9715af7d9adc0d79a7c1f2c3097228e02b20be4616a0c82582066c606974819f457ceface78ee3c4d181a84ca9927a3cfc92ef8c0b6dd4576e8584014ae9ee9ed5eb5700b6c5ac270543671f5d4f943d4726f4614dc061174ee29db44b9e7fc58e6c98c13fad8594f2633c5ec70a9a87f5cbf130308a42edb553001f5f6" - */ - payload: string; -}; -export declare type TxAndBlockInfo = { - block: BlockInfo; - transaction: TransactionInfo; -}; -export declare type TransactionHistoryResponse = { - transactions: TxAndBlockInfo[]; -}; diff --git a/tmp-carp-client/shared/models/TransactionHistory.js b/tmp-carp-client/shared/models/TransactionHistory.js deleted file mode 100644 index c8ad2e549..000000000 --- a/tmp-carp-client/shared/models/TransactionHistory.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/TransactionOutput.d.ts b/tmp-carp-client/shared/models/TransactionOutput.d.ts deleted file mode 100644 index 563b61b1a..000000000 --- a/tmp-carp-client/shared/models/TransactionOutput.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { UtxoPointer } from "./common"; -import { BlockInfo } from "./TransactionHistory"; -export declare type TransactionOutputRequest = { - utxoPointers: UtxoPointer[]; -}; -export declare type UtxoAndBlockInfo = { - block: BlockInfo; - utxo: UtxoPointer & { - /** - * @pattern [0-9a-fA-F]* - * @example "825839019cb581f4337a6142e477af6e00fe41b1fc4a5944a575681b8499a3c0bd07ce733b5911eb657e7aff5d35f8b0682fe0380f7621af2bbcb2f71b0000000586321393" - */ - payload: string; - }; -}; -export declare type TransactionOutputResponse = { - utxos: UtxoAndBlockInfo[]; -}; diff --git a/tmp-carp-client/shared/models/TransactionOutput.js b/tmp-carp-client/shared/models/TransactionOutput.js deleted file mode 100644 index c8ad2e549..000000000 --- a/tmp-carp-client/shared/models/TransactionOutput.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/models/common.d.ts b/tmp-carp-client/shared/models/common.d.ts deleted file mode 100644 index 1674f1ca2..000000000 --- a/tmp-carp-client/shared/models/common.d.ts +++ /dev/null @@ -1,106 +0,0 @@ -import { AssetName, PolicyId } from "./PolicyIdAssetMap"; -/** - * Filter which uses of the address are considered relevant for the query. - * - * This is a bitmask, so you can combine multiple options - * ex: `RelationFilterType.Input & RelationFilterType.Output` - * - * Note: relations only apply to credentials and not to full bech32 addresses - * @pattern ([01]?[0-9]?[0-9]|2[0-4][0-9]|25[0-5]) - * @example 255 - */ -export declare type RelationFilter = number; -export declare enum RelationFilterType { - FILTER_ALL = 0, - Witness = 1, - Input = 2, - Output = 4, - StakeDeregistration = 8, - StakeDelegation = 16, - StakeRegistration = 32, - DelegationTarget = 64, - PoolOwner = 128, - PoolOperator = 256, - PoolReward = 512, - MirRecipient = 1024, - Withdrawal = 2048, - RequiredSigner = 4096, - InNativeScript = 8192, - UnusedInput = 16384, - UnusedInputStake = 32768, - InputStake = 65536, - OutputStake = 131072, - UnusedOutput = 262144, - UnusedOutputStake = 524288, - ReferenceInput = 1048576, - ReferenceInputStake = 2097152, - NO_FILTER = 255 -} -export declare type BlockTxPair = { - /** - * block hash - * @pattern [0-9a-fA-F]{64} - * @example "2548ad5d0d9d33d50ab43151f574474454017a733e307229fa509c4987ca9782" - */ - block: string; - /** - * tx hash - * @pattern [0-9a-fA-F]{64} - * @example "336d520af58ff440b2f20210ddb5ef5b2c035e0ec7ec258bae4b519a87fa1696" - */ - tx: string; -}; -export declare type AfterBlockPagination = { - /** - * Omitting "after" means you query starting from the genesis block. - * - * Note: the reason you have to specify both a tx hash AND a block hash in the "after" for pagination - * is because this is the only way to make sure your pagination doesn't get affected by rollbacks. - * ex: a rollback could cause a tx to be removed from one block and appear in a totally different block. - * Specifying the block hash as well allows making sure you're paginating on the right tx in the right block. - */ - after?: BlockTxPair; -}; -export declare type UntilBlockPagination = { - /** - * block hash - inclusive - * @pattern [0-9a-fA-F]{64} - * @example "cf8c63a909d91776e27f7d05457e823a9dba606a7ab499ac435e7904ee70d7c8" - */ - untilBlock: string; -}; -export declare type Pagination = AfterBlockPagination & UntilBlockPagination; -export declare type UtxoPointer = { - /** - * @pattern [0-9a-fA-F]{64} - * @example "011b86557367525891331b4bb985545120efc335b606d6a1c0d5a35fb330f421" - */ - txHash: string; - index: number; -}; -export declare type PageInfo = { - pageInfo: { - /** - * @example false - */ - hasNextPage: boolean; - }; -}; -export declare enum Direction { - Buy = "buy", - Sell = "sell" -} -export declare enum Dex { - WingRiders = "WingRiders", - SundaeSwap = "SundaeSwap", - MinSwap = "MinSwap" -} -export declare type Asset = { - policyId: PolicyId; - assetName: AssetName; -} | null; -/** - * @pattern [1-9][0-9]* - * @example "2042352568679" - */ -export declare type Amount = string; diff --git a/tmp-carp-client/shared/models/common.js b/tmp-carp-client/shared/models/common.js deleted file mode 100644 index e611350b8..000000000 --- a/tmp-carp-client/shared/models/common.js +++ /dev/null @@ -1,44 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Dex = exports.Direction = exports.RelationFilterType = void 0; -// note: keep in sync with Rust type TxCredentialRelationValue -var RelationFilterType; -(function (RelationFilterType) { - RelationFilterType[RelationFilterType["FILTER_ALL"] = 0] = "FILTER_ALL"; - RelationFilterType[RelationFilterType["Witness"] = 1] = "Witness"; - RelationFilterType[RelationFilterType["Input"] = 2] = "Input"; - RelationFilterType[RelationFilterType["Output"] = 4] = "Output"; - RelationFilterType[RelationFilterType["StakeDeregistration"] = 8] = "StakeDeregistration"; - RelationFilterType[RelationFilterType["StakeDelegation"] = 16] = "StakeDelegation"; - RelationFilterType[RelationFilterType["StakeRegistration"] = 32] = "StakeRegistration"; - RelationFilterType[RelationFilterType["DelegationTarget"] = 64] = "DelegationTarget"; - RelationFilterType[RelationFilterType["PoolOwner"] = 128] = "PoolOwner"; - RelationFilterType[RelationFilterType["PoolOperator"] = 256] = "PoolOperator"; - RelationFilterType[RelationFilterType["PoolReward"] = 512] = "PoolReward"; - RelationFilterType[RelationFilterType["MirRecipient"] = 1024] = "MirRecipient"; - RelationFilterType[RelationFilterType["Withdrawal"] = 2048] = "Withdrawal"; - RelationFilterType[RelationFilterType["RequiredSigner"] = 4096] = "RequiredSigner"; - RelationFilterType[RelationFilterType["InNativeScript"] = 8192] = "InNativeScript"; - RelationFilterType[RelationFilterType["UnusedInput"] = 16384] = "UnusedInput"; - RelationFilterType[RelationFilterType["UnusedInputStake"] = 32768] = "UnusedInputStake"; - RelationFilterType[RelationFilterType["InputStake"] = 65536] = "InputStake"; - RelationFilterType[RelationFilterType["OutputStake"] = 131072] = "OutputStake"; - RelationFilterType[RelationFilterType["UnusedOutput"] = 262144] = "UnusedOutput"; - RelationFilterType[RelationFilterType["UnusedOutputStake"] = 524288] = "UnusedOutputStake"; - RelationFilterType[RelationFilterType["ReferenceInput"] = 1048576] = "ReferenceInput"; - RelationFilterType[RelationFilterType["ReferenceInputStake"] = 2097152] = "ReferenceInputStake"; - RelationFilterType[RelationFilterType["NO_FILTER"] = 255] = "NO_FILTER"; -})(RelationFilterType = exports.RelationFilterType || (exports.RelationFilterType = {})); -var Direction; -(function (Direction) { - Direction["Buy"] = "buy"; - Direction["Sell"] = "sell"; -})(Direction = exports.Direction || (exports.Direction = {})); -; -var Dex; -(function (Dex) { - Dex["WingRiders"] = "WingRiders"; - Dex["SundaeSwap"] = "SundaeSwap"; - Dex["MinSwap"] = "MinSwap"; -})(Dex = exports.Dex || (exports.Dex = {})); -; diff --git a/tmp-carp-client/shared/routes.d.ts b/tmp-carp-client/shared/routes.d.ts deleted file mode 100644 index 37d9d642f..000000000 --- a/tmp-carp-client/shared/routes.d.ts +++ /dev/null @@ -1,81 +0,0 @@ -import type { AddressUsedRequest, AddressUsedResponse } from "./models/AddressUsed"; -import { BlockLatestRequest, BlockLatestResponse } from "./models/BlockLatest"; -import type { CredentialAddressRequest, CredentialAddressResponse } from "./models/CredentialAddress"; -import { DexMeanPriceRequest, DexMeanPriceResponse } from "./models/DexMeanPrice"; -import { DexSwapRequest, DexSwapResponse } from "./models/DexSwap"; -import { DexLastPriceRequest, DexLastPriceResponse } from "./models/DexLastPrice"; -import { Cip25Response, PolicyIdAssetMapType } from "./models/PolicyIdAssetMap"; -import type { TransactionHistoryRequest, TransactionHistoryResponse } from "./models/TransactionHistory"; -import type { TransactionOutputRequest, TransactionOutputResponse } from "./models/TransactionOutput"; -import type { DelegationForAddressRequest, DelegationForAddressResponse } from "./models/DelegationForAddress"; -import type { DelegationForPoolRequest, DelegationForPoolResponse } from "./models/DelegationForPool"; -export declare enum Routes { - transactionHistory = "transaction/history", - transactionOutput = "transaction/output", - addressUsed = "address/used", - credentialAddress = "credential/address", - blockLatest = "block/latest", - metadataNft = "metadata/nft", - dexMeanPrice = "dex/mean-price", - dexSwap = "dex/swap", - dexLastPrice = "dex/last-price", - delegationForAddress = "delegation/address", - delegationForPool = "delegation/pool" -} -export declare type EndpointTypes = { - [Routes.transactionHistory]: { - name: typeof Routes.transactionHistory; - input: TransactionHistoryRequest; - response: TransactionHistoryResponse; - }; - [Routes.transactionOutput]: { - name: typeof Routes.transactionOutput; - input: TransactionOutputRequest; - response: TransactionOutputResponse; - }; - [Routes.addressUsed]: { - name: typeof Routes.addressUsed; - input: AddressUsedRequest; - response: AddressUsedResponse; - }; - [Routes.blockLatest]: { - name: typeof Routes.blockLatest; - input: BlockLatestRequest; - response: BlockLatestResponse; - }; - [Routes.metadataNft]: { - name: typeof Routes.metadataNft; - input: PolicyIdAssetMapType; - response: Cip25Response; - }; - [Routes.credentialAddress]: { - name: typeof Routes.credentialAddress; - input: CredentialAddressRequest; - response: CredentialAddressResponse; - }; - [Routes.dexMeanPrice]: { - name: typeof Routes.dexMeanPrice; - input: DexMeanPriceRequest; - response: DexMeanPriceResponse; - }; - [Routes.dexSwap]: { - name: typeof Routes.dexSwap; - input: DexSwapRequest; - response: DexSwapResponse; - }; - [Routes.dexLastPrice]: { - name: typeof Routes.dexLastPrice; - input: DexLastPriceRequest; - response: DexLastPriceResponse; - }; - [Routes.delegationForAddress]: { - name: typeof Routes.delegationForAddress; - input: DelegationForAddressRequest; - response: DelegationForAddressResponse; - }; - [Routes.delegationForPool]: { - name: typeof Routes.delegationForPool; - input: DelegationForPoolRequest; - response: DelegationForPoolResponse; - }; -}; diff --git a/tmp-carp-client/shared/routes.js b/tmp-carp-client/shared/routes.js deleted file mode 100644 index e0414a629..000000000 --- a/tmp-carp-client/shared/routes.js +++ /dev/null @@ -1,17 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.Routes = void 0; -var Routes; -(function (Routes) { - Routes["transactionHistory"] = "transaction/history"; - Routes["transactionOutput"] = "transaction/output"; - Routes["addressUsed"] = "address/used"; - Routes["credentialAddress"] = "credential/address"; - Routes["blockLatest"] = "block/latest"; - Routes["metadataNft"] = "metadata/nft"; - Routes["dexMeanPrice"] = "dex/mean-price"; - Routes["dexSwap"] = "dex/swap"; - Routes["dexLastPrice"] = "dex/last-price"; - Routes["delegationForAddress"] = "delegation/address"; - Routes["delegationForPool"] = "delegation/pool"; -})(Routes = exports.Routes || (exports.Routes = {})); From 91ba6a5e14118ee22041a2d2e9761dd32f139474 Mon Sep 17 00:00:00 2001 From: Enzo Cioppettini Date: Mon, 30 Oct 2023 17:10:10 -0300 Subject: [PATCH 04/24] handle presync in carp funnel --- packages/engine/paima-funnel/src/funnels/BaseFunnel.ts | 2 +- packages/engine/paima-funnel/src/funnels/carp/funnel.ts | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/engine/paima-funnel/src/funnels/BaseFunnel.ts b/packages/engine/paima-funnel/src/funnels/BaseFunnel.ts index 51938b957..c032fbbba 100644 --- a/packages/engine/paima-funnel/src/funnels/BaseFunnel.ts +++ b/packages/engine/paima-funnel/src/funnels/BaseFunnel.ts @@ -1,5 +1,5 @@ import type { ChainFunnel, ReadPresyncDataFrom } from '@paima/runtime'; -import type { ChainData, ChainDataExtension, PresyncChainData } from '@paima/sm'; +import type {ChainData, ChainDataExtension, PresyncChainData } from '@paima/sm'; import type { PaimaL2Contract, Web3 } from '@paima/utils'; import type { FunnelCacheManager } from './FunnelCache.js'; import type { PoolClient } from 'pg'; diff --git a/packages/engine/paima-funnel/src/funnels/carp/funnel.ts b/packages/engine/paima-funnel/src/funnels/carp/funnel.ts index 4e9cc1a44..42140590b 100644 --- a/packages/engine/paima-funnel/src/funnels/carp/funnel.ts +++ b/packages/engine/paima-funnel/src/funnels/carp/funnel.ts @@ -302,7 +302,8 @@ async function readDataInternal( Network.EVM, data[0].blockNumber, data[data.length - 1].blockNumber, - poolEvents.filter(data => data.length > 0) + poolEvents + .filter(data => data.length > 0) ); return grouped; From 378833866c3ab28f1d8776b438e68cc16d66575c Mon Sep 17 00:00:00 2001 From: Enzo Cioppettini Date: Mon, 6 Nov 2023 23:11:28 -0300 Subject: [PATCH 05/24] use local (tmp) carp client lib in the funnel just to test until the up to date version is published on npm --- packages/engine/paima-runtime/src/runtime-loops.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/engine/paima-runtime/src/runtime-loops.ts b/packages/engine/paima-runtime/src/runtime-loops.ts index 39c297779..ba7517b7d 100644 --- a/packages/engine/paima-runtime/src/runtime-loops.ts +++ b/packages/engine/paima-runtime/src/runtime-loops.ts @@ -2,7 +2,9 @@ import process from 'process'; import { doLog, logError, delay, Network, ENV } from '@paima/utils'; import { tx, DataMigrations } from '@paima/db'; import { getEarliestStartBlockheight, getEarliestStartSlot } from './cde-config/utils.js'; -import type { ChainFunnel, IFunnelFactory, ReadPresyncDataFrom } from './types.js'; +import type { ChainFunnel, + IFunnelFactory, + ReadPresyncDataFrom} from './types.js'; import type { ChainData, ChainDataExtension, GameStateMachine } from '@paima/sm'; import { run } from './run-flag.js'; import { snapshotIfTime } from './snapshots.js'; From 96d9449ac78f0f3dbf0b759c90c781852d72e8c0 Mon Sep 17 00:00:00 2001 From: Enzo Cioppettini Date: Wed, 8 Nov 2023 21:55:21 -0300 Subject: [PATCH 06/24] add stopSlot setting to stop fetching --- packages/engine/paima-funnel/src/funnels/carp/funnel.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/engine/paima-funnel/src/funnels/carp/funnel.ts b/packages/engine/paima-funnel/src/funnels/carp/funnel.ts index 42140590b..354bd5a6d 100644 --- a/packages/engine/paima-funnel/src/funnels/carp/funnel.ts +++ b/packages/engine/paima-funnel/src/funnels/carp/funnel.ts @@ -14,6 +14,7 @@ import { type ChainDataExtension, type ChainDataExtensionCardanoDelegation, type PresyncChainData, + ChainDataExtensionDatum, } from '@paima/sm'; import { composeChainData, groupCdeData } from '../../utils.js'; import { BaseFunnel } from '../BaseFunnel.js'; From db329586fec23fbef6b1c2d5d0448ae2fb2eb2c8 Mon Sep 17 00:00:00 2001 From: Enzo Cioppettini Date: Tue, 21 Nov 2023 17:12:33 -0300 Subject: [PATCH 07/24] address review comments --- packages/engine/paima-runtime/src/runtime-loops.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/engine/paima-runtime/src/runtime-loops.ts b/packages/engine/paima-runtime/src/runtime-loops.ts index ba7517b7d..223fe0834 100644 --- a/packages/engine/paima-runtime/src/runtime-loops.ts +++ b/packages/engine/paima-runtime/src/runtime-loops.ts @@ -4,8 +4,8 @@ import { tx, DataMigrations } from '@paima/db'; import { getEarliestStartBlockheight, getEarliestStartSlot } from './cde-config/utils.js'; import type { ChainFunnel, IFunnelFactory, - ReadPresyncDataFrom} from './types.js'; -import type { ChainData, ChainDataExtension, GameStateMachine } from '@paima/sm'; + ReadPresyncDataFrom +} from './types.js';import type { ChainData, ChainDataExtension, GameStateMachine } from '@paima/sm'; import { run } from './run-flag.js'; import { snapshotIfTime } from './snapshots.js'; import { From acb79642ae92e3afb51c3924f897611b146a6ed7 Mon Sep 17 00:00:00 2001 From: Eugene Gostkin Date: Tue, 28 Nov 2023 00:02:47 +0100 Subject: [PATCH 08/24] Initial setups --- .gitignore | 2 + package-lock.json | 708 +++++++++++++++++- .../src/cde/caranoProjectedNFT.ts | 45 ++ .../engine/paima-funnel/src/cde/reading.ts | 4 + .../paima-runtime/src/cde-config/loading.ts | 10 + .../paima-runtime/src/cde-config/utils.ts | 8 +- .../paima-sm/src/cde-cardano-projected-nft.ts | 33 + .../engine/paima-sm/src/cde-processing.ts | 3 + .../node-sdk/paima-db/migrations/down.sql | 1 + packages/node-sdk/paima-db/migrations/up.sql | 11 + .../src/sql/cde-cardano-projected-nft.sql | 28 + .../src/cde-access-internals.ts | 13 + .../paima-utils-backend/src/cde-access.ts | 11 + .../paima-sdk/paima-utils/src/constants.ts | 2 + .../shared/models/ProjectedNftRange.d.ts | 13 + .../shared/models/ProjectedNftRange.js | 2 + tmp-carp-client/shared/routes.d.ts | 0 tmp-carp-client/shared/routes.js | 0 18 files changed, 866 insertions(+), 28 deletions(-) create mode 100644 packages/engine/paima-funnel/src/cde/caranoProjectedNFT.ts create mode 100644 packages/engine/paima-sm/src/cde-cardano-projected-nft.ts create mode 100644 packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.sql create mode 100644 tmp-carp-client/shared/models/ProjectedNftRange.d.ts create mode 100644 tmp-carp-client/shared/models/ProjectedNftRange.js create mode 100644 tmp-carp-client/shared/routes.d.ts create mode 100644 tmp-carp-client/shared/routes.js diff --git a/.gitignore b/.gitignore index 7b61aec51..015b9628e 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,5 @@ bin # logs *.log + +.idea/ \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 6fa4ec856..dd24eed90 100644 --- a/package-lock.json +++ b/package-lock.json @@ -49,7 +49,6 @@ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true, - "peer": true, "engines": { "node": ">=0.10.0" } @@ -3402,12 +3401,21 @@ "node": ">=10.10.0" } }, + "node_modules/@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "peer": true, "engines": { "node": ">=12.22" }, @@ -9106,6 +9114,12 @@ "@types/node": "*" } }, + "node_modules/@types/lodash": { + "version": "4.14.202", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", + "dev": true + }, "node_modules/@types/long": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", @@ -10155,6 +10169,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -11028,7 +11043,8 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, "node_modules/base-x": { "version": "4.0.0", @@ -11194,6 +11210,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -12063,7 +12080,8 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true }, "node_modules/conf": { "version": "10.2.0", @@ -12538,8 +12556,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true, - "peer": true + "dev": true }, "node_modules/deepmerge": { "version": "4.3.1", @@ -12916,7 +12933,6 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "peer": true, "dependencies": { "esutils": "^2.0.2" }, @@ -13832,7 +13848,6 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, - "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -13844,6 +13859,33 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", @@ -13962,7 +14004,6 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, - "peer": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -15063,8 +15104,7 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "peer": true + "dev": true }, "node_modules/fast-safe-stringify": { "version": "2.1.1", @@ -15153,7 +15193,6 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "peer": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -15272,7 +15311,6 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, - "peer": true, "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -15486,7 +15524,8 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true }, "node_modules/fsevents": { "version": "2.3.3", @@ -19544,6 +19583,7 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -19564,7 +19604,6 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "peer": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -19701,6 +19740,12 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -20225,6 +20270,7 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -20882,7 +20928,8 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true }, "node_modules/isomorphic-ws": { "version": "4.0.1", @@ -21669,6 +21716,16 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, + "node_modules/js-sdsl": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", + "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, "node_modules/js-sha256": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", @@ -21850,8 +21907,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true, - "peer": true + "dev": true }, "node_modules/json-stringify-safe": { "version": "5.0.1", @@ -22319,7 +22375,6 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "peer": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -22436,8 +22491,7 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true, - "peer": true + "dev": true }, "node_modules/lodash.sortby": { "version": "4.7.0", @@ -22942,6 +22996,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -26740,7 +26795,6 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, - "peer": true, "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", @@ -26992,6 +27046,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, "engines": { "node": ">=0.10.0" } @@ -28204,7 +28259,6 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "peer": true, "engines": { "node": ">= 0.8.0" } @@ -28832,6 +28886,18 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, "node_modules/regexpu-core": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", @@ -30187,6 +30253,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -31430,7 +31497,6 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "peer": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -34203,6 +34269,7 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -35103,6 +35170,599 @@ "engines": { "node": ">= 14" } + }, + "tmp-carp-client": { + "version": "2.2.3", + "license": "MIT", + "dependencies": { + "axios": "^0.27.2" + }, + "devDependencies": { + "@dcspark/cardano-multiplatform-lib-nodejs": "3.0.1", + "@types/eslint": "8.4.6", + "@types/eslint-plugin-prettier": "3.1.0", + "@types/lodash": "^4.14.185", + "@types/node": "^17.0.31", + "@types/prettier": "2.7.0", + "@typescript-eslint/eslint-plugin": "5.38.0", + "@typescript-eslint/parser": "5.38.0", + "eslint": "8.23.1", + "eslint-config-airbnb-typescript": "17.0.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-prettier": "4.2.1", + "eslint-plugin-promise": "6.0.1", + "lodash": "^4.17.21", + "prettier": "2.7.1", + "ts-node": "10.9.1", + "typescript": "4.7.4" + } + }, + "tmp-carp-client/node_modules/@eslint/eslintrc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", + "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "tmp-carp-client/node_modules/@humanwhocodes/config-array": { + "version": "0.10.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", + "integrity": "sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "tmp-carp-client/node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "tmp-carp-client/node_modules/@types/eslint": { + "version": "8.4.6", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", + "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "tmp-carp-client/node_modules/@types/eslint-plugin-prettier": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.0.tgz", + "integrity": "sha512-6/UIuz99F0IvtDez4U3bRwAmN4VKnuw10Ibblf0iZhtNbmbonMSLqs/qqsXrGIAWvjy+vXqYwOljgtLhrETSMg==", + "dev": true, + "dependencies": { + "@types/eslint": "*" + } + }, + "tmp-carp-client/node_modules/@types/node": { + "version": "17.0.45", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", + "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", + "dev": true + }, + "tmp-carp-client/node_modules/@types/prettier": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz", + "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==", + "dev": true + }, + "tmp-carp-client/node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz", + "integrity": "sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.38.0", + "@typescript-eslint/type-utils": "5.38.0", + "@typescript-eslint/utils": "5.38.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "tmp-carp-client/node_modules/@typescript-eslint/parser": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.0.tgz", + "integrity": "sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.38.0", + "@typescript-eslint/types": "5.38.0", + "@typescript-eslint/typescript-estree": "5.38.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "tmp-carp-client/node_modules/@typescript-eslint/scope-manager": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz", + "integrity": "sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.38.0", + "@typescript-eslint/visitor-keys": "5.38.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "tmp-carp-client/node_modules/@typescript-eslint/type-utils": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz", + "integrity": "sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.38.0", + "@typescript-eslint/utils": "5.38.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "tmp-carp-client/node_modules/@typescript-eslint/types": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.0.tgz", + "integrity": "sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "tmp-carp-client/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz", + "integrity": "sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.38.0", + "@typescript-eslint/visitor-keys": "5.38.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "tmp-carp-client/node_modules/@typescript-eslint/utils": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.0.tgz", + "integrity": "sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.38.0", + "@typescript-eslint/types": "5.38.0", + "@typescript-eslint/typescript-estree": "5.38.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "tmp-carp-client/node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "tmp-carp-client/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.38.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz", + "integrity": "sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.38.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "tmp-carp-client/node_modules/axios": { + "version": "0.27.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", + "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", + "dependencies": { + "follow-redirects": "^1.14.9", + "form-data": "^4.0.0" + } + }, + "tmp-carp-client/node_modules/eslint": { + "version": "8.23.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.1.tgz", + "integrity": "sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.2", + "@humanwhocodes/config-array": "^0.10.4", + "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", + "@humanwhocodes/module-importer": "^1.0.1", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.1", + "globals": "^13.15.0", + "globby": "^11.1.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "tmp-carp-client/node_modules/eslint-config-airbnb-typescript": { + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.0.0.tgz", + "integrity": "sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g==", + "dev": true, + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.13.0", + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3" + } + }, + "tmp-carp-client/node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "tmp-carp-client/node_modules/eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "tmp-carp-client/node_modules/eslint-plugin-import/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "tmp-carp-client/node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "tmp-carp-client/node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "tmp-carp-client/node_modules/eslint-plugin-promise": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz", + "integrity": "sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "tmp-carp-client/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "tmp-carp-client/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "tmp-carp-client/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "tmp-carp-client/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "tmp-carp-client/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "tmp-carp-client/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "tmp-carp-client/node_modules/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "tmp-carp-client/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "tmp-carp-client/node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "tmp-carp-client/node_modules/typescript": { + "version": "4.7.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } } } } diff --git a/packages/engine/paima-funnel/src/cde/caranoProjectedNFT.ts b/packages/engine/paima-funnel/src/cde/caranoProjectedNFT.ts new file mode 100644 index 000000000..812a84a93 --- /dev/null +++ b/packages/engine/paima-funnel/src/cde/caranoProjectedNFT.ts @@ -0,0 +1,45 @@ +import { ChainDataExtensionDatumType, DEFAULT_FUNNEL_TIMEOUT, timeout } from '@paima/utils'; +import type { + CdeCardanoProjectedNFTDatum, + ChainDataExtensionCardanoProjectedNFT, + ChainDataExtensionDatum, +} from '@paima/runtime'; +import { Routes, query } from '@dcspark/carp-client/client/src'; +import {ProjectedNftRangeResponse} from "@dcspark/carp-client/shared/models/ProjectedNftRange"; + +export default async function getCdeData( + url: string, + extension: ChainDataExtensionCardanoProjectedNFT, + fromAbsoluteSlot: number, + toAbsoluteSlot: number, + getBlockNumber: (slot: number) => number +): Promise { + const events = await timeout( + query(url, Routes.projectedNftEventsRange, { + range: { minSlot: fromAbsoluteSlot, maxSlot: toAbsoluteSlot }, + }), + DEFAULT_FUNNEL_TIMEOUT + ); + + return events.map(e => eventToCdeDatum(e, extension, getBlockNumber(e.slot))); +} + +function eventToCdeDatum( + event: ProjectedNftRangeResponse[0], + extension: ChainDataExtensionCardanoProjectedNFT, + blockNumber: number +): CdeCardanoProjectedNFTDatum { + return { + cdeId: extension.cdeId, + cdeDatumType: ChainDataExtensionDatumType.CardanoProjectedNFT, + blockNumber, + payload: { + address: event.address, + asset: event.asset, + amount: event.amount, + status: event.status, + plutusDatum: event.plutusDatum, + }, + scheduledPrefix: extension.scheduledPrefix, + }; +} diff --git a/packages/engine/paima-funnel/src/cde/reading.ts b/packages/engine/paima-funnel/src/cde/reading.ts index 608ce9b25..ffb284c36 100644 --- a/packages/engine/paima-funnel/src/cde/reading.ts +++ b/packages/engine/paima-funnel/src/cde/reading.ts @@ -55,6 +55,10 @@ async function getSpecificCdeData( // this is used by the block funnel, which can't get information for this // extension return []; + case ChainDataExtensionType.CardanoProjectedNFT: + // this is used by the block funnel, which can't get information for this + // extension + return []; default: assertNever(extension); } diff --git a/packages/engine/paima-runtime/src/cde-config/loading.ts b/packages/engine/paima-runtime/src/cde-config/loading.ts index 0dfa884ef..8c0c023fc 100644 --- a/packages/engine/paima-runtime/src/cde-config/loading.ts +++ b/packages/engine/paima-runtime/src/cde-config/loading.ts @@ -30,6 +30,7 @@ import { CdeBaseConfig, CdeEntryTypeName, ChainDataExtensionCardanoDelegationConfig, + ChainDataExtensionCardanoProjectedNFTConfig, ChainDataExtensionErc20Config, ChainDataExtensionErc20DepositConfig, ChainDataExtensionErc6551RegistryConfig, @@ -89,6 +90,8 @@ export function parseCdeConfigFile(configFileData: string): Static { - if (cde.cdeType !== ChainDataExtensionType.CardanoPool) { + if (cde.cdeType !== ChainDataExtensionType.CardanoPool && cde.cdeType != ChainDataExtensionType.CardanoProjectedNFT) { return Math.min(min, cde.startBlockHeight); } return min; @@ -16,7 +16,7 @@ export function getEarliestStartBlockheight(config: ChainDataExtension[]): numbe export function getEarliestStartSlot(config: ChainDataExtension[]): number { const minStartSlot = config.reduce((min, cde) => { - if (cde.cdeType === ChainDataExtensionType.CardanoPool) { + if (cde.cdeType === ChainDataExtensionType.CardanoPool || cde.cdeType == ChainDataExtensionType.CardanoProjectedNFT) { return Math.min(min, cde.startSlot); } return min; diff --git a/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts b/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts new file mode 100644 index 000000000..cb8285403 --- /dev/null +++ b/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts @@ -0,0 +1,33 @@ +import { ENV } from '@paima/utils'; +import type { CdeCardanoProjectedNFTDatum } from '@paima/runtime'; +import { createScheduledData, cdeCardanoProjectedNftInsertData } from '@paima/db'; +import type { SQLUpdate } from '@paima/db'; + +export default async function processDatum(cdeDatum: CdeCardanoProjectedNFTDatum): Promise { + const cdeId = cdeDatum.cdeId; + const prefix = cdeDatum.scheduledPrefix; + const address = cdeDatum.payload.address; + const amount = cdeDatum.payload.amount; + const asset = cdeDatum.payload.asset; + const status = cdeDatum.payload.status; + const datum = cdeDatum.payload.plutusDatum; + + const scheduledBlockHeight = Math.max(cdeDatum.blockNumber, ENV.SM_START_BLOCKHEIGHT + 1); + const scheduledInputData = `${prefix}|${address}|${asset}|${amount}|${status}|${datum}`; + + const updateList: SQLUpdate[] = [ + createScheduledData(scheduledInputData, scheduledBlockHeight), + [ + cdeCardanoProjectedNftInsertData, + { + cde_id: cdeId, + address: cdeDatum.payload.address, + asset: cdeDatum.payload.asset, + amount: cdeDatum.payload.amount, + status: cdeDatum.payload.status, + datum: cdeDatum.payload.plutusDatum + }, + ], + ]; + return updateList; +} diff --git a/packages/engine/paima-sm/src/cde-processing.ts b/packages/engine/paima-sm/src/cde-processing.ts index cf5d1fec3..49847d0b1 100644 --- a/packages/engine/paima-sm/src/cde-processing.ts +++ b/packages/engine/paima-sm/src/cde-processing.ts @@ -10,6 +10,7 @@ import processErc20DepositDatum from './cde-erc20-deposit.js'; import processErc6551RegistryDatum from './cde-erc6551-registry.js'; import processGenericDatum from './cde-generic.js'; import processCardanoDelegationDatum from './cde-cardano-pool.js'; +import processCardanoProjectedNFT from './cde-cardano-projected-nft.js'; import assertNever from 'assert-never'; import type { SQLUpdate } from '@paima/db'; @@ -32,6 +33,8 @@ export async function cdeTransitionFunction( return await processErc6551RegistryDatum(cdeDatum); case ChainDataExtensionDatumType.CardanoPool: return await processCardanoDelegationDatum(cdeDatum); + case ChainDataExtensionDatumType.CardanoProjectedNFT: + return await processCardanoProjectedNFT(cdeDatum); default: assertNever(cdeDatum); } diff --git a/packages/node-sdk/paima-db/migrations/down.sql b/packages/node-sdk/paima-db/migrations/down.sql index 9e1e8f00a..c9860476f 100644 --- a/packages/node-sdk/paima-db/migrations/down.sql +++ b/packages/node-sdk/paima-db/migrations/down.sql @@ -12,3 +12,4 @@ DROP TABLE scheduled_data; DROP TABLE block_heights; DROP TABLE cde_cardano_pool_delegation; DROP TABLE cde_tracking_cardano; +DROP TABLE cde_cardano_projected_nft; diff --git a/packages/node-sdk/paima-db/migrations/up.sql b/packages/node-sdk/paima-db/migrations/up.sql index 50750ccd3..a23f6583e 100644 --- a/packages/node-sdk/paima-db/migrations/up.sql +++ b/packages/node-sdk/paima-db/migrations/up.sql @@ -93,3 +93,14 @@ CREATE TABLE cde_cardano_pool_delegation ( pool TEXT, PRIMARY KEY (cde_id, address) ); + +CREATE TABLE cde_cardano_projected_nft ( + cde_id INTEGER NOT NULL, + id SERIAL, + address TEXT NOT NULL, + asset TEXT NOT NULL, + amount TEXT NOT NULL, + status TEXT NOT NULL, + datum TEXT NOT NULL, + PRIMARY KEY (cde_id, id) +); \ No newline at end of file diff --git a/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.sql b/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.sql new file mode 100644 index 000000000..400765902 --- /dev/null +++ b/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.sql @@ -0,0 +1,28 @@ +/* @name cdeCardanoGetProjectedNft */ +SELECT * FROM cde_cardano_projected_nft +WHERE address = :address!; + +/* @name cdeCardanoProjectedNftInsertData */ +INSERT INTO cde_cardano_pool_delegation( + cde_id, + address, + asset, + amount, + status, + datum, +) VALUES ( + :cde_id!, + :address!, + :asset! + :amount! + :status! + :datum! + ) ON CONFLICT (cde_id, address) DO +UPDATE SET pool = :pool!; + +cde_id: cdeId, + address: cdeDatum.payload.address, + asset: cdeDatum.payload.asset, + amount: cdeDatum.payload.amount, + status: cdeDatum.payload.status, + datum: cdeDatum.payload.plutusDatum \ No newline at end of file diff --git a/packages/node-sdk/paima-utils-backend/src/cde-access-internals.ts b/packages/node-sdk/paima-utils-backend/src/cde-access-internals.ts index 75af8c44c..836a66c56 100644 --- a/packages/node-sdk/paima-utils-backend/src/cde-access-internals.ts +++ b/packages/node-sdk/paima-utils-backend/src/cde-access-internals.ts @@ -13,6 +13,7 @@ import { cdeErc6551GetOwnedAccounts, cdeErc6551GetOwner, cdeCardanoPoolGetAddressDelegation, + cdeCardanoGetProjectedNft, } from '@paima/db'; import type { OwnedNftsResponse, GenericCdeDataUnit, TokenIdPair } from './types.js'; @@ -190,3 +191,15 @@ export async function internalGetCardanoAddressDelegation( return results[0].pool; } + +export async function internalGetCardanoProjectedNft( + readonlyDBConn: Pool, + address: string +): Promise { + const results = await cdeCardanoGetProjectedNft.run({ address }, readonlyDBConn); + if (results.length === 0) { + return null; + } + + return results[0].pool; +} diff --git a/packages/node-sdk/paima-utils-backend/src/cde-access.ts b/packages/node-sdk/paima-utils-backend/src/cde-access.ts index 3f761bbc2..eca573931 100644 --- a/packages/node-sdk/paima-utils-backend/src/cde-access.ts +++ b/packages/node-sdk/paima-utils-backend/src/cde-access.ts @@ -13,6 +13,7 @@ import { internalGetErc6551AccountOwner, internalGetAllOwnedErc6551Accounts, internalGetCardanoAddressDelegation, + internalGetCardanoProjectedNft, } from './cde-access-internals.js'; import type { OwnedNftsResponse, GenericCdeDataUnit, TokenIdPair } from './types.js'; @@ -167,3 +168,13 @@ export async function getCardanoAddressDelegation( ): Promise { return await internalGetCardanoAddressDelegation(readonlyDBConn, address); } + +/** + * Fetch the pool this address is delegating to, if any. + */ +export async function getCardanoAddressProjectedNft( + readonlyDBConn: Pool, + address: string +): Promise { + return await internalGetCardanoProjectedNft(readonlyDBConn, address); +} diff --git a/packages/paima-sdk/paima-utils/src/constants.ts b/packages/paima-sdk/paima-utils/src/constants.ts index ab019ccf2..4b99e272e 100644 --- a/packages/paima-sdk/paima-utils/src/constants.ts +++ b/packages/paima-sdk/paima-utils/src/constants.ts @@ -19,6 +19,7 @@ export const enum ChainDataExtensionType { Generic = 5, ERC6551Registry = 6, CardanoPool = 7, + CardanoProjectedNFT = 8, } export const enum ChainDataExtensionDatumType { @@ -29,6 +30,7 @@ export const enum ChainDataExtensionDatumType { Generic, ERC6551Registry, CardanoPool, + CardanoProjectedNFT, } export const enum Network { diff --git a/tmp-carp-client/shared/models/ProjectedNftRange.d.ts b/tmp-carp-client/shared/models/ProjectedNftRange.d.ts new file mode 100644 index 000000000..12f6d1140 --- /dev/null +++ b/tmp-carp-client/shared/models/ProjectedNftRange.d.ts @@ -0,0 +1,13 @@ +export declare type ProjectedNftRangeRequest = { + range: { minSlot: number, maxSlot: number } +}; + +export declare type ProjectedNftRangeResponse = { + txId: string | null, + slot: number, + address: string | null, + asset: string, + amount: number, + status: string | null, + plutusDatum: string | null, +}[]; \ No newline at end of file diff --git a/tmp-carp-client/shared/models/ProjectedNftRange.js b/tmp-carp-client/shared/models/ProjectedNftRange.js new file mode 100644 index 000000000..c8ad2e549 --- /dev/null +++ b/tmp-carp-client/shared/models/ProjectedNftRange.js @@ -0,0 +1,2 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/routes.d.ts b/tmp-carp-client/shared/routes.d.ts new file mode 100644 index 000000000..e69de29bb diff --git a/tmp-carp-client/shared/routes.js b/tmp-carp-client/shared/routes.js new file mode 100644 index 000000000..e69de29bb From abd7a3871f8c83ccfdbd0b7961d3a3b9d2a32aaf Mon Sep 17 00:00:00 2001 From: Eugene Gostkin Date: Tue, 5 Dec 2023 00:40:54 +0100 Subject: [PATCH 09/24] Queries & rebase --- package-lock.json | 24 +-- ...ProjectedNFT.ts => cardanoProjectedNFT.ts} | 27 +++- .../paima-sm/src/cde-cardano-projected-nft.ts | 51 ++++-- packages/engine/paima-sm/src/types.ts | 49 +++++- packages/node-sdk/paima-db/migrations/up.sql | 11 +- packages/node-sdk/paima-db/src/index.ts | 2 + .../node-sdk/paima-db/src/paima-tables.ts | 40 +++++ .../sql/cde-cardano-projected-nft.queries.ts | 151 ++++++++++++++++++ .../src/sql/cde-cardano-projected-nft.sql | 51 ++++-- .../src/sql/cde-tracking-cardano.queries.ts | 4 +- .../src/cde-access-internals.ts | 13 +- .../paima-utils-backend/src/cde-access.ts | 5 +- .../shared/models/ProjectedNftRange.d.ts | 14 +- 13 files changed, 369 insertions(+), 73 deletions(-) rename packages/engine/paima-funnel/src/cde/{caranoProjectedNFT.ts => cardanoProjectedNFT.ts} (63%) create mode 100644 packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.queries.ts diff --git a/package-lock.json b/package-lock.json index dd24eed90..404ec6c91 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10169,7 +10169,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, "engines": { "node": ">=8" } @@ -11043,8 +11042,7 @@ "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base-x": { "version": "4.0.0", @@ -11210,7 +11208,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -12080,8 +12077,7 @@ "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/conf": { "version": "10.2.0", @@ -15524,8 +15520,7 @@ "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.3", @@ -19583,7 +19578,6 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -20270,7 +20264,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -20928,8 +20921,7 @@ "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/isomorphic-ws": { "version": "4.0.1", @@ -22996,7 +22988,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -27046,7 +27037,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -30253,7 +30243,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, "dependencies": { "ansi-regex": "^5.0.1" }, @@ -30878,8 +30867,7 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "peer": true + "dev": true }, "node_modules/through": { "version": "2.3.8", @@ -34269,7 +34257,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, "dependencies": { "isexe": "^2.0.0" }, @@ -35172,6 +35159,7 @@ } }, "tmp-carp-client": { + "name": "@dcspark/carp-client", "version": "2.2.3", "license": "MIT", "dependencies": { diff --git a/packages/engine/paima-funnel/src/cde/caranoProjectedNFT.ts b/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts similarity index 63% rename from packages/engine/paima-funnel/src/cde/caranoProjectedNFT.ts rename to packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts index 812a84a93..bed7daaf4 100644 --- a/packages/engine/paima-funnel/src/cde/caranoProjectedNFT.ts +++ b/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts @@ -1,11 +1,11 @@ -import { ChainDataExtensionDatumType, DEFAULT_FUNNEL_TIMEOUT, timeout } from '@paima/utils'; import type { CdeCardanoProjectedNFTDatum, ChainDataExtensionCardanoProjectedNFT, ChainDataExtensionDatum, -} from '@paima/runtime'; +} from '@paima/sm'; +import { ChainDataExtensionDatumType, DEFAULT_FUNNEL_TIMEOUT, timeout } from '@paima/utils'; import { Routes, query } from '@dcspark/carp-client/client/src'; -import {ProjectedNftRangeResponse} from "@dcspark/carp-client/shared/models/ProjectedNftRange"; +import type { ProjectedNftRangeResponse } from "@dcspark/carp-client/shared/models/ProjectedNftRange"; export default async function getCdeData( url: string, @@ -21,24 +21,37 @@ export default async function getCdeData( DEFAULT_FUNNEL_TIMEOUT ); - return events.map(e => eventToCdeDatum(e, extension, getBlockNumber(e.slot))); + return events.map(e => eventToCdeDatum(e, extension, getBlockNumber(e.actionSlot))).filter(e => e != null).map(e => e!!); } function eventToCdeDatum( event: ProjectedNftRangeResponse[0], extension: ChainDataExtensionCardanoProjectedNFT, blockNumber: number -): CdeCardanoProjectedNFTDatum { +): CdeCardanoProjectedNFTDatum | null { + if (event.ownerAddress == null || event.actionTxId == null || event.status == null) { + return null; + } + return { cdeId: extension.cdeId, cdeDatumType: ChainDataExtensionDatumType.CardanoProjectedNFT, blockNumber, payload: { - address: event.address, + ownerAddress: event.ownerAddress!!, + + actionTxId: event.actionTxId, + actionOutputIndex: event.actionOutputIndex || undefined, + + previousTxHash: event.previousTxHash || undefined, + previousTxOutputIndex: event.previousTxOutputIndex || undefined, + asset: event.asset, amount: event.amount, status: event.status, - plutusDatum: event.plutusDatum, + plutusDatum: event.plutusDatum || "", + + forHowLong: event.forHowLong || undefined, }, scheduledPrefix: extension.scheduledPrefix, }; diff --git a/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts b/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts index cb8285403..3663d9eee 100644 --- a/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts +++ b/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts @@ -1,33 +1,64 @@ import { ENV } from '@paima/utils'; -import type { CdeCardanoProjectedNFTDatum } from '@paima/runtime'; -import { createScheduledData, cdeCardanoProjectedNftInsertData } from '@paima/db'; +import type { CdeCardanoProjectedNFTDatum } from './types'; +import {createScheduledData, cdeCardanoProjectedNftInsertData, cdeCardanoProjectedNftUpdateData} from '@paima/db'; import type { SQLUpdate } from '@paima/db'; export default async function processDatum(cdeDatum: CdeCardanoProjectedNFTDatum): Promise { const cdeId = cdeDatum.cdeId; const prefix = cdeDatum.scheduledPrefix; - const address = cdeDatum.payload.address; + const ownerAddress = cdeDatum.payload.ownerAddress; + const previousTxHash = cdeDatum.payload.previousTxHash; + const previousOutputIndex = cdeDatum.payload.previousTxOutputIndex; + const currentTxHash = cdeDatum.payload.actionTxId; + const currentOutputIndex = cdeDatum.payload.actionOutputIndex; const amount = cdeDatum.payload.amount; const asset = cdeDatum.payload.asset; const status = cdeDatum.payload.status; const datum = cdeDatum.payload.plutusDatum; + const forHowLong = cdeDatum.payload.forHowLong; const scheduledBlockHeight = Math.max(cdeDatum.blockNumber, ENV.SM_START_BLOCKHEIGHT + 1); - const scheduledInputData = `${prefix}|${address}|${asset}|${amount}|${status}|${datum}`; + const scheduledInputData = `${prefix}|${ownerAddress}|${previousTxHash}|${previousOutputIndex}|${currentTxHash}|${currentOutputIndex}|${status}`; + if (previousTxHash === undefined || previousOutputIndex === undefined) { + const updateList: SQLUpdate[] = [ + createScheduledData(scheduledInputData, scheduledBlockHeight), + [ + cdeCardanoProjectedNftInsertData, + { + cde_id: cdeId, + owner_address: ownerAddress, + current_tx_hash: currentTxHash, + current_tx_output_index: currentOutputIndex, + asset: asset, + amount: amount, + status: status, + plutus_datum: datum, + for_how_long: forHowLong + }, + ], + ]; + return updateList; + } const updateList: SQLUpdate[] = [ createScheduledData(scheduledInputData, scheduledBlockHeight), [ - cdeCardanoProjectedNftInsertData, + cdeCardanoProjectedNftUpdateData, { cde_id: cdeId, - address: cdeDatum.payload.address, - asset: cdeDatum.payload.asset, - amount: cdeDatum.payload.amount, - status: cdeDatum.payload.status, - datum: cdeDatum.payload.plutusDatum + owner_address: ownerAddress, + new_tx_hash: currentTxHash, + new_tx_output_index: currentOutputIndex, + previous_tx_hash: previousTxHash, + previous_tx_output_index: previousOutputIndex, + asset: asset, + amount: amount, + status: status, + plutus_datum: datum, + for_how_long: forHowLong }, ], ]; return updateList; + } diff --git a/packages/engine/paima-sm/src/types.ts b/packages/engine/paima-sm/src/types.ts index 428e30130..336d00de1 100644 --- a/packages/engine/paima-sm/src/types.ts +++ b/packages/engine/paima-sm/src/types.ts @@ -71,6 +71,23 @@ interface CdeDatumCardanoPoolPayload { pool: string | undefined; } +interface CdeDatumCardanoProjectedNFTPayload { + ownerAddress: string, + + actionTxId: string, + actionOutputIndex: number | undefined, + + previousTxHash: string | undefined, + previousTxOutputIndex: number | undefined, + + asset: string, + amount: number, + status: string, + plutusDatum: string, + + forHowLong: number | undefined, +} + type ChainDataExtensionPayload = | CdeDatumErc20TransferPayload | CdeDatumErc721MintPayload @@ -80,7 +97,8 @@ type ChainDataExtensionPayload = // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents | CdeDatumGenericPayload | CdeDatumErc6551RegistryPayload - | CdeDatumCardanoPoolPayload; + | CdeDatumCardanoPoolPayload + | CdeDatumCardanoProjectedNFTPayload; interface CdeDatumBase { cdeId: number; @@ -129,6 +147,12 @@ export interface CdeCardanoPoolDatum extends CdeDatumBase { scheduledPrefix: string; } +export interface CdeCardanoProjectedNFTDatum extends CdeDatumBase { + cdeDatumType: ChainDataExtensionDatumType.CardanoProjectedNFT; + payload: CdeDatumCardanoProjectedNFTPayload; + scheduledPrefix: string; +} + export type ChainDataExtensionDatum = | CdeErc20TransferDatum | CdeErc721MintDatum @@ -136,7 +160,8 @@ export type ChainDataExtensionDatum = | CdeErc20DepositDatum | CdeGenericDatum | CdeErc6551RegistryDatum - | CdeCardanoPoolDatum; + | CdeCardanoPoolDatum + | CdeCardanoProjectedNFTDatum; export enum CdeEntryTypeName { Generic = 'generic', @@ -145,6 +170,7 @@ export enum CdeEntryTypeName { ERC721 = 'erc721', ERC6551Registry = 'erc6551-registry', CardanoDelegation = 'cardano-stake-delegation', + CardanoProjectedNFT = 'cardano-projected-nft', } const EvmAddress = Type.Transform(Type.RegExp('0x[0-9a-fA-F]{40}')) @@ -262,6 +288,21 @@ export type ChainDataExtensionCardanoDelegation = ChainDataExtensionBase & cdeType: ChainDataExtensionType.CardanoPool; }; +export const ChainDataExtensionCardanoProjectedNFTConfig = Type.Intersect([ + Type.Object({ + type: Type.Literal(CdeEntryTypeName.CardanoProjectedNFT), + contract: Type.String(), + scheduledPrefix: Type.String(), + startSlot: Type.Number(), + stopSlot: Type.Optional(Type.Number()), + name: Type.String(), + }), +]); +export type ChainDataExtensionCardanoProjectedNFT = ChainDataExtensionBase & + Static & { + cdeType: ChainDataExtensionType.CardanoProjectedNFT; +}; + export const CdeConfig = Type.Object({ extensions: Type.Array( Type.Union([ @@ -271,6 +312,7 @@ export const CdeConfig = Type.Object({ ChainDataExtensionGenericConfig, ChainDataExtensionErc6551RegistryConfig, ChainDataExtensionCardanoDelegationConfig, + ChainDataExtensionCardanoProjectedNFTConfig, ]) ), }); @@ -295,7 +337,8 @@ export type ChainDataExtension = | ChainDataExtensionErc20Deposit | ChainDataExtensionGeneric | ChainDataExtensionErc6551Registry - | ChainDataExtensionCardanoDelegation; + | ChainDataExtensionCardanoDelegation + | ChainDataExtensionCardanoProjectedNFT; export type GameStateTransitionFunctionRouter = ( blockHeight: number diff --git a/packages/node-sdk/paima-db/migrations/up.sql b/packages/node-sdk/paima-db/migrations/up.sql index a23f6583e..7ca28f822 100644 --- a/packages/node-sdk/paima-db/migrations/up.sql +++ b/packages/node-sdk/paima-db/migrations/up.sql @@ -97,10 +97,15 @@ CREATE TABLE cde_cardano_pool_delegation ( CREATE TABLE cde_cardano_projected_nft ( cde_id INTEGER NOT NULL, id SERIAL, - address TEXT NOT NULL, + owner_address TEXT NOT NULL, + previous_tx_hash TEXT, + previous_tx_output_index INTEGER, + current_tx_hash TEXT NOT NULL, + current_tx_output_index INTEGER, asset TEXT NOT NULL, - amount TEXT NOT NULL, + amount BIGINT NOT NULL, status TEXT NOT NULL, - datum TEXT NOT NULL, + plutus_datum TEXT NOT NULL, + for_how_long BIGINT, PRIMARY KEY (cde_id, id) ); \ No newline at end of file diff --git a/packages/node-sdk/paima-db/src/index.ts b/packages/node-sdk/paima-db/src/index.ts index cabb199be..590c9f1bc 100644 --- a/packages/node-sdk/paima-db/src/index.ts +++ b/packages/node-sdk/paima-db/src/index.ts @@ -31,6 +31,8 @@ export type * from './sql/emulated.queries.js'; export type * from './types.js'; export * from './sql/cde-cardano-pool-delegation.queries.js'; export type * from './sql/cde-cardano-pool-delegation.queries.js'; +export * from './sql/cde-cardano-projected-nft.queries.js'; +export type * from './sql/cde-cardano-projected-nft.queries.js'; export * from './sql/cde-tracking-cardano.queries.js'; export type * from './sql/cde-tracking-cardano.queries.js'; diff --git a/packages/node-sdk/paima-db/src/paima-tables.ts b/packages/node-sdk/paima-db/src/paima-tables.ts index 02178a43b..e3a41659e 100644 --- a/packages/node-sdk/paima-db/src/paima-tables.ts +++ b/packages/node-sdk/paima-db/src/paima-tables.ts @@ -277,6 +277,45 @@ const TABLE_DATA_CDE_CARDANO_POOL: TableData = { creationQuery: QUERY_CREATE_TABLE_CDE_CARDANO_POOL, }; +const QUERY_CREATE_TABLE_CDE_CARDANO_PROJECTED_NFT = ` +CREATE TABLE cde_cardano_projected_nft ( + cde_id INTEGER NOT NULL, + id SERIAL, + owner_address TEXT NOT NULL, + previous_tx_hash TEXT, + previous_tx_output_index INTEGER, + current_tx_hash TEXT NOT NULL, + current_tx_output_index INTEGER, + asset TEXT NOT NULL, + amount BIGINT NOT NULL, + status TEXT NOT NULL, + plutus_datum TEXT NOT NULL, + for_how_long BIGINT, + PRIMARY KEY (cde_id, id) +) +`; + +const TABLE_DATA_CDE_CARDANO_PROJECTED_NFT: TableData = { + tableName: 'cde_cardano_projected_nft', + primaryKeyColumns: ['cde_id', 'id'], + columnData: packTuples([ + ['cde_id', 'integer', 'NO', ''], + ['id', 'integer', 'NO', ''], + ['owner_address', 'text', 'NO', ''], + ['previous_tx_hash', 'text', 'YES', ''], + ['previous_tx_output_index', 'integer', 'YES', ''], + ['current_tx_hash', 'text', 'NO', ''], + ['current_tx_output_index', 'integer', 'YES', ''], + ['asset', 'text', 'NO', ''], + ['amount', 'bigint', 'NO', ''], + ['status', 'text', 'NO', ''], + ['plutus_datum', 'text', 'NO', ''], + ['for_how_long', 'bigint', 'NO', ''], + ]), + serialColumns: ['id'], + creationQuery: QUERY_CREATE_TABLE_CDE_CARDANO_PROJECTED_NFT, +}; + const QUERY_CREATE_TABLE_EMULATED = ` CREATE TABLE emulated_block_heights ( deployment_chain_block_height INTEGER PRIMARY KEY, @@ -311,5 +350,6 @@ export const TABLES: TableData[] = [ TABLE_DATA_CDE_GENERIC_DATA, TABLE_DATA_CDE_ERC6551_REGISTRY, TABLE_DATA_CDE_CARDANO_POOL, + TABLE_DATA_CDE_CARDANO_PROJECTED_NFT, TABLE_DATA_EMULATED, ]; diff --git a/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.queries.ts b/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.queries.ts new file mode 100644 index 000000000..0058bc79e --- /dev/null +++ b/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.queries.ts @@ -0,0 +1,151 @@ +/** Types generated for queries found in "src/sql/cde-cardano-projected-nft.sql" */ +import { PreparedQuery } from '@pgtyped/runtime'; + +export type NumberOrString = number | string; + +/** 'CdeCardanoGetProjectedNft' parameters type */ +export interface ICdeCardanoGetProjectedNftParams { + owner_address: string; +} + +/** 'CdeCardanoGetProjectedNft' return type */ +export interface ICdeCardanoGetProjectedNftResult { + amount: string; + asset: string; + cde_id: number; + current_tx_hash: string; + current_tx_output_index: number | null; + for_how_long: string | null; + id: number; + owner_address: string; + plutus_datum: string; + previous_tx_hash: string | null; + previous_tx_output_index: number | null; + status: string; +} + +/** 'CdeCardanoGetProjectedNft' query type */ +export interface ICdeCardanoGetProjectedNftQuery { + params: ICdeCardanoGetProjectedNftParams; + result: ICdeCardanoGetProjectedNftResult; +} + +const cdeCardanoGetProjectedNftIR: any = {"usedParamSet":{"owner_address":true},"params":[{"name":"owner_address","required":true,"transform":{"type":"scalar"},"locs":[{"a":62,"b":76}]}],"statement":"SELECT * FROM cde_cardano_projected_nft\nWHERE owner_address = :owner_address!"}; + +/** + * Query generated from SQL: + * ``` + * SELECT * FROM cde_cardano_projected_nft + * WHERE owner_address = :owner_address! + * ``` + */ +export const cdeCardanoGetProjectedNft = new PreparedQuery(cdeCardanoGetProjectedNftIR); + + +/** 'CdeCardanoProjectedNftInsertData' parameters type */ +export interface ICdeCardanoProjectedNftInsertDataParams { + amount: NumberOrString; + asset: string; + cde_id: number; + current_tx_hash: string; + current_tx_output_index: number; + for_how_long: NumberOrString; + owner_address: string; + plutus_datum: string; + status: string; +} + +/** 'CdeCardanoProjectedNftInsertData' return type */ +export type ICdeCardanoProjectedNftInsertDataResult = void; + +/** 'CdeCardanoProjectedNftInsertData' query type */ +export interface ICdeCardanoProjectedNftInsertDataQuery { + params: ICdeCardanoProjectedNftInsertDataParams; + result: ICdeCardanoProjectedNftInsertDataResult; +} + +const cdeCardanoProjectedNftInsertDataIR: any = {"usedParamSet":{"cde_id":true,"owner_address":true,"current_tx_hash":true,"current_tx_output_index":true,"asset":true,"amount":true,"status":true,"plutus_datum":true,"for_how_long":true},"params":[{"name":"cde_id","required":true,"transform":{"type":"scalar"},"locs":[{"a":214,"b":221}]},{"name":"owner_address","required":true,"transform":{"type":"scalar"},"locs":[{"a":237,"b":251}]},{"name":"current_tx_hash","required":true,"transform":{"type":"scalar"},"locs":[{"a":267,"b":283}]},{"name":"current_tx_output_index","required":true,"transform":{"type":"scalar"},"locs":[{"a":299,"b":323}]},{"name":"asset","required":true,"transform":{"type":"scalar"},"locs":[{"a":339,"b":345}]},{"name":"amount","required":true,"transform":{"type":"scalar"},"locs":[{"a":361,"b":368}]},{"name":"status","required":true,"transform":{"type":"scalar"},"locs":[{"a":384,"b":391}]},{"name":"plutus_datum","required":true,"transform":{"type":"scalar"},"locs":[{"a":407,"b":420}]},{"name":"for_how_long","required":true,"transform":{"type":"scalar"},"locs":[{"a":436,"b":449}]}],"statement":"INSERT INTO cde_cardano_projected_nft(\n cde_id,\n owner_address,\n current_tx_hash,\n current_tx_output_index,\n asset,\n amount,\n status,\n plutus_datum,\n for_how_long\n) VALUES (\n :cde_id!,\n :owner_address!,\n :current_tx_hash!,\n :current_tx_output_index!,\n :asset!,\n :amount!,\n :status!,\n :plutus_datum!,\n :for_how_long!\n )"}; + +/** + * Query generated from SQL: + * ``` + * INSERT INTO cde_cardano_projected_nft( + * cde_id, + * owner_address, + * current_tx_hash, + * current_tx_output_index, + * asset, + * amount, + * status, + * plutus_datum, + * for_how_long + * ) VALUES ( + * :cde_id!, + * :owner_address!, + * :current_tx_hash!, + * :current_tx_output_index!, + * :asset!, + * :amount!, + * :status!, + * :plutus_datum!, + * :for_how_long! + * ) + * ``` + */ +export const cdeCardanoProjectedNftInsertData = new PreparedQuery(cdeCardanoProjectedNftInsertDataIR); + + +/** 'CdeCardanoProjectedNftUpdateData' parameters type */ +export interface ICdeCardanoProjectedNftUpdateDataParams { + amount: NumberOrString; + asset: string; + cde_id: number; + for_how_long: NumberOrString; + new_tx_hash: string; + new_tx_output_index: number; + owner_address: string; + plutus_datum: string; + previous_tx_hash: string; + previous_tx_output_index: number; + status: string; +} + +/** 'CdeCardanoProjectedNftUpdateData' return type */ +export interface ICdeCardanoProjectedNftUpdateDataResult { + previous_tx_hash: string | null; + previous_tx_output_index: number | null; +} + +/** 'CdeCardanoProjectedNftUpdateData' query type */ +export interface ICdeCardanoProjectedNftUpdateDataQuery { + params: ICdeCardanoProjectedNftUpdateDataParams; + result: ICdeCardanoProjectedNftUpdateDataResult; +} + +const cdeCardanoProjectedNftUpdateDataIR: any = {"usedParamSet":{"previous_tx_hash":true,"previous_tx_output_index":true,"new_tx_hash":true,"new_tx_output_index":true,"status":true,"plutus_datum":true,"for_how_long":true,"cde_id":true,"owner_address":true,"asset":true,"amount":true},"params":[{"name":"previous_tx_hash","required":true,"transform":{"type":"scalar"},"locs":[{"a":60,"b":77},{"a":415,"b":432}]},{"name":"previous_tx_output_index","required":true,"transform":{"type":"scalar"},"locs":[{"a":111,"b":136},{"a":468,"b":493}]},{"name":"new_tx_hash","required":true,"transform":{"type":"scalar"},"locs":[{"a":161,"b":173}]},{"name":"new_tx_output_index","required":true,"transform":{"type":"scalar"},"locs":[{"a":206,"b":226}]},{"name":"status","required":true,"transform":{"type":"scalar"},"locs":[{"a":242,"b":249}]},{"name":"plutus_datum","required":true,"transform":{"type":"scalar"},"locs":[{"a":271,"b":284}]},{"name":"for_how_long","required":true,"transform":{"type":"scalar"},"locs":[{"a":306,"b":319}]},{"name":"cde_id","required":true,"transform":{"type":"scalar"},"locs":[{"a":340,"b":347}]},{"name":"owner_address","required":true,"transform":{"type":"scalar"},"locs":[{"a":373,"b":387}]},{"name":"asset","required":true,"transform":{"type":"scalar"},"locs":[{"a":511,"b":517}]},{"name":"amount","required":true,"transform":{"type":"scalar"},"locs":[{"a":536,"b":543}]}],"statement":"UPDATE cde_cardano_projected_nft\nSET\n previous_tx_hash = :previous_tx_hash!,\n previous_tx_output_index = :previous_tx_output_index!,\n current_tx_hash = :new_tx_hash!,\n current_tx_output_index = :new_tx_output_index!,\n status = :status!,\n plutus_datum = :plutus_datum!,\n for_how_long = :for_how_long!\nWHERE\n cde_id = :cde_id!\n AND owner_address = :owner_address!\n AND current_tx_hash = :previous_tx_hash!\n AND current_tx_output_index = :previous_tx_output_index!\n AND asset = :asset!\n AND amount = :amount!\nRETURNING previous_tx_hash, previous_tx_output_index"}; + +/** + * Query generated from SQL: + * ``` + * UPDATE cde_cardano_projected_nft + * SET + * previous_tx_hash = :previous_tx_hash!, + * previous_tx_output_index = :previous_tx_output_index!, + * current_tx_hash = :new_tx_hash!, + * current_tx_output_index = :new_tx_output_index!, + * status = :status!, + * plutus_datum = :plutus_datum!, + * for_how_long = :for_how_long! + * WHERE + * cde_id = :cde_id! + * AND owner_address = :owner_address! + * AND current_tx_hash = :previous_tx_hash! + * AND current_tx_output_index = :previous_tx_output_index! + * AND asset = :asset! + * AND amount = :amount! + * RETURNING previous_tx_hash, previous_tx_output_index + * ``` + */ +export const cdeCardanoProjectedNftUpdateData = new PreparedQuery(cdeCardanoProjectedNftUpdateDataIR); + + diff --git a/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.sql b/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.sql index 400765902..44e61fbfe 100644 --- a/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.sql +++ b/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.sql @@ -1,28 +1,45 @@ /* @name cdeCardanoGetProjectedNft */ SELECT * FROM cde_cardano_projected_nft -WHERE address = :address!; +WHERE owner_address = :owner_address!; /* @name cdeCardanoProjectedNftInsertData */ -INSERT INTO cde_cardano_pool_delegation( +INSERT INTO cde_cardano_projected_nft( cde_id, - address, + owner_address, + current_tx_hash, + current_tx_output_index, asset, amount, status, - datum, + plutus_datum, + for_how_long ) VALUES ( :cde_id!, - :address!, - :asset! - :amount! - :status! - :datum! - ) ON CONFLICT (cde_id, address) DO -UPDATE SET pool = :pool!; + :owner_address!, + :current_tx_hash!, + :current_tx_output_index!, + :asset!, + :amount!, + :status!, + :plutus_datum!, + :for_how_long! + ); -cde_id: cdeId, - address: cdeDatum.payload.address, - asset: cdeDatum.payload.asset, - amount: cdeDatum.payload.amount, - status: cdeDatum.payload.status, - datum: cdeDatum.payload.plutusDatum \ No newline at end of file +/* @name cdeCardanoProjectedNftUpdateData */ +UPDATE cde_cardano_projected_nft +SET + previous_tx_hash = :previous_tx_hash!, + previous_tx_output_index = :previous_tx_output_index!, + current_tx_hash = :new_tx_hash!, + current_tx_output_index = :new_tx_output_index!, + status = :status!, + plutus_datum = :plutus_datum!, + for_how_long = :for_how_long! +WHERE + cde_id = :cde_id! + AND owner_address = :owner_address! + AND current_tx_hash = :previous_tx_hash! + AND current_tx_output_index = :previous_tx_output_index! + AND asset = :asset! + AND amount = :amount! +RETURNING previous_tx_hash, previous_tx_output_index; \ No newline at end of file diff --git a/packages/node-sdk/paima-db/src/sql/cde-tracking-cardano.queries.ts b/packages/node-sdk/paima-db/src/sql/cde-tracking-cardano.queries.ts index 1a8ad4abd..c8df1a0b7 100644 --- a/packages/node-sdk/paima-db/src/sql/cde-tracking-cardano.queries.ts +++ b/packages/node-sdk/paima-db/src/sql/cde-tracking-cardano.queries.ts @@ -15,7 +15,7 @@ export interface IMarkCardanoCdeSlotProcessedQuery { result: IMarkCardanoCdeSlotProcessedResult; } -const markCardanoCdeSlotProcessedIR: any = {"usedParamSet":{"slot":true},"params":[{"name":"slot","required":true,"transform":{"type":"scalar"},"locs":[{"a":53,"b":58},{"a":100,"b":105}]}],"statement":"INSERT INTO cde_tracking_cardano(id,slot)\nVALUES (0, :slot!)\nON CONFLICT (id) \nDO UPDATE SET slot = :slot!"}; +const markCardanoCdeSlotProcessedIR: any = {"usedParamSet":{"slot":true},"params":[{"name":"slot","required":true,"transform":{"type":"scalar"},"locs":[{"a":53,"b":58},{"a":99,"b":104}]}],"statement":"INSERT INTO cde_tracking_cardano(id,slot)\nVALUES (0, :slot!)\nON CONFLICT (id)\nDO UPDATE SET slot = :slot!"}; /** * Query generated from SQL: @@ -34,7 +34,7 @@ export type IGetCardanoLatestProcessedCdeSlotParams = void; /** 'GetCardanoLatestProcessedCdeSlot' return type */ export interface IGetCardanoLatestProcessedCdeSlotResult { - slot: number | null; + slot: number; } /** 'GetCardanoLatestProcessedCdeSlot' query type */ diff --git a/packages/node-sdk/paima-utils-backend/src/cde-access-internals.ts b/packages/node-sdk/paima-utils-backend/src/cde-access-internals.ts index 836a66c56..330b5ffd3 100644 --- a/packages/node-sdk/paima-utils-backend/src/cde-access-internals.ts +++ b/packages/node-sdk/paima-utils-backend/src/cde-access-internals.ts @@ -13,7 +13,7 @@ import { cdeErc6551GetOwnedAccounts, cdeErc6551GetOwner, cdeCardanoPoolGetAddressDelegation, - cdeCardanoGetProjectedNft, + cdeCardanoGetProjectedNft, ICdeCardanoGetProjectedNftResult, } from '@paima/db'; import type { OwnedNftsResponse, GenericCdeDataUnit, TokenIdPair } from './types.js'; @@ -194,12 +194,9 @@ export async function internalGetCardanoAddressDelegation( export async function internalGetCardanoProjectedNft( readonlyDBConn: Pool, - address: string -): Promise { - const results = await cdeCardanoGetProjectedNft.run({ address }, readonlyDBConn); - if (results.length === 0) { - return null; - } + owner_address: string +): Promise { + const results = await cdeCardanoGetProjectedNft.run({ owner_address }, readonlyDBConn); - return results[0].pool; + return results; } diff --git a/packages/node-sdk/paima-utils-backend/src/cde-access.ts b/packages/node-sdk/paima-utils-backend/src/cde-access.ts index eca573931..fd5b1610e 100644 --- a/packages/node-sdk/paima-utils-backend/src/cde-access.ts +++ b/packages/node-sdk/paima-utils-backend/src/cde-access.ts @@ -16,6 +16,7 @@ import { internalGetCardanoProjectedNft, } from './cde-access-internals.js'; import type { OwnedNftsResponse, GenericCdeDataUnit, TokenIdPair } from './types.js'; +import {ICdeCardanoGetProjectedNftResult} from "@paima/db/src"; /** * Fetch the owner of the NFT from the database @@ -172,9 +173,9 @@ export async function getCardanoAddressDelegation( /** * Fetch the pool this address is delegating to, if any. */ -export async function getCardanoAddressProjectedNft( +export async function getCardanoAddressProjectedNfts( readonlyDBConn: Pool, address: string -): Promise { +): Promise { return await internalGetCardanoProjectedNft(readonlyDBConn, address); } diff --git a/tmp-carp-client/shared/models/ProjectedNftRange.d.ts b/tmp-carp-client/shared/models/ProjectedNftRange.d.ts index 12f6d1140..dbdc24339 100644 --- a/tmp-carp-client/shared/models/ProjectedNftRange.d.ts +++ b/tmp-carp-client/shared/models/ProjectedNftRange.d.ts @@ -3,11 +3,19 @@ export declare type ProjectedNftRangeRequest = { }; export declare type ProjectedNftRangeResponse = { - txId: string | null, - slot: number, - address: string | null, + actionSlot: number, + + ownerAddress: string | null, + + actionTxId: string | null, + actionOutputIndex: number | null, + + previousTxHash: string | null, + previousTxOutputIndex: number | null, + asset: string, amount: number, status: string | null, plutusDatum: string | null, + forHowLong: number | null, }[]; \ No newline at end of file From 8972ee03e332a6c39e419e56ab267197858b700d Mon Sep 17 00:00:00 2001 From: Eugene Gostkin Date: Tue, 5 Dec 2023 12:02:51 +0100 Subject: [PATCH 10/24] Funnel fixes --- package-lock.json | 692 +----------------- .../src/cde/cardanoProjectedNFT.ts | 2 +- .../paima-funnel/src/funnels/carp/funnel.ts | 81 +- packages/engine/paima-sm/src/types.ts | 39 +- 4 files changed, 94 insertions(+), 720 deletions(-) diff --git a/package-lock.json b/package-lock.json index 404ec6c91..6fa4ec856 100644 --- a/package-lock.json +++ b/package-lock.json @@ -49,6 +49,7 @@ "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true, + "peer": true, "engines": { "node": ">=0.10.0" } @@ -3401,21 +3402,12 @@ "node": ">=10.10.0" } }, - "node_modules/@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, + "peer": true, "engines": { "node": ">=12.22" }, @@ -9114,12 +9106,6 @@ "@types/node": "*" } }, - "node_modules/@types/lodash": { - "version": "4.14.202", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", - "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==", - "dev": true - }, "node_modules/@types/long": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", @@ -12552,7 +12538,8 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/deepmerge": { "version": "4.3.1", @@ -12929,6 +12916,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, + "peer": true, "dependencies": { "esutils": "^2.0.2" }, @@ -13844,6 +13832,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, + "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -13855,33 +13844,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", @@ -14000,6 +13962,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "peer": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -15100,7 +15063,8 @@ "version": "2.0.6", "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true + "dev": true, + "peer": true }, "node_modules/fast-safe-stringify": { "version": "2.1.1", @@ -15189,6 +15153,7 @@ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, + "peer": true, "dependencies": { "flat-cache": "^3.0.4" }, @@ -15307,6 +15272,7 @@ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, + "peer": true, "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -19598,6 +19564,7 @@ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, + "peer": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -19734,12 +19701,6 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true - }, "node_modules/graphemer": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", @@ -21708,16 +21669,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/js-sdsl": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.4.2.tgz", - "integrity": "sha512-dwXFwByc/ajSV6m5bcKAPwe4yDDF6D614pxmIi5odytzxRlwqF6nwoiCek80Ixc7Cvma5awClxrzFtxCQvcM8w==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, "node_modules/js-sha256": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/js-sha256/-/js-sha256-0.9.0.tgz", @@ -21899,7 +21850,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true + "dev": true, + "peer": true }, "node_modules/json-stringify-safe": { "version": "5.0.1", @@ -22367,6 +22319,7 @@ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, + "peer": true, "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -22483,7 +22436,8 @@ "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/lodash.sortby": { "version": "4.7.0", @@ -26786,6 +26740,7 @@ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, + "peer": true, "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", @@ -28249,6 +28204,7 @@ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, + "peer": true, "engines": { "node": ">= 0.8.0" } @@ -28876,18 +28832,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, "node_modules/regexpu-core": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", @@ -30867,7 +30811,8 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true + "dev": true, + "peer": true }, "node_modules/through": { "version": "2.3.8", @@ -31485,6 +31430,7 @@ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, + "peer": true, "dependencies": { "prelude-ls": "^1.2.1" }, @@ -35157,600 +35103,6 @@ "engines": { "node": ">= 14" } - }, - "tmp-carp-client": { - "name": "@dcspark/carp-client", - "version": "2.2.3", - "license": "MIT", - "dependencies": { - "axios": "^0.27.2" - }, - "devDependencies": { - "@dcspark/cardano-multiplatform-lib-nodejs": "3.0.1", - "@types/eslint": "8.4.6", - "@types/eslint-plugin-prettier": "3.1.0", - "@types/lodash": "^4.14.185", - "@types/node": "^17.0.31", - "@types/prettier": "2.7.0", - "@typescript-eslint/eslint-plugin": "5.38.0", - "@typescript-eslint/parser": "5.38.0", - "eslint": "8.23.1", - "eslint-config-airbnb-typescript": "17.0.0", - "eslint-config-prettier": "8.5.0", - "eslint-plugin-import": "2.26.0", - "eslint-plugin-prettier": "4.2.1", - "eslint-plugin-promise": "6.0.1", - "lodash": "^4.17.21", - "prettier": "2.7.1", - "ts-node": "10.9.1", - "typescript": "4.7.4" - } - }, - "tmp-carp-client/node_modules/@eslint/eslintrc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.4.1.tgz", - "integrity": "sha512-XXrH9Uarn0stsyldqDYq8r++mROmWRI1xKMXa640Bb//SY1+ECYX6VzT6Lcx5frD0V30XieqJ0oX9I2Xj5aoMA==", - "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.4.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "tmp-carp-client/node_modules/@humanwhocodes/config-array": { - "version": "0.10.7", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.10.7.tgz", - "integrity": "sha512-MDl6D6sBsaV452/QSdX+4CXIjZhIcI0PELsxUjk4U828yd58vk3bTIvk/6w5FY+4hIy9sLW0sfrV7K7Kc++j/w==", - "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "tmp-carp-client/node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "tmp-carp-client/node_modules/@types/eslint": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", - "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "tmp-carp-client/node_modules/@types/eslint-plugin-prettier": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.0.tgz", - "integrity": "sha512-6/UIuz99F0IvtDez4U3bRwAmN4VKnuw10Ibblf0iZhtNbmbonMSLqs/qqsXrGIAWvjy+vXqYwOljgtLhrETSMg==", - "dev": true, - "dependencies": { - "@types/eslint": "*" - } - }, - "tmp-carp-client/node_modules/@types/node": { - "version": "17.0.45", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.45.tgz", - "integrity": "sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==", - "dev": true - }, - "tmp-carp-client/node_modules/@types/prettier": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz", - "integrity": "sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==", - "dev": true - }, - "tmp-carp-client/node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.38.0.tgz", - "integrity": "sha512-GgHi/GNuUbTOeoJiEANi0oI6fF3gBQc3bGFYj40nnAPCbhrtEDf2rjBmefFadweBmO1Du1YovHeDP2h5JLhtTQ==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.38.0", - "@typescript-eslint/type-utils": "5.38.0", - "@typescript-eslint/utils": "5.38.0", - "debug": "^4.3.4", - "ignore": "^5.2.0", - "regexpp": "^3.2.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "tmp-carp-client/node_modules/@typescript-eslint/parser": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.38.0.tgz", - "integrity": "sha512-/F63giJGLDr0ms1Cr8utDAxP2SPiglaD6V+pCOcG35P2jCqdfR7uuEhz1GIC3oy4hkUF8xA1XSXmd9hOh/a5EA==", - "dev": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.38.0", - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/typescript-estree": "5.38.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "tmp-carp-client/node_modules/@typescript-eslint/scope-manager": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.38.0.tgz", - "integrity": "sha512-ByhHIuNyKD9giwkkLqzezZ9y5bALW8VNY6xXcP+VxoH4JBDKjU5WNnsiD4HJdglHECdV+lyaxhvQjTUbRboiTA==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/visitor-keys": "5.38.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "tmp-carp-client/node_modules/@typescript-eslint/type-utils": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.38.0.tgz", - "integrity": "sha512-iZq5USgybUcj/lfnbuelJ0j3K9dbs1I3RICAJY9NZZpDgBYXmuUlYQGzftpQA9wC8cKgtS6DASTvF3HrXwwozA==", - "dev": true, - "dependencies": { - "@typescript-eslint/typescript-estree": "5.38.0", - "@typescript-eslint/utils": "5.38.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "tmp-carp-client/node_modules/@typescript-eslint/types": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.38.0.tgz", - "integrity": "sha512-HHu4yMjJ7i3Cb+8NUuRCdOGu2VMkfmKyIJsOr9PfkBVYLYrtMCK/Ap50Rpov+iKpxDTfnqvDbuPLgBE5FwUNfA==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "tmp-carp-client/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.38.0.tgz", - "integrity": "sha512-6P0RuphkR+UuV7Avv7MU3hFoWaGcrgOdi8eTe1NwhMp2/GjUJoODBTRWzlHpZh6lFOaPmSvgxGlROa0Sg5Zbyg==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/visitor-keys": "5.38.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "tmp-carp-client/node_modules/@typescript-eslint/utils": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.38.0.tgz", - "integrity": "sha512-6sdeYaBgk9Fh7N2unEXGz+D+som2QCQGPAf1SxrkEr+Z32gMreQ0rparXTNGRRfYUWk/JzbGdcM8NSSd6oqnTA==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.38.0", - "@typescript-eslint/types": "5.38.0", - "@typescript-eslint/typescript-estree": "5.38.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "tmp-carp-client/node_modules/@typescript-eslint/utils/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "tmp-carp-client/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.38.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.38.0.tgz", - "integrity": "sha512-MxnrdIyArnTi+XyFLR+kt/uNAcdOnmT+879os7qDRI+EYySR4crXJq9BXPfRzzLGq0wgxkwidrCJ9WCAoacm1w==", - "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.38.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "tmp-carp-client/node_modules/axios": { - "version": "0.27.2", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.27.2.tgz", - "integrity": "sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==", - "dependencies": { - "follow-redirects": "^1.14.9", - "form-data": "^4.0.0" - } - }, - "tmp-carp-client/node_modules/eslint": { - "version": "8.23.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.23.1.tgz", - "integrity": "sha512-w7C1IXCc6fNqjpuYd0yPlcTKKmHlHHktRkzmBPZ+7cvNBQuiNjx0xaMTjAJGCafJhQkrFJooREv0CtrVzmHwqg==", - "dev": true, - "dependencies": { - "@eslint/eslintrc": "^1.3.2", - "@humanwhocodes/config-array": "^0.10.4", - "@humanwhocodes/gitignore-to-minimatch": "^1.0.2", - "@humanwhocodes/module-importer": "^1.0.1", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.1.1", - "eslint-utils": "^3.0.0", - "eslint-visitor-keys": "^3.3.0", - "espree": "^9.4.0", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.1", - "globals": "^13.15.0", - "globby": "^11.1.0", - "grapheme-splitter": "^1.0.4", - "ignore": "^5.2.0", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-sdsl": "^4.1.4", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "regexpp": "^3.2.0", - "strip-ansi": "^6.0.1", - "strip-json-comments": "^3.1.0", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "tmp-carp-client/node_modules/eslint-config-airbnb-typescript": { - "version": "17.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.0.0.tgz", - "integrity": "sha512-elNiuzD0kPAPTXjFWg+lE24nMdHMtuxgYoD30OyMD6yrW1AhFZPAg27VX7d3tzOErw+dgJTNWfRSDqEcXb4V0g==", - "dev": true, - "dependencies": { - "eslint-config-airbnb-base": "^15.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.13.0", - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^7.32.0 || ^8.2.0", - "eslint-plugin-import": "^2.25.3" - } - }, - "tmp-carp-client/node_modules/eslint-config-prettier": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", - "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", - "dev": true, - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" - } - }, - "tmp-carp-client/node_modules/eslint-plugin-import": { - "version": "2.26.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", - "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flat": "^1.2.5", - "debug": "^2.6.9", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-module-utils": "^2.7.3", - "has": "^1.0.3", - "is-core-module": "^2.8.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.values": "^1.1.5", - "resolve": "^1.22.0", - "tsconfig-paths": "^3.14.1" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" - } - }, - "tmp-carp-client/node_modules/eslint-plugin-import/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "tmp-carp-client/node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "tmp-carp-client/node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", - "dev": true, - "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } - } - }, - "tmp-carp-client/node_modules/eslint-plugin-promise": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.0.1.tgz", - "integrity": "sha512-uM4Tgo5u3UWQiroOyDEsYcVMOo7re3zmno0IZmB5auxoaQNIceAbXEkSt8RNrKtaYehARHG06pYK6K1JhtP0Zw==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "tmp-carp-client/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "tmp-carp-client/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "tmp-carp-client/node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "tmp-carp-client/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "tmp-carp-client/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "tmp-carp-client/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "tmp-carp-client/node_modules/prettier": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz", - "integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "tmp-carp-client/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "tmp-carp-client/node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", - "dev": true, - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "tmp-carp-client/node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } } } } diff --git a/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts b/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts index bed7daaf4..a605ba10b 100644 --- a/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts +++ b/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts @@ -7,7 +7,7 @@ import { ChainDataExtensionDatumType, DEFAULT_FUNNEL_TIMEOUT, timeout } from '@p import { Routes, query } from '@dcspark/carp-client/client/src'; import type { ProjectedNftRangeResponse } from "@dcspark/carp-client/shared/models/ProjectedNftRange"; -export default async function getCdeData( +export default async function getCdeProjectedNFTData( url: string, extension: ChainDataExtensionCardanoProjectedNFT, fromAbsoluteSlot: number, diff --git a/packages/engine/paima-funnel/src/funnels/carp/funnel.ts b/packages/engine/paima-funnel/src/funnels/carp/funnel.ts index 354bd5a6d..c65186ff3 100644 --- a/packages/engine/paima-funnel/src/funnels/carp/funnel.ts +++ b/packages/engine/paima-funnel/src/funnels/carp/funnel.ts @@ -1,31 +1,31 @@ import { ChainDataExtensionType, DEFAULT_FUNNEL_TIMEOUT, - ENV, - Network, delay, doLog, + ENV, logError, + Network, timeout, } from '@paima/utils'; -import type { ChainDataExtensionDatum } from '@paima/sm'; import { type ChainData, type ChainDataExtension, - type ChainDataExtensionCardanoDelegation, + type ChainDataExtensionCardanoDelegation, ChainDataExtensionCardanoProjectedNFT, + type ChainDataExtensionDatum, type PresyncChainData, - ChainDataExtensionDatum, } from '@paima/sm'; -import { composeChainData, groupCdeData } from '../../utils.js'; -import { BaseFunnel } from '../BaseFunnel.js'; -import type { FunnelSharedData } from '../BaseFunnel.js'; -import type { PoolClient } from 'pg'; -import type { ChainFunnel, ReadPresyncDataFrom } from '@paima/runtime'; +import {composeChainData, groupCdeData} from '../../utils.js'; +import type {FunnelSharedData} from '../BaseFunnel.js'; +import {BaseFunnel} from '../BaseFunnel.js'; +import type {PoolClient} from 'pg'; +import type {ChainFunnel, ReadPresyncDataFrom} from '@paima/runtime'; import getCdePoolData from '../../cde/cardanoPool.js'; -import { query } from '@dcspark/carp-client/client/src/index'; -import { Routes } from '@dcspark/carp-client/shared/routes'; -import { FUNNEL_PRESYNC_FINISHED } from '@paima/utils/src/constants'; -import { CarpFunnelCacheEntry } from '../FunnelCache.js'; +import getCdeProjectedNFTData from '../../cde/cardanoProjectedNFT.js'; +import {query} from '@dcspark/carp-client/client/src/index'; +import {Routes} from '@dcspark/carp-client/shared/routes'; +import {FUNNEL_PRESYNC_FINISHED} from '@paima/utils/src/constants'; +import {CarpFunnelCacheEntry} from '../FunnelCache.js'; const delayForWaitingForFinalityLoop = 1000; @@ -141,27 +141,40 @@ export class CarpFunnel extends BaseFunnel implements ChainFunnel { let basePromise = this.baseFunnel.readPresyncData(args); if (arg && arg.from >= 0 && arg.from < this.cache.getState().startingSlot) { - const [poolEvents, data] = await Promise.all([ + const [carpEvents, data] = await Promise.all([ Promise.all( this.sharedData.extensions - .filter(extension => extension.cdeType === ChainDataExtensionType.CardanoPool) + .filter(extension => extension.cdeType === ChainDataExtensionType.CardanoPool || extension.cdeType === ChainDataExtensionType.CardanoProjectedNFT) .map(extension => { - const data = getCdePoolData( - this.carpUrl, - extension as ChainDataExtensionCardanoDelegation, - arg.from, - Math.min(arg.to, this.cache.getState().startingSlot - 1), - slot => { - return slot; - } - ); - return data; + if (extension.cdeType === ChainDataExtensionType.CardanoPool) { + const data = getCdePoolData( + this.carpUrl, + extension as ChainDataExtensionCardanoDelegation, + arg.from, + Math.min(arg.to, this.cache.getState().startingSlot - 1), + slot => { + return slot; + } + ); + return data; + } else { // ProjectedNFT + const data = getCdeProjectedNFTData( + this.carpUrl, + extension as ChainDataExtensionCardanoProjectedNFT, + arg.from, + Math.min(arg.to, this.cache.getState().startingSlot - 1), + slot => { + return slot; + } + ); + return data; + } }) ), basePromise, ]); - let grouped = groupCdeData(Network.CARDANO, arg.from, arg.to, poolEvents); + let grouped = groupCdeData(Network.CARDANO, arg.from, arg.to, carpEvents); if (grouped.length > 0) { data[Network.CARDANO] = grouped; @@ -284,7 +297,17 @@ async function readDataInternal( switch (extension.cdeType) { case ChainDataExtensionType.CardanoPool: - const data = getCdePoolData( + const poolData = getCdePoolData( + carpUrl, + extension, + min, + Math.min(max, extension.stopSlot || max), + mapSlotToBlockNumber + ); + + return poolData; + case ChainDataExtensionType.CardanoProjectedNFT: + const projectedNFTData = getCdeProjectedNFTData( carpUrl, extension, min, @@ -292,7 +315,7 @@ async function readDataInternal( mapSlotToBlockNumber ); - return data; + return projectedNFTData; default: return Promise.resolve([]); } diff --git a/packages/engine/paima-sm/src/types.ts b/packages/engine/paima-sm/src/types.ts index 336d00de1..cc0940360 100644 --- a/packages/engine/paima-sm/src/types.ts +++ b/packages/engine/paima-sm/src/types.ts @@ -72,20 +72,20 @@ interface CdeDatumCardanoPoolPayload { } interface CdeDatumCardanoProjectedNFTPayload { - ownerAddress: string, + ownerAddress: string; - actionTxId: string, - actionOutputIndex: number | undefined, + actionTxId: string; + actionOutputIndex: number | undefined; - previousTxHash: string | undefined, - previousTxOutputIndex: number | undefined, + previousTxHash: string | undefined; + previousTxOutputIndex: number | undefined; - asset: string, - amount: number, - status: string, - plutusDatum: string, + asset: string; + amount: number; + status: string; + plutusDatum: string; - forHowLong: number | undefined, + forHowLong: number | undefined; } type ChainDataExtensionPayload = @@ -288,16 +288,15 @@ export type ChainDataExtensionCardanoDelegation = ChainDataExtensionBase & cdeType: ChainDataExtensionType.CardanoPool; }; -export const ChainDataExtensionCardanoProjectedNFTConfig = Type.Intersect([ - Type.Object({ - type: Type.Literal(CdeEntryTypeName.CardanoProjectedNFT), - contract: Type.String(), - scheduledPrefix: Type.String(), - startSlot: Type.Number(), - stopSlot: Type.Optional(Type.Number()), - name: Type.String(), - }), -]); +export const ChainDataExtensionCardanoProjectedNFTConfig = Type.Object({ + type: Type.Literal(CdeEntryTypeName.CardanoProjectedNFT), + contract: Type.String(), + scheduledPrefix: Type.String(), + startSlot: Type.Number(), + stopSlot: Type.Optional(Type.Number()), + name: Type.String(), +}); + export type ChainDataExtensionCardanoProjectedNFT = ChainDataExtensionBase & Static & { cdeType: ChainDataExtensionType.CardanoProjectedNFT; From 73d76e0c676f002971100d106129d7cf16012695 Mon Sep 17 00:00:00 2001 From: Eugene Gostkin Date: Fri, 8 Dec 2023 13:16:35 +0100 Subject: [PATCH 11/24] Lint & minor fixes --- .../src/cde/cardanoProjectedNFT.ts | 103 +++++++++------- .../paima-funnel/src/funnels/BaseFunnel.ts | 2 +- .../paima-funnel/src/funnels/carp/funnel.ts | 61 +++++----- .../paima-runtime/src/cde-config/utils.ts | 14 ++- .../engine/paima-runtime/src/runtime-loops.ts | 6 +- .../paima-sm/src/cde-cardano-projected-nft.ts | 113 +++++++++--------- packages/engine/paima-sm/src/types.ts | 6 +- .../src/cde-access-internals.ts | 3 +- .../paima-utils-backend/src/cde-access.ts | 2 +- 9 files changed, 168 insertions(+), 142 deletions(-) diff --git a/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts b/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts index a605ba10b..1bb57177a 100644 --- a/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts +++ b/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts @@ -1,58 +1,69 @@ import type { - CdeCardanoProjectedNFTDatum, - ChainDataExtensionCardanoProjectedNFT, - ChainDataExtensionDatum, + CdeCardanoProjectedNFTDatum, + ChainDataExtensionCardanoProjectedNFT, + ChainDataExtensionDatum, } from '@paima/sm'; import { ChainDataExtensionDatumType, DEFAULT_FUNNEL_TIMEOUT, timeout } from '@paima/utils'; import { Routes, query } from '@dcspark/carp-client/client/src'; -import type { ProjectedNftRangeResponse } from "@dcspark/carp-client/shared/models/ProjectedNftRange"; +import type { ProjectedNftRangeResponse } from '@dcspark/carp-client/shared/models/ProjectedNftRange'; export default async function getCdeProjectedNFTData( - url: string, - extension: ChainDataExtensionCardanoProjectedNFT, - fromAbsoluteSlot: number, - toAbsoluteSlot: number, - getBlockNumber: (slot: number) => number + url: string, + extension: ChainDataExtensionCardanoProjectedNFT, + fromAbsoluteSlot: number, + toAbsoluteSlot: number, + getBlockNumber: (slot: number) => number ): Promise { - const events = await timeout( - query(url, Routes.projectedNftEventsRange, { - range: { minSlot: fromAbsoluteSlot, maxSlot: toAbsoluteSlot }, - }), - DEFAULT_FUNNEL_TIMEOUT - ); - - return events.map(e => eventToCdeDatum(e, extension, getBlockNumber(e.actionSlot))).filter(e => e != null).map(e => e!!); + const events = await timeout( + query(url, Routes.projectedNftEventsRange, { + range: { minSlot: fromAbsoluteSlot, maxSlot: toAbsoluteSlot }, + }), + DEFAULT_FUNNEL_TIMEOUT + ); + + return events + .map(e => eventToCdeDatum(e, extension, getBlockNumber(e.actionSlot))) + .filter(e => e != null) + .map(e => e!!); } function eventToCdeDatum( - event: ProjectedNftRangeResponse[0], - extension: ChainDataExtensionCardanoProjectedNFT, - blockNumber: number + event: ProjectedNftRangeResponse[0], + extension: ChainDataExtensionCardanoProjectedNFT, + blockNumber: number ): CdeCardanoProjectedNFTDatum | null { - if (event.ownerAddress == null || event.actionTxId == null || event.status == null) { - return null; - } - - return { - cdeId: extension.cdeId, - cdeDatumType: ChainDataExtensionDatumType.CardanoProjectedNFT, - blockNumber, - payload: { - ownerAddress: event.ownerAddress!!, - - actionTxId: event.actionTxId, - actionOutputIndex: event.actionOutputIndex || undefined, - - previousTxHash: event.previousTxHash || undefined, - previousTxOutputIndex: event.previousTxOutputIndex || undefined, - - asset: event.asset, - amount: event.amount, - status: event.status, - plutusDatum: event.plutusDatum || "", - - forHowLong: event.forHowLong || undefined, - }, - scheduledPrefix: extension.scheduledPrefix, - }; + if ( + event.ownerAddress === null || + event.ownerAddress == '' || + event.actionTxId === null || + event.actionTxId == '' || + event.status === null || + event.actionTxId == '' + ) { + return null; + } + + return { + cdeId: extension.cdeId, + cdeDatumType: ChainDataExtensionDatumType.CardanoProjectedNFT, + blockNumber, + payload: { + ownerAddress: event.ownerAddress != null ? event.ownerAddress : '', + + actionTxId: event.actionTxId, + actionOutputIndex: event.actionOutputIndex != null ? event.actionOutputIndex : undefined, + + previousTxHash: event.previousTxHash != null ? event.previousTxHash : undefined, + previousTxOutputIndex: + event.previousTxOutputIndex != null ? event.previousTxOutputIndex : undefined, + + asset: event.asset, + amount: event.amount, + status: event.status, + plutusDatum: event.plutusDatum != null ? event.plutusDatum : '', + + forHowLong: event.forHowLong != null ? event.forHowLong : undefined, + }, + scheduledPrefix: extension.scheduledPrefix, + }; } diff --git a/packages/engine/paima-funnel/src/funnels/BaseFunnel.ts b/packages/engine/paima-funnel/src/funnels/BaseFunnel.ts index c032fbbba..51938b957 100644 --- a/packages/engine/paima-funnel/src/funnels/BaseFunnel.ts +++ b/packages/engine/paima-funnel/src/funnels/BaseFunnel.ts @@ -1,5 +1,5 @@ import type { ChainFunnel, ReadPresyncDataFrom } from '@paima/runtime'; -import type {ChainData, ChainDataExtension, PresyncChainData } from '@paima/sm'; +import type { ChainData, ChainDataExtension, PresyncChainData } from '@paima/sm'; import type { PaimaL2Contract, Web3 } from '@paima/utils'; import type { FunnelCacheManager } from './FunnelCache.js'; import type { PoolClient } from 'pg'; diff --git a/packages/engine/paima-funnel/src/funnels/carp/funnel.ts b/packages/engine/paima-funnel/src/funnels/carp/funnel.ts index c65186ff3..8c8be28f3 100644 --- a/packages/engine/paima-funnel/src/funnels/carp/funnel.ts +++ b/packages/engine/paima-funnel/src/funnels/carp/funnel.ts @@ -11,21 +11,22 @@ import { import { type ChainData, type ChainDataExtension, - type ChainDataExtensionCardanoDelegation, ChainDataExtensionCardanoProjectedNFT, + type ChainDataExtensionCardanoDelegation, + ChainDataExtensionCardanoProjectedNFT, type ChainDataExtensionDatum, type PresyncChainData, } from '@paima/sm'; -import {composeChainData, groupCdeData} from '../../utils.js'; -import type {FunnelSharedData} from '../BaseFunnel.js'; -import {BaseFunnel} from '../BaseFunnel.js'; -import type {PoolClient} from 'pg'; -import type {ChainFunnel, ReadPresyncDataFrom} from '@paima/runtime'; +import { composeChainData, groupCdeData } from '../../utils.js'; +import type { FunnelSharedData } from '../BaseFunnel.js'; +import { BaseFunnel } from '../BaseFunnel.js'; +import type { PoolClient } from 'pg'; +import type { ChainFunnel, ReadPresyncDataFrom } from '@paima/runtime'; import getCdePoolData from '../../cde/cardanoPool.js'; import getCdeProjectedNFTData from '../../cde/cardanoProjectedNFT.js'; -import {query} from '@dcspark/carp-client/client/src/index'; -import {Routes} from '@dcspark/carp-client/shared/routes'; -import {FUNNEL_PRESYNC_FINISHED} from '@paima/utils/src/constants'; -import {CarpFunnelCacheEntry} from '../FunnelCache.js'; +import { query } from '@dcspark/carp-client/client/src/index'; +import { Routes } from '@dcspark/carp-client/shared/routes'; +import { FUNNEL_PRESYNC_FINISHED } from '@paima/utils/src/constants'; +import { CarpFunnelCacheEntry } from '../FunnelCache.js'; const delayForWaitingForFinalityLoop = 1000; @@ -144,28 +145,33 @@ export class CarpFunnel extends BaseFunnel implements ChainFunnel { const [carpEvents, data] = await Promise.all([ Promise.all( this.sharedData.extensions - .filter(extension => extension.cdeType === ChainDataExtensionType.CardanoPool || extension.cdeType === ChainDataExtensionType.CardanoProjectedNFT) + .filter( + extension => + extension.cdeType === ChainDataExtensionType.CardanoPool || + extension.cdeType === ChainDataExtensionType.CardanoProjectedNFT + ) .map(extension => { if (extension.cdeType === ChainDataExtensionType.CardanoPool) { const data = getCdePoolData( - this.carpUrl, - extension as ChainDataExtensionCardanoDelegation, - arg.from, - Math.min(arg.to, this.cache.getState().startingSlot - 1), - slot => { - return slot; - } + this.carpUrl, + extension as ChainDataExtensionCardanoDelegation, + arg.from, + Math.min(arg.to, this.cache.getState().startingSlot - 1), + slot => { + return slot; + } ); return data; - } else { // ProjectedNFT + } else { + // ProjectedNFT const data = getCdeProjectedNFTData( - this.carpUrl, - extension as ChainDataExtensionCardanoProjectedNFT, - arg.from, - Math.min(arg.to, this.cache.getState().startingSlot - 1), - slot => { - return slot; - } + this.carpUrl, + extension as ChainDataExtensionCardanoProjectedNFT, + arg.from, + Math.min(arg.to, this.cache.getState().startingSlot - 1), + slot => { + return slot; + } ); return data; } @@ -326,8 +332,7 @@ async function readDataInternal( Network.EVM, data[0].blockNumber, data[data.length - 1].blockNumber, - poolEvents - .filter(data => data.length > 0) + poolEvents.filter(data => data.length > 0) ); return grouped; diff --git a/packages/engine/paima-runtime/src/cde-config/utils.ts b/packages/engine/paima-runtime/src/cde-config/utils.ts index 802d12194..b3cedc416 100644 --- a/packages/engine/paima-runtime/src/cde-config/utils.ts +++ b/packages/engine/paima-runtime/src/cde-config/utils.ts @@ -1,12 +1,15 @@ import * as fs from 'fs/promises'; -import {ChainDataExtensionType, doLog} from '@paima/utils'; +import { ChainDataExtensionType, doLog } from '@paima/utils'; -import type {ChainDataExtension} from '@paima/sm'; +import type { ChainDataExtension } from '@paima/sm'; export function getEarliestStartBlockheight(config: ChainDataExtension[]): number { const minStartBlockheight = config.reduce((min, cde) => { - if (cde.cdeType !== ChainDataExtensionType.CardanoPool && cde.cdeType != ChainDataExtensionType.CardanoProjectedNFT) { + if ( + cde.cdeType !== ChainDataExtensionType.CardanoPool && + cde.cdeType != ChainDataExtensionType.CardanoProjectedNFT + ) { return Math.min(min, cde.startBlockHeight); } return min; @@ -16,7 +19,10 @@ export function getEarliestStartBlockheight(config: ChainDataExtension[]): numbe export function getEarliestStartSlot(config: ChainDataExtension[]): number { const minStartSlot = config.reduce((min, cde) => { - if (cde.cdeType === ChainDataExtensionType.CardanoPool || cde.cdeType == ChainDataExtensionType.CardanoProjectedNFT) { + if ( + cde.cdeType === ChainDataExtensionType.CardanoPool || + cde.cdeType == ChainDataExtensionType.CardanoProjectedNFT + ) { return Math.min(min, cde.startSlot); } return min; diff --git a/packages/engine/paima-runtime/src/runtime-loops.ts b/packages/engine/paima-runtime/src/runtime-loops.ts index 223fe0834..39c297779 100644 --- a/packages/engine/paima-runtime/src/runtime-loops.ts +++ b/packages/engine/paima-runtime/src/runtime-loops.ts @@ -2,10 +2,8 @@ import process from 'process'; import { doLog, logError, delay, Network, ENV } from '@paima/utils'; import { tx, DataMigrations } from '@paima/db'; import { getEarliestStartBlockheight, getEarliestStartSlot } from './cde-config/utils.js'; -import type { ChainFunnel, - IFunnelFactory, - ReadPresyncDataFrom -} from './types.js';import type { ChainData, ChainDataExtension, GameStateMachine } from '@paima/sm'; +import type { ChainFunnel, IFunnelFactory, ReadPresyncDataFrom } from './types.js'; +import type { ChainData, ChainDataExtension, GameStateMachine } from '@paima/sm'; import { run } from './run-flag.js'; import { snapshotIfTime } from './snapshots.js'; import { diff --git a/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts b/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts index 3663d9eee..ff5b55036 100644 --- a/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts +++ b/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts @@ -1,64 +1,69 @@ import { ENV } from '@paima/utils'; import type { CdeCardanoProjectedNFTDatum } from './types'; -import {createScheduledData, cdeCardanoProjectedNftInsertData, cdeCardanoProjectedNftUpdateData} from '@paima/db'; +import { + createScheduledData, + cdeCardanoProjectedNftInsertData, + cdeCardanoProjectedNftUpdateData, +} from '@paima/db'; import type { SQLUpdate } from '@paima/db'; -export default async function processDatum(cdeDatum: CdeCardanoProjectedNFTDatum): Promise { - const cdeId = cdeDatum.cdeId; - const prefix = cdeDatum.scheduledPrefix; - const ownerAddress = cdeDatum.payload.ownerAddress; - const previousTxHash = cdeDatum.payload.previousTxHash; - const previousOutputIndex = cdeDatum.payload.previousTxOutputIndex; - const currentTxHash = cdeDatum.payload.actionTxId; - const currentOutputIndex = cdeDatum.payload.actionOutputIndex; - const amount = cdeDatum.payload.amount; - const asset = cdeDatum.payload.asset; - const status = cdeDatum.payload.status; - const datum = cdeDatum.payload.plutusDatum; - const forHowLong = cdeDatum.payload.forHowLong; +export default async function processDatum( + cdeDatum: CdeCardanoProjectedNFTDatum +): Promise { + const cdeId = cdeDatum.cdeId; + const prefix = cdeDatum.scheduledPrefix; + const ownerAddress = cdeDatum.payload.ownerAddress; + const previousTxHash = cdeDatum.payload.previousTxHash; + const previousOutputIndex = cdeDatum.payload.previousTxOutputIndex; + const currentTxHash = cdeDatum.payload.actionTxId; + const currentOutputIndex = cdeDatum.payload.actionOutputIndex; + const amount = cdeDatum.payload.amount; + const asset = cdeDatum.payload.asset; + const status = cdeDatum.payload.status; + const datum = cdeDatum.payload.plutusDatum; + const forHowLong = cdeDatum.payload.forHowLong; - const scheduledBlockHeight = Math.max(cdeDatum.blockNumber, ENV.SM_START_BLOCKHEIGHT + 1); - const scheduledInputData = `${prefix}|${ownerAddress}|${previousTxHash}|${previousOutputIndex}|${currentTxHash}|${currentOutputIndex}|${status}`; + const scheduledBlockHeight = Math.max(cdeDatum.blockNumber, ENV.SM_START_BLOCKHEIGHT + 1); + const scheduledInputData = `${prefix}|${ownerAddress}|${previousTxHash}|${previousOutputIndex}|${currentTxHash}|${currentOutputIndex}|${asset}|${status}`; - if (previousTxHash === undefined || previousOutputIndex === undefined) { - const updateList: SQLUpdate[] = [ - createScheduledData(scheduledInputData, scheduledBlockHeight), - [ - cdeCardanoProjectedNftInsertData, - { - cde_id: cdeId, - owner_address: ownerAddress, - current_tx_hash: currentTxHash, - current_tx_output_index: currentOutputIndex, - asset: asset, - amount: amount, - status: status, - plutus_datum: datum, - for_how_long: forHowLong - }, - ], - ]; - return updateList; - } + if (previousTxHash === undefined || previousOutputIndex === undefined) { const updateList: SQLUpdate[] = [ - createScheduledData(scheduledInputData, scheduledBlockHeight), - [ - cdeCardanoProjectedNftUpdateData, - { - cde_id: cdeId, - owner_address: ownerAddress, - new_tx_hash: currentTxHash, - new_tx_output_index: currentOutputIndex, - previous_tx_hash: previousTxHash, - previous_tx_output_index: previousOutputIndex, - asset: asset, - amount: amount, - status: status, - plutus_datum: datum, - for_how_long: forHowLong - }, - ], + createScheduledData(scheduledInputData, scheduledBlockHeight), + [ + cdeCardanoProjectedNftInsertData, + { + cde_id: cdeId, + owner_address: ownerAddress, + current_tx_hash: currentTxHash, + current_tx_output_index: currentOutputIndex, + asset: asset, + amount: amount, + status: status, + plutus_datum: datum, + for_how_long: forHowLong, + }, + ], ]; return updateList; - + } + const updateList: SQLUpdate[] = [ + createScheduledData(scheduledInputData, scheduledBlockHeight), + [ + cdeCardanoProjectedNftUpdateData, + { + cde_id: cdeId, + owner_address: ownerAddress, + new_tx_hash: currentTxHash, + new_tx_output_index: currentOutputIndex, + previous_tx_hash: previousTxHash, + previous_tx_output_index: previousOutputIndex, + asset: asset, + amount: amount, + status: status, + plutus_datum: datum, + for_how_long: forHowLong, + }, + ], + ]; + return updateList; } diff --git a/packages/engine/paima-sm/src/types.ts b/packages/engine/paima-sm/src/types.ts index cc0940360..01ca42c1b 100644 --- a/packages/engine/paima-sm/src/types.ts +++ b/packages/engine/paima-sm/src/types.ts @@ -298,9 +298,9 @@ export const ChainDataExtensionCardanoProjectedNFTConfig = Type.Object({ }); export type ChainDataExtensionCardanoProjectedNFT = ChainDataExtensionBase & - Static & { - cdeType: ChainDataExtensionType.CardanoProjectedNFT; -}; + Static & { + cdeType: ChainDataExtensionType.CardanoProjectedNFT; + }; export const CdeConfig = Type.Object({ extensions: Type.Array( diff --git a/packages/node-sdk/paima-utils-backend/src/cde-access-internals.ts b/packages/node-sdk/paima-utils-backend/src/cde-access-internals.ts index 330b5ffd3..aab373f4b 100644 --- a/packages/node-sdk/paima-utils-backend/src/cde-access-internals.ts +++ b/packages/node-sdk/paima-utils-backend/src/cde-access-internals.ts @@ -13,7 +13,8 @@ import { cdeErc6551GetOwnedAccounts, cdeErc6551GetOwner, cdeCardanoPoolGetAddressDelegation, - cdeCardanoGetProjectedNft, ICdeCardanoGetProjectedNftResult, + cdeCardanoGetProjectedNft, + ICdeCardanoGetProjectedNftResult, } from '@paima/db'; import type { OwnedNftsResponse, GenericCdeDataUnit, TokenIdPair } from './types.js'; diff --git a/packages/node-sdk/paima-utils-backend/src/cde-access.ts b/packages/node-sdk/paima-utils-backend/src/cde-access.ts index fd5b1610e..647427f69 100644 --- a/packages/node-sdk/paima-utils-backend/src/cde-access.ts +++ b/packages/node-sdk/paima-utils-backend/src/cde-access.ts @@ -16,7 +16,7 @@ import { internalGetCardanoProjectedNft, } from './cde-access-internals.js'; import type { OwnedNftsResponse, GenericCdeDataUnit, TokenIdPair } from './types.js'; -import {ICdeCardanoGetProjectedNftResult} from "@paima/db/src"; +import { ICdeCardanoGetProjectedNftResult } from '@paima/db/src'; /** * Fetch the owner of the NFT from the database From 0248309db319fd0e8db39639c1a0a81c15881ab1 Mon Sep 17 00:00:00 2001 From: Eugene Gostkin Date: Fri, 8 Dec 2023 13:35:00 +0100 Subject: [PATCH 12/24] More lint fixes --- packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts | 2 +- packages/engine/paima-funnel/src/funnels/BaseFunnel.ts | 2 +- packages/engine/paima-funnel/src/funnels/carp/funnel.ts | 5 +++-- packages/engine/paima-sm/src/cde-cardano-projected-nft.ts | 2 +- .../node-sdk/paima-utils-backend/src/cde-access-internals.ts | 2 +- packages/node-sdk/paima-utils-backend/src/cde-access.ts | 2 +- 6 files changed, 8 insertions(+), 7 deletions(-) diff --git a/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts b/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts index 1bb57177a..990f36268 100644 --- a/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts +++ b/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts @@ -24,7 +24,7 @@ export default async function getCdeProjectedNFTData( return events .map(e => eventToCdeDatum(e, extension, getBlockNumber(e.actionSlot))) .filter(e => e != null) - .map(e => e!!); + .map(e => e!); } function eventToCdeDatum( diff --git a/packages/engine/paima-funnel/src/funnels/BaseFunnel.ts b/packages/engine/paima-funnel/src/funnels/BaseFunnel.ts index 51938b957..ca3108834 100644 --- a/packages/engine/paima-funnel/src/funnels/BaseFunnel.ts +++ b/packages/engine/paima-funnel/src/funnels/BaseFunnel.ts @@ -3,7 +3,7 @@ import type { ChainData, ChainDataExtension, PresyncChainData } from '@paima/sm' import type { PaimaL2Contract, Web3 } from '@paima/utils'; import type { FunnelCacheManager } from './FunnelCache.js'; import type { PoolClient } from 'pg'; -import { FUNNEL_PRESYNC_FINISHED } from '@paima/utils'; +import type { FUNNEL_PRESYNC_FINISHED } from '@paima/utils'; export type FunnelSharedData = { readonly web3: Web3; diff --git a/packages/engine/paima-funnel/src/funnels/carp/funnel.ts b/packages/engine/paima-funnel/src/funnels/carp/funnel.ts index 8c8be28f3..f70584d7c 100644 --- a/packages/engine/paima-funnel/src/funnels/carp/funnel.ts +++ b/packages/engine/paima-funnel/src/funnels/carp/funnel.ts @@ -8,11 +8,12 @@ import { Network, timeout, } from '@paima/utils'; +import type { + ChainDataExtensionCardanoProjectedNFT} from '@paima/sm'; import { type ChainData, type ChainDataExtension, type ChainDataExtensionCardanoDelegation, - ChainDataExtensionCardanoProjectedNFT, type ChainDataExtensionDatum, type PresyncChainData, } from '@paima/sm'; @@ -154,7 +155,7 @@ export class CarpFunnel extends BaseFunnel implements ChainFunnel { if (extension.cdeType === ChainDataExtensionType.CardanoPool) { const data = getCdePoolData( this.carpUrl, - extension as ChainDataExtensionCardanoDelegation, + extension , arg.from, Math.min(arg.to, this.cache.getState().startingSlot - 1), slot => { diff --git a/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts b/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts index ff5b55036..87332c9dc 100644 --- a/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts +++ b/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts @@ -1,5 +1,5 @@ import { ENV } from '@paima/utils'; -import type { CdeCardanoProjectedNFTDatum } from './types'; +import type { CdeCardanoProjectedNFTDatum } from './types.js'; import { createScheduledData, cdeCardanoProjectedNftInsertData, diff --git a/packages/node-sdk/paima-utils-backend/src/cde-access-internals.ts b/packages/node-sdk/paima-utils-backend/src/cde-access-internals.ts index aab373f4b..d956559b6 100644 --- a/packages/node-sdk/paima-utils-backend/src/cde-access-internals.ts +++ b/packages/node-sdk/paima-utils-backend/src/cde-access-internals.ts @@ -14,7 +14,7 @@ import { cdeErc6551GetOwner, cdeCardanoPoolGetAddressDelegation, cdeCardanoGetProjectedNft, - ICdeCardanoGetProjectedNftResult, + type ICdeCardanoGetProjectedNftResult, } from '@paima/db'; import type { OwnedNftsResponse, GenericCdeDataUnit, TokenIdPair } from './types.js'; diff --git a/packages/node-sdk/paima-utils-backend/src/cde-access.ts b/packages/node-sdk/paima-utils-backend/src/cde-access.ts index 647427f69..bdaec0bab 100644 --- a/packages/node-sdk/paima-utils-backend/src/cde-access.ts +++ b/packages/node-sdk/paima-utils-backend/src/cde-access.ts @@ -16,7 +16,7 @@ import { internalGetCardanoProjectedNft, } from './cde-access-internals.js'; import type { OwnedNftsResponse, GenericCdeDataUnit, TokenIdPair } from './types.js'; -import { ICdeCardanoGetProjectedNftResult } from '@paima/db/src'; +import type { ICdeCardanoGetProjectedNftResult } from '@paima/db/src'; /** * Fetch the owner of the NFT from the database From 1befbef1444b5aa2f0d93b13c05f49db54b64dbc Mon Sep 17 00:00:00 2001 From: Eugene Gostkin Date: Fri, 8 Dec 2023 14:39:00 +0100 Subject: [PATCH 13/24] Remove checks for owner address --- packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts | 4 +--- .../paima-db/src/sql/cde-cardano-projected-nft.queries.ts | 4 ++-- .../node-sdk/paima-db/src/sql/cde-cardano-projected-nft.sql | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts b/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts index 990f36268..dbdae689a 100644 --- a/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts +++ b/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts @@ -33,12 +33,10 @@ function eventToCdeDatum( blockNumber: number ): CdeCardanoProjectedNFTDatum | null { if ( - event.ownerAddress === null || - event.ownerAddress == '' || event.actionTxId === null || event.actionTxId == '' || event.status === null || - event.actionTxId == '' + event.status == '' ) { return null; } diff --git a/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.queries.ts b/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.queries.ts index 0058bc79e..f59bdf548 100644 --- a/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.queries.ts +++ b/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.queries.ts @@ -122,13 +122,14 @@ export interface ICdeCardanoProjectedNftUpdateDataQuery { result: ICdeCardanoProjectedNftUpdateDataResult; } -const cdeCardanoProjectedNftUpdateDataIR: any = {"usedParamSet":{"previous_tx_hash":true,"previous_tx_output_index":true,"new_tx_hash":true,"new_tx_output_index":true,"status":true,"plutus_datum":true,"for_how_long":true,"cde_id":true,"owner_address":true,"asset":true,"amount":true},"params":[{"name":"previous_tx_hash","required":true,"transform":{"type":"scalar"},"locs":[{"a":60,"b":77},{"a":415,"b":432}]},{"name":"previous_tx_output_index","required":true,"transform":{"type":"scalar"},"locs":[{"a":111,"b":136},{"a":468,"b":493}]},{"name":"new_tx_hash","required":true,"transform":{"type":"scalar"},"locs":[{"a":161,"b":173}]},{"name":"new_tx_output_index","required":true,"transform":{"type":"scalar"},"locs":[{"a":206,"b":226}]},{"name":"status","required":true,"transform":{"type":"scalar"},"locs":[{"a":242,"b":249}]},{"name":"plutus_datum","required":true,"transform":{"type":"scalar"},"locs":[{"a":271,"b":284}]},{"name":"for_how_long","required":true,"transform":{"type":"scalar"},"locs":[{"a":306,"b":319}]},{"name":"cde_id","required":true,"transform":{"type":"scalar"},"locs":[{"a":340,"b":347}]},{"name":"owner_address","required":true,"transform":{"type":"scalar"},"locs":[{"a":373,"b":387}]},{"name":"asset","required":true,"transform":{"type":"scalar"},"locs":[{"a":511,"b":517}]},{"name":"amount","required":true,"transform":{"type":"scalar"},"locs":[{"a":536,"b":543}]}],"statement":"UPDATE cde_cardano_projected_nft\nSET\n previous_tx_hash = :previous_tx_hash!,\n previous_tx_output_index = :previous_tx_output_index!,\n current_tx_hash = :new_tx_hash!,\n current_tx_output_index = :new_tx_output_index!,\n status = :status!,\n plutus_datum = :plutus_datum!,\n for_how_long = :for_how_long!\nWHERE\n cde_id = :cde_id!\n AND owner_address = :owner_address!\n AND current_tx_hash = :previous_tx_hash!\n AND current_tx_output_index = :previous_tx_output_index!\n AND asset = :asset!\n AND amount = :amount!\nRETURNING previous_tx_hash, previous_tx_output_index"}; +const cdeCardanoProjectedNftUpdateDataIR: any = {"usedParamSet":{"owner_address":true,"previous_tx_hash":true,"previous_tx_output_index":true,"new_tx_hash":true,"new_tx_output_index":true,"status":true,"plutus_datum":true,"for_how_long":true,"cde_id":true,"asset":true,"amount":true},"params":[{"name":"owner_address","required":true,"transform":{"type":"scalar"},"locs":[{"a":57,"b":71}]},{"name":"previous_tx_hash","required":true,"transform":{"type":"scalar"},"locs":[{"a":97,"b":114},{"a":412,"b":429}]},{"name":"previous_tx_output_index","required":true,"transform":{"type":"scalar"},"locs":[{"a":148,"b":173},{"a":465,"b":490}]},{"name":"new_tx_hash","required":true,"transform":{"type":"scalar"},"locs":[{"a":198,"b":210}]},{"name":"new_tx_output_index","required":true,"transform":{"type":"scalar"},"locs":[{"a":243,"b":263}]},{"name":"status","required":true,"transform":{"type":"scalar"},"locs":[{"a":279,"b":286}]},{"name":"plutus_datum","required":true,"transform":{"type":"scalar"},"locs":[{"a":308,"b":321}]},{"name":"for_how_long","required":true,"transform":{"type":"scalar"},"locs":[{"a":343,"b":356}]},{"name":"cde_id","required":true,"transform":{"type":"scalar"},"locs":[{"a":377,"b":384}]},{"name":"asset","required":true,"transform":{"type":"scalar"},"locs":[{"a":508,"b":514}]},{"name":"amount","required":true,"transform":{"type":"scalar"},"locs":[{"a":533,"b":540}]}],"statement":"UPDATE cde_cardano_projected_nft\nSET\n owner_address = :owner_address!,\n previous_tx_hash = :previous_tx_hash!,\n previous_tx_output_index = :previous_tx_output_index!,\n current_tx_hash = :new_tx_hash!,\n current_tx_output_index = :new_tx_output_index!,\n status = :status!,\n plutus_datum = :plutus_datum!,\n for_how_long = :for_how_long!\nWHERE\n cde_id = :cde_id!\n AND current_tx_hash = :previous_tx_hash!\n AND current_tx_output_index = :previous_tx_output_index!\n AND asset = :asset!\n AND amount = :amount!\nRETURNING previous_tx_hash, previous_tx_output_index"}; /** * Query generated from SQL: * ``` * UPDATE cde_cardano_projected_nft * SET + * owner_address = :owner_address!, * previous_tx_hash = :previous_tx_hash!, * previous_tx_output_index = :previous_tx_output_index!, * current_tx_hash = :new_tx_hash!, @@ -138,7 +139,6 @@ const cdeCardanoProjectedNftUpdateDataIR: any = {"usedParamSet":{"previous_tx_ha * for_how_long = :for_how_long! * WHERE * cde_id = :cde_id! - * AND owner_address = :owner_address! * AND current_tx_hash = :previous_tx_hash! * AND current_tx_output_index = :previous_tx_output_index! * AND asset = :asset! diff --git a/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.sql b/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.sql index 44e61fbfe..afcd3cb72 100644 --- a/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.sql +++ b/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.sql @@ -28,6 +28,7 @@ INSERT INTO cde_cardano_projected_nft( /* @name cdeCardanoProjectedNftUpdateData */ UPDATE cde_cardano_projected_nft SET + owner_address = :owner_address!, previous_tx_hash = :previous_tx_hash!, previous_tx_output_index = :previous_tx_output_index!, current_tx_hash = :new_tx_hash!, @@ -37,7 +38,6 @@ SET for_how_long = :for_how_long! WHERE cde_id = :cde_id! - AND owner_address = :owner_address! AND current_tx_hash = :previous_tx_hash! AND current_tx_output_index = :previous_tx_output_index! AND asset = :asset! From c00f75251b7bc75cbb4f31fce4111e02e94af316 Mon Sep 17 00:00:00 2001 From: Eugene Gostkin Date: Tue, 12 Dec 2023 23:32:59 +0100 Subject: [PATCH 14/24] Address review comments --- packages/engine/paima-runtime/src/cde-config/utils.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/engine/paima-runtime/src/cde-config/utils.ts b/packages/engine/paima-runtime/src/cde-config/utils.ts index b3cedc416..0c525ed4f 100644 --- a/packages/engine/paima-runtime/src/cde-config/utils.ts +++ b/packages/engine/paima-runtime/src/cde-config/utils.ts @@ -8,7 +8,7 @@ export function getEarliestStartBlockheight(config: ChainDataExtension[]): numbe const minStartBlockheight = config.reduce((min, cde) => { if ( cde.cdeType !== ChainDataExtensionType.CardanoPool && - cde.cdeType != ChainDataExtensionType.CardanoProjectedNFT + cde.cdeType !== ChainDataExtensionType.CardanoProjectedNFT ) { return Math.min(min, cde.startBlockHeight); } @@ -21,7 +21,7 @@ export function getEarliestStartSlot(config: ChainDataExtension[]): number { const minStartSlot = config.reduce((min, cde) => { if ( cde.cdeType === ChainDataExtensionType.CardanoPool || - cde.cdeType == ChainDataExtensionType.CardanoProjectedNFT + cde.cdeType === ChainDataExtensionType.CardanoProjectedNFT ) { return Math.min(min, cde.startSlot); } From 97e3cd5d51ef0b314e37b28c5d3159e902889005 Mon Sep 17 00:00:00 2001 From: Eugene Gostkin Date: Wed, 13 Dec 2023 00:04:54 +0100 Subject: [PATCH 15/24] Minor fixes --- packages/engine/paima-rest/src/tsoa/routes.ts | 0 .../src/sql/cde-cardano-projected-nft.sql | 2 +- .../shared/models/ProjectedNftRange.d.ts | 21 ------------------- .../shared/models/ProjectedNftRange.js | 2 -- tmp-carp-client/shared/routes.d.ts | 0 tmp-carp-client/shared/routes.js | 0 6 files changed, 1 insertion(+), 24 deletions(-) delete mode 100644 packages/engine/paima-rest/src/tsoa/routes.ts delete mode 100644 tmp-carp-client/shared/models/ProjectedNftRange.d.ts delete mode 100644 tmp-carp-client/shared/models/ProjectedNftRange.js delete mode 100644 tmp-carp-client/shared/routes.d.ts delete mode 100644 tmp-carp-client/shared/routes.js diff --git a/packages/engine/paima-rest/src/tsoa/routes.ts b/packages/engine/paima-rest/src/tsoa/routes.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.sql b/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.sql index afcd3cb72..ead08d2d6 100644 --- a/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.sql +++ b/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.sql @@ -42,4 +42,4 @@ WHERE AND current_tx_output_index = :previous_tx_output_index! AND asset = :asset! AND amount = :amount! -RETURNING previous_tx_hash, previous_tx_output_index; \ No newline at end of file +RETURNING previous_tx_hash, previous_tx_output_index; diff --git a/tmp-carp-client/shared/models/ProjectedNftRange.d.ts b/tmp-carp-client/shared/models/ProjectedNftRange.d.ts deleted file mode 100644 index dbdc24339..000000000 --- a/tmp-carp-client/shared/models/ProjectedNftRange.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -export declare type ProjectedNftRangeRequest = { - range: { minSlot: number, maxSlot: number } -}; - -export declare type ProjectedNftRangeResponse = { - actionSlot: number, - - ownerAddress: string | null, - - actionTxId: string | null, - actionOutputIndex: number | null, - - previousTxHash: string | null, - previousTxOutputIndex: number | null, - - asset: string, - amount: number, - status: string | null, - plutusDatum: string | null, - forHowLong: number | null, -}[]; \ No newline at end of file diff --git a/tmp-carp-client/shared/models/ProjectedNftRange.js b/tmp-carp-client/shared/models/ProjectedNftRange.js deleted file mode 100644 index c8ad2e549..000000000 --- a/tmp-carp-client/shared/models/ProjectedNftRange.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); diff --git a/tmp-carp-client/shared/routes.d.ts b/tmp-carp-client/shared/routes.d.ts deleted file mode 100644 index e69de29bb..000000000 diff --git a/tmp-carp-client/shared/routes.js b/tmp-carp-client/shared/routes.js deleted file mode 100644 index e69de29bb..000000000 From cf5a7407662c5e2a146febf0e83706f7d52db04e Mon Sep 17 00:00:00 2001 From: Eugene Gostkin Date: Fri, 15 Dec 2023 02:09:44 +0100 Subject: [PATCH 16/24] number -> bigint for asset amount --- packages/engine/paima-sm/src/types.ts | 5 ++--- packages/node-sdk/paima-utils-backend/src/cde-access.ts | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/packages/engine/paima-sm/src/types.ts b/packages/engine/paima-sm/src/types.ts index 01ca42c1b..18e8757fd 100644 --- a/packages/engine/paima-sm/src/types.ts +++ b/packages/engine/paima-sm/src/types.ts @@ -81,11 +81,11 @@ interface CdeDatumCardanoProjectedNFTPayload { previousTxOutputIndex: number | undefined; asset: string; - amount: number; + amount: bigint; status: string; plutusDatum: string; - forHowLong: number | undefined; + forHowLong: bigint | undefined; } type ChainDataExtensionPayload = @@ -290,7 +290,6 @@ export type ChainDataExtensionCardanoDelegation = ChainDataExtensionBase & export const ChainDataExtensionCardanoProjectedNFTConfig = Type.Object({ type: Type.Literal(CdeEntryTypeName.CardanoProjectedNFT), - contract: Type.String(), scheduledPrefix: Type.String(), startSlot: Type.Number(), stopSlot: Type.Optional(Type.Number()), diff --git a/packages/node-sdk/paima-utils-backend/src/cde-access.ts b/packages/node-sdk/paima-utils-backend/src/cde-access.ts index bdaec0bab..400a68f64 100644 --- a/packages/node-sdk/paima-utils-backend/src/cde-access.ts +++ b/packages/node-sdk/paima-utils-backend/src/cde-access.ts @@ -171,7 +171,7 @@ export async function getCardanoAddressDelegation( } /** - * Fetch the pool this address is delegating to, if any. + * Fetch the NFTs that are projected by particular PKH */ export async function getCardanoAddressProjectedNfts( readonlyDBConn: Pool, From 13f49628198a51f84e5ede9e9b9f9925d611431b Mon Sep 17 00:00:00 2001 From: Eugene Gostkin Date: Mon, 18 Dec 2023 14:17:17 +0100 Subject: [PATCH 17/24] bigint -> string --- packages/engine/paima-sm/src/types.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/engine/paima-sm/src/types.ts b/packages/engine/paima-sm/src/types.ts index 18e8757fd..ee3b762da 100644 --- a/packages/engine/paima-sm/src/types.ts +++ b/packages/engine/paima-sm/src/types.ts @@ -81,11 +81,11 @@ interface CdeDatumCardanoProjectedNFTPayload { previousTxOutputIndex: number | undefined; asset: string; - amount: bigint; + amount: string; status: string; plutusDatum: string; - forHowLong: bigint | undefined; + forHowLong: string | undefined; } type ChainDataExtensionPayload = From c63fe7c7ef01de6eb8d57658acb8a8d8fde37bfb Mon Sep 17 00:00:00 2001 From: Eugene Gostkin Date: Mon, 18 Dec 2023 16:45:42 +0100 Subject: [PATCH 18/24] Update carp client and fix issue with big numbers in projected NFT --- package-lock.json | 2587 ++++++++++------- .../batcher/address-validator/package.json | 2 +- .../paima-build-utils/scripts/change-db.js | 0 packages/engine/paima-funnel/package.json | 2 +- packages/engine/paima-rest/src/tsoa/routes.ts | 347 +++ packages/engine/paima-sm/src/types.ts | 4 +- 6 files changed, 1823 insertions(+), 1119 deletions(-) mode change 100644 => 100755 packages/build-utils/paima-build-utils/scripts/change-db.js create mode 100644 packages/engine/paima-rest/src/tsoa/routes.ts diff --git a/package-lock.json b/package-lock.json index 6fa4ec856..916b621e9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -44,6 +44,35 @@ "typescript": "^5.3.2" } }, + "../carp/webserver/client/dist": { + "name": "@dcspark/carp-client", + "version": "2.3.1", + "extraneous": true, + "license": "MIT", + "dependencies": { + "axios": "^0.27.2" + }, + "devDependencies": { + "@dcspark/cardano-multiplatform-lib-nodejs": "3.0.1", + "@types/eslint": "8.4.6", + "@types/eslint-plugin-prettier": "3.1.0", + "@types/lodash": "^4.14.185", + "@types/node": "^17.0.31", + "@types/prettier": "2.7.0", + "@typescript-eslint/eslint-plugin": "5.38.0", + "@typescript-eslint/parser": "5.38.0", + "eslint": "8.23.1", + "eslint-config-airbnb-typescript": "17.0.0", + "eslint-config-prettier": "8.5.0", + "eslint-plugin-import": "2.26.0", + "eslint-plugin-prettier": "4.2.1", + "eslint-plugin-promise": "6.0.1", + "lodash": "^4.17.21", + "prettier": "2.7.1", + "ts-node": "10.9.1", + "typescript": "4.7.4" + } + }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", @@ -250,9 +279,9 @@ "dev": true }, "node_modules/@babel/code-frame": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", - "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dependencies": { "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" @@ -326,28 +355,28 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", - "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", - "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.6.tgz", + "integrity": "sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.22.13", - "@babel/generator": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-module-transforms": "^7.23.3", - "@babel/helpers": "^7.23.2", - "@babel/parser": "^7.23.3", + "@babel/helpers": "^7.23.6", + "@babel/parser": "^7.23.6", "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.3", - "@babel/types": "^7.23.3", + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -371,11 +400,11 @@ } }, "node_modules/@babel/generator": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz", - "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.6.tgz", + "integrity": "sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==", "dependencies": { - "@babel/types": "^7.23.4", + "@babel/types": "^7.23.6", "@jridgewell/gen-mapping": "^0.3.2", "@jridgewell/trace-mapping": "^0.3.17", "jsesc": "^2.5.1" @@ -409,13 +438,13 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", - "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", "dependencies": { - "@babel/compat-data": "^7.22.9", - "@babel/helper-validator-option": "^7.22.15", - "browserslist": "^4.21.9", + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -432,17 +461,17 @@ } }, "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", - "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.6.tgz", + "integrity": "sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-environment-visitor": "^7.22.5", - "@babel/helper-function-name": "^7.22.5", - "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-member-expression-to-functions": "^7.23.0", "@babel/helper-optimise-call-expression": "^7.22.5", - "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-replace-supers": "^7.22.20", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "semver": "^6.3.1" @@ -490,9 +519,9 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", - "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.4.tgz", + "integrity": "sha512-QcJMILQCu2jm5TFPGA3lCpJJTeEP+mqeXooG/NZbg/h5FTFi6V0+99ahlRsW8/kRLyb24LZVCCiclDedhLKcBA==", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -681,9 +710,9 @@ } }, "node_modules/@babel/helper-validator-option": { - "version": "7.22.15", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", - "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "engines": { "node": ">=6.9.0" } @@ -703,13 +732,13 @@ } }, "node_modules/@babel/helpers": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.4.tgz", - "integrity": "sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.6.tgz", + "integrity": "sha512-wCfsbN4nBidDRhpDhvcKlzHWCTlgJYUUdSJfzXb2NuBssDSIjc3xcb+znA7l+zYsFljAcGM0aFkN40cR3lXiGA==", "dependencies": { "@babel/template": "^7.22.15", - "@babel/traverse": "^7.23.4", - "@babel/types": "^7.23.4" + "@babel/traverse": "^7.23.6", + "@babel/types": "^7.23.6" }, "engines": { "node": ">=6.9.0" @@ -793,9 +822,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", - "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz", + "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==", "bin": { "parser": "bin/babel-parser.js" }, @@ -852,14 +881,15 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.3.tgz", - "integrity": "sha512-u8SwzOcP0DYSsa++nHd/9exlHb0NAlHCb890qtZZbSwPX2bFv8LBEztxwN7Xg/dS8oAFFidhrI9PBcLBJSkGRQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.6.tgz", + "integrity": "sha512-D7Ccq9LfkBFnow3azZGJvZYgcfeqAw3I1e5LoTpj6UKIFQilh8yqXsIGcRIqbBdsPWIz+Ze7ZZfggSj62Qp+Fg==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-create-class-features-plugin": "^7.23.6", "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", "@babel/plugin-syntax-decorators": "^7.23.3" }, @@ -1288,9 +1318,9 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz", - "integrity": "sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==", + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", + "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", @@ -1430,12 +1460,13 @@ } }, "node_modules/@babel/plugin-transform-for-of": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", - "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.6.tgz", + "integrity": "sha512-aYH4ytZ0qSuBbpfhuofbg/e96oQ7U2w1Aw/UQmKT+1l39uEhUPoFS3fHevDc1G0OvewyDudfMKY1OulczHzWIw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.22.5" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" }, "engines": { "node": ">=6.9.0" @@ -1817,9 +1848,9 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz", - "integrity": "sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.6.tgz", + "integrity": "sha512-kF1Zg62aPseQ11orDhFRw+aPG/eynNQtI+TyY+m33qJa2cJ5EEvza2P2BNTIA9E5MyqFABHEyY6CPHwgdy9aNg==", "dependencies": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -1920,13 +1951,13 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.4.tgz", - "integrity": "sha512-39hCCOl+YUAyMOu6B9SmUTiHUU0t/CxJNUmY3qRdJujbqi+lrQcL11ysYUsAvFWPBdhihrv1z0oRG84Yr3dODQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz", + "integrity": "sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==", "dev": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", - "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-create-class-features-plugin": "^7.23.6", "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-typescript": "^7.23.3" }, @@ -2001,15 +2032,15 @@ } }, "node_modules/@babel/preset-env": { - "version": "7.23.3", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.3.tgz", - "integrity": "sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.6.tgz", + "integrity": "sha512-2XPn/BqKkZCpzYhUUNZ1ssXw7DcXfKQEjv/uXZUXgaebCMYmkEsfZ2yY+vv+xtXv50WmL5SGhyB6/xsWxIvvOQ==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.23.3", - "@babel/helper-compilation-targets": "^7.22.15", + "@babel/compat-data": "^7.23.5", + "@babel/helper-compilation-targets": "^7.23.6", "@babel/helper-plugin-utils": "^7.22.5", - "@babel/helper-validator-option": "^7.22.15", + "@babel/helper-validator-option": "^7.23.5", "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", @@ -2033,25 +2064,25 @@ "@babel/plugin-syntax-top-level-await": "^7.14.5", "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", "@babel/plugin-transform-arrow-functions": "^7.23.3", - "@babel/plugin-transform-async-generator-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.4", "@babel/plugin-transform-async-to-generator": "^7.23.3", "@babel/plugin-transform-block-scoped-functions": "^7.23.3", - "@babel/plugin-transform-block-scoping": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.4", "@babel/plugin-transform-class-properties": "^7.23.3", - "@babel/plugin-transform-class-static-block": "^7.23.3", - "@babel/plugin-transform-classes": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.4", + "@babel/plugin-transform-classes": "^7.23.5", "@babel/plugin-transform-computed-properties": "^7.23.3", "@babel/plugin-transform-destructuring": "^7.23.3", "@babel/plugin-transform-dotall-regex": "^7.23.3", "@babel/plugin-transform-duplicate-keys": "^7.23.3", - "@babel/plugin-transform-dynamic-import": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.4", "@babel/plugin-transform-exponentiation-operator": "^7.23.3", - "@babel/plugin-transform-export-namespace-from": "^7.23.3", - "@babel/plugin-transform-for-of": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.4", + "@babel/plugin-transform-for-of": "^7.23.6", "@babel/plugin-transform-function-name": "^7.23.3", - "@babel/plugin-transform-json-strings": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.4", "@babel/plugin-transform-literals": "^7.23.3", - "@babel/plugin-transform-logical-assignment-operators": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.4", "@babel/plugin-transform-member-expression-literals": "^7.23.3", "@babel/plugin-transform-modules-amd": "^7.23.3", "@babel/plugin-transform-modules-commonjs": "^7.23.3", @@ -2059,15 +2090,15 @@ "@babel/plugin-transform-modules-umd": "^7.23.3", "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", "@babel/plugin-transform-new-target": "^7.23.3", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.3", - "@babel/plugin-transform-numeric-separator": "^7.23.3", - "@babel/plugin-transform-object-rest-spread": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.4", + "@babel/plugin-transform-numeric-separator": "^7.23.4", + "@babel/plugin-transform-object-rest-spread": "^7.23.4", "@babel/plugin-transform-object-super": "^7.23.3", - "@babel/plugin-transform-optional-catch-binding": "^7.23.3", - "@babel/plugin-transform-optional-chaining": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.4", + "@babel/plugin-transform-optional-chaining": "^7.23.4", "@babel/plugin-transform-parameters": "^7.23.3", "@babel/plugin-transform-private-methods": "^7.23.3", - "@babel/plugin-transform-private-property-in-object": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.4", "@babel/plugin-transform-property-literals": "^7.23.3", "@babel/plugin-transform-regenerator": "^7.23.3", "@babel/plugin-transform-reserved-words": "^7.23.3", @@ -2143,9 +2174,9 @@ "dev": true }, "node_modules/@babel/runtime": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.4.tgz", - "integrity": "sha512-2Yv65nlWnWlSpe3fXEyX5i7fx5kIKo4Qbcj+hMO0odwaneFjfXw5fdum+4yL20O0QiaHpia0cYQ9xpNMqrBwHg==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.6.tgz", + "integrity": "sha512-zHd0eUrf5GZoOWVCXp6koAKQTfZV07eit6bGPmJgnZdnSAvvZee6zniW2XMF7Cmc4ISOOnPy3QaSiIJGJkVEDQ==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2167,19 +2198,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz", - "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.6.tgz", + "integrity": "sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==", "dependencies": { - "@babel/code-frame": "^7.23.4", - "@babel/generator": "^7.23.4", + "@babel/code-frame": "^7.23.5", + "@babel/generator": "^7.23.6", "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-function-name": "^7.23.0", "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-split-export-declaration": "^7.22.6", - "@babel/parser": "^7.23.4", - "@babel/types": "^7.23.4", - "debug": "^4.1.0", + "@babel/parser": "^7.23.6", + "@babel/types": "^7.23.6", + "debug": "^4.3.1", "globals": "^11.1.0" }, "engines": { @@ -2195,9 +2226,9 @@ } }, "node_modules/@babel/types": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", - "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.6.tgz", + "integrity": "sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==", "dependencies": { "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", @@ -2248,9 +2279,9 @@ } }, "node_modules/@dcspark/carp-client": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@dcspark/carp-client/-/carp-client-2.3.0.tgz", - "integrity": "sha512-ibH6iUXJqb19qWN3BAKP+Qms2bEwEkgZgKO5JrMIGp9FreCSMZFoGvXC4nhlt9mjK4RxTPhqohVzBHEwzHxOZA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@dcspark/carp-client/-/carp-client-2.3.1.tgz", + "integrity": "sha512-KmVfrkH8WuuNUDsKwbJquP9wOnpHCxU4udlzXi8bap93NgV3Ctq9Hmk9wzvj7Mz+9OgByODU0YT6C9Lo6CqXFA==", "dependencies": { "axios": "^0.27.2" } @@ -2384,10 +2415,235 @@ "deprecated": "Please use @ensdomains/ens-contracts", "dev": true }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.9.tgz", + "integrity": "sha512-jkYjjq7SdsWuNI6b5quymW0oC83NN5FdRPuCbs9HZ02mfVdAP8B8eeqLSYU3gb6OJEaY5CQabtTFbqBf26H3GA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.9.tgz", + "integrity": "sha512-q4cR+6ZD0938R19MyEW3jEsMzbb/1rulLXiNAJQADD/XYp7pT+rOS5JGxvpRW8dFDEfjW4wLgC/3FXIw4zYglQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.9.tgz", + "integrity": "sha512-KOqoPntWAH6ZxDwx1D6mRntIgZh9KodzgNOy5Ebt9ghzffOk9X2c1sPwtM9P+0eXbefnDhqYfkh5PLP5ULtWFA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.9.tgz", + "integrity": "sha512-KBJ9S0AFyLVx2E5D8W0vExqRW01WqRtczUZ8NRu+Pi+87opZn5tL4Y0xT0mA4FtHctd0ZgwNoN639fUUGlNIWw==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.9.tgz", + "integrity": "sha512-vE0VotmNTQaTdX0Q9dOHmMTao6ObjyPm58CHZr1UK7qpNleQyxlFlNCaHsHx6Uqv86VgPmR4o2wdNq3dP1qyDQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.9.tgz", + "integrity": "sha512-uFQyd/o1IjiEk3rUHSwUKkqZwqdvuD8GevWF065eqgYfexcVkxh+IJgwTaGZVu59XczZGcN/YMh9uF1fWD8j1g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.9.tgz", + "integrity": "sha512-WMLgWAtkdTbTu1AWacY7uoj/YtHthgqrqhf1OaEWnZb7PQgpt8eaA/F3LkV0E6K/Lc0cUr/uaVP/49iE4M4asA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.9.tgz", + "integrity": "sha512-C/ChPohUYoyUaqn1h17m/6yt6OB14hbXvT8EgM1ZWaiiTYz7nWZR0SYmMnB5BzQA4GXl3BgBO1l8MYqL/He3qw==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.9.tgz", + "integrity": "sha512-PiPblfe1BjK7WDAKR1Cr9O7VVPqVNpwFcPWgfn4xu0eMemzRp442hXyzF/fSwgrufI66FpHOEJk0yYdPInsmyQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.9.tgz", + "integrity": "sha512-f37i/0zE0MjDxijkPSQw1CO/7C27Eojqb+r3BbHVxMLkj8GCa78TrBZzvPyA/FNLUMzP3eyHCVkAopkKVja+6Q==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.9.tgz", + "integrity": "sha512-t6mN147pUIf3t6wUt3FeumoOTPfmv9Cc6DQlsVBpB7eCpLOqQDyWBP1ymXn1lDw4fNUSb/gBcKAmvTP49oIkaA==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.9.tgz", + "integrity": "sha512-jg9fujJTNTQBuDXdmAg1eeJUL4Jds7BklOTkkH80ZgQIoCTdQrDaHYgbFZyeTq8zbY+axgptncko3v9p5hLZtw==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.9.tgz", + "integrity": "sha512-tkV0xUX0pUUgY4ha7z5BbDS85uI7ABw3V1d0RNTii7E9lbmV8Z37Pup2tsLV46SQWzjOeyDi1Q7Wx2+QM8WaCQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.9.tgz", + "integrity": "sha512-DfLp8dj91cufgPZDXr9p3FoR++m3ZJ6uIXsXrIvJdOjXVREtXuQCjfMfvmc3LScAVmLjcfloyVtpn43D56JFHg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.9.tgz", + "integrity": "sha512-zHbglfEdC88KMgCWpOl/zc6dDYJvWGLiUtmPRsr1OgCViu3z5GncvNVdf+6/56O2Ca8jUU+t1BW261V6kp8qdw==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/linux-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz", - "integrity": "sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.9.tgz", + "integrity": "sha512-JUjpystGFFmNrEHQnIVG8hKwvA2DN5o7RqiO1CVX8EN/F/gkCjkUMgVn6hzScpwnJtl2mPR6I9XV1oW8k9O+0A==", "cpu": [ "x64" ], @@ -2399,6 +2655,96 @@ "node": ">=12" } }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.9.tgz", + "integrity": "sha512-GThgZPAwOBOsheA2RUlW5UeroRfESwMq/guy8uEe3wJlAOjpOXuSevLRd70NZ37ZrpO6RHGHgEHvPg1h3S1Jug==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.9.tgz", + "integrity": "sha512-Ki6PlzppaFVbLnD8PtlVQfsYw4S9n3eQl87cqgeIw+O3sRr9IghpfSKY62mggdt1yCSZ8QWvTZ9jo9fjDSg9uw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.9.tgz", + "integrity": "sha512-MLHj7k9hWh4y1ddkBpvRj2b9NCBhfgBt3VpWbHQnXRedVun/hC7sIyTGDGTfsGuXo4ebik2+3ShjcPbhtFwWDw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.9.tgz", + "integrity": "sha512-GQoa6OrQ8G08guMFgeXPH7yE/8Dt0IfOGWJSfSH4uafwdC7rWwrfE6P9N8AtPGIjUzdo2+7bN8Xo3qC578olhg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.9.tgz", + "integrity": "sha512-UOozV7Ntykvr5tSOlGCrqU3NBr3d8JqPes0QWN2WOXfvkWVGRajC+Ym0/Wj88fUgecUCLDdJPDF0Nna2UK3Qtg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.9.tgz", + "integrity": "sha512-oxoQgglOP7RH6iasDrhY+R/3cHrfwIDvRlT4CGChflq6twk8iENeVvMJjmvBb94Ik1Z+93iGO27err7w6l54GQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -2424,9 +2770,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz", - "integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "dependencies": { "ajv": "^6.12.4", @@ -4133,9 +4479,9 @@ } }, "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==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.3.tgz", + "integrity": "sha512-V7/fPHgl+jsVPXqqeOzT8egNj2iBIVt+ECeMMG8TdcnTikP3oaBtUVqpT/gYCR68aEBJSF+XbYUxStjbFMqIIA==", "engines": { "node": ">= 16" }, @@ -4402,6 +4748,49 @@ "node": "*" } }, + "node_modules/@nx/js/node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, "node_modules/@nx/linter": { "version": "17.1.3", "resolved": "https://registry.npmjs.org/@nx/linter/-/linter-17.1.3.tgz", @@ -4587,14 +4976,14 @@ } }, "node_modules/@openzeppelin/contracts": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.3.tgz", - "integrity": "sha512-He3LieZ1pP2TNt5JbkPA4PNT9WC3gOTOlDcFGJW4Le4QKqwmiNJCRt44APfxMxvq7OugU/cqYuPcSBzOw38DAg==" + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.9.5.tgz", + "integrity": "sha512-ZK+W5mVhRppff9BE6YdR8CC52C8zAvsVAiWhEtQ5+oNxFE6h1WdeWo+FJSF8KKvtxxVYZ7MTP/5KoVpAU3aSWg==" }, "node_modules/@openzeppelin/contracts-upgradeable": { - "version": "4.9.3", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.3.tgz", - "integrity": "sha512-jjaHAVRMrE4UuZNfDwjlLGDxTHWIOwTJS2ldnc278a0gevfXfPr8hxKEVBGFBE96kl2G3VHDZhUimw/+G3TG2A==" + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts-upgradeable/-/contracts-upgradeable-4.9.5.tgz", + "integrity": "sha512-f7L1//4sLlflAN7fVzJLoRedrf5Na3Oal5PZfIq55NFcVZ90EpV1q5xOvL4lFvg3MNICSDr2hH0JUBxwlxcoPg==" }, "node_modules/@paima/batcher-address-validator": { "resolved": "packages/batcher/address-validator", @@ -4689,9 +5078,9 @@ "link": true }, "node_modules/@perawallet/connect": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@perawallet/connect/-/connect-1.3.3.tgz", - "integrity": "sha512-m2PL3CX8TUH3Y65T22yv4+9mes7hxjsie8AbZHRFe8uR5LLgWk1kyQHM8/KSsM52v7YUcG8G1IlsFgzsW+36xA==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@perawallet/connect/-/connect-1.3.4.tgz", + "integrity": "sha512-PRnD1YEXXoWjTlfWmZCGGHQWn7Zquxh44bXmEtluklq/kTkBOk5CToZWng1J/Ae9g0xMR85B1Y/xwnriFufcpA==", "dependencies": { "@evanhahn/lottie-web-light": "5.8.1", "@walletconnect/client": "^1.8.0", @@ -4981,25 +5370,25 @@ } }, "node_modules/@polkadot/api": { - "version": "10.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-10.11.1.tgz", - "integrity": "sha512-WEgUYvY90AHX9drmsvWQ4DDuqlE7h4x3f28K5eOoJF4dQ5AkWsFogxwJ4TH57POWLfyi8AIn6/f1vsqPtReDhA==", + "version": "10.11.2", + "resolved": "https://registry.npmjs.org/@polkadot/api/-/api-10.11.2.tgz", + "integrity": "sha512-AorCZxCWCoTtdbl4DPUZh+ACe/pbLIS1BkdQY0AFJuZllm0x/yWzjgampcPd5jQAA/O3iKShRBkZqj6Mk9yG/A==", "peer": true, "dependencies": { - "@polkadot/api-augment": "10.11.1", - "@polkadot/api-base": "10.11.1", - "@polkadot/api-derive": "10.11.1", - "@polkadot/keyring": "^12.6.1", - "@polkadot/rpc-augment": "10.11.1", - "@polkadot/rpc-core": "10.11.1", - "@polkadot/rpc-provider": "10.11.1", - "@polkadot/types": "10.11.1", - "@polkadot/types-augment": "10.11.1", - "@polkadot/types-codec": "10.11.1", - "@polkadot/types-create": "10.11.1", - "@polkadot/types-known": "10.11.1", - "@polkadot/util": "^12.6.1", - "@polkadot/util-crypto": "^12.6.1", + "@polkadot/api-augment": "10.11.2", + "@polkadot/api-base": "10.11.2", + "@polkadot/api-derive": "10.11.2", + "@polkadot/keyring": "^12.6.2", + "@polkadot/rpc-augment": "10.11.2", + "@polkadot/rpc-core": "10.11.2", + "@polkadot/rpc-provider": "10.11.2", + "@polkadot/types": "10.11.2", + "@polkadot/types-augment": "10.11.2", + "@polkadot/types-codec": "10.11.2", + "@polkadot/types-create": "10.11.2", + "@polkadot/types-known": "10.11.2", + "@polkadot/util": "^12.6.2", + "@polkadot/util-crypto": "^12.6.2", "eventemitter3": "^5.0.1", "rxjs": "^7.8.1", "tslib": "^2.6.2" @@ -5009,17 +5398,17 @@ } }, "node_modules/@polkadot/api-augment": { - "version": "10.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-10.11.1.tgz", - "integrity": "sha512-9Sk7fi6wzvxAoxvGJPcMt0hU4WzuIAlBy4Rng6WPiS6Ed0HJLr1dkZaqFFmV5my2pb3tu//1JGYkt+MUVB0Kqw==", + "version": "10.11.2", + "resolved": "https://registry.npmjs.org/@polkadot/api-augment/-/api-augment-10.11.2.tgz", + "integrity": "sha512-PTpnqpezc75qBqUtgrc0GYB8h9UHjfbHSRZamAbecIVAJ2/zc6CqtnldeaBlIu1IKTgBzi3FFtTyYu+ZGbNT2Q==", "peer": true, "dependencies": { - "@polkadot/api-base": "10.11.1", - "@polkadot/rpc-augment": "10.11.1", - "@polkadot/types": "10.11.1", - "@polkadot/types-augment": "10.11.1", - "@polkadot/types-codec": "10.11.1", - "@polkadot/util": "^12.6.1", + "@polkadot/api-base": "10.11.2", + "@polkadot/rpc-augment": "10.11.2", + "@polkadot/types": "10.11.2", + "@polkadot/types-augment": "10.11.2", + "@polkadot/types-codec": "10.11.2", + "@polkadot/util": "^12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -5027,15 +5416,15 @@ } }, "node_modules/@polkadot/api-augment/node_modules/@polkadot/util": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", - "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.2.tgz", + "integrity": "sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==", "peer": true, "dependencies": { - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-global": "12.6.1", - "@polkadot/x-textdecoder": "12.6.1", - "@polkadot/x-textencoder": "12.6.1", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-global": "12.6.2", + "@polkadot/x-textdecoder": "12.6.2", + "@polkadot/x-textencoder": "12.6.2", "@types/bn.js": "^5.1.5", "bn.js": "^5.2.1", "tslib": "^2.6.2" @@ -5045,9 +5434,9 @@ } }, "node_modules/@polkadot/api-augment/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -5057,12 +5446,12 @@ } }, "node_modules/@polkadot/api-augment/node_modules/@polkadot/x-textdecoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", - "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.2.tgz", + "integrity": "sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -5070,12 +5459,12 @@ } }, "node_modules/@polkadot/api-augment/node_modules/@polkadot/x-textencoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", - "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.2.tgz", + "integrity": "sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -5083,14 +5472,14 @@ } }, "node_modules/@polkadot/api-base": { - "version": "10.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-10.11.1.tgz", - "integrity": "sha512-A645Hj9bGtq0EOEWcwTaGoD40vp8/ih1suwinl5il8Psg+bdDmzodnVH5Jhuwe1dNKOuXuvxZvOmbYUPWyIqyg==", + "version": "10.11.2", + "resolved": "https://registry.npmjs.org/@polkadot/api-base/-/api-base-10.11.2.tgz", + "integrity": "sha512-4LIjaUfO9nOzilxo7XqzYKCNMtmUypdk8oHPdrRnSjKEsnK7vDsNi+979z2KXNXd2KFSCFHENmI523fYnMnReg==", "peer": true, "dependencies": { - "@polkadot/rpc-core": "10.11.1", - "@polkadot/types": "10.11.1", - "@polkadot/util": "^12.6.1", + "@polkadot/rpc-core": "10.11.2", + "@polkadot/types": "10.11.2", + "@polkadot/util": "^12.6.2", "rxjs": "^7.8.1", "tslib": "^2.6.2" }, @@ -5099,15 +5488,15 @@ } }, "node_modules/@polkadot/api-base/node_modules/@polkadot/util": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", - "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.2.tgz", + "integrity": "sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==", "peer": true, "dependencies": { - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-global": "12.6.1", - "@polkadot/x-textdecoder": "12.6.1", - "@polkadot/x-textencoder": "12.6.1", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-global": "12.6.2", + "@polkadot/x-textdecoder": "12.6.2", + "@polkadot/x-textencoder": "12.6.2", "@types/bn.js": "^5.1.5", "bn.js": "^5.2.1", "tslib": "^2.6.2" @@ -5117,9 +5506,9 @@ } }, "node_modules/@polkadot/api-base/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -5129,12 +5518,12 @@ } }, "node_modules/@polkadot/api-base/node_modules/@polkadot/x-textdecoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", - "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.2.tgz", + "integrity": "sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -5142,12 +5531,12 @@ } }, "node_modules/@polkadot/api-base/node_modules/@polkadot/x-textencoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", - "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.2.tgz", + "integrity": "sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -5155,19 +5544,19 @@ } }, "node_modules/@polkadot/api-derive": { - "version": "10.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-10.11.1.tgz", - "integrity": "sha512-i48okJr0l1IrFTPa9KVkoJnDL2EHKExR6XC0Z7I9+kW9noxYWqo0tIoi5s1bNVD475xWK/rUjT7qHxiDbPaCUQ==", + "version": "10.11.2", + "resolved": "https://registry.npmjs.org/@polkadot/api-derive/-/api-derive-10.11.2.tgz", + "integrity": "sha512-m3BQbPionkd1iSlknddxnL2hDtolPIsT+aRyrtn4zgMRPoLjHFmTmovvg8RaUyYofJtZeYrnjMw0mdxiSXx7eA==", "peer": true, "dependencies": { - "@polkadot/api": "10.11.1", - "@polkadot/api-augment": "10.11.1", - "@polkadot/api-base": "10.11.1", - "@polkadot/rpc-core": "10.11.1", - "@polkadot/types": "10.11.1", - "@polkadot/types-codec": "10.11.1", - "@polkadot/util": "^12.6.1", - "@polkadot/util-crypto": "^12.6.1", + "@polkadot/api": "10.11.2", + "@polkadot/api-augment": "10.11.2", + "@polkadot/api-base": "10.11.2", + "@polkadot/rpc-core": "10.11.2", + "@polkadot/types": "10.11.2", + "@polkadot/types-codec": "10.11.2", + "@polkadot/util": "^12.6.2", + "@polkadot/util-crypto": "^12.6.2", "rxjs": "^7.8.1", "tslib": "^2.6.2" }, @@ -5176,27 +5565,27 @@ } }, "node_modules/@polkadot/api-derive/node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", "peer": true, "dependencies": { - "@noble/hashes": "1.3.2" + "@noble/hashes": "1.3.3" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@polkadot/api-derive/node_modules/@polkadot/util": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", - "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.2.tgz", + "integrity": "sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==", "peer": true, "dependencies": { - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-global": "12.6.1", - "@polkadot/x-textdecoder": "12.6.1", - "@polkadot/x-textencoder": "12.6.1", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-global": "12.6.2", + "@polkadot/x-textdecoder": "12.6.2", + "@polkadot/x-textencoder": "12.6.2", "@types/bn.js": "^5.1.5", "bn.js": "^5.2.1", "tslib": "^2.6.2" @@ -5206,36 +5595,36 @@ } }, "node_modules/@polkadot/api-derive/node_modules/@polkadot/util-crypto": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-12.6.1.tgz", - "integrity": "sha512-2ezWFLmdgeDXqB9NAUdgpp3s2rQztNrZLY+y0SJYNOG4ch+PyodTW/qSksnOrVGVdRhZ5OESRE9xvo9LYV5UAw==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-12.6.2.tgz", + "integrity": "sha512-FEWI/dJ7wDMNN1WOzZAjQoIcCP/3vz3wvAp5QQm+lOrzOLj0iDmaIGIcBkz8HVm3ErfSe/uKP0KS4jgV/ib+Mg==", "peer": true, "dependencies": { - "@noble/curves": "^1.2.0", - "@noble/hashes": "^1.3.2", - "@polkadot/networks": "12.6.1", - "@polkadot/util": "12.6.1", - "@polkadot/wasm-crypto": "^7.3.1", - "@polkadot/wasm-util": "^7.3.1", - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-randomvalues": "12.6.1", - "@scure/base": "^1.1.3", + "@noble/curves": "^1.3.0", + "@noble/hashes": "^1.3.3", + "@polkadot/networks": "12.6.2", + "@polkadot/util": "12.6.2", + "@polkadot/wasm-crypto": "^7.3.2", + "@polkadot/wasm-util": "^7.3.2", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-randomvalues": "12.6.2", + "@scure/base": "^1.1.5", "tslib": "^2.6.2" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@polkadot/util": "12.6.1" + "@polkadot/util": "12.6.2" } }, "node_modules/@polkadot/api-derive/node_modules/@polkadot/wasm-bridge": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-7.3.1.tgz", - "integrity": "sha512-wPtDkGaOQx5BUIYP+kJv5aV3BnCQ+HXr36khGKYrRQAMBrG+ybCNPOTVXDQnSbraPQRSw7fSIJmiQpEmFsIz0w==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-7.3.2.tgz", + "integrity": "sha512-AJEXChcf/nKXd5Q/YLEV5dXQMle3UNT7jcXYmIffZAo/KI394a+/24PaISyQjoNC0fkzS1Q8T5pnGGHmXiVz2g==", "peer": true, "dependencies": { - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -5247,16 +5636,16 @@ } }, "node_modules/@polkadot/api-derive/node_modules/@polkadot/wasm-crypto": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-7.3.1.tgz", - "integrity": "sha512-BSK0YyCN4ohjtwbiHG71fgf+7ufgfLrHxjn7pKsvXhyeiEVuDhbDreNcpUf3eGOJ5tNk75aSbKGF4a3EJGIiNA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-7.3.2.tgz", + "integrity": "sha512-+neIDLSJ6jjVXsjyZ5oLSv16oIpwp+PxFqTUaZdZDoA2EyFRQB8pP7+qLsMNk+WJuhuJ4qXil/7XiOnZYZ+wxw==", "peer": true, "dependencies": { - "@polkadot/wasm-bridge": "7.3.1", - "@polkadot/wasm-crypto-asmjs": "7.3.1", - "@polkadot/wasm-crypto-init": "7.3.1", - "@polkadot/wasm-crypto-wasm": "7.3.1", - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-bridge": "7.3.2", + "@polkadot/wasm-crypto-asmjs": "7.3.2", + "@polkadot/wasm-crypto-init": "7.3.2", + "@polkadot/wasm-crypto-wasm": "7.3.2", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -5268,9 +5657,9 @@ } }, "node_modules/@polkadot/api-derive/node_modules/@polkadot/wasm-crypto-asmjs": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.3.1.tgz", - "integrity": "sha512-pTUOCIP0nUc4tjzdG1vtEBztKEWde4DBEZm7NaxBLvwNUxsbYhLKYvuhASEyEIz0ZyE4rOBWEmRF4Buic8oO+g==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.3.2.tgz", + "integrity": "sha512-QP5eiUqUFur/2UoF2KKKYJcesc71fXhQFLT3D4ZjG28Mfk2ZPI0QNRUfpcxVQmIUpV5USHg4geCBNuCYsMm20Q==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -5283,15 +5672,15 @@ } }, "node_modules/@polkadot/api-derive/node_modules/@polkadot/wasm-crypto-init": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.3.1.tgz", - "integrity": "sha512-Fx15ItLcxCe7uJCWZVXhFbsrXqHUKAp9KGYQFKBRK7r1C2va4Y7qnirjwkxoMHQcunusLe2KdbrD+YJuzh4wlA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.3.2.tgz", + "integrity": "sha512-FPq73zGmvZtnuJaFV44brze3Lkrki3b4PebxCy9Fplw8nTmisKo9Xxtfew08r0njyYh+uiJRAxPCXadkC9sc8g==", "peer": true, "dependencies": { - "@polkadot/wasm-bridge": "7.3.1", - "@polkadot/wasm-crypto-asmjs": "7.3.1", - "@polkadot/wasm-crypto-wasm": "7.3.1", - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-bridge": "7.3.2", + "@polkadot/wasm-crypto-asmjs": "7.3.2", + "@polkadot/wasm-crypto-wasm": "7.3.2", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -5303,12 +5692,12 @@ } }, "node_modules/@polkadot/api-derive/node_modules/@polkadot/wasm-crypto-wasm": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.3.1.tgz", - "integrity": "sha512-hBMRwrBLCfVsFHSdnwwIxEPshoZdW/dHehYRxMSpUdmqOxtD1gnjocXGE1KZUYGX675+EFuR+Ch6OoTKFJxwTA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.3.2.tgz", + "integrity": "sha512-15wd0EMv9IXs5Abp1ZKpKKAVyZPhATIAHfKsyoWCEFDLSOA0/K0QGOxzrAlsrdUkiKZOq7uzSIgIDgW8okx2Mw==", "peer": true, "dependencies": { - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -5319,9 +5708,9 @@ } }, "node_modules/@polkadot/api-derive/node_modules/@polkadot/wasm-util": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-7.3.1.tgz", - "integrity": "sha512-0m6ozYwBrJgnGl6QvS37ZiGRu4FFPPEtMYEVssfo1Tz4skHJlByWaHWhRNoNCVFAKiGEBu+rfx5HAQMAhoPkvg==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-7.3.2.tgz", + "integrity": "sha512-bmD+Dxo1lTZyZNxbyPE380wd82QsX+43mgCm40boyKrRppXEyQmWT98v/Poc7chLuskYb6X8IQ6lvvK2bGR4Tg==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -5334,9 +5723,9 @@ } }, "node_modules/@polkadot/api-derive/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -5346,29 +5735,29 @@ } }, "node_modules/@polkadot/api-derive/node_modules/@polkadot/x-randomvalues": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-12.6.1.tgz", - "integrity": "sha512-1uVKlfYYbgIgGV5v1Dgn960cGovenWm5pmg+aTMeUGXVYiJwRD2zOpLyC1i/tP454iA74j74pmWb8Nkn0tJZUQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-12.6.2.tgz", + "integrity": "sha512-Vr8uG7rH2IcNJwtyf5ebdODMcr0XjoCpUbI91Zv6AlKVYOGKZlKLYJHIwpTaKKB+7KPWyQrk4Mlym/rS7v9feg==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@polkadot/util": "12.6.1", + "@polkadot/util": "12.6.2", "@polkadot/wasm-util": "*" } }, "node_modules/@polkadot/api-derive/node_modules/@polkadot/x-textdecoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", - "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.2.tgz", + "integrity": "sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -5376,12 +5765,12 @@ } }, "node_modules/@polkadot/api-derive/node_modules/@polkadot/x-textencoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", - "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.2.tgz", + "integrity": "sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -5389,27 +5778,27 @@ } }, "node_modules/@polkadot/api/node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", "peer": true, "dependencies": { - "@noble/hashes": "1.3.2" + "@noble/hashes": "1.3.3" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@polkadot/api/node_modules/@polkadot/util": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", - "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.2.tgz", + "integrity": "sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==", "peer": true, "dependencies": { - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-global": "12.6.1", - "@polkadot/x-textdecoder": "12.6.1", - "@polkadot/x-textencoder": "12.6.1", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-global": "12.6.2", + "@polkadot/x-textdecoder": "12.6.2", + "@polkadot/x-textencoder": "12.6.2", "@types/bn.js": "^5.1.5", "bn.js": "^5.2.1", "tslib": "^2.6.2" @@ -5419,36 +5808,36 @@ } }, "node_modules/@polkadot/api/node_modules/@polkadot/util-crypto": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-12.6.1.tgz", - "integrity": "sha512-2ezWFLmdgeDXqB9NAUdgpp3s2rQztNrZLY+y0SJYNOG4ch+PyodTW/qSksnOrVGVdRhZ5OESRE9xvo9LYV5UAw==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-12.6.2.tgz", + "integrity": "sha512-FEWI/dJ7wDMNN1WOzZAjQoIcCP/3vz3wvAp5QQm+lOrzOLj0iDmaIGIcBkz8HVm3ErfSe/uKP0KS4jgV/ib+Mg==", "peer": true, "dependencies": { - "@noble/curves": "^1.2.0", - "@noble/hashes": "^1.3.2", - "@polkadot/networks": "12.6.1", - "@polkadot/util": "12.6.1", - "@polkadot/wasm-crypto": "^7.3.1", - "@polkadot/wasm-util": "^7.3.1", - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-randomvalues": "12.6.1", - "@scure/base": "^1.1.3", + "@noble/curves": "^1.3.0", + "@noble/hashes": "^1.3.3", + "@polkadot/networks": "12.6.2", + "@polkadot/util": "12.6.2", + "@polkadot/wasm-crypto": "^7.3.2", + "@polkadot/wasm-util": "^7.3.2", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-randomvalues": "12.6.2", + "@scure/base": "^1.1.5", "tslib": "^2.6.2" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@polkadot/util": "12.6.1" + "@polkadot/util": "12.6.2" } }, "node_modules/@polkadot/api/node_modules/@polkadot/wasm-bridge": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-7.3.1.tgz", - "integrity": "sha512-wPtDkGaOQx5BUIYP+kJv5aV3BnCQ+HXr36khGKYrRQAMBrG+ybCNPOTVXDQnSbraPQRSw7fSIJmiQpEmFsIz0w==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-7.3.2.tgz", + "integrity": "sha512-AJEXChcf/nKXd5Q/YLEV5dXQMle3UNT7jcXYmIffZAo/KI394a+/24PaISyQjoNC0fkzS1Q8T5pnGGHmXiVz2g==", "peer": true, "dependencies": { - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -5460,16 +5849,16 @@ } }, "node_modules/@polkadot/api/node_modules/@polkadot/wasm-crypto": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-7.3.1.tgz", - "integrity": "sha512-BSK0YyCN4ohjtwbiHG71fgf+7ufgfLrHxjn7pKsvXhyeiEVuDhbDreNcpUf3eGOJ5tNk75aSbKGF4a3EJGIiNA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-7.3.2.tgz", + "integrity": "sha512-+neIDLSJ6jjVXsjyZ5oLSv16oIpwp+PxFqTUaZdZDoA2EyFRQB8pP7+qLsMNk+WJuhuJ4qXil/7XiOnZYZ+wxw==", "peer": true, "dependencies": { - "@polkadot/wasm-bridge": "7.3.1", - "@polkadot/wasm-crypto-asmjs": "7.3.1", - "@polkadot/wasm-crypto-init": "7.3.1", - "@polkadot/wasm-crypto-wasm": "7.3.1", - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-bridge": "7.3.2", + "@polkadot/wasm-crypto-asmjs": "7.3.2", + "@polkadot/wasm-crypto-init": "7.3.2", + "@polkadot/wasm-crypto-wasm": "7.3.2", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -5481,9 +5870,9 @@ } }, "node_modules/@polkadot/api/node_modules/@polkadot/wasm-crypto-asmjs": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.3.1.tgz", - "integrity": "sha512-pTUOCIP0nUc4tjzdG1vtEBztKEWde4DBEZm7NaxBLvwNUxsbYhLKYvuhASEyEIz0ZyE4rOBWEmRF4Buic8oO+g==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.3.2.tgz", + "integrity": "sha512-QP5eiUqUFur/2UoF2KKKYJcesc71fXhQFLT3D4ZjG28Mfk2ZPI0QNRUfpcxVQmIUpV5USHg4geCBNuCYsMm20Q==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -5496,15 +5885,15 @@ } }, "node_modules/@polkadot/api/node_modules/@polkadot/wasm-crypto-init": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.3.1.tgz", - "integrity": "sha512-Fx15ItLcxCe7uJCWZVXhFbsrXqHUKAp9KGYQFKBRK7r1C2va4Y7qnirjwkxoMHQcunusLe2KdbrD+YJuzh4wlA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.3.2.tgz", + "integrity": "sha512-FPq73zGmvZtnuJaFV44brze3Lkrki3b4PebxCy9Fplw8nTmisKo9Xxtfew08r0njyYh+uiJRAxPCXadkC9sc8g==", "peer": true, "dependencies": { - "@polkadot/wasm-bridge": "7.3.1", - "@polkadot/wasm-crypto-asmjs": "7.3.1", - "@polkadot/wasm-crypto-wasm": "7.3.1", - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-bridge": "7.3.2", + "@polkadot/wasm-crypto-asmjs": "7.3.2", + "@polkadot/wasm-crypto-wasm": "7.3.2", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -5516,12 +5905,12 @@ } }, "node_modules/@polkadot/api/node_modules/@polkadot/wasm-crypto-wasm": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.3.1.tgz", - "integrity": "sha512-hBMRwrBLCfVsFHSdnwwIxEPshoZdW/dHehYRxMSpUdmqOxtD1gnjocXGE1KZUYGX675+EFuR+Ch6OoTKFJxwTA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.3.2.tgz", + "integrity": "sha512-15wd0EMv9IXs5Abp1ZKpKKAVyZPhATIAHfKsyoWCEFDLSOA0/K0QGOxzrAlsrdUkiKZOq7uzSIgIDgW8okx2Mw==", "peer": true, "dependencies": { - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -5532,9 +5921,9 @@ } }, "node_modules/@polkadot/api/node_modules/@polkadot/wasm-util": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-7.3.1.tgz", - "integrity": "sha512-0m6ozYwBrJgnGl6QvS37ZiGRu4FFPPEtMYEVssfo1Tz4skHJlByWaHWhRNoNCVFAKiGEBu+rfx5HAQMAhoPkvg==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-7.3.2.tgz", + "integrity": "sha512-bmD+Dxo1lTZyZNxbyPE380wd82QsX+43mgCm40boyKrRppXEyQmWT98v/Poc7chLuskYb6X8IQ6lvvK2bGR4Tg==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -5547,9 +5936,9 @@ } }, "node_modules/@polkadot/api/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -5559,29 +5948,29 @@ } }, "node_modules/@polkadot/api/node_modules/@polkadot/x-randomvalues": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-12.6.1.tgz", - "integrity": "sha512-1uVKlfYYbgIgGV5v1Dgn960cGovenWm5pmg+aTMeUGXVYiJwRD2zOpLyC1i/tP454iA74j74pmWb8Nkn0tJZUQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-12.6.2.tgz", + "integrity": "sha512-Vr8uG7rH2IcNJwtyf5ebdODMcr0XjoCpUbI91Zv6AlKVYOGKZlKLYJHIwpTaKKB+7KPWyQrk4Mlym/rS7v9feg==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@polkadot/util": "12.6.1", + "@polkadot/util": "12.6.2", "@polkadot/wasm-util": "*" } }, "node_modules/@polkadot/api/node_modules/@polkadot/x-textdecoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", - "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.2.tgz", + "integrity": "sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -5589,12 +5978,12 @@ } }, "node_modules/@polkadot/api/node_modules/@polkadot/x-textencoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", - "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.2.tgz", + "integrity": "sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -5803,45 +6192,45 @@ "optional": true }, "node_modules/@polkadot/keyring": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-12.6.1.tgz", - "integrity": "sha512-cicTctZr5Jy5vgNT2FsNiKoTZnz6zQkgDoIYv79NI+p1Fhwc9C+DN/iMCnk3Cm9vR2gSAd2fSV+Y5iKVDhAmUw==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/keyring/-/keyring-12.6.2.tgz", + "integrity": "sha512-O3Q7GVmRYm8q7HuB3S0+Yf/q/EB2egKRRU3fv9b3B7V+A52tKzA+vIwEmNVaD1g5FKW9oB97rmpggs0zaKFqHw==", "peer": true, "dependencies": { - "@polkadot/util": "12.6.1", - "@polkadot/util-crypto": "12.6.1", + "@polkadot/util": "12.6.2", + "@polkadot/util-crypto": "12.6.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@polkadot/util": "12.6.1", - "@polkadot/util-crypto": "12.6.1" + "@polkadot/util": "12.6.2", + "@polkadot/util-crypto": "12.6.2" } }, "node_modules/@polkadot/keyring/node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", "peer": true, "dependencies": { - "@noble/hashes": "1.3.2" + "@noble/hashes": "1.3.3" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@polkadot/keyring/node_modules/@polkadot/util": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", - "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.2.tgz", + "integrity": "sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==", "peer": true, "dependencies": { - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-global": "12.6.1", - "@polkadot/x-textdecoder": "12.6.1", - "@polkadot/x-textencoder": "12.6.1", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-global": "12.6.2", + "@polkadot/x-textdecoder": "12.6.2", + "@polkadot/x-textencoder": "12.6.2", "@types/bn.js": "^5.1.5", "bn.js": "^5.2.1", "tslib": "^2.6.2" @@ -5851,36 +6240,36 @@ } }, "node_modules/@polkadot/keyring/node_modules/@polkadot/util-crypto": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-12.6.1.tgz", - "integrity": "sha512-2ezWFLmdgeDXqB9NAUdgpp3s2rQztNrZLY+y0SJYNOG4ch+PyodTW/qSksnOrVGVdRhZ5OESRE9xvo9LYV5UAw==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-12.6.2.tgz", + "integrity": "sha512-FEWI/dJ7wDMNN1WOzZAjQoIcCP/3vz3wvAp5QQm+lOrzOLj0iDmaIGIcBkz8HVm3ErfSe/uKP0KS4jgV/ib+Mg==", "peer": true, "dependencies": { - "@noble/curves": "^1.2.0", - "@noble/hashes": "^1.3.2", - "@polkadot/networks": "12.6.1", - "@polkadot/util": "12.6.1", - "@polkadot/wasm-crypto": "^7.3.1", - "@polkadot/wasm-util": "^7.3.1", - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-randomvalues": "12.6.1", - "@scure/base": "^1.1.3", + "@noble/curves": "^1.3.0", + "@noble/hashes": "^1.3.3", + "@polkadot/networks": "12.6.2", + "@polkadot/util": "12.6.2", + "@polkadot/wasm-crypto": "^7.3.2", + "@polkadot/wasm-util": "^7.3.2", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-randomvalues": "12.6.2", + "@scure/base": "^1.1.5", "tslib": "^2.6.2" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@polkadot/util": "12.6.1" + "@polkadot/util": "12.6.2" } }, "node_modules/@polkadot/keyring/node_modules/@polkadot/wasm-bridge": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-7.3.1.tgz", - "integrity": "sha512-wPtDkGaOQx5BUIYP+kJv5aV3BnCQ+HXr36khGKYrRQAMBrG+ybCNPOTVXDQnSbraPQRSw7fSIJmiQpEmFsIz0w==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-7.3.2.tgz", + "integrity": "sha512-AJEXChcf/nKXd5Q/YLEV5dXQMle3UNT7jcXYmIffZAo/KI394a+/24PaISyQjoNC0fkzS1Q8T5pnGGHmXiVz2g==", "peer": true, "dependencies": { - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -5892,16 +6281,16 @@ } }, "node_modules/@polkadot/keyring/node_modules/@polkadot/wasm-crypto": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-7.3.1.tgz", - "integrity": "sha512-BSK0YyCN4ohjtwbiHG71fgf+7ufgfLrHxjn7pKsvXhyeiEVuDhbDreNcpUf3eGOJ5tNk75aSbKGF4a3EJGIiNA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-7.3.2.tgz", + "integrity": "sha512-+neIDLSJ6jjVXsjyZ5oLSv16oIpwp+PxFqTUaZdZDoA2EyFRQB8pP7+qLsMNk+WJuhuJ4qXil/7XiOnZYZ+wxw==", "peer": true, "dependencies": { - "@polkadot/wasm-bridge": "7.3.1", - "@polkadot/wasm-crypto-asmjs": "7.3.1", - "@polkadot/wasm-crypto-init": "7.3.1", - "@polkadot/wasm-crypto-wasm": "7.3.1", - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-bridge": "7.3.2", + "@polkadot/wasm-crypto-asmjs": "7.3.2", + "@polkadot/wasm-crypto-init": "7.3.2", + "@polkadot/wasm-crypto-wasm": "7.3.2", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -5913,9 +6302,9 @@ } }, "node_modules/@polkadot/keyring/node_modules/@polkadot/wasm-crypto-asmjs": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.3.1.tgz", - "integrity": "sha512-pTUOCIP0nUc4tjzdG1vtEBztKEWde4DBEZm7NaxBLvwNUxsbYhLKYvuhASEyEIz0ZyE4rOBWEmRF4Buic8oO+g==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.3.2.tgz", + "integrity": "sha512-QP5eiUqUFur/2UoF2KKKYJcesc71fXhQFLT3D4ZjG28Mfk2ZPI0QNRUfpcxVQmIUpV5USHg4geCBNuCYsMm20Q==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -5928,15 +6317,15 @@ } }, "node_modules/@polkadot/keyring/node_modules/@polkadot/wasm-crypto-init": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.3.1.tgz", - "integrity": "sha512-Fx15ItLcxCe7uJCWZVXhFbsrXqHUKAp9KGYQFKBRK7r1C2va4Y7qnirjwkxoMHQcunusLe2KdbrD+YJuzh4wlA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.3.2.tgz", + "integrity": "sha512-FPq73zGmvZtnuJaFV44brze3Lkrki3b4PebxCy9Fplw8nTmisKo9Xxtfew08r0njyYh+uiJRAxPCXadkC9sc8g==", "peer": true, "dependencies": { - "@polkadot/wasm-bridge": "7.3.1", - "@polkadot/wasm-crypto-asmjs": "7.3.1", - "@polkadot/wasm-crypto-wasm": "7.3.1", - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-bridge": "7.3.2", + "@polkadot/wasm-crypto-asmjs": "7.3.2", + "@polkadot/wasm-crypto-wasm": "7.3.2", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -5948,12 +6337,12 @@ } }, "node_modules/@polkadot/keyring/node_modules/@polkadot/wasm-crypto-wasm": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.3.1.tgz", - "integrity": "sha512-hBMRwrBLCfVsFHSdnwwIxEPshoZdW/dHehYRxMSpUdmqOxtD1gnjocXGE1KZUYGX675+EFuR+Ch6OoTKFJxwTA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.3.2.tgz", + "integrity": "sha512-15wd0EMv9IXs5Abp1ZKpKKAVyZPhATIAHfKsyoWCEFDLSOA0/K0QGOxzrAlsrdUkiKZOq7uzSIgIDgW8okx2Mw==", "peer": true, "dependencies": { - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -5964,9 +6353,9 @@ } }, "node_modules/@polkadot/keyring/node_modules/@polkadot/wasm-util": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-7.3.1.tgz", - "integrity": "sha512-0m6ozYwBrJgnGl6QvS37ZiGRu4FFPPEtMYEVssfo1Tz4skHJlByWaHWhRNoNCVFAKiGEBu+rfx5HAQMAhoPkvg==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-7.3.2.tgz", + "integrity": "sha512-bmD+Dxo1lTZyZNxbyPE380wd82QsX+43mgCm40boyKrRppXEyQmWT98v/Poc7chLuskYb6X8IQ6lvvK2bGR4Tg==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -5979,9 +6368,9 @@ } }, "node_modules/@polkadot/keyring/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -5991,29 +6380,29 @@ } }, "node_modules/@polkadot/keyring/node_modules/@polkadot/x-randomvalues": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-12.6.1.tgz", - "integrity": "sha512-1uVKlfYYbgIgGV5v1Dgn960cGovenWm5pmg+aTMeUGXVYiJwRD2zOpLyC1i/tP454iA74j74pmWb8Nkn0tJZUQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-12.6.2.tgz", + "integrity": "sha512-Vr8uG7rH2IcNJwtyf5ebdODMcr0XjoCpUbI91Zv6AlKVYOGKZlKLYJHIwpTaKKB+7KPWyQrk4Mlym/rS7v9feg==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@polkadot/util": "12.6.1", + "@polkadot/util": "12.6.2", "@polkadot/wasm-util": "*" } }, "node_modules/@polkadot/keyring/node_modules/@polkadot/x-textdecoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", - "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.2.tgz", + "integrity": "sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6021,12 +6410,12 @@ } }, "node_modules/@polkadot/keyring/node_modules/@polkadot/x-textencoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", - "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.2.tgz", + "integrity": "sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6034,12 +6423,12 @@ } }, "node_modules/@polkadot/networks": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-12.6.1.tgz", - "integrity": "sha512-pzyirxTYAnsx+6kyLYcUk26e4TLz3cX6p2KhTgAVW77YnpGX5VTKTbYykyXC8fXFd/migeQsLaa2raFN47mwoA==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/networks/-/networks-12.6.2.tgz", + "integrity": "sha512-1oWtZm1IvPWqvMrldVH6NI2gBoCndl5GEwx7lAuQWGr7eNL+6Bdc5K3Z9T0MzFvDGoi2/CBqjX9dRKo39pDC/w==", "peer": true, "dependencies": { - "@polkadot/util": "12.6.1", + "@polkadot/util": "12.6.2", "@substrate/ss58-registry": "^1.44.0", "tslib": "^2.6.2" }, @@ -6048,15 +6437,15 @@ } }, "node_modules/@polkadot/networks/node_modules/@polkadot/util": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", - "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.2.tgz", + "integrity": "sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==", "peer": true, "dependencies": { - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-global": "12.6.1", - "@polkadot/x-textdecoder": "12.6.1", - "@polkadot/x-textencoder": "12.6.1", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-global": "12.6.2", + "@polkadot/x-textdecoder": "12.6.2", + "@polkadot/x-textencoder": "12.6.2", "@types/bn.js": "^5.1.5", "bn.js": "^5.2.1", "tslib": "^2.6.2" @@ -6066,9 +6455,9 @@ } }, "node_modules/@polkadot/networks/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -6078,12 +6467,12 @@ } }, "node_modules/@polkadot/networks/node_modules/@polkadot/x-textdecoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", - "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.2.tgz", + "integrity": "sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6091,12 +6480,12 @@ } }, "node_modules/@polkadot/networks/node_modules/@polkadot/x-textencoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", - "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.2.tgz", + "integrity": "sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6104,15 +6493,15 @@ } }, "node_modules/@polkadot/rpc-augment": { - "version": "10.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-10.11.1.tgz", - "integrity": "sha512-wrtxHnEwqS3b1GuZ3sA1pzLuUjjLnW4FPawOklONRcIuKbGmFuvu7QvEIHmxBV1FAS/fs8gbvp8ImKWUPnT93Q==", + "version": "10.11.2", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-augment/-/rpc-augment-10.11.2.tgz", + "integrity": "sha512-9AhT0WW81/8jYbRcAC6PRmuxXqNhJje8OYiulBQHbG1DTCcjAfz+6VQBke9BwTStzPq7d526+yyBKD17O3zlAA==", "peer": true, "dependencies": { - "@polkadot/rpc-core": "10.11.1", - "@polkadot/types": "10.11.1", - "@polkadot/types-codec": "10.11.1", - "@polkadot/util": "^12.6.1", + "@polkadot/rpc-core": "10.11.2", + "@polkadot/types": "10.11.2", + "@polkadot/types-codec": "10.11.2", + "@polkadot/util": "^12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6120,15 +6509,15 @@ } }, "node_modules/@polkadot/rpc-augment/node_modules/@polkadot/util": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", - "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.2.tgz", + "integrity": "sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==", "peer": true, "dependencies": { - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-global": "12.6.1", - "@polkadot/x-textdecoder": "12.6.1", - "@polkadot/x-textencoder": "12.6.1", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-global": "12.6.2", + "@polkadot/x-textdecoder": "12.6.2", + "@polkadot/x-textencoder": "12.6.2", "@types/bn.js": "^5.1.5", "bn.js": "^5.2.1", "tslib": "^2.6.2" @@ -6138,9 +6527,9 @@ } }, "node_modules/@polkadot/rpc-augment/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -6150,12 +6539,12 @@ } }, "node_modules/@polkadot/rpc-augment/node_modules/@polkadot/x-textdecoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", - "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.2.tgz", + "integrity": "sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6163,12 +6552,12 @@ } }, "node_modules/@polkadot/rpc-augment/node_modules/@polkadot/x-textencoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", - "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.2.tgz", + "integrity": "sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6176,15 +6565,15 @@ } }, "node_modules/@polkadot/rpc-core": { - "version": "10.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-10.11.1.tgz", - "integrity": "sha512-3l4l+zL7MDWzQx3WnaieXXUKsbeA1Miu4wsje5trYJEE+hm+nMW8h7fiFKfYzXBi7ty/wMS+S7BfQPTrDkYHxA==", + "version": "10.11.2", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-core/-/rpc-core-10.11.2.tgz", + "integrity": "sha512-Ot0CFLWx8sZhLZog20WDuniPA01Bk2StNDsdAQgcFKPwZw6ShPaZQCHuKLQK6I6DodOrem9FXX7c1hvoKJP5Ww==", "peer": true, "dependencies": { - "@polkadot/rpc-augment": "10.11.1", - "@polkadot/rpc-provider": "10.11.1", - "@polkadot/types": "10.11.1", - "@polkadot/util": "^12.6.1", + "@polkadot/rpc-augment": "10.11.2", + "@polkadot/rpc-provider": "10.11.2", + "@polkadot/types": "10.11.2", + "@polkadot/util": "^12.6.2", "rxjs": "^7.8.1", "tslib": "^2.6.2" }, @@ -6193,15 +6582,15 @@ } }, "node_modules/@polkadot/rpc-core/node_modules/@polkadot/util": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", - "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.2.tgz", + "integrity": "sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==", "peer": true, "dependencies": { - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-global": "12.6.1", - "@polkadot/x-textdecoder": "12.6.1", - "@polkadot/x-textencoder": "12.6.1", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-global": "12.6.2", + "@polkadot/x-textdecoder": "12.6.2", + "@polkadot/x-textencoder": "12.6.2", "@types/bn.js": "^5.1.5", "bn.js": "^5.2.1", "tslib": "^2.6.2" @@ -6211,9 +6600,9 @@ } }, "node_modules/@polkadot/rpc-core/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -6223,12 +6612,12 @@ } }, "node_modules/@polkadot/rpc-core/node_modules/@polkadot/x-textdecoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", - "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.2.tgz", + "integrity": "sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6236,12 +6625,12 @@ } }, "node_modules/@polkadot/rpc-core/node_modules/@polkadot/x-textencoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", - "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.2.tgz", + "integrity": "sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6249,22 +6638,22 @@ } }, "node_modules/@polkadot/rpc-provider": { - "version": "10.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-10.11.1.tgz", - "integrity": "sha512-86aDUOnaG42si0jSOAgn6Fs3F3rz57x+iNBK1JpM0PLL2XvmPuoMZL5dZwzqSIey3nVdGJqRYfnFquWuyQpnOQ==", + "version": "10.11.2", + "resolved": "https://registry.npmjs.org/@polkadot/rpc-provider/-/rpc-provider-10.11.2.tgz", + "integrity": "sha512-he5jWMpDJp7e+vUzTZDzpkB7ps3H8psRally+/ZvZZScPvFEjfczT7I1WWY9h58s8+ImeVP/lkXjL9h/gUOt3Q==", "peer": true, "dependencies": { - "@polkadot/keyring": "^12.6.1", - "@polkadot/types": "10.11.1", - "@polkadot/types-support": "10.11.1", - "@polkadot/util": "^12.6.1", - "@polkadot/util-crypto": "^12.6.1", - "@polkadot/x-fetch": "^12.6.1", - "@polkadot/x-global": "^12.6.1", - "@polkadot/x-ws": "^12.6.1", + "@polkadot/keyring": "^12.6.2", + "@polkadot/types": "10.11.2", + "@polkadot/types-support": "10.11.2", + "@polkadot/util": "^12.6.2", + "@polkadot/util-crypto": "^12.6.2", + "@polkadot/x-fetch": "^12.6.2", + "@polkadot/x-global": "^12.6.2", + "@polkadot/x-ws": "^12.6.2", "eventemitter3": "^5.0.1", "mock-socket": "^9.3.1", - "nock": "^13.3.8", + "nock": "^13.4.0", "tslib": "^2.6.2" }, "engines": { @@ -6275,27 +6664,27 @@ } }, "node_modules/@polkadot/rpc-provider/node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", "peer": true, "dependencies": { - "@noble/hashes": "1.3.2" + "@noble/hashes": "1.3.3" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/util": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", - "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.2.tgz", + "integrity": "sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==", "peer": true, "dependencies": { - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-global": "12.6.1", - "@polkadot/x-textdecoder": "12.6.1", - "@polkadot/x-textencoder": "12.6.1", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-global": "12.6.2", + "@polkadot/x-textdecoder": "12.6.2", + "@polkadot/x-textencoder": "12.6.2", "@types/bn.js": "^5.1.5", "bn.js": "^5.2.1", "tslib": "^2.6.2" @@ -6305,36 +6694,36 @@ } }, "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/util-crypto": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-12.6.1.tgz", - "integrity": "sha512-2ezWFLmdgeDXqB9NAUdgpp3s2rQztNrZLY+y0SJYNOG4ch+PyodTW/qSksnOrVGVdRhZ5OESRE9xvo9LYV5UAw==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-12.6.2.tgz", + "integrity": "sha512-FEWI/dJ7wDMNN1WOzZAjQoIcCP/3vz3wvAp5QQm+lOrzOLj0iDmaIGIcBkz8HVm3ErfSe/uKP0KS4jgV/ib+Mg==", "peer": true, "dependencies": { - "@noble/curves": "^1.2.0", - "@noble/hashes": "^1.3.2", - "@polkadot/networks": "12.6.1", - "@polkadot/util": "12.6.1", - "@polkadot/wasm-crypto": "^7.3.1", - "@polkadot/wasm-util": "^7.3.1", - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-randomvalues": "12.6.1", - "@scure/base": "^1.1.3", + "@noble/curves": "^1.3.0", + "@noble/hashes": "^1.3.3", + "@polkadot/networks": "12.6.2", + "@polkadot/util": "12.6.2", + "@polkadot/wasm-crypto": "^7.3.2", + "@polkadot/wasm-util": "^7.3.2", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-randomvalues": "12.6.2", + "@scure/base": "^1.1.5", "tslib": "^2.6.2" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@polkadot/util": "12.6.1" + "@polkadot/util": "12.6.2" } }, "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/wasm-bridge": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-7.3.1.tgz", - "integrity": "sha512-wPtDkGaOQx5BUIYP+kJv5aV3BnCQ+HXr36khGKYrRQAMBrG+ybCNPOTVXDQnSbraPQRSw7fSIJmiQpEmFsIz0w==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-7.3.2.tgz", + "integrity": "sha512-AJEXChcf/nKXd5Q/YLEV5dXQMle3UNT7jcXYmIffZAo/KI394a+/24PaISyQjoNC0fkzS1Q8T5pnGGHmXiVz2g==", "peer": true, "dependencies": { - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -6346,16 +6735,16 @@ } }, "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/wasm-crypto": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-7.3.1.tgz", - "integrity": "sha512-BSK0YyCN4ohjtwbiHG71fgf+7ufgfLrHxjn7pKsvXhyeiEVuDhbDreNcpUf3eGOJ5tNk75aSbKGF4a3EJGIiNA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-7.3.2.tgz", + "integrity": "sha512-+neIDLSJ6jjVXsjyZ5oLSv16oIpwp+PxFqTUaZdZDoA2EyFRQB8pP7+qLsMNk+WJuhuJ4qXil/7XiOnZYZ+wxw==", "peer": true, "dependencies": { - "@polkadot/wasm-bridge": "7.3.1", - "@polkadot/wasm-crypto-asmjs": "7.3.1", - "@polkadot/wasm-crypto-init": "7.3.1", - "@polkadot/wasm-crypto-wasm": "7.3.1", - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-bridge": "7.3.2", + "@polkadot/wasm-crypto-asmjs": "7.3.2", + "@polkadot/wasm-crypto-init": "7.3.2", + "@polkadot/wasm-crypto-wasm": "7.3.2", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -6367,9 +6756,9 @@ } }, "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/wasm-crypto-asmjs": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.3.1.tgz", - "integrity": "sha512-pTUOCIP0nUc4tjzdG1vtEBztKEWde4DBEZm7NaxBLvwNUxsbYhLKYvuhASEyEIz0ZyE4rOBWEmRF4Buic8oO+g==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.3.2.tgz", + "integrity": "sha512-QP5eiUqUFur/2UoF2KKKYJcesc71fXhQFLT3D4ZjG28Mfk2ZPI0QNRUfpcxVQmIUpV5USHg4geCBNuCYsMm20Q==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -6382,15 +6771,15 @@ } }, "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/wasm-crypto-init": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.3.1.tgz", - "integrity": "sha512-Fx15ItLcxCe7uJCWZVXhFbsrXqHUKAp9KGYQFKBRK7r1C2va4Y7qnirjwkxoMHQcunusLe2KdbrD+YJuzh4wlA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.3.2.tgz", + "integrity": "sha512-FPq73zGmvZtnuJaFV44brze3Lkrki3b4PebxCy9Fplw8nTmisKo9Xxtfew08r0njyYh+uiJRAxPCXadkC9sc8g==", "peer": true, "dependencies": { - "@polkadot/wasm-bridge": "7.3.1", - "@polkadot/wasm-crypto-asmjs": "7.3.1", - "@polkadot/wasm-crypto-wasm": "7.3.1", - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-bridge": "7.3.2", + "@polkadot/wasm-crypto-asmjs": "7.3.2", + "@polkadot/wasm-crypto-wasm": "7.3.2", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -6402,12 +6791,12 @@ } }, "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/wasm-crypto-wasm": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.3.1.tgz", - "integrity": "sha512-hBMRwrBLCfVsFHSdnwwIxEPshoZdW/dHehYRxMSpUdmqOxtD1gnjocXGE1KZUYGX675+EFuR+Ch6OoTKFJxwTA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.3.2.tgz", + "integrity": "sha512-15wd0EMv9IXs5Abp1ZKpKKAVyZPhATIAHfKsyoWCEFDLSOA0/K0QGOxzrAlsrdUkiKZOq7uzSIgIDgW8okx2Mw==", "peer": true, "dependencies": { - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -6418,9 +6807,9 @@ } }, "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/wasm-util": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-7.3.1.tgz", - "integrity": "sha512-0m6ozYwBrJgnGl6QvS37ZiGRu4FFPPEtMYEVssfo1Tz4skHJlByWaHWhRNoNCVFAKiGEBu+rfx5HAQMAhoPkvg==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-7.3.2.tgz", + "integrity": "sha512-bmD+Dxo1lTZyZNxbyPE380wd82QsX+43mgCm40boyKrRppXEyQmWT98v/Poc7chLuskYb6X8IQ6lvvK2bGR4Tg==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -6433,9 +6822,9 @@ } }, "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -6445,29 +6834,29 @@ } }, "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/x-randomvalues": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-12.6.1.tgz", - "integrity": "sha512-1uVKlfYYbgIgGV5v1Dgn960cGovenWm5pmg+aTMeUGXVYiJwRD2zOpLyC1i/tP454iA74j74pmWb8Nkn0tJZUQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-12.6.2.tgz", + "integrity": "sha512-Vr8uG7rH2IcNJwtyf5ebdODMcr0XjoCpUbI91Zv6AlKVYOGKZlKLYJHIwpTaKKB+7KPWyQrk4Mlym/rS7v9feg==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@polkadot/util": "12.6.1", + "@polkadot/util": "12.6.2", "@polkadot/wasm-util": "*" } }, "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/x-textdecoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", - "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.2.tgz", + "integrity": "sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6475,12 +6864,12 @@ } }, "node_modules/@polkadot/rpc-provider/node_modules/@polkadot/x-textencoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", - "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.2.tgz", + "integrity": "sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6488,17 +6877,17 @@ } }, "node_modules/@polkadot/types": { - "version": "10.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-10.11.1.tgz", - "integrity": "sha512-4uKnzW2GZqNA5qRZpTPJ7z+G/ARTvXI89etv9xXXVttUdfTaYZsMf4rMuMThOAE/mAUn70LoH0JKthZLwzVgNQ==", + "version": "10.11.2", + "resolved": "https://registry.npmjs.org/@polkadot/types/-/types-10.11.2.tgz", + "integrity": "sha512-d52j3xXni+C8GdYZVTSfu8ROAnzXFMlyRvXtor0PudUc8UQHOaC4+mYAkTBGA2gKdmL8MHSfRSbhcxHhsikY6Q==", "peer": true, "dependencies": { - "@polkadot/keyring": "^12.6.1", - "@polkadot/types-augment": "10.11.1", - "@polkadot/types-codec": "10.11.1", - "@polkadot/types-create": "10.11.1", - "@polkadot/util": "^12.6.1", - "@polkadot/util-crypto": "^12.6.1", + "@polkadot/keyring": "^12.6.2", + "@polkadot/types-augment": "10.11.2", + "@polkadot/types-codec": "10.11.2", + "@polkadot/types-create": "10.11.2", + "@polkadot/util": "^12.6.2", + "@polkadot/util-crypto": "^12.6.2", "rxjs": "^7.8.1", "tslib": "^2.6.2" }, @@ -6507,14 +6896,14 @@ } }, "node_modules/@polkadot/types-augment": { - "version": "10.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-10.11.1.tgz", - "integrity": "sha512-Exd5mMCuSOXXz73iWqy8ocScWTrwAPqHz0Kxpz5OWlAu+5usipMuhjoeaZA803FHQntZh9lHUN31fuc50Exhew==", + "version": "10.11.2", + "resolved": "https://registry.npmjs.org/@polkadot/types-augment/-/types-augment-10.11.2.tgz", + "integrity": "sha512-8eB8ew04wZiE5GnmFvEFW1euJWmF62SGxb1O+8wL3zoUtB9Xgo1vB6w6xbTrd+HLV6jNSeXXnbbF1BEUvi9cNg==", "peer": true, "dependencies": { - "@polkadot/types": "10.11.1", - "@polkadot/types-codec": "10.11.1", - "@polkadot/util": "^12.6.1", + "@polkadot/types": "10.11.2", + "@polkadot/types-codec": "10.11.2", + "@polkadot/util": "^12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6522,15 +6911,15 @@ } }, "node_modules/@polkadot/types-augment/node_modules/@polkadot/util": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", - "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.2.tgz", + "integrity": "sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==", "peer": true, "dependencies": { - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-global": "12.6.1", - "@polkadot/x-textdecoder": "12.6.1", - "@polkadot/x-textencoder": "12.6.1", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-global": "12.6.2", + "@polkadot/x-textdecoder": "12.6.2", + "@polkadot/x-textencoder": "12.6.2", "@types/bn.js": "^5.1.5", "bn.js": "^5.2.1", "tslib": "^2.6.2" @@ -6540,9 +6929,9 @@ } }, "node_modules/@polkadot/types-augment/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -6552,12 +6941,12 @@ } }, "node_modules/@polkadot/types-augment/node_modules/@polkadot/x-textdecoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", - "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.2.tgz", + "integrity": "sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6565,12 +6954,12 @@ } }, "node_modules/@polkadot/types-augment/node_modules/@polkadot/x-textencoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", - "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.2.tgz", + "integrity": "sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6578,13 +6967,13 @@ } }, "node_modules/@polkadot/types-codec": { - "version": "10.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-10.11.1.tgz", - "integrity": "sha512-B9Fu2hq3cRpJpGPcgfZ8Qi1OSX9u82J46adlbIG95ktoA+70eZ83VS3Zvtt9ACsdLVGETCJfDjSO25XptjhZKQ==", + "version": "10.11.2", + "resolved": "https://registry.npmjs.org/@polkadot/types-codec/-/types-codec-10.11.2.tgz", + "integrity": "sha512-3xjOQL+LOOMzYqlgP9ROL0FQnzU8lGflgYewzau7AsDlFziSEtb49a9BpYo6zil4koC+QB8zQ9OHGFumG08T8w==", "peer": true, "dependencies": { - "@polkadot/util": "^12.6.1", - "@polkadot/x-bigint": "^12.6.1", + "@polkadot/util": "^12.6.2", + "@polkadot/x-bigint": "^12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6592,15 +6981,15 @@ } }, "node_modules/@polkadot/types-codec/node_modules/@polkadot/util": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", - "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.2.tgz", + "integrity": "sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==", "peer": true, "dependencies": { - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-global": "12.6.1", - "@polkadot/x-textdecoder": "12.6.1", - "@polkadot/x-textencoder": "12.6.1", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-global": "12.6.2", + "@polkadot/x-textdecoder": "12.6.2", + "@polkadot/x-textencoder": "12.6.2", "@types/bn.js": "^5.1.5", "bn.js": "^5.2.1", "tslib": "^2.6.2" @@ -6610,9 +6999,9 @@ } }, "node_modules/@polkadot/types-codec/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -6622,12 +7011,12 @@ } }, "node_modules/@polkadot/types-codec/node_modules/@polkadot/x-textdecoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", - "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.2.tgz", + "integrity": "sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6635,12 +7024,12 @@ } }, "node_modules/@polkadot/types-codec/node_modules/@polkadot/x-textencoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", - "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.2.tgz", + "integrity": "sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6648,13 +7037,13 @@ } }, "node_modules/@polkadot/types-create": { - "version": "10.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-10.11.1.tgz", - "integrity": "sha512-oeaI185F3XeWSz9/fe//qZ0KsQyE6C6c13WuOa+5cX/Yuz7cSAXawrhl58HRaU+fueaE/ijEHLcuK1sdM6e1JQ==", + "version": "10.11.2", + "resolved": "https://registry.npmjs.org/@polkadot/types-create/-/types-create-10.11.2.tgz", + "integrity": "sha512-SJt23NxYvefRxVZZm6mT9ed1pR6FDoIGQ3xUpbjhTLfU2wuhpKjekMVorYQ6z/gK2JLMu2kV92Ardsz+6GX5XQ==", "peer": true, "dependencies": { - "@polkadot/types-codec": "10.11.1", - "@polkadot/util": "^12.6.1", + "@polkadot/types-codec": "10.11.2", + "@polkadot/util": "^12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6662,15 +7051,15 @@ } }, "node_modules/@polkadot/types-create/node_modules/@polkadot/util": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", - "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.2.tgz", + "integrity": "sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==", "peer": true, "dependencies": { - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-global": "12.6.1", - "@polkadot/x-textdecoder": "12.6.1", - "@polkadot/x-textencoder": "12.6.1", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-global": "12.6.2", + "@polkadot/x-textdecoder": "12.6.2", + "@polkadot/x-textencoder": "12.6.2", "@types/bn.js": "^5.1.5", "bn.js": "^5.2.1", "tslib": "^2.6.2" @@ -6680,9 +7069,9 @@ } }, "node_modules/@polkadot/types-create/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -6692,12 +7081,12 @@ } }, "node_modules/@polkadot/types-create/node_modules/@polkadot/x-textdecoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", - "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.2.tgz", + "integrity": "sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6705,12 +7094,12 @@ } }, "node_modules/@polkadot/types-create/node_modules/@polkadot/x-textencoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", - "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.2.tgz", + "integrity": "sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6718,16 +7107,16 @@ } }, "node_modules/@polkadot/types-known": { - "version": "10.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-10.11.1.tgz", - "integrity": "sha512-BPHI7EbdRaznZR4RVVrQC5epyxL6caJ5dkluZP6rRwx7VmQK0FTGIwgh3UP724mzQhM8rT77MD3h2ftnq1cteg==", + "version": "10.11.2", + "resolved": "https://registry.npmjs.org/@polkadot/types-known/-/types-known-10.11.2.tgz", + "integrity": "sha512-kbEIX7NUQFxpDB0FFGNyXX/odY7jbp56RGD+Z4A731fW2xh/DgAQrI994xTzuh0c0EqPE26oQm3kATSpseqo9w==", "peer": true, "dependencies": { - "@polkadot/networks": "^12.6.1", - "@polkadot/types": "10.11.1", - "@polkadot/types-codec": "10.11.1", - "@polkadot/types-create": "10.11.1", - "@polkadot/util": "^12.6.1", + "@polkadot/networks": "^12.6.2", + "@polkadot/types": "10.11.2", + "@polkadot/types-codec": "10.11.2", + "@polkadot/types-create": "10.11.2", + "@polkadot/util": "^12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6735,15 +7124,15 @@ } }, "node_modules/@polkadot/types-known/node_modules/@polkadot/util": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", - "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.2.tgz", + "integrity": "sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==", "peer": true, "dependencies": { - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-global": "12.6.1", - "@polkadot/x-textdecoder": "12.6.1", - "@polkadot/x-textencoder": "12.6.1", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-global": "12.6.2", + "@polkadot/x-textdecoder": "12.6.2", + "@polkadot/x-textencoder": "12.6.2", "@types/bn.js": "^5.1.5", "bn.js": "^5.2.1", "tslib": "^2.6.2" @@ -6753,9 +7142,9 @@ } }, "node_modules/@polkadot/types-known/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -6765,12 +7154,12 @@ } }, "node_modules/@polkadot/types-known/node_modules/@polkadot/x-textdecoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", - "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.2.tgz", + "integrity": "sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6778,12 +7167,12 @@ } }, "node_modules/@polkadot/types-known/node_modules/@polkadot/x-textencoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", - "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.2.tgz", + "integrity": "sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6791,12 +7180,12 @@ } }, "node_modules/@polkadot/types-support": { - "version": "10.11.1", - "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-10.11.1.tgz", - "integrity": "sha512-eCvWjdpELsHvXiTq201DdbIeOIaEr53zTD7HqC2wR/Z1bkQuw79Z+CyIU4sp79GL1vZ1PxS7vUH9M3FKNaTl1Q==", + "version": "10.11.2", + "resolved": "https://registry.npmjs.org/@polkadot/types-support/-/types-support-10.11.2.tgz", + "integrity": "sha512-X11hoykFYv/3efg4coZy2hUOUc97JhjQMJLzDhHniFwGLlYU8MeLnPdCVGkXx0xDDjTo4/ptS1XpZ5HYcg+gRw==", "peer": true, "dependencies": { - "@polkadot/util": "^12.6.1", + "@polkadot/util": "^12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6804,15 +7193,15 @@ } }, "node_modules/@polkadot/types-support/node_modules/@polkadot/util": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", - "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.2.tgz", + "integrity": "sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==", "peer": true, "dependencies": { - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-global": "12.6.1", - "@polkadot/x-textdecoder": "12.6.1", - "@polkadot/x-textencoder": "12.6.1", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-global": "12.6.2", + "@polkadot/x-textdecoder": "12.6.2", + "@polkadot/x-textencoder": "12.6.2", "@types/bn.js": "^5.1.5", "bn.js": "^5.2.1", "tslib": "^2.6.2" @@ -6822,9 +7211,9 @@ } }, "node_modules/@polkadot/types-support/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -6834,12 +7223,12 @@ } }, "node_modules/@polkadot/types-support/node_modules/@polkadot/x-textdecoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", - "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.2.tgz", + "integrity": "sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6847,12 +7236,12 @@ } }, "node_modules/@polkadot/types-support/node_modules/@polkadot/x-textencoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", - "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.2.tgz", + "integrity": "sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -6860,27 +7249,27 @@ } }, "node_modules/@polkadot/types/node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.3.0.tgz", + "integrity": "sha512-t01iSXPuN+Eqzb4eBX0S5oubSqXbK/xXa1Ne18Hj8f9pStxztHCE2gfboSp/dZRLSqfuLpRK2nDXDK+W9puocA==", "peer": true, "dependencies": { - "@noble/hashes": "1.3.2" + "@noble/hashes": "1.3.3" }, "funding": { "url": "https://paulmillr.com/funding/" } }, "node_modules/@polkadot/types/node_modules/@polkadot/util": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.1.tgz", - "integrity": "sha512-10ra3VfXtK8ZSnWI7zjhvRrhupg3rd4iFC3zCaXmRpOU+AmfIoCFVEmuUuC66gyXiz2/g6k5E6j0lWQCOProSQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util/-/util-12.6.2.tgz", + "integrity": "sha512-l8TubR7CLEY47240uki0TQzFvtnxFIO7uI/0GoWzpYD/O62EIAMRsuY01N4DuwgKq2ZWD59WhzsLYmA5K6ksdw==", "peer": true, "dependencies": { - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-global": "12.6.1", - "@polkadot/x-textdecoder": "12.6.1", - "@polkadot/x-textencoder": "12.6.1", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-global": "12.6.2", + "@polkadot/x-textdecoder": "12.6.2", + "@polkadot/x-textencoder": "12.6.2", "@types/bn.js": "^5.1.5", "bn.js": "^5.2.1", "tslib": "^2.6.2" @@ -6890,36 +7279,36 @@ } }, "node_modules/@polkadot/types/node_modules/@polkadot/util-crypto": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-12.6.1.tgz", - "integrity": "sha512-2ezWFLmdgeDXqB9NAUdgpp3s2rQztNrZLY+y0SJYNOG4ch+PyodTW/qSksnOrVGVdRhZ5OESRE9xvo9LYV5UAw==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/util-crypto/-/util-crypto-12.6.2.tgz", + "integrity": "sha512-FEWI/dJ7wDMNN1WOzZAjQoIcCP/3vz3wvAp5QQm+lOrzOLj0iDmaIGIcBkz8HVm3ErfSe/uKP0KS4jgV/ib+Mg==", "peer": true, "dependencies": { - "@noble/curves": "^1.2.0", - "@noble/hashes": "^1.3.2", - "@polkadot/networks": "12.6.1", - "@polkadot/util": "12.6.1", - "@polkadot/wasm-crypto": "^7.3.1", - "@polkadot/wasm-util": "^7.3.1", - "@polkadot/x-bigint": "12.6.1", - "@polkadot/x-randomvalues": "12.6.1", - "@scure/base": "^1.1.3", + "@noble/curves": "^1.3.0", + "@noble/hashes": "^1.3.3", + "@polkadot/networks": "12.6.2", + "@polkadot/util": "12.6.2", + "@polkadot/wasm-crypto": "^7.3.2", + "@polkadot/wasm-util": "^7.3.2", + "@polkadot/x-bigint": "12.6.2", + "@polkadot/x-randomvalues": "12.6.2", + "@scure/base": "^1.1.5", "tslib": "^2.6.2" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@polkadot/util": "12.6.1" + "@polkadot/util": "12.6.2" } }, "node_modules/@polkadot/types/node_modules/@polkadot/wasm-bridge": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-7.3.1.tgz", - "integrity": "sha512-wPtDkGaOQx5BUIYP+kJv5aV3BnCQ+HXr36khGKYrRQAMBrG+ybCNPOTVXDQnSbraPQRSw7fSIJmiQpEmFsIz0w==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-bridge/-/wasm-bridge-7.3.2.tgz", + "integrity": "sha512-AJEXChcf/nKXd5Q/YLEV5dXQMle3UNT7jcXYmIffZAo/KI394a+/24PaISyQjoNC0fkzS1Q8T5pnGGHmXiVz2g==", "peer": true, "dependencies": { - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -6931,16 +7320,16 @@ } }, "node_modules/@polkadot/types/node_modules/@polkadot/wasm-crypto": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-7.3.1.tgz", - "integrity": "sha512-BSK0YyCN4ohjtwbiHG71fgf+7ufgfLrHxjn7pKsvXhyeiEVuDhbDreNcpUf3eGOJ5tNk75aSbKGF4a3EJGIiNA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto/-/wasm-crypto-7.3.2.tgz", + "integrity": "sha512-+neIDLSJ6jjVXsjyZ5oLSv16oIpwp+PxFqTUaZdZDoA2EyFRQB8pP7+qLsMNk+WJuhuJ4qXil/7XiOnZYZ+wxw==", "peer": true, "dependencies": { - "@polkadot/wasm-bridge": "7.3.1", - "@polkadot/wasm-crypto-asmjs": "7.3.1", - "@polkadot/wasm-crypto-init": "7.3.1", - "@polkadot/wasm-crypto-wasm": "7.3.1", - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-bridge": "7.3.2", + "@polkadot/wasm-crypto-asmjs": "7.3.2", + "@polkadot/wasm-crypto-init": "7.3.2", + "@polkadot/wasm-crypto-wasm": "7.3.2", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -6952,9 +7341,9 @@ } }, "node_modules/@polkadot/types/node_modules/@polkadot/wasm-crypto-asmjs": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.3.1.tgz", - "integrity": "sha512-pTUOCIP0nUc4tjzdG1vtEBztKEWde4DBEZm7NaxBLvwNUxsbYhLKYvuhASEyEIz0ZyE4rOBWEmRF4Buic8oO+g==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-asmjs/-/wasm-crypto-asmjs-7.3.2.tgz", + "integrity": "sha512-QP5eiUqUFur/2UoF2KKKYJcesc71fXhQFLT3D4ZjG28Mfk2ZPI0QNRUfpcxVQmIUpV5USHg4geCBNuCYsMm20Q==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -6967,15 +7356,15 @@ } }, "node_modules/@polkadot/types/node_modules/@polkadot/wasm-crypto-init": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.3.1.tgz", - "integrity": "sha512-Fx15ItLcxCe7uJCWZVXhFbsrXqHUKAp9KGYQFKBRK7r1C2va4Y7qnirjwkxoMHQcunusLe2KdbrD+YJuzh4wlA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-init/-/wasm-crypto-init-7.3.2.tgz", + "integrity": "sha512-FPq73zGmvZtnuJaFV44brze3Lkrki3b4PebxCy9Fplw8nTmisKo9Xxtfew08r0njyYh+uiJRAxPCXadkC9sc8g==", "peer": true, "dependencies": { - "@polkadot/wasm-bridge": "7.3.1", - "@polkadot/wasm-crypto-asmjs": "7.3.1", - "@polkadot/wasm-crypto-wasm": "7.3.1", - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-bridge": "7.3.2", + "@polkadot/wasm-crypto-asmjs": "7.3.2", + "@polkadot/wasm-crypto-wasm": "7.3.2", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -6987,12 +7376,12 @@ } }, "node_modules/@polkadot/types/node_modules/@polkadot/wasm-crypto-wasm": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.3.1.tgz", - "integrity": "sha512-hBMRwrBLCfVsFHSdnwwIxEPshoZdW/dHehYRxMSpUdmqOxtD1gnjocXGE1KZUYGX675+EFuR+Ch6OoTKFJxwTA==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-crypto-wasm/-/wasm-crypto-wasm-7.3.2.tgz", + "integrity": "sha512-15wd0EMv9IXs5Abp1ZKpKKAVyZPhATIAHfKsyoWCEFDLSOA0/K0QGOxzrAlsrdUkiKZOq7uzSIgIDgW8okx2Mw==", "peer": true, "dependencies": { - "@polkadot/wasm-util": "7.3.1", + "@polkadot/wasm-util": "7.3.2", "tslib": "^2.6.2" }, "engines": { @@ -7003,9 +7392,9 @@ } }, "node_modules/@polkadot/types/node_modules/@polkadot/wasm-util": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-7.3.1.tgz", - "integrity": "sha512-0m6ozYwBrJgnGl6QvS37ZiGRu4FFPPEtMYEVssfo1Tz4skHJlByWaHWhRNoNCVFAKiGEBu+rfx5HAQMAhoPkvg==", + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/@polkadot/wasm-util/-/wasm-util-7.3.2.tgz", + "integrity": "sha512-bmD+Dxo1lTZyZNxbyPE380wd82QsX+43mgCm40boyKrRppXEyQmWT98v/Poc7chLuskYb6X8IQ6lvvK2bGR4Tg==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -7018,9 +7407,9 @@ } }, "node_modules/@polkadot/types/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -7030,29 +7419,29 @@ } }, "node_modules/@polkadot/types/node_modules/@polkadot/x-randomvalues": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-12.6.1.tgz", - "integrity": "sha512-1uVKlfYYbgIgGV5v1Dgn960cGovenWm5pmg+aTMeUGXVYiJwRD2zOpLyC1i/tP454iA74j74pmWb8Nkn0tJZUQ==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-randomvalues/-/x-randomvalues-12.6.2.tgz", + "integrity": "sha512-Vr8uG7rH2IcNJwtyf5ebdODMcr0XjoCpUbI91Zv6AlKVYOGKZlKLYJHIwpTaKKB+7KPWyQrk4Mlym/rS7v9feg==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { "node": ">=18" }, "peerDependencies": { - "@polkadot/util": "12.6.1", + "@polkadot/util": "12.6.2", "@polkadot/wasm-util": "*" } }, "node_modules/@polkadot/types/node_modules/@polkadot/x-textdecoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.1.tgz", - "integrity": "sha512-IasodJeV1f2Nr/VtA207+LXCQEqYcG8y9qB/EQcRsrEP58NbwwxM5Z2obV0lSjJOxRTJ4/OlhUwnLHwcbIp6+g==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textdecoder/-/x-textdecoder-12.6.2.tgz", + "integrity": "sha512-M1Bir7tYvNappfpFWXOJcnxUhBUFWkUFIdJSyH0zs5LmFtFdbKAeiDXxSp2Swp5ddOZdZgPac294/o2TnQKN1w==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -7060,12 +7449,12 @@ } }, "node_modules/@polkadot/types/node_modules/@polkadot/x-textencoder": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.1.tgz", - "integrity": "sha512-sTq/+tXqBhGe01a1rjieSHFh3y935vuRgtahVgVJZnfqh5SmLPgSN5tTPxZWzyx7gHIfotle8laTJbJarv7V1A==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-textencoder/-/x-textencoder-12.6.2.tgz", + "integrity": "sha512-4N+3UVCpI489tUJ6cv3uf0PjOHvgGp9Dl+SZRLgFGt9mvxnvpW/7+XBADRMtlG4xi5gaRK7bgl5bmY6OMDsNdw==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -7269,12 +7658,12 @@ } }, "node_modules/@polkadot/x-bigint": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-12.6.1.tgz", - "integrity": "sha512-YlABeVIlgYQZJ4ZpW/+akFGGxw5jMGt4g5vaP7EumlORGneJHzzWJYDmI5v2y7j1zvC9ofOle7z4tRmtN/QDew==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-bigint/-/x-bigint-12.6.2.tgz", + "integrity": "sha512-HSIk60uFPX4GOFZSnIF7VYJz7WZA7tpFJsne7SzxOooRwMTWEtw3fUpFy5cYYOeLh17/kHH1Y7SVcuxzVLc74Q==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2" }, "engines": { @@ -7282,9 +7671,9 @@ } }, "node_modules/@polkadot/x-bigint/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -7294,12 +7683,12 @@ } }, "node_modules/@polkadot/x-fetch": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-12.6.1.tgz", - "integrity": "sha512-iyBv0ecfCsqGSv26CPJk9vSoKtry/Fn7x549ysA4hlc9KboraMHxOHTpcNZYC/OdgvbFZl40zIXCY0SA1ai8aw==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-fetch/-/x-fetch-12.6.2.tgz", + "integrity": "sha512-8wM/Z9JJPWN1pzSpU7XxTI1ldj/AfC8hKioBlUahZ8gUiJaOF7K9XEFCrCDLis/A1BoOu7Ne6WMx/vsJJIbDWw==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "node-fetch": "^3.3.2", "tslib": "^2.6.2" }, @@ -7308,9 +7697,9 @@ } }, "node_modules/@polkadot/x-fetch/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -7367,23 +7756,23 @@ } }, "node_modules/@polkadot/x-ws": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-12.6.1.tgz", - "integrity": "sha512-fs9V+XekjJLpVLLwxnqq3llqSZu2T/b9brvld8anvzS/htDLPbi7+c5W3VGJ9Po8fS67IsU3HCt0Gu6F6mGrMA==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-ws/-/x-ws-12.6.2.tgz", + "integrity": "sha512-cGZWo7K5eRRQCRl2LrcyCYsrc3lRbTlixZh3AzgU8uX4wASVGRlNWi/Hf4TtHNe1ExCDmxabJzdIsABIfrr7xw==", "peer": true, "dependencies": { - "@polkadot/x-global": "12.6.1", + "@polkadot/x-global": "12.6.2", "tslib": "^2.6.2", - "ws": "^8.14.2" + "ws": "^8.15.1" }, "engines": { "node": ">=18" } }, "node_modules/@polkadot/x-ws/node_modules/@polkadot/x-global": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.1.tgz", - "integrity": "sha512-w5t19HIdBPuyu7X/AiCyH2DsKqxBF0KpF4Ymolnx8PfcSIgnq9ZOmgs74McPR6FgEmeEkr9uNKujZrsfURi1ug==", + "version": "12.6.2", + "resolved": "https://registry.npmjs.org/@polkadot/x-global/-/x-global-12.6.2.tgz", + "integrity": "sha512-a8d6m+PW98jmsYDtAWp88qS4dl8DyqUBsd0S+WgyfSMtpEXu6v9nXDgPZgwF5xdDvXhm+P0ZfVkVTnIGrScb5g==", "peer": true, "dependencies": { "tslib": "^2.6.2" @@ -7540,9 +7929,9 @@ "hasInstallScript": true }, "node_modules/@scure/base": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.3.tgz", - "integrity": "sha512-/+SgoRjLq7Xlf0CWuLHq2LUZeL/w65kfzAPG5NH9pcmBhs+nunQTn4gvdwgMTIXnt9b2C/1SeL2XiysZEyIC9Q==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.5.tgz", + "integrity": "sha512-Brj9FiG2W1MRQSTB212YVPRrcbjkv48FoZi/u4l/zds/ieRrqsh7aUf6CLwkAq61oKXr/ZlTzlY66gLIj3TFTQ==", "funding": { "url": "https://paulmillr.com/funding/" } @@ -8845,9 +9234,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.7", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", - "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", "dev": true, "dependencies": { "@babel/types": "^7.0.0" @@ -8941,9 +9330,9 @@ } }, "node_modules/@types/eslint": { - "version": "8.44.7", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.7.tgz", - "integrity": "sha512-f5ORu2hcBbKei97U73mf+l9t4zTGl74IqZ0GQk4oVea/VS8tQZYkUveSYojk+frraAVYId0V2WC9O4PTNru2FQ==", + "version": "8.44.9", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.9.tgz", + "integrity": "sha512-6yBxcvwnnYoYT1Uk2d+jvIfsuP4mb2EdIxFnrPABj5a/838qe5bGkNLFOiipX4ULQ7XVQvTxOh7jO+BTAiqsEw==", "dev": true, "dependencies": { "@types/estree": "*", @@ -9071,9 +9460,9 @@ } }, "node_modules/@types/jest": { - "version": "29.5.10", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.10.tgz", - "integrity": "sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==", + "version": "29.5.11", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz", + "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==", "dev": true, "dependencies": { "expect": "^29.0.0", @@ -9138,9 +9527,9 @@ } }, "node_modules/@types/node": { - "version": "18.18.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.18.13.tgz", - "integrity": "sha512-vXYZGRrSCreZmq1rEjMRLXJhiy8MrIeVasx+PCVlP414N7CJLHnMf+juVvjdprHyH+XRy3zKZLHeNueOpJCn0g==", + "version": "18.19.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.3.tgz", + "integrity": "sha512-k5fggr14DwAytoA/t8rPrIz++lXK7/DqckthCmoZOKNsEbJkId4Z//BqgApXBUGrGddrigYa1oqheo/7YmW4rg==", "dependencies": { "undici-types": "~5.26.4" } @@ -9297,16 +9686,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.12.0.tgz", - "integrity": "sha512-XOpZ3IyJUIV1b15M7HVOpgQxPPF7lGXgsfcEIu3yDxFPaf/xZKt7s9QO/pbk7vpWQyVulpJbu4E5LwpZiQo4kA==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.14.0.tgz", + "integrity": "sha512-1ZJBykBCXaSHG94vMMKmiHoL0MhNHKSVlcHVYZNw+BKxufhqQVTOawNpwwI1P5nIFZ/4jLVop0mcY6mJJDFNaw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.12.0", - "@typescript-eslint/type-utils": "6.12.0", - "@typescript-eslint/utils": "6.12.0", - "@typescript-eslint/visitor-keys": "6.12.0", + "@typescript-eslint/scope-manager": "6.14.0", + "@typescript-eslint/type-utils": "6.14.0", + "@typescript-eslint/utils": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -9365,15 +9754,15 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.12.0.tgz", - "integrity": "sha512-s8/jNFPKPNRmXEnNXfuo1gemBdVmpQsK1pcu+QIvuNJuhFzGrpD7WjOcvDc/+uEdfzSYpNu7U/+MmbScjoQ6vg==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.14.0.tgz", + "integrity": "sha512-QjToC14CKacd4Pa7JK4GeB/vHmWFJckec49FR4hmIRf97+KXole0T97xxu9IFiPxVQ1DBWrQ5wreLwAGwWAVQA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.12.0", - "@typescript-eslint/types": "6.12.0", - "@typescript-eslint/typescript-estree": "6.12.0", - "@typescript-eslint/visitor-keys": "6.12.0", + "@typescript-eslint/scope-manager": "6.14.0", + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/typescript-estree": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0", "debug": "^4.3.4" }, "engines": { @@ -9393,13 +9782,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.12.0.tgz", - "integrity": "sha512-5gUvjg+XdSj8pcetdL9eXJzQNTl3RD7LgUiYTl8Aabdi8hFkaGSYnaS6BLc0BGNaDH+tVzVwmKtWvu0jLgWVbw==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.14.0.tgz", + "integrity": "sha512-VT7CFWHbZipPncAZtuALr9y3EuzY1b1t1AEkIq2bTXUPKw+pHoXflGNG5L+Gv6nKul1cz1VH8fz16IThIU0tdg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.12.0", - "@typescript-eslint/visitor-keys": "6.12.0" + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -9410,13 +9799,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.12.0.tgz", - "integrity": "sha512-WWmRXxhm1X8Wlquj+MhsAG4dU/Blvf1xDgGaYCzfvStP2NwPQh6KBvCDbiOEvaE0filhranjIlK/2fSTVwtBng==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.14.0.tgz", + "integrity": "sha512-x6OC9Q7HfYKqjnuNu5a7kffIYs3No30isapRBJl1iCHLitD8O0lFbRcVGiOcuyN837fqXzPZ1NS10maQzZMKqw==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.12.0", - "@typescript-eslint/utils": "6.12.0", + "@typescript-eslint/typescript-estree": "6.14.0", + "@typescript-eslint/utils": "6.14.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -9437,9 +9826,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.12.0.tgz", - "integrity": "sha512-MA16p/+WxM5JG/F3RTpRIcuOghWO30//VEOvzubM8zuOOBYXsP+IfjoCXXiIfy2Ta8FRh9+IO9QLlaFQUU+10Q==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.14.0.tgz", + "integrity": "sha512-uty9H2K4Xs8E47z3SnXEPRNDfsis8JO27amp2GNCnzGETEW3yTqEIVg5+AI7U276oGF/tw6ZA+UesxeQ104ceA==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -9450,13 +9839,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.12.0.tgz", - "integrity": "sha512-vw9E2P9+3UUWzhgjyyVczLWxZ3GuQNT7QpnIY3o5OMeLO/c8oHljGc8ZpryBMIyympiAAaKgw9e5Hl9dCWFOYw==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.14.0.tgz", + "integrity": "sha512-yPkaLwK0yH2mZKFE/bXkPAkkFgOv15GJAUzgUVonAbv0Hr4PK/N2yaA/4XQbTZQdygiDkpt5DkxPELqHguNvyw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.12.0", - "@typescript-eslint/visitor-keys": "6.12.0", + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/visitor-keys": "6.14.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -9510,17 +9899,17 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.12.0.tgz", - "integrity": "sha512-LywPm8h3tGEbgfyjYnu3dauZ0U7R60m+miXgKcZS8c7QALO9uWJdvNoP+duKTk2XMWc7/Q3d/QiCuLN9X6SWyQ==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.14.0.tgz", + "integrity": "sha512-XwRTnbvRr7Ey9a1NT6jqdKX8y/atWG+8fAIu3z73HSP8h06i3r/ClMhmaF/RGWGW1tHJEwij1uEg2GbEmPYvYg==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.12.0", - "@typescript-eslint/types": "6.12.0", - "@typescript-eslint/typescript-estree": "6.12.0", + "@typescript-eslint/scope-manager": "6.14.0", + "@typescript-eslint/types": "6.14.0", + "@typescript-eslint/typescript-estree": "6.14.0", "semver": "^7.5.4" }, "engines": { @@ -9568,12 +9957,12 @@ "dev": true }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.12.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.12.0.tgz", - "integrity": "sha512-rg3BizTZHF1k3ipn8gfrzDXXSFKyOEB5zxYXInQ6z0hUvmQlhaZQzK+YmHmNViMA9HzW5Q9+bPPt90bU6GQwyw==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.14.0.tgz", + "integrity": "sha512-fB5cw6GRhJUz03MrROVuj5Zm/Q+XWlVdIsFj+Zb1Hvqouc8t+XP2H5y53QYU/MGtd2dPg6/vJJlhoX3xc2ehfw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.12.0", + "@typescript-eslint/types": "6.14.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -9892,7 +10281,6 @@ "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", "integrity": "sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==", "dev": true, - "optional": true, "dependencies": { "buffer": "^6.0.3", "catering": "^2.0.0", @@ -9924,7 +10312,6 @@ "url": "https://feross.org/support" } ], - "optional": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -9964,9 +10351,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.0.tgz", - "integrity": "sha512-FS7hV565M5l1R08MXqo8odwMTB02C2UqzB17RVgu9EyuYFBqJZ3/ZY97sQD5FewVu1UyDFc1yztUDrAwT0EypA==", + "version": "8.3.1", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.1.tgz", + "integrity": "sha512-TgUZgYvqZprrl7YldZNoa9OciCAyZR+Ejm9eXzKCmjsF5IKp/wgQ7Z/ZpjpGTIUPwrHQIcYeI8qDh4PsEwxMbw==", "dev": true, "engines": { "node": ">=0.4.0" @@ -10923,12 +11310,12 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", - "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.7.tgz", + "integrity": "sha512-LidDk/tEGDfuHW2DWh/Hgo4rmnw3cduK6ZkOI1NPFceSK3n/yAGeOsNT7FLnSGHkXj3RHGSEVkN3FsCTY6w2CQ==", "dependencies": { "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.4.3", + "@babel/helper-define-polyfill-provider": "^0.4.4", "semver": "^6.3.1" }, "peerDependencies": { @@ -10944,11 +11331,11 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.8.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", - "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.7.tgz", + "integrity": "sha512-KyDvZYxAzkC0Aj2dAPyDzi2Ym15e5JKZSK+maI7NAwSqofvuFglbSsxE7wUOvTg9oFVnHMzVzBKcqEb4PJgtOA==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3", + "@babel/helper-define-polyfill-provider": "^0.4.4", "core-js-compat": "^3.33.1" }, "peerDependencies": { @@ -10956,11 +11343,11 @@ } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", - "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.4.tgz", + "integrity": "sha512-S/x2iOCvDaCASLYsOOgWOq4bCfKYVqvO/uxjkaYyZ3rVsVE3CeAI/c84NpyuBBymEgNvHgjEot3a9/Z/kXvqsg==", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.4.3" + "@babel/helper-define-polyfill-provider": "^0.4.4" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -11236,9 +11623,9 @@ } }, "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "funding": [ { "type": "opencollective", @@ -11254,9 +11641,9 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", + "caniuse-lite": "^1.0.30001565", + "electron-to-chromium": "^1.4.601", + "node-releases": "^2.0.14", "update-browserslist-db": "^1.0.13" }, "bin": { @@ -11395,7 +11782,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", - "dev": true, "dependencies": { "semver": "^7.0.0" } @@ -11512,9 +11898,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001565", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz", - "integrity": "sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==", + "version": "1.0.30001570", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001570.tgz", + "integrity": "sha512-+3e0ASu4sw1SWaoCtvPeyXp+5PsjigkSt8OXZbF9StH5pQWbxEjLAZE3n8Aup5udop1uRiKA7a4utUk/uoSpUw==", "funding": [ { "type": "opencollective", @@ -11540,7 +11926,6 @@ "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", "dev": true, - "optional": true, "engines": { "node": ">=6" } @@ -11727,7 +12112,6 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "dev": true, "funding": [ { "type": "github", @@ -11810,21 +12194,22 @@ } }, "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dependencies": { "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" } }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, "engines": { "node": ">=0.8" } @@ -11912,7 +12297,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", - "dev": true, "dependencies": { "strip-ansi": "^6.0.1", "wcwidth": "^1.0.0" @@ -12188,11 +12572,11 @@ "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" }, "node_modules/core-js-compat": { - "version": "3.33.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz", - "integrity": "sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==", + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.34.0.tgz", + "integrity": "sha512-4ZIyeNbW/Cn1wkMMDy+mvrRUxrwFNjKwbhCfQpDd+eLgYipDqp8oGFGtLmhh18EDPKA0g3VUBYOxQGGwvWLVpA==", "dependencies": { - "browserslist": "^4.22.1" + "browserslist": "^4.22.2" }, "funding": { "type": "opencollective", @@ -12697,7 +13081,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, "dependencies": { "clone": "^1.0.2" }, @@ -13053,9 +13436,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.594", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.594.tgz", - "integrity": "sha512-xT1HVAu5xFn7bDfkjGQi9dNpMqGchUkebwf1GL7cZN32NSwwlHRPMSDJ1KN6HkS0bWUtndbSQZqvpQftKG2uFQ==" + "version": "1.4.614", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.614.tgz", + "integrity": "sha512-X4ze/9Sc3QWs6h92yerwqv7aB/uU8vCjZcrMjA8N9R1pjMFRe44dLsck5FzLilOYvcXuDn93B+bpGYyufc70gQ==" }, "node_modules/elliptic": { "version": "6.5.4", @@ -13371,9 +13754,9 @@ } }, "node_modules/esbuild": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.8.tgz", - "integrity": "sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==", + "version": "0.19.9", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.9.tgz", + "integrity": "sha512-U9CHtKSy+EpPsEBa+/A2gMs/h3ylBC0H0KSqIg7tpztHerLi6nrrcoUJAkNCEPumx8yJ+Byic4BVwHgRbN0TBg==", "hasInstallScript": true, "bin": { "esbuild": "bin/esbuild" @@ -13382,28 +13765,28 @@ "node": ">=12" }, "optionalDependencies": { - "@esbuild/android-arm": "0.19.8", - "@esbuild/android-arm64": "0.19.8", - "@esbuild/android-x64": "0.19.8", - "@esbuild/darwin-arm64": "0.19.8", - "@esbuild/darwin-x64": "0.19.8", - "@esbuild/freebsd-arm64": "0.19.8", - "@esbuild/freebsd-x64": "0.19.8", - "@esbuild/linux-arm": "0.19.8", - "@esbuild/linux-arm64": "0.19.8", - "@esbuild/linux-ia32": "0.19.8", - "@esbuild/linux-loong64": "0.19.8", - "@esbuild/linux-mips64el": "0.19.8", - "@esbuild/linux-ppc64": "0.19.8", - "@esbuild/linux-riscv64": "0.19.8", - "@esbuild/linux-s390x": "0.19.8", - "@esbuild/linux-x64": "0.19.8", - "@esbuild/netbsd-x64": "0.19.8", - "@esbuild/openbsd-x64": "0.19.8", - "@esbuild/sunos-x64": "0.19.8", - "@esbuild/win32-arm64": "0.19.8", - "@esbuild/win32-ia32": "0.19.8", - "@esbuild/win32-x64": "0.19.8" + "@esbuild/android-arm": "0.19.9", + "@esbuild/android-arm64": "0.19.9", + "@esbuild/android-x64": "0.19.9", + "@esbuild/darwin-arm64": "0.19.9", + "@esbuild/darwin-x64": "0.19.9", + "@esbuild/freebsd-arm64": "0.19.9", + "@esbuild/freebsd-x64": "0.19.9", + "@esbuild/linux-arm": "0.19.9", + "@esbuild/linux-arm64": "0.19.9", + "@esbuild/linux-ia32": "0.19.9", + "@esbuild/linux-loong64": "0.19.9", + "@esbuild/linux-mips64el": "0.19.9", + "@esbuild/linux-ppc64": "0.19.9", + "@esbuild/linux-riscv64": "0.19.9", + "@esbuild/linux-s390x": "0.19.9", + "@esbuild/linux-x64": "0.19.9", + "@esbuild/netbsd-x64": "0.19.9", + "@esbuild/openbsd-x64": "0.19.9", + "@esbuild/sunos-x64": "0.19.9", + "@esbuild/win32-arm64": "0.19.9", + "@esbuild/win32-ia32": "0.19.9", + "@esbuild/win32-x64": "0.19.9" } }, "node_modules/esbuild-plugin-polyfill-node": { @@ -13444,16 +13827,16 @@ } }, "node_modules/eslint": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.54.0.tgz", - "integrity": "sha512-NY0DfAkM8BIZDVl6PgSa1ttZbx3xHgJzSNJKYcQglem6CppHyMhRIQkBVSSMaSRnLhig3jsDbEzOjwCVt4AmmA==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", + "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", "dev": true, "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.3", - "@eslint/js": "8.54.0", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.56.0", "@humanwhocodes/config-array": "^0.11.13", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", @@ -13543,9 +13926,9 @@ } }, "node_modules/eslint-config-prettier": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.0.0.tgz", - "integrity": "sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", "dev": true, "bin": { "eslint-config-prettier": "bin/cli.js" @@ -13601,9 +13984,9 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.29.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", - "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", "dev": true, "dependencies": { "array-includes": "^3.1.7", @@ -13622,7 +14005,7 @@ "object.groupby": "^1.0.1", "object.values": "^1.1.7", "semver": "^6.3.1", - "tsconfig-paths": "^3.14.2" + "tsconfig-paths": "^3.15.0" }, "engines": { "node": ">=4" @@ -13683,9 +14066,9 @@ } }, "node_modules/eslint-plugin-import/node_modules/tsconfig-paths": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", - "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "dependencies": { "@types/json5": "^0.0.29", @@ -13857,9 +14240,9 @@ } }, "node_modules/eslint/node_modules/@eslint/js": { - "version": "8.54.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.54.0.tgz", - "integrity": "sha512-ut5V+D+fOoWPgGGNj83GGjnntO39xDy6DWxO0wb7Jp3DcMX0TfIqdzHF85VTQkerdyGmuuMD9AKAo5KiNlf/AQ==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", + "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", "dev": true, "peer": true, "engines": { @@ -14994,9 +15377,9 @@ } }, "node_modules/fast-check": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.14.0.tgz", - "integrity": "sha512-9Z0zqASzDNjXBox/ileV/fd+4P+V/f3o4shM6QawvcdLFh8yjPG4h5BrHUZ8yzY6amKGDTAmRMyb/JZqe+dCgw==", + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/fast-check/-/fast-check-3.15.0.tgz", + "integrity": "sha512-iBz6c+EXL6+nI931x/sbZs1JYTZtLG6Cko0ouS8LRTikhDR7+wZk4TYzdRavlnByBs2G6+nuuJ7NYL9QplNt8Q==", "dev": true, "funding": [ { @@ -15463,9 +15846,9 @@ "dev": true }, "node_modules/fs-extra": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", - "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -19582,9 +19965,9 @@ } }, "node_modules/globals": { - "version": "13.23.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", - "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", "dev": true, "dependencies": { "type-fest": "^0.20.2" @@ -19965,7 +20348,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", - "dev": true, "dependencies": { "lru-cache": "^10.0.1" }, @@ -19977,7 +20359,6 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", - "dev": true, "engines": { "node": "14 || >=16.14" } @@ -20216,7 +20597,6 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, "engines": { "node": ">=0.8.19" } @@ -20238,8 +20618,7 @@ "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "node_modules/internal-slot": { "version": "1.0.6", @@ -20281,9 +20660,9 @@ } }, "node_modules/io-ts": { - "version": "2.2.20", - "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-2.2.20.tgz", - "integrity": "sha512-Rq2BsYmtwS5vVttie4rqrOCIfHCS9TgpRLFpKQCM1wZBBRY9nWVGmEvm2FnDbSE2un1UE39DvFpTR5UL47YDcA==", + "version": "2.2.21", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-2.2.21.tgz", + "integrity": "sha512-zz2Z69v9ZIC3mMLYWIeoUcwWD6f+O7yP92FMVVaXEOSZH1jnVBmET/urd/uoarD1WGBY4rCj8TAyMPzsGNzMFQ==", "dev": true, "peerDependencies": { "fp-ts": "^2.5.0" @@ -20419,7 +20798,6 @@ "url": "https://feross.org/support" } ], - "optional": true, "engines": { "node": ">=4" } @@ -21733,8 +22111,7 @@ "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/json-pointer": { "version": "0.6.2", @@ -21945,11 +22322,6 @@ "node": ">=10.0.0" } }, - "node_modules/keccak/node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -22038,7 +22410,6 @@ "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz", "integrity": "sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ==", "dev": true, - "optional": true, "dependencies": { "catering": "^2.1.0" }, @@ -22146,7 +22517,6 @@ "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz", "integrity": "sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA==", "dev": true, - "optional": true, "engines": { "node": ">=10" } @@ -22213,7 +22583,6 @@ "integrity": "sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ==", "dev": true, "hasInstallScript": true, - "optional": true, "dependencies": { "abstract-leveldown": "~6.2.1", "napi-macros": "~2.0.0", @@ -22228,7 +22597,6 @@ "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", "dev": true, - "optional": true, "dependencies": { "buffer": "^5.5.0", "immediate": "^3.2.3", @@ -22245,7 +22613,6 @@ "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", "dev": true, - "optional": true, "engines": { "node": ">=6" } @@ -22255,7 +22622,6 @@ "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", "dev": true, - "optional": true, "dependencies": { "xtend": "^4.0.2" }, @@ -22268,7 +22634,6 @@ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.1.1.tgz", "integrity": "sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ==", "dev": true, - "optional": true, "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -23055,6 +23420,17 @@ "node": ">=6" } }, + "node_modules/mocha/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/mocha/node_modules/debug": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", @@ -23364,8 +23740,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", - "dev": true, - "optional": true + "dev": true }, "node_modules/natural-compare": { "version": "1.4.0", @@ -23410,6 +23785,13 @@ "node-gyp-build": "^4.2.2" } }, + "node_modules/nice-napi/node_modules/node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true, + "optional": true + }, "node_modules/no-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", @@ -23421,9 +23803,9 @@ } }, "node_modules/nock": { - "version": "13.3.8", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.3.8.tgz", - "integrity": "sha512-96yVFal0c/W1lG7mmfRe7eO+hovrhJYd2obzzOZ90f6fjpeU/XNvd9cYHZKZAQJumDfhXgoTpkpJ9pvMj+hqHw==", + "version": "13.4.0", + "resolved": "https://registry.npmjs.org/nock/-/nock-13.4.0.tgz", + "integrity": "sha512-W8NVHjO/LCTNA64yxAPHV/K47LpGYcVzgKd3Q0n6owhwvD0Dgoterc25R4rnZbckJEb6Loxz1f5QMuJpJnbSyQ==", "dependencies": { "debug": "^4.1.0", "json-stringify-safe": "^5.0.1", @@ -23434,9 +23816,9 @@ } }, "node_modules/node-abi": { - "version": "3.51.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.51.0.tgz", - "integrity": "sha512-SQkEP4hmNWjlniS5zdnfIXTk1x7Ome85RDzHlTbBtzE97Gfwz/Ipw4v/Ryk20DWIy3yCNVLVlGKApCnmvYoJbA==", + "version": "3.52.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.52.0.tgz", + "integrity": "sha512-JJ98b02z16ILv7859irtXn4oUaFWADtvkzy2c0IAatNVX2Mc9Yoh8z6hZInn3QwvMEYhHuQloYi+TTQy67SIdQ==", "dev": true, "dependencies": { "semver": "^7.3.5" @@ -23453,11 +23835,9 @@ "optional": true }, "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "optional": true + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" }, "node_modules/node-domexception": { "version": "1.0.0", @@ -23529,9 +23909,9 @@ "dev": true }, "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==" + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, "node_modules/nofilter": { "version": "1.0.4", @@ -23546,7 +23926,6 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -23557,14 +23936,12 @@ "node_modules/normalize-package-data/node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" }, "node_modules/normalize-package-data/node_modules/semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, "bin": { "semver": "bin/semver" } @@ -23590,9 +23967,9 @@ } }, "node_modules/npm": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/npm/-/npm-10.2.4.tgz", - "integrity": "sha512-umEuYneVEYO9KoEEI8n2sSGmNQeqco/3BSeacRlqIkCzw4E7XGtYSWMeJobxzr6hZ2n9cM+u5TsMTcC5bAgoWA==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/npm/-/npm-10.2.5.tgz", + "integrity": "sha512-lXdZ7titEN8CH5YJk9C/aYRU9JeDxQ4d8rwIIDsvH3SMjLjHTukB2CFstMiB30zXs4vCrPN2WH6cDq1yHBeJAw==", "bundleDependencies": [ "@isaacs/string-locale-compare", "@npmcli/arborist", @@ -23678,7 +24055,7 @@ "@sigstore/tuf": "^2.2.0", "abbrev": "^2.0.0", "archy": "~1.0.0", - "cacache": "^18.0.0", + "cacache": "^18.0.1", "chalk": "^5.3.0", "ci-info": "^4.0.0", "cli-columns": "^4.0.0", @@ -23692,7 +24069,7 @@ "ini": "^4.1.1", "init-package-json": "^6.0.0", "is-cidr": "^5.0.3", - "json-parse-even-better-errors": "^3.0.0", + "json-parse-even-better-errors": "^3.0.1", "libnpmaccess": "^8.0.1", "libnpmdiff": "^6.0.3", "libnpmexec": "^7.0.4", @@ -23721,7 +24098,7 @@ "npm-user-validate": "^2.0.0", "npmlog": "^7.0.1", "p-map": "^4.0.0", - "pacote": "^17.0.4", + "pacote": "^17.0.5", "parse-conflict-json": "^3.0.1", "proc-log": "^3.0.0", "qrcode-terminal": "^0.12.0", @@ -23751,7 +24128,6 @@ "version": "11.0.1", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", - "dev": true, "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^3.0.0", @@ -23841,7 +24217,7 @@ } }, "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "7.2.1", + "version": "7.2.2", "inBundle": true, "license": "ISC", "dependencies": { @@ -23887,7 +24263,7 @@ } }, "node_modules/npm/node_modules/@npmcli/config": { - "version": "8.0.2", + "version": "8.0.3", "inBundle": true, "license": "ISC", "dependencies": { @@ -24316,7 +24692,7 @@ } }, "node_modules/npm/node_modules/cacache": { - "version": "18.0.0", + "version": "18.0.1", "inBundle": true, "license": "ISC", "dependencies": { @@ -24325,7 +24701,7 @@ "glob": "^10.2.2", "lru-cache": "^10.0.1", "minipass": "^7.0.3", - "minipass-collect": "^1.0.2", + "minipass-collect": "^2.0.1", "minipass-flush": "^1.0.5", "minipass-pipeline": "^1.2.4", "p-map": "^4.0.0", @@ -24844,7 +25220,7 @@ "license": "BSD-3-Clause" }, "node_modules/npm/node_modules/ignore-walk": { - "version": "6.0.3", + "version": "6.0.4", "inBundle": true, "license": "ISC", "dependencies": { @@ -24969,7 +25345,7 @@ } }, "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "3.0.0", + "version": "3.0.1", "inBundle": true, "license": "MIT", "engines": { @@ -25003,7 +25379,7 @@ "license": "MIT" }, "node_modules/npm/node_modules/libnpmaccess": { - "version": "8.0.1", + "version": "8.0.2", "inBundle": true, "license": "ISC", "dependencies": { @@ -25015,7 +25391,7 @@ } }, "node_modules/npm/node_modules/libnpmdiff": { - "version": "6.0.3", + "version": "6.0.4", "inBundle": true, "license": "ISC", "dependencies": { @@ -25034,7 +25410,7 @@ } }, "node_modules/npm/node_modules/libnpmexec": { - "version": "7.0.4", + "version": "7.0.5", "inBundle": true, "license": "ISC", "dependencies": { @@ -25055,7 +25431,7 @@ } }, "node_modules/npm/node_modules/libnpmfund": { - "version": "5.0.1", + "version": "5.0.2", "inBundle": true, "license": "ISC", "dependencies": { @@ -25066,7 +25442,7 @@ } }, "node_modules/npm/node_modules/libnpmhook": { - "version": "10.0.0", + "version": "10.0.1", "inBundle": true, "license": "ISC", "dependencies": { @@ -25078,7 +25454,7 @@ } }, "node_modules/npm/node_modules/libnpmorg": { - "version": "6.0.1", + "version": "6.0.2", "inBundle": true, "license": "ISC", "dependencies": { @@ -25090,7 +25466,7 @@ } }, "node_modules/npm/node_modules/libnpmpack": { - "version": "6.0.3", + "version": "6.0.4", "inBundle": true, "license": "ISC", "dependencies": { @@ -25104,7 +25480,7 @@ } }, "node_modules/npm/node_modules/libnpmpublish": { - "version": "9.0.2", + "version": "9.0.3", "inBundle": true, "license": "ISC", "dependencies": { @@ -25122,7 +25498,7 @@ } }, "node_modules/npm/node_modules/libnpmsearch": { - "version": "7.0.0", + "version": "7.0.1", "inBundle": true, "license": "ISC", "dependencies": { @@ -25133,7 +25509,7 @@ } }, "node_modules/npm/node_modules/libnpmteam": { - "version": "6.0.0", + "version": "6.0.1", "inBundle": true, "license": "ISC", "dependencies": { @@ -25145,7 +25521,7 @@ } }, "node_modules/npm/node_modules/libnpmversion": { - "version": "5.0.1", + "version": "5.0.2", "inBundle": true, "license": "ISC", "dependencies": { @@ -25160,12 +25536,9 @@ } }, "node_modules/npm/node_modules/lru-cache": { - "version": "10.0.2", + "version": "10.1.0", "inBundle": true, "license": "ISC", - "dependencies": { - "semver": "^7.3.5" - }, "engines": { "node": "14 || >=16.14" } @@ -25214,25 +25587,14 @@ } }, "node_modules/npm/node_modules/minipass-collect": { - "version": "1.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/npm/node_modules/minipass-collect/node_modules/minipass": { - "version": "3.3.6", + "version": "2.0.1", "inBundle": true, "license": "ISC", "dependencies": { - "yallist": "^4.0.0" + "minipass": "^7.0.3" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, "node_modules/npm/node_modules/minipass-fetch": { @@ -25496,11 +25858,11 @@ } }, "node_modules/npm/node_modules/npm-packlist": { - "version": "8.0.0", + "version": "8.0.1", "inBundle": true, "license": "ISC", "dependencies": { - "ignore-walk": "^6.0.0" + "ignore-walk": "^6.0.4" }, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" @@ -25586,7 +25948,7 @@ } }, "node_modules/npm/node_modules/pacote": { - "version": "17.0.4", + "version": "17.0.5", "inBundle": true, "license": "ISC", "dependencies": { @@ -26494,20 +26856,6 @@ } } }, - "node_modules/nx/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/nx/node_modules/glob": { "version": "7.1.4", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz", @@ -26570,13 +26918,13 @@ } }, "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", "has-symbols": "^1.0.3", "object-keys": "^1.1.1" }, @@ -27294,9 +27642,9 @@ } }, "node_modules/piscina": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.2.0.tgz", - "integrity": "sha512-/Yq6CLchvi5UQ6YGeiYHIJQV09VcZ5eYuNVS/YPkpxlxKrB4tEbIyc6j8F5b0jCP6tHdiji1Gos4fapc7q1csg==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/piscina/-/piscina-4.2.1.tgz", + "integrity": "sha512-LShp0+lrO+WIzB9LXO+ZmO4zGHxtTJNZhEO56H9SSu+JPaUQb6oLcTCzWi5IL2DS8/vIkCE88ElahuSSw4TAkA==", "dev": true, "dependencies": { "hdr-histogram-js": "^2.0.1", @@ -27489,6 +27837,17 @@ "pkg-fetch": "lib-es5/bin.js" } }, + "node_modules/pkg-fetch-dev/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/pkg-fetch-dev/node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -27551,6 +27910,17 @@ "node": ">=10" } }, + "node_modules/pkg-fetch/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/pkg-fetch/node_modules/fs-extra": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", @@ -28210,9 +28580,9 @@ } }, "node_modules/prettier": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.0.tgz", - "integrity": "sha512-TQLvXjq5IAibjh8EpBIkNKxO749UEWABoiIZehEPiY4GNpVdhaFKqSTu+QrlU6D2dPAfubRmtJTi4K4YkQ5eXw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.1.1.tgz", + "integrity": "sha512-22UbSzg8luF4UuZtzgiUOfcGM8s4tjBv6dJRT7j275NXsy2jb4aJa4NNveul5x4eqlF1wuhuR2RElK71RvmVaw==", "dev": true, "bin": { "prettier": "bin/prettier.cjs" @@ -28336,7 +28706,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", - "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -28759,9 +29128,9 @@ } }, "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==" + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", + "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==" }, "node_modules/reflect.getprototypeof": { "version": "1.0.4", @@ -28802,9 +29171,9 @@ } }, "node_modules/regenerator-runtime": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", - "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" }, "node_modules/regenerator-transform": { "version": "0.15.2", @@ -29289,11 +29658,6 @@ "node": ">=10.0.0" } }, - "node_modules/secp256k1/node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==" - }, "node_modules/semaphore": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/semaphore/-/semaphore-1.1.0.tgz", @@ -29306,7 +29670,6 @@ "version": "7.5.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", - "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -29321,7 +29684,6 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -29332,8 +29694,7 @@ "node_modules/semver/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/send": { "version": "0.18.0", @@ -29577,8 +29938,7 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/simple-concat": { "version": "1.0.1", @@ -29900,7 +30260,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -29909,14 +30268,12 @@ "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -29925,8 +30282,7 @@ "node_modules/spdx-license-ids": { "version": "3.0.16", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", - "dev": true + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==" }, "node_modules/split-on-first": { "version": "1.1.0", @@ -30336,9 +30692,9 @@ } }, "node_modules/swagger-ui-dist": { - "version": "5.10.3", - "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.10.3.tgz", - "integrity": "sha512-fu3aozjxFWsmcO1vyt1q1Ji2kN7KlTd1vHy27E9WgPyXo9nrEzhQPqgxaAjbMsOmb8XFKNGo4Sa3Q+84Fh+pFw==" + "version": "5.10.5", + "resolved": "https://registry.npmjs.org/swagger-ui-dist/-/swagger-ui-dist-5.10.5.tgz", + "integrity": "sha512-Uv8E7hV/nXALQKgW86X1i58gl1O6DFg+Uq54sDwhYqucBBxj/47dLNw872TNILNlOTuPA6dRvUMGQdmlpaX8qQ==" }, "node_modules/swagger-ui-express": { "version": "5.0.0", @@ -30495,13 +30851,13 @@ } }, "node_modules/synckit": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.5.tgz", - "integrity": "sha512-L1dapNV6vu2s/4Sputv8xGsCdAVlb5nRDMFU/E27D44l5U6cw1g0dGd45uLc+OXjNMmF4ntiMdCimzcjFKQI8Q==", + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.8.6.tgz", + "integrity": "sha512-laHF2savN6sMeHCjLRkheIU4wo3Zg9Ln5YOjOo7sZ5dVQW8yF5pPE5SIw1dsPhq3TRp1jisKRCdPhfs/1WMqDA==", "dev": true, "dependencies": { - "@pkgr/utils": "^2.3.1", - "tslib": "^2.5.0" + "@pkgr/utils": "^2.4.2", + "tslib": "^2.6.2" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -30810,9 +31166,7 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true, - "peer": true + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" }, "node_modules/through": { "version": "2.3.8", @@ -31020,6 +31374,17 @@ "balanced-match": "^1.0.0" } }, + "node_modules/truffle/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, "node_modules/truffle/node_modules/diff": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", @@ -31298,9 +31663,9 @@ } }, "node_modules/ts-node": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", - "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", + "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", "dev": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -31635,9 +32000,9 @@ } }, "node_modules/typescript": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", - "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", + "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -31938,7 +32303,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -31948,7 +32312,6 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", - "dev": true, "dependencies": { "builtins": "^5.0.0" }, @@ -32025,7 +32388,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, "dependencies": { "defaults": "^1.0.3" } @@ -34381,7 +34743,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -34408,9 +34769,9 @@ "optional": true }, "node_modules/ws": { - "version": "8.14.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", - "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", + "version": "8.15.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.15.1.tgz", + "integrity": "sha512-W5OZiCjXEmk0yZ66ZN82beM5Sz7l7coYxpRkzS+p9PP+ToQry8szKh+61eNktr7EA9DOwvFGhfC605jDHbP6QQ==", "engines": { "node": ">=10.0.0" }, @@ -34655,19 +35016,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/yargs/node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", @@ -34693,7 +35041,7 @@ "name": "@paima/batcher-address-validator", "version": "0.1.0", "dependencies": { - "@dcspark/carp-client": "^2.3.0", + "@dcspark/carp-client": "^2.3.1", "assert-never": "^1.2.1", "pg": "^8.7.3", "web3": "1.10.0" @@ -34702,6 +35050,10 @@ "@types/pg": "^8.6.5" } }, + "packages/batcher/address-validator/node_modules/tmp-carp-client": { + "resolved": "../carp/webserver/client/dist", + "link": true + }, "packages/batcher/batcher-standalone": { "name": "@standalone/paima-batcher", "version": "1.0.0", @@ -34788,7 +35140,8 @@ "version": "2.1.1", "license": "See license file", "bin": { - "paima-build-middleware": "scripts/esbuild.sh" + "paima-build-middleware": "scripts/esbuild.sh", + "paima-reset-db": "scripts/change-db.js" }, "peerDependencies": { "esbuild": "^0.19.3", @@ -34832,13 +35185,17 @@ "name": "@paima/funnel", "version": "1.0.0", "dependencies": { - "@dcspark/carp-client": "^2.3.0", + "@dcspark/carp-client": "^2.3.1", "assert-never": "^1.2.1" }, "devDependencies": { "typescript": "^5.3.2" } }, + "packages/engine/paima-funnel/node_modules/tmp-carp-client": { + "resolved": "../carp/webserver/client/dist", + "link": true + }, "packages/engine/paima-rest": { "name": "@paima/rest", "version": "1.0.0", diff --git a/packages/batcher/address-validator/package.json b/packages/batcher/address-validator/package.json index 8bc662299..2c3fd76cf 100644 --- a/packages/batcher/address-validator/package.json +++ b/packages/batcher/address-validator/package.json @@ -13,7 +13,7 @@ "pg": "^8.7.3", "web3": "1.10.0", "assert-never": "^1.2.1", - "@dcspark/carp-client": "^2.3.0" + "@dcspark/carp-client": "^2.3.1" }, "devDependencies": { "@types/pg": "^8.6.5" diff --git a/packages/build-utils/paima-build-utils/scripts/change-db.js b/packages/build-utils/paima-build-utils/scripts/change-db.js old mode 100644 new mode 100755 diff --git a/packages/engine/paima-funnel/package.json b/packages/engine/paima-funnel/package.json index e3f4409e7..2a1f77f04 100644 --- a/packages/engine/paima-funnel/package.json +++ b/packages/engine/paima-funnel/package.json @@ -18,6 +18,6 @@ }, "dependencies": { "assert-never": "^1.2.1", - "@dcspark/carp-client": "^2.3.0" + "@dcspark/carp-client": "^2.3.1" } } diff --git a/packages/engine/paima-rest/src/tsoa/routes.ts b/packages/engine/paima-rest/src/tsoa/routes.ts new file mode 100644 index 000000000..cd84e808a --- /dev/null +++ b/packages/engine/paima-rest/src/tsoa/routes.ts @@ -0,0 +1,347 @@ +/* tslint:disable */ +/* eslint-disable */ +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { Controller, ValidationService, FieldErrors, ValidateError, TsoaRoute, HttpStatusCodeLiteral, TsoaResponse, fetchMiddlewares } from '@tsoa/runtime'; +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { DryRunController } from './../controllers/BasicControllers'; +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { VersionController } from './../controllers/BasicControllers'; +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { LatestProcessedBlockheightController } from './../controllers/BasicControllers'; +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { EmulatedBlockActiveController } from './../controllers/BasicControllers'; +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { DeploymentBlockheightToEmulatedController } from './../controllers/BasicControllers'; +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { ConfirmInputAcceptanceController } from './../controllers/BasicControllers'; +import type { RequestHandler, Router } from 'express'; + +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + +const models: TsoaRoute.Models = { + "DryRunResponse": { + "dataType": "refAlias", + "type": {"dataType":"nestedObjectLiteral","nestedProperties":{"valid":{"dataType":"boolean","required":true}},"validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "VersionString": { + "dataType": "refAlias", + "type": {"dataType":"string","validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "LatestProcessedBlockheightResponse": { + "dataType": "refAlias", + "type": {"dataType":"nestedObjectLiteral","nestedProperties":{"block_height":{"dataType":"double","required":true}},"validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "EmulatedBlockActiveResponse": { + "dataType": "refAlias", + "type": {"dataType":"nestedObjectLiteral","nestedProperties":{"emulatedBlocksActive":{"dataType":"boolean","required":true}},"validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "SuccessfulResult_number_": { + "dataType": "refObject", + "properties": { + "success": {"dataType":"enum","enums":[true],"required":true}, + "result": {"dataType":"double","required":true}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "FailedResult": { + "dataType": "refObject", + "properties": { + "success": {"dataType":"enum","enums":[false],"required":true}, + "errorMessage": {"dataType":"string","required":true}, + "errorCode": {"dataType":"double"}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "Result_number_": { + "dataType": "refAlias", + "type": {"dataType":"union","subSchemas":[{"ref":"SuccessfulResult_number_"},{"ref":"FailedResult"}],"validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "DeploymentBlockheightToEmulatedResponse": { + "dataType": "refAlias", + "type": {"ref":"Result_number_","validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "SuccessfulResult_boolean_": { + "dataType": "refObject", + "properties": { + "success": {"dataType":"enum","enums":[true],"required":true}, + "result": {"dataType":"boolean","required":true}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "Result_boolean_": { + "dataType": "refAlias", + "type": {"dataType":"union","subSchemas":[{"ref":"SuccessfulResult_boolean_"},{"ref":"FailedResult"}],"validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "ConfirmInputAcceptanceResponse": { + "dataType": "refAlias", + "type": {"ref":"Result_boolean_","validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +}; +const validationService = new ValidationService(models); + +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + +export function RegisterRoutes(app: Router) { + // ########################################################################################################### + // NOTE: If you do not see routes for all of your controllers in this file, then you might not have informed tsoa of where to look + // Please look into the "controllerPathGlobs" config option described in the readme: https://github.com/lukeautry/tsoa + // ########################################################################################################### + app.get('/dry_run', + ...(fetchMiddlewares(DryRunController)), + ...(fetchMiddlewares(DryRunController.prototype.get)), + + function DryRunController_get(request: any, response: any, next: any) { + const args = { + gameInput: {"in":"query","name":"gameInput","required":true,"dataType":"string"}, + userAddress: {"in":"query","name":"userAddress","required":true,"dataType":"string"}, + }; + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = getValidatedArgs(args, request, response); + + const controller = new DryRunController(); + + + const promise = controller.get.apply(controller, validatedArgs as any); + promiseHandler(controller, promise, response, undefined, next); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + app.get('/backend_version', + ...(fetchMiddlewares(VersionController)), + ...(fetchMiddlewares(VersionController.prototype.get)), + + function VersionController_get(request: any, response: any, next: any) { + const args = { + }; + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = getValidatedArgs(args, request, response); + + const controller = new VersionController(); + + + const promise = controller.get.apply(controller, validatedArgs as any); + promiseHandler(controller, promise, response, undefined, next); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + app.get('/latest_processed_blockheight', + ...(fetchMiddlewares(LatestProcessedBlockheightController)), + ...(fetchMiddlewares(LatestProcessedBlockheightController.prototype.get)), + + function LatestProcessedBlockheightController_get(request: any, response: any, next: any) { + const args = { + }; + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = getValidatedArgs(args, request, response); + + const controller = new LatestProcessedBlockheightController(); + + + const promise = controller.get.apply(controller, validatedArgs as any); + promiseHandler(controller, promise, response, undefined, next); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + app.get('/emulated_blocks_active', + ...(fetchMiddlewares(EmulatedBlockActiveController)), + ...(fetchMiddlewares(EmulatedBlockActiveController.prototype.get)), + + function EmulatedBlockActiveController_get(request: any, response: any, next: any) { + const args = { + }; + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = getValidatedArgs(args, request, response); + + const controller = new EmulatedBlockActiveController(); + + + const promise = controller.get.apply(controller, validatedArgs as any); + promiseHandler(controller, promise, response, undefined, next); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + app.get('/deployment_blockheight_to_emulated', + ...(fetchMiddlewares(DeploymentBlockheightToEmulatedController)), + ...(fetchMiddlewares(DeploymentBlockheightToEmulatedController.prototype.get)), + + function DeploymentBlockheightToEmulatedController_get(request: any, response: any, next: any) { + const args = { + deploymentBlockheight: {"in":"query","name":"deploymentBlockheight","required":true,"dataType":"double"}, + }; + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = getValidatedArgs(args, request, response); + + const controller = new DeploymentBlockheightToEmulatedController(); + + + const promise = controller.get.apply(controller, validatedArgs as any); + promiseHandler(controller, promise, response, undefined, next); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + app.get('/confirm_input_acceptance', + ...(fetchMiddlewares(ConfirmInputAcceptanceController)), + ...(fetchMiddlewares(ConfirmInputAcceptanceController.prototype.get)), + + function ConfirmInputAcceptanceController_get(request: any, response: any, next: any) { + const args = { + gameInput: {"in":"query","name":"gameInput","required":true,"dataType":"string"}, + userAddress: {"in":"query","name":"userAddress","required":true,"dataType":"string"}, + blockHeight: {"in":"query","name":"blockHeight","required":true,"dataType":"double"}, + }; + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = getValidatedArgs(args, request, response); + + const controller = new ConfirmInputAcceptanceController(); + + + const promise = controller.get.apply(controller, validatedArgs as any); + promiseHandler(controller, promise, response, undefined, next); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + function isController(object: any): object is Controller { + return 'getHeaders' in object && 'getStatus' in object && 'setStatus' in object; + } + + function promiseHandler(controllerObj: any, promise: any, response: any, successStatus: any, next: any) { + return Promise.resolve(promise) + .then((data: any) => { + let statusCode = successStatus; + let headers; + if (isController(controllerObj)) { + headers = controllerObj.getHeaders(); + statusCode = controllerObj.getStatus() || statusCode; + } + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + returnHandler(response, statusCode, data, headers) + }) + .catch((error: any) => next(error)); + } + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + function returnHandler(response: any, statusCode?: number, data?: any, headers: any = {}) { + if (response.headersSent) { + return; + } + Object.keys(headers).forEach((name: string) => { + response.set(name, headers[name]); + }); + if (data && typeof data.pipe === 'function' && data.readable && typeof data._read === 'function') { + response.status(statusCode || 200) + data.pipe(response); + } else if (data !== null && data !== undefined) { + response.status(statusCode || 200).json(data); + } else { + response.status(statusCode || 204).end(); + } + } + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + function responder(response: any): TsoaResponse { + return function(status, data, headers) { + returnHandler(response, status, data, headers); + }; + }; + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + function getValidatedArgs(args: any, request: any, response: any): any[] { + const fieldErrors: FieldErrors = {}; + const values = Object.keys(args).map((key) => { + const name = args[key].name; + switch (args[key].in) { + case 'request': + return request; + case 'query': + return validationService.ValidateParam(args[key], request.query[name], name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); + case 'queries': + return validationService.ValidateParam(args[key], request.query, name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); + case 'path': + return validationService.ValidateParam(args[key], request.params[name], name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); + case 'header': + return validationService.ValidateParam(args[key], request.header(name), name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); + case 'body': + return validationService.ValidateParam(args[key], request.body, name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); + case 'body-prop': + return validationService.ValidateParam(args[key], request.body[name], name, fieldErrors, 'body.', {"noImplicitAdditionalProperties":"throw-on-extras"}); + case 'formData': + if (args[key].dataType === 'file') { + return validationService.ValidateParam(args[key], request.file, name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); + } else if (args[key].dataType === 'array' && args[key].array.dataType === 'file') { + return validationService.ValidateParam(args[key], request.files, name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); + } else { + return validationService.ValidateParam(args[key], request.body[name], name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); + } + case 'res': + return responder(response); + } + }); + + if (Object.keys(fieldErrors).length > 0) { + throw new ValidateError(fieldErrors, ''); + } + return values; + } + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +} + +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa diff --git a/packages/engine/paima-sm/src/types.ts b/packages/engine/paima-sm/src/types.ts index ee3b762da..3bbf2c6c6 100644 --- a/packages/engine/paima-sm/src/types.ts +++ b/packages/engine/paima-sm/src/types.ts @@ -150,7 +150,7 @@ export interface CdeCardanoPoolDatum extends CdeDatumBase { export interface CdeCardanoProjectedNFTDatum extends CdeDatumBase { cdeDatumType: ChainDataExtensionDatumType.CardanoProjectedNFT; payload: CdeDatumCardanoProjectedNFTPayload; - scheduledPrefix: string; + scheduledPrefix: string | undefined; } export type ChainDataExtensionDatum = @@ -290,7 +290,7 @@ export type ChainDataExtensionCardanoDelegation = ChainDataExtensionBase & export const ChainDataExtensionCardanoProjectedNFTConfig = Type.Object({ type: Type.Literal(CdeEntryTypeName.CardanoProjectedNFT), - scheduledPrefix: Type.String(), + scheduledPrefix: Type.Optional(Type.String()), startSlot: Type.Number(), stopSlot: Type.Optional(Type.Number()), name: Type.String(), From 627d81cb9e2be2d61ae96ba99c8845186383d67b Mon Sep 17 00:00:00 2001 From: Eugene Gostkin Date: Mon, 18 Dec 2023 16:52:53 +0100 Subject: [PATCH 19/24] Fix lint --- .../engine/paima-funnel/src/funnels/carp/funnel.ts | 5 ++--- .../engine/paima-runtime/src/cde-config/utils.ts | 12 ++++++------ 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/engine/paima-funnel/src/funnels/carp/funnel.ts b/packages/engine/paima-funnel/src/funnels/carp/funnel.ts index f70584d7c..0a6b6d727 100644 --- a/packages/engine/paima-funnel/src/funnels/carp/funnel.ts +++ b/packages/engine/paima-funnel/src/funnels/carp/funnel.ts @@ -8,8 +8,7 @@ import { Network, timeout, } from '@paima/utils'; -import type { - ChainDataExtensionCardanoProjectedNFT} from '@paima/sm'; +import type { ChainDataExtensionCardanoProjectedNFT } from '@paima/sm'; import { type ChainData, type ChainDataExtension, @@ -155,7 +154,7 @@ export class CarpFunnel extends BaseFunnel implements ChainFunnel { if (extension.cdeType === ChainDataExtensionType.CardanoPool) { const data = getCdePoolData( this.carpUrl, - extension , + extension, arg.from, Math.min(arg.to, this.cache.getState().startingSlot - 1), slot => { diff --git a/packages/engine/paima-runtime/src/cde-config/utils.ts b/packages/engine/paima-runtime/src/cde-config/utils.ts index 0c525ed4f..fb1b4c55b 100644 --- a/packages/engine/paima-runtime/src/cde-config/utils.ts +++ b/packages/engine/paima-runtime/src/cde-config/utils.ts @@ -7,9 +7,9 @@ import type { ChainDataExtension } from '@paima/sm'; export function getEarliestStartBlockheight(config: ChainDataExtension[]): number { const minStartBlockheight = config.reduce((min, cde) => { if ( - cde.cdeType !== ChainDataExtensionType.CardanoPool && - cde.cdeType !== ChainDataExtensionType.CardanoProjectedNFT - ) { + cde.cdeType !== ChainDataExtensionType.CardanoPool && + cde.cdeType !== ChainDataExtensionType.CardanoProjectedNFT + ) { return Math.min(min, cde.startBlockHeight); } return min; @@ -20,9 +20,9 @@ export function getEarliestStartBlockheight(config: ChainDataExtension[]): numbe export function getEarliestStartSlot(config: ChainDataExtension[]): number { const minStartSlot = config.reduce((min, cde) => { if ( - cde.cdeType === ChainDataExtensionType.CardanoPool || - cde.cdeType === ChainDataExtensionType.CardanoProjectedNFT - ) { + cde.cdeType === ChainDataExtensionType.CardanoPool || + cde.cdeType === ChainDataExtensionType.CardanoProjectedNFT + ) { return Math.min(min, cde.startSlot); } return min; From 965c6248634aeafc77234588fa1347d0245aba8e Mon Sep 17 00:00:00 2001 From: Eugene Gostkin Date: Mon, 18 Dec 2023 18:07:29 +0100 Subject: [PATCH 20/24] Asset -> policy id + asset name --- .../src/cde/cardanoProjectedNFT.ts | 3 ++- .../paima-sm/src/cde-cardano-projected-nft.ts | 11 ++++++---- packages/engine/paima-sm/src/types.ts | 3 ++- packages/node-sdk/paima-db/README.md | 2 +- packages/node-sdk/paima-db/migrations/up.sql | 3 ++- .../sql/cde-cardano-projected-nft.queries.ts | 22 ++++++++++++------- .../src/sql/cde-cardano-projected-nft.sql | 9 +++++--- 7 files changed, 34 insertions(+), 19 deletions(-) diff --git a/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts b/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts index dbdae689a..610d914e0 100644 --- a/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts +++ b/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts @@ -55,7 +55,8 @@ function eventToCdeDatum( previousTxOutputIndex: event.previousTxOutputIndex != null ? event.previousTxOutputIndex : undefined, - asset: event.asset, + policyId: event.policyId, + assetName: event.assetName, amount: event.amount, status: event.status, plutusDatum: event.plutusDatum != null ? event.plutusDatum : '', diff --git a/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts b/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts index 87332c9dc..76165da75 100644 --- a/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts +++ b/packages/engine/paima-sm/src/cde-cardano-projected-nft.ts @@ -18,13 +18,14 @@ export default async function processDatum( const currentTxHash = cdeDatum.payload.actionTxId; const currentOutputIndex = cdeDatum.payload.actionOutputIndex; const amount = cdeDatum.payload.amount; - const asset = cdeDatum.payload.asset; + const policyId = cdeDatum.payload.policyId; + const assetName = cdeDatum.payload.assetName; const status = cdeDatum.payload.status; const datum = cdeDatum.payload.plutusDatum; const forHowLong = cdeDatum.payload.forHowLong; const scheduledBlockHeight = Math.max(cdeDatum.blockNumber, ENV.SM_START_BLOCKHEIGHT + 1); - const scheduledInputData = `${prefix}|${ownerAddress}|${previousTxHash}|${previousOutputIndex}|${currentTxHash}|${currentOutputIndex}|${asset}|${status}`; + const scheduledInputData = `${prefix}|${ownerAddress}|${previousTxHash}|${previousOutputIndex}|${currentTxHash}|${currentOutputIndex}|${policyId}|${assetName}|${status}`; if (previousTxHash === undefined || previousOutputIndex === undefined) { const updateList: SQLUpdate[] = [ @@ -36,7 +37,8 @@ export default async function processDatum( owner_address: ownerAddress, current_tx_hash: currentTxHash, current_tx_output_index: currentOutputIndex, - asset: asset, + policy_id: policyId, + asset_name: assetName, amount: amount, status: status, plutus_datum: datum, @@ -57,7 +59,8 @@ export default async function processDatum( new_tx_output_index: currentOutputIndex, previous_tx_hash: previousTxHash, previous_tx_output_index: previousOutputIndex, - asset: asset, + policy_id: policyId, + asset_name: assetName, amount: amount, status: status, plutus_datum: datum, diff --git a/packages/engine/paima-sm/src/types.ts b/packages/engine/paima-sm/src/types.ts index 3bbf2c6c6..5a90de939 100644 --- a/packages/engine/paima-sm/src/types.ts +++ b/packages/engine/paima-sm/src/types.ts @@ -80,7 +80,8 @@ interface CdeDatumCardanoProjectedNFTPayload { previousTxHash: string | undefined; previousTxOutputIndex: number | undefined; - asset: string; + policyId: string; + assetName: string; amount: string; status: string; plutusDatum: string; diff --git a/packages/node-sdk/paima-db/README.md b/packages/node-sdk/paima-db/README.md index 7a9c05fa9..5b5cddf9e 100644 --- a/packages/node-sdk/paima-db/README.md +++ b/packages/node-sdk/paima-db/README.md @@ -17,4 +17,4 @@ Specific game databases do not need to contain these tables, as they will be cre To re-generate the queries, you will need a database running with the same connection info as [the config](./pgtypedconfig.json) and then run `npm run compile`. -Before running `npm compile`, you will need to initialize the DB using `sudo -u postgres psql -d postgres -a -f migrations/up.sql` +Before running `npm run compile`, you will need to initialize the DB using `sudo -u postgres psql -d postgres -a -f migrations/up.sql` diff --git a/packages/node-sdk/paima-db/migrations/up.sql b/packages/node-sdk/paima-db/migrations/up.sql index 7ca28f822..37a16edc9 100644 --- a/packages/node-sdk/paima-db/migrations/up.sql +++ b/packages/node-sdk/paima-db/migrations/up.sql @@ -102,7 +102,8 @@ CREATE TABLE cde_cardano_projected_nft ( previous_tx_output_index INTEGER, current_tx_hash TEXT NOT NULL, current_tx_output_index INTEGER, - asset TEXT NOT NULL, + policy_id TEXT NOT NULL, + asset_name TEXT NOT NULL, amount BIGINT NOT NULL, status TEXT NOT NULL, plutus_datum TEXT NOT NULL, diff --git a/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.queries.ts b/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.queries.ts index f59bdf548..4d1ab7096 100644 --- a/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.queries.ts +++ b/packages/node-sdk/paima-db/src/sql/cde-cardano-projected-nft.queries.ts @@ -11,7 +11,7 @@ export interface ICdeCardanoGetProjectedNftParams { /** 'CdeCardanoGetProjectedNft' return type */ export interface ICdeCardanoGetProjectedNftResult { amount: string; - asset: string; + asset_name: string; cde_id: number; current_tx_hash: string; current_tx_output_index: number | null; @@ -19,6 +19,7 @@ export interface ICdeCardanoGetProjectedNftResult { id: number; owner_address: string; plutus_datum: string; + policy_id: string; previous_tx_hash: string | null; previous_tx_output_index: number | null; status: string; @@ -45,13 +46,14 @@ export const cdeCardanoGetProjectedNft = new PreparedQuery Date: Tue, 19 Dec 2023 01:32:58 +0100 Subject: [PATCH 21/24] Update carp client call --- packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts b/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts index 610d914e0..bb958fe41 100644 --- a/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts +++ b/packages/engine/paima-funnel/src/cde/cardanoProjectedNFT.ts @@ -17,6 +17,7 @@ export default async function getCdeProjectedNFTData( const events = await timeout( query(url, Routes.projectedNftEventsRange, { range: { minSlot: fromAbsoluteSlot, maxSlot: toAbsoluteSlot }, + address: undefined, }), DEFAULT_FUNNEL_TIMEOUT ); From 7197527fbe988f1777925cffc4a6642ed0626bb4 Mon Sep 17 00:00:00 2001 From: Eugene Gostkin Date: Tue, 19 Dec 2023 02:32:01 +0100 Subject: [PATCH 22/24] Fix paima tables --- packages/node-sdk/paima-db/src/paima-tables.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/node-sdk/paima-db/src/paima-tables.ts b/packages/node-sdk/paima-db/src/paima-tables.ts index e3a41659e..e6779616d 100644 --- a/packages/node-sdk/paima-db/src/paima-tables.ts +++ b/packages/node-sdk/paima-db/src/paima-tables.ts @@ -286,7 +286,8 @@ CREATE TABLE cde_cardano_projected_nft ( previous_tx_output_index INTEGER, current_tx_hash TEXT NOT NULL, current_tx_output_index INTEGER, - asset TEXT NOT NULL, + policy_id TEXT NOT NULL, + asset_name TEXT NOT NULL, amount BIGINT NOT NULL, status TEXT NOT NULL, plutus_datum TEXT NOT NULL, @@ -306,11 +307,12 @@ const TABLE_DATA_CDE_CARDANO_PROJECTED_NFT: TableData = { ['previous_tx_output_index', 'integer', 'YES', ''], ['current_tx_hash', 'text', 'NO', ''], ['current_tx_output_index', 'integer', 'YES', ''], - ['asset', 'text', 'NO', ''], + ['policy_id', 'text', 'NO', ''], + ['asset_name', 'text', 'NO', ''], ['amount', 'bigint', 'NO', ''], ['status', 'text', 'NO', ''], ['plutus_datum', 'text', 'NO', ''], - ['for_how_long', 'bigint', 'NO', ''], + ['for_how_long', 'bigint', 'YES', ''], ]), serialColumns: ['id'], creationQuery: QUERY_CREATE_TABLE_CDE_CARDANO_PROJECTED_NFT, From f0b3492b30e59d5227134f3395d373434db9e11a Mon Sep 17 00:00:00 2001 From: Eugene Gostkin Date: Tue, 19 Dec 2023 03:41:29 +0100 Subject: [PATCH 23/24] Remove tsoa routes --- .gitignore | 4 +- packages/engine/paima-rest/src/tsoa/routes.ts | 347 ------------------ 2 files changed, 3 insertions(+), 348 deletions(-) delete mode 100644 packages/engine/paima-rest/src/tsoa/routes.ts diff --git a/.gitignore b/.gitignore index 015b9628e..907a342f8 100644 --- a/.gitignore +++ b/.gitignore @@ -9,4 +9,6 @@ bin # logs *.log -.idea/ \ No newline at end of file +.idea/ + +packages/engine/paima-rest/src/tsoa/routes.ts diff --git a/packages/engine/paima-rest/src/tsoa/routes.ts b/packages/engine/paima-rest/src/tsoa/routes.ts deleted file mode 100644 index cd84e808a..000000000 --- a/packages/engine/paima-rest/src/tsoa/routes.ts +++ /dev/null @@ -1,347 +0,0 @@ -/* tslint:disable */ -/* eslint-disable */ -// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa -import { Controller, ValidationService, FieldErrors, ValidateError, TsoaRoute, HttpStatusCodeLiteral, TsoaResponse, fetchMiddlewares } from '@tsoa/runtime'; -// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa -import { DryRunController } from './../controllers/BasicControllers'; -// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa -import { VersionController } from './../controllers/BasicControllers'; -// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa -import { LatestProcessedBlockheightController } from './../controllers/BasicControllers'; -// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa -import { EmulatedBlockActiveController } from './../controllers/BasicControllers'; -// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa -import { DeploymentBlockheightToEmulatedController } from './../controllers/BasicControllers'; -// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa -import { ConfirmInputAcceptanceController } from './../controllers/BasicControllers'; -import type { RequestHandler, Router } from 'express'; - -// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - -const models: TsoaRoute.Models = { - "DryRunResponse": { - "dataType": "refAlias", - "type": {"dataType":"nestedObjectLiteral","nestedProperties":{"valid":{"dataType":"boolean","required":true}},"validators":{}}, - }, - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - "VersionString": { - "dataType": "refAlias", - "type": {"dataType":"string","validators":{}}, - }, - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - "LatestProcessedBlockheightResponse": { - "dataType": "refAlias", - "type": {"dataType":"nestedObjectLiteral","nestedProperties":{"block_height":{"dataType":"double","required":true}},"validators":{}}, - }, - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - "EmulatedBlockActiveResponse": { - "dataType": "refAlias", - "type": {"dataType":"nestedObjectLiteral","nestedProperties":{"emulatedBlocksActive":{"dataType":"boolean","required":true}},"validators":{}}, - }, - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - "SuccessfulResult_number_": { - "dataType": "refObject", - "properties": { - "success": {"dataType":"enum","enums":[true],"required":true}, - "result": {"dataType":"double","required":true}, - }, - "additionalProperties": false, - }, - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - "FailedResult": { - "dataType": "refObject", - "properties": { - "success": {"dataType":"enum","enums":[false],"required":true}, - "errorMessage": {"dataType":"string","required":true}, - "errorCode": {"dataType":"double"}, - }, - "additionalProperties": false, - }, - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - "Result_number_": { - "dataType": "refAlias", - "type": {"dataType":"union","subSchemas":[{"ref":"SuccessfulResult_number_"},{"ref":"FailedResult"}],"validators":{}}, - }, - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - "DeploymentBlockheightToEmulatedResponse": { - "dataType": "refAlias", - "type": {"ref":"Result_number_","validators":{}}, - }, - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - "SuccessfulResult_boolean_": { - "dataType": "refObject", - "properties": { - "success": {"dataType":"enum","enums":[true],"required":true}, - "result": {"dataType":"boolean","required":true}, - }, - "additionalProperties": false, - }, - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - "Result_boolean_": { - "dataType": "refAlias", - "type": {"dataType":"union","subSchemas":[{"ref":"SuccessfulResult_boolean_"},{"ref":"FailedResult"}],"validators":{}}, - }, - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - "ConfirmInputAcceptanceResponse": { - "dataType": "refAlias", - "type": {"ref":"Result_boolean_","validators":{}}, - }, - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa -}; -const validationService = new ValidationService(models); - -// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - -export function RegisterRoutes(app: Router) { - // ########################################################################################################### - // NOTE: If you do not see routes for all of your controllers in this file, then you might not have informed tsoa of where to look - // Please look into the "controllerPathGlobs" config option described in the readme: https://github.com/lukeautry/tsoa - // ########################################################################################################### - app.get('/dry_run', - ...(fetchMiddlewares(DryRunController)), - ...(fetchMiddlewares(DryRunController.prototype.get)), - - function DryRunController_get(request: any, response: any, next: any) { - const args = { - gameInput: {"in":"query","name":"gameInput","required":true,"dataType":"string"}, - userAddress: {"in":"query","name":"userAddress","required":true,"dataType":"string"}, - }; - - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - - let validatedArgs: any[] = []; - try { - validatedArgs = getValidatedArgs(args, request, response); - - const controller = new DryRunController(); - - - const promise = controller.get.apply(controller, validatedArgs as any); - promiseHandler(controller, promise, response, undefined, next); - } catch (err) { - return next(err); - } - }); - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - app.get('/backend_version', - ...(fetchMiddlewares(VersionController)), - ...(fetchMiddlewares(VersionController.prototype.get)), - - function VersionController_get(request: any, response: any, next: any) { - const args = { - }; - - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - - let validatedArgs: any[] = []; - try { - validatedArgs = getValidatedArgs(args, request, response); - - const controller = new VersionController(); - - - const promise = controller.get.apply(controller, validatedArgs as any); - promiseHandler(controller, promise, response, undefined, next); - } catch (err) { - return next(err); - } - }); - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - app.get('/latest_processed_blockheight', - ...(fetchMiddlewares(LatestProcessedBlockheightController)), - ...(fetchMiddlewares(LatestProcessedBlockheightController.prototype.get)), - - function LatestProcessedBlockheightController_get(request: any, response: any, next: any) { - const args = { - }; - - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - - let validatedArgs: any[] = []; - try { - validatedArgs = getValidatedArgs(args, request, response); - - const controller = new LatestProcessedBlockheightController(); - - - const promise = controller.get.apply(controller, validatedArgs as any); - promiseHandler(controller, promise, response, undefined, next); - } catch (err) { - return next(err); - } - }); - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - app.get('/emulated_blocks_active', - ...(fetchMiddlewares(EmulatedBlockActiveController)), - ...(fetchMiddlewares(EmulatedBlockActiveController.prototype.get)), - - function EmulatedBlockActiveController_get(request: any, response: any, next: any) { - const args = { - }; - - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - - let validatedArgs: any[] = []; - try { - validatedArgs = getValidatedArgs(args, request, response); - - const controller = new EmulatedBlockActiveController(); - - - const promise = controller.get.apply(controller, validatedArgs as any); - promiseHandler(controller, promise, response, undefined, next); - } catch (err) { - return next(err); - } - }); - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - app.get('/deployment_blockheight_to_emulated', - ...(fetchMiddlewares(DeploymentBlockheightToEmulatedController)), - ...(fetchMiddlewares(DeploymentBlockheightToEmulatedController.prototype.get)), - - function DeploymentBlockheightToEmulatedController_get(request: any, response: any, next: any) { - const args = { - deploymentBlockheight: {"in":"query","name":"deploymentBlockheight","required":true,"dataType":"double"}, - }; - - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - - let validatedArgs: any[] = []; - try { - validatedArgs = getValidatedArgs(args, request, response); - - const controller = new DeploymentBlockheightToEmulatedController(); - - - const promise = controller.get.apply(controller, validatedArgs as any); - promiseHandler(controller, promise, response, undefined, next); - } catch (err) { - return next(err); - } - }); - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - app.get('/confirm_input_acceptance', - ...(fetchMiddlewares(ConfirmInputAcceptanceController)), - ...(fetchMiddlewares(ConfirmInputAcceptanceController.prototype.get)), - - function ConfirmInputAcceptanceController_get(request: any, response: any, next: any) { - const args = { - gameInput: {"in":"query","name":"gameInput","required":true,"dataType":"string"}, - userAddress: {"in":"query","name":"userAddress","required":true,"dataType":"string"}, - blockHeight: {"in":"query","name":"blockHeight","required":true,"dataType":"double"}, - }; - - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - - let validatedArgs: any[] = []; - try { - validatedArgs = getValidatedArgs(args, request, response); - - const controller = new ConfirmInputAcceptanceController(); - - - const promise = controller.get.apply(controller, validatedArgs as any); - promiseHandler(controller, promise, response, undefined, next); - } catch (err) { - return next(err); - } - }); - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - - - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - - function isController(object: any): object is Controller { - return 'getHeaders' in object && 'getStatus' in object && 'setStatus' in object; - } - - function promiseHandler(controllerObj: any, promise: any, response: any, successStatus: any, next: any) { - return Promise.resolve(promise) - .then((data: any) => { - let statusCode = successStatus; - let headers; - if (isController(controllerObj)) { - headers = controllerObj.getHeaders(); - statusCode = controllerObj.getStatus() || statusCode; - } - - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - - returnHandler(response, statusCode, data, headers) - }) - .catch((error: any) => next(error)); - } - - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - - function returnHandler(response: any, statusCode?: number, data?: any, headers: any = {}) { - if (response.headersSent) { - return; - } - Object.keys(headers).forEach((name: string) => { - response.set(name, headers[name]); - }); - if (data && typeof data.pipe === 'function' && data.readable && typeof data._read === 'function') { - response.status(statusCode || 200) - data.pipe(response); - } else if (data !== null && data !== undefined) { - response.status(statusCode || 200).json(data); - } else { - response.status(statusCode || 204).end(); - } - } - - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - - function responder(response: any): TsoaResponse { - return function(status, data, headers) { - returnHandler(response, status, data, headers); - }; - }; - - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa - - function getValidatedArgs(args: any, request: any, response: any): any[] { - const fieldErrors: FieldErrors = {}; - const values = Object.keys(args).map((key) => { - const name = args[key].name; - switch (args[key].in) { - case 'request': - return request; - case 'query': - return validationService.ValidateParam(args[key], request.query[name], name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); - case 'queries': - return validationService.ValidateParam(args[key], request.query, name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); - case 'path': - return validationService.ValidateParam(args[key], request.params[name], name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); - case 'header': - return validationService.ValidateParam(args[key], request.header(name), name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); - case 'body': - return validationService.ValidateParam(args[key], request.body, name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); - case 'body-prop': - return validationService.ValidateParam(args[key], request.body[name], name, fieldErrors, 'body.', {"noImplicitAdditionalProperties":"throw-on-extras"}); - case 'formData': - if (args[key].dataType === 'file') { - return validationService.ValidateParam(args[key], request.file, name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); - } else if (args[key].dataType === 'array' && args[key].array.dataType === 'file') { - return validationService.ValidateParam(args[key], request.files, name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); - } else { - return validationService.ValidateParam(args[key], request.body[name], name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); - } - case 'res': - return responder(response); - } - }); - - if (Object.keys(fieldErrors).length > 0) { - throw new ValidateError(fieldErrors, ''); - } - return values; - } - - // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa -} - -// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa From d6dbcff99c6a0c981343543830ecbdf1c374af12 Mon Sep 17 00:00:00 2001 From: Eugene Gostkin Date: Thu, 21 Dec 2023 14:59:21 +0100 Subject: [PATCH 24/24] Address review comments --- .gitignore | 2 - package-lock.json | 67 +++- packages/engine/paima-rest/src/tsoa/routes.ts | 347 ++++++++++++++++++ 3 files changed, 397 insertions(+), 19 deletions(-) create mode 100644 packages/engine/paima-rest/src/tsoa/routes.ts diff --git a/.gitignore b/.gitignore index 907a342f8..9255e1ddc 100644 --- a/.gitignore +++ b/.gitignore @@ -10,5 +10,3 @@ bin *.log .idea/ - -packages/engine/paima-rest/src/tsoa/routes.ts diff --git a/package-lock.json b/package-lock.json index 916b621e9..207bbbdfe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10281,6 +10281,7 @@ "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-7.2.0.tgz", "integrity": "sha512-DnhQwcFEaYsvYDnACLZhMmCWd3rkOeEvglpa4q5i/5Jlm3UIsWaxVzuXvDLFCSCWRO3yy2/+V/G7FusFgejnfQ==", "dev": true, + "optional": true, "dependencies": { "buffer": "^6.0.3", "catering": "^2.0.0", @@ -10312,6 +10313,7 @@ "url": "https://feross.org/support" } ], + "optional": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -11782,6 +11784,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, "dependencies": { "semver": "^7.0.0" } @@ -11926,6 +11929,7 @@ "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", "dev": true, + "optional": true, "engines": { "node": ">=6" } @@ -12112,6 +12116,7 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, "funding": [ { "type": "github", @@ -12210,6 +12215,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, "engines": { "node": ">=0.8" } @@ -12297,6 +12303,7 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.6.0.tgz", "integrity": "sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==", + "dev": true, "dependencies": { "strip-ansi": "^6.0.1", "wcwidth": "^1.0.0" @@ -13081,6 +13088,7 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, "dependencies": { "clone": "^1.0.2" }, @@ -20348,6 +20356,7 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.1.tgz", "integrity": "sha512-+K84LB1DYwMHoHSgaOY/Jfhw3ucPmSET5v98Ke/HdNSw4a0UktWzyW1mjhjpuxxTqOOsfWT/7iVshHmVZ4IpOA==", + "dev": true, "dependencies": { "lru-cache": "^10.0.1" }, @@ -20359,6 +20368,7 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", + "dev": true, "engines": { "node": "14 || >=16.14" } @@ -20597,6 +20607,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, "engines": { "node": ">=0.8.19" } @@ -20618,7 +20629,8 @@ "node_modules/ini": { "version": "1.3.8", "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true }, "node_modules/internal-slot": { "version": "1.0.6", @@ -20798,6 +20810,7 @@ "url": "https://feross.org/support" } ], + "optional": true, "engines": { "node": ">=4" } @@ -22111,7 +22124,8 @@ "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "node_modules/json-pointer": { "version": "0.6.2", @@ -22410,6 +22424,7 @@ "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-3.1.0.tgz", "integrity": "sha512-BWRCMHBxbIqPxJ8vHOvKUsaO0v1sLYZtjN3K2iZJsRBYtp+ONsY6Jfi6hy9K3+zolgQRryhIn2NRZjZnWJ9NmQ==", "dev": true, + "optional": true, "dependencies": { "catering": "^2.1.0" }, @@ -22517,6 +22532,7 @@ "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-2.1.0.tgz", "integrity": "sha512-E486g1NCjW5cF78KGPrMDRBYzPuueMZ6VBXHT6gC7A8UYWGiM14fGgp+s/L1oFfDWSPV/+SFkYCmZ0SiESkRKA==", "dev": true, + "optional": true, "engines": { "node": ">=10" } @@ -22583,6 +22599,7 @@ "integrity": "sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ==", "dev": true, "hasInstallScript": true, + "optional": true, "dependencies": { "abstract-leveldown": "~6.2.1", "napi-macros": "~2.0.0", @@ -22597,6 +22614,7 @@ "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", "dev": true, + "optional": true, "dependencies": { "buffer": "^5.5.0", "immediate": "^3.2.3", @@ -22613,6 +22631,7 @@ "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", "dev": true, + "optional": true, "engines": { "node": ">=6" } @@ -22622,6 +22641,7 @@ "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", "dev": true, + "optional": true, "dependencies": { "xtend": "^4.0.2" }, @@ -22634,6 +22654,7 @@ "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.1.1.tgz", "integrity": "sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ==", "dev": true, + "optional": true, "bin": { "node-gyp-build": "bin.js", "node-gyp-build-optional": "optional.js", @@ -23740,7 +23761,8 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", - "dev": true + "dev": true, + "optional": true }, "node_modules/natural-compare": { "version": "1.4.0", @@ -23926,6 +23948,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -23936,12 +23959,14 @@ "node_modules/normalize-package-data/node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "node_modules/normalize-package-data/node_modules/semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, "bin": { "semver": "bin/semver" } @@ -24128,6 +24153,7 @@ "version": "11.0.1", "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-11.0.1.tgz", "integrity": "sha512-M7s1BD4NxdAvBKUPqqRW957Xwcl/4Zvo8Aj+ANrzvIPzGJZElrH7Z//rSaec2ORcND6FHHLnZeY8qgTpXDMFQQ==", + "dev": true, "dependencies": { "hosted-git-info": "^7.0.0", "proc-log": "^3.0.0", @@ -28706,6 +28732,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-3.0.0.tgz", "integrity": "sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==", + "dev": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -29670,6 +29697,7 @@ "version": "7.5.3", "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.3.tgz", "integrity": "sha512-QBlUtyVk/5EeHbi7X0fw6liDZc7BBmEaSYn01fMU1OUYbf6GPsbTtd8WmnqbI20SeycoHSeiybkE/q1Q+qlThQ==", + "dev": true, "dependencies": { "lru-cache": "^6.0.0" }, @@ -29684,6 +29712,7 @@ "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -29694,7 +29723,8 @@ "node_modules/semver/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/send": { "version": "0.18.0", @@ -29938,7 +29968,8 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "node_modules/simple-concat": { "version": "1.0.1", @@ -30260,6 +30291,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -30268,12 +30300,14 @@ "node_modules/spdx-exceptions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==" + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -30282,7 +30316,8 @@ "node_modules/spdx-license-ids": { "version": "3.0.16", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==" + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true }, "node_modules/split-on-first": { "version": "1.1.0", @@ -31166,7 +31201,9 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "peer": true }, "node_modules/through": { "version": "2.3.8", @@ -32303,6 +32340,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -32312,6 +32350,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.0.tgz", "integrity": "sha512-YuKoXDAhBYxY7SfOKxHBDoSyENFeW5VvIIQp2TGQuit8gpK6MnWaQelBKxso72DoxTZfZdcP3W90LqpSkgPzLQ==", + "dev": true, "dependencies": { "builtins": "^5.0.0" }, @@ -32388,6 +32427,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, "dependencies": { "defaults": "^1.0.3" } @@ -34743,6 +34783,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -35050,10 +35091,6 @@ "@types/pg": "^8.6.5" } }, - "packages/batcher/address-validator/node_modules/tmp-carp-client": { - "resolved": "../carp/webserver/client/dist", - "link": true - }, "packages/batcher/batcher-standalone": { "name": "@standalone/paima-batcher", "version": "1.0.0", @@ -35192,10 +35229,6 @@ "typescript": "^5.3.2" } }, - "packages/engine/paima-funnel/node_modules/tmp-carp-client": { - "resolved": "../carp/webserver/client/dist", - "link": true - }, "packages/engine/paima-rest": { "name": "@paima/rest", "version": "1.0.0", diff --git a/packages/engine/paima-rest/src/tsoa/routes.ts b/packages/engine/paima-rest/src/tsoa/routes.ts new file mode 100644 index 000000000..cd84e808a --- /dev/null +++ b/packages/engine/paima-rest/src/tsoa/routes.ts @@ -0,0 +1,347 @@ +/* tslint:disable */ +/* eslint-disable */ +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { Controller, ValidationService, FieldErrors, ValidateError, TsoaRoute, HttpStatusCodeLiteral, TsoaResponse, fetchMiddlewares } from '@tsoa/runtime'; +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { DryRunController } from './../controllers/BasicControllers'; +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { VersionController } from './../controllers/BasicControllers'; +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { LatestProcessedBlockheightController } from './../controllers/BasicControllers'; +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { EmulatedBlockActiveController } from './../controllers/BasicControllers'; +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { DeploymentBlockheightToEmulatedController } from './../controllers/BasicControllers'; +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +import { ConfirmInputAcceptanceController } from './../controllers/BasicControllers'; +import type { RequestHandler, Router } from 'express'; + +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + +const models: TsoaRoute.Models = { + "DryRunResponse": { + "dataType": "refAlias", + "type": {"dataType":"nestedObjectLiteral","nestedProperties":{"valid":{"dataType":"boolean","required":true}},"validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "VersionString": { + "dataType": "refAlias", + "type": {"dataType":"string","validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "LatestProcessedBlockheightResponse": { + "dataType": "refAlias", + "type": {"dataType":"nestedObjectLiteral","nestedProperties":{"block_height":{"dataType":"double","required":true}},"validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "EmulatedBlockActiveResponse": { + "dataType": "refAlias", + "type": {"dataType":"nestedObjectLiteral","nestedProperties":{"emulatedBlocksActive":{"dataType":"boolean","required":true}},"validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "SuccessfulResult_number_": { + "dataType": "refObject", + "properties": { + "success": {"dataType":"enum","enums":[true],"required":true}, + "result": {"dataType":"double","required":true}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "FailedResult": { + "dataType": "refObject", + "properties": { + "success": {"dataType":"enum","enums":[false],"required":true}, + "errorMessage": {"dataType":"string","required":true}, + "errorCode": {"dataType":"double"}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "Result_number_": { + "dataType": "refAlias", + "type": {"dataType":"union","subSchemas":[{"ref":"SuccessfulResult_number_"},{"ref":"FailedResult"}],"validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "DeploymentBlockheightToEmulatedResponse": { + "dataType": "refAlias", + "type": {"ref":"Result_number_","validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "SuccessfulResult_boolean_": { + "dataType": "refObject", + "properties": { + "success": {"dataType":"enum","enums":[true],"required":true}, + "result": {"dataType":"boolean","required":true}, + }, + "additionalProperties": false, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "Result_boolean_": { + "dataType": "refAlias", + "type": {"dataType":"union","subSchemas":[{"ref":"SuccessfulResult_boolean_"},{"ref":"FailedResult"}],"validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + "ConfirmInputAcceptanceResponse": { + "dataType": "refAlias", + "type": {"ref":"Result_boolean_","validators":{}}, + }, + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +}; +const validationService = new ValidationService(models); + +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + +export function RegisterRoutes(app: Router) { + // ########################################################################################################### + // NOTE: If you do not see routes for all of your controllers in this file, then you might not have informed tsoa of where to look + // Please look into the "controllerPathGlobs" config option described in the readme: https://github.com/lukeautry/tsoa + // ########################################################################################################### + app.get('/dry_run', + ...(fetchMiddlewares(DryRunController)), + ...(fetchMiddlewares(DryRunController.prototype.get)), + + function DryRunController_get(request: any, response: any, next: any) { + const args = { + gameInput: {"in":"query","name":"gameInput","required":true,"dataType":"string"}, + userAddress: {"in":"query","name":"userAddress","required":true,"dataType":"string"}, + }; + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = getValidatedArgs(args, request, response); + + const controller = new DryRunController(); + + + const promise = controller.get.apply(controller, validatedArgs as any); + promiseHandler(controller, promise, response, undefined, next); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + app.get('/backend_version', + ...(fetchMiddlewares(VersionController)), + ...(fetchMiddlewares(VersionController.prototype.get)), + + function VersionController_get(request: any, response: any, next: any) { + const args = { + }; + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = getValidatedArgs(args, request, response); + + const controller = new VersionController(); + + + const promise = controller.get.apply(controller, validatedArgs as any); + promiseHandler(controller, promise, response, undefined, next); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + app.get('/latest_processed_blockheight', + ...(fetchMiddlewares(LatestProcessedBlockheightController)), + ...(fetchMiddlewares(LatestProcessedBlockheightController.prototype.get)), + + function LatestProcessedBlockheightController_get(request: any, response: any, next: any) { + const args = { + }; + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = getValidatedArgs(args, request, response); + + const controller = new LatestProcessedBlockheightController(); + + + const promise = controller.get.apply(controller, validatedArgs as any); + promiseHandler(controller, promise, response, undefined, next); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + app.get('/emulated_blocks_active', + ...(fetchMiddlewares(EmulatedBlockActiveController)), + ...(fetchMiddlewares(EmulatedBlockActiveController.prototype.get)), + + function EmulatedBlockActiveController_get(request: any, response: any, next: any) { + const args = { + }; + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = getValidatedArgs(args, request, response); + + const controller = new EmulatedBlockActiveController(); + + + const promise = controller.get.apply(controller, validatedArgs as any); + promiseHandler(controller, promise, response, undefined, next); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + app.get('/deployment_blockheight_to_emulated', + ...(fetchMiddlewares(DeploymentBlockheightToEmulatedController)), + ...(fetchMiddlewares(DeploymentBlockheightToEmulatedController.prototype.get)), + + function DeploymentBlockheightToEmulatedController_get(request: any, response: any, next: any) { + const args = { + deploymentBlockheight: {"in":"query","name":"deploymentBlockheight","required":true,"dataType":"double"}, + }; + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = getValidatedArgs(args, request, response); + + const controller = new DeploymentBlockheightToEmulatedController(); + + + const promise = controller.get.apply(controller, validatedArgs as any); + promiseHandler(controller, promise, response, undefined, next); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + app.get('/confirm_input_acceptance', + ...(fetchMiddlewares(ConfirmInputAcceptanceController)), + ...(fetchMiddlewares(ConfirmInputAcceptanceController.prototype.get)), + + function ConfirmInputAcceptanceController_get(request: any, response: any, next: any) { + const args = { + gameInput: {"in":"query","name":"gameInput","required":true,"dataType":"string"}, + userAddress: {"in":"query","name":"userAddress","required":true,"dataType":"string"}, + blockHeight: {"in":"query","name":"blockHeight","required":true,"dataType":"double"}, + }; + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + let validatedArgs: any[] = []; + try { + validatedArgs = getValidatedArgs(args, request, response); + + const controller = new ConfirmInputAcceptanceController(); + + + const promise = controller.get.apply(controller, validatedArgs as any); + promiseHandler(controller, promise, response, undefined, next); + } catch (err) { + return next(err); + } + }); + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + function isController(object: any): object is Controller { + return 'getHeaders' in object && 'getStatus' in object && 'setStatus' in object; + } + + function promiseHandler(controllerObj: any, promise: any, response: any, successStatus: any, next: any) { + return Promise.resolve(promise) + .then((data: any) => { + let statusCode = successStatus; + let headers; + if (isController(controllerObj)) { + headers = controllerObj.getHeaders(); + statusCode = controllerObj.getStatus() || statusCode; + } + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + returnHandler(response, statusCode, data, headers) + }) + .catch((error: any) => next(error)); + } + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + function returnHandler(response: any, statusCode?: number, data?: any, headers: any = {}) { + if (response.headersSent) { + return; + } + Object.keys(headers).forEach((name: string) => { + response.set(name, headers[name]); + }); + if (data && typeof data.pipe === 'function' && data.readable && typeof data._read === 'function') { + response.status(statusCode || 200) + data.pipe(response); + } else if (data !== null && data !== undefined) { + response.status(statusCode || 200).json(data); + } else { + response.status(statusCode || 204).end(); + } + } + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + function responder(response: any): TsoaResponse { + return function(status, data, headers) { + returnHandler(response, status, data, headers); + }; + }; + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa + + function getValidatedArgs(args: any, request: any, response: any): any[] { + const fieldErrors: FieldErrors = {}; + const values = Object.keys(args).map((key) => { + const name = args[key].name; + switch (args[key].in) { + case 'request': + return request; + case 'query': + return validationService.ValidateParam(args[key], request.query[name], name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); + case 'queries': + return validationService.ValidateParam(args[key], request.query, name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); + case 'path': + return validationService.ValidateParam(args[key], request.params[name], name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); + case 'header': + return validationService.ValidateParam(args[key], request.header(name), name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); + case 'body': + return validationService.ValidateParam(args[key], request.body, name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); + case 'body-prop': + return validationService.ValidateParam(args[key], request.body[name], name, fieldErrors, 'body.', {"noImplicitAdditionalProperties":"throw-on-extras"}); + case 'formData': + if (args[key].dataType === 'file') { + return validationService.ValidateParam(args[key], request.file, name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); + } else if (args[key].dataType === 'array' && args[key].array.dataType === 'file') { + return validationService.ValidateParam(args[key], request.files, name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); + } else { + return validationService.ValidateParam(args[key], request.body[name], name, fieldErrors, undefined, {"noImplicitAdditionalProperties":"throw-on-extras"}); + } + case 'res': + return responder(response); + } + }); + + if (Object.keys(fieldErrors).length > 0) { + throw new ValidateError(fieldErrors, ''); + } + return values; + } + + // WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa +} + +// WARNING: This file was auto-generated with tsoa. Please do not modify it. Re-run tsoa to re-generate this file: https://github.com/lukeautry/tsoa