@polkadot-api/substrate-client 0.1.2 → 0.1.3

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/index.js CHANGED
@@ -17,10 +17,7 @@ var __copyProps = (to, from, except, desc) => {
17
17
  return to;
18
18
  };
19
19
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
- var __publicField = (obj, key, value) => {
21
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
22
- return value;
23
- };
20
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
24
21
 
25
22
  // src/index.ts
26
23
  var src_exports = {};
@@ -202,8 +199,7 @@ var createOperationPromise = (operationName, factory) => (request) => abortableP
202
199
  const stopOperation = () => {
203
200
  request(chainHead.stopOperation, [operationId]);
204
201
  };
205
- if (!isRunning)
206
- return stopOperation();
202
+ if (!isRunning) return stopOperation();
207
203
  let done = noop2;
208
204
  const _res = (x) => {
209
205
  isRunning = false;
@@ -222,8 +218,7 @@ var createOperationPromise = (operationName, factory) => (request) => abortableP
222
218
  rej(new OperationError(_e.error));
223
219
  else if (_e.event === "operationInaccessible")
224
220
  rej(new OperationInaccessibleError());
225
- else
226
- logicCb(e, _res, _rej);
221
+ else logicCb(e, _res, _rej);
227
222
  },
228
223
  error: _rej
229
224
  });
@@ -290,8 +285,7 @@ var createStorageCb = (request) => (hash, inputs, childTrie, onItems, onError, o
290
285
  const stopOperation = () => {
291
286
  request(chainHead.stopOperation, [operationId]);
292
287
  };
293
- if (!isRunning)
294
- return stopOperation();
288
+ if (!isRunning) return stopOperation();
295
289
  const doneListening = followSubscription(response.operationId, {
296
290
  next: (event) => {
297
291
  switch (event.event) {
@@ -469,8 +463,7 @@ function getChainHead(request) {
469
463
  return noop2;
470
464
  }
471
465
  const onSubscription = (subscription) => {
472
- if (!cb)
473
- return request(method, [subscription, ...params]);
466
+ if (!cb) return request(method, [subscription, ...params]);
474
467
  ongoingRequests.add(disjoint);
475
468
  const onSubscribeOperation = (operationId, subscriber) => {
476
469
  if (followSubscription === null) {
@@ -501,10 +494,8 @@ function getChainHead(request) {
501
494
  return onSubscription(followSubscription);
502
495
  let onCancel = noop2;
503
496
  followSubscription.then((x) => {
504
- if (x instanceof Error)
505
- return disjoint();
506
- if (followSubscription)
507
- onCancel = onSubscription(x);
497
+ if (x instanceof Error) return disjoint();
498
+ if (followSubscription) onCancel = onSubscription(x);
508
499
  });
509
500
  return () => {
510
501
  onCancel();
@@ -562,8 +553,7 @@ var createClient = (gProvider) => {
562
553
  ({ id, result, error, params } = parsed);
563
554
  if (id) {
564
555
  const cb = responses.get(id);
565
- if (!cb)
566
- return;
556
+ if (!cb) return;
567
557
  responses.delete(id);
568
558
  return error ? cb.onError(new RpcError(error)) : cb.onSuccess(result, (opaqueId, subscriber) => {
569
559
  const subscriptionId2 = opaqueId;
@@ -575,8 +565,7 @@ var createClient = (gProvider) => {
575
565
  }
576
566
  ;
577
567
  ({ subscription, result, error } = params);
578
- if (!subscription || !error && !Object.hasOwn(params, "result"))
579
- throw 0;
568
+ if (!subscription || !error && !Object.hasOwn(params, "result")) throw 0;
580
569
  const subscriptionId = subscription;
581
570
  if (error) {
582
571
  subscriptions.error(subscriptionId, new RpcError(error));
@@ -598,11 +587,9 @@ var createClient = (gProvider) => {
598
587
  };
599
588
  let nextId = 1;
600
589
  const request = (method, params, cb) => {
601
- if (!connection)
602
- throw new Error("Not connected");
590
+ if (!connection) throw new Error("Not connected");
603
591
  const id = `${clientId}-${nextId++}`;
604
- if (cb)
605
- responses.set(id, cb);
592
+ if (cb) responses.set(id, cb);
606
593
  send(id, method, params);
607
594
  return () => {
608
595
  responses.delete(id);
@@ -621,8 +608,7 @@ var createGetChainSpec = (clientRequest) => {
621
608
  );
622
609
  let cachedPromise = null;
623
610
  return async () => {
624
- if (cachedPromise)
625
- return cachedPromise;
611
+ if (cachedPromise) return cachedPromise;
626
612
  return cachedPromise = Promise.all([
627
613
  request(chainSpec.chainName, []),
628
614
  request(chainSpec.genesisHash, []),
@@ -640,8 +626,7 @@ var getCompatibilityEnhancer = (rpcMethodsP, request) => (methods) => {
640
626
  let translations = {};
641
627
  let enhancedRequest = null;
642
628
  return (method, ...rest) => {
643
- if (enhancedRequest)
644
- return enhancedRequest(method, ...rest);
629
+ if (enhancedRequest) return enhancedRequest(method, ...rest);
645
630
  let isRunning = true;
646
631
  let cleanup = () => {
647
632
  isRunning = false;
@@ -649,16 +634,13 @@ var getCompatibilityEnhancer = (rpcMethodsP, request) => (methods) => {
649
634
  rpcMethodsP.then((rpcMethods) => {
650
635
  enhancedRequest = (method_, ...iRest) => {
651
636
  const method2 = translations[method_] ?? method_;
652
- if (rpcMethods.has(method2))
653
- return request(method2, ...iRest);
637
+ if (rpcMethods.has(method2)) return request(method2, ...iRest);
654
638
  iRest[1]?.onError(new Error(`Unsupported method ${method2}`));
655
639
  return noop2;
656
640
  };
657
- if (rpcMethods.has(method))
658
- return;
641
+ if (rpcMethods.has(method)) return;
659
642
  const parts = method.split("_");
660
- if (parts[1] !== "v1")
661
- return;
643
+ if (parts[1] !== "v1") return;
662
644
  parts[1] = "unstable";
663
645
  if (rpcMethods.has(parts.join("_")))
664
646
  Object.values(methods).forEach((value) => {
@@ -681,8 +663,7 @@ var getCompatibilityEnhancer = (rpcMethodsP, request) => (methods) => {
681
663
  }
682
664
  }
683
665
  }).then(() => {
684
- if (isRunning)
685
- cleanup = enhancedRequest(method, ...rest);
666
+ if (isRunning) cleanup = enhancedRequest(method, ...rest);
686
667
  });
687
668
  return () => {
688
669
  cleanup();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/internal-utils/abortablePromiseFn.ts","../src/internal-utils/deferred-promise.ts","../src/internal-utils/noop.ts","../src/internal-utils/subscriptions-manager.ts","../src/methods.ts","../src/transaction/transaction.ts","../src/chainhead/errors.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/client/DestroyedError.ts","../src/chainhead/chainhead.ts","../src/client/RpcError.ts","../src/client/createClient.ts","../src/chainspec.ts","../src/request-compatibility-enhancer.ts"],"sourcesContent":["import type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport { getTransaction } from \"./transaction/transaction\"\nimport { getChainHead } from \"./chainhead\"\nimport {\n ClientRequest,\n ClientRequestCb,\n createClient as createRawClient,\n} from \"./client\"\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 { getCompatibilityEnhancer } from \"./request-compatibility-enhancer\"\nimport { chainHead, chainSpec, transaction } from \"./methods\"\n\nexport type * from \"./common-types\"\nexport type * from \"./client\"\nexport type * from \"./transaction\"\nexport type * from \"./chainhead\"\nexport type * from \"./chainspec\"\n\nexport { RpcError, DestroyedError } from \"./client\"\nexport {\n StopError,\n DisjointError,\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./chainhead\"\n\nexport interface SubstrateClient {\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 client = createRawClient(provider)\n\n const request = abortablePromiseFn(\n <T>(\n onSuccess: (value: T) => void,\n onError: (e: any) => void,\n method: string,\n params: any[],\n ) => client.request(method, params, { onSuccess, onError }),\n )\n\n const rpcMethods: Promise<Set<string>> = request<\n { methods: Array<string> } | Array<string>\n >(\"rpc_methods\", []).then(\n (x) => new Set(Array.isArray(x) ? x : x.methods),\n () => new Set(),\n )\n\n const compatibilityEnhancer = getCompatibilityEnhancer(\n rpcMethods,\n client.request,\n )\n\n return {\n chainHead: getChainHead(\n compatibilityEnhancer(chainHead) as ClientRequest<any, any>,\n ),\n transaction: getTransaction(\n compatibilityEnhancer(transaction) as ClientRequest<string, any>,\n ),\n getChainSpecData: createGetChainSpec(\n compatibilityEnhancer(chainSpec) as ClientRequest<any, any>,\n ),\n destroy: () => {\n client.disconnect()\n },\n request,\n _request: client.request,\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","export interface Subscriber<T> {\n next: (data: T) => void\n error: (e: Error) => void\n}\n\nexport const getSubscriptionsManager = <T>() => {\n const subscriptions = new Map<string, Subscriber<T>>()\n\n return {\n has: subscriptions.has.bind(subscriptions),\n subscribe(id: string, subscriber: Subscriber<T>) {\n subscriptions.set(id, subscriber)\n },\n unsubscribe(id: string) {\n subscriptions.delete(id)\n },\n next(id: string, data: T) {\n subscriptions.get(id)?.next(data)\n },\n error(id: string, e: Error) {\n const subscriber = subscriptions.get(id)\n if (subscriber) {\n subscriptions.delete(id)\n subscriber.error(e)\n }\n },\n errorAll(e: Error) {\n const subscribers = [...subscriptions.values()]\n subscriptions.clear()\n subscribers.forEach((s) => {\n s.error(e)\n })\n },\n }\n}\n\nexport type SubscriptionManager<T> = ReturnType<\n typeof getSubscriptionsManager<T>\n>\n","export const chainHead = {\n body: \"\",\n call: \"\",\n continue: \"\",\n follow: \"\",\n header: \"\",\n stopOperation: \"\",\n storage: \"\",\n unfollow: \"\",\n unpin: \"\",\n followEvent: \"\",\n}\n\nexport const chainSpec = {\n chainName: \"\",\n genesisHash: \"\",\n properties: \"\",\n}\n\nexport const transaction = {\n broadcast: \"\",\n stop: \"\",\n}\n\nexport const transactionWatch = {\n submitAndWatch: \"\",\n unwatch: \"\",\n}\n\nObject.entries({ chainHead, chainSpec, transaction, transactionWatch }).forEach(\n ([fnGroupName, methods]) => {\n Object.keys(methods).forEach((methodName) => {\n ;(methods as any)[methodName] = `${fnGroupName}_v1_${methodName}`\n })\n },\n)\n","import { noop } from \"@/internal-utils\"\nimport { type ClientRequest } from \"../client\"\nimport { transaction } from \"@/methods\"\n\nexport const getTransaction =\n (request: ClientRequest<string, any>) =>\n (tx: string, error: (e: Error) => void) => {\n let cancel = request(transaction.broadcast, [tx], {\n onSuccess: (subscriptionId) => {\n cancel =\n subscriptionId === null\n ? noop\n : () => {\n request(transaction.stop, [subscriptionId])\n }\n\n if (subscriptionId === null) {\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","export class StopError extends Error {\n constructor() {\n super(\"ChainHead stopped\")\n this.name = \"StopError\"\n }\n}\n\nexport class DisjointError extends Error {\n constructor() {\n super(\"ChainHead disjointed\")\n this.name = \"DisjointError\"\n }\n}\n\nexport class OperationLimitError extends Error {\n constructor() {\n super(\"ChainHead operations limit reached\")\n this.name = \"OperationLimitError\"\n }\n}\n\nexport class OperationError extends Error {\n constructor(error: string) {\n super(error)\n this.name = \"OperationError\"\n }\n}\n\nexport class OperationInaccessibleError extends Error {\n constructor() {\n super(\"ChainHead operation inaccessible\")\n this.name = \"OperationInaccessibleError\"\n }\n}\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 {\n ClientInnerRequest,\n FollowResponse,\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"..\"\nimport {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { chainHead } from \"@/methods\"\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 { ClientInnerRequest, FollowResponse, OperationLimitError } from \"..\"\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\"\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","export class DestroyedError extends Error {\n constructor() {\n super(\"Client destroyed\")\n this.name = \"DestroyedError\"\n }\n}\n","import type { ClientRequest, FollowSubscriptionCb } from \"@/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 {\n Subscriber,\n getSubscriptionsManager,\n noop,\n deferred,\n} 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 { DestroyedError } from \"@/client/DestroyedError\"\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\n const ongoingRequests = new Set<() => void>()\n const deferredFollow = deferred<string | Error>()\n let followSubscription: Promise<string | Error> | string | null =\n deferredFollow.promise\n\n const onAllFollowEventsNext = (event: FollowEventRpc) => {\n if (isOperationEvent(event)) {\n if (!subscriptions.has(event.operationId))\n console.warn(\"Uknown operationId on\", event)\n\n return subscriptions.next(event.operationId, event)\n }\n\n if (event.event !== \"stop\") {\n if (event.event === \"initialized\") {\n return onFollowEvent({\n type: event.event,\n finalizedBlockHashes:\n \"finalizedBlockHash\" in event\n ? [event.finalizedBlockHash]\n : event.finalizedBlockHashes,\n finalizedBlockRuntime: (event as any).finalizedBlockRuntime,\n })\n }\n\n const { event: type, ...rest } = event\n // This is kinda dangerous, but YOLO\n return onFollowEvent({ type, ...rest } as any)\n }\n\n onFollowError(new StopError())\n unfollow(false)\n }\n\n const onAllFollowEventsError = (error: Error) => {\n onFollowError(error)\n unfollow(!(error instanceof DestroyedError))\n }\n\n const onFollowRequestSuccess = (\n subscriptionId: string,\n follow: FollowSubscriptionCb<FollowEventRpc>,\n ) => {\n const done = follow(subscriptionId, {\n next: onAllFollowEventsNext,\n error: onAllFollowEventsError,\n })\n\n unfollow = (sendUnfollow = true) => {\n followSubscription = null\n unfollow = noop\n done()\n sendUnfollow && request(chainHead.unfollow, [subscriptionId])\n subscriptions.errorAll(new DisjointError())\n ongoingRequests.forEach((cb) => {\n cb()\n })\n ongoingRequests.clear()\n }\n\n followSubscription = subscriptionId\n deferredFollow.res(subscriptionId)\n }\n\n const onFollowRequestError = (e: Error) => {\n if (e instanceof DestroyedError) {\n unfollow(false)\n } else {\n onFollowError(e)\n }\n followSubscription = null\n deferredFollow.res(e)\n }\n\n let unfollow: (internal?: boolean) => void = request(\n chainHead.follow,\n [withRuntime],\n { onSuccess: onFollowRequestSuccess, onError: onFollowRequestError },\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 unfollow()\n followSubscription = null\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 interface IRpcError {\n code: number\n message: string\n data?: any\n}\n\nexport class RpcError extends Error implements IRpcError {\n code\n data\n constructor(e: IRpcError) {\n super(e.message)\n this.code = e.code\n this.data = e.data\n this.name = \"RpcError\"\n }\n}\n","import {\n JsonRpcConnection,\n JsonRpcProvider,\n} from \"@polkadot-api/json-rpc-provider\"\nimport { UnsubscribeFn } from \"../common-types\"\nimport { RpcError, IRpcError } from \"./RpcError\"\nimport { getSubscriptionsManager, Subscriber } from \"@/internal-utils\"\nimport { DestroyedError } from \"./DestroyedError\"\n\nexport type FollowSubscriptionCb<T> = (\n subscriptionId: string,\n cb: Subscriber<T>,\n) => UnsubscribeFn\n\nexport type ClientRequestCb<T, TT> = {\n onSuccess: (result: T, followSubscription: FollowSubscriptionCb<TT>) => void\n onError: (e: Error) => void\n}\n\nexport type ClientRequest<T, TT> = (\n method: string,\n params: Array<any>,\n cb?: ClientRequestCb<T, TT>,\n) => UnsubscribeFn\n\nexport interface Client {\n disconnect: () => void\n request: ClientRequest<any, any>\n}\n\nlet nextClientId = 1\nexport const createClient = (gProvider: JsonRpcProvider): Client => {\n let clientId = nextClientId++\n const responses = new Map<string, ClientRequestCb<any, any>>()\n const subscriptions = getSubscriptionsManager()\n\n let connection: JsonRpcConnection | null = null\n\n const send = (\n id: string,\n method: string,\n params: Array<boolean | string | number | null>,\n ) => {\n connection!.send(\n JSON.stringify({\n jsonrpc: \"2.0\",\n id,\n method,\n params,\n }),\n )\n }\n\n function onMessage(message: string): void {\n try {\n let id: string,\n result,\n error: IRpcError | undefined,\n params: { subscription: any; result: any; error?: IRpcError },\n subscription: string\n\n const parsed = JSON.parse(message)\n ;({ id, result, error, params } = parsed)\n\n if (id) {\n const cb = responses.get(id)\n if (!cb) return\n\n responses.delete(id)\n\n return error\n ? cb.onError(new RpcError(error))\n : cb.onSuccess(result, (opaqueId, subscriber) => {\n const subscriptionId = opaqueId\n subscriptions.subscribe(subscriptionId, subscriber)\n return () => {\n subscriptions.unsubscribe(subscriptionId)\n }\n })\n }\n\n // at this point, it means that it should be a notification\n ;({ subscription, result, error } = params)\n if (!subscription || (!error && !Object.hasOwn(params, \"result\"))) throw 0\n\n const subscriptionId = subscription\n\n if (error) {\n subscriptions.error(subscriptionId, new RpcError(error!))\n } else {\n subscriptions.next(subscriptionId, result)\n }\n } catch (e) {\n console.warn(\"Error parsing incomming message: \" + message)\n console.error(e)\n }\n }\n connection = gProvider(onMessage)\n\n const disconnect = () => {\n connection?.disconnect()\n connection = null\n subscriptions.errorAll(new DestroyedError())\n responses.forEach((r) => r.onError(new DestroyedError()))\n responses.clear()\n }\n\n let nextId = 1\n const request = <T, TT>(\n method: string,\n params: Array<any>,\n cb?: ClientRequestCb<T, TT>,\n ): UnsubscribeFn => {\n if (!connection) throw new Error(\"Not connected\")\n const id = `${clientId}-${nextId++}`\n\n if (cb) responses.set(id, cb)\n send(id, method, params)\n\n return (): void => {\n responses.delete(id)\n }\n }\n\n return {\n request,\n disconnect,\n }\n}\n","import { ClientRequest } from \"./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 { ClientRequest } from \"@/client\"\nimport { UnsubscribeFn } from \"./common-types\"\nimport { noop } from \"./internal-utils\"\n\nexport const getCompatibilityEnhancer =\n <T, E>(rpcMethodsP: Promise<Set<string>>, request: ClientRequest<T, E>) =>\n (methods: Record<string, string>): ClientRequest<T, E> => {\n let translations: Record<string, string> = {}\n let enhancedRequest: ClientRequest<T, E> | null = null\n\n return ((method, ...rest) => {\n if (enhancedRequest) return enhancedRequest(method, ...rest)\n\n let isRunning = true\n let cleanup: UnsubscribeFn = () => {\n isRunning = false\n }\n\n rpcMethodsP\n .then((rpcMethods) => {\n enhancedRequest = (method_, ...iRest) => {\n const method = translations[method_] ?? method_\n if (rpcMethods.has(method)) return request(method, ...iRest)\n iRest[1]?.onError(new Error(`Unsupported method ${method}`))\n return noop\n }\n\n if (rpcMethods.has(method)) return\n\n const parts = method.split(\"_\")\n if (parts[1] !== \"v1\") return\n\n parts[1] = \"unstable\"\n\n if (rpcMethods.has(parts.join(\"_\")))\n Object.values(methods).forEach((value) => {\n translations[value] = value.replace(\"_v1_\", \"_unstable_\")\n })\n else if (parts[0] === \"transaction\") {\n // old versions of smoldot and Polkadot-SDK don't support transaction_xx_broadcast\n // some old versions have `transactions_unstable_submitAndWatch` while others have `transaction_xx_submitAndWatch`\n // if we find any of this options, then we will can use them as if they were broadast/stop\n let unwatch: string | undefined\n let version: string | undefined\n\n const txGroup = [\"transactionWatch\", \"transaction\"].find(\n (group) => {\n version = [\"v1\", \"unstable\"].find((v) =>\n rpcMethods.has((unwatch = `${group}_${v}_unwatch`)),\n )\n return !!version\n },\n )\n\n if (txGroup) {\n translations[methods.broadcast] =\n `${txGroup}_${version}_submitAndWatch`\n translations[methods.stop] = unwatch!\n }\n }\n })\n .then(() => {\n if (isRunning) cleanup = enhancedRequest!(method, ...rest)\n })\n\n return () => {\n cleanup()\n }\n }) as ClientRequest<T, E>\n }\n"],"mappings":"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","names":["createClient","fn","noop","noop","noop","import_utils","noop","subscriptionId","method","noop","createClient"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/internal-utils/abortablePromiseFn.ts","../src/internal-utils/deferred-promise.ts","../src/internal-utils/noop.ts","../src/internal-utils/subscriptions-manager.ts","../src/methods.ts","../src/transaction/transaction.ts","../src/chainhead/errors.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/client/DestroyedError.ts","../src/chainhead/chainhead.ts","../src/client/RpcError.ts","../src/client/createClient.ts","../src/chainspec.ts","../src/request-compatibility-enhancer.ts"],"sourcesContent":["import type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport { getTransaction } from \"./transaction/transaction\"\nimport { getChainHead } from \"./chainhead\"\nimport {\n ClientRequest,\n ClientRequestCb,\n createClient as createRawClient,\n} from \"./client\"\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 { getCompatibilityEnhancer } from \"./request-compatibility-enhancer\"\nimport { chainHead, chainSpec, transaction } from \"./methods\"\n\nexport type * from \"./common-types\"\nexport type * from \"./client\"\nexport type * from \"./transaction\"\nexport type * from \"./chainhead\"\nexport type * from \"./chainspec\"\n\nexport { RpcError, DestroyedError } from \"./client\"\nexport {\n StopError,\n DisjointError,\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./chainhead\"\n\nexport interface SubstrateClient {\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 client = createRawClient(provider)\n\n const request = abortablePromiseFn(\n <T>(\n onSuccess: (value: T) => void,\n onError: (e: any) => void,\n method: string,\n params: any[],\n ) => client.request(method, params, { onSuccess, onError }),\n )\n\n const rpcMethods: Promise<Set<string>> = request<\n { methods: Array<string> } | Array<string>\n >(\"rpc_methods\", []).then(\n (x) => new Set(Array.isArray(x) ? x : x.methods),\n () => new Set(),\n )\n\n const compatibilityEnhancer = getCompatibilityEnhancer(\n rpcMethods,\n client.request,\n )\n\n return {\n chainHead: getChainHead(\n compatibilityEnhancer(chainHead) as ClientRequest<any, any>,\n ),\n transaction: getTransaction(\n compatibilityEnhancer(transaction) as ClientRequest<string, any>,\n ),\n getChainSpecData: createGetChainSpec(\n compatibilityEnhancer(chainSpec) as ClientRequest<any, any>,\n ),\n destroy: () => {\n client.disconnect()\n },\n request,\n _request: client.request,\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","export interface Subscriber<T> {\n next: (data: T) => void\n error: (e: Error) => void\n}\n\nexport const getSubscriptionsManager = <T>() => {\n const subscriptions = new Map<string, Subscriber<T>>()\n\n return {\n has: subscriptions.has.bind(subscriptions),\n subscribe(id: string, subscriber: Subscriber<T>) {\n subscriptions.set(id, subscriber)\n },\n unsubscribe(id: string) {\n subscriptions.delete(id)\n },\n next(id: string, data: T) {\n subscriptions.get(id)?.next(data)\n },\n error(id: string, e: Error) {\n const subscriber = subscriptions.get(id)\n if (subscriber) {\n subscriptions.delete(id)\n subscriber.error(e)\n }\n },\n errorAll(e: Error) {\n const subscribers = [...subscriptions.values()]\n subscriptions.clear()\n subscribers.forEach((s) => {\n s.error(e)\n })\n },\n }\n}\n\nexport type SubscriptionManager<T> = ReturnType<\n typeof getSubscriptionsManager<T>\n>\n","export const chainHead = {\n body: \"\",\n call: \"\",\n continue: \"\",\n follow: \"\",\n header: \"\",\n stopOperation: \"\",\n storage: \"\",\n unfollow: \"\",\n unpin: \"\",\n followEvent: \"\",\n}\n\nexport const chainSpec = {\n chainName: \"\",\n genesisHash: \"\",\n properties: \"\",\n}\n\nexport const transaction = {\n broadcast: \"\",\n stop: \"\",\n}\n\nexport const transactionWatch = {\n submitAndWatch: \"\",\n unwatch: \"\",\n}\n\nObject.entries({ chainHead, chainSpec, transaction, transactionWatch }).forEach(\n ([fnGroupName, methods]) => {\n Object.keys(methods).forEach((methodName) => {\n ;(methods as any)[methodName] = `${fnGroupName}_v1_${methodName}`\n })\n },\n)\n","import { noop } from \"@/internal-utils\"\nimport { type ClientRequest } from \"../client\"\nimport { transaction } from \"@/methods\"\n\nexport const getTransaction =\n (request: ClientRequest<string, any>) =>\n (tx: string, error: (e: Error) => void) => {\n let cancel = request(transaction.broadcast, [tx], {\n onSuccess: (subscriptionId) => {\n cancel =\n subscriptionId === null\n ? noop\n : () => {\n request(transaction.stop, [subscriptionId])\n }\n\n if (subscriptionId === null) {\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","export class StopError extends Error {\n constructor() {\n super(\"ChainHead stopped\")\n this.name = \"StopError\"\n }\n}\n\nexport class DisjointError extends Error {\n constructor() {\n super(\"ChainHead disjointed\")\n this.name = \"DisjointError\"\n }\n}\n\nexport class OperationLimitError extends Error {\n constructor() {\n super(\"ChainHead operations limit reached\")\n this.name = \"OperationLimitError\"\n }\n}\n\nexport class OperationError extends Error {\n constructor(error: string) {\n super(error)\n this.name = \"OperationError\"\n }\n}\n\nexport class OperationInaccessibleError extends Error {\n constructor() {\n super(\"ChainHead operation inaccessible\")\n this.name = \"OperationInaccessibleError\"\n }\n}\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 {\n ClientInnerRequest,\n FollowResponse,\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"..\"\nimport {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { chainHead } from \"@/methods\"\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 { ClientInnerRequest, FollowResponse, OperationLimitError } from \"..\"\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\"\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","export class DestroyedError extends Error {\n constructor() {\n super(\"Client destroyed\")\n this.name = \"DestroyedError\"\n }\n}\n","import type { ClientRequest, FollowSubscriptionCb } from \"@/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 {\n Subscriber,\n getSubscriptionsManager,\n noop,\n deferred,\n} 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 { DestroyedError } from \"@/client/DestroyedError\"\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\n const ongoingRequests = new Set<() => void>()\n const deferredFollow = deferred<string | Error>()\n let followSubscription: Promise<string | Error> | string | null =\n deferredFollow.promise\n\n const onAllFollowEventsNext = (event: FollowEventRpc) => {\n if (isOperationEvent(event)) {\n if (!subscriptions.has(event.operationId))\n console.warn(\"Uknown operationId on\", event)\n\n return subscriptions.next(event.operationId, event)\n }\n\n if (event.event !== \"stop\") {\n if (event.event === \"initialized\") {\n return onFollowEvent({\n type: event.event,\n finalizedBlockHashes:\n \"finalizedBlockHash\" in event\n ? [event.finalizedBlockHash]\n : event.finalizedBlockHashes,\n finalizedBlockRuntime: (event as any).finalizedBlockRuntime,\n })\n }\n\n const { event: type, ...rest } = event\n // This is kinda dangerous, but YOLO\n return onFollowEvent({ type, ...rest } as any)\n }\n\n onFollowError(new StopError())\n unfollow(false)\n }\n\n const onAllFollowEventsError = (error: Error) => {\n onFollowError(error)\n unfollow(!(error instanceof DestroyedError))\n }\n\n const onFollowRequestSuccess = (\n subscriptionId: string,\n follow: FollowSubscriptionCb<FollowEventRpc>,\n ) => {\n const done = follow(subscriptionId, {\n next: onAllFollowEventsNext,\n error: onAllFollowEventsError,\n })\n\n unfollow = (sendUnfollow = true) => {\n followSubscription = null\n unfollow = noop\n done()\n sendUnfollow && request(chainHead.unfollow, [subscriptionId])\n subscriptions.errorAll(new DisjointError())\n ongoingRequests.forEach((cb) => {\n cb()\n })\n ongoingRequests.clear()\n }\n\n followSubscription = subscriptionId\n deferredFollow.res(subscriptionId)\n }\n\n const onFollowRequestError = (e: Error) => {\n if (e instanceof DestroyedError) {\n unfollow(false)\n } else {\n onFollowError(e)\n }\n followSubscription = null\n deferredFollow.res(e)\n }\n\n let unfollow: (internal?: boolean) => void = request(\n chainHead.follow,\n [withRuntime],\n { onSuccess: onFollowRequestSuccess, onError: onFollowRequestError },\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 unfollow()\n followSubscription = null\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 interface IRpcError {\n code: number\n message: string\n data?: any\n}\n\nexport class RpcError extends Error implements IRpcError {\n code\n data\n constructor(e: IRpcError) {\n super(e.message)\n this.code = e.code\n this.data = e.data\n this.name = \"RpcError\"\n }\n}\n","import type {\n JsonRpcConnection,\n JsonRpcProvider,\n} from \"@polkadot-api/json-rpc-provider\"\nimport { UnsubscribeFn } from \"../common-types\"\nimport { RpcError, IRpcError } from \"./RpcError\"\nimport { getSubscriptionsManager, Subscriber } from \"@/internal-utils\"\nimport { DestroyedError } from \"./DestroyedError\"\n\nexport type FollowSubscriptionCb<T> = (\n subscriptionId: string,\n cb: Subscriber<T>,\n) => UnsubscribeFn\n\nexport type ClientRequestCb<T, TT> = {\n onSuccess: (result: T, followSubscription: FollowSubscriptionCb<TT>) => void\n onError: (e: Error) => void\n}\n\nexport type ClientRequest<T, TT> = (\n method: string,\n params: Array<any>,\n cb?: ClientRequestCb<T, TT>,\n) => UnsubscribeFn\n\nexport interface Client {\n disconnect: () => void\n request: ClientRequest<any, any>\n}\n\nlet nextClientId = 1\nexport const createClient = (gProvider: JsonRpcProvider): Client => {\n let clientId = nextClientId++\n const responses = new Map<string, ClientRequestCb<any, any>>()\n const subscriptions = getSubscriptionsManager()\n\n let connection: JsonRpcConnection | null = null\n\n const send = (\n id: string,\n method: string,\n params: Array<boolean | string | number | null>,\n ) => {\n connection!.send(\n JSON.stringify({\n jsonrpc: \"2.0\",\n id,\n method,\n params,\n }),\n )\n }\n\n function onMessage(message: string): void {\n try {\n let id: string,\n result,\n error: IRpcError | undefined,\n params: { subscription: any; result: any; error?: IRpcError },\n subscription: string\n\n const parsed = JSON.parse(message)\n ;({ id, result, error, params } = parsed)\n\n if (id) {\n const cb = responses.get(id)\n if (!cb) return\n\n responses.delete(id)\n\n return error\n ? cb.onError(new RpcError(error))\n : cb.onSuccess(result, (opaqueId, subscriber) => {\n const subscriptionId = opaqueId\n subscriptions.subscribe(subscriptionId, subscriber)\n return () => {\n subscriptions.unsubscribe(subscriptionId)\n }\n })\n }\n\n // at this point, it means that it should be a notification\n ;({ subscription, result, error } = params)\n if (!subscription || (!error && !Object.hasOwn(params, \"result\"))) throw 0\n\n const subscriptionId = subscription\n\n if (error) {\n subscriptions.error(subscriptionId, new RpcError(error!))\n } else {\n subscriptions.next(subscriptionId, result)\n }\n } catch (e) {\n console.warn(\"Error parsing incomming message: \" + message)\n console.error(e)\n }\n }\n connection = gProvider(onMessage)\n\n const disconnect = () => {\n connection?.disconnect()\n connection = null\n subscriptions.errorAll(new DestroyedError())\n responses.forEach((r) => r.onError(new DestroyedError()))\n responses.clear()\n }\n\n let nextId = 1\n const request = <T, TT>(\n method: string,\n params: Array<any>,\n cb?: ClientRequestCb<T, TT>,\n ): UnsubscribeFn => {\n if (!connection) throw new Error(\"Not connected\")\n const id = `${clientId}-${nextId++}`\n\n if (cb) responses.set(id, cb)\n send(id, method, params)\n\n return (): void => {\n responses.delete(id)\n }\n }\n\n return {\n request,\n disconnect,\n }\n}\n","import { ClientRequest } from \"./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 { ClientRequest } from \"@/client\"\nimport { UnsubscribeFn } from \"./common-types\"\nimport { noop } from \"./internal-utils\"\n\nexport const getCompatibilityEnhancer =\n <T, E>(rpcMethodsP: Promise<Set<string>>, request: ClientRequest<T, E>) =>\n (methods: Record<string, string>): ClientRequest<T, E> => {\n let translations: Record<string, string> = {}\n let enhancedRequest: ClientRequest<T, E> | null = null\n\n return ((method, ...rest) => {\n if (enhancedRequest) return enhancedRequest(method, ...rest)\n\n let isRunning = true\n let cleanup: UnsubscribeFn = () => {\n isRunning = false\n }\n\n rpcMethodsP\n .then((rpcMethods) => {\n enhancedRequest = (method_, ...iRest) => {\n const method = translations[method_] ?? method_\n if (rpcMethods.has(method)) return request(method, ...iRest)\n iRest[1]?.onError(new Error(`Unsupported method ${method}`))\n return noop\n }\n\n if (rpcMethods.has(method)) return\n\n const parts = method.split(\"_\")\n if (parts[1] !== \"v1\") return\n\n parts[1] = \"unstable\"\n\n if (rpcMethods.has(parts.join(\"_\")))\n Object.values(methods).forEach((value) => {\n translations[value] = value.replace(\"_v1_\", \"_unstable_\")\n })\n else if (parts[0] === \"transaction\") {\n // old versions of smoldot and Polkadot-SDK don't support transaction_xx_broadcast\n // some old versions have `transactions_unstable_submitAndWatch` while others have `transaction_xx_submitAndWatch`\n // if we find any of this options, then we will can use them as if they were broadast/stop\n let unwatch: string | undefined\n let version: string | undefined\n\n const txGroup = [\"transactionWatch\", \"transaction\"].find(\n (group) => {\n version = [\"v1\", \"unstable\"].find((v) =>\n rpcMethods.has((unwatch = `${group}_${v}_unwatch`)),\n )\n return !!version\n },\n )\n\n if (txGroup) {\n translations[methods.broadcast] =\n `${txGroup}_${version}_submitAndWatch`\n translations[methods.stop] = unwatch!\n }\n }\n })\n .then(() => {\n if (isRunning) cleanup = enhancedRequest!(method, ...rest)\n })\n\n return () => {\n cleanup()\n }\n }) as ClientRequest<T, E>\n }\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,sBAAAA;AAAA;AAAA;;;ACAA,mBAAiC;AAG1B,IAAM,qBACX,CACE,OAIF,IAAI,SACF,IAAI,QAAQ,CAAC,KAAK,QAAQ;AACxB,MAAI,SAAS;AAEb,QAAM,CAAC,YAAY,WAAW,IAC5B,KAAK,KAAK,SAAS,CAAC,aAAa,cAC5B,CAAC,KAAK,MAAM,GAAG,KAAK,SAAS,CAAC,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,IAItD,CAAC,IAAI;AAEZ,QAAM,UAAU,MAAM;AACpB,WAAO;AACP,QAAI,IAAI,wBAAW,CAAC;AAAA,EACtB;AAEA,eAAa,iBAAiB,SAAS,SAAS,EAAE,MAAM,KAAK,CAAC;AAE9D,QAAM,cACJ,CAAIC,QACJ,CAAC,MAAM;AACL,aAAS;AACT,iBAAa,oBAAoB,SAAS,OAAO;AACjD,IAAAA,IAAG,CAAC;AAAA,EACN;AAEF,WAAS,GAAG,GAAG,CAAC,YAAY,GAAG,GAAG,YAAY,GAAG,GAAG,GAAG,UAAU,CAAC;AACpE,CAAC;;;AC/BE,SAAS,WAAkC;AAChD,MAAI,MAA0B,MAAM;AAAA,EAAC;AACrC,MAAI,MAA4B,MAAM;AAAA,EAAC;AAEvC,QAAM,UAAU,IAAI,QAAW,CAAC,MAAM,SAAS;AAC7C,UAAM;AACN,UAAM;AAAA,EACR,CAAC;AAED,SAAO,EAAE,SAAS,KAAK,IAAI;AAC7B;;;AChBO,IAAMC,QAAO,MAAY;AAAC;;;ACK1B,IAAM,0BAA0B,MAAS;AAC9C,QAAM,gBAAgB,oBAAI,IAA2B;AAErD,SAAO;AAAA,IACL,KAAK,cAAc,IAAI,KAAK,aAAa;AAAA,IACzC,UAAU,IAAY,YAA2B;AAC/C,oBAAc,IAAI,IAAI,UAAU;AAAA,IAClC;AAAA,IACA,YAAY,IAAY;AACtB,oBAAc,OAAO,EAAE;AAAA,IACzB;AAAA,IACA,KAAK,IAAY,MAAS;AACxB,oBAAc,IAAI,EAAE,GAAG,KAAK,IAAI;AAAA,IAClC;AAAA,IACA,MAAM,IAAY,GAAU;AAC1B,YAAM,aAAa,cAAc,IAAI,EAAE;AACvC,UAAI,YAAY;AACd,sBAAc,OAAO,EAAE;AACvB,mBAAW,MAAM,CAAC;AAAA,MACpB;AAAA,IACF;AAAA,IACA,SAAS,GAAU;AACjB,YAAM,cAAc,CAAC,GAAG,cAAc,OAAO,CAAC;AAC9C,oBAAc,MAAM;AACpB,kBAAY,QAAQ,CAAC,MAAM;AACzB,UAAE,MAAM,CAAC;AAAA,MACX,CAAC;AAAA,IACH;AAAA,EACF;AACF;;;AClCO,IAAM,YAAY;AAAA,EACvB,MAAM;AAAA,EACN,MAAM;AAAA,EACN,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,SAAS;AAAA,EACT,UAAU;AAAA,EACV,OAAO;AAAA,EACP,aAAa;AACf;AAEO,IAAM,YAAY;AAAA,EACvB,WAAW;AAAA,EACX,aAAa;AAAA,EACb,YAAY;AACd;AAEO,IAAM,cAAc;AAAA,EACzB,WAAW;AAAA,EACX,MAAM;AACR;AAEO,IAAM,mBAAmB;AAAA,EAC9B,gBAAgB;AAAA,EAChB,SAAS;AACX;AAEA,OAAO,QAAQ,EAAE,WAAW,WAAW,aAAa,iBAAiB,CAAC,EAAE;AAAA,EACtE,CAAC,CAAC,aAAa,OAAO,MAAM;AAC1B,WAAO,KAAK,OAAO,EAAE,QAAQ,CAAC,eAAe;AAC3C;AAAC,MAAC,QAAgB,UAAU,IAAI,GAAG,WAAW,OAAO,UAAU;AAAA,IACjE,CAAC;AAAA,EACH;AACF;;;AC/BO,IAAM,iBACX,CAAC,YACD,CAAC,IAAY,UAA8B;AACzC,MAAI,SAAS,QAAQ,YAAY,WAAW,CAAC,EAAE,GAAG;AAAA,IAChD,WAAW,CAAC,mBAAmB;AAC7B,eACE,mBAAmB,OACfC,QACA,MAAM;AACJ,gBAAQ,YAAY,MAAM,CAAC,cAAc,CAAC;AAAA,MAC5C;AAEN,UAAI,mBAAmB,MAAM;AAC3B,cAAM,IAAI,MAAM,oDAAoD,CAAC;AAAA,MACvE;AAAA,IACF;AAAA,IACA,SAAS;AAAA,EACX,CAAC;AAED,SAAO,MAAM;AACX,WAAO;AAAA,EACT;AACF;;;AC1BK,IAAM,YAAN,cAAwB,MAAM;AAAA,EACnC,cAAc;AACZ,UAAM,mBAAmB;AACzB,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,gBAAN,cAA4B,MAAM;AAAA,EACvC,cAAc;AACZ,UAAM,sBAAsB;AAC5B,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,sBAAN,cAAkC,MAAM;AAAA,EAC7C,cAAc;AACZ,UAAM,oCAAoC;AAC1C,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,iBAAN,cAA6B,MAAM;AAAA,EACxC,YAAY,OAAe;AACzB,UAAM,KAAK;AACX,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,6BAAN,cAAyC,MAAM;AAAA,EACpD,cAAc;AACZ,UAAM,kCAAkC;AACxC,SAAK,OAAO;AAAA,EACd;AACF;;;ACpBO,IAAM,yBACX,CACE,eACA,YAOF,CACE,YAKA,mBAAyB,CAAC,KAAK,QAAQ,SAAS;AAC9C,MAAI,YAAY;AAChB,MAAI,SAAS,MAAM;AACjB,gBAAY;AAAA,EACd;AAEA,QAAM,CAAC,aAAa,OAAO,IAAI,QAAQ,GAAG,IAAI;AAC9C,UAAQ,eAAe,aAAa;AAAA,IAClC,WAAW,CAAC,UAAU,uBAAuB;AAC3C,UAAI,SAAS,WAAW;AACtB,eAAO,IAAI,IAAI,oBAAoB,CAAC;AAEtC,YAAM,EAAE,YAAY,IAAI;AACxB,YAAM,gBAAgB,MAAM;AAC1B,gBAAQ,UAAU,eAAe,CAAC,WAAW,CAAC;AAAA,MAChD;AAEA,UAAI,CAAC,UAAW,QAAO,cAAc;AAErC,UAAI,OAAOC;AACX,YAAM,OAAO,CAAC,MAAS;AACrB,oBAAY;AACZ,aAAK;AACL,YAAI,CAAC;AAAA,MACP;AACA,YAAM,OAAO,CAAC,MAAa;AACzB,oBAAY;AACZ,aAAK;AACL,YAAI,CAAC;AAAA,MACP;AAEA,aAAO,mBAAmB,aAAa;AAAA,QACrC,MAAM,CAAC,MAAM;AACX,gBAAM,KAAK;AACX,cAAI,GAAG,UAAU;AACf,gBAAI,IAAI,eAAe,GAAG,KAAK,CAAC;AAAA,mBACzB,GAAG,UAAU;AACpB,gBAAI,IAAI,2BAA2B,CAAC;AAAA,cACjC,SAAQ,GAAQ,MAAM,IAAI;AAAA,QACjC;AAAA,QACA,OAAO;AAAA,MACT,CAAC;AAED,eAAS,MAAM;AACb,YAAI,WAAW;AACb,eAAK;AACL,wBAAc;AAAA,QAChB;AAAA,MACF;AAAA,IACF;AAAA,IACA,SAAS;AAAA,EACX,CAAC;AAED,SAAO,MAAM;AACX,WAAO;AAAA,EACT;AACF,CAAC;;;ACjFE,IAAM,eAAe;AAAA,EAC1B,UAAU;AAAA,EACV,CAAC,SAAiB;AAAA,IAChB,CAAC,IAAI;AAAA,IACL,CAAC,GAAyB,QAAoC;AAC5D,UAAI,EAAE,KAAK;AAAA,IACb;AAAA,EACF;AACF;;;ACRO,IAAM,eAAe;AAAA,EAC1B,UAAU;AAAA,EACV,CAAC,MAAc,QAAgB,mBAA2B;AAAA,IACxD,CAAC,MAAM,QAAQ,cAAc;AAAA,IAC7B,CAAC,GAAyB,QAAkC;AAC1D,UAAI,EAAE,MAAM;AAAA,IACd;AAAA,EACF;AACF;;;ACTO,IAAM,iBACX,CAAC,YAAiD,CAAC,SACjD,IAAI,QAAgB,CAAC,KAAK,QAAQ;AAChC,UAAQ,UAAU,QAAQ,CAAC,IAAI,GAAG;AAAA,IAChC,WAAW;AAAA,IACX,SAAS;AAAA,EACX,CAAC;AACH,CAAC;;;ACVL,IAAAC,gBAAqB;AAkBd,IAAM,kBACX,CACE,YAQF,CAAC,MAAM,QAAQ,WAAW,SAAS,SAAS,QAAQ,qBAAqB;AACvE,MAAI,OAAO,WAAW,GAAG;AACvB,WAAO;AACP,WAAO;AAAA,EACT;AAEA,MAAI,YAAY;AAChB,MAAI,SAAS,MAAM;AACjB,gBAAY;AAAA,EACd;AAEA,UAAQ,UAAU,SAAS,CAAC,MAAM,QAAQ,SAAS,GAAG;AAAA,IACpD,WAAW,CAAC,UAAU,uBAAuB;AAC3C,UACE,SAAS,WAAW,kBACpB,SAAS,mBAAmB,OAAO;AAEnC,eAAO,QAAQ,IAAI,oBAAoB,CAAC;AAE1C,YAAM,EAAE,YAAY,IAAI;AACxB,YAAM,gBAAgB,MAAM;AAC1B,gBAAQ,UAAU,eAAe,CAAC,WAAW,CAAC;AAAA,MAChD;AAEA,UAAI,CAAC,UAAW,QAAO,cAAc;AAErC,YAAM,gBAAgB,mBAAmB,SAAS,aAAa;AAAA,QAC7D,MAAM,CAAC,UAAU;AACf,kBAAQ,MAAM,OAAO;AAAA,YACnB,KAAK,yBAAyB;AAC5B,sBAAQ,MAAM,KAAK;AACnB;AAAA,YACF;AAAA,YACA,KAAK,wBAAwB;AAC3B,sBAAQ;AACR;AAAA,YACF;AAAA,YACA,KAAK,kBAAkB;AACrB,uBAAS,IAAI,eAAe,MAAM,KAAK,CAAC;AACxC;AAAA,YACF;AAAA,YACA,KAAK,yBAAyB;AAC5B,uBAAS,IAAI,2BAA2B,CAAC;AACzC;AAAA,YACF;AAAA,YACA;AACE,sBAAQ,UAAU,UAAU,CAAC,MAAM,WAAW,CAAC;AAAA,UACnD;AAAA,QACF;AAAA,QACA,OAAO;AAAA,MACT,CAAC;AAED,eAAS,MAAM;AACb,sBAAc;AACd,gBAAQ,UAAU,eAAe,CAAC,SAAS,WAAW,CAAC;AAAA,MACzD;AAEA,YAAM,WAAW,CAAC,MAAa;AAC7B,iBAAS;AACT,sBAAc;AACd,gBAAQ,CAAC;AAAA,MACX;AAEA,YAAM,UAAU,MAAM;AACpB,iBAAS;AACT,sBAAc;AACd,eAAO;AAAA,MACT;AAEA,uBAAiB,SAAS,cAAc;AAAA,IAC1C;AAAA,IACA;AAAA,EACF,CAAC;AAED,SAAO,MAAM;AACX,WAAO;AAAA,EACT;AACF;;;AC7FK,IAAM,kBAAkB,CAC7B,YAO8B;AAC9B,QAAM,UAAU,gBAAgB,OAAO;AACvC,SAAO,mBAAmB,CAAC,SAAS,QAAQ,MAAM,MAAM,KAAK,cAAc;AACzE,UAAM,gBAAgB,KAAK,WAAW,aAAa;AACnD,QAAI,SAAc,gBAAgB,CAAC,IAAI;AAEvC,UAAM,UAAyC,gBAC3C,CAAC,UAAU;AACT,aAAO,KAAK,KAAK;AAAA,IACnB,IACA,CAAC,UAAU;AACT,eAAS,MAAM,CAAC,IAAI,IAAe;AAAA,IACrC;AAEJ,UAAM,SAAS;AAAA,MACb;AAAA,MACA,CAAC,EAAE,KAAK,KAAK,CAAC;AAAA,MACd,aAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA,MAAM;AACJ,YAAI;AACF,kBAAQ,gBAAgB,OAAO,KAAK,IAAI,MAAM;AAAA,QAChD,SAAS,GAAG;AACV,iBAAO,CAAC;AAAA,QACV;AAAA,MACF;AAAA,MACA,CAAC,eAAe;AACd,YAAI,aAAa,GAAG;AAClB,iBAAO;AACP,iBAAO,IAAI,oBAAoB,CAAC;AAAA,QAClC;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,EACT,CAAC;AACH;;;ACrDO,IAAM,gBACX,CAAC,YAA+C,CAAC,WAC/C,OAAO,SAAS,IACZ,IAAI,QAAc,CAAC,KAAK,QAAQ;AAC9B,UAAQ,UAAU,OAAO,CAAC,MAAM,GAAG;AAAA,IACjC,YAAY;AACV,UAAI;AAAA,IACN;AAAA,IACA,SAAS;AAAA,EACX,CAAC;AACH,CAAC,IACD,QAAQ,QAAQ;;;ACdjB,IAAM,iBAAN,cAA6B,MAAM;AAAA,EACxC,cAAc;AACZ,UAAM,kBAAkB;AACxB,SAAK,OAAO;AAAA,EACd;AACF;;;AC+BA,SAAS,iBAAiB,OAAoD;AAC5E,SAAQ,MAA6B,gBAAgB;AACvD;AAEO,SAAS,aACd,SACW;AACX,SAAO,CACL,aACA,eAGA,kBACmB;AACnB,UAAM,gBAAgB,wBAA4C;AAElE,UAAM,kBAAkB,oBAAI,IAAgB;AAC5C,UAAM,iBAAiB,SAAyB;AAChD,QAAI,qBACF,eAAe;AAEjB,UAAM,wBAAwB,CAAC,UAA0B;AACvD,UAAI,iBAAiB,KAAK,GAAG;AAC3B,YAAI,CAAC,cAAc,IAAI,MAAM,WAAW;AACtC,kBAAQ,KAAK,yBAAyB,KAAK;AAE7C,eAAO,cAAc,KAAK,MAAM,aAAa,KAAK;AAAA,MACpD;AAEA,UAAI,MAAM,UAAU,QAAQ;AAC1B,YAAI,MAAM,UAAU,eAAe;AACjC,iBAAO,cAAc;AAAA,YACnB,MAAM,MAAM;AAAA,YACZ,sBACE,wBAAwB,QACpB,CAAC,MAAM,kBAAkB,IACzB,MAAM;AAAA,YACZ,uBAAwB,MAAc;AAAA,UACxC,CAAC;AAAA,QACH;AAEA,cAAM,EAAE,OAAO,MAAM,GAAG,KAAK,IAAI;AAEjC,eAAO,cAAc,EAAE,MAAM,GAAG,KAAK,CAAQ;AAAA,MAC/C;AAEA,oBAAc,IAAI,UAAU,CAAC;AAC7B,eAAS,KAAK;AAAA,IAChB;AAEA,UAAM,yBAAyB,CAAC,UAAiB;AAC/C,oBAAc,KAAK;AACnB,eAAS,EAAE,iBAAiB,eAAe;AAAA,IAC7C;AAEA,UAAM,yBAAyB,CAC7B,gBACA,WACG;AACH,YAAM,OAAO,OAAO,gBAAgB;AAAA,QAClC,MAAM;AAAA,QACN,OAAO;AAAA,MACT,CAAC;AAED,iBAAW,CAAC,eAAe,SAAS;AAClC,6BAAqB;AACrB,mBAAWC;AACX,aAAK;AACL,wBAAgB,QAAQ,UAAU,UAAU,CAAC,cAAc,CAAC;AAC5D,sBAAc,SAAS,IAAI,cAAc,CAAC;AAC1C,wBAAgB,QAAQ,CAAC,OAAO;AAC9B,aAAG;AAAA,QACL,CAAC;AACD,wBAAgB,MAAM;AAAA,MACxB;AAEA,2BAAqB;AACrB,qBAAe,IAAI,cAAc;AAAA,IACnC;AAEA,UAAM,uBAAuB,CAAC,MAAa;AACzC,UAAI,aAAa,gBAAgB;AAC/B,iBAAS,KAAK;AAAA,MAChB,OAAO;AACL,sBAAc,CAAC;AAAA,MACjB;AACA,2BAAqB;AACrB,qBAAe,IAAI,CAAC;AAAA,IACtB;AAEA,QAAI,WAAyC;AAAA,MAC3C,UAAU;AAAA,MACV,CAAC,WAAW;AAAA,MACZ,EAAE,WAAW,wBAAwB,SAAS,qBAAqB;AAAA,IACrE;AAEA,UAAM,WAAyC,CAAC,QAAQ,QAAQ,OAAO;AACrE,YAAM,WAAW,MAAM;AACrB,YAAI,QAAQ,IAAI,cAAc,CAAC;AAAA,MACjC;AAEA,UAAI,uBAAuB,MAAM;AAC/B,iBAAS;AACT,eAAOA;AAAA,MACT;AAEA,YAAM,iBAAiB,CAAC,iBAAyB;AAC/C,YAAI,CAAC,GAAI,QAAO,QAAQ,QAAQ,CAAC,cAAc,GAAG,MAAM,CAAC;AAEzD,wBAAgB,IAAI,QAAQ;AAE5B,cAAM,uBAAuB,CAC3B,aACA,eACG;AACH,cAAI,uBAAuB,MAAM;AAC/B,uBAAW,MAAM,IAAI,cAAc,CAAC;AACpC,mBAAOA;AAAA,UACT;AAEA,wBAAc,UAAU,aAAa,UAAU;AAE/C,iBAAO,MAAM;AACX,0BAAc,YAAY,WAAW;AAAA,UACvC;AAAA,QACF;AAEA,cAAM,UAAU,QAAQ,QAAQ,CAAC,cAAc,GAAG,MAAM,GAAG;AAAA,UACzD,WAAW,CAAC,aAAa;AACvB,4BAAgB,OAAO,QAAQ;AAC/B,eAAG,UAAU,UAAU,oBAAoB;AAAA,UAC7C;AAAA,UACA,SAAS,CAAC,MAAM;AACd,4BAAgB,OAAO,QAAQ;AAC/B,eAAG,QAAQ,CAAC;AAAA,UACd;AAAA,QACF,CAAC;AAED,eAAO,MAAM;AACX,0BAAgB,OAAO,QAAQ;AAC/B,kBAAQ;AAAA,QACV;AAAA,MACF;AAEA,UAAI,OAAO,uBAAuB;AAChC,eAAO,eAAe,kBAAkB;AAE1C,UAAI,WAAWA;AACf,yBAAmB,KAAK,CAAC,MAAM;AAC7B,YAAI,aAAa,MAAO,QAAO,SAAS;AACxC,YAAI,mBAAoB,YAAW,eAAe,CAAC;AAAA,MACrD,CAAC;AAED,aAAO,MAAM;AACX,iBAAS;AAAA,MACX;AAAA,IACF;AAEA,WAAO;AAAA,MACL,WAAW;AACT,iBAAS;AACT,6BAAqB;AAAA,MACvB;AAAA,MACA,MAAM,aAAa,QAAQ;AAAA,MAC3B,MAAM,aAAa,QAAQ;AAAA,MAC3B,QAAQ,eAAe,QAAQ;AAAA,MAC/B,SAAS,gBAAgB,QAAQ;AAAA,MACjC,qBAAqB,gBAAgB,QAAQ;AAAA,MAC7C,OAAO,cAAc,QAAQ;AAAA,MAC7B,UAAU;AAAA,IACZ;AAAA,EACF;AACF;;;AC1MO,IAAM,WAAN,cAAuB,MAA2B;AAAA,EAGvD,YAAY,GAAc;AACxB,UAAM,EAAE,OAAO;AAHjB;AACA;AAGE,SAAK,OAAO,EAAE;AACd,SAAK,OAAO,EAAE;AACd,SAAK,OAAO;AAAA,EACd;AACF;;;ACeA,IAAI,eAAe;AACZ,IAAM,eAAe,CAAC,cAAuC;AAClE,MAAI,WAAW;AACf,QAAM,YAAY,oBAAI,IAAuC;AAC7D,QAAM,gBAAgB,wBAAwB;AAE9C,MAAI,aAAuC;AAE3C,QAAM,OAAO,CACX,IACA,QACA,WACG;AACH,eAAY;AAAA,MACV,KAAK,UAAU;AAAA,QACb,SAAS;AAAA,QACT;AAAA,QACA;AAAA,QACA;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AAEA,WAAS,UAAU,SAAuB;AACxC,QAAI;AACF,UAAI,IACF,QACA,OACA,QACA;AAEF,YAAM,SAAS,KAAK,MAAM,OAAO;AAChC,OAAC,EAAE,IAAI,QAAQ,OAAO,OAAO,IAAI;AAElC,UAAI,IAAI;AACN,cAAM,KAAK,UAAU,IAAI,EAAE;AAC3B,YAAI,CAAC,GAAI;AAET,kBAAU,OAAO,EAAE;AAEnB,eAAO,QACH,GAAG,QAAQ,IAAI,SAAS,KAAK,CAAC,IAC9B,GAAG,UAAU,QAAQ,CAAC,UAAU,eAAe;AAC7C,gBAAMC,kBAAiB;AACvB,wBAAc,UAAUA,iBAAgB,UAAU;AAClD,iBAAO,MAAM;AACX,0BAAc,YAAYA,eAAc;AAAA,UAC1C;AAAA,QACF,CAAC;AAAA,MACP;AAGA;AAAC,OAAC,EAAE,cAAc,QAAQ,MAAM,IAAI;AACpC,UAAI,CAAC,gBAAiB,CAAC,SAAS,CAAC,OAAO,OAAO,QAAQ,QAAQ,EAAI,OAAM;AAEzE,YAAM,iBAAiB;AAEvB,UAAI,OAAO;AACT,sBAAc,MAAM,gBAAgB,IAAI,SAAS,KAAM,CAAC;AAAA,MAC1D,OAAO;AACL,sBAAc,KAAK,gBAAgB,MAAM;AAAA,MAC3C;AAAA,IACF,SAAS,GAAG;AACV,cAAQ,KAAK,sCAAsC,OAAO;AAC1D,cAAQ,MAAM,CAAC;AAAA,IACjB;AAAA,EACF;AACA,eAAa,UAAU,SAAS;AAEhC,QAAM,aAAa,MAAM;AACvB,gBAAY,WAAW;AACvB,iBAAa;AACb,kBAAc,SAAS,IAAI,eAAe,CAAC;AAC3C,cAAU,QAAQ,CAAC,MAAM,EAAE,QAAQ,IAAI,eAAe,CAAC,CAAC;AACxD,cAAU,MAAM;AAAA,EAClB;AAEA,MAAI,SAAS;AACb,QAAM,UAAU,CACd,QACA,QACA,OACkB;AAClB,QAAI,CAAC,WAAY,OAAM,IAAI,MAAM,eAAe;AAChD,UAAM,KAAK,GAAG,QAAQ,IAAI,QAAQ;AAElC,QAAI,GAAI,WAAU,IAAI,IAAI,EAAE;AAC5B,SAAK,IAAI,QAAQ,MAAM;AAEvB,WAAO,MAAY;AACjB,gBAAU,OAAO,EAAE;AAAA,IACrB;AAAA,EACF;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;;;ACtHO,IAAM,qBAAqB,CAAC,kBAA2C;AAC5E,QAAM,UAAU;AAAA,IACd,CACE,WACA,SACA,QACA,WACG,cAAc,QAAQ,QAAQ,EAAE,WAAW,QAAQ,CAAC;AAAA,EAC3D;AACA,MAAI,gBAA+C;AAEnD,SAAO,YAAoC;AACzC,QAAI,cAAe,QAAO;AAC1B,WAAQ,gBAAgB,QAAQ,IAAI;AAAA,MAClC,QAAgB,UAAU,WAAW,CAAC,CAAC;AAAA,MACvC,QAAgB,UAAU,aAAa,CAAC,CAAC;AAAA,MACzC,QAAa,UAAU,YAAY,CAAC,CAAC;AAAA,IACvC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,aAAa,UAAU,OAAO;AAAA,MAC5C;AAAA,MACA;AAAA,MACA;AAAA,IACF,EAAE;AAAA,EACJ;AACF;;;AC7BO,IAAM,2BACX,CAAO,aAAmC,YAC1C,CAAC,YAAyD;AACxD,MAAI,eAAuC,CAAC;AAC5C,MAAI,kBAA8C;AAElD,SAAQ,CAAC,WAAW,SAAS;AAC3B,QAAI,gBAAiB,QAAO,gBAAgB,QAAQ,GAAG,IAAI;AAE3D,QAAI,YAAY;AAChB,QAAI,UAAyB,MAAM;AACjC,kBAAY;AAAA,IACd;AAEA,gBACG,KAAK,CAAC,eAAe;AACpB,wBAAkB,CAAC,YAAY,UAAU;AACvC,cAAMC,UAAS,aAAa,OAAO,KAAK;AACxC,YAAI,WAAW,IAAIA,OAAM,EAAG,QAAO,QAAQA,SAAQ,GAAG,KAAK;AAC3D,cAAM,CAAC,GAAG,QAAQ,IAAI,MAAM,sBAAsBA,OAAM,EAAE,CAAC;AAC3D,eAAOC;AAAA,MACT;AAEA,UAAI,WAAW,IAAI,MAAM,EAAG;AAE5B,YAAM,QAAQ,OAAO,MAAM,GAAG;AAC9B,UAAI,MAAM,CAAC,MAAM,KAAM;AAEvB,YAAM,CAAC,IAAI;AAEX,UAAI,WAAW,IAAI,MAAM,KAAK,GAAG,CAAC;AAChC,eAAO,OAAO,OAAO,EAAE,QAAQ,CAAC,UAAU;AACxC,uBAAa,KAAK,IAAI,MAAM,QAAQ,QAAQ,YAAY;AAAA,QAC1D,CAAC;AAAA,eACM,MAAM,CAAC,MAAM,eAAe;AAInC,YAAI;AACJ,YAAI;AAEJ,cAAM,UAAU,CAAC,oBAAoB,aAAa,EAAE;AAAA,UAClD,CAAC,UAAU;AACT,sBAAU,CAAC,MAAM,UAAU,EAAE;AAAA,cAAK,CAAC,MACjC,WAAW,IAAK,UAAU,GAAG,KAAK,IAAI,CAAC,UAAW;AAAA,YACpD;AACA,mBAAO,CAAC,CAAC;AAAA,UACX;AAAA,QACF;AAEA,YAAI,SAAS;AACX,uBAAa,QAAQ,SAAS,IAC5B,GAAG,OAAO,IAAI,OAAO;AACvB,uBAAa,QAAQ,IAAI,IAAI;AAAA,QAC/B;AAAA,MACF;AAAA,IACF,CAAC,EACA,KAAK,MAAM;AACV,UAAI,UAAW,WAAU,gBAAiB,QAAQ,GAAG,IAAI;AAAA,IAC3D,CAAC;AAEH,WAAO,MAAM;AACX,cAAQ;AAAA,IACV;AAAA,EACF;AACF;;;ApBrBK,IAAMC,gBAAe,CAAC,aAA+C;AAC1E,QAAM,SAAS,aAAgB,QAAQ;AAEvC,QAAM,UAAU;AAAA,IACd,CACE,WACA,SACA,QACA,WACG,OAAO,QAAQ,QAAQ,QAAQ,EAAE,WAAW,QAAQ,CAAC;AAAA,EAC5D;AAEA,QAAM,aAAmC,QAEvC,eAAe,CAAC,CAAC,EAAE;AAAA,IACnB,CAAC,MAAM,IAAI,IAAI,MAAM,QAAQ,CAAC,IAAI,IAAI,EAAE,OAAO;AAAA,IAC/C,MAAM,oBAAI,IAAI;AAAA,EAChB;AAEA,QAAM,wBAAwB;AAAA,IAC5B;AAAA,IACA,OAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL,WAAW;AAAA,MACT,sBAAsB,SAAS;AAAA,IACjC;AAAA,IACA,aAAa;AAAA,MACX,sBAAsB,WAAW;AAAA,IACnC;AAAA,IACA,kBAAkB;AAAA,MAChB,sBAAsB,SAAS;AAAA,IACjC;AAAA,IACA,SAAS,MAAM;AACb,aAAO,WAAW;AAAA,IACpB;AAAA,IACA;AAAA,IACA,UAAU,OAAO;AAAA,EACnB;AACF;","names":["createClient","fn","noop","noop","noop","import_utils","noop","subscriptionId","method","noop","createClient"]}
package/dist/index.mjs CHANGED
@@ -1,9 +1,6 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
- var __publicField = (obj, key, value) => {
4
- __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
5
- return value;
6
- };
3
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
7
4
 
8
5
  // src/internal-utils/abortablePromiseFn.ts
9
6
  import { AbortError, noop } from "@polkadot-api/utils";
@@ -171,8 +168,7 @@ var createOperationPromise = (operationName, factory) => (request) => abortableP
171
168
  const stopOperation = () => {
172
169
  request(chainHead.stopOperation, [operationId]);
173
170
  };
174
- if (!isRunning)
175
- return stopOperation();
171
+ if (!isRunning) return stopOperation();
176
172
  let done = noop2;
177
173
  const _res = (x) => {
178
174
  isRunning = false;
@@ -191,8 +187,7 @@ var createOperationPromise = (operationName, factory) => (request) => abortableP
191
187
  rej(new OperationError(_e.error));
192
188
  else if (_e.event === "operationInaccessible")
193
189
  rej(new OperationInaccessibleError());
194
- else
195
- logicCb(e, _res, _rej);
190
+ else logicCb(e, _res, _rej);
196
191
  },
197
192
  error: _rej
198
193
  });
@@ -259,8 +254,7 @@ var createStorageCb = (request) => (hash, inputs, childTrie, onItems, onError, o
259
254
  const stopOperation = () => {
260
255
  request(chainHead.stopOperation, [operationId]);
261
256
  };
262
- if (!isRunning)
263
- return stopOperation();
257
+ if (!isRunning) return stopOperation();
264
258
  const doneListening = followSubscription(response.operationId, {
265
259
  next: (event) => {
266
260
  switch (event.event) {
@@ -438,8 +432,7 @@ function getChainHead(request) {
438
432
  return noop2;
439
433
  }
440
434
  const onSubscription = (subscription) => {
441
- if (!cb)
442
- return request(method, [subscription, ...params]);
435
+ if (!cb) return request(method, [subscription, ...params]);
443
436
  ongoingRequests.add(disjoint);
444
437
  const onSubscribeOperation = (operationId, subscriber) => {
445
438
  if (followSubscription === null) {
@@ -470,10 +463,8 @@ function getChainHead(request) {
470
463
  return onSubscription(followSubscription);
471
464
  let onCancel = noop2;
472
465
  followSubscription.then((x) => {
473
- if (x instanceof Error)
474
- return disjoint();
475
- if (followSubscription)
476
- onCancel = onSubscription(x);
466
+ if (x instanceof Error) return disjoint();
467
+ if (followSubscription) onCancel = onSubscription(x);
477
468
  });
478
469
  return () => {
479
470
  onCancel();
@@ -531,8 +522,7 @@ var createClient = (gProvider) => {
531
522
  ({ id, result, error, params } = parsed);
532
523
  if (id) {
533
524
  const cb = responses.get(id);
534
- if (!cb)
535
- return;
525
+ if (!cb) return;
536
526
  responses.delete(id);
537
527
  return error ? cb.onError(new RpcError(error)) : cb.onSuccess(result, (opaqueId, subscriber) => {
538
528
  const subscriptionId2 = opaqueId;
@@ -544,8 +534,7 @@ var createClient = (gProvider) => {
544
534
  }
545
535
  ;
546
536
  ({ subscription, result, error } = params);
547
- if (!subscription || !error && !Object.hasOwn(params, "result"))
548
- throw 0;
537
+ if (!subscription || !error && !Object.hasOwn(params, "result")) throw 0;
549
538
  const subscriptionId = subscription;
550
539
  if (error) {
551
540
  subscriptions.error(subscriptionId, new RpcError(error));
@@ -567,11 +556,9 @@ var createClient = (gProvider) => {
567
556
  };
568
557
  let nextId = 1;
569
558
  const request = (method, params, cb) => {
570
- if (!connection)
571
- throw new Error("Not connected");
559
+ if (!connection) throw new Error("Not connected");
572
560
  const id = `${clientId}-${nextId++}`;
573
- if (cb)
574
- responses.set(id, cb);
561
+ if (cb) responses.set(id, cb);
575
562
  send(id, method, params);
576
563
  return () => {
577
564
  responses.delete(id);
@@ -590,8 +577,7 @@ var createGetChainSpec = (clientRequest) => {
590
577
  );
591
578
  let cachedPromise = null;
592
579
  return async () => {
593
- if (cachedPromise)
594
- return cachedPromise;
580
+ if (cachedPromise) return cachedPromise;
595
581
  return cachedPromise = Promise.all([
596
582
  request(chainSpec.chainName, []),
597
583
  request(chainSpec.genesisHash, []),
@@ -609,8 +595,7 @@ var getCompatibilityEnhancer = (rpcMethodsP, request) => (methods) => {
609
595
  let translations = {};
610
596
  let enhancedRequest = null;
611
597
  return (method, ...rest) => {
612
- if (enhancedRequest)
613
- return enhancedRequest(method, ...rest);
598
+ if (enhancedRequest) return enhancedRequest(method, ...rest);
614
599
  let isRunning = true;
615
600
  let cleanup = () => {
616
601
  isRunning = false;
@@ -618,16 +603,13 @@ var getCompatibilityEnhancer = (rpcMethodsP, request) => (methods) => {
618
603
  rpcMethodsP.then((rpcMethods) => {
619
604
  enhancedRequest = (method_, ...iRest) => {
620
605
  const method2 = translations[method_] ?? method_;
621
- if (rpcMethods.has(method2))
622
- return request(method2, ...iRest);
606
+ if (rpcMethods.has(method2)) return request(method2, ...iRest);
623
607
  iRest[1]?.onError(new Error(`Unsupported method ${method2}`));
624
608
  return noop2;
625
609
  };
626
- if (rpcMethods.has(method))
627
- return;
610
+ if (rpcMethods.has(method)) return;
628
611
  const parts = method.split("_");
629
- if (parts[1] !== "v1")
630
- return;
612
+ if (parts[1] !== "v1") return;
631
613
  parts[1] = "unstable";
632
614
  if (rpcMethods.has(parts.join("_")))
633
615
  Object.values(methods).forEach((value) => {
@@ -650,8 +632,7 @@ var getCompatibilityEnhancer = (rpcMethodsP, request) => (methods) => {
650
632
  }
651
633
  }
652
634
  }).then(() => {
653
- if (isRunning)
654
- cleanup = enhancedRequest(method, ...rest);
635
+ if (isRunning) cleanup = enhancedRequest(method, ...rest);
655
636
  });
656
637
  return () => {
657
638
  cleanup();
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/internal-utils/abortablePromiseFn.ts","../src/internal-utils/deferred-promise.ts","../src/internal-utils/noop.ts","../src/internal-utils/subscriptions-manager.ts","../src/methods.ts","../src/transaction/transaction.ts","../src/chainhead/errors.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/client/DestroyedError.ts","../src/chainhead/chainhead.ts","../src/client/RpcError.ts","../src/client/createClient.ts","../src/chainspec.ts","../src/request-compatibility-enhancer.ts","../src/index.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","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","export interface Subscriber<T> {\n next: (data: T) => void\n error: (e: Error) => void\n}\n\nexport const getSubscriptionsManager = <T>() => {\n const subscriptions = new Map<string, Subscriber<T>>()\n\n return {\n has: subscriptions.has.bind(subscriptions),\n subscribe(id: string, subscriber: Subscriber<T>) {\n subscriptions.set(id, subscriber)\n },\n unsubscribe(id: string) {\n subscriptions.delete(id)\n },\n next(id: string, data: T) {\n subscriptions.get(id)?.next(data)\n },\n error(id: string, e: Error) {\n const subscriber = subscriptions.get(id)\n if (subscriber) {\n subscriptions.delete(id)\n subscriber.error(e)\n }\n },\n errorAll(e: Error) {\n const subscribers = [...subscriptions.values()]\n subscriptions.clear()\n subscribers.forEach((s) => {\n s.error(e)\n })\n },\n }\n}\n\nexport type SubscriptionManager<T> = ReturnType<\n typeof getSubscriptionsManager<T>\n>\n","export const chainHead = {\n body: \"\",\n call: \"\",\n continue: \"\",\n follow: \"\",\n header: \"\",\n stopOperation: \"\",\n storage: \"\",\n unfollow: \"\",\n unpin: \"\",\n followEvent: \"\",\n}\n\nexport const chainSpec = {\n chainName: \"\",\n genesisHash: \"\",\n properties: \"\",\n}\n\nexport const transaction = {\n broadcast: \"\",\n stop: \"\",\n}\n\nexport const transactionWatch = {\n submitAndWatch: \"\",\n unwatch: \"\",\n}\n\nObject.entries({ chainHead, chainSpec, transaction, transactionWatch }).forEach(\n ([fnGroupName, methods]) => {\n Object.keys(methods).forEach((methodName) => {\n ;(methods as any)[methodName] = `${fnGroupName}_v1_${methodName}`\n })\n },\n)\n","import { noop } from \"@/internal-utils\"\nimport { type ClientRequest } from \"../client\"\nimport { transaction } from \"@/methods\"\n\nexport const getTransaction =\n (request: ClientRequest<string, any>) =>\n (tx: string, error: (e: Error) => void) => {\n let cancel = request(transaction.broadcast, [tx], {\n onSuccess: (subscriptionId) => {\n cancel =\n subscriptionId === null\n ? noop\n : () => {\n request(transaction.stop, [subscriptionId])\n }\n\n if (subscriptionId === null) {\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","export class StopError extends Error {\n constructor() {\n super(\"ChainHead stopped\")\n this.name = \"StopError\"\n }\n}\n\nexport class DisjointError extends Error {\n constructor() {\n super(\"ChainHead disjointed\")\n this.name = \"DisjointError\"\n }\n}\n\nexport class OperationLimitError extends Error {\n constructor() {\n super(\"ChainHead operations limit reached\")\n this.name = \"OperationLimitError\"\n }\n}\n\nexport class OperationError extends Error {\n constructor(error: string) {\n super(error)\n this.name = \"OperationError\"\n }\n}\n\nexport class OperationInaccessibleError extends Error {\n constructor() {\n super(\"ChainHead operation inaccessible\")\n this.name = \"OperationInaccessibleError\"\n }\n}\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 {\n ClientInnerRequest,\n FollowResponse,\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"..\"\nimport {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { chainHead } from \"@/methods\"\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 { ClientInnerRequest, FollowResponse, OperationLimitError } from \"..\"\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\"\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","export class DestroyedError extends Error {\n constructor() {\n super(\"Client destroyed\")\n this.name = \"DestroyedError\"\n }\n}\n","import type { ClientRequest, FollowSubscriptionCb } from \"@/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 {\n Subscriber,\n getSubscriptionsManager,\n noop,\n deferred,\n} 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 { DestroyedError } from \"@/client/DestroyedError\"\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\n const ongoingRequests = new Set<() => void>()\n const deferredFollow = deferred<string | Error>()\n let followSubscription: Promise<string | Error> | string | null =\n deferredFollow.promise\n\n const onAllFollowEventsNext = (event: FollowEventRpc) => {\n if (isOperationEvent(event)) {\n if (!subscriptions.has(event.operationId))\n console.warn(\"Uknown operationId on\", event)\n\n return subscriptions.next(event.operationId, event)\n }\n\n if (event.event !== \"stop\") {\n if (event.event === \"initialized\") {\n return onFollowEvent({\n type: event.event,\n finalizedBlockHashes:\n \"finalizedBlockHash\" in event\n ? [event.finalizedBlockHash]\n : event.finalizedBlockHashes,\n finalizedBlockRuntime: (event as any).finalizedBlockRuntime,\n })\n }\n\n const { event: type, ...rest } = event\n // This is kinda dangerous, but YOLO\n return onFollowEvent({ type, ...rest } as any)\n }\n\n onFollowError(new StopError())\n unfollow(false)\n }\n\n const onAllFollowEventsError = (error: Error) => {\n onFollowError(error)\n unfollow(!(error instanceof DestroyedError))\n }\n\n const onFollowRequestSuccess = (\n subscriptionId: string,\n follow: FollowSubscriptionCb<FollowEventRpc>,\n ) => {\n const done = follow(subscriptionId, {\n next: onAllFollowEventsNext,\n error: onAllFollowEventsError,\n })\n\n unfollow = (sendUnfollow = true) => {\n followSubscription = null\n unfollow = noop\n done()\n sendUnfollow && request(chainHead.unfollow, [subscriptionId])\n subscriptions.errorAll(new DisjointError())\n ongoingRequests.forEach((cb) => {\n cb()\n })\n ongoingRequests.clear()\n }\n\n followSubscription = subscriptionId\n deferredFollow.res(subscriptionId)\n }\n\n const onFollowRequestError = (e: Error) => {\n if (e instanceof DestroyedError) {\n unfollow(false)\n } else {\n onFollowError(e)\n }\n followSubscription = null\n deferredFollow.res(e)\n }\n\n let unfollow: (internal?: boolean) => void = request(\n chainHead.follow,\n [withRuntime],\n { onSuccess: onFollowRequestSuccess, onError: onFollowRequestError },\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 unfollow()\n followSubscription = null\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 interface IRpcError {\n code: number\n message: string\n data?: any\n}\n\nexport class RpcError extends Error implements IRpcError {\n code\n data\n constructor(e: IRpcError) {\n super(e.message)\n this.code = e.code\n this.data = e.data\n this.name = \"RpcError\"\n }\n}\n","import {\n JsonRpcConnection,\n JsonRpcProvider,\n} from \"@polkadot-api/json-rpc-provider\"\nimport { UnsubscribeFn } from \"../common-types\"\nimport { RpcError, IRpcError } from \"./RpcError\"\nimport { getSubscriptionsManager, Subscriber } from \"@/internal-utils\"\nimport { DestroyedError } from \"./DestroyedError\"\n\nexport type FollowSubscriptionCb<T> = (\n subscriptionId: string,\n cb: Subscriber<T>,\n) => UnsubscribeFn\n\nexport type ClientRequestCb<T, TT> = {\n onSuccess: (result: T, followSubscription: FollowSubscriptionCb<TT>) => void\n onError: (e: Error) => void\n}\n\nexport type ClientRequest<T, TT> = (\n method: string,\n params: Array<any>,\n cb?: ClientRequestCb<T, TT>,\n) => UnsubscribeFn\n\nexport interface Client {\n disconnect: () => void\n request: ClientRequest<any, any>\n}\n\nlet nextClientId = 1\nexport const createClient = (gProvider: JsonRpcProvider): Client => {\n let clientId = nextClientId++\n const responses = new Map<string, ClientRequestCb<any, any>>()\n const subscriptions = getSubscriptionsManager()\n\n let connection: JsonRpcConnection | null = null\n\n const send = (\n id: string,\n method: string,\n params: Array<boolean | string | number | null>,\n ) => {\n connection!.send(\n JSON.stringify({\n jsonrpc: \"2.0\",\n id,\n method,\n params,\n }),\n )\n }\n\n function onMessage(message: string): void {\n try {\n let id: string,\n result,\n error: IRpcError | undefined,\n params: { subscription: any; result: any; error?: IRpcError },\n subscription: string\n\n const parsed = JSON.parse(message)\n ;({ id, result, error, params } = parsed)\n\n if (id) {\n const cb = responses.get(id)\n if (!cb) return\n\n responses.delete(id)\n\n return error\n ? cb.onError(new RpcError(error))\n : cb.onSuccess(result, (opaqueId, subscriber) => {\n const subscriptionId = opaqueId\n subscriptions.subscribe(subscriptionId, subscriber)\n return () => {\n subscriptions.unsubscribe(subscriptionId)\n }\n })\n }\n\n // at this point, it means that it should be a notification\n ;({ subscription, result, error } = params)\n if (!subscription || (!error && !Object.hasOwn(params, \"result\"))) throw 0\n\n const subscriptionId = subscription\n\n if (error) {\n subscriptions.error(subscriptionId, new RpcError(error!))\n } else {\n subscriptions.next(subscriptionId, result)\n }\n } catch (e) {\n console.warn(\"Error parsing incomming message: \" + message)\n console.error(e)\n }\n }\n connection = gProvider(onMessage)\n\n const disconnect = () => {\n connection?.disconnect()\n connection = null\n subscriptions.errorAll(new DestroyedError())\n responses.forEach((r) => r.onError(new DestroyedError()))\n responses.clear()\n }\n\n let nextId = 1\n const request = <T, TT>(\n method: string,\n params: Array<any>,\n cb?: ClientRequestCb<T, TT>,\n ): UnsubscribeFn => {\n if (!connection) throw new Error(\"Not connected\")\n const id = `${clientId}-${nextId++}`\n\n if (cb) responses.set(id, cb)\n send(id, method, params)\n\n return (): void => {\n responses.delete(id)\n }\n }\n\n return {\n request,\n disconnect,\n }\n}\n","import { ClientRequest } from \"./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 { ClientRequest } from \"@/client\"\nimport { UnsubscribeFn } from \"./common-types\"\nimport { noop } from \"./internal-utils\"\n\nexport const getCompatibilityEnhancer =\n <T, E>(rpcMethodsP: Promise<Set<string>>, request: ClientRequest<T, E>) =>\n (methods: Record<string, string>): ClientRequest<T, E> => {\n let translations: Record<string, string> = {}\n let enhancedRequest: ClientRequest<T, E> | null = null\n\n return ((method, ...rest) => {\n if (enhancedRequest) return enhancedRequest(method, ...rest)\n\n let isRunning = true\n let cleanup: UnsubscribeFn = () => {\n isRunning = false\n }\n\n rpcMethodsP\n .then((rpcMethods) => {\n enhancedRequest = (method_, ...iRest) => {\n const method = translations[method_] ?? method_\n if (rpcMethods.has(method)) return request(method, ...iRest)\n iRest[1]?.onError(new Error(`Unsupported method ${method}`))\n return noop\n }\n\n if (rpcMethods.has(method)) return\n\n const parts = method.split(\"_\")\n if (parts[1] !== \"v1\") return\n\n parts[1] = \"unstable\"\n\n if (rpcMethods.has(parts.join(\"_\")))\n Object.values(methods).forEach((value) => {\n translations[value] = value.replace(\"_v1_\", \"_unstable_\")\n })\n else if (parts[0] === \"transaction\") {\n // old versions of smoldot and Polkadot-SDK don't support transaction_xx_broadcast\n // some old versions have `transactions_unstable_submitAndWatch` while others have `transaction_xx_submitAndWatch`\n // if we find any of this options, then we will can use them as if they were broadast/stop\n let unwatch: string | undefined\n let version: string | undefined\n\n const txGroup = [\"transactionWatch\", \"transaction\"].find(\n (group) => {\n version = [\"v1\", \"unstable\"].find((v) =>\n rpcMethods.has((unwatch = `${group}_${v}_unwatch`)),\n )\n return !!version\n },\n )\n\n if (txGroup) {\n translations[methods.broadcast] =\n `${txGroup}_${version}_submitAndWatch`\n translations[methods.stop] = unwatch!\n }\n }\n })\n .then(() => {\n if (isRunning) cleanup = enhancedRequest!(method, ...rest)\n })\n\n return () => {\n cleanup()\n }\n }) as ClientRequest<T, E>\n }\n","import type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport { getTransaction } from \"./transaction/transaction\"\nimport { getChainHead } from \"./chainhead\"\nimport {\n ClientRequest,\n ClientRequestCb,\n createClient as createRawClient,\n} from \"./client\"\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 { getCompatibilityEnhancer } from \"./request-compatibility-enhancer\"\nimport { chainHead, chainSpec, transaction } from \"./methods\"\n\nexport type * from \"./common-types\"\nexport type * from \"./client\"\nexport type * from \"./transaction\"\nexport type * from \"./chainhead\"\nexport type * from \"./chainspec\"\n\nexport { RpcError, DestroyedError } from \"./client\"\nexport {\n StopError,\n DisjointError,\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./chainhead\"\n\nexport interface SubstrateClient {\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 client = createRawClient(provider)\n\n const request = abortablePromiseFn(\n <T>(\n onSuccess: (value: T) => void,\n onError: (e: any) => void,\n method: string,\n params: any[],\n ) => client.request(method, params, { onSuccess, onError }),\n )\n\n const rpcMethods: Promise<Set<string>> = request<\n { methods: Array<string> } | Array<string>\n >(\"rpc_methods\", []).then(\n (x) => new Set(Array.isArray(x) ? x : x.methods),\n () => new Set(),\n )\n\n const compatibilityEnhancer = getCompatibilityEnhancer(\n rpcMethods,\n client.request,\n )\n\n return {\n chainHead: getChainHead(\n compatibilityEnhancer(chainHead) as ClientRequest<any, any>,\n ),\n transaction: getTransaction(\n compatibilityEnhancer(transaction) as ClientRequest<string, any>,\n ),\n getChainSpecData: createGetChainSpec(\n compatibilityEnhancer(chainSpec) as ClientRequest<any, any>,\n ),\n destroy: () => {\n client.disconnect()\n },\n request,\n _request: client.request,\n }\n}\n"],"mappings":"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","names":["fn","noop","noop","noop","noop","noop","noop","subscriptionId","method","noop","createClient"]}
1
+ {"version":3,"sources":["../src/internal-utils/abortablePromiseFn.ts","../src/internal-utils/deferred-promise.ts","../src/internal-utils/noop.ts","../src/internal-utils/subscriptions-manager.ts","../src/methods.ts","../src/transaction/transaction.ts","../src/chainhead/errors.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/client/DestroyedError.ts","../src/chainhead/chainhead.ts","../src/client/RpcError.ts","../src/client/createClient.ts","../src/chainspec.ts","../src/request-compatibility-enhancer.ts","../src/index.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","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","export interface Subscriber<T> {\n next: (data: T) => void\n error: (e: Error) => void\n}\n\nexport const getSubscriptionsManager = <T>() => {\n const subscriptions = new Map<string, Subscriber<T>>()\n\n return {\n has: subscriptions.has.bind(subscriptions),\n subscribe(id: string, subscriber: Subscriber<T>) {\n subscriptions.set(id, subscriber)\n },\n unsubscribe(id: string) {\n subscriptions.delete(id)\n },\n next(id: string, data: T) {\n subscriptions.get(id)?.next(data)\n },\n error(id: string, e: Error) {\n const subscriber = subscriptions.get(id)\n if (subscriber) {\n subscriptions.delete(id)\n subscriber.error(e)\n }\n },\n errorAll(e: Error) {\n const subscribers = [...subscriptions.values()]\n subscriptions.clear()\n subscribers.forEach((s) => {\n s.error(e)\n })\n },\n }\n}\n\nexport type SubscriptionManager<T> = ReturnType<\n typeof getSubscriptionsManager<T>\n>\n","export const chainHead = {\n body: \"\",\n call: \"\",\n continue: \"\",\n follow: \"\",\n header: \"\",\n stopOperation: \"\",\n storage: \"\",\n unfollow: \"\",\n unpin: \"\",\n followEvent: \"\",\n}\n\nexport const chainSpec = {\n chainName: \"\",\n genesisHash: \"\",\n properties: \"\",\n}\n\nexport const transaction = {\n broadcast: \"\",\n stop: \"\",\n}\n\nexport const transactionWatch = {\n submitAndWatch: \"\",\n unwatch: \"\",\n}\n\nObject.entries({ chainHead, chainSpec, transaction, transactionWatch }).forEach(\n ([fnGroupName, methods]) => {\n Object.keys(methods).forEach((methodName) => {\n ;(methods as any)[methodName] = `${fnGroupName}_v1_${methodName}`\n })\n },\n)\n","import { noop } from \"@/internal-utils\"\nimport { type ClientRequest } from \"../client\"\nimport { transaction } from \"@/methods\"\n\nexport const getTransaction =\n (request: ClientRequest<string, any>) =>\n (tx: string, error: (e: Error) => void) => {\n let cancel = request(transaction.broadcast, [tx], {\n onSuccess: (subscriptionId) => {\n cancel =\n subscriptionId === null\n ? noop\n : () => {\n request(transaction.stop, [subscriptionId])\n }\n\n if (subscriptionId === null) {\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","export class StopError extends Error {\n constructor() {\n super(\"ChainHead stopped\")\n this.name = \"StopError\"\n }\n}\n\nexport class DisjointError extends Error {\n constructor() {\n super(\"ChainHead disjointed\")\n this.name = \"DisjointError\"\n }\n}\n\nexport class OperationLimitError extends Error {\n constructor() {\n super(\"ChainHead operations limit reached\")\n this.name = \"OperationLimitError\"\n }\n}\n\nexport class OperationError extends Error {\n constructor(error: string) {\n super(error)\n this.name = \"OperationError\"\n }\n}\n\nexport class OperationInaccessibleError extends Error {\n constructor() {\n super(\"ChainHead operation inaccessible\")\n this.name = \"OperationInaccessibleError\"\n }\n}\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 {\n ClientInnerRequest,\n FollowResponse,\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"..\"\nimport {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { chainHead } from \"@/methods\"\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 { ClientInnerRequest, FollowResponse, OperationLimitError } from \"..\"\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\"\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","export class DestroyedError extends Error {\n constructor() {\n super(\"Client destroyed\")\n this.name = \"DestroyedError\"\n }\n}\n","import type { ClientRequest, FollowSubscriptionCb } from \"@/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 {\n Subscriber,\n getSubscriptionsManager,\n noop,\n deferred,\n} 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 { DestroyedError } from \"@/client/DestroyedError\"\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\n const ongoingRequests = new Set<() => void>()\n const deferredFollow = deferred<string | Error>()\n let followSubscription: Promise<string | Error> | string | null =\n deferredFollow.promise\n\n const onAllFollowEventsNext = (event: FollowEventRpc) => {\n if (isOperationEvent(event)) {\n if (!subscriptions.has(event.operationId))\n console.warn(\"Uknown operationId on\", event)\n\n return subscriptions.next(event.operationId, event)\n }\n\n if (event.event !== \"stop\") {\n if (event.event === \"initialized\") {\n return onFollowEvent({\n type: event.event,\n finalizedBlockHashes:\n \"finalizedBlockHash\" in event\n ? [event.finalizedBlockHash]\n : event.finalizedBlockHashes,\n finalizedBlockRuntime: (event as any).finalizedBlockRuntime,\n })\n }\n\n const { event: type, ...rest } = event\n // This is kinda dangerous, but YOLO\n return onFollowEvent({ type, ...rest } as any)\n }\n\n onFollowError(new StopError())\n unfollow(false)\n }\n\n const onAllFollowEventsError = (error: Error) => {\n onFollowError(error)\n unfollow(!(error instanceof DestroyedError))\n }\n\n const onFollowRequestSuccess = (\n subscriptionId: string,\n follow: FollowSubscriptionCb<FollowEventRpc>,\n ) => {\n const done = follow(subscriptionId, {\n next: onAllFollowEventsNext,\n error: onAllFollowEventsError,\n })\n\n unfollow = (sendUnfollow = true) => {\n followSubscription = null\n unfollow = noop\n done()\n sendUnfollow && request(chainHead.unfollow, [subscriptionId])\n subscriptions.errorAll(new DisjointError())\n ongoingRequests.forEach((cb) => {\n cb()\n })\n ongoingRequests.clear()\n }\n\n followSubscription = subscriptionId\n deferredFollow.res(subscriptionId)\n }\n\n const onFollowRequestError = (e: Error) => {\n if (e instanceof DestroyedError) {\n unfollow(false)\n } else {\n onFollowError(e)\n }\n followSubscription = null\n deferredFollow.res(e)\n }\n\n let unfollow: (internal?: boolean) => void = request(\n chainHead.follow,\n [withRuntime],\n { onSuccess: onFollowRequestSuccess, onError: onFollowRequestError },\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 unfollow()\n followSubscription = null\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 interface IRpcError {\n code: number\n message: string\n data?: any\n}\n\nexport class RpcError extends Error implements IRpcError {\n code\n data\n constructor(e: IRpcError) {\n super(e.message)\n this.code = e.code\n this.data = e.data\n this.name = \"RpcError\"\n }\n}\n","import type {\n JsonRpcConnection,\n JsonRpcProvider,\n} from \"@polkadot-api/json-rpc-provider\"\nimport { UnsubscribeFn } from \"../common-types\"\nimport { RpcError, IRpcError } from \"./RpcError\"\nimport { getSubscriptionsManager, Subscriber } from \"@/internal-utils\"\nimport { DestroyedError } from \"./DestroyedError\"\n\nexport type FollowSubscriptionCb<T> = (\n subscriptionId: string,\n cb: Subscriber<T>,\n) => UnsubscribeFn\n\nexport type ClientRequestCb<T, TT> = {\n onSuccess: (result: T, followSubscription: FollowSubscriptionCb<TT>) => void\n onError: (e: Error) => void\n}\n\nexport type ClientRequest<T, TT> = (\n method: string,\n params: Array<any>,\n cb?: ClientRequestCb<T, TT>,\n) => UnsubscribeFn\n\nexport interface Client {\n disconnect: () => void\n request: ClientRequest<any, any>\n}\n\nlet nextClientId = 1\nexport const createClient = (gProvider: JsonRpcProvider): Client => {\n let clientId = nextClientId++\n const responses = new Map<string, ClientRequestCb<any, any>>()\n const subscriptions = getSubscriptionsManager()\n\n let connection: JsonRpcConnection | null = null\n\n const send = (\n id: string,\n method: string,\n params: Array<boolean | string | number | null>,\n ) => {\n connection!.send(\n JSON.stringify({\n jsonrpc: \"2.0\",\n id,\n method,\n params,\n }),\n )\n }\n\n function onMessage(message: string): void {\n try {\n let id: string,\n result,\n error: IRpcError | undefined,\n params: { subscription: any; result: any; error?: IRpcError },\n subscription: string\n\n const parsed = JSON.parse(message)\n ;({ id, result, error, params } = parsed)\n\n if (id) {\n const cb = responses.get(id)\n if (!cb) return\n\n responses.delete(id)\n\n return error\n ? cb.onError(new RpcError(error))\n : cb.onSuccess(result, (opaqueId, subscriber) => {\n const subscriptionId = opaqueId\n subscriptions.subscribe(subscriptionId, subscriber)\n return () => {\n subscriptions.unsubscribe(subscriptionId)\n }\n })\n }\n\n // at this point, it means that it should be a notification\n ;({ subscription, result, error } = params)\n if (!subscription || (!error && !Object.hasOwn(params, \"result\"))) throw 0\n\n const subscriptionId = subscription\n\n if (error) {\n subscriptions.error(subscriptionId, new RpcError(error!))\n } else {\n subscriptions.next(subscriptionId, result)\n }\n } catch (e) {\n console.warn(\"Error parsing incomming message: \" + message)\n console.error(e)\n }\n }\n connection = gProvider(onMessage)\n\n const disconnect = () => {\n connection?.disconnect()\n connection = null\n subscriptions.errorAll(new DestroyedError())\n responses.forEach((r) => r.onError(new DestroyedError()))\n responses.clear()\n }\n\n let nextId = 1\n const request = <T, TT>(\n method: string,\n params: Array<any>,\n cb?: ClientRequestCb<T, TT>,\n ): UnsubscribeFn => {\n if (!connection) throw new Error(\"Not connected\")\n const id = `${clientId}-${nextId++}`\n\n if (cb) responses.set(id, cb)\n send(id, method, params)\n\n return (): void => {\n responses.delete(id)\n }\n }\n\n return {\n request,\n disconnect,\n }\n}\n","import { ClientRequest } from \"./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 { ClientRequest } from \"@/client\"\nimport { UnsubscribeFn } from \"./common-types\"\nimport { noop } from \"./internal-utils\"\n\nexport const getCompatibilityEnhancer =\n <T, E>(rpcMethodsP: Promise<Set<string>>, request: ClientRequest<T, E>) =>\n (methods: Record<string, string>): ClientRequest<T, E> => {\n let translations: Record<string, string> = {}\n let enhancedRequest: ClientRequest<T, E> | null = null\n\n return ((method, ...rest) => {\n if (enhancedRequest) return enhancedRequest(method, ...rest)\n\n let isRunning = true\n let cleanup: UnsubscribeFn = () => {\n isRunning = false\n }\n\n rpcMethodsP\n .then((rpcMethods) => {\n enhancedRequest = (method_, ...iRest) => {\n const method = translations[method_] ?? method_\n if (rpcMethods.has(method)) return request(method, ...iRest)\n iRest[1]?.onError(new Error(`Unsupported method ${method}`))\n return noop\n }\n\n if (rpcMethods.has(method)) return\n\n const parts = method.split(\"_\")\n if (parts[1] !== \"v1\") return\n\n parts[1] = \"unstable\"\n\n if (rpcMethods.has(parts.join(\"_\")))\n Object.values(methods).forEach((value) => {\n translations[value] = value.replace(\"_v1_\", \"_unstable_\")\n })\n else if (parts[0] === \"transaction\") {\n // old versions of smoldot and Polkadot-SDK don't support transaction_xx_broadcast\n // some old versions have `transactions_unstable_submitAndWatch` while others have `transaction_xx_submitAndWatch`\n // if we find any of this options, then we will can use them as if they were broadast/stop\n let unwatch: string | undefined\n let version: string | undefined\n\n const txGroup = [\"transactionWatch\", \"transaction\"].find(\n (group) => {\n version = [\"v1\", \"unstable\"].find((v) =>\n rpcMethods.has((unwatch = `${group}_${v}_unwatch`)),\n )\n return !!version\n },\n )\n\n if (txGroup) {\n translations[methods.broadcast] =\n `${txGroup}_${version}_submitAndWatch`\n translations[methods.stop] = unwatch!\n }\n }\n })\n .then(() => {\n if (isRunning) cleanup = enhancedRequest!(method, ...rest)\n })\n\n return () => {\n cleanup()\n }\n }) as ClientRequest<T, E>\n }\n","import type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport { getTransaction } from \"./transaction/transaction\"\nimport { getChainHead } from \"./chainhead\"\nimport {\n ClientRequest,\n ClientRequestCb,\n createClient as createRawClient,\n} from \"./client\"\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 { getCompatibilityEnhancer } from \"./request-compatibility-enhancer\"\nimport { chainHead, chainSpec, transaction } from \"./methods\"\n\nexport type * from \"./common-types\"\nexport type * from \"./client\"\nexport type * from \"./transaction\"\nexport type * from \"./chainhead\"\nexport type * from \"./chainspec\"\n\nexport { RpcError, DestroyedError } from \"./client\"\nexport {\n StopError,\n DisjointError,\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./chainhead\"\n\nexport interface SubstrateClient {\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 client = createRawClient(provider)\n\n const request = abortablePromiseFn(\n <T>(\n onSuccess: (value: T) => void,\n onError: (e: any) => void,\n method: string,\n params: any[],\n ) => client.request(method, params, { onSuccess, onError }),\n )\n\n const rpcMethods: Promise<Set<string>> = request<\n { methods: Array<string> } | Array<string>\n >(\"rpc_methods\", []).then(\n (x) => new Set(Array.isArray(x) ? x : x.methods),\n () => new Set(),\n )\n\n const compatibilityEnhancer = getCompatibilityEnhancer(\n rpcMethods,\n client.request,\n )\n\n return {\n chainHead: getChainHead(\n compatibilityEnhancer(chainHead) as ClientRequest<any, any>,\n ),\n transaction: getTransaction(\n compatibilityEnhancer(transaction) as ClientRequest<string, any>,\n ),\n getChainSpecData: createGetChainSpec(\n compatibilityEnhancer(chainSpec) as ClientRequest<any, any>,\n ),\n destroy: () => {\n client.disconnect()\n },\n request,\n _request: client.request,\n }\n}\n"],"mappings":"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","names":["fn","noop","noop","noop","noop","noop","noop","subscriptionId","method","noop","createClient"]}
package/dist/min/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var W=Object.defineProperty;var re=Object.getOwnPropertyDescriptor;var te=Object.getOwnPropertyNames;var ne=Object.prototype.hasOwnProperty;var oe=(r,e,t)=>e in r?W(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var ie=(r,e)=>{for(var t in e)W(r,t,{get:e[t],enumerable:!0})},se=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of te(e))!ne.call(r,n)&&n!==t&&W(r,n,{get:()=>e[n],enumerable:!(o=re(e,n))||o.enumerable});return r};var ae=r=>se(W({},"__esModule",{value:!0}),r);var B=(r,e,t)=>(oe(r,typeof e!="symbol"?e+"":e,t),t);var me={};ie(me,{DestroyedError:()=>S,DisjointError:()=>w,OperationError:()=>x,OperationInaccessibleError:()=>O,OperationLimitError:()=>C,RpcError:()=>I,StopError:()=>P,createClient:()=>ue});module.exports=ae(me);var H=require("@polkadot-api/utils"),v=r=>(...e)=>new Promise((t,o)=>{let n=H.noop,[s,m]=e[e.length-1]instanceof AbortSignal?[e.slice(0,e.length-1),e[e.length-1]]:[e],u=()=>{n(),o(new H.AbortError)};m?.addEventListener("abort",u,{once:!0});let R=f=>p=>{n=H.noop,m?.removeEventListener("abort",u),f(p)};n=r(R(t),R(o),...s)});function z(){let r=()=>{},e=()=>{};return{promise:new Promise((o,n)=>{r=o,e=n}),res:r,rej:e}}var y=()=>{};var k=()=>{let r=new Map;return{has:r.has.bind(r),subscribe(e,t){r.set(e,t)},unsubscribe(e){r.delete(e)},next(e,t){r.get(e)?.next(t)},error(e,t){let o=r.get(e);o&&(r.delete(e),o.error(t))},errorAll(e){let t=[...r.values()];r.clear(),t.forEach(o=>{o.error(e)})}}};var b={body:"",call:"",continue:"",follow:"",header:"",stopOperation:"",storage:"",unfollow:"",unpin:"",followEvent:""},F={chainName:"",genesisHash:"",properties:""},A={broadcast:"",stop:""},ce={submitAndWatch:"",unwatch:""};Object.entries({chainHead:b,chainSpec:F,transaction:A,transactionWatch:ce}).forEach(([r,e])=>{Object.keys(e).forEach(t=>{e[t]=`${r}_v1_${t}`})});var M=r=>(e,t)=>{let o=r(A.broadcast,[e],{onSuccess:n=>{o=n===null?y:()=>{r(A.stop,[n])},n===null&&t(new Error("Max # of broadcasted transactions has been reached"))},onError:t});return()=>{o()}};var P=class extends Error{constructor(){super("ChainHead stopped"),this.name="StopError"}},w=class extends Error{constructor(){super("ChainHead disjointed"),this.name="DisjointError"}},C=class extends Error{constructor(){super("ChainHead operations limit reached"),this.name="OperationLimitError"}},x=class extends Error{constructor(e){super(e),this.name="OperationError"}},O=class extends Error{constructor(){super("ChainHead operation inaccessible"),this.name="OperationInaccessibleError"}};var j=(r,e)=>t=>v((o,n,...s)=>{let m=!0,u=()=>{m=!1},[R,f]=e(...s);return t(r,R,{onSuccess:(p,l)=>{if(p.result==="limitReached")return n(new C);let{operationId:a}=p,c=()=>{t(b.stopOperation,[a])};if(!m)return c();let i=y,g=d=>{m=!1,i(),o(d)},h=d=>{m=!1,i(),n(d)};i=l(a,{next:d=>{let E=d;E.event==="operationError"?n(new x(E.error)):E.event==="operationInaccessible"?n(new O):f(d,g,h)},error:h}),u=()=>{m&&(i(),c())}},onError:n}),()=>{u()}});var N=j(b.body,r=>[[r],(e,t)=>{t(e.value)}]);var G=j(b.call,(r,e,t)=>[[r,e,t],(o,n)=>{n(o.output)}]);var K=r=>e=>new Promise((t,o)=>{r(b.header,[e],{onSuccess:t,onError:o})});var U=require("@polkadot-api/utils");var L=r=>(e,t,o,n,s,m,u)=>{if(t.length===0)return m(),U.noop;let R=!0,f=()=>{R=!1};return r(b.storage,[e,t,o],{onSuccess:(p,l)=>{if(p.result==="limitReached"||p.discardedItems===t.length)return s(new C);let{operationId:a}=p,c=()=>{r(b.stopOperation,[a])};if(!R)return c();let i=l(p.operationId,{next:d=>{switch(d.event){case"operationStorageItems":{n(d.items);break}case"operationStorageDone":{h();break}case"operationError":{g(new x(d.error));break}case"operationInaccessible":{g(new O);break}default:r(b.continue,[d.operationId])}},error:s});f=()=>{i(),r(b.stopOperation,[p.operationId])};let g=d=>{f=U.noop,i(),s(d)},h=()=>{f=U.noop,i(),m()};u(p.discardedItems)},onError:s}),()=>{f()}};var Q=r=>{let e=L(r);return v((t,o,n,s,m,u)=>{let R=s.startsWith("descendants"),f=R?[]:null,l=e(n,[{key:m,type:s}],u??null,R?a=>{f.push(a)}:a=>{f=a[0]?.[s]},o,()=>{try{t(R?f.flat():f)}catch(a){o(a)}},a=>{a>0&&(l(),o(new C))});return l})};var V=r=>e=>e.length>0?new Promise((t,o)=>{r(b.unpin,[e],{onSuccess(){t()},onError:o})}):Promise.resolve();var S=class extends Error{constructor(){super("Client destroyed"),this.name="DestroyedError"}};function pe(r){return r.operationId!==void 0}function $(r){return(e,t,o)=>{let n=k(),s=new Set,m=z(),u=m.promise,R=i=>{if(pe(i))return n.has(i.operationId)||console.warn("Uknown operationId on",i),n.next(i.operationId,i);if(i.event!=="stop"){if(i.event==="initialized")return t({type:i.event,finalizedBlockHashes:"finalizedBlockHash"in i?[i.finalizedBlockHash]:i.finalizedBlockHashes,finalizedBlockRuntime:i.finalizedBlockRuntime});let{event:g,...h}=i;return t({type:g,...h})}o(new P),a(!1)},f=i=>{o(i),a(!(i instanceof S))},p=(i,g)=>{let h=g(i,{next:R,error:f});a=(d=!0)=>{u=null,a=y,h(),d&&r(b.unfollow,[i]),n.errorAll(new w),s.forEach(E=>{E()}),s.clear()},u=i,m.res(i)},l=i=>{i instanceof S?a(!1):o(i),u=null,m.res(i)},a=r(b.follow,[e],{onSuccess:p,onError:l}),c=(i,g,h)=>{let d=()=>{h?.onError(new w)};if(u===null)return d(),y;let E=T=>{if(!h)return r(i,[T,...g]);s.add(d);let _=(q,J)=>u===null?(J.error(new w),y):(n.subscribe(q,J),()=>{n.unsubscribe(q)}),ee=r(i,[T,...g],{onSuccess:q=>{s.delete(d),h.onSuccess(q,_)},onError:q=>{s.delete(d),h.onError(q)}});return()=>{s.delete(d),ee()}};if(typeof u=="string")return E(u);let D=y;return u.then(T=>{if(T instanceof Error)return d();u&&(D=E(T))}),()=>{D()}};return{unfollow(){a(),u=null},body:N(c),call:G(c),header:K(c),storage:Q(c),storageSubscription:L(c),unpin:V(c),_request:c}}}var I=class extends Error{constructor(t){super(t.message);B(this,"code");B(this,"data");this.code=t.code,this.data=t.data,this.name="RpcError"}};var le=1,X=r=>{let e=le++,t=new Map,o=k(),n=null,s=(p,l,a)=>{n.send(JSON.stringify({jsonrpc:"2.0",id:p,method:l,params:a}))};function m(p){try{let l,a,c,i,g;if({id:l,result:a,error:c,params:i}=JSON.parse(p),l){let E=t.get(l);return E?(t.delete(l),c?E.onError(new I(c)):E.onSuccess(a,(D,T)=>{let _=D;return o.subscribe(_,T),()=>{o.unsubscribe(_)}})):void 0}if({subscription:g,result:a,error:c}=i,!g||!c&&!Object.hasOwn(i,"result"))throw 0;let d=g;c?o.error(d,new I(c)):o.next(d,a)}catch(l){console.warn("Error parsing incomming message: "+p),console.error(l)}}n=r(m);let u=()=>{n?.disconnect(),n=null,o.errorAll(new S),t.forEach(p=>p.onError(new S)),t.clear()},R=1;return{request:(p,l,a)=>{if(!n)throw new Error("Not connected");let c=`${e}-${R++}`;return a&&t.set(c,a),s(c,p,l),()=>{t.delete(c)}},disconnect:u}};var Y=r=>{let e=v((o,n,s,m)=>r(s,m,{onSuccess:o,onError:n})),t=null;return async()=>t||(t=Promise.all([e(F.chainName,[]),e(F.genesisHash,[]),e(F.properties,[])]).then(([o,n,s])=>({name:o,genesisHash:n,properties:s})))};var Z=(r,e)=>t=>{let o={},n=null;return(s,...m)=>{if(n)return n(s,...m);let u=!0,R=()=>{u=!1};return r.then(f=>{if(n=(l,...a)=>{let c=o[l]??l;return f.has(c)?e(c,...a):(a[1]?.onError(new Error(`Unsupported method ${c}`)),y)},f.has(s))return;let p=s.split("_");if(p[1]==="v1"){if(p[1]="unstable",f.has(p.join("_")))Object.values(t).forEach(l=>{o[l]=l.replace("_v1_","_unstable_")});else if(p[0]==="transaction"){let l,a,c=["transactionWatch","transaction"].find(i=>(a=["v1","unstable"].find(g=>f.has(l=`${i}_${g}_unwatch`)),!!a));c&&(o[t.broadcast]=`${c}_${a}_submitAndWatch`,o[t.stop]=l)}}}).then(()=>{u&&(R=n(s,...m))}),()=>{R()}}};var ue=r=>{let e=X(r),t=v((s,m,u,R)=>e.request(u,R,{onSuccess:s,onError:m})),o=t("rpc_methods",[]).then(s=>new Set(Array.isArray(s)?s:s.methods),()=>new Set),n=Z(o,e.request);return{chainHead:$(n(b)),transaction:M(n(A)),getChainSpecData:Y(n(F)),destroy:()=>{e.disconnect()},request:t,_request:e.request}};
1
+ "use strict";var k=Object.defineProperty;var re=Object.getOwnPropertyDescriptor;var te=Object.getOwnPropertyNames;var ne=Object.prototype.hasOwnProperty;var oe=(r,e,t)=>e in r?k(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var ie=(r,e)=>{for(var t in e)k(r,t,{get:e[t],enumerable:!0})},se=(r,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of te(e))!ne.call(r,n)&&n!==t&&k(r,n,{get:()=>e[n],enumerable:!(o=re(e,n))||o.enumerable});return r};var ae=r=>se(k({},"__esModule",{value:!0}),r);var B=(r,e,t)=>oe(r,typeof e!="symbol"?e+"":e,t);var me={};ie(me,{DestroyedError:()=>S,DisjointError:()=>w,OperationError:()=>x,OperationInaccessibleError:()=>O,OperationLimitError:()=>C,RpcError:()=>I,StopError:()=>P,createClient:()=>ue});module.exports=ae(me);var H=require("@polkadot-api/utils"),v=r=>(...e)=>new Promise((t,o)=>{let n=H.noop,[s,m]=e[e.length-1]instanceof AbortSignal?[e.slice(0,e.length-1),e[e.length-1]]:[e],u=()=>{n(),o(new H.AbortError)};m?.addEventListener("abort",u,{once:!0});let R=f=>p=>{n=H.noop,m?.removeEventListener("abort",u),f(p)};n=r(R(t),R(o),...s)});function z(){let r=()=>{},e=()=>{};return{promise:new Promise((o,n)=>{r=o,e=n}),res:r,rej:e}}var y=()=>{};var W=()=>{let r=new Map;return{has:r.has.bind(r),subscribe(e,t){r.set(e,t)},unsubscribe(e){r.delete(e)},next(e,t){r.get(e)?.next(t)},error(e,t){let o=r.get(e);o&&(r.delete(e),o.error(t))},errorAll(e){let t=[...r.values()];r.clear(),t.forEach(o=>{o.error(e)})}}};var b={body:"",call:"",continue:"",follow:"",header:"",stopOperation:"",storage:"",unfollow:"",unpin:"",followEvent:""},F={chainName:"",genesisHash:"",properties:""},A={broadcast:"",stop:""},ce={submitAndWatch:"",unwatch:""};Object.entries({chainHead:b,chainSpec:F,transaction:A,transactionWatch:ce}).forEach(([r,e])=>{Object.keys(e).forEach(t=>{e[t]=`${r}_v1_${t}`})});var M=r=>(e,t)=>{let o=r(A.broadcast,[e],{onSuccess:n=>{o=n===null?y:()=>{r(A.stop,[n])},n===null&&t(new Error("Max # of broadcasted transactions has been reached"))},onError:t});return()=>{o()}};var P=class extends Error{constructor(){super("ChainHead stopped"),this.name="StopError"}},w=class extends Error{constructor(){super("ChainHead disjointed"),this.name="DisjointError"}},C=class extends Error{constructor(){super("ChainHead operations limit reached"),this.name="OperationLimitError"}},x=class extends Error{constructor(e){super(e),this.name="OperationError"}},O=class extends Error{constructor(){super("ChainHead operation inaccessible"),this.name="OperationInaccessibleError"}};var j=(r,e)=>t=>v((o,n,...s)=>{let m=!0,u=()=>{m=!1},[R,f]=e(...s);return t(r,R,{onSuccess:(p,l)=>{if(p.result==="limitReached")return n(new C);let{operationId:a}=p,c=()=>{t(b.stopOperation,[a])};if(!m)return c();let i=y,g=d=>{m=!1,i(),o(d)},h=d=>{m=!1,i(),n(d)};i=l(a,{next:d=>{let E=d;E.event==="operationError"?n(new x(E.error)):E.event==="operationInaccessible"?n(new O):f(d,g,h)},error:h}),u=()=>{m&&(i(),c())}},onError:n}),()=>{u()}});var N=j(b.body,r=>[[r],(e,t)=>{t(e.value)}]);var G=j(b.call,(r,e,t)=>[[r,e,t],(o,n)=>{n(o.output)}]);var K=r=>e=>new Promise((t,o)=>{r(b.header,[e],{onSuccess:t,onError:o})});var U=require("@polkadot-api/utils");var L=r=>(e,t,o,n,s,m,u)=>{if(t.length===0)return m(),U.noop;let R=!0,f=()=>{R=!1};return r(b.storage,[e,t,o],{onSuccess:(p,l)=>{if(p.result==="limitReached"||p.discardedItems===t.length)return s(new C);let{operationId:a}=p,c=()=>{r(b.stopOperation,[a])};if(!R)return c();let i=l(p.operationId,{next:d=>{switch(d.event){case"operationStorageItems":{n(d.items);break}case"operationStorageDone":{h();break}case"operationError":{g(new x(d.error));break}case"operationInaccessible":{g(new O);break}default:r(b.continue,[d.operationId])}},error:s});f=()=>{i(),r(b.stopOperation,[p.operationId])};let g=d=>{f=U.noop,i(),s(d)},h=()=>{f=U.noop,i(),m()};u(p.discardedItems)},onError:s}),()=>{f()}};var Q=r=>{let e=L(r);return v((t,o,n,s,m,u)=>{let R=s.startsWith("descendants"),f=R?[]:null,l=e(n,[{key:m,type:s}],u??null,R?a=>{f.push(a)}:a=>{f=a[0]?.[s]},o,()=>{try{t(R?f.flat():f)}catch(a){o(a)}},a=>{a>0&&(l(),o(new C))});return l})};var V=r=>e=>e.length>0?new Promise((t,o)=>{r(b.unpin,[e],{onSuccess(){t()},onError:o})}):Promise.resolve();var S=class extends Error{constructor(){super("Client destroyed"),this.name="DestroyedError"}};function pe(r){return r.operationId!==void 0}function $(r){return(e,t,o)=>{let n=W(),s=new Set,m=z(),u=m.promise,R=i=>{if(pe(i))return n.has(i.operationId)||console.warn("Uknown operationId on",i),n.next(i.operationId,i);if(i.event!=="stop"){if(i.event==="initialized")return t({type:i.event,finalizedBlockHashes:"finalizedBlockHash"in i?[i.finalizedBlockHash]:i.finalizedBlockHashes,finalizedBlockRuntime:i.finalizedBlockRuntime});let{event:g,...h}=i;return t({type:g,...h})}o(new P),a(!1)},f=i=>{o(i),a(!(i instanceof S))},p=(i,g)=>{let h=g(i,{next:R,error:f});a=(d=!0)=>{u=null,a=y,h(),d&&r(b.unfollow,[i]),n.errorAll(new w),s.forEach(E=>{E()}),s.clear()},u=i,m.res(i)},l=i=>{i instanceof S?a(!1):o(i),u=null,m.res(i)},a=r(b.follow,[e],{onSuccess:p,onError:l}),c=(i,g,h)=>{let d=()=>{h?.onError(new w)};if(u===null)return d(),y;let E=T=>{if(!h)return r(i,[T,...g]);s.add(d);let _=(q,J)=>u===null?(J.error(new w),y):(n.subscribe(q,J),()=>{n.unsubscribe(q)}),ee=r(i,[T,...g],{onSuccess:q=>{s.delete(d),h.onSuccess(q,_)},onError:q=>{s.delete(d),h.onError(q)}});return()=>{s.delete(d),ee()}};if(typeof u=="string")return E(u);let D=y;return u.then(T=>{if(T instanceof Error)return d();u&&(D=E(T))}),()=>{D()}};return{unfollow(){a(),u=null},body:N(c),call:G(c),header:K(c),storage:Q(c),storageSubscription:L(c),unpin:V(c),_request:c}}}var I=class extends Error{constructor(t){super(t.message);B(this,"code");B(this,"data");this.code=t.code,this.data=t.data,this.name="RpcError"}};var le=1,X=r=>{let e=le++,t=new Map,o=W(),n=null,s=(p,l,a)=>{n.send(JSON.stringify({jsonrpc:"2.0",id:p,method:l,params:a}))};function m(p){try{let l,a,c,i,g;if({id:l,result:a,error:c,params:i}=JSON.parse(p),l){let E=t.get(l);return E?(t.delete(l),c?E.onError(new I(c)):E.onSuccess(a,(D,T)=>{let _=D;return o.subscribe(_,T),()=>{o.unsubscribe(_)}})):void 0}if({subscription:g,result:a,error:c}=i,!g||!c&&!Object.hasOwn(i,"result"))throw 0;let d=g;c?o.error(d,new I(c)):o.next(d,a)}catch(l){console.warn("Error parsing incomming message: "+p),console.error(l)}}n=r(m);let u=()=>{n?.disconnect(),n=null,o.errorAll(new S),t.forEach(p=>p.onError(new S)),t.clear()},R=1;return{request:(p,l,a)=>{if(!n)throw new Error("Not connected");let c=`${e}-${R++}`;return a&&t.set(c,a),s(c,p,l),()=>{t.delete(c)}},disconnect:u}};var Y=r=>{let e=v((o,n,s,m)=>r(s,m,{onSuccess:o,onError:n})),t=null;return async()=>t||(t=Promise.all([e(F.chainName,[]),e(F.genesisHash,[]),e(F.properties,[])]).then(([o,n,s])=>({name:o,genesisHash:n,properties:s})))};var Z=(r,e)=>t=>{let o={},n=null;return(s,...m)=>{if(n)return n(s,...m);let u=!0,R=()=>{u=!1};return r.then(f=>{if(n=(l,...a)=>{let c=o[l]??l;return f.has(c)?e(c,...a):(a[1]?.onError(new Error(`Unsupported method ${c}`)),y)},f.has(s))return;let p=s.split("_");if(p[1]==="v1"){if(p[1]="unstable",f.has(p.join("_")))Object.values(t).forEach(l=>{o[l]=l.replace("_v1_","_unstable_")});else if(p[0]==="transaction"){let l,a,c=["transactionWatch","transaction"].find(i=>(a=["v1","unstable"].find(g=>f.has(l=`${i}_${g}_unwatch`)),!!a));c&&(o[t.broadcast]=`${c}_${a}_submitAndWatch`,o[t.stop]=l)}}}).then(()=>{u&&(R=n(s,...m))}),()=>{R()}}};var ue=r=>{let e=X(r),t=v((s,m,u,R)=>e.request(u,R,{onSuccess:s,onError:m})),o=t("rpc_methods",[]).then(s=>new Set(Array.isArray(s)?s:s.methods),()=>new Set),n=Z(o,e.request);return{chainHead:$(n(b)),transaction:M(n(A)),getChainSpecData:Y(n(F)),destroy:()=>{e.disconnect()},request:t,_request:e.request}};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/internal-utils/abortablePromiseFn.ts","../../src/internal-utils/deferred-promise.ts","../../src/internal-utils/noop.ts","../../src/internal-utils/subscriptions-manager.ts","../../src/methods.ts","../../src/transaction/transaction.ts","../../src/chainhead/errors.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/client/DestroyedError.ts","../../src/chainhead/chainhead.ts","../../src/client/RpcError.ts","../../src/client/createClient.ts","../../src/chainspec.ts","../../src/request-compatibility-enhancer.ts"],"sourcesContent":["import type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport { getTransaction } from \"./transaction/transaction\"\nimport { getChainHead } from \"./chainhead\"\nimport {\n ClientRequest,\n ClientRequestCb,\n createClient as createRawClient,\n} from \"./client\"\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 { getCompatibilityEnhancer } from \"./request-compatibility-enhancer\"\nimport { chainHead, chainSpec, transaction } from \"./methods\"\n\nexport type * from \"./common-types\"\nexport type * from \"./client\"\nexport type * from \"./transaction\"\nexport type * from \"./chainhead\"\nexport type * from \"./chainspec\"\n\nexport { RpcError, DestroyedError } from \"./client\"\nexport {\n StopError,\n DisjointError,\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./chainhead\"\n\nexport interface SubstrateClient {\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 client = createRawClient(provider)\n\n const request = abortablePromiseFn(\n <T>(\n onSuccess: (value: T) => void,\n onError: (e: any) => void,\n method: string,\n params: any[],\n ) => client.request(method, params, { onSuccess, onError }),\n )\n\n const rpcMethods: Promise<Set<string>> = request<\n { methods: Array<string> } | Array<string>\n >(\"rpc_methods\", []).then(\n (x) => new Set(Array.isArray(x) ? x : x.methods),\n () => new Set(),\n )\n\n const compatibilityEnhancer = getCompatibilityEnhancer(\n rpcMethods,\n client.request,\n )\n\n return {\n chainHead: getChainHead(\n compatibilityEnhancer(chainHead) as ClientRequest<any, any>,\n ),\n transaction: getTransaction(\n compatibilityEnhancer(transaction) as ClientRequest<string, any>,\n ),\n getChainSpecData: createGetChainSpec(\n compatibilityEnhancer(chainSpec) as ClientRequest<any, any>,\n ),\n destroy: () => {\n client.disconnect()\n },\n request,\n _request: client.request,\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","export interface Subscriber<T> {\n next: (data: T) => void\n error: (e: Error) => void\n}\n\nexport const getSubscriptionsManager = <T>() => {\n const subscriptions = new Map<string, Subscriber<T>>()\n\n return {\n has: subscriptions.has.bind(subscriptions),\n subscribe(id: string, subscriber: Subscriber<T>) {\n subscriptions.set(id, subscriber)\n },\n unsubscribe(id: string) {\n subscriptions.delete(id)\n },\n next(id: string, data: T) {\n subscriptions.get(id)?.next(data)\n },\n error(id: string, e: Error) {\n const subscriber = subscriptions.get(id)\n if (subscriber) {\n subscriptions.delete(id)\n subscriber.error(e)\n }\n },\n errorAll(e: Error) {\n const subscribers = [...subscriptions.values()]\n subscriptions.clear()\n subscribers.forEach((s) => {\n s.error(e)\n })\n },\n }\n}\n\nexport type SubscriptionManager<T> = ReturnType<\n typeof getSubscriptionsManager<T>\n>\n","export const chainHead = {\n body: \"\",\n call: \"\",\n continue: \"\",\n follow: \"\",\n header: \"\",\n stopOperation: \"\",\n storage: \"\",\n unfollow: \"\",\n unpin: \"\",\n followEvent: \"\",\n}\n\nexport const chainSpec = {\n chainName: \"\",\n genesisHash: \"\",\n properties: \"\",\n}\n\nexport const transaction = {\n broadcast: \"\",\n stop: \"\",\n}\n\nexport const transactionWatch = {\n submitAndWatch: \"\",\n unwatch: \"\",\n}\n\nObject.entries({ chainHead, chainSpec, transaction, transactionWatch }).forEach(\n ([fnGroupName, methods]) => {\n Object.keys(methods).forEach((methodName) => {\n ;(methods as any)[methodName] = `${fnGroupName}_v1_${methodName}`\n })\n },\n)\n","import { noop } from \"@/internal-utils\"\nimport { type ClientRequest } from \"../client\"\nimport { transaction } from \"@/methods\"\n\nexport const getTransaction =\n (request: ClientRequest<string, any>) =>\n (tx: string, error: (e: Error) => void) => {\n let cancel = request(transaction.broadcast, [tx], {\n onSuccess: (subscriptionId) => {\n cancel =\n subscriptionId === null\n ? noop\n : () => {\n request(transaction.stop, [subscriptionId])\n }\n\n if (subscriptionId === null) {\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","export class StopError extends Error {\n constructor() {\n super(\"ChainHead stopped\")\n this.name = \"StopError\"\n }\n}\n\nexport class DisjointError extends Error {\n constructor() {\n super(\"ChainHead disjointed\")\n this.name = \"DisjointError\"\n }\n}\n\nexport class OperationLimitError extends Error {\n constructor() {\n super(\"ChainHead operations limit reached\")\n this.name = \"OperationLimitError\"\n }\n}\n\nexport class OperationError extends Error {\n constructor(error: string) {\n super(error)\n this.name = \"OperationError\"\n }\n}\n\nexport class OperationInaccessibleError extends Error {\n constructor() {\n super(\"ChainHead operation inaccessible\")\n this.name = \"OperationInaccessibleError\"\n }\n}\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 {\n ClientInnerRequest,\n FollowResponse,\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"..\"\nimport {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { chainHead } from \"@/methods\"\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 { ClientInnerRequest, FollowResponse, OperationLimitError } from \"..\"\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\"\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","export class DestroyedError extends Error {\n constructor() {\n super(\"Client destroyed\")\n this.name = \"DestroyedError\"\n }\n}\n","import type { ClientRequest, FollowSubscriptionCb } from \"@/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 {\n Subscriber,\n getSubscriptionsManager,\n noop,\n deferred,\n} 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 { DestroyedError } from \"@/client/DestroyedError\"\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\n const ongoingRequests = new Set<() => void>()\n const deferredFollow = deferred<string | Error>()\n let followSubscription: Promise<string | Error> | string | null =\n deferredFollow.promise\n\n const onAllFollowEventsNext = (event: FollowEventRpc) => {\n if (isOperationEvent(event)) {\n if (!subscriptions.has(event.operationId))\n console.warn(\"Uknown operationId on\", event)\n\n return subscriptions.next(event.operationId, event)\n }\n\n if (event.event !== \"stop\") {\n if (event.event === \"initialized\") {\n return onFollowEvent({\n type: event.event,\n finalizedBlockHashes:\n \"finalizedBlockHash\" in event\n ? [event.finalizedBlockHash]\n : event.finalizedBlockHashes,\n finalizedBlockRuntime: (event as any).finalizedBlockRuntime,\n })\n }\n\n const { event: type, ...rest } = event\n // This is kinda dangerous, but YOLO\n return onFollowEvent({ type, ...rest } as any)\n }\n\n onFollowError(new StopError())\n unfollow(false)\n }\n\n const onAllFollowEventsError = (error: Error) => {\n onFollowError(error)\n unfollow(!(error instanceof DestroyedError))\n }\n\n const onFollowRequestSuccess = (\n subscriptionId: string,\n follow: FollowSubscriptionCb<FollowEventRpc>,\n ) => {\n const done = follow(subscriptionId, {\n next: onAllFollowEventsNext,\n error: onAllFollowEventsError,\n })\n\n unfollow = (sendUnfollow = true) => {\n followSubscription = null\n unfollow = noop\n done()\n sendUnfollow && request(chainHead.unfollow, [subscriptionId])\n subscriptions.errorAll(new DisjointError())\n ongoingRequests.forEach((cb) => {\n cb()\n })\n ongoingRequests.clear()\n }\n\n followSubscription = subscriptionId\n deferredFollow.res(subscriptionId)\n }\n\n const onFollowRequestError = (e: Error) => {\n if (e instanceof DestroyedError) {\n unfollow(false)\n } else {\n onFollowError(e)\n }\n followSubscription = null\n deferredFollow.res(e)\n }\n\n let unfollow: (internal?: boolean) => void = request(\n chainHead.follow,\n [withRuntime],\n { onSuccess: onFollowRequestSuccess, onError: onFollowRequestError },\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 unfollow()\n followSubscription = null\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 interface IRpcError {\n code: number\n message: string\n data?: any\n}\n\nexport class RpcError extends Error implements IRpcError {\n code\n data\n constructor(e: IRpcError) {\n super(e.message)\n this.code = e.code\n this.data = e.data\n this.name = \"RpcError\"\n }\n}\n","import {\n JsonRpcConnection,\n JsonRpcProvider,\n} from \"@polkadot-api/json-rpc-provider\"\nimport { UnsubscribeFn } from \"../common-types\"\nimport { RpcError, IRpcError } from \"./RpcError\"\nimport { getSubscriptionsManager, Subscriber } from \"@/internal-utils\"\nimport { DestroyedError } from \"./DestroyedError\"\n\nexport type FollowSubscriptionCb<T> = (\n subscriptionId: string,\n cb: Subscriber<T>,\n) => UnsubscribeFn\n\nexport type ClientRequestCb<T, TT> = {\n onSuccess: (result: T, followSubscription: FollowSubscriptionCb<TT>) => void\n onError: (e: Error) => void\n}\n\nexport type ClientRequest<T, TT> = (\n method: string,\n params: Array<any>,\n cb?: ClientRequestCb<T, TT>,\n) => UnsubscribeFn\n\nexport interface Client {\n disconnect: () => void\n request: ClientRequest<any, any>\n}\n\nlet nextClientId = 1\nexport const createClient = (gProvider: JsonRpcProvider): Client => {\n let clientId = nextClientId++\n const responses = new Map<string, ClientRequestCb<any, any>>()\n const subscriptions = getSubscriptionsManager()\n\n let connection: JsonRpcConnection | null = null\n\n const send = (\n id: string,\n method: string,\n params: Array<boolean | string | number | null>,\n ) => {\n connection!.send(\n JSON.stringify({\n jsonrpc: \"2.0\",\n id,\n method,\n params,\n }),\n )\n }\n\n function onMessage(message: string): void {\n try {\n let id: string,\n result,\n error: IRpcError | undefined,\n params: { subscription: any; result: any; error?: IRpcError },\n subscription: string\n\n const parsed = JSON.parse(message)\n ;({ id, result, error, params } = parsed)\n\n if (id) {\n const cb = responses.get(id)\n if (!cb) return\n\n responses.delete(id)\n\n return error\n ? cb.onError(new RpcError(error))\n : cb.onSuccess(result, (opaqueId, subscriber) => {\n const subscriptionId = opaqueId\n subscriptions.subscribe(subscriptionId, subscriber)\n return () => {\n subscriptions.unsubscribe(subscriptionId)\n }\n })\n }\n\n // at this point, it means that it should be a notification\n ;({ subscription, result, error } = params)\n if (!subscription || (!error && !Object.hasOwn(params, \"result\"))) throw 0\n\n const subscriptionId = subscription\n\n if (error) {\n subscriptions.error(subscriptionId, new RpcError(error!))\n } else {\n subscriptions.next(subscriptionId, result)\n }\n } catch (e) {\n console.warn(\"Error parsing incomming message: \" + message)\n console.error(e)\n }\n }\n connection = gProvider(onMessage)\n\n const disconnect = () => {\n connection?.disconnect()\n connection = null\n subscriptions.errorAll(new DestroyedError())\n responses.forEach((r) => r.onError(new DestroyedError()))\n responses.clear()\n }\n\n let nextId = 1\n const request = <T, TT>(\n method: string,\n params: Array<any>,\n cb?: ClientRequestCb<T, TT>,\n ): UnsubscribeFn => {\n if (!connection) throw new Error(\"Not connected\")\n const id = `${clientId}-${nextId++}`\n\n if (cb) responses.set(id, cb)\n send(id, method, params)\n\n return (): void => {\n responses.delete(id)\n }\n }\n\n return {\n request,\n disconnect,\n }\n}\n","import { ClientRequest } from \"./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 { ClientRequest } from \"@/client\"\nimport { UnsubscribeFn } from \"./common-types\"\nimport { noop } from \"./internal-utils\"\n\nexport const getCompatibilityEnhancer =\n <T, E>(rpcMethodsP: Promise<Set<string>>, request: ClientRequest<T, E>) =>\n (methods: Record<string, string>): ClientRequest<T, E> => {\n let translations: Record<string, string> = {}\n let enhancedRequest: ClientRequest<T, E> | null = null\n\n return ((method, ...rest) => {\n if (enhancedRequest) return enhancedRequest(method, ...rest)\n\n let isRunning = true\n let cleanup: UnsubscribeFn = () => {\n isRunning = false\n }\n\n rpcMethodsP\n .then((rpcMethods) => {\n enhancedRequest = (method_, ...iRest) => {\n const method = translations[method_] ?? method_\n if (rpcMethods.has(method)) return request(method, ...iRest)\n iRest[1]?.onError(new Error(`Unsupported method ${method}`))\n return noop\n }\n\n if (rpcMethods.has(method)) return\n\n const parts = method.split(\"_\")\n if (parts[1] !== \"v1\") return\n\n parts[1] = \"unstable\"\n\n if (rpcMethods.has(parts.join(\"_\")))\n Object.values(methods).forEach((value) => {\n translations[value] = value.replace(\"_v1_\", \"_unstable_\")\n })\n else if (parts[0] === \"transaction\") {\n // old versions of smoldot and Polkadot-SDK don't support transaction_xx_broadcast\n // some old versions have `transactions_unstable_submitAndWatch` while others have `transaction_xx_submitAndWatch`\n // if we find any of this options, then we will can use them as if they were broadast/stop\n let unwatch: string | undefined\n let version: string | undefined\n\n const txGroup = [\"transactionWatch\", \"transaction\"].find(\n (group) => {\n version = [\"v1\", \"unstable\"].find((v) =>\n rpcMethods.has((unwatch = `${group}_${v}_unwatch`)),\n )\n return !!version\n },\n )\n\n if (txGroup) {\n translations[methods.broadcast] =\n `${txGroup}_${version}_submitAndWatch`\n translations[methods.stop] = unwatch!\n }\n }\n })\n .then(() => {\n if (isRunning) cleanup = enhancedRequest!(method, ...rest)\n })\n\n return () => {\n cleanup()\n }\n }) as ClientRequest<T, E>\n }\n"],"mappings":"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","names":["src_exports","__export","DestroyedError","DisjointError","OperationError","OperationInaccessibleError","OperationLimitError","RpcError","StopError","createClient","__toCommonJS","import_utils","abortablePromiseFn","fn","args","res","rej","cancel","actualArgs","abortSignal","onAbort","withCleanup","x","deferred","res","rej","_res","_rej","noop","getSubscriptionsManager","subscriptions","id","subscriber","data","e","subscribers","s","chainHead","chainSpec","transaction","transactionWatch","fnGroupName","methods","methodName","getTransaction","request","tx","error","cancel","transaction","subscriptionId","noop","StopError","DisjointError","OperationLimitError","OperationError","error","OperationInaccessibleError","createOperationPromise","operationName","factory","request","abortablePromiseFn","res","rej","args","isRunning","cancel","requestArgs","logicCb","response","followSubscription","OperationLimitError","operationId","stopOperation","chainHead","done","noop","_res","x","_rej","e","_e","OperationError","OperationInaccessibleError","createBodyFn","createOperationPromise","chainHead","hash","res","createCallFn","createOperationPromise","chainHead","hash","fnName","callParameters","e","res","createHeaderFn","request","hash","res","rej","chainHead","import_utils","createStorageCb","request","hash","inputs","childTrie","onItems","onError","onDone","onDiscardedItems","isRunning","cancel","chainHead","response","followSubscription","OperationLimitError","operationId","stopOperation","doneListening","event","_onDone","_onError","OperationError","OperationInaccessibleError","e","createStorageFn","request","cbStore","createStorageCb","abortablePromiseFn","resolve","reject","hash","type","key","childTrie","isDescendants","result","cancel","items","e","nDiscarded","OperationLimitError","createUnpinFn","request","hashes","res","rej","chainHead","DestroyedError","isOperationEvent","event","getChainHead","request","withRuntime","onFollowEvent","onFollowError","subscriptions","getSubscriptionsManager","ongoingRequests","deferredFollow","deferred","followSubscription","onAllFollowEventsNext","type","rest","StopError","unfollow","onAllFollowEventsError","error","DestroyedError","onFollowRequestSuccess","subscriptionId","follow","done","sendUnfollow","noop","chainHead","DisjointError","cb","onFollowRequestError","e","fRequest","method","params","disjoint","onSubscription","subscription","onSubscribeOperation","operationId","subscriber","cleanup","response","onCancel","x","createBodyFn","createCallFn","createHeaderFn","createStorageFn","createStorageCb","createUnpinFn","RpcError","e","__publicField","nextClientId","createClient","gProvider","clientId","responses","subscriptions","getSubscriptionsManager","connection","send","id","method","params","onMessage","message","result","error","subscription","cb","RpcError","opaqueId","subscriber","subscriptionId","e","disconnect","DestroyedError","r","nextId","createGetChainSpec","clientRequest","request","abortablePromiseFn","onSuccess","onError","method","params","cachedPromise","chainSpec","name","genesisHash","properties","getCompatibilityEnhancer","rpcMethodsP","request","methods","translations","enhancedRequest","method","rest","isRunning","cleanup","rpcMethods","method_","iRest","noop","parts","value","unwatch","version","txGroup","group","v","createClient","provider","client","request","abortablePromiseFn","onSuccess","onError","method","params","rpcMethods","x","compatibilityEnhancer","getCompatibilityEnhancer","getChainHead","chainHead","getTransaction","transaction","createGetChainSpec","chainSpec"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/internal-utils/abortablePromiseFn.ts","../../src/internal-utils/deferred-promise.ts","../../src/internal-utils/noop.ts","../../src/internal-utils/subscriptions-manager.ts","../../src/methods.ts","../../src/transaction/transaction.ts","../../src/chainhead/errors.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/client/DestroyedError.ts","../../src/chainhead/chainhead.ts","../../src/client/RpcError.ts","../../src/client/createClient.ts","../../src/chainspec.ts","../../src/request-compatibility-enhancer.ts"],"sourcesContent":["import type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport { getTransaction } from \"./transaction/transaction\"\nimport { getChainHead } from \"./chainhead\"\nimport {\n ClientRequest,\n ClientRequestCb,\n createClient as createRawClient,\n} from \"./client\"\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 { getCompatibilityEnhancer } from \"./request-compatibility-enhancer\"\nimport { chainHead, chainSpec, transaction } from \"./methods\"\n\nexport type * from \"./common-types\"\nexport type * from \"./client\"\nexport type * from \"./transaction\"\nexport type * from \"./chainhead\"\nexport type * from \"./chainspec\"\n\nexport { RpcError, DestroyedError } from \"./client\"\nexport {\n StopError,\n DisjointError,\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./chainhead\"\n\nexport interface SubstrateClient {\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 client = createRawClient(provider)\n\n const request = abortablePromiseFn(\n <T>(\n onSuccess: (value: T) => void,\n onError: (e: any) => void,\n method: string,\n params: any[],\n ) => client.request(method, params, { onSuccess, onError }),\n )\n\n const rpcMethods: Promise<Set<string>> = request<\n { methods: Array<string> } | Array<string>\n >(\"rpc_methods\", []).then(\n (x) => new Set(Array.isArray(x) ? x : x.methods),\n () => new Set(),\n )\n\n const compatibilityEnhancer = getCompatibilityEnhancer(\n rpcMethods,\n client.request,\n )\n\n return {\n chainHead: getChainHead(\n compatibilityEnhancer(chainHead) as ClientRequest<any, any>,\n ),\n transaction: getTransaction(\n compatibilityEnhancer(transaction) as ClientRequest<string, any>,\n ),\n getChainSpecData: createGetChainSpec(\n compatibilityEnhancer(chainSpec) as ClientRequest<any, any>,\n ),\n destroy: () => {\n client.disconnect()\n },\n request,\n _request: client.request,\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","export interface Subscriber<T> {\n next: (data: T) => void\n error: (e: Error) => void\n}\n\nexport const getSubscriptionsManager = <T>() => {\n const subscriptions = new Map<string, Subscriber<T>>()\n\n return {\n has: subscriptions.has.bind(subscriptions),\n subscribe(id: string, subscriber: Subscriber<T>) {\n subscriptions.set(id, subscriber)\n },\n unsubscribe(id: string) {\n subscriptions.delete(id)\n },\n next(id: string, data: T) {\n subscriptions.get(id)?.next(data)\n },\n error(id: string, e: Error) {\n const subscriber = subscriptions.get(id)\n if (subscriber) {\n subscriptions.delete(id)\n subscriber.error(e)\n }\n },\n errorAll(e: Error) {\n const subscribers = [...subscriptions.values()]\n subscriptions.clear()\n subscribers.forEach((s) => {\n s.error(e)\n })\n },\n }\n}\n\nexport type SubscriptionManager<T> = ReturnType<\n typeof getSubscriptionsManager<T>\n>\n","export const chainHead = {\n body: \"\",\n call: \"\",\n continue: \"\",\n follow: \"\",\n header: \"\",\n stopOperation: \"\",\n storage: \"\",\n unfollow: \"\",\n unpin: \"\",\n followEvent: \"\",\n}\n\nexport const chainSpec = {\n chainName: \"\",\n genesisHash: \"\",\n properties: \"\",\n}\n\nexport const transaction = {\n broadcast: \"\",\n stop: \"\",\n}\n\nexport const transactionWatch = {\n submitAndWatch: \"\",\n unwatch: \"\",\n}\n\nObject.entries({ chainHead, chainSpec, transaction, transactionWatch }).forEach(\n ([fnGroupName, methods]) => {\n Object.keys(methods).forEach((methodName) => {\n ;(methods as any)[methodName] = `${fnGroupName}_v1_${methodName}`\n })\n },\n)\n","import { noop } from \"@/internal-utils\"\nimport { type ClientRequest } from \"../client\"\nimport { transaction } from \"@/methods\"\n\nexport const getTransaction =\n (request: ClientRequest<string, any>) =>\n (tx: string, error: (e: Error) => void) => {\n let cancel = request(transaction.broadcast, [tx], {\n onSuccess: (subscriptionId) => {\n cancel =\n subscriptionId === null\n ? noop\n : () => {\n request(transaction.stop, [subscriptionId])\n }\n\n if (subscriptionId === null) {\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","export class StopError extends Error {\n constructor() {\n super(\"ChainHead stopped\")\n this.name = \"StopError\"\n }\n}\n\nexport class DisjointError extends Error {\n constructor() {\n super(\"ChainHead disjointed\")\n this.name = \"DisjointError\"\n }\n}\n\nexport class OperationLimitError extends Error {\n constructor() {\n super(\"ChainHead operations limit reached\")\n this.name = \"OperationLimitError\"\n }\n}\n\nexport class OperationError extends Error {\n constructor(error: string) {\n super(error)\n this.name = \"OperationError\"\n }\n}\n\nexport class OperationInaccessibleError extends Error {\n constructor() {\n super(\"ChainHead operation inaccessible\")\n this.name = \"OperationInaccessibleError\"\n }\n}\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 {\n ClientInnerRequest,\n FollowResponse,\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"..\"\nimport {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { chainHead } from \"@/methods\"\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 { ClientInnerRequest, FollowResponse, OperationLimitError } from \"..\"\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\"\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","export class DestroyedError extends Error {\n constructor() {\n super(\"Client destroyed\")\n this.name = \"DestroyedError\"\n }\n}\n","import type { ClientRequest, FollowSubscriptionCb } from \"@/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 {\n Subscriber,\n getSubscriptionsManager,\n noop,\n deferred,\n} 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 { DestroyedError } from \"@/client/DestroyedError\"\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\n const ongoingRequests = new Set<() => void>()\n const deferredFollow = deferred<string | Error>()\n let followSubscription: Promise<string | Error> | string | null =\n deferredFollow.promise\n\n const onAllFollowEventsNext = (event: FollowEventRpc) => {\n if (isOperationEvent(event)) {\n if (!subscriptions.has(event.operationId))\n console.warn(\"Uknown operationId on\", event)\n\n return subscriptions.next(event.operationId, event)\n }\n\n if (event.event !== \"stop\") {\n if (event.event === \"initialized\") {\n return onFollowEvent({\n type: event.event,\n finalizedBlockHashes:\n \"finalizedBlockHash\" in event\n ? [event.finalizedBlockHash]\n : event.finalizedBlockHashes,\n finalizedBlockRuntime: (event as any).finalizedBlockRuntime,\n })\n }\n\n const { event: type, ...rest } = event\n // This is kinda dangerous, but YOLO\n return onFollowEvent({ type, ...rest } as any)\n }\n\n onFollowError(new StopError())\n unfollow(false)\n }\n\n const onAllFollowEventsError = (error: Error) => {\n onFollowError(error)\n unfollow(!(error instanceof DestroyedError))\n }\n\n const onFollowRequestSuccess = (\n subscriptionId: string,\n follow: FollowSubscriptionCb<FollowEventRpc>,\n ) => {\n const done = follow(subscriptionId, {\n next: onAllFollowEventsNext,\n error: onAllFollowEventsError,\n })\n\n unfollow = (sendUnfollow = true) => {\n followSubscription = null\n unfollow = noop\n done()\n sendUnfollow && request(chainHead.unfollow, [subscriptionId])\n subscriptions.errorAll(new DisjointError())\n ongoingRequests.forEach((cb) => {\n cb()\n })\n ongoingRequests.clear()\n }\n\n followSubscription = subscriptionId\n deferredFollow.res(subscriptionId)\n }\n\n const onFollowRequestError = (e: Error) => {\n if (e instanceof DestroyedError) {\n unfollow(false)\n } else {\n onFollowError(e)\n }\n followSubscription = null\n deferredFollow.res(e)\n }\n\n let unfollow: (internal?: boolean) => void = request(\n chainHead.follow,\n [withRuntime],\n { onSuccess: onFollowRequestSuccess, onError: onFollowRequestError },\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 unfollow()\n followSubscription = null\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 interface IRpcError {\n code: number\n message: string\n data?: any\n}\n\nexport class RpcError extends Error implements IRpcError {\n code\n data\n constructor(e: IRpcError) {\n super(e.message)\n this.code = e.code\n this.data = e.data\n this.name = \"RpcError\"\n }\n}\n","import type {\n JsonRpcConnection,\n JsonRpcProvider,\n} from \"@polkadot-api/json-rpc-provider\"\nimport { UnsubscribeFn } from \"../common-types\"\nimport { RpcError, IRpcError } from \"./RpcError\"\nimport { getSubscriptionsManager, Subscriber } from \"@/internal-utils\"\nimport { DestroyedError } from \"./DestroyedError\"\n\nexport type FollowSubscriptionCb<T> = (\n subscriptionId: string,\n cb: Subscriber<T>,\n) => UnsubscribeFn\n\nexport type ClientRequestCb<T, TT> = {\n onSuccess: (result: T, followSubscription: FollowSubscriptionCb<TT>) => void\n onError: (e: Error) => void\n}\n\nexport type ClientRequest<T, TT> = (\n method: string,\n params: Array<any>,\n cb?: ClientRequestCb<T, TT>,\n) => UnsubscribeFn\n\nexport interface Client {\n disconnect: () => void\n request: ClientRequest<any, any>\n}\n\nlet nextClientId = 1\nexport const createClient = (gProvider: JsonRpcProvider): Client => {\n let clientId = nextClientId++\n const responses = new Map<string, ClientRequestCb<any, any>>()\n const subscriptions = getSubscriptionsManager()\n\n let connection: JsonRpcConnection | null = null\n\n const send = (\n id: string,\n method: string,\n params: Array<boolean | string | number | null>,\n ) => {\n connection!.send(\n JSON.stringify({\n jsonrpc: \"2.0\",\n id,\n method,\n params,\n }),\n )\n }\n\n function onMessage(message: string): void {\n try {\n let id: string,\n result,\n error: IRpcError | undefined,\n params: { subscription: any; result: any; error?: IRpcError },\n subscription: string\n\n const parsed = JSON.parse(message)\n ;({ id, result, error, params } = parsed)\n\n if (id) {\n const cb = responses.get(id)\n if (!cb) return\n\n responses.delete(id)\n\n return error\n ? cb.onError(new RpcError(error))\n : cb.onSuccess(result, (opaqueId, subscriber) => {\n const subscriptionId = opaqueId\n subscriptions.subscribe(subscriptionId, subscriber)\n return () => {\n subscriptions.unsubscribe(subscriptionId)\n }\n })\n }\n\n // at this point, it means that it should be a notification\n ;({ subscription, result, error } = params)\n if (!subscription || (!error && !Object.hasOwn(params, \"result\"))) throw 0\n\n const subscriptionId = subscription\n\n if (error) {\n subscriptions.error(subscriptionId, new RpcError(error!))\n } else {\n subscriptions.next(subscriptionId, result)\n }\n } catch (e) {\n console.warn(\"Error parsing incomming message: \" + message)\n console.error(e)\n }\n }\n connection = gProvider(onMessage)\n\n const disconnect = () => {\n connection?.disconnect()\n connection = null\n subscriptions.errorAll(new DestroyedError())\n responses.forEach((r) => r.onError(new DestroyedError()))\n responses.clear()\n }\n\n let nextId = 1\n const request = <T, TT>(\n method: string,\n params: Array<any>,\n cb?: ClientRequestCb<T, TT>,\n ): UnsubscribeFn => {\n if (!connection) throw new Error(\"Not connected\")\n const id = `${clientId}-${nextId++}`\n\n if (cb) responses.set(id, cb)\n send(id, method, params)\n\n return (): void => {\n responses.delete(id)\n }\n }\n\n return {\n request,\n disconnect,\n }\n}\n","import { ClientRequest } from \"./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 { ClientRequest } from \"@/client\"\nimport { UnsubscribeFn } from \"./common-types\"\nimport { noop } from \"./internal-utils\"\n\nexport const getCompatibilityEnhancer =\n <T, E>(rpcMethodsP: Promise<Set<string>>, request: ClientRequest<T, E>) =>\n (methods: Record<string, string>): ClientRequest<T, E> => {\n let translations: Record<string, string> = {}\n let enhancedRequest: ClientRequest<T, E> | null = null\n\n return ((method, ...rest) => {\n if (enhancedRequest) return enhancedRequest(method, ...rest)\n\n let isRunning = true\n let cleanup: UnsubscribeFn = () => {\n isRunning = false\n }\n\n rpcMethodsP\n .then((rpcMethods) => {\n enhancedRequest = (method_, ...iRest) => {\n const method = translations[method_] ?? method_\n if (rpcMethods.has(method)) return request(method, ...iRest)\n iRest[1]?.onError(new Error(`Unsupported method ${method}`))\n return noop\n }\n\n if (rpcMethods.has(method)) return\n\n const parts = method.split(\"_\")\n if (parts[1] !== \"v1\") return\n\n parts[1] = \"unstable\"\n\n if (rpcMethods.has(parts.join(\"_\")))\n Object.values(methods).forEach((value) => {\n translations[value] = value.replace(\"_v1_\", \"_unstable_\")\n })\n else if (parts[0] === \"transaction\") {\n // old versions of smoldot and Polkadot-SDK don't support transaction_xx_broadcast\n // some old versions have `transactions_unstable_submitAndWatch` while others have `transaction_xx_submitAndWatch`\n // if we find any of this options, then we will can use them as if they were broadast/stop\n let unwatch: string | undefined\n let version: string | undefined\n\n const txGroup = [\"transactionWatch\", \"transaction\"].find(\n (group) => {\n version = [\"v1\", \"unstable\"].find((v) =>\n rpcMethods.has((unwatch = `${group}_${v}_unwatch`)),\n )\n return !!version\n },\n )\n\n if (txGroup) {\n translations[methods.broadcast] =\n `${txGroup}_${version}_submitAndWatch`\n translations[methods.stop] = unwatch!\n }\n }\n })\n .then(() => {\n if (isRunning) cleanup = enhancedRequest!(method, ...rest)\n })\n\n return () => {\n cleanup()\n }\n }) as ClientRequest<T, E>\n }\n"],"mappings":"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","names":["src_exports","__export","DestroyedError","DisjointError","OperationError","OperationInaccessibleError","OperationLimitError","RpcError","StopError","createClient","__toCommonJS","import_utils","abortablePromiseFn","fn","args","res","rej","cancel","actualArgs","abortSignal","onAbort","withCleanup","x","deferred","res","rej","_res","_rej","noop","getSubscriptionsManager","subscriptions","id","subscriber","data","e","subscribers","s","chainHead","chainSpec","transaction","transactionWatch","fnGroupName","methods","methodName","getTransaction","request","tx","error","cancel","transaction","subscriptionId","noop","StopError","DisjointError","OperationLimitError","OperationError","error","OperationInaccessibleError","createOperationPromise","operationName","factory","request","abortablePromiseFn","res","rej","args","isRunning","cancel","requestArgs","logicCb","response","followSubscription","OperationLimitError","operationId","stopOperation","chainHead","done","noop","_res","x","_rej","e","_e","OperationError","OperationInaccessibleError","createBodyFn","createOperationPromise","chainHead","hash","res","createCallFn","createOperationPromise","chainHead","hash","fnName","callParameters","e","res","createHeaderFn","request","hash","res","rej","chainHead","import_utils","createStorageCb","request","hash","inputs","childTrie","onItems","onError","onDone","onDiscardedItems","isRunning","cancel","chainHead","response","followSubscription","OperationLimitError","operationId","stopOperation","doneListening","event","_onDone","_onError","OperationError","OperationInaccessibleError","e","createStorageFn","request","cbStore","createStorageCb","abortablePromiseFn","resolve","reject","hash","type","key","childTrie","isDescendants","result","cancel","items","e","nDiscarded","OperationLimitError","createUnpinFn","request","hashes","res","rej","chainHead","DestroyedError","isOperationEvent","event","getChainHead","request","withRuntime","onFollowEvent","onFollowError","subscriptions","getSubscriptionsManager","ongoingRequests","deferredFollow","deferred","followSubscription","onAllFollowEventsNext","type","rest","StopError","unfollow","onAllFollowEventsError","error","DestroyedError","onFollowRequestSuccess","subscriptionId","follow","done","sendUnfollow","noop","chainHead","DisjointError","cb","onFollowRequestError","e","fRequest","method","params","disjoint","onSubscription","subscription","onSubscribeOperation","operationId","subscriber","cleanup","response","onCancel","x","createBodyFn","createCallFn","createHeaderFn","createStorageFn","createStorageCb","createUnpinFn","RpcError","e","__publicField","nextClientId","createClient","gProvider","clientId","responses","subscriptions","getSubscriptionsManager","connection","send","id","method","params","onMessage","message","result","error","subscription","cb","RpcError","opaqueId","subscriber","subscriptionId","e","disconnect","DestroyedError","r","nextId","createGetChainSpec","clientRequest","request","abortablePromiseFn","onSuccess","onError","method","params","cachedPromise","chainSpec","name","genesisHash","properties","getCompatibilityEnhancer","rpcMethodsP","request","methods","translations","enhancedRequest","method","rest","isRunning","cleanup","rpcMethods","method_","iRest","noop","parts","value","unwatch","version","txGroup","group","v","createClient","provider","client","request","abortablePromiseFn","onSuccess","onError","method","params","rpcMethods","x","compatibilityEnhancer","getCompatibilityEnhancer","getChainHead","chainHead","getTransaction","transaction","createGetChainSpec","chainSpec"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@polkadot-api/substrate-client",
3
- "version": "0.1.2",
3
+ "version": "0.1.3",
4
4
  "author": "Josep M Sobrepere (https://github.com/josepot)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -34,10 +34,12 @@
34
34
  "files": [
35
35
  "dist"
36
36
  ],
37
- "devDependencies": {
38
- "@polkadot-api/json-rpc-provider": "0.0.1",
37
+ "dependencies": {
39
38
  "@polkadot-api/utils": "0.1.0"
40
39
  },
40
+ "devDependencies": {
41
+ "@polkadot-api/json-rpc-provider": "0.0.1"
42
+ },
41
43
  "scripts": {
42
44
  "build": "tsc --noEmit && tsup-node src/index.ts --clean --sourcemap --platform neutral --target=es2020 --format esm,cjs --dts && tsup-node src/index.ts --clean --sourcemap --platform neutral --target=es2020 --format cjs --dts --minify --out-dir dist/min",
43
45
  "test": "vitest",