@polkadot-api/substrate-client 0.6.1-canary.f1c6573 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{esm/archive/archive.mjs → archive/archive.js} +5 -5
- package/dist/archive/archive.js.map +1 -0
- package/dist/{esm/archive/errors.mjs → archive/errors.js} +1 -1
- package/dist/archive/errors.js.map +1 -0
- package/dist/{esm/archive/storage-subscription.mjs → archive/storage-subscription.js} +2 -2
- package/dist/archive/storage-subscription.js.map +1 -0
- package/dist/{esm/archive/storage.mjs → archive/storage.js} +2 -2
- package/dist/archive/storage.js.map +1 -0
- package/dist/{esm/chainhead/body.mjs → chainhead/body.js} +3 -3
- package/dist/chainhead/body.js.map +1 -0
- package/dist/{esm/chainhead/call.mjs → chainhead/call.js} +3 -3
- package/dist/chainhead/call.js.map +1 -0
- package/dist/{esm/chainhead/chainhead.mjs → chainhead/chainhead.js} +11 -11
- package/dist/chainhead/chainhead.js.map +1 -0
- package/dist/{esm/chainhead/errors.mjs → chainhead/errors.js} +9 -9
- package/dist/chainhead/errors.js.map +1 -0
- package/dist/{esm/chainhead/header.mjs → chainhead/header.js} +2 -2
- package/dist/chainhead/header.js.map +1 -0
- package/dist/{esm/chainhead/operation-promise.mjs → chainhead/operation-promise.js} +5 -5
- package/dist/chainhead/operation-promise.js.map +1 -0
- package/dist/{esm/chainhead/storage-subscription.mjs → chainhead/storage-subscription.js} +5 -5
- package/dist/chainhead/storage-subscription.js.map +1 -0
- package/dist/{esm/chainhead/storage.mjs → chainhead/storage.js} +6 -6
- package/dist/chainhead/storage.js.map +1 -0
- package/dist/{esm/chainhead/unpin.mjs → chainhead/unpin.js} +2 -2
- package/dist/chainhead/unpin.js.map +1 -0
- package/dist/{esm/chainspec.mjs → chainspec.js} +3 -3
- package/dist/chainspec.js.map +1 -0
- package/dist/index.js +6 -648
- package/dist/index.js.map +1 -1
- package/dist/{esm/internal-utils/abortablePromiseFn.mjs → internal-utils/abortablePromiseFn.js} +1 -1
- package/dist/internal-utils/abortablePromiseFn.js.map +1 -0
- package/dist/{esm/internal-utils/deferred-promise.mjs → internal-utils/deferred-promise.js} +1 -1
- package/dist/internal-utils/deferred-promise.js.map +1 -0
- package/dist/{esm/internal-utils/noop.mjs → internal-utils/noop.js} +1 -1
- package/dist/internal-utils/noop.js.map +1 -0
- package/dist/{esm/methods.mjs → methods.js} +1 -1
- package/dist/methods.js.map +1 -0
- package/dist/{esm/substrate-client.mjs → substrate-client.js} +8 -8
- package/dist/substrate-client.js.map +1 -0
- package/dist/{esm/transaction/transaction.mjs → transaction/transaction.js} +3 -3
- package/dist/transaction/transaction.js.map +1 -0
- package/package.json +11 -21
- package/dist/esm/archive/archive.mjs.map +0 -1
- package/dist/esm/archive/errors.mjs.map +0 -1
- package/dist/esm/archive/storage-subscription.mjs.map +0 -1
- package/dist/esm/archive/storage.mjs.map +0 -1
- package/dist/esm/chainhead/body.mjs.map +0 -1
- package/dist/esm/chainhead/call.mjs.map +0 -1
- package/dist/esm/chainhead/chainhead.mjs.map +0 -1
- package/dist/esm/chainhead/errors.mjs.map +0 -1
- package/dist/esm/chainhead/header.mjs.map +0 -1
- package/dist/esm/chainhead/operation-promise.mjs.map +0 -1
- package/dist/esm/chainhead/storage-subscription.mjs.map +0 -1
- package/dist/esm/chainhead/storage.mjs.map +0 -1
- package/dist/esm/chainhead/unpin.mjs.map +0 -1
- package/dist/esm/chainspec.mjs.map +0 -1
- package/dist/esm/index.mjs +0 -7
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/internal-utils/abortablePromiseFn.mjs.map +0 -1
- package/dist/esm/internal-utils/deferred-promise.mjs.map +0 -1
- package/dist/esm/internal-utils/noop.mjs.map +0 -1
- package/dist/esm/methods.mjs.map +0 -1
- package/dist/esm/substrate-client.mjs.map +0 -1
- package/dist/esm/transaction/transaction.mjs.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/chainhead/errors.ts","../src/internal-utils/abortablePromiseFn.ts","../src/internal-utils/deferred-promise.ts","../src/internal-utils/noop.ts","../src/methods.ts","../src/chainhead/operation-promise.ts","../src/chainhead/body.ts","../src/chainhead/call.ts","../src/chainhead/header.ts","../src/chainhead/storage-subscription.ts","../src/chainhead/storage.ts","../src/chainhead/unpin.ts","../src/chainhead/chainhead.ts","../src/archive/errors.ts","../src/archive/storage-subscription.ts","../src/archive/storage.ts","../src/archive/archive.ts","../src/transaction/transaction.ts","../src/chainspec.ts","../src/substrate-client.ts"],"sourcesContent":["export class StopError extends Error {\n static errorName = \"StopError\"\n\n constructor() {\n super(\"ChainHead stopped\")\n this.name = StopError.errorName\n }\n}\n\nexport class DisjointError extends Error {\n static errorName = \"DisjointError\"\n\n constructor() {\n super(\"ChainHead disjointed\")\n this.name = DisjointError.errorName\n }\n}\n\nexport class OperationLimitError extends Error {\n static errorName = \"OperationLimitError\"\n\n constructor() {\n super(\"ChainHead operations limit reached\")\n this.name = OperationLimitError.errorName\n }\n}\n\nexport class OperationError extends Error {\n static errorName = \"OperationError\"\n\n constructor(error: string) {\n super(error)\n this.name = OperationError.errorName\n }\n}\n\nexport class OperationInaccessibleError extends Error {\n static errorName = \"OperationInaccessibleError\"\n\n constructor() {\n super(\"ChainHead operation inaccessible\")\n this.name = OperationInaccessibleError.errorName\n }\n}\n","import { AbortError, noop } from \"@polkadot-api/utils\"\nimport { AbortablePromiseFn } from \"../common-types\"\n\nexport const abortablePromiseFn =\n <T, A extends Array<any>>(\n fn: (\n ...args: [...[res: (x: T) => void, rej: (e: any) => void], ...A]\n ) => () => void,\n ): AbortablePromiseFn<A, T> =>\n (...args): Promise<T> =>\n new Promise((res, rej) => {\n let cancel = noop\n\n const [actualArgs, abortSignal] =\n args[args.length - 1] instanceof AbortSignal\n ? ([args.slice(0, args.length - 1), args[args.length - 1]] as [\n A,\n AbortSignal,\n ])\n : ([args] as unknown as [A])\n\n const onAbort = () => {\n cancel()\n rej(new AbortError())\n }\n\n abortSignal?.addEventListener(\"abort\", onAbort, { once: true })\n\n const withCleanup =\n <T>(fn: (x: T) => void): ((x: T) => void) =>\n (x) => {\n cancel = noop\n abortSignal?.removeEventListener(\"abort\", onAbort)\n fn(x)\n }\n\n cancel = fn(...[withCleanup(res), withCleanup(rej), ...actualArgs])\n })\n","export interface DeferredPromise<T> {\n promise: Promise<T>\n res: (value: T) => void\n rej: (err: Error) => void\n}\n\nexport function deferred<T>(): DeferredPromise<T> {\n let res: (value: T) => void = () => {}\n let rej: (err: Error) => void = () => {}\n\n const promise = new Promise<T>((_res, _rej) => {\n res = _res\n rej = _rej\n })\n\n return { promise, res, rej }\n}\n","export const noop = (): void => {}\n","const chainHead = {\n body: \"\",\n call: \"\",\n continue: \"\",\n follow: \"\",\n header: \"\",\n stopOperation: \"\",\n storage: \"\",\n unfollow: \"\",\n unpin: \"\",\n followEvent: \"\",\n}\n\nconst chainSpec = {\n chainName: \"\",\n genesisHash: \"\",\n properties: \"\",\n}\n\nconst transaction = {\n broadcast: \"\",\n stop: \"\",\n}\n\nObject.entries({ chainHead, chainSpec, transaction }).forEach(\n ([fnGroupName, methods]) => {\n Object.keys(methods).forEach((methodName) => {\n ;(methods as any)[methodName] = `${fnGroupName}_v1_${methodName}`\n })\n },\n)\n\nexport { chainHead, transaction, chainSpec }\n","import { abortablePromiseFn, noop } from \"@/internal-utils\"\nimport {\n CommonOperationEventsRpc,\n OperationResponseRpc,\n} from \"./json-rpc-types\"\nimport {\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./errors\"\nimport { ClientInnerRequest } from \"./public-types\"\nimport { chainHead } from \"@/methods\"\n\nexport const createOperationPromise =\n <I extends { operationId: string; event: string }, O, A extends Array<any>>(\n operationName: string,\n factory: (\n ...args: A\n ) => [\n Array<any>,\n (e: I, res: (x: O) => void, rej: (e: Error) => void) => void,\n ],\n ) =>\n (\n request: ClientInnerRequest<\n OperationResponseRpc,\n I | CommonOperationEventsRpc\n >,\n ) =>\n abortablePromiseFn<O, A>((res, rej, ...args) => {\n let isRunning = true\n let cancel = () => {\n isRunning = false\n }\n\n const [requestArgs, logicCb] = factory(...args)\n request(operationName, requestArgs, {\n onSuccess: (response, followSubscription) => {\n if (response.result === \"limitReached\")\n return rej(new OperationLimitError())\n\n const { operationId } = response\n const stopOperation = () => {\n request(chainHead.stopOperation, [operationId])\n }\n\n if (!isRunning) return stopOperation()\n\n let done = noop\n const _res = (x: O) => {\n isRunning = false\n done()\n res(x)\n }\n const _rej = (x: Error) => {\n isRunning = false\n done()\n rej(x)\n }\n\n done = followSubscription(operationId, {\n next: (e) => {\n const _e = e as CommonOperationEventsRpc\n if (_e.event === \"operationError\")\n rej(new OperationError(_e.error))\n else if (_e.event === \"operationInaccessible\")\n rej(new OperationInaccessibleError())\n else logicCb(e as I, _res, _rej)\n },\n error: _rej,\n })\n\n cancel = () => {\n if (isRunning) {\n done()\n stopOperation()\n }\n }\n },\n onError: rej,\n })\n\n return () => {\n cancel()\n }\n })\n","import { chainHead } from \"@/methods\"\nimport type { OperationBodyDoneRpc } from \"./json-rpc-types\"\nimport { createOperationPromise } from \"./operation-promise\"\n\nexport const createBodyFn = createOperationPromise(\n chainHead.body,\n (hash: string) => [\n [hash],\n (e: OperationBodyDoneRpc, res: (x: Array<string>) => void) => {\n res(e.value)\n },\n ],\n)\n","import { chainHead } from \"@/methods\"\nimport type { OperationCallDoneRpc } from \"./json-rpc-types\"\nimport { createOperationPromise } from \"./operation-promise\"\n\nexport const createCallFn = createOperationPromise(\n chainHead.call,\n (hash: string, fnName: string, callParameters: string) => [\n [hash, fnName, callParameters],\n (e: OperationCallDoneRpc, res: (output: string) => void) => {\n res(e.output)\n },\n ],\n)\n","import { chainHead } from \"@/methods\"\nimport { ClientInnerRequest } from \"./public-types\"\n\nexport const createHeaderFn =\n (request: ClientInnerRequest<string, unknown>) => (hash: string) =>\n new Promise<string>((res, rej) => {\n request(chainHead.header, [hash], {\n onSuccess: res,\n onError: rej,\n })\n })\n","import { noop } from \"@polkadot-api/utils\"\nimport type { ClientInnerRequest, FollowResponse } from \"./public-types\"\nimport {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { chainHead } from \"@/methods\"\nimport {\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./errors\"\n\nexport const createStorageCb =\n (\n request: ClientInnerRequest<\n OperationStorageStartedRpc | LimitReachedRpc,\n | CommonOperationEventsRpc\n | OperationStorageItemsRpc\n | OperationStorageDoneRpc\n | OperationWaitingForContinueRpc\n >,\n ): FollowResponse[\"storageSubscription\"] =>\n (hash, inputs, childTrie, onItems, onError, onDone, onDiscardedItems) => {\n if (inputs.length === 0) {\n onDone()\n return noop\n }\n\n let isRunning = true\n let cancel = () => {\n isRunning = false\n }\n\n request(chainHead.storage, [hash, inputs, childTrie], {\n onSuccess: (response, followSubscription) => {\n if (\n response.result === \"limitReached\" ||\n response.discardedItems === inputs.length\n )\n return onError(new OperationLimitError())\n\n const { operationId } = response\n const stopOperation = () => {\n request(chainHead.stopOperation, [operationId])\n }\n\n if (!isRunning) return stopOperation()\n\n const doneListening = followSubscription(response.operationId, {\n next: (event) => {\n switch (event.event) {\n case \"operationStorageItems\": {\n onItems(event.items)\n break\n }\n case \"operationStorageDone\": {\n _onDone()\n break\n }\n case \"operationError\": {\n _onError(new OperationError(event.error))\n break\n }\n case \"operationInaccessible\": {\n _onError(new OperationInaccessibleError())\n break\n }\n default:\n request(chainHead.continue, [event.operationId])\n }\n },\n error: onError,\n })\n\n cancel = () => {\n doneListening()\n request(chainHead.stopOperation, [response.operationId])\n }\n\n const _onError = (e: Error) => {\n cancel = noop\n doneListening()\n onError(e)\n }\n\n const _onDone = () => {\n cancel = noop\n doneListening()\n onDone()\n }\n\n onDiscardedItems(response.discardedItems)\n },\n onError,\n })\n\n return () => {\n cancel()\n }\n }\n","import { OperationLimitError } from \"./errors\"\nimport type {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { abortablePromiseFn } from \"@/internal-utils\"\nimport { createStorageCb } from \"./storage-subscription\"\nimport type { ClientInnerRequest, FollowResponse } from \"./public-types\"\n\nexport const createStorageFn = (\n request: ClientInnerRequest<\n OperationStorageStartedRpc | LimitReachedRpc,\n | CommonOperationEventsRpc\n | OperationStorageItemsRpc\n | OperationStorageDoneRpc\n | OperationWaitingForContinueRpc\n >,\n): FollowResponse[\"storage\"] => {\n const cbStore = createStorageCb(request)\n return abortablePromiseFn((resolve, reject, hash, type, key, childTrie) => {\n const isDescendants = type.startsWith(\"descendants\")\n let result: any = isDescendants ? [] : null\n\n const onItems: Parameters<typeof cbStore>[3] = isDescendants\n ? (items) => {\n result.push(items)\n }\n : (items) => {\n result = items[0]?.[type as \"value\"]\n }\n\n const cancel = cbStore(\n hash,\n [{ key, type }],\n childTrie ?? null,\n onItems,\n reject,\n () => {\n try {\n resolve(isDescendants ? result.flat() : result)\n } catch (e) {\n reject(e)\n }\n },\n (nDiscarded) => {\n if (nDiscarded > 0) {\n cancel()\n reject(new OperationLimitError())\n }\n },\n )\n return cancel\n })\n}\n","import { chainHead } from \"@/methods\"\nimport { ClientInnerRequest } from \"./public-types\"\n\nexport const createUnpinFn =\n (request: ClientInnerRequest<null, unknown>) => (hashes: string[]) =>\n hashes.length > 0\n ? new Promise<void>((res, rej) => {\n request(chainHead.unpin, [hashes], {\n onSuccess() {\n res()\n },\n onError: rej,\n })\n })\n : Promise.resolve()\n","import {\n DestroyedError,\n Subscriber,\n getSubscriptionsManager,\n ClientRequest,\n FollowSubscriptionCb,\n} from \"@polkadot-api/raw-client\"\nimport type {\n FollowEventWithRuntimeRpc,\n FollowEventWithoutRuntimeRpc,\n OperationEventsRpc,\n StopRpc,\n} from \"./json-rpc-types\"\nimport type {\n ChainHead,\n ClientInnerRequest,\n FollowEventWithoutRuntime,\n FollowEventWithRuntime,\n FollowResponse,\n} from \"./public-types\"\nimport { noop, deferred } from \"@/internal-utils\"\nimport { createBodyFn } from \"./body\"\nimport { createCallFn } from \"./call\"\nimport { createHeaderFn } from \"./header\"\nimport { createStorageFn } from \"./storage\"\nimport { createUnpinFn } from \"./unpin\"\nimport { DisjointError, StopError } from \"./errors\"\nimport { createStorageCb } from \"./storage-subscription\"\nimport { chainHead } from \"@/methods\"\n\ntype FollowEventRpc =\n | FollowEventWithRuntimeRpc\n | FollowEventWithoutRuntimeRpc\n | OperationEventsRpc\n | StopRpc\n\nfunction isOperationEvent(event: FollowEventRpc): event is OperationEventsRpc {\n return (event as OperationEventsRpc).operationId !== undefined\n}\n\nexport function getChainHead(\n request: ClientRequest<string, FollowEventRpc>,\n): ChainHead {\n return (\n withRuntime: boolean,\n onFollowEvent:\n | ((event: FollowEventWithoutRuntime) => void)\n | ((event: FollowEventWithRuntime) => void),\n onFollowError: (e: Error) => void,\n ): FollowResponse => {\n const subscriptions = getSubscriptionsManager<OperationEventsRpc>()\n const ongoingRequests = new Set<() => void>()\n const deferredFollow = deferred<string | Error>()\n // If it's:\n // - a (deferred)`Promise`: it means that the susbscription is active AND that the response to the follow request has not been resolved\n // - a `string`: it means that the subscription is active and that the response to the follow request has been successful.\n // - `null`: it means that the subscription is inactive (for whatever reason: error or unsubscription)\n let followSubscription: Promise<string | Error> | string | null =\n deferredFollow.promise\n\n let stopListeningToFollowEvents = noop\n const unfollowRequest = (subscriptionId: string) => {\n request(chainHead.unfollow, [subscriptionId])\n }\n\n const stopEverything = (sendUnfollow: boolean) => {\n stopListeningToFollowEvents()\n // if it's `null` it means that everything has already been stopped\n if (followSubscription === null) return\n\n if (sendUnfollow) {\n if (followSubscription instanceof Promise) {\n followSubscription.then((x) => {\n if (typeof x === \"string\") unfollowRequest(x)\n })\n } else unfollowRequest(followSubscription)\n }\n followSubscription = null\n ongoingRequests.forEach((cb) => {\n cb()\n })\n ongoingRequests.clear()\n subscriptions.errorAll(new DisjointError())\n }\n\n const onAllFollowEventsNext = (event: FollowEventRpc) => {\n if (isOperationEvent(event))\n return subscriptions.next(event.operationId, event)\n\n switch (event.event) {\n case \"stop\":\n onFollowError(new StopError())\n return stopEverything(false)\n case \"initialized\":\n case \"newBlock\":\n case \"bestBlockChanged\":\n case \"finalized\":\n const { event: type, ...rest } = event\n return onFollowEvent({ type, ...rest } as any)\n }\n }\n\n const onAllFollowEventsError = (error: Error) => {\n onFollowError(error)\n stopEverything(!(error instanceof DestroyedError))\n }\n\n request(chainHead.follow, [withRuntime], {\n onSuccess: (\n subscriptionId: string,\n follow: FollowSubscriptionCb<FollowEventRpc>,\n ) => {\n // If the consumer has unsubscribed in between, then it will be `null`\n // and it should stay that way\n if (followSubscription instanceof Promise) {\n followSubscription = subscriptionId\n stopListeningToFollowEvents = follow(subscriptionId, {\n next: onAllFollowEventsNext,\n error: onAllFollowEventsError,\n })\n }\n deferredFollow.res(subscriptionId)\n },\n onError: (e: Error) => {\n followSubscription = null\n deferredFollow.res(e)\n onFollowError(e)\n },\n })\n\n const fRequest: ClientInnerRequest<any, any> = (method, params, cb) => {\n const disjoint = () => {\n cb?.onError(new DisjointError())\n }\n\n if (followSubscription === null) {\n disjoint()\n return noop\n }\n\n const onSubscription = (subscription: string) => {\n if (!cb) return request(method, [subscription, ...params])\n\n ongoingRequests.add(disjoint)\n\n const onSubscribeOperation = (\n operationId: string,\n subscriber: Subscriber<any>,\n ) => {\n if (followSubscription === null) {\n subscriber.error(new DisjointError())\n return noop\n }\n\n subscriptions.subscribe(operationId, subscriber)\n\n return () => {\n subscriptions.unsubscribe(operationId)\n }\n }\n\n const cleanup = request(method, [subscription, ...params], {\n onSuccess: (response) => {\n ongoingRequests.delete(disjoint)\n cb.onSuccess(response, onSubscribeOperation)\n },\n onError: (e) => {\n ongoingRequests.delete(disjoint)\n cb.onError(e)\n },\n })\n\n return () => {\n ongoingRequests.delete(disjoint)\n cleanup()\n }\n }\n\n if (typeof followSubscription === \"string\")\n return onSubscription(followSubscription)\n\n let onCancel = noop\n followSubscription.then((x) => {\n if (x instanceof Error) return disjoint()\n if (followSubscription) onCancel = onSubscription(x)\n })\n\n return () => {\n onCancel()\n }\n }\n\n return {\n unfollow() {\n stopEverything(true)\n },\n body: createBodyFn(fRequest),\n call: createCallFn(fRequest),\n header: createHeaderFn(fRequest),\n storage: createStorageFn(fRequest),\n storageSubscription: createStorageCb(fRequest),\n unpin: createUnpinFn(fRequest),\n _request: fRequest,\n }\n }\n}\n","export class BlockHashNotFoundError extends Error {\n static errorName = \"BlockHashNotFoundError\"\n\n constructor(hash: string) {\n super(`Invalid BlockHash: ${hash}`)\n this.name = BlockHashNotFoundError.errorName\n }\n}\n\nexport class StorageError extends Error {\n static errorName = \"StorageError\"\n\n constructor(message: string) {\n super(`Storage Error: ${message}`)\n this.name = StorageError.errorName\n }\n}\n\nexport class CallError extends Error {\n static errorName = \"CallError\"\n\n constructor(message: string) {\n super(`Call Error: ${message}`)\n this.name = CallError.errorName\n }\n}\n","import type { ClientRequest } from \"@polkadot-api/raw-client\"\nimport { noop } from \"@polkadot-api/utils\"\nimport { Archive } from \"./public-types\"\nimport { StorageItemResponse } from \"@/chainhead\"\nimport { StorageError } from \"./errors\"\n\ntype StorageEvent = {\n event: \"storage\"\n} & StorageItemResponse\n\ntype StorageDone = {\n event: \"storageDone\"\n}\n\ntype StorageErrorEvent = {\n event: \"storageError\"\n error: string\n}\n\nexport const createStorageCb =\n (\n archiveRequest: ClientRequest<\n string,\n StorageEvent | StorageDone | StorageErrorEvent\n >,\n ): Archive[\"storageSubscription\"] =>\n (hash, inputs, childTrie, onItem, onError, onDone) => {\n if (inputs.length === 0) {\n onDone()\n return noop\n }\n\n let isRunning = true\n let cancel = () => {\n isRunning = false\n }\n\n archiveRequest(\"storage\", [hash, inputs, childTrie], {\n onSuccess: (operationId, followSubscription) => {\n const stopOperation = () => {\n archiveRequest(\"stopStorage\", [operationId])\n }\n\n if (!isRunning) return stopOperation()\n\n const doneListening = followSubscription(operationId, {\n next: (event) => {\n const { event: type } = event\n if (type === \"storage\") {\n const { event: _, ...item } = event\n onItem(item)\n } else if (type === \"storageDone\") _onDone()\n else _onError(new StorageError(event.error))\n },\n error: onError,\n })\n\n const tearDown = () => {\n cancel = noop\n doneListening()\n }\n\n cancel = () => {\n tearDown()\n stopOperation()\n }\n\n const _onError = (e: Error) => {\n tearDown()\n onError(e)\n }\n\n const _onDone = () => {\n tearDown()\n onDone()\n }\n },\n onError,\n })\n\n return () => {\n cancel()\n }\n }\n","import { abortablePromiseFn } from \"@/internal-utils\"\nimport type { Archive } from \"./public-types\"\n\nexport const createStorageFn = (\n cbStore: Archive[\"storageSubscription\"],\n): Archive[\"storage\"] =>\n abortablePromiseFn((resolve, reject, hash, type, key, childTrie) => {\n const isDescendants = type.startsWith(\"descendants\")\n\n let result: any = isDescendants ? [] : null\n const onItem: Parameters<typeof cbStore>[3] = isDescendants\n ? result.push.bind(result)\n : ({ [type]: res }) => {\n result = res\n }\n\n return cbStore(\n hash,\n [{ key, type }],\n childTrie,\n onItem,\n (e) => {\n reject(e)\n result = null\n },\n () => {\n resolve(result)\n result = null\n },\n )\n })\n","import { abortablePromiseFn } from \"@/internal-utils\"\nimport { type ClientRequest } from \"@polkadot-api/raw-client\"\nimport { createStorageCb } from \"./storage-subscription\"\nimport { createStorageFn } from \"./storage\"\nimport { Archive } from \"./public-types\"\nimport { CallError, BlockHashNotFoundError } from \"./errors\"\n\nconst identity =\n <T>() =>\n (x: T): T =>\n x\n\nconst handleInvalidBlockHash =\n <T>() =>\n (result: T | null, hash: string): T => {\n if (result === null) throw new BlockHashNotFoundError(hash)\n return result\n }\n\nexport const getArchive = (request: ClientRequest<any, any>): Archive => {\n const archiveRequest: ClientRequest<any, any> = (method: string, ...rest) =>\n request(`archive_v1_${method}`, ...rest)\n\n const fnCreator =\n <A extends Array<any>>(method: string) =>\n <I, O>(mapper: (input: I, ...args: A) => O) =>\n abortablePromiseFn<O, A>((res, rej, ...args) =>\n archiveRequest(method, args, {\n onSuccess: (x: I) => {\n try {\n res(mapper(x, ...args))\n } catch (e) {\n rej(e)\n }\n },\n onError: rej,\n }),\n )\n\n const header = fnCreator<[hash: string]>(\"header\")(\n handleInvalidBlockHash<string>(),\n )\n\n const body = fnCreator<[hash: string]>(\"body\")(\n handleInvalidBlockHash<string[]>(),\n )\n\n const storageSubscription = createStorageCb(archiveRequest)\n const storage = createStorageFn(storageSubscription)\n\n const call = fnCreator<\n [hash: string, function: string, callParameters: string]\n >(\"call\")((\n x:\n | { success: true; value: string }\n | { success: false; error: string }\n | null,\n hash,\n ) => {\n if (!x) throw new BlockHashNotFoundError(hash)\n if (!x.success) throw new CallError(x.error)\n return x.value\n })\n\n const finalizedHeight = fnCreator<[]>(\"finalizedHeight\")(identity<number>())\n const hashByHeight =\n fnCreator<[height: number]>(\"hashByHeight\")(identity<string[]>())\n\n return {\n header,\n body,\n storageSubscription,\n storage,\n call,\n finalizedHeight,\n hashByHeight,\n }\n}\n","import { noop } from \"@/internal-utils\"\nimport { type ClientRequest } from \"@polkadot-api/raw-client\"\nimport { transaction } from \"@/methods\"\n\nexport const getTransaction =\n (request: ClientRequest<string, any>) =>\n (tx: string, error: (e: Error) => void) => {\n let isDone = false\n let cancel = () => {\n isDone = true\n }\n\n request(transaction.broadcast, [tx], {\n onSuccess: (subscriptionId) => {\n if (subscriptionId !== null) {\n cancel = () => {\n request(transaction.stop, [subscriptionId])\n cancel = noop\n }\n if (isDone) cancel()\n } else if (!isDone) {\n error(new Error(\"Max # of broadcasted transactions has been reached\"))\n }\n },\n onError: error,\n })\n\n return () => {\n cancel()\n }\n }\n","import { type ClientRequest } from \"@polkadot-api/raw-client\"\nimport { abortablePromiseFn } from \"./internal-utils\"\nimport { chainSpec } from \"./methods\"\n\nexport interface ChainSpecData {\n name: string\n genesisHash: string\n properties: any\n}\n\nexport const createGetChainSpec = (clientRequest: ClientRequest<any, any>) => {\n const request = abortablePromiseFn(\n <T>(\n onSuccess: (value: T) => void,\n onError: (e: any) => void,\n method: string,\n params: any[],\n ) => clientRequest(method, params, { onSuccess, onError }),\n )\n let cachedPromise: null | Promise<ChainSpecData> = null\n\n return async (): Promise<ChainSpecData> => {\n if (cachedPromise) return cachedPromise\n return (cachedPromise = Promise.all([\n request<string>(chainSpec.chainName, []),\n request<string>(chainSpec.genesisHash, []),\n request<any>(chainSpec.properties, []),\n ]).then(([name, genesisHash, properties]) => ({\n name,\n genesisHash,\n properties,\n })))\n }\n}\n","import type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport {\n ClientRequestCb,\n createClient as createRawClient,\n} from \"@polkadot-api/raw-client\"\nimport { getTransaction } from \"./transaction/transaction\"\nimport { getChainHead } from \"./chainhead\"\nimport type { ChainHead } from \"./chainhead\"\nimport type { Transaction } from \"./transaction\"\nimport { UnsubscribeFn } from \"./common-types\"\nimport { abortablePromiseFn } from \"./internal-utils\"\nimport { ChainSpecData, createGetChainSpec } from \"./chainspec\"\nimport { Archive, getArchive } from \"./archive\"\n\nexport interface SubstrateClient {\n archive: Archive\n chainHead: ChainHead\n transaction: Transaction\n destroy: UnsubscribeFn\n getChainSpecData: () => Promise<ChainSpecData>\n request: <T>(\n method: string,\n params: any[],\n abortSignal?: AbortSignal,\n ) => Promise<T>\n _request: <Reply, Notification>(\n method: string,\n params: any[],\n cb?: ClientRequestCb<Reply, Notification>,\n ) => UnsubscribeFn\n}\n\nexport const createClient = (provider: JsonRpcProvider): SubstrateClient => {\n const { request, disconnect } = createRawClient(provider)\n return {\n archive: getArchive(request),\n chainHead: getChainHead(request),\n transaction: getTransaction(request),\n getChainSpecData: createGetChainSpec(request),\n destroy: disconnect,\n request: abortablePromiseFn(\n <T>(\n onSuccess: (value: T) => void,\n onError: (e: any) => void,\n method: string,\n params: any[],\n ) => request(method, params, { onSuccess, onError }),\n ),\n _request: request,\n }\n}\n"],"names":["__publicField","noop","AbortError","fn","createStorageCb","createStorageFn","getSubscriptionsManager","DestroyedError","createRawClient"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abortablePromiseFn.js","sources":["../../src/internal-utils/abortablePromiseFn.ts"],"sourcesContent":["import { AbortError, noop } from \"@polkadot-api/utils\"\nimport { AbortablePromiseFn } from \"../common-types\"\n\nexport const abortablePromiseFn =\n <T, A extends Array<any>>(\n fn: (\n ...args: [...[res: (x: T) => void, rej: (e: any) => void], ...A]\n ) => () => void,\n ): AbortablePromiseFn<A, T> =>\n (...args): Promise<T> =>\n new Promise((res, rej) => {\n let cancel = noop\n\n const [actualArgs, abortSignal] =\n args[args.length - 1] instanceof AbortSignal\n ? ([args.slice(0, args.length - 1), args[args.length - 1]] as [\n A,\n AbortSignal,\n ])\n : ([args] as unknown as [A])\n\n const onAbort = () => {\n cancel()\n rej(new AbortError())\n }\n\n abortSignal?.addEventListener(\"abort\", onAbort, { once: true })\n\n const withCleanup =\n <T>(fn: (x: T) => void): ((x: T) => void) =>\n (x) => {\n cancel = noop\n abortSignal?.removeEventListener(\"abort\", onAbort)\n fn(x)\n }\n\n cancel = fn(...[withCleanup(res), withCleanup(rej), ...actualArgs])\n })\n"],"names":["fn"],"mappings":";;AAGO,MAAM,kBAAA,GACX,CACE,EAAA,KAIF,CAAA,GAAI,SACF,IAAI,OAAA,CAAQ,CAAC,GAAA,EAAK,GAAA,KAAQ;AACxB,EAAA,IAAI,MAAA,GAAS,IAAA;AAEb,EAAA,MAAM,CAAC,UAAA,EAAY,WAAW,CAAA,GAC5B,IAAA,CAAK,KAAK,MAAA,GAAS,CAAC,CAAA,YAAa,WAAA,GAC5B,CAAC,IAAA,CAAK,MAAM,CAAA,EAAG,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAC,CAAA,GAItD,CAAC,IAAI,CAAA;AAEZ,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,MAAA,EAAO;AACP,IAAA,GAAA,CAAI,IAAI,YAAY,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,WAAA,EAAa,iBAAiB,OAAA,EAAS,OAAA,EAAS,EAAE,IAAA,EAAM,MAAM,CAAA;AAE9D,EAAA,MAAM,WAAA,GACJ,CAAIA,GAAAA,KACJ,CAAC,CAAA,KAAM;AACL,IAAA,MAAA,GAAS,IAAA;AACT,IAAA,WAAA,EAAa,mBAAA,CAAoB,SAAS,OAAO,CAAA;AACjD,IAAAA,IAAG,CAAC,CAAA;AAAA,EACN,CAAA;AAEF,EAAA,MAAA,GAAS,EAAA,CAAG,GAAG,CAAC,WAAA,CAAY,GAAG,CAAA,EAAG,WAAA,CAAY,GAAG,CAAA,EAAG,GAAG,UAAU,CAAC,CAAA;AACpE,CAAC;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deferred-promise.js","sources":["../../src/internal-utils/deferred-promise.ts"],"sourcesContent":["export interface DeferredPromise<T> {\n promise: Promise<T>\n res: (value: T) => void\n rej: (err: Error) => void\n}\n\nexport function deferred<T>(): DeferredPromise<T> {\n let res: (value: T) => void = () => {}\n let rej: (err: Error) => void = () => {}\n\n const promise = new Promise<T>((_res, _rej) => {\n res = _res\n rej = _rej\n })\n\n return { promise, res, rej }\n}\n"],"names":[],"mappings":"AAMO,SAAS,QAAA,GAAkC;AAChD,EAAA,IAAI,MAA0B,MAAM;AAAA,EAAC,CAAA;AACrC,EAAA,IAAI,MAA4B,MAAM;AAAA,EAAC,CAAA;AAEvC,EAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAW,CAAC,MAAM,IAAA,KAAS;AAC7C,IAAA,GAAA,GAAM,IAAA;AACN,IAAA,GAAA,GAAM,IAAA;AAAA,EACR,CAAC,CAAA;AAED,EAAA,OAAO,EAAE,OAAA,EAAS,GAAA,EAAK,GAAA,EAAI;AAC7B;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"noop.js","sources":["../../src/internal-utils/noop.ts"],"sourcesContent":["export const noop = (): void => {}\n"],"names":[],"mappings":"AAAO,MAAM,OAAO,MAAY;AAAC;;;;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"methods.js","sources":["../src/methods.ts"],"sourcesContent":["const chainHead = {\n body: \"\",\n call: \"\",\n continue: \"\",\n follow: \"\",\n header: \"\",\n stopOperation: \"\",\n storage: \"\",\n unfollow: \"\",\n unpin: \"\",\n followEvent: \"\",\n}\n\nconst chainSpec = {\n chainName: \"\",\n genesisHash: \"\",\n properties: \"\",\n}\n\nconst transaction = {\n broadcast: \"\",\n stop: \"\",\n}\n\nObject.entries({ chainHead, chainSpec, transaction }).forEach(\n ([fnGroupName, methods]) => {\n Object.keys(methods).forEach((methodName) => {\n ;(methods as any)[methodName] = `${fnGroupName}_v1_${methodName}`\n })\n },\n)\n\nexport { chainHead, transaction, chainSpec }\n"],"names":[],"mappings":"AAAA,MAAM,SAAA,GAAY;AAAA,EAChB,IAAA,EAAM,EAAA;AAAA,EACN,IAAA,EAAM,EAAA;AAAA,EACN,QAAA,EAAU,EAAA;AAAA,EACV,MAAA,EAAQ,EAAA;AAAA,EACR,MAAA,EAAQ,EAAA;AAAA,EACR,aAAA,EAAe,EAAA;AAAA,EACf,OAAA,EAAS,EAAA;AAAA,EACT,QAAA,EAAU,EAAA;AAAA,EACV,KAAA,EAAO,EAAA;AAAA,EACP,WAAA,EAAa;AACf;AAEA,MAAM,SAAA,GAAY;AAAA,EAChB,SAAA,EAAW,EAAA;AAAA,EACX,WAAA,EAAa,EAAA;AAAA,EACb,UAAA,EAAY;AACd;AAEA,MAAM,WAAA,GAAc;AAAA,EAClB,SAAA,EAAW,EAAA;AAAA,EACX,IAAA,EAAM;AACR;AAEA,MAAA,CAAO,QAAQ,EAAE,SAAA,EAAW,SAAA,EAAW,WAAA,EAAa,CAAA,CAAE,OAAA;AAAA,EACpD,CAAC,CAAC,WAAA,EAAa,OAAO,CAAA,KAAM;AAC1B,IAAA,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,OAAA,CAAQ,CAAC,UAAA,KAAe;AAC1C,MAAC,QAAgB,UAAU,CAAA,GAAI,CAAA,EAAG,WAAW,OAAO,UAAU,CAAA,CAAA;AAAA,IACjE,CAAC,CAAA;AAAA,EACH;AACF,CAAA;;;;"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { createClient as createClient$1 } from '@polkadot-api/raw-client';
|
|
2
|
-
import { getTransaction } from './transaction/transaction.
|
|
3
|
-
import './chainhead/errors.
|
|
4
|
-
import { getChainHead } from './chainhead/chainhead.
|
|
5
|
-
import { abortablePromiseFn } from './internal-utils/abortablePromiseFn.
|
|
6
|
-
import { createGetChainSpec } from './chainspec.
|
|
7
|
-
import './archive/errors.
|
|
8
|
-
import { getArchive } from './archive/archive.
|
|
2
|
+
import { getTransaction } from './transaction/transaction.js';
|
|
3
|
+
import './chainhead/errors.js';
|
|
4
|
+
import { getChainHead } from './chainhead/chainhead.js';
|
|
5
|
+
import { abortablePromiseFn } from './internal-utils/abortablePromiseFn.js';
|
|
6
|
+
import { createGetChainSpec } from './chainspec.js';
|
|
7
|
+
import './archive/errors.js';
|
|
8
|
+
import { getArchive } from './archive/archive.js';
|
|
9
9
|
|
|
10
10
|
const createClient = (provider) => {
|
|
11
11
|
const { request, disconnect } = createClient$1(provider);
|
|
@@ -23,4 +23,4 @@ const createClient = (provider) => {
|
|
|
23
23
|
};
|
|
24
24
|
|
|
25
25
|
export { createClient };
|
|
26
|
-
//# sourceMappingURL=substrate-client.
|
|
26
|
+
//# sourceMappingURL=substrate-client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"substrate-client.js","sources":["../src/substrate-client.ts"],"sourcesContent":["import type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport {\n ClientRequestCb,\n createClient as createRawClient,\n} from \"@polkadot-api/raw-client\"\nimport { getTransaction } from \"./transaction/transaction\"\nimport { getChainHead } from \"./chainhead\"\nimport type { ChainHead } from \"./chainhead\"\nimport type { Transaction } from \"./transaction\"\nimport { UnsubscribeFn } from \"./common-types\"\nimport { abortablePromiseFn } from \"./internal-utils\"\nimport { ChainSpecData, createGetChainSpec } from \"./chainspec\"\nimport { Archive, getArchive } from \"./archive\"\n\nexport interface SubstrateClient {\n archive: Archive\n chainHead: ChainHead\n transaction: Transaction\n destroy: UnsubscribeFn\n getChainSpecData: () => Promise<ChainSpecData>\n request: <T>(\n method: string,\n params: any[],\n abortSignal?: AbortSignal,\n ) => Promise<T>\n _request: <Reply, Notification>(\n method: string,\n params: any[],\n cb?: ClientRequestCb<Reply, Notification>,\n ) => UnsubscribeFn\n}\n\nexport const createClient = (provider: JsonRpcProvider): SubstrateClient => {\n const { request, disconnect } = createRawClient(provider)\n return {\n archive: getArchive(request),\n chainHead: getChainHead(request),\n transaction: getTransaction(request),\n getChainSpecData: createGetChainSpec(request),\n destroy: disconnect,\n request: abortablePromiseFn(\n <T>(\n onSuccess: (value: T) => void,\n onError: (e: any) => void,\n method: string,\n params: any[],\n ) => request(method, params, { onSuccess, onError }),\n ),\n _request: request,\n }\n}\n"],"names":["createRawClient"],"mappings":";;;;;;;;;AAgCO,MAAM,YAAA,GAAe,CAAC,QAAA,KAA+C;AAC1E,EAAA,MAAM,EAAE,OAAA,EAAS,UAAA,EAAW,GAAIA,eAAgB,QAAQ,CAAA;AACxD,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,WAAW,OAAO,CAAA;AAAA,IAC3B,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,IAC/B,WAAA,EAAa,eAAe,OAAO,CAAA;AAAA,IACnC,gBAAA,EAAkB,mBAAmB,OAAO,CAAA;AAAA,IAC5C,OAAA,EAAS,UAAA;AAAA,IACT,OAAA,EAAS,kBAAA;AAAA,MACP,CACE,SAAA,EACA,OAAA,EACA,MAAA,EACA,MAAA,KACG,OAAA,CAAQ,MAAA,EAAQ,MAAA,EAAQ,EAAE,SAAA,EAAW,OAAA,EAAS;AAAA,KACrD;AAAA,IACA,QAAA,EAAU;AAAA,GACZ;AACF;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import '@polkadot-api/utils';
|
|
2
|
-
import { noop } from '../internal-utils/noop.
|
|
3
|
-
import { transaction } from '../methods.
|
|
2
|
+
import { noop } from '../internal-utils/noop.js';
|
|
3
|
+
import { transaction } from '../methods.js';
|
|
4
4
|
|
|
5
5
|
const getTransaction = (request) => (tx, error) => {
|
|
6
6
|
let isDone = false;
|
|
@@ -27,4 +27,4 @@ const getTransaction = (request) => (tx, error) => {
|
|
|
27
27
|
};
|
|
28
28
|
|
|
29
29
|
export { getTransaction };
|
|
30
|
-
//# sourceMappingURL=transaction.
|
|
30
|
+
//# sourceMappingURL=transaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transaction.js","sources":["../../src/transaction/transaction.ts"],"sourcesContent":["import { noop } from \"@/internal-utils\"\nimport { type ClientRequest } from \"@polkadot-api/raw-client\"\nimport { transaction } from \"@/methods\"\n\nexport const getTransaction =\n (request: ClientRequest<string, any>) =>\n (tx: string, error: (e: Error) => void) => {\n let isDone = false\n let cancel = () => {\n isDone = true\n }\n\n request(transaction.broadcast, [tx], {\n onSuccess: (subscriptionId) => {\n if (subscriptionId !== null) {\n cancel = () => {\n request(transaction.stop, [subscriptionId])\n cancel = noop\n }\n if (isDone) cancel()\n } else if (!isDone) {\n error(new Error(\"Max # of broadcasted transactions has been reached\"))\n }\n },\n onError: error,\n })\n\n return () => {\n cancel()\n }\n }\n"],"names":[],"mappings":";;;;AAIO,MAAM,cAAA,GACX,CAAC,OAAA,KACD,CAAC,IAAY,KAAA,KAA8B;AACzC,EAAA,IAAI,MAAA,GAAS,KAAA;AACb,EAAA,IAAI,SAAS,MAAM;AACjB,IAAA,MAAA,GAAS,IAAA;AAAA,EACX,CAAA;AAEA,EAAA,OAAA,CAAQ,WAAA,CAAY,SAAA,EAAW,CAAC,EAAE,CAAA,EAAG;AAAA,IACnC,SAAA,EAAW,CAAC,cAAA,KAAmB;AAC7B,MAAA,IAAI,mBAAmB,IAAA,EAAM;AAC3B,QAAA,MAAA,GAAS,MAAM;AACb,UAAA,OAAA,CAAQ,WAAA,CAAY,IAAA,EAAM,CAAC,cAAc,CAAC,CAAA;AAC1C,UAAA,MAAA,GAAS,IAAA;AAAA,QACX,CAAA;AACA,QAAA,IAAI,QAAQ,MAAA,EAAO;AAAA,MACrB,CAAA,MAAA,IAAW,CAAC,MAAA,EAAQ;AAClB,QAAA,KAAA,CAAM,IAAI,KAAA,CAAM,oDAAoD,CAAC,CAAA;AAAA,MACvE;AAAA,IACF,CAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACV,CAAA;AAED,EAAA,OAAO,MAAM;AACX,IAAA,MAAA,EAAO;AAAA,EACT,CAAA;AACF;;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polkadot-api/substrate-client",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"author": "Josep M Sobrepere (https://github.com/josepot)",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -8,36 +8,26 @@
|
|
|
8
8
|
},
|
|
9
9
|
"license": "MIT",
|
|
10
10
|
"sideEffects": false,
|
|
11
|
+
"type": "module",
|
|
11
12
|
"exports": {
|
|
12
13
|
".": {
|
|
13
|
-
"
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
"require": "./dist/min/index.js",
|
|
17
|
-
"default": "./dist/index.js"
|
|
18
|
-
},
|
|
19
|
-
"import": "./dist/esm/index.mjs",
|
|
20
|
-
"require": "./dist/index.js",
|
|
21
|
-
"default": "./dist/index.js"
|
|
22
|
-
},
|
|
23
|
-
"module": "./dist/esm/index.mjs",
|
|
24
|
-
"import": "./dist/esm/index.mjs",
|
|
25
|
-
"require": "./dist/index.js",
|
|
14
|
+
"types": "./dist/index.d.ts",
|
|
15
|
+
"module": "./dist/index.js",
|
|
16
|
+
"import": "./dist/index.js",
|
|
26
17
|
"default": "./dist/index.js"
|
|
27
|
-
}
|
|
28
|
-
"./package.json": "./package.json"
|
|
18
|
+
}
|
|
29
19
|
},
|
|
30
20
|
"main": "./dist/index.js",
|
|
31
|
-
"module": "./dist/
|
|
32
|
-
"browser": "./dist/
|
|
21
|
+
"module": "./dist/index.js",
|
|
22
|
+
"browser": "./dist/index.js",
|
|
33
23
|
"types": "./dist/index.d.ts",
|
|
34
24
|
"files": [
|
|
35
25
|
"dist"
|
|
36
26
|
],
|
|
37
27
|
"dependencies": {
|
|
38
|
-
"@polkadot-api/
|
|
39
|
-
"@polkadot-api/
|
|
40
|
-
"@polkadot-api/
|
|
28
|
+
"@polkadot-api/raw-client": "0.3.0",
|
|
29
|
+
"@polkadot-api/json-rpc-provider": "0.2.0",
|
|
30
|
+
"@polkadot-api/utils": "0.4.0"
|
|
41
31
|
},
|
|
42
32
|
"scripts": {
|
|
43
33
|
"build-core": "tsc --noEmit && rollup -c ../../rollup.config.js",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"archive.mjs","sources":["../../../src/archive/archive.ts"],"sourcesContent":["import { abortablePromiseFn } from \"@/internal-utils\"\nimport { type ClientRequest } from \"@polkadot-api/raw-client\"\nimport { createStorageCb } from \"./storage-subscription\"\nimport { createStorageFn } from \"./storage\"\nimport { Archive } from \"./public-types\"\nimport { CallError, BlockHashNotFoundError } from \"./errors\"\n\nconst identity =\n <T>() =>\n (x: T): T =>\n x\n\nconst handleInvalidBlockHash =\n <T>() =>\n (result: T | null, hash: string): T => {\n if (result === null) throw new BlockHashNotFoundError(hash)\n return result\n }\n\nexport const getArchive = (request: ClientRequest<any, any>): Archive => {\n const archiveRequest: ClientRequest<any, any> = (method: string, ...rest) =>\n request(`archive_v1_${method}`, ...rest)\n\n const fnCreator =\n <A extends Array<any>>(method: string) =>\n <I, O>(mapper: (input: I, ...args: A) => O) =>\n abortablePromiseFn<O, A>((res, rej, ...args) =>\n archiveRequest(method, args, {\n onSuccess: (x: I) => {\n try {\n res(mapper(x, ...args))\n } catch (e) {\n rej(e)\n }\n },\n onError: rej,\n }),\n )\n\n const header = fnCreator<[hash: string]>(\"header\")(\n handleInvalidBlockHash<string>(),\n )\n\n const body = fnCreator<[hash: string]>(\"body\")(\n handleInvalidBlockHash<string[]>(),\n )\n\n const storageSubscription = createStorageCb(archiveRequest)\n const storage = createStorageFn(storageSubscription)\n\n const call = fnCreator<\n [hash: string, function: string, callParameters: string]\n >(\"call\")((\n x:\n | { success: true; value: string }\n | { success: false; error: string }\n | null,\n hash,\n ) => {\n if (!x) throw new BlockHashNotFoundError(hash)\n if (!x.success) throw new CallError(x.error)\n return x.value\n })\n\n const finalizedHeight = fnCreator<[]>(\"finalizedHeight\")(identity<number>())\n const hashByHeight =\n fnCreator<[height: number]>(\"hashByHeight\")(identity<string[]>())\n\n return {\n header,\n body,\n storageSubscription,\n storage,\n call,\n finalizedHeight,\n hashByHeight,\n }\n}\n"],"names":[],"mappings":";;;;;AAOA,MAAM,QAAA,GACJ,MACA,CAAC,CAAA,KACC,CAAA;AAEJ,MAAM,sBAAA,GACJ,MACA,CAAC,MAAA,EAAkB,IAAA,KAAoB;AACrC,EAAA,IAAI,MAAA,KAAW,IAAA,EAAM,MAAM,IAAI,uBAAuB,IAAI,CAAA;AAC1D,EAAA,OAAO,MAAA;AACT,CAAA;AAEK,MAAM,UAAA,GAAa,CAAC,OAAA,KAA8C;AACvE,EAAA,MAAM,cAAA,GAA0C,CAAC,MAAA,EAAA,GAAmB,IAAA,KAClE,QAAQ,CAAA,WAAA,EAAc,MAAM,CAAA,CAAA,EAAI,GAAG,IAAI,CAAA;AAEzC,EAAA,MAAM,SAAA,GACJ,CAAuB,MAAA,KACvB,CAAO,MAAA,KACL,kBAAA;AAAA,IAAyB,CAAC,GAAA,EAAK,GAAA,EAAA,GAAQ,IAAA,KACrC,cAAA,CAAe,QAAQ,IAAA,EAAM;AAAA,MAC3B,SAAA,EAAW,CAAC,CAAA,KAAS;AACnB,QAAA,IAAI;AACF,UAAA,GAAA,CAAI,MAAA,CAAO,CAAA,EAAG,GAAG,IAAI,CAAC,CAAA;AAAA,QACxB,SAAS,CAAA,EAAG;AACV,UAAA,GAAA,CAAI,CAAC,CAAA;AAAA,QACP;AAAA,MACF,CAAA;AAAA,MACA,OAAA,EAAS;AAAA,KACV;AAAA,GACH;AAEJ,EAAA,MAAM,MAAA,GAAS,UAA0B,QAAQ,CAAA;AAAA,IAC/C,sBAAA;AAA+B,GACjC;AAEA,EAAA,MAAM,IAAA,GAAO,UAA0B,MAAM,CAAA;AAAA,IAC3C,sBAAA;AAAiC,GACnC;AAEA,EAAA,MAAM,mBAAA,GAAsB,gBAAgB,cAAc,CAAA;AAC1D,EAAA,MAAM,OAAA,GAAU,gBAAgB,mBAAmB,CAAA;AAEnD,EAAA,MAAM,OAAO,SAAA,CAEX,MAAM,CAAA,CAAE,CACR,GAIA,IAAA,KACG;AACH,IAAA,IAAI,CAAC,CAAA,EAAG,MAAM,IAAI,uBAAuB,IAAI,CAAA;AAC7C,IAAA,IAAI,CAAC,CAAA,CAAE,OAAA,QAAe,IAAI,SAAA,CAAU,EAAE,KAAK,CAAA;AAC3C,IAAA,OAAO,CAAA,CAAE,KAAA;AAAA,EACX,CAAC,CAAA;AAED,EAAA,MAAM,eAAA,GAAkB,SAAA,CAAc,iBAAiB,CAAA,CAAE,UAAkB,CAAA;AAC3E,EAAA,MAAM,YAAA,GACJ,SAAA,CAA4B,cAAc,CAAA,CAAE,UAAoB,CAAA;AAElE,EAAA,OAAO;AAAA,IACL,MAAA;AAAA,IACA,IAAA;AAAA,IACA,mBAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.mjs","sources":["../../../src/archive/errors.ts"],"sourcesContent":["export class BlockHashNotFoundError extends Error {\n static errorName = \"BlockHashNotFoundError\"\n\n constructor(hash: string) {\n super(`Invalid BlockHash: ${hash}`)\n this.name = BlockHashNotFoundError.errorName\n }\n}\n\nexport class StorageError extends Error {\n static errorName = \"StorageError\"\n\n constructor(message: string) {\n super(`Storage Error: ${message}`)\n this.name = StorageError.errorName\n }\n}\n\nexport class CallError extends Error {\n static errorName = \"CallError\"\n\n constructor(message: string) {\n super(`Call Error: ${message}`)\n this.name = CallError.errorName\n }\n}\n"],"names":[],"mappings":";;;AAAO,MAAM,uBAAA,GAAN,MAAM,uBAAA,SAA+B,KAAA,CAAM;AAAA,EAGhD,YAAY,IAAA,EAAc;AACxB,IAAA,KAAA,CAAM,CAAA,mBAAA,EAAsB,IAAI,CAAA,CAAE,CAAA;AAClC,IAAA,IAAA,CAAK,OAAO,uBAAA,CAAuB,SAAA;AAAA,EACrC;AACF,CAAA;AANE,aAAA,CADW,yBACJ,WAAA,EAAY,wBAAA,CAAA;AADd,IAAM,sBAAA,GAAN;AASA,MAAM,aAAA,GAAN,MAAM,aAAA,SAAqB,KAAA,CAAM;AAAA,EAGtC,YAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,CAAM,CAAA,eAAA,EAAkB,OAAO,CAAA,CAAE,CAAA;AACjC,IAAA,IAAA,CAAK,OAAO,aAAA,CAAa,SAAA;AAAA,EAC3B;AACF,CAAA;AANE,aAAA,CADW,eACJ,WAAA,EAAY,cAAA,CAAA;AADd,IAAM,YAAA,GAAN;AASA,MAAM,UAAA,GAAN,MAAM,UAAA,SAAkB,KAAA,CAAM;AAAA,EAGnC,YAAY,OAAA,EAAiB;AAC3B,IAAA,KAAA,CAAM,CAAA,YAAA,EAAe,OAAO,CAAA,CAAE,CAAA;AAC9B,IAAA,IAAA,CAAK,OAAO,UAAA,CAAU,SAAA;AAAA,EACxB;AACF,CAAA;AANE,aAAA,CADW,YACJ,WAAA,EAAY,WAAA,CAAA;AADd,IAAM,SAAA,GAAN;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage-subscription.mjs","sources":["../../../src/archive/storage-subscription.ts"],"sourcesContent":["import type { ClientRequest } from \"@polkadot-api/raw-client\"\nimport { noop } from \"@polkadot-api/utils\"\nimport { Archive } from \"./public-types\"\nimport { StorageItemResponse } from \"@/chainhead\"\nimport { StorageError } from \"./errors\"\n\ntype StorageEvent = {\n event: \"storage\"\n} & StorageItemResponse\n\ntype StorageDone = {\n event: \"storageDone\"\n}\n\ntype StorageErrorEvent = {\n event: \"storageError\"\n error: string\n}\n\nexport const createStorageCb =\n (\n archiveRequest: ClientRequest<\n string,\n StorageEvent | StorageDone | StorageErrorEvent\n >,\n ): Archive[\"storageSubscription\"] =>\n (hash, inputs, childTrie, onItem, onError, onDone) => {\n if (inputs.length === 0) {\n onDone()\n return noop\n }\n\n let isRunning = true\n let cancel = () => {\n isRunning = false\n }\n\n archiveRequest(\"storage\", [hash, inputs, childTrie], {\n onSuccess: (operationId, followSubscription) => {\n const stopOperation = () => {\n archiveRequest(\"stopStorage\", [operationId])\n }\n\n if (!isRunning) return stopOperation()\n\n const doneListening = followSubscription(operationId, {\n next: (event) => {\n const { event: type } = event\n if (type === \"storage\") {\n const { event: _, ...item } = event\n onItem(item)\n } else if (type === \"storageDone\") _onDone()\n else _onError(new StorageError(event.error))\n },\n error: onError,\n })\n\n const tearDown = () => {\n cancel = noop\n doneListening()\n }\n\n cancel = () => {\n tearDown()\n stopOperation()\n }\n\n const _onError = (e: Error) => {\n tearDown()\n onError(e)\n }\n\n const _onDone = () => {\n tearDown()\n onDone()\n }\n },\n onError,\n })\n\n return () => {\n cancel()\n }\n }\n"],"names":[],"mappings":";;;AAmBO,MAAM,eAAA,GACX,CACE,cAAA,KAKF,CAAC,MAAM,MAAA,EAAQ,SAAA,EAAW,MAAA,EAAQ,OAAA,EAAS,MAAA,KAAW;AACpD,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAA,MAAA,EAAO;AACP,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,SAAA,GAAY,IAAA;AAChB,EAAA,IAAI,SAAS,MAAM;AACjB,IAAA,SAAA,GAAY,KAAA;AAAA,EACd,CAAA;AAEA,EAAA,cAAA,CAAe,SAAA,EAAW,CAAC,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAG;AAAA,IACnD,SAAA,EAAW,CAAC,WAAA,EAAa,kBAAA,KAAuB;AAC9C,MAAA,MAAM,gBAAgB,MAAM;AAC1B,QAAA,cAAA,CAAe,aAAA,EAAe,CAAC,WAAW,CAAC,CAAA;AAAA,MAC7C,CAAA;AAEA,MAAA,IAAI,CAAC,SAAA,EAAW,OAAO,aAAA,EAAc;AAErC,MAAA,MAAM,aAAA,GAAgB,mBAAmB,WAAA,EAAa;AAAA,QACpD,IAAA,EAAM,CAAC,KAAA,KAAU;AACf,UAAA,MAAM,EAAE,KAAA,EAAO,IAAA,EAAK,GAAI,KAAA;AACxB,UAAA,IAAI,SAAS,SAAA,EAAW;AACtB,YAAA,MAAM,EAAE,KAAA,EAAO,CAAA,EAAG,GAAG,MAAK,GAAI,KAAA;AAC9B,YAAA,MAAA,CAAO,IAAI,CAAA;AAAA,UACb,CAAA,MAAA,IAAW,IAAA,KAAS,aAAA,EAAe,OAAA,EAAQ;AAAA,eACtC,QAAA,CAAS,IAAI,YAAA,CAAa,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,QAC7C,CAAA;AAAA,QACA,KAAA,EAAO;AAAA,OACR,CAAA;AAED,MAAA,MAAM,WAAW,MAAM;AACrB,QAAA,MAAA,GAAS,IAAA;AACT,QAAA,aAAA,EAAc;AAAA,MAChB,CAAA;AAEA,MAAA,MAAA,GAAS,MAAM;AACb,QAAA,QAAA,EAAS;AACT,QAAA,aAAA,EAAc;AAAA,MAChB,CAAA;AAEA,MAAA,MAAM,QAAA,GAAW,CAAC,CAAA,KAAa;AAC7B,QAAA,QAAA,EAAS;AACT,QAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,MACX,CAAA;AAEA,MAAA,MAAM,UAAU,MAAM;AACpB,QAAA,QAAA,EAAS;AACT,QAAA,MAAA,EAAO;AAAA,MACT,CAAA;AAAA,IACF,CAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,OAAO,MAAM;AACX,IAAA,MAAA,EAAO;AAAA,EACT,CAAA;AACF;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage.mjs","sources":["../../../src/archive/storage.ts"],"sourcesContent":["import { abortablePromiseFn } from \"@/internal-utils\"\nimport type { Archive } from \"./public-types\"\n\nexport const createStorageFn = (\n cbStore: Archive[\"storageSubscription\"],\n): Archive[\"storage\"] =>\n abortablePromiseFn((resolve, reject, hash, type, key, childTrie) => {\n const isDescendants = type.startsWith(\"descendants\")\n\n let result: any = isDescendants ? [] : null\n const onItem: Parameters<typeof cbStore>[3] = isDescendants\n ? result.push.bind(result)\n : ({ [type]: res }) => {\n result = res\n }\n\n return cbStore(\n hash,\n [{ key, type }],\n childTrie,\n onItem,\n (e) => {\n reject(e)\n result = null\n },\n () => {\n resolve(result)\n result = null\n },\n )\n })\n"],"names":[],"mappings":";;AAGO,MAAM,eAAA,GAAkB,CAC7B,OAAA,KAEA,kBAAA,CAAmB,CAAC,SAAS,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,GAAA,EAAK,SAAA,KAAc;AAClE,EAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,UAAA,CAAW,aAAa,CAAA;AAEnD,EAAA,IAAI,MAAA,GAAc,aAAA,GAAgB,EAAC,GAAI,IAAA;AACvC,EAAA,MAAM,MAAA,GAAwC,aAAA,GAC1C,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,MAAM,CAAA,GACvB,CAAC,EAAE,CAAC,IAAA,GAAO,GAAA,EAAI,KAAM;AACnB,IAAA,MAAA,GAAS,GAAA;AAAA,EACX,CAAA;AAEJ,EAAA,OAAO,OAAA;AAAA,IACL,IAAA;AAAA,IACA,CAAC,EAAE,GAAA,EAAK,IAAA,EAAM,CAAA;AAAA,IACd,SAAA;AAAA,IACA,MAAA;AAAA,IACA,CAAC,CAAA,KAAM;AACL,MAAA,MAAA,CAAO,CAAC,CAAA;AACR,MAAA,MAAA,GAAS,IAAA;AAAA,IACX,CAAA;AAAA,IACA,MAAM;AACJ,MAAA,OAAA,CAAQ,MAAM,CAAA;AACd,MAAA,MAAA,GAAS,IAAA;AAAA,IACX;AAAA,GACF;AACF,CAAC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"body.mjs","sources":["../../../src/chainhead/body.ts"],"sourcesContent":["import { chainHead } from \"@/methods\"\nimport type { OperationBodyDoneRpc } from \"./json-rpc-types\"\nimport { createOperationPromise } from \"./operation-promise\"\n\nexport const createBodyFn = createOperationPromise(\n chainHead.body,\n (hash: string) => [\n [hash],\n (e: OperationBodyDoneRpc, res: (x: Array<string>) => void) => {\n res(e.value)\n },\n ],\n)\n"],"names":[],"mappings":";;;AAIO,MAAM,YAAA,GAAe,sBAAA;AAAA,EAC1B,SAAA,CAAU,IAAA;AAAA,EACV,CAAC,IAAA,KAAiB;AAAA,IAChB,CAAC,IAAI,CAAA;AAAA,IACL,CAAC,GAAyB,GAAA,KAAoC;AAC5D,MAAA,GAAA,CAAI,EAAE,KAAK,CAAA;AAAA,IACb;AAAA;AAEJ;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"call.mjs","sources":["../../../src/chainhead/call.ts"],"sourcesContent":["import { chainHead } from \"@/methods\"\nimport type { OperationCallDoneRpc } from \"./json-rpc-types\"\nimport { createOperationPromise } from \"./operation-promise\"\n\nexport const createCallFn = createOperationPromise(\n chainHead.call,\n (hash: string, fnName: string, callParameters: string) => [\n [hash, fnName, callParameters],\n (e: OperationCallDoneRpc, res: (output: string) => void) => {\n res(e.output)\n },\n ],\n)\n"],"names":[],"mappings":";;;AAIO,MAAM,YAAA,GAAe,sBAAA;AAAA,EAC1B,SAAA,CAAU,IAAA;AAAA,EACV,CAAC,IAAA,EAAc,MAAA,EAAgB,cAAA,KAA2B;AAAA,IACxD,CAAC,IAAA,EAAM,MAAA,EAAQ,cAAc,CAAA;AAAA,IAC7B,CAAC,GAAyB,GAAA,KAAkC;AAC1D,MAAA,GAAA,CAAI,EAAE,MAAM,CAAA;AAAA,IACd;AAAA;AAEJ;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chainhead.mjs","sources":["../../../src/chainhead/chainhead.ts"],"sourcesContent":["import {\n DestroyedError,\n Subscriber,\n getSubscriptionsManager,\n ClientRequest,\n FollowSubscriptionCb,\n} from \"@polkadot-api/raw-client\"\nimport type {\n FollowEventWithRuntimeRpc,\n FollowEventWithoutRuntimeRpc,\n OperationEventsRpc,\n StopRpc,\n} from \"./json-rpc-types\"\nimport type {\n ChainHead,\n ClientInnerRequest,\n FollowEventWithoutRuntime,\n FollowEventWithRuntime,\n FollowResponse,\n} from \"./public-types\"\nimport { noop, deferred } from \"@/internal-utils\"\nimport { createBodyFn } from \"./body\"\nimport { createCallFn } from \"./call\"\nimport { createHeaderFn } from \"./header\"\nimport { createStorageFn } from \"./storage\"\nimport { createUnpinFn } from \"./unpin\"\nimport { DisjointError, StopError } from \"./errors\"\nimport { createStorageCb } from \"./storage-subscription\"\nimport { chainHead } from \"@/methods\"\n\ntype FollowEventRpc =\n | FollowEventWithRuntimeRpc\n | FollowEventWithoutRuntimeRpc\n | OperationEventsRpc\n | StopRpc\n\nfunction isOperationEvent(event: FollowEventRpc): event is OperationEventsRpc {\n return (event as OperationEventsRpc).operationId !== undefined\n}\n\nexport function getChainHead(\n request: ClientRequest<string, FollowEventRpc>,\n): ChainHead {\n return (\n withRuntime: boolean,\n onFollowEvent:\n | ((event: FollowEventWithoutRuntime) => void)\n | ((event: FollowEventWithRuntime) => void),\n onFollowError: (e: Error) => void,\n ): FollowResponse => {\n const subscriptions = getSubscriptionsManager<OperationEventsRpc>()\n const ongoingRequests = new Set<() => void>()\n const deferredFollow = deferred<string | Error>()\n // If it's:\n // - a (deferred)`Promise`: it means that the susbscription is active AND that the response to the follow request has not been resolved\n // - a `string`: it means that the subscription is active and that the response to the follow request has been successful.\n // - `null`: it means that the subscription is inactive (for whatever reason: error or unsubscription)\n let followSubscription: Promise<string | Error> | string | null =\n deferredFollow.promise\n\n let stopListeningToFollowEvents = noop\n const unfollowRequest = (subscriptionId: string) => {\n request(chainHead.unfollow, [subscriptionId])\n }\n\n const stopEverything = (sendUnfollow: boolean) => {\n stopListeningToFollowEvents()\n // if it's `null` it means that everything has already been stopped\n if (followSubscription === null) return\n\n if (sendUnfollow) {\n if (followSubscription instanceof Promise) {\n followSubscription.then((x) => {\n if (typeof x === \"string\") unfollowRequest(x)\n })\n } else unfollowRequest(followSubscription)\n }\n followSubscription = null\n ongoingRequests.forEach((cb) => {\n cb()\n })\n ongoingRequests.clear()\n subscriptions.errorAll(new DisjointError())\n }\n\n const onAllFollowEventsNext = (event: FollowEventRpc) => {\n if (isOperationEvent(event))\n return subscriptions.next(event.operationId, event)\n\n switch (event.event) {\n case \"stop\":\n onFollowError(new StopError())\n return stopEverything(false)\n case \"initialized\":\n case \"newBlock\":\n case \"bestBlockChanged\":\n case \"finalized\":\n const { event: type, ...rest } = event\n return onFollowEvent({ type, ...rest } as any)\n }\n }\n\n const onAllFollowEventsError = (error: Error) => {\n onFollowError(error)\n stopEverything(!(error instanceof DestroyedError))\n }\n\n request(chainHead.follow, [withRuntime], {\n onSuccess: (\n subscriptionId: string,\n follow: FollowSubscriptionCb<FollowEventRpc>,\n ) => {\n // If the consumer has unsubscribed in between, then it will be `null`\n // and it should stay that way\n if (followSubscription instanceof Promise) {\n followSubscription = subscriptionId\n stopListeningToFollowEvents = follow(subscriptionId, {\n next: onAllFollowEventsNext,\n error: onAllFollowEventsError,\n })\n }\n deferredFollow.res(subscriptionId)\n },\n onError: (e: Error) => {\n followSubscription = null\n deferredFollow.res(e)\n onFollowError(e)\n },\n })\n\n const fRequest: ClientInnerRequest<any, any> = (method, params, cb) => {\n const disjoint = () => {\n cb?.onError(new DisjointError())\n }\n\n if (followSubscription === null) {\n disjoint()\n return noop\n }\n\n const onSubscription = (subscription: string) => {\n if (!cb) return request(method, [subscription, ...params])\n\n ongoingRequests.add(disjoint)\n\n const onSubscribeOperation = (\n operationId: string,\n subscriber: Subscriber<any>,\n ) => {\n if (followSubscription === null) {\n subscriber.error(new DisjointError())\n return noop\n }\n\n subscriptions.subscribe(operationId, subscriber)\n\n return () => {\n subscriptions.unsubscribe(operationId)\n }\n }\n\n const cleanup = request(method, [subscription, ...params], {\n onSuccess: (response) => {\n ongoingRequests.delete(disjoint)\n cb.onSuccess(response, onSubscribeOperation)\n },\n onError: (e) => {\n ongoingRequests.delete(disjoint)\n cb.onError(e)\n },\n })\n\n return () => {\n ongoingRequests.delete(disjoint)\n cleanup()\n }\n }\n\n if (typeof followSubscription === \"string\")\n return onSubscription(followSubscription)\n\n let onCancel = noop\n followSubscription.then((x) => {\n if (x instanceof Error) return disjoint()\n if (followSubscription) onCancel = onSubscription(x)\n })\n\n return () => {\n onCancel()\n }\n }\n\n return {\n unfollow() {\n stopEverything(true)\n },\n body: createBodyFn(fRequest),\n call: createCallFn(fRequest),\n header: createHeaderFn(fRequest),\n storage: createStorageFn(fRequest),\n storageSubscription: createStorageCb(fRequest),\n unpin: createUnpinFn(fRequest),\n _request: fRequest,\n }\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"errors.mjs","sources":["../../../src/chainhead/errors.ts"],"sourcesContent":["export class StopError extends Error {\n static errorName = \"StopError\"\n\n constructor() {\n super(\"ChainHead stopped\")\n this.name = StopError.errorName\n }\n}\n\nexport class DisjointError extends Error {\n static errorName = \"DisjointError\"\n\n constructor() {\n super(\"ChainHead disjointed\")\n this.name = DisjointError.errorName\n }\n}\n\nexport class OperationLimitError extends Error {\n static errorName = \"OperationLimitError\"\n\n constructor() {\n super(\"ChainHead operations limit reached\")\n this.name = OperationLimitError.errorName\n }\n}\n\nexport class OperationError extends Error {\n static errorName = \"OperationError\"\n\n constructor(error: string) {\n super(error)\n this.name = OperationError.errorName\n }\n}\n\nexport class OperationInaccessibleError extends Error {\n static errorName = \"OperationInaccessibleError\"\n\n constructor() {\n super(\"ChainHead operation inaccessible\")\n this.name = OperationInaccessibleError.errorName\n }\n}\n"],"names":["__publicField"],"mappings":";;;AAAO,MAAM,UAAA,GAAN,MAAM,UAAA,SAAkB,KAAA,CAAM;AAAA,EAGnC,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,mBAAmB,CAAA;AACzB,IAAA,IAAA,CAAK,OAAO,UAAA,CAAU,SAAA;AAAA,EACxB;AACF,CAAA;AANEA,eAAA,CADW,YACJ,WAAA,EAAY,WAAA,CAAA;AADd,IAAM,SAAA,GAAN;AASA,MAAM,cAAA,GAAN,MAAM,cAAA,SAAsB,KAAA,CAAM;AAAA,EAGvC,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,sBAAsB,CAAA;AAC5B,IAAA,IAAA,CAAK,OAAO,cAAA,CAAc,SAAA;AAAA,EAC5B;AACF,CAAA;AANEA,eAAA,CADW,gBACJ,WAAA,EAAY,eAAA,CAAA;AADd,IAAM,aAAA,GAAN;AASA,MAAM,oBAAA,GAAN,MAAM,oBAAA,SAA4B,KAAA,CAAM;AAAA,EAG7C,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,oCAAoC,CAAA;AAC1C,IAAA,IAAA,CAAK,OAAO,oBAAA,CAAoB,SAAA;AAAA,EAClC;AACF,CAAA;AANEA,eAAA,CADW,sBACJ,WAAA,EAAY,qBAAA,CAAA;AADd,IAAM,mBAAA,GAAN;AASA,MAAM,eAAA,GAAN,MAAM,eAAA,SAAuB,KAAA,CAAM;AAAA,EAGxC,YAAY,KAAA,EAAe;AACzB,IAAA,KAAA,CAAM,KAAK,CAAA;AACX,IAAA,IAAA,CAAK,OAAO,eAAA,CAAe,SAAA;AAAA,EAC7B;AACF,CAAA;AANEA,eAAA,CADW,iBACJ,WAAA,EAAY,gBAAA,CAAA;AADd,IAAM,cAAA,GAAN;AASA,MAAM,2BAAA,GAAN,MAAM,2BAAA,SAAmC,KAAA,CAAM;AAAA,EAGpD,WAAA,GAAc;AACZ,IAAA,KAAA,CAAM,kCAAkC,CAAA;AACxC,IAAA,IAAA,CAAK,OAAO,2BAAA,CAA2B,SAAA;AAAA,EACzC;AACF,CAAA;AANEA,eAAA,CADW,6BACJ,WAAA,EAAY,4BAAA,CAAA;AADd,IAAM,0BAAA,GAAN;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"header.mjs","sources":["../../../src/chainhead/header.ts"],"sourcesContent":["import { chainHead } from \"@/methods\"\nimport { ClientInnerRequest } from \"./public-types\"\n\nexport const createHeaderFn =\n (request: ClientInnerRequest<string, unknown>) => (hash: string) =>\n new Promise<string>((res, rej) => {\n request(chainHead.header, [hash], {\n onSuccess: res,\n onError: rej,\n })\n })\n"],"names":[],"mappings":";;AAGO,MAAM,cAAA,GACX,CAAC,OAAA,KAAiD,CAAC,SACjD,IAAI,OAAA,CAAgB,CAAC,GAAA,EAAK,GAAA,KAAQ;AAChC,EAAA,OAAA,CAAQ,SAAA,CAAU,MAAA,EAAQ,CAAC,IAAI,CAAA,EAAG;AAAA,IAChC,SAAA,EAAW,GAAA;AAAA,IACX,OAAA,EAAS;AAAA,GACV,CAAA;AACH,CAAC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"operation-promise.mjs","sources":["../../../src/chainhead/operation-promise.ts"],"sourcesContent":["import { abortablePromiseFn, noop } from \"@/internal-utils\"\nimport {\n CommonOperationEventsRpc,\n OperationResponseRpc,\n} from \"./json-rpc-types\"\nimport {\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./errors\"\nimport { ClientInnerRequest } from \"./public-types\"\nimport { chainHead } from \"@/methods\"\n\nexport const createOperationPromise =\n <I extends { operationId: string; event: string }, O, A extends Array<any>>(\n operationName: string,\n factory: (\n ...args: A\n ) => [\n Array<any>,\n (e: I, res: (x: O) => void, rej: (e: Error) => void) => void,\n ],\n ) =>\n (\n request: ClientInnerRequest<\n OperationResponseRpc,\n I | CommonOperationEventsRpc\n >,\n ) =>\n abortablePromiseFn<O, A>((res, rej, ...args) => {\n let isRunning = true\n let cancel = () => {\n isRunning = false\n }\n\n const [requestArgs, logicCb] = factory(...args)\n request(operationName, requestArgs, {\n onSuccess: (response, followSubscription) => {\n if (response.result === \"limitReached\")\n return rej(new OperationLimitError())\n\n const { operationId } = response\n const stopOperation = () => {\n request(chainHead.stopOperation, [operationId])\n }\n\n if (!isRunning) return stopOperation()\n\n let done = noop\n const _res = (x: O) => {\n isRunning = false\n done()\n res(x)\n }\n const _rej = (x: Error) => {\n isRunning = false\n done()\n rej(x)\n }\n\n done = followSubscription(operationId, {\n next: (e) => {\n const _e = e as CommonOperationEventsRpc\n if (_e.event === \"operationError\")\n rej(new OperationError(_e.error))\n else if (_e.event === \"operationInaccessible\")\n rej(new OperationInaccessibleError())\n else logicCb(e as I, _res, _rej)\n },\n error: _rej,\n })\n\n cancel = () => {\n if (isRunning) {\n done()\n stopOperation()\n }\n }\n },\n onError: rej,\n })\n\n return () => {\n cancel()\n }\n })\n"],"names":[],"mappings":";;;;;AAaO,MAAM,sBAAA,GACX,CACE,aAAA,EACA,OAAA,KAOF,CACE,YAKA,kBAAA,CAAyB,CAAC,GAAA,EAAK,GAAA,EAAA,GAAQ,IAAA,KAAS;AAC9C,EAAA,IAAI,SAAA,GAAY,IAAA;AAChB,EAAA,IAAI,SAAS,MAAM;AACjB,IAAA,SAAA,GAAY,KAAA;AAAA,EACd,CAAA;AAEA,EAAA,MAAM,CAAC,WAAA,EAAa,OAAO,CAAA,GAAI,OAAA,CAAQ,GAAG,IAAI,CAAA;AAC9C,EAAA,OAAA,CAAQ,eAAe,WAAA,EAAa;AAAA,IAClC,SAAA,EAAW,CAAC,QAAA,EAAU,kBAAA,KAAuB;AAC3C,MAAA,IAAI,SAAS,MAAA,KAAW,cAAA;AACtB,QAAA,OAAO,GAAA,CAAI,IAAI,mBAAA,EAAqB,CAAA;AAEtC,MAAA,MAAM,EAAE,aAAY,GAAI,QAAA;AACxB,MAAA,MAAM,gBAAgB,MAAM;AAC1B,QAAA,OAAA,CAAQ,SAAA,CAAU,aAAA,EAAe,CAAC,WAAW,CAAC,CAAA;AAAA,MAChD,CAAA;AAEA,MAAA,IAAI,CAAC,SAAA,EAAW,OAAO,aAAA,EAAc;AAErC,MAAA,IAAI,IAAA,GAAO,IAAA;AACX,MAAA,MAAM,IAAA,GAAO,CAAC,CAAA,KAAS;AACrB,QAAA,SAAA,GAAY,KAAA;AACZ,QAAA,IAAA,EAAK;AACL,QAAA,GAAA,CAAI,CAAC,CAAA;AAAA,MACP,CAAA;AACA,MAAA,MAAM,IAAA,GAAO,CAAC,CAAA,KAAa;AACzB,QAAA,SAAA,GAAY,KAAA;AACZ,QAAA,IAAA,EAAK;AACL,QAAA,GAAA,CAAI,CAAC,CAAA;AAAA,MACP,CAAA;AAEA,MAAA,IAAA,GAAO,mBAAmB,WAAA,EAAa;AAAA,QACrC,IAAA,EAAM,CAAC,CAAA,KAAM;AACX,UAAA,MAAM,EAAA,GAAK,CAAA;AACX,UAAA,IAAI,GAAG,KAAA,KAAU,gBAAA;AACf,YAAA,GAAA,CAAI,IAAI,cAAA,CAAe,EAAA,CAAG,KAAK,CAAC,CAAA;AAAA,eAAA,IACzB,GAAG,KAAA,KAAU,uBAAA;AACpB,YAAA,GAAA,CAAI,IAAI,4BAA4B,CAAA;AAAA,eACjC,OAAA,CAAQ,CAAA,EAAQ,IAAA,EAAM,IAAI,CAAA;AAAA,QACjC,CAAA;AAAA,QACA,KAAA,EAAO;AAAA,OACR,CAAA;AAED,MAAA,MAAA,GAAS,MAAM;AACb,QAAA,IAAI,SAAA,EAAW;AACb,UAAA,IAAA,EAAK;AACL,UAAA,aAAA,EAAc;AAAA,QAChB;AAAA,MACF,CAAA;AAAA,IACF,CAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACV,CAAA;AAED,EAAA,OAAO,MAAM;AACX,IAAA,MAAA,EAAO;AAAA,EACT,CAAA;AACF,CAAC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage-subscription.mjs","sources":["../../../src/chainhead/storage-subscription.ts"],"sourcesContent":["import { noop } from \"@polkadot-api/utils\"\nimport type { ClientInnerRequest, FollowResponse } from \"./public-types\"\nimport {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { chainHead } from \"@/methods\"\nimport {\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./errors\"\n\nexport const createStorageCb =\n (\n request: ClientInnerRequest<\n OperationStorageStartedRpc | LimitReachedRpc,\n | CommonOperationEventsRpc\n | OperationStorageItemsRpc\n | OperationStorageDoneRpc\n | OperationWaitingForContinueRpc\n >,\n ): FollowResponse[\"storageSubscription\"] =>\n (hash, inputs, childTrie, onItems, onError, onDone, onDiscardedItems) => {\n if (inputs.length === 0) {\n onDone()\n return noop\n }\n\n let isRunning = true\n let cancel = () => {\n isRunning = false\n }\n\n request(chainHead.storage, [hash, inputs, childTrie], {\n onSuccess: (response, followSubscription) => {\n if (\n response.result === \"limitReached\" ||\n response.discardedItems === inputs.length\n )\n return onError(new OperationLimitError())\n\n const { operationId } = response\n const stopOperation = () => {\n request(chainHead.stopOperation, [operationId])\n }\n\n if (!isRunning) return stopOperation()\n\n const doneListening = followSubscription(response.operationId, {\n next: (event) => {\n switch (event.event) {\n case \"operationStorageItems\": {\n onItems(event.items)\n break\n }\n case \"operationStorageDone\": {\n _onDone()\n break\n }\n case \"operationError\": {\n _onError(new OperationError(event.error))\n break\n }\n case \"operationInaccessible\": {\n _onError(new OperationInaccessibleError())\n break\n }\n default:\n request(chainHead.continue, [event.operationId])\n }\n },\n error: onError,\n })\n\n cancel = () => {\n doneListening()\n request(chainHead.stopOperation, [response.operationId])\n }\n\n const _onError = (e: Error) => {\n cancel = noop\n doneListening()\n onError(e)\n }\n\n const _onDone = () => {\n cancel = noop\n doneListening()\n onDone()\n }\n\n onDiscardedItems(response.discardedItems)\n },\n onError,\n })\n\n return () => {\n cancel()\n }\n }\n"],"names":["createStorageCb"],"mappings":";;;;AAiBO,MAAMA,iBAAA,GACX,CACE,OAAA,KAQF,CAAC,IAAA,EAAM,QAAQ,SAAA,EAAW,OAAA,EAAS,OAAA,EAAS,MAAA,EAAQ,gBAAA,KAAqB;AACvE,EAAA,IAAI,MAAA,CAAO,WAAW,CAAA,EAAG;AACvB,IAAA,MAAA,EAAO;AACP,IAAA,OAAO,IAAA;AAAA,EACT;AAEA,EAAA,IAAI,SAAA,GAAY,IAAA;AAChB,EAAA,IAAI,SAAS,MAAM;AACjB,IAAA,SAAA,GAAY,KAAA;AAAA,EACd,CAAA;AAEA,EAAA,OAAA,CAAQ,UAAU,OAAA,EAAS,CAAC,IAAA,EAAM,MAAA,EAAQ,SAAS,CAAA,EAAG;AAAA,IACpD,SAAA,EAAW,CAAC,QAAA,EAAU,kBAAA,KAAuB;AAC3C,MAAA,IACE,QAAA,CAAS,MAAA,KAAW,cAAA,IACpB,QAAA,CAAS,mBAAmB,MAAA,CAAO,MAAA;AAEnC,QAAA,OAAO,OAAA,CAAQ,IAAI,mBAAA,EAAqB,CAAA;AAE1C,MAAA,MAAM,EAAE,aAAY,GAAI,QAAA;AACxB,MAAA,MAAM,gBAAgB,MAAM;AAC1B,QAAA,OAAA,CAAQ,SAAA,CAAU,aAAA,EAAe,CAAC,WAAW,CAAC,CAAA;AAAA,MAChD,CAAA;AAEA,MAAA,IAAI,CAAC,SAAA,EAAW,OAAO,aAAA,EAAc;AAErC,MAAA,MAAM,aAAA,GAAgB,kBAAA,CAAmB,QAAA,CAAS,WAAA,EAAa;AAAA,QAC7D,IAAA,EAAM,CAAC,KAAA,KAAU;AACf,UAAA,QAAQ,MAAM,KAAA;AAAO,YACnB,KAAK,uBAAA,EAAyB;AAC5B,cAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AACnB,cAAA;AAAA,YACF;AAAA,YACA,KAAK,sBAAA,EAAwB;AAC3B,cAAA,OAAA,EAAQ;AACR,cAAA;AAAA,YACF;AAAA,YACA,KAAK,gBAAA,EAAkB;AACrB,cAAA,QAAA,CAAS,IAAI,cAAA,CAAe,KAAA,CAAM,KAAK,CAAC,CAAA;AACxC,cAAA;AAAA,YACF;AAAA,YACA,KAAK,uBAAA,EAAyB;AAC5B,cAAA,QAAA,CAAS,IAAI,4BAA4B,CAAA;AACzC,cAAA;AAAA,YACF;AAAA,YACA;AACE,cAAA,OAAA,CAAQ,SAAA,CAAU,QAAA,EAAU,CAAC,KAAA,CAAM,WAAW,CAAC,CAAA;AAAA;AACnD,QACF,CAAA;AAAA,QACA,KAAA,EAAO;AAAA,OACR,CAAA;AAED,MAAA,MAAA,GAAS,MAAM;AACb,QAAA,aAAA,EAAc;AACd,QAAA,OAAA,CAAQ,SAAA,CAAU,aAAA,EAAe,CAAC,QAAA,CAAS,WAAW,CAAC,CAAA;AAAA,MACzD,CAAA;AAEA,MAAA,MAAM,QAAA,GAAW,CAAC,CAAA,KAAa;AAC7B,QAAA,MAAA,GAAS,IAAA;AACT,QAAA,aAAA,EAAc;AACd,QAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,MACX,CAAA;AAEA,MAAA,MAAM,UAAU,MAAM;AACpB,QAAA,MAAA,GAAS,IAAA;AACT,QAAA,aAAA,EAAc;AACd,QAAA,MAAA,EAAO;AAAA,MACT,CAAA;AAEA,MAAA,gBAAA,CAAiB,SAAS,cAAc,CAAA;AAAA,IAC1C,CAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,OAAO,MAAM;AACX,IAAA,MAAA,EAAO;AAAA,EACT,CAAA;AACF;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"storage.mjs","sources":["../../../src/chainhead/storage.ts"],"sourcesContent":["import { OperationLimitError } from \"./errors\"\nimport type {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { abortablePromiseFn } from \"@/internal-utils\"\nimport { createStorageCb } from \"./storage-subscription\"\nimport type { ClientInnerRequest, FollowResponse } from \"./public-types\"\n\nexport const createStorageFn = (\n request: ClientInnerRequest<\n OperationStorageStartedRpc | LimitReachedRpc,\n | CommonOperationEventsRpc\n | OperationStorageItemsRpc\n | OperationStorageDoneRpc\n | OperationWaitingForContinueRpc\n >,\n): FollowResponse[\"storage\"] => {\n const cbStore = createStorageCb(request)\n return abortablePromiseFn((resolve, reject, hash, type, key, childTrie) => {\n const isDescendants = type.startsWith(\"descendants\")\n let result: any = isDescendants ? [] : null\n\n const onItems: Parameters<typeof cbStore>[3] = isDescendants\n ? (items) => {\n result.push(items)\n }\n : (items) => {\n result = items[0]?.[type as \"value\"]\n }\n\n const cancel = cbStore(\n hash,\n [{ key, type }],\n childTrie ?? null,\n onItems,\n reject,\n () => {\n try {\n resolve(isDescendants ? result.flat() : result)\n } catch (e) {\n reject(e)\n }\n },\n (nDiscarded) => {\n if (nDiscarded > 0) {\n cancel()\n reject(new OperationLimitError())\n }\n },\n )\n return cancel\n })\n}\n"],"names":["createStorageFn"],"mappings":";;;;AAaO,MAAMA,iBAAA,GAAkB,CAC7B,OAAA,KAO8B;AAC9B,EAAA,MAAM,OAAA,GAAU,gBAAgB,OAAO,CAAA;AACvC,EAAA,OAAO,mBAAmB,CAAC,OAAA,EAAS,QAAQ,IAAA,EAAM,IAAA,EAAM,KAAK,SAAA,KAAc;AACzE,IAAA,MAAM,aAAA,GAAgB,IAAA,CAAK,UAAA,CAAW,aAAa,CAAA;AACnD,IAAA,IAAI,MAAA,GAAc,aAAA,GAAgB,EAAC,GAAI,IAAA;AAEvC,IAAA,MAAM,OAAA,GAAyC,aAAA,GAC3C,CAAC,KAAA,KAAU;AACT,MAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,IACnB,CAAA,GACA,CAAC,KAAA,KAAU;AACT,MAAA,MAAA,GAAS,KAAA,CAAM,CAAC,CAAA,GAAI,IAAe,CAAA;AAAA,IACrC,CAAA;AAEJ,IAAA,MAAM,MAAA,GAAS,OAAA;AAAA,MACb,IAAA;AAAA,MACA,CAAC,EAAE,GAAA,EAAK,IAAA,EAAM,CAAA;AAAA,MACd,SAAA,IAAa,IAAA;AAAA,MACb,OAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAM;AACJ,QAAA,IAAI;AACF,UAAA,OAAA,CAAQ,aAAA,GAAgB,MAAA,CAAO,IAAA,EAAK,GAAI,MAAM,CAAA;AAAA,QAChD,SAAS,CAAA,EAAG;AACV,UAAA,MAAA,CAAO,CAAC,CAAA;AAAA,QACV;AAAA,MACF,CAAA;AAAA,MACA,CAAC,UAAA,KAAe;AACd,QAAA,IAAI,aAAa,CAAA,EAAG;AAClB,UAAA,MAAA,EAAO;AACP,UAAA,MAAA,CAAO,IAAI,qBAAqB,CAAA;AAAA,QAClC;AAAA,MACF;AAAA,KACF;AACA,IAAA,OAAO,MAAA;AAAA,EACT,CAAC,CAAA;AACH;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"unpin.mjs","sources":["../../../src/chainhead/unpin.ts"],"sourcesContent":["import { chainHead } from \"@/methods\"\nimport { ClientInnerRequest } from \"./public-types\"\n\nexport const createUnpinFn =\n (request: ClientInnerRequest<null, unknown>) => (hashes: string[]) =>\n hashes.length > 0\n ? new Promise<void>((res, rej) => {\n request(chainHead.unpin, [hashes], {\n onSuccess() {\n res()\n },\n onError: rej,\n })\n })\n : Promise.resolve()\n"],"names":[],"mappings":";;AAGO,MAAM,aAAA,GACX,CAAC,OAAA,KAA+C,CAAC,MAAA,KAC/C,MAAA,CAAO,MAAA,GAAS,CAAA,GACZ,IAAI,OAAA,CAAc,CAAC,GAAA,EAAK,GAAA,KAAQ;AAC9B,EAAA,OAAA,CAAQ,SAAA,CAAU,KAAA,EAAO,CAAC,MAAM,CAAA,EAAG;AAAA,IACjC,SAAA,GAAY;AACV,MAAA,GAAA,EAAI;AAAA,IACN,CAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACV,CAAA;AACH,CAAC,CAAA,GACD,QAAQ,OAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chainspec.mjs","sources":["../../src/chainspec.ts"],"sourcesContent":["import { type ClientRequest } from \"@polkadot-api/raw-client\"\nimport { abortablePromiseFn } from \"./internal-utils\"\nimport { chainSpec } from \"./methods\"\n\nexport interface ChainSpecData {\n name: string\n genesisHash: string\n properties: any\n}\n\nexport const createGetChainSpec = (clientRequest: ClientRequest<any, any>) => {\n const request = abortablePromiseFn(\n <T>(\n onSuccess: (value: T) => void,\n onError: (e: any) => void,\n method: string,\n params: any[],\n ) => clientRequest(method, params, { onSuccess, onError }),\n )\n let cachedPromise: null | Promise<ChainSpecData> = null\n\n return async (): Promise<ChainSpecData> => {\n if (cachedPromise) return cachedPromise\n return (cachedPromise = Promise.all([\n request<string>(chainSpec.chainName, []),\n request<string>(chainSpec.genesisHash, []),\n request<any>(chainSpec.properties, []),\n ]).then(([name, genesisHash, properties]) => ({\n name,\n genesisHash,\n properties,\n })))\n }\n}\n"],"names":[],"mappings":";;;AAUO,MAAM,kBAAA,GAAqB,CAAC,aAAA,KAA2C;AAC5E,EAAA,MAAM,OAAA,GAAU,kBAAA;AAAA,IACd,CACE,SAAA,EACA,OAAA,EACA,MAAA,EACA,MAAA,KACG,aAAA,CAAc,MAAA,EAAQ,MAAA,EAAQ,EAAE,SAAA,EAAW,OAAA,EAAS;AAAA,GAC3D;AACA,EAAA,IAAI,aAAA,GAA+C,IAAA;AAEnD,EAAA,OAAO,YAAoC;AACzC,IAAA,IAAI,eAAe,OAAO,aAAA;AAC1B,IAAA,OAAQ,aAAA,GAAgB,QAAQ,GAAA,CAAI;AAAA,MAClC,OAAA,CAAgB,SAAA,CAAU,SAAA,EAAW,EAAE,CAAA;AAAA,MACvC,OAAA,CAAgB,SAAA,CAAU,WAAA,EAAa,EAAE,CAAA;AAAA,MACzC,OAAA,CAAa,SAAA,CAAU,UAAA,EAAY,EAAE;AAAA,KACtC,EAAE,IAAA,CAAK,CAAC,CAAC,IAAA,EAAM,WAAA,EAAa,UAAU,CAAA,MAAO;AAAA,MAC5C,IAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACF,CAAE,CAAA;AAAA,EACJ,CAAA;AACF;;;;"}
|
package/dist/esm/index.mjs
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export { AbortError } from '@polkadot-api/utils';
|
|
2
|
-
export { DestroyedError, RpcError } from '@polkadot-api/raw-client';
|
|
3
|
-
export { DisjointError, OperationError, OperationInaccessibleError, OperationLimitError, StopError } from './chainhead/errors.mjs';
|
|
4
|
-
import './methods.mjs';
|
|
5
|
-
export { BlockHashNotFoundError, CallError, StorageError } from './archive/errors.mjs';
|
|
6
|
-
export { createClient } from './substrate-client.mjs';
|
|
7
|
-
//# sourceMappingURL=index.mjs.map
|
package/dist/esm/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"abortablePromiseFn.mjs","sources":["../../../src/internal-utils/abortablePromiseFn.ts"],"sourcesContent":["import { AbortError, noop } from \"@polkadot-api/utils\"\nimport { AbortablePromiseFn } from \"../common-types\"\n\nexport const abortablePromiseFn =\n <T, A extends Array<any>>(\n fn: (\n ...args: [...[res: (x: T) => void, rej: (e: any) => void], ...A]\n ) => () => void,\n ): AbortablePromiseFn<A, T> =>\n (...args): Promise<T> =>\n new Promise((res, rej) => {\n let cancel = noop\n\n const [actualArgs, abortSignal] =\n args[args.length - 1] instanceof AbortSignal\n ? ([args.slice(0, args.length - 1), args[args.length - 1]] as [\n A,\n AbortSignal,\n ])\n : ([args] as unknown as [A])\n\n const onAbort = () => {\n cancel()\n rej(new AbortError())\n }\n\n abortSignal?.addEventListener(\"abort\", onAbort, { once: true })\n\n const withCleanup =\n <T>(fn: (x: T) => void): ((x: T) => void) =>\n (x) => {\n cancel = noop\n abortSignal?.removeEventListener(\"abort\", onAbort)\n fn(x)\n }\n\n cancel = fn(...[withCleanup(res), withCleanup(rej), ...actualArgs])\n })\n"],"names":["fn"],"mappings":";;AAGO,MAAM,kBAAA,GACX,CACE,EAAA,KAIF,CAAA,GAAI,SACF,IAAI,OAAA,CAAQ,CAAC,GAAA,EAAK,GAAA,KAAQ;AACxB,EAAA,IAAI,MAAA,GAAS,IAAA;AAEb,EAAA,MAAM,CAAC,UAAA,EAAY,WAAW,CAAA,GAC5B,IAAA,CAAK,KAAK,MAAA,GAAS,CAAC,CAAA,YAAa,WAAA,GAC5B,CAAC,IAAA,CAAK,MAAM,CAAA,EAAG,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,EAAG,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAC,CAAA,GAItD,CAAC,IAAI,CAAA;AAEZ,EAAA,MAAM,UAAU,MAAM;AACpB,IAAA,MAAA,EAAO;AACP,IAAA,GAAA,CAAI,IAAI,YAAY,CAAA;AAAA,EACtB,CAAA;AAEA,EAAA,WAAA,EAAa,iBAAiB,OAAA,EAAS,OAAA,EAAS,EAAE,IAAA,EAAM,MAAM,CAAA;AAE9D,EAAA,MAAM,WAAA,GACJ,CAAIA,GAAAA,KACJ,CAAC,CAAA,KAAM;AACL,IAAA,MAAA,GAAS,IAAA;AACT,IAAA,WAAA,EAAa,mBAAA,CAAoB,SAAS,OAAO,CAAA;AACjD,IAAAA,IAAG,CAAC,CAAA;AAAA,EACN,CAAA;AAEF,EAAA,MAAA,GAAS,EAAA,CAAG,GAAG,CAAC,WAAA,CAAY,GAAG,CAAA,EAAG,WAAA,CAAY,GAAG,CAAA,EAAG,GAAG,UAAU,CAAC,CAAA;AACpE,CAAC;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deferred-promise.mjs","sources":["../../../src/internal-utils/deferred-promise.ts"],"sourcesContent":["export interface DeferredPromise<T> {\n promise: Promise<T>\n res: (value: T) => void\n rej: (err: Error) => void\n}\n\nexport function deferred<T>(): DeferredPromise<T> {\n let res: (value: T) => void = () => {}\n let rej: (err: Error) => void = () => {}\n\n const promise = new Promise<T>((_res, _rej) => {\n res = _res\n rej = _rej\n })\n\n return { promise, res, rej }\n}\n"],"names":[],"mappings":"AAMO,SAAS,QAAA,GAAkC;AAChD,EAAA,IAAI,MAA0B,MAAM;AAAA,EAAC,CAAA;AACrC,EAAA,IAAI,MAA4B,MAAM;AAAA,EAAC,CAAA;AAEvC,EAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAW,CAAC,MAAM,IAAA,KAAS;AAC7C,IAAA,GAAA,GAAM,IAAA;AACN,IAAA,GAAA,GAAM,IAAA;AAAA,EACR,CAAC,CAAA;AAED,EAAA,OAAO,EAAE,OAAA,EAAS,GAAA,EAAK,GAAA,EAAI;AAC7B;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"noop.mjs","sources":["../../../src/internal-utils/noop.ts"],"sourcesContent":["export const noop = (): void => {}\n"],"names":[],"mappings":"AAAO,MAAM,OAAO,MAAY;AAAC;;;;"}
|
package/dist/esm/methods.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"methods.mjs","sources":["../../src/methods.ts"],"sourcesContent":["const chainHead = {\n body: \"\",\n call: \"\",\n continue: \"\",\n follow: \"\",\n header: \"\",\n stopOperation: \"\",\n storage: \"\",\n unfollow: \"\",\n unpin: \"\",\n followEvent: \"\",\n}\n\nconst chainSpec = {\n chainName: \"\",\n genesisHash: \"\",\n properties: \"\",\n}\n\nconst transaction = {\n broadcast: \"\",\n stop: \"\",\n}\n\nObject.entries({ chainHead, chainSpec, transaction }).forEach(\n ([fnGroupName, methods]) => {\n Object.keys(methods).forEach((methodName) => {\n ;(methods as any)[methodName] = `${fnGroupName}_v1_${methodName}`\n })\n },\n)\n\nexport { chainHead, transaction, chainSpec }\n"],"names":[],"mappings":"AAAA,MAAM,SAAA,GAAY;AAAA,EAChB,IAAA,EAAM,EAAA;AAAA,EACN,IAAA,EAAM,EAAA;AAAA,EACN,QAAA,EAAU,EAAA;AAAA,EACV,MAAA,EAAQ,EAAA;AAAA,EACR,MAAA,EAAQ,EAAA;AAAA,EACR,aAAA,EAAe,EAAA;AAAA,EACf,OAAA,EAAS,EAAA;AAAA,EACT,QAAA,EAAU,EAAA;AAAA,EACV,KAAA,EAAO,EAAA;AAAA,EACP,WAAA,EAAa;AACf;AAEA,MAAM,SAAA,GAAY;AAAA,EAChB,SAAA,EAAW,EAAA;AAAA,EACX,WAAA,EAAa,EAAA;AAAA,EACb,UAAA,EAAY;AACd;AAEA,MAAM,WAAA,GAAc;AAAA,EAClB,SAAA,EAAW,EAAA;AAAA,EACX,IAAA,EAAM;AACR;AAEA,MAAA,CAAO,QAAQ,EAAE,SAAA,EAAW,SAAA,EAAW,WAAA,EAAa,CAAA,CAAE,OAAA;AAAA,EACpD,CAAC,CAAC,WAAA,EAAa,OAAO,CAAA,KAAM;AAC1B,IAAA,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,OAAA,CAAQ,CAAC,UAAA,KAAe;AAC1C,MAAC,QAAgB,UAAU,CAAA,GAAI,CAAA,EAAG,WAAW,OAAO,UAAU,CAAA,CAAA;AAAA,IACjE,CAAC,CAAA;AAAA,EACH;AACF,CAAA;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"substrate-client.mjs","sources":["../../src/substrate-client.ts"],"sourcesContent":["import type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport {\n ClientRequestCb,\n createClient as createRawClient,\n} from \"@polkadot-api/raw-client\"\nimport { getTransaction } from \"./transaction/transaction\"\nimport { getChainHead } from \"./chainhead\"\nimport type { ChainHead } from \"./chainhead\"\nimport type { Transaction } from \"./transaction\"\nimport { UnsubscribeFn } from \"./common-types\"\nimport { abortablePromiseFn } from \"./internal-utils\"\nimport { ChainSpecData, createGetChainSpec } from \"./chainspec\"\nimport { Archive, getArchive } from \"./archive\"\n\nexport interface SubstrateClient {\n archive: Archive\n chainHead: ChainHead\n transaction: Transaction\n destroy: UnsubscribeFn\n getChainSpecData: () => Promise<ChainSpecData>\n request: <T>(\n method: string,\n params: any[],\n abortSignal?: AbortSignal,\n ) => Promise<T>\n _request: <Reply, Notification>(\n method: string,\n params: any[],\n cb?: ClientRequestCb<Reply, Notification>,\n ) => UnsubscribeFn\n}\n\nexport const createClient = (provider: JsonRpcProvider): SubstrateClient => {\n const { request, disconnect } = createRawClient(provider)\n return {\n archive: getArchive(request),\n chainHead: getChainHead(request),\n transaction: getTransaction(request),\n getChainSpecData: createGetChainSpec(request),\n destroy: disconnect,\n request: abortablePromiseFn(\n <T>(\n onSuccess: (value: T) => void,\n onError: (e: any) => void,\n method: string,\n params: any[],\n ) => request(method, params, { onSuccess, onError }),\n ),\n _request: request,\n }\n}\n"],"names":["createRawClient"],"mappings":";;;;;;;;;AAgCO,MAAM,YAAA,GAAe,CAAC,QAAA,KAA+C;AAC1E,EAAA,MAAM,EAAE,OAAA,EAAS,UAAA,EAAW,GAAIA,eAAgB,QAAQ,CAAA;AACxD,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,WAAW,OAAO,CAAA;AAAA,IAC3B,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,IAC/B,WAAA,EAAa,eAAe,OAAO,CAAA;AAAA,IACnC,gBAAA,EAAkB,mBAAmB,OAAO,CAAA;AAAA,IAC5C,OAAA,EAAS,UAAA;AAAA,IACT,OAAA,EAAS,kBAAA;AAAA,MACP,CACE,SAAA,EACA,OAAA,EACA,MAAA,EACA,MAAA,KACG,OAAA,CAAQ,MAAA,EAAQ,MAAA,EAAQ,EAAE,SAAA,EAAW,OAAA,EAAS;AAAA,KACrD;AAAA,IACA,QAAA,EAAU;AAAA,GACZ;AACF;;;;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transaction.mjs","sources":["../../../src/transaction/transaction.ts"],"sourcesContent":["import { noop } from \"@/internal-utils\"\nimport { type ClientRequest } from \"@polkadot-api/raw-client\"\nimport { transaction } from \"@/methods\"\n\nexport const getTransaction =\n (request: ClientRequest<string, any>) =>\n (tx: string, error: (e: Error) => void) => {\n let isDone = false\n let cancel = () => {\n isDone = true\n }\n\n request(transaction.broadcast, [tx], {\n onSuccess: (subscriptionId) => {\n if (subscriptionId !== null) {\n cancel = () => {\n request(transaction.stop, [subscriptionId])\n cancel = noop\n }\n if (isDone) cancel()\n } else if (!isDone) {\n error(new Error(\"Max # of broadcasted transactions has been reached\"))\n }\n },\n onError: error,\n })\n\n return () => {\n cancel()\n }\n }\n"],"names":[],"mappings":";;;;AAIO,MAAM,cAAA,GACX,CAAC,OAAA,KACD,CAAC,IAAY,KAAA,KAA8B;AACzC,EAAA,IAAI,MAAA,GAAS,KAAA;AACb,EAAA,IAAI,SAAS,MAAM;AACjB,IAAA,MAAA,GAAS,IAAA;AAAA,EACX,CAAA;AAEA,EAAA,OAAA,CAAQ,WAAA,CAAY,SAAA,EAAW,CAAC,EAAE,CAAA,EAAG;AAAA,IACnC,SAAA,EAAW,CAAC,cAAA,KAAmB;AAC7B,MAAA,IAAI,mBAAmB,IAAA,EAAM;AAC3B,QAAA,MAAA,GAAS,MAAM;AACb,UAAA,OAAA,CAAQ,WAAA,CAAY,IAAA,EAAM,CAAC,cAAc,CAAC,CAAA;AAC1C,UAAA,MAAA,GAAS,IAAA;AAAA,QACX,CAAA;AACA,QAAA,IAAI,QAAQ,MAAA,EAAO;AAAA,MACrB,CAAA,MAAA,IAAW,CAAC,MAAA,EAAQ;AAClB,QAAA,KAAA,CAAM,IAAI,KAAA,CAAM,oDAAoD,CAAC,CAAA;AAAA,MACvE;AAAA,IACF,CAAA;AAAA,IACA,OAAA,EAAS;AAAA,GACV,CAAA;AAED,EAAA,OAAO,MAAM;AACX,IAAA,MAAA,EAAO;AAAA,EACT,CAAA;AACF;;;;"}
|