@polkadot-api/substrate-client 0.2.2 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/dist/esm/archive/archive.mjs +52 -0
  2. package/dist/esm/archive/archive.mjs.map +1 -0
  3. package/dist/esm/archive/errors.mjs +21 -0
  4. package/dist/esm/archive/errors.mjs.map +1 -0
  5. package/dist/esm/archive/storage-subscription.mjs +55 -0
  6. package/dist/esm/archive/storage-subscription.mjs.map +1 -0
  7. package/dist/esm/archive/storage.mjs +26 -0
  8. package/dist/esm/archive/storage.mjs.map +1 -0
  9. package/dist/esm/chainhead/body.mjs.map +1 -1
  10. package/dist/esm/chainhead/call.mjs.map +1 -1
  11. package/dist/esm/chainhead/chainhead.mjs.map +1 -1
  12. package/dist/esm/chainhead/errors.mjs.map +1 -1
  13. package/dist/esm/chainhead/header.mjs.map +1 -1
  14. package/dist/esm/chainhead/operation-promise.mjs.map +1 -1
  15. package/dist/esm/chainhead/storage-subscription.mjs.map +1 -1
  16. package/dist/esm/chainhead/storage.mjs.map +1 -1
  17. package/dist/esm/chainhead/unpin.mjs.map +1 -1
  18. package/dist/esm/chainspec.mjs.map +1 -1
  19. package/dist/esm/client/DestroyedError.mjs.map +1 -1
  20. package/dist/esm/client/RpcError.mjs.map +1 -1
  21. package/dist/esm/client/createClient.mjs.map +1 -1
  22. package/dist/esm/index.mjs +5 -23
  23. package/dist/esm/index.mjs.map +1 -1
  24. package/dist/esm/internal-utils/abortablePromiseFn.mjs +1 -1
  25. package/dist/esm/internal-utils/abortablePromiseFn.mjs.map +1 -1
  26. package/dist/esm/internal-utils/deferred-promise.mjs.map +1 -1
  27. package/dist/esm/internal-utils/subscriptions-manager.mjs.map +1 -1
  28. package/dist/esm/methods.mjs.map +1 -1
  29. package/dist/esm/substrate-client.mjs +41 -0
  30. package/dist/esm/substrate-client.mjs.map +1 -0
  31. package/dist/esm/transaction/transaction.mjs.map +1 -1
  32. package/dist/index.d.ts +44 -13
  33. package/dist/index.js +286 -129
  34. package/dist/index.js.map +1 -1
  35. package/package.json +2 -2
@@ -0,0 +1,52 @@
1
+ import { abortablePromiseFn } from '../internal-utils/abortablePromiseFn.mjs';
2
+ import { createStorageCb } from './storage-subscription.mjs';
3
+ import { createStorageFn } from './storage.mjs';
4
+ import { BlockHashNotFoundError, CallError } from './errors.mjs';
5
+
6
+ const identity = () => (x) => x;
7
+ const handleInvalidBlockHash = () => (result, hash) => {
8
+ if (result === null) throw new BlockHashNotFoundError(hash);
9
+ return result;
10
+ };
11
+ const getArchive = (request) => {
12
+ const archiveRequest = (method, ...rest) => request(`archive_v1_${method}`, ...rest);
13
+ const fnCreator = (method) => (mapper) => abortablePromiseFn(
14
+ (res, rej, ...args) => archiveRequest(method, args, {
15
+ onSuccess: (x) => {
16
+ try {
17
+ res(mapper(x, ...args));
18
+ } catch (e) {
19
+ rej(e);
20
+ }
21
+ },
22
+ onError: rej
23
+ })
24
+ );
25
+ const header = fnCreator("header")(
26
+ handleInvalidBlockHash()
27
+ );
28
+ const body = fnCreator("body")(
29
+ handleInvalidBlockHash()
30
+ );
31
+ const storageSubscription = createStorageCb(archiveRequest);
32
+ const storage = createStorageFn(storageSubscription);
33
+ const call = fnCreator("call")((x, hash) => {
34
+ if (!x) throw new BlockHashNotFoundError(hash);
35
+ if (!x.success) throw new CallError(x.error);
36
+ return x.value;
37
+ });
38
+ const finalizedHeight = fnCreator("finalizedHeight")(identity());
39
+ const hashByHeight = fnCreator("hashByHeight")(identity());
40
+ return {
41
+ header,
42
+ body,
43
+ storageSubscription,
44
+ storage,
45
+ call,
46
+ finalizedHeight,
47
+ hashByHeight
48
+ };
49
+ };
50
+
51
+ export { getArchive };
52
+ //# sourceMappingURL=archive.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"archive.mjs","sources":["../../../src/archive/archive.ts"],"sourcesContent":["import { abortablePromiseFn } from \"@/internal-utils\"\nimport { type ClientRequest } from \"../client\"\nimport { createStorageCb } from \"./storage-subscription\"\nimport { createStorageFn } from \"./storage\"\nimport { Archive } from \"./public-types\"\nimport { CallError, BlockHashNotFoundError } from \"./errors\"\n\nconst identity =\n <T>() =>\n (x: T): T =>\n x\n\nconst handleInvalidBlockHash =\n <T>() =>\n (result: T | null, hash: string): T => {\n if (result === null) throw new BlockHashNotFoundError(hash)\n return result\n }\n\nexport const getArchive = (request: ClientRequest<any, any>): Archive => {\n const archiveRequest: ClientRequest<any, any> = (method: string, ...rest) =>\n request(`archive_v1_${method}`, ...rest)\n\n const fnCreator =\n <A extends Array<any>>(method: string) =>\n <I, O>(mapper: (input: I, ...args: A) => O) =>\n abortablePromiseFn<O, A>((res, rej, ...args) =>\n archiveRequest(method, args, {\n onSuccess: (x: I) => {\n try {\n res(mapper(x, ...args))\n } catch (e) {\n rej(e)\n }\n },\n onError: rej,\n }),\n )\n\n const header = fnCreator<[hash: string]>(\"header\")(\n handleInvalidBlockHash<string>(),\n )\n\n const body = fnCreator<[hash: string]>(\"body\")(\n handleInvalidBlockHash<string[]>(),\n )\n\n const storageSubscription = createStorageCb(archiveRequest)\n const storage = createStorageFn(storageSubscription)\n\n const call = fnCreator<\n [hash: string, function: string, callParameters: string]\n >(\"call\")((\n x:\n | { success: true; value: string }\n | { success: false; error: string }\n | null,\n hash,\n ) => {\n if (!x) throw new BlockHashNotFoundError(hash)\n if (!x.success) throw new CallError(x.error)\n return x.value\n })\n\n const finalizedHeight = fnCreator<[]>(\"finalizedHeight\")(identity<number>())\n const hashByHeight =\n fnCreator<[height: number]>(\"hashByHeight\")(identity<string[]>())\n\n return {\n header,\n body,\n storageSubscription,\n storage,\n call,\n finalizedHeight,\n hashByHeight,\n }\n}\n"],"names":[],"mappings":";;;;;AAOA,MAAM,QAAA,GACJ,MACA,CAAC,CACC,KAAA,CAAA;AAEJ,MAAM,sBACJ,GAAA,MACA,CAAC,MAAA,EAAkB,IAAoB,KAAA;AACrC,EAAA,IAAI,MAAW,KAAA,IAAA,EAAY,MAAA,IAAI,uBAAuB,IAAI,CAAA;AAC1D,EAAO,OAAA,MAAA;AACT,CAAA;AAEW,MAAA,UAAA,GAAa,CAAC,OAA8C,KAAA;AACvE,EAAM,MAAA,cAAA,GAA0C,CAAC,MAAmB,EAAA,GAAA,IAAA,KAClE,QAAQ,CAAc,WAAA,EAAA,MAAM,CAAI,CAAA,EAAA,GAAG,IAAI,CAAA;AAEzC,EAAA,MAAM,SACJ,GAAA,CAAuB,MACvB,KAAA,CAAO,MACL,KAAA,kBAAA;AAAA,IAAyB,CAAC,GAAK,EAAA,GAAA,EAAA,GAAQ,IACrC,KAAA,cAAA,CAAe,QAAQ,IAAM,EAAA;AAAA,MAC3B,SAAA,EAAW,CAAC,CAAS,KAAA;AACnB,QAAI,IAAA;AACF,UAAA,GAAA,CAAI,MAAO,CAAA,CAAA,EAAG,GAAG,IAAI,CAAC,CAAA;AAAA,iBACf,CAAG,EAAA;AACV,UAAA,GAAA,CAAI,CAAC,CAAA;AAAA;AACP,OACF;AAAA,MACA,OAAS,EAAA;AAAA,KACV;AAAA,GACH;AAEJ,EAAM,MAAA,MAAA,GAAS,UAA0B,QAAQ,CAAA;AAAA,IAC/C,sBAA+B;AAAA,GACjC;AAEA,EAAM,MAAA,IAAA,GAAO,UAA0B,MAAM,CAAA;AAAA,IAC3C,sBAAiC;AAAA,GACnC;AAEA,EAAM,MAAA,mBAAA,GAAsB,gBAAgB,cAAc,CAAA;AAC1D,EAAM,MAAA,OAAA,GAAU,gBAAgB,mBAAmB,CAAA;AAEnD,EAAA,MAAM,OAAO,SAEX,CAAA,MAAM,CAAE,CAAA,CACR,GAIA,IACG,KAAA;AACH,IAAA,IAAI,CAAC,CAAA,EAAS,MAAA,IAAI,uBAAuB,IAAI,CAAA;AAC7C,IAAA,IAAI,CAAC,CAAE,CAAA,OAAA,QAAe,IAAI,SAAA,CAAU,EAAE,KAAK,CAAA;AAC3C,IAAA,OAAO,CAAE,CAAA,KAAA;AAAA,GACV,CAAA;AAED,EAAA,MAAM,eAAkB,GAAA,SAAA,CAAc,iBAAiB,CAAA,CAAE,UAAkB,CAAA;AAC3E,EAAA,MAAM,YACJ,GAAA,SAAA,CAA4B,cAAc,CAAA,CAAE,UAAoB,CAAA;AAElE,EAAO,OAAA;AAAA,IACL,MAAA;AAAA,IACA,IAAA;AAAA,IACA,mBAAA;AAAA,IACA,OAAA;AAAA,IACA,IAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -0,0 +1,21 @@
1
+ class BlockHashNotFoundError extends Error {
2
+ constructor(hash) {
3
+ super(`Invalid BlockHash: ${hash}`);
4
+ this.name = "BlockHashNotFoundError";
5
+ }
6
+ }
7
+ class StorageError extends Error {
8
+ constructor(message) {
9
+ super(`Storage Error: ${message}`);
10
+ this.name = "StorageError";
11
+ }
12
+ }
13
+ class CallError extends Error {
14
+ constructor(message) {
15
+ super(`Call Error: ${message}`);
16
+ this.name = "CallError";
17
+ }
18
+ }
19
+
20
+ export { BlockHashNotFoundError, CallError, StorageError };
21
+ //# sourceMappingURL=errors.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.mjs","sources":["../../../src/archive/errors.ts"],"sourcesContent":["export class BlockHashNotFoundError extends Error {\n constructor(hash: string) {\n super(`Invalid BlockHash: ${hash}`)\n this.name = \"BlockHashNotFoundError\"\n }\n}\n\nexport class StorageError extends Error {\n constructor(message: string) {\n super(`Storage Error: ${message}`)\n this.name = \"StorageError\"\n }\n}\n\nexport class CallError extends Error {\n constructor(message: string) {\n super(`Call Error: ${message}`)\n this.name = \"CallError\"\n }\n}\n"],"names":[],"mappings":"AAAO,MAAM,+BAA+B,KAAM,CAAA;AAAA,EAChD,YAAY,IAAc,EAAA;AACxB,IAAM,KAAA,CAAA,CAAA,mBAAA,EAAsB,IAAI,CAAE,CAAA,CAAA;AAClC,IAAA,IAAA,CAAK,IAAO,GAAA,wBAAA;AAAA;AAEhB;AAEO,MAAM,qBAAqB,KAAM,CAAA;AAAA,EACtC,YAAY,OAAiB,EAAA;AAC3B,IAAM,KAAA,CAAA,CAAA,eAAA,EAAkB,OAAO,CAAE,CAAA,CAAA;AACjC,IAAA,IAAA,CAAK,IAAO,GAAA,cAAA;AAAA;AAEhB;AAEO,MAAM,kBAAkB,KAAM,CAAA;AAAA,EACnC,YAAY,OAAiB,EAAA;AAC3B,IAAM,KAAA,CAAA,CAAA,YAAA,EAAe,OAAO,CAAE,CAAA,CAAA;AAC9B,IAAA,IAAA,CAAK,IAAO,GAAA,WAAA;AAAA;AAEhB;;;;"}
@@ -0,0 +1,55 @@
1
+ import { noop } from '@polkadot-api/utils';
2
+ import { StorageError } from './errors.mjs';
3
+
4
+ const createStorageCb = (archiveRequest) => (hash, inputs, childTrie, onItem, onError, onDone) => {
5
+ if (inputs.length === 0) {
6
+ onDone();
7
+ return noop;
8
+ }
9
+ let isRunning = true;
10
+ let cancel = () => {
11
+ isRunning = false;
12
+ };
13
+ archiveRequest("storage", [hash, inputs, childTrie], {
14
+ onSuccess: (operationId, followSubscription) => {
15
+ const stopOperation = () => {
16
+ archiveRequest("stopStorage", [operationId]);
17
+ };
18
+ if (!isRunning) return stopOperation();
19
+ const doneListening = followSubscription(operationId, {
20
+ next: (event) => {
21
+ const { event: type } = event;
22
+ if (type === "storage") {
23
+ const { event: _, ...item } = event;
24
+ onItem(item);
25
+ } else if (type === "storageDone") _onDone();
26
+ else _onError(new StorageError(event.error));
27
+ },
28
+ error: onError
29
+ });
30
+ const tearDown = () => {
31
+ cancel = noop;
32
+ doneListening();
33
+ };
34
+ cancel = () => {
35
+ tearDown();
36
+ stopOperation();
37
+ };
38
+ const _onError = (e) => {
39
+ tearDown();
40
+ onError(e);
41
+ };
42
+ const _onDone = () => {
43
+ tearDown();
44
+ onDone();
45
+ };
46
+ },
47
+ onError
48
+ });
49
+ return () => {
50
+ cancel();
51
+ };
52
+ };
53
+
54
+ export { createStorageCb };
55
+ //# sourceMappingURL=storage-subscription.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-subscription.mjs","sources":["../../../src/archive/storage-subscription.ts"],"sourcesContent":["import type { ClientRequest } from \"@/client\"\nimport { noop } from \"@polkadot-api/utils\"\nimport { Archive } from \"./public-types\"\nimport { StorageItemResponse } from \"@/chainhead\"\nimport { StorageError } from \"./errors\"\n\ntype StorageEvent = {\n event: \"storage\"\n} & StorageItemResponse\n\ntype StorageDone = {\n event: \"storageDone\"\n}\n\ntype StorageErrorEvent = {\n event: \"storageError\"\n error: string\n}\n\nexport const createStorageCb =\n (\n archiveRequest: ClientRequest<\n string,\n StorageEvent | StorageDone | StorageErrorEvent\n >,\n ): Archive[\"storageSubscription\"] =>\n (hash, inputs, childTrie, onItem, onError, onDone) => {\n if (inputs.length === 0) {\n onDone()\n return noop\n }\n\n let isRunning = true\n let cancel = () => {\n isRunning = false\n }\n\n archiveRequest(\"storage\", [hash, inputs, childTrie], {\n onSuccess: (operationId, followSubscription) => {\n const stopOperation = () => {\n archiveRequest(\"stopStorage\", [operationId])\n }\n\n if (!isRunning) return stopOperation()\n\n const doneListening = followSubscription(operationId, {\n next: (event) => {\n const { event: type } = event\n if (type === \"storage\") {\n const { event: _, ...item } = event\n onItem(item)\n } else if (type === \"storageDone\") _onDone()\n else _onError(new StorageError(event.error))\n },\n error: onError,\n })\n\n const tearDown = () => {\n cancel = noop\n doneListening()\n }\n\n cancel = () => {\n tearDown()\n stopOperation()\n }\n\n const _onError = (e: Error) => {\n tearDown()\n onError(e)\n }\n\n const _onDone = () => {\n tearDown()\n onDone()\n }\n },\n onError,\n })\n\n return () => {\n cancel()\n }\n }\n"],"names":[],"mappings":";;;AAmBa,MAAA,eAAA,GACX,CACE,cAKF,KAAA,CAAC,MAAM,MAAQ,EAAA,SAAA,EAAW,MAAQ,EAAA,OAAA,EAAS,MAAW,KAAA;AACpD,EAAI,IAAA,MAAA,CAAO,WAAW,CAAG,EAAA;AACvB,IAAO,MAAA,EAAA;AACP,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,IAAI,SAAY,GAAA,IAAA;AAChB,EAAA,IAAI,SAAS,MAAM;AACjB,IAAY,SAAA,GAAA,KAAA;AAAA,GACd;AAEA,EAAA,cAAA,CAAe,SAAW,EAAA,CAAC,IAAM,EAAA,MAAA,EAAQ,SAAS,CAAG,EAAA;AAAA,IACnD,SAAA,EAAW,CAAC,WAAA,EAAa,kBAAuB,KAAA;AAC9C,MAAA,MAAM,gBAAgB,MAAM;AAC1B,QAAe,cAAA,CAAA,aAAA,EAAe,CAAC,WAAW,CAAC,CAAA;AAAA,OAC7C;AAEA,MAAI,IAAA,CAAC,SAAW,EAAA,OAAO,aAAc,EAAA;AAErC,MAAM,MAAA,aAAA,GAAgB,mBAAmB,WAAa,EAAA;AAAA,QACpD,IAAA,EAAM,CAAC,KAAU,KAAA;AACf,UAAM,MAAA,EAAE,KAAO,EAAA,IAAA,EAAS,GAAA,KAAA;AACxB,UAAA,IAAI,SAAS,SAAW,EAAA;AACtB,YAAA,MAAM,EAAE,KAAA,EAAO,CAAG,EAAA,GAAG,MAAS,GAAA,KAAA;AAC9B,YAAA,MAAA,CAAO,IAAI,CAAA;AAAA,WACb,MAAA,IAAW,IAAS,KAAA,aAAA,EAAuB,OAAA,EAAA;AAAA,eAC7B,QAAA,CAAA,IAAI,YAAa,CAAA,KAAA,CAAM,KAAK,CAAC,CAAA;AAAA,SAC7C;AAAA,QACA,KAAO,EAAA;AAAA,OACR,CAAA;AAED,MAAA,MAAM,WAAW,MAAM;AACrB,QAAS,MAAA,GAAA,IAAA;AACT,QAAc,aAAA,EAAA;AAAA,OAChB;AAEA,MAAA,MAAA,GAAS,MAAM;AACb,QAAS,QAAA,EAAA;AACT,QAAc,aAAA,EAAA;AAAA,OAChB;AAEA,MAAM,MAAA,QAAA,GAAW,CAAC,CAAa,KAAA;AAC7B,QAAS,QAAA,EAAA;AACT,QAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,OACX;AAEA,MAAA,MAAM,UAAU,MAAM;AACpB,QAAS,QAAA,EAAA;AACT,QAAO,MAAA,EAAA;AAAA,OACT;AAAA,KACF;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,OAAO,MAAM;AACX,IAAO,MAAA,EAAA;AAAA,GACT;AACF;;;;"}
@@ -0,0 +1,26 @@
1
+ import { abortablePromiseFn } from '../internal-utils/abortablePromiseFn.mjs';
2
+
3
+ const createStorageFn = (cbStore) => abortablePromiseFn((resolve, reject, hash, type, key, childTrie) => {
4
+ const isDescendants = type.startsWith("descendants");
5
+ let result = isDescendants ? [] : null;
6
+ const onItem = isDescendants ? result.push.bind(result) : ({ [type]: res }) => {
7
+ result = res;
8
+ };
9
+ return cbStore(
10
+ hash,
11
+ [{ key, type }],
12
+ childTrie,
13
+ onItem,
14
+ (e) => {
15
+ reject(e);
16
+ result = null;
17
+ },
18
+ () => {
19
+ resolve(result);
20
+ result = null;
21
+ }
22
+ );
23
+ });
24
+
25
+ export { createStorageFn };
26
+ //# sourceMappingURL=storage.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.mjs","sources":["../../../src/archive/storage.ts"],"sourcesContent":["import { abortablePromiseFn } from \"@/internal-utils\"\nimport type { Archive } from \"./public-types\"\n\nexport const createStorageFn = (\n cbStore: Archive[\"storageSubscription\"],\n): Archive[\"storage\"] =>\n abortablePromiseFn((resolve, reject, hash, type, key, childTrie) => {\n const isDescendants = type.startsWith(\"descendants\")\n\n let result: any = isDescendants ? [] : null\n const onItem: Parameters<typeof cbStore>[3] = isDescendants\n ? result.push.bind(result)\n : ({ [type]: res }) => {\n result = res\n }\n\n return cbStore(\n hash,\n [{ key, type }],\n childTrie,\n onItem,\n (e) => {\n reject(e)\n result = null\n },\n () => {\n resolve(result)\n result = null\n },\n )\n })\n"],"names":[],"mappings":";;AAGa,MAAA,eAAA,GAAkB,CAC7B,OAAA,KAEA,kBAAmB,CAAA,CAAC,SAAS,MAAQ,EAAA,IAAA,EAAM,IAAM,EAAA,GAAA,EAAK,SAAc,KAAA;AAClE,EAAM,MAAA,aAAA,GAAgB,IAAK,CAAA,UAAA,CAAW,aAAa,CAAA;AAEnD,EAAI,IAAA,MAAA,GAAc,aAAgB,GAAA,EAAK,GAAA,IAAA;AACvC,EAAA,MAAM,MAAwC,GAAA,aAAA,GAC1C,MAAO,CAAA,IAAA,CAAK,IAAK,CAAA,MAAM,CACvB,GAAA,CAAC,EAAE,CAAC,IAAO,GAAA,GAAA,EAAU,KAAA;AACnB,IAAS,MAAA,GAAA,GAAA;AAAA,GACX;AAEJ,EAAO,OAAA,OAAA;AAAA,IACL,IAAA;AAAA,IACA,CAAC,EAAE,GAAK,EAAA,IAAA,EAAM,CAAA;AAAA,IACd,SAAA;AAAA,IACA,MAAA;AAAA,IACA,CAAC,CAAM,KAAA;AACL,MAAA,MAAA,CAAO,CAAC,CAAA;AACR,MAAS,MAAA,GAAA,IAAA;AAAA,KACX;AAAA,IACA,MAAM;AACJ,MAAA,OAAA,CAAQ,MAAM,CAAA;AACd,MAAS,MAAA,GAAA,IAAA;AAAA;AACX,GACF;AACF,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"body.mjs","sources":["../../../src/chainhead/body.ts"],"sourcesContent":["import { chainHead } from \"@/methods\"\nimport type { OperationBodyDoneRpc } from \"./json-rpc-types\"\nimport { createOperationPromise } from \"./operation-promise\"\n\nexport const createBodyFn = createOperationPromise(\n chainHead.body,\n (hash: string) => [\n [hash],\n (e: OperationBodyDoneRpc, res: (x: Array<string>) => void) => {\n res(e.value)\n },\n ],\n)\n"],"names":[],"mappings":";;;AAIO,MAAM,YAAe,GAAA,sBAAA;AAAA,EAC1B,SAAU,CAAA,IAAA;AAAA,EACV,CAAC,IAAiB,KAAA;AAAA,IAChB,CAAC,IAAI,CAAA;AAAA,IACL,CAAC,GAAyB,GAAoC,KAAA;AAC5D,MAAA,GAAA,CAAI,EAAE,KAAK,CAAA,CAAA;AAAA,KACb;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"body.mjs","sources":["../../../src/chainhead/body.ts"],"sourcesContent":["import { chainHead } from \"@/methods\"\nimport type { OperationBodyDoneRpc } from \"./json-rpc-types\"\nimport { createOperationPromise } from \"./operation-promise\"\n\nexport const createBodyFn = createOperationPromise(\n chainHead.body,\n (hash: string) => [\n [hash],\n (e: OperationBodyDoneRpc, res: (x: Array<string>) => void) => {\n res(e.value)\n },\n ],\n)\n"],"names":[],"mappings":";;;AAIO,MAAM,YAAe,GAAA,sBAAA;AAAA,EAC1B,SAAU,CAAA,IAAA;AAAA,EACV,CAAC,IAAiB,KAAA;AAAA,IAChB,CAAC,IAAI,CAAA;AAAA,IACL,CAAC,GAAyB,GAAoC,KAAA;AAC5D,MAAA,GAAA,CAAI,EAAE,KAAK,CAAA;AAAA;AACb;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"call.mjs","sources":["../../../src/chainhead/call.ts"],"sourcesContent":["import { chainHead } from \"@/methods\"\nimport type { OperationCallDoneRpc } from \"./json-rpc-types\"\nimport { createOperationPromise } from \"./operation-promise\"\n\nexport const createCallFn = createOperationPromise(\n chainHead.call,\n (hash: string, fnName: string, callParameters: string) => [\n [hash, fnName, callParameters],\n (e: OperationCallDoneRpc, res: (output: string) => void) => {\n res(e.output)\n },\n ],\n)\n"],"names":[],"mappings":";;;AAIO,MAAM,YAAe,GAAA,sBAAA;AAAA,EAC1B,SAAU,CAAA,IAAA;AAAA,EACV,CAAC,IAAc,EAAA,MAAA,EAAgB,cAA2B,KAAA;AAAA,IACxD,CAAC,IAAM,EAAA,MAAA,EAAQ,cAAc,CAAA;AAAA,IAC7B,CAAC,GAAyB,GAAkC,KAAA;AAC1D,MAAA,GAAA,CAAI,EAAE,MAAM,CAAA,CAAA;AAAA,KACd;AAAA,GACF;AACF;;;;"}
1
+ {"version":3,"file":"call.mjs","sources":["../../../src/chainhead/call.ts"],"sourcesContent":["import { chainHead } from \"@/methods\"\nimport type { OperationCallDoneRpc } from \"./json-rpc-types\"\nimport { createOperationPromise } from \"./operation-promise\"\n\nexport const createCallFn = createOperationPromise(\n chainHead.call,\n (hash: string, fnName: string, callParameters: string) => [\n [hash, fnName, callParameters],\n (e: OperationCallDoneRpc, res: (output: string) => void) => {\n res(e.output)\n },\n ],\n)\n"],"names":[],"mappings":";;;AAIO,MAAM,YAAe,GAAA,sBAAA;AAAA,EAC1B,SAAU,CAAA,IAAA;AAAA,EACV,CAAC,IAAc,EAAA,MAAA,EAAgB,cAA2B,KAAA;AAAA,IACxD,CAAC,IAAM,EAAA,MAAA,EAAQ,cAAc,CAAA;AAAA,IAC7B,CAAC,GAAyB,GAAkC,KAAA;AAC1D,MAAA,GAAA,CAAI,EAAE,MAAM,CAAA;AAAA;AACd;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"chainhead.mjs","sources":["../../../src/chainhead/chainhead.ts"],"sourcesContent":["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: 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"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chainhead.mjs","sources":["../../../src/chainhead/chainhead.ts"],"sourcesContent":["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: 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"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"errors.mjs","sources":["../../../src/chainhead/errors.ts"],"sourcesContent":["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"],"names":[],"mappings":"AAAO,MAAM,kBAAkB,KAAM,CAAA;AAAA,EACnC,WAAc,GAAA;AACZ,IAAA,KAAA,CAAM,mBAAmB,CAAA,CAAA;AACzB,IAAA,IAAA,CAAK,IAAO,GAAA,WAAA,CAAA;AAAA,GACd;AACF,CAAA;AAEO,MAAM,sBAAsB,KAAM,CAAA;AAAA,EACvC,WAAc,GAAA;AACZ,IAAA,KAAA,CAAM,sBAAsB,CAAA,CAAA;AAC5B,IAAA,IAAA,CAAK,IAAO,GAAA,eAAA,CAAA;AAAA,GACd;AACF,CAAA;AAEO,MAAM,4BAA4B,KAAM,CAAA;AAAA,EAC7C,WAAc,GAAA;AACZ,IAAA,KAAA,CAAM,oCAAoC,CAAA,CAAA;AAC1C,IAAA,IAAA,CAAK,IAAO,GAAA,qBAAA,CAAA;AAAA,GACd;AACF,CAAA;AAEO,MAAM,uBAAuB,KAAM,CAAA;AAAA,EACxC,YAAY,KAAe,EAAA;AACzB,IAAA,KAAA,CAAM,KAAK,CAAA,CAAA;AACX,IAAA,IAAA,CAAK,IAAO,GAAA,gBAAA,CAAA;AAAA,GACd;AACF,CAAA;AAEO,MAAM,mCAAmC,KAAM,CAAA;AAAA,EACpD,WAAc,GAAA;AACZ,IAAA,KAAA,CAAM,kCAAkC,CAAA,CAAA;AACxC,IAAA,IAAA,CAAK,IAAO,GAAA,4BAAA,CAAA;AAAA,GACd;AACF;;;;"}
1
+ {"version":3,"file":"errors.mjs","sources":["../../../src/chainhead/errors.ts"],"sourcesContent":["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"],"names":[],"mappings":"AAAO,MAAM,kBAAkB,KAAM,CAAA;AAAA,EACnC,WAAc,GAAA;AACZ,IAAA,KAAA,CAAM,mBAAmB,CAAA;AACzB,IAAA,IAAA,CAAK,IAAO,GAAA,WAAA;AAAA;AAEhB;AAEO,MAAM,sBAAsB,KAAM,CAAA;AAAA,EACvC,WAAc,GAAA;AACZ,IAAA,KAAA,CAAM,sBAAsB,CAAA;AAC5B,IAAA,IAAA,CAAK,IAAO,GAAA,eAAA;AAAA;AAEhB;AAEO,MAAM,4BAA4B,KAAM,CAAA;AAAA,EAC7C,WAAc,GAAA;AACZ,IAAA,KAAA,CAAM,oCAAoC,CAAA;AAC1C,IAAA,IAAA,CAAK,IAAO,GAAA,qBAAA;AAAA;AAEhB;AAEO,MAAM,uBAAuB,KAAM,CAAA;AAAA,EACxC,YAAY,KAAe,EAAA;AACzB,IAAA,KAAA,CAAM,KAAK,CAAA;AACX,IAAA,IAAA,CAAK,IAAO,GAAA,gBAAA;AAAA;AAEhB;AAEO,MAAM,mCAAmC,KAAM,CAAA;AAAA,EACpD,WAAc,GAAA;AACZ,IAAA,KAAA,CAAM,kCAAkC,CAAA;AACxC,IAAA,IAAA,CAAK,IAAO,GAAA,4BAAA;AAAA;AAEhB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"header.mjs","sources":["../../../src/chainhead/header.ts"],"sourcesContent":["import { chainHead } from \"@/methods\"\nimport { ClientInnerRequest } from \"./public-types\"\n\nexport const createHeaderFn =\n (request: ClientInnerRequest<string, unknown>) => (hash: string) =>\n new Promise<string>((res, rej) => {\n request(chainHead.header, [hash], {\n onSuccess: res,\n onError: rej,\n })\n })\n"],"names":[],"mappings":";;AAGa,MAAA,cAAA,GACX,CAAC,OAAiD,KAAA,CAAC,SACjD,IAAI,OAAA,CAAgB,CAAC,GAAA,EAAK,GAAQ,KAAA;AAChC,EAAA,OAAA,CAAQ,SAAU,CAAA,MAAA,EAAQ,CAAC,IAAI,CAAG,EAAA;AAAA,IAChC,SAAW,EAAA,GAAA;AAAA,IACX,OAAS,EAAA,GAAA;AAAA,GACV,CAAA,CAAA;AACH,CAAC;;;;"}
1
+ {"version":3,"file":"header.mjs","sources":["../../../src/chainhead/header.ts"],"sourcesContent":["import { chainHead } from \"@/methods\"\nimport { ClientInnerRequest } from \"./public-types\"\n\nexport const createHeaderFn =\n (request: ClientInnerRequest<string, unknown>) => (hash: string) =>\n new Promise<string>((res, rej) => {\n request(chainHead.header, [hash], {\n onSuccess: res,\n onError: rej,\n })\n })\n"],"names":[],"mappings":";;AAGa,MAAA,cAAA,GACX,CAAC,OAAiD,KAAA,CAAC,SACjD,IAAI,OAAA,CAAgB,CAAC,GAAA,EAAK,GAAQ,KAAA;AAChC,EAAA,OAAA,CAAQ,SAAU,CAAA,MAAA,EAAQ,CAAC,IAAI,CAAG,EAAA;AAAA,IAChC,SAAW,EAAA,GAAA;AAAA,IACX,OAAS,EAAA;AAAA,GACV,CAAA;AACH,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"operation-promise.mjs","sources":["../../../src/chainhead/operation-promise.ts"],"sourcesContent":["import { abortablePromiseFn, noop } from \"@/internal-utils\"\nimport {\n CommonOperationEventsRpc,\n OperationResponseRpc,\n} from \"./json-rpc-types\"\nimport {\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./errors\"\nimport { ClientInnerRequest } from \"./public-types\"\nimport { chainHead } from \"@/methods\"\n\nexport const createOperationPromise =\n <I extends { operationId: string; event: string }, O, A extends Array<any>>(\n operationName: string,\n factory: (\n ...args: A\n ) => [\n Array<any>,\n (e: I, res: (x: O) => void, rej: (e: Error) => void) => void,\n ],\n ) =>\n (\n request: ClientInnerRequest<\n OperationResponseRpc,\n I | CommonOperationEventsRpc\n >,\n ) =>\n abortablePromiseFn<O, A>((res, rej, ...args) => {\n let isRunning = true\n let cancel = () => {\n isRunning = false\n }\n\n const [requestArgs, logicCb] = factory(...args)\n request(operationName, requestArgs, {\n onSuccess: (response, followSubscription) => {\n if (response.result === \"limitReached\")\n return rej(new OperationLimitError())\n\n const { operationId } = response\n const stopOperation = () => {\n request(chainHead.stopOperation, [operationId])\n }\n\n if (!isRunning) return stopOperation()\n\n let done = noop\n const _res = (x: O) => {\n isRunning = false\n done()\n res(x)\n }\n const _rej = (x: Error) => {\n isRunning = false\n done()\n rej(x)\n }\n\n done = followSubscription(operationId, {\n next: (e) => {\n const _e = e as CommonOperationEventsRpc\n if (_e.event === \"operationError\")\n rej(new OperationError(_e.error))\n else if (_e.event === \"operationInaccessible\")\n rej(new OperationInaccessibleError())\n else logicCb(e as I, _res, _rej)\n },\n error: _rej,\n })\n\n cancel = () => {\n if (isRunning) {\n done()\n stopOperation()\n }\n }\n },\n onError: rej,\n })\n\n return () => {\n cancel()\n }\n })\n"],"names":[],"mappings":";;;;;AAaa,MAAA,sBAAA,GACX,CACE,aAAA,EACA,OAOF,KAAA,CACE,YAKA,kBAAyB,CAAA,CAAC,GAAK,EAAA,GAAA,EAAA,GAAQ,IAAS,KAAA;AAC9C,EAAA,IAAI,SAAY,GAAA,IAAA,CAAA;AAChB,EAAA,IAAI,SAAS,MAAM;AACjB,IAAY,SAAA,GAAA,KAAA,CAAA;AAAA,GACd,CAAA;AAEA,EAAA,MAAM,CAAC,WAAa,EAAA,OAAO,CAAI,GAAA,OAAA,CAAQ,GAAG,IAAI,CAAA,CAAA;AAC9C,EAAA,OAAA,CAAQ,eAAe,WAAa,EAAA;AAAA,IAClC,SAAA,EAAW,CAAC,QAAA,EAAU,kBAAuB,KAAA;AAC3C,MAAA,IAAI,SAAS,MAAW,KAAA,cAAA;AACtB,QAAO,OAAA,GAAA,CAAI,IAAI,mBAAA,EAAqB,CAAA,CAAA;AAEtC,MAAM,MAAA,EAAE,aAAgB,GAAA,QAAA,CAAA;AACxB,MAAA,MAAM,gBAAgB,MAAM;AAC1B,QAAA,OAAA,CAAQ,SAAU,CAAA,aAAA,EAAe,CAAC,WAAW,CAAC,CAAA,CAAA;AAAA,OAChD,CAAA;AAEA,MAAI,IAAA,CAAC,SAAW,EAAA,OAAO,aAAc,EAAA,CAAA;AAErC,MAAA,IAAI,IAAO,GAAA,IAAA,CAAA;AACX,MAAM,MAAA,IAAA,GAAO,CAAC,CAAS,KAAA;AACrB,QAAY,SAAA,GAAA,KAAA,CAAA;AACZ,QAAK,IAAA,EAAA,CAAA;AACL,QAAA,GAAA,CAAI,CAAC,CAAA,CAAA;AAAA,OACP,CAAA;AACA,MAAM,MAAA,IAAA,GAAO,CAAC,CAAa,KAAA;AACzB,QAAY,SAAA,GAAA,KAAA,CAAA;AACZ,QAAK,IAAA,EAAA,CAAA;AACL,QAAA,GAAA,CAAI,CAAC,CAAA,CAAA;AAAA,OACP,CAAA;AAEA,MAAA,IAAA,GAAO,mBAAmB,WAAa,EAAA;AAAA,QACrC,IAAA,EAAM,CAAC,CAAM,KAAA;AACX,UAAA,MAAM,EAAK,GAAA,CAAA,CAAA;AACX,UAAA,IAAI,GAAG,KAAU,KAAA,gBAAA;AACf,YAAA,GAAA,CAAI,IAAI,cAAA,CAAe,EAAG,CAAA,KAAK,CAAC,CAAA,CAAA;AAAA,eAAA,IACzB,GAAG,KAAU,KAAA,uBAAA;AACpB,YAAI,GAAA,CAAA,IAAI,4BAA4B,CAAA,CAAA;AAAA,eACjC,OAAA,CAAQ,CAAQ,EAAA,IAAA,EAAM,IAAI,CAAA,CAAA;AAAA,SACjC;AAAA,QACA,KAAO,EAAA,IAAA;AAAA,OACR,CAAA,CAAA;AAED,MAAA,MAAA,GAAS,MAAM;AACb,QAAA,IAAI,SAAW,EAAA;AACb,UAAK,IAAA,EAAA,CAAA;AACL,UAAc,aAAA,EAAA,CAAA;AAAA,SAChB;AAAA,OACF,CAAA;AAAA,KACF;AAAA,IACA,OAAS,EAAA,GAAA;AAAA,GACV,CAAA,CAAA;AAED,EAAA,OAAO,MAAM;AACX,IAAO,MAAA,EAAA,CAAA;AAAA,GACT,CAAA;AACF,CAAC;;;;"}
1
+ {"version":3,"file":"operation-promise.mjs","sources":["../../../src/chainhead/operation-promise.ts"],"sourcesContent":["import { abortablePromiseFn, noop } from \"@/internal-utils\"\nimport {\n CommonOperationEventsRpc,\n OperationResponseRpc,\n} from \"./json-rpc-types\"\nimport {\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./errors\"\nimport { ClientInnerRequest } from \"./public-types\"\nimport { chainHead } from \"@/methods\"\n\nexport const createOperationPromise =\n <I extends { operationId: string; event: string }, O, A extends Array<any>>(\n operationName: string,\n factory: (\n ...args: A\n ) => [\n Array<any>,\n (e: I, res: (x: O) => void, rej: (e: Error) => void) => void,\n ],\n ) =>\n (\n request: ClientInnerRequest<\n OperationResponseRpc,\n I | CommonOperationEventsRpc\n >,\n ) =>\n abortablePromiseFn<O, A>((res, rej, ...args) => {\n let isRunning = true\n let cancel = () => {\n isRunning = false\n }\n\n const [requestArgs, logicCb] = factory(...args)\n request(operationName, requestArgs, {\n onSuccess: (response, followSubscription) => {\n if (response.result === \"limitReached\")\n return rej(new OperationLimitError())\n\n const { operationId } = response\n const stopOperation = () => {\n request(chainHead.stopOperation, [operationId])\n }\n\n if (!isRunning) return stopOperation()\n\n let done = noop\n const _res = (x: O) => {\n isRunning = false\n done()\n res(x)\n }\n const _rej = (x: Error) => {\n isRunning = false\n done()\n rej(x)\n }\n\n done = followSubscription(operationId, {\n next: (e) => {\n const _e = e as CommonOperationEventsRpc\n if (_e.event === \"operationError\")\n rej(new OperationError(_e.error))\n else if (_e.event === \"operationInaccessible\")\n rej(new OperationInaccessibleError())\n else logicCb(e as I, _res, _rej)\n },\n error: _rej,\n })\n\n cancel = () => {\n if (isRunning) {\n done()\n stopOperation()\n }\n }\n },\n onError: rej,\n })\n\n return () => {\n cancel()\n }\n })\n"],"names":[],"mappings":";;;;;AAaa,MAAA,sBAAA,GACX,CACE,aAAA,EACA,OAOF,KAAA,CACE,YAKA,kBAAyB,CAAA,CAAC,GAAK,EAAA,GAAA,EAAA,GAAQ,IAAS,KAAA;AAC9C,EAAA,IAAI,SAAY,GAAA,IAAA;AAChB,EAAA,IAAI,SAAS,MAAM;AACjB,IAAY,SAAA,GAAA,KAAA;AAAA,GACd;AAEA,EAAA,MAAM,CAAC,WAAa,EAAA,OAAO,CAAI,GAAA,OAAA,CAAQ,GAAG,IAAI,CAAA;AAC9C,EAAA,OAAA,CAAQ,eAAe,WAAa,EAAA;AAAA,IAClC,SAAA,EAAW,CAAC,QAAA,EAAU,kBAAuB,KAAA;AAC3C,MAAA,IAAI,SAAS,MAAW,KAAA,cAAA;AACtB,QAAO,OAAA,GAAA,CAAI,IAAI,mBAAA,EAAqB,CAAA;AAEtC,MAAM,MAAA,EAAE,aAAgB,GAAA,QAAA;AACxB,MAAA,MAAM,gBAAgB,MAAM;AAC1B,QAAA,OAAA,CAAQ,SAAU,CAAA,aAAA,EAAe,CAAC,WAAW,CAAC,CAAA;AAAA,OAChD;AAEA,MAAI,IAAA,CAAC,SAAW,EAAA,OAAO,aAAc,EAAA;AAErC,MAAA,IAAI,IAAO,GAAA,IAAA;AACX,MAAM,MAAA,IAAA,GAAO,CAAC,CAAS,KAAA;AACrB,QAAY,SAAA,GAAA,KAAA;AACZ,QAAK,IAAA,EAAA;AACL,QAAA,GAAA,CAAI,CAAC,CAAA;AAAA,OACP;AACA,MAAM,MAAA,IAAA,GAAO,CAAC,CAAa,KAAA;AACzB,QAAY,SAAA,GAAA,KAAA;AACZ,QAAK,IAAA,EAAA;AACL,QAAA,GAAA,CAAI,CAAC,CAAA;AAAA,OACP;AAEA,MAAA,IAAA,GAAO,mBAAmB,WAAa,EAAA;AAAA,QACrC,IAAA,EAAM,CAAC,CAAM,KAAA;AACX,UAAA,MAAM,EAAK,GAAA,CAAA;AACX,UAAA,IAAI,GAAG,KAAU,KAAA,gBAAA;AACf,YAAA,GAAA,CAAI,IAAI,cAAA,CAAe,EAAG,CAAA,KAAK,CAAC,CAAA;AAAA,eAAA,IACzB,GAAG,KAAU,KAAA,uBAAA;AACpB,YAAI,GAAA,CAAA,IAAI,4BAA4B,CAAA;AAAA,eACjC,OAAA,CAAQ,CAAQ,EAAA,IAAA,EAAM,IAAI,CAAA;AAAA,SACjC;AAAA,QACA,KAAO,EAAA;AAAA,OACR,CAAA;AAED,MAAA,MAAA,GAAS,MAAM;AACb,QAAA,IAAI,SAAW,EAAA;AACb,UAAK,IAAA,EAAA;AACL,UAAc,aAAA,EAAA;AAAA;AAChB,OACF;AAAA,KACF;AAAA,IACA,OAAS,EAAA;AAAA,GACV,CAAA;AAED,EAAA,OAAO,MAAM;AACX,IAAO,MAAA,EAAA;AAAA,GACT;AACF,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage-subscription.mjs","sources":["../../../src/chainhead/storage-subscription.ts"],"sourcesContent":["import { noop } from \"@polkadot-api/utils\"\nimport type { ClientInnerRequest, FollowResponse } from \"./public-types\"\nimport {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { chainHead } from \"@/methods\"\nimport {\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./errors\"\n\nexport const createStorageCb =\n (\n request: ClientInnerRequest<\n OperationStorageStartedRpc | LimitReachedRpc,\n | CommonOperationEventsRpc\n | OperationStorageItemsRpc\n | OperationStorageDoneRpc\n | OperationWaitingForContinueRpc\n >,\n ): FollowResponse[\"storageSubscription\"] =>\n (hash, inputs, childTrie, onItems, onError, onDone, onDiscardedItems) => {\n if (inputs.length === 0) {\n onDone()\n return noop\n }\n\n let isRunning = true\n let cancel = () => {\n isRunning = false\n }\n\n request(chainHead.storage, [hash, inputs, childTrie], {\n onSuccess: (response, followSubscription) => {\n if (\n response.result === \"limitReached\" ||\n response.discardedItems === inputs.length\n )\n return onError(new OperationLimitError())\n\n const { operationId } = response\n const stopOperation = () => {\n request(chainHead.stopOperation, [operationId])\n }\n\n if (!isRunning) return stopOperation()\n\n const doneListening = followSubscription(response.operationId, {\n next: (event) => {\n switch (event.event) {\n case \"operationStorageItems\": {\n onItems(event.items)\n break\n }\n case \"operationStorageDone\": {\n _onDone()\n break\n }\n case \"operationError\": {\n _onError(new OperationError(event.error))\n break\n }\n case \"operationInaccessible\": {\n _onError(new OperationInaccessibleError())\n break\n }\n default:\n request(chainHead.continue, [event.operationId])\n }\n },\n error: onError,\n })\n\n cancel = () => {\n doneListening()\n request(chainHead.stopOperation, [response.operationId])\n }\n\n const _onError = (e: Error) => {\n cancel = noop\n doneListening()\n onError(e)\n }\n\n const _onDone = () => {\n cancel = noop\n doneListening()\n onDone()\n }\n\n onDiscardedItems(response.discardedItems)\n },\n onError,\n })\n\n return () => {\n cancel()\n }\n }\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage-subscription.mjs","sources":["../../../src/chainhead/storage-subscription.ts"],"sourcesContent":["import { noop } from \"@polkadot-api/utils\"\nimport type { ClientInnerRequest, FollowResponse } from \"./public-types\"\nimport {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { chainHead } from \"@/methods\"\nimport {\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./errors\"\n\nexport const createStorageCb =\n (\n request: ClientInnerRequest<\n OperationStorageStartedRpc | LimitReachedRpc,\n | CommonOperationEventsRpc\n | OperationStorageItemsRpc\n | OperationStorageDoneRpc\n | OperationWaitingForContinueRpc\n >,\n ): FollowResponse[\"storageSubscription\"] =>\n (hash, inputs, childTrie, onItems, onError, onDone, onDiscardedItems) => {\n if (inputs.length === 0) {\n onDone()\n return noop\n }\n\n let isRunning = true\n let cancel = () => {\n isRunning = false\n }\n\n request(chainHead.storage, [hash, inputs, childTrie], {\n onSuccess: (response, followSubscription) => {\n if (\n response.result === \"limitReached\" ||\n response.discardedItems === inputs.length\n )\n return onError(new OperationLimitError())\n\n const { operationId } = response\n const stopOperation = () => {\n request(chainHead.stopOperation, [operationId])\n }\n\n if (!isRunning) return stopOperation()\n\n const doneListening = followSubscription(response.operationId, {\n next: (event) => {\n switch (event.event) {\n case \"operationStorageItems\": {\n onItems(event.items)\n break\n }\n case \"operationStorageDone\": {\n _onDone()\n break\n }\n case \"operationError\": {\n _onError(new OperationError(event.error))\n break\n }\n case \"operationInaccessible\": {\n _onError(new OperationInaccessibleError())\n break\n }\n default:\n request(chainHead.continue, [event.operationId])\n }\n },\n error: onError,\n })\n\n cancel = () => {\n doneListening()\n request(chainHead.stopOperation, [response.operationId])\n }\n\n const _onError = (e: Error) => {\n cancel = noop\n doneListening()\n onError(e)\n }\n\n const _onDone = () => {\n cancel = noop\n doneListening()\n onDone()\n }\n\n onDiscardedItems(response.discardedItems)\n },\n onError,\n })\n\n return () => {\n cancel()\n }\n }\n"],"names":[],"mappings":";;;;AAiBa,MAAA,eAAA,GACX,CACE,OAAA,KAQF,CAAC,IAAA,EAAM,QAAQ,SAAW,EAAA,OAAA,EAAS,OAAS,EAAA,MAAA,EAAQ,gBAAqB,KAAA;AACvE,EAAI,IAAA,MAAA,CAAO,WAAW,CAAG,EAAA;AACvB,IAAO,MAAA,EAAA;AACP,IAAO,OAAA,IAAA;AAAA;AAGT,EAAA,IAAI,SAAY,GAAA,IAAA;AAChB,EAAA,IAAI,SAAS,MAAM;AACjB,IAAY,SAAA,GAAA,KAAA;AAAA,GACd;AAEA,EAAA,OAAA,CAAQ,UAAU,OAAS,EAAA,CAAC,IAAM,EAAA,MAAA,EAAQ,SAAS,CAAG,EAAA;AAAA,IACpD,SAAA,EAAW,CAAC,QAAA,EAAU,kBAAuB,KAAA;AAC3C,MAAA,IACE,QAAS,CAAA,MAAA,KAAW,cACpB,IAAA,QAAA,CAAS,mBAAmB,MAAO,CAAA,MAAA;AAEnC,QAAO,OAAA,OAAA,CAAQ,IAAI,mBAAA,EAAqB,CAAA;AAE1C,MAAM,MAAA,EAAE,aAAgB,GAAA,QAAA;AACxB,MAAA,MAAM,gBAAgB,MAAM;AAC1B,QAAA,OAAA,CAAQ,SAAU,CAAA,aAAA,EAAe,CAAC,WAAW,CAAC,CAAA;AAAA,OAChD;AAEA,MAAI,IAAA,CAAC,SAAW,EAAA,OAAO,aAAc,EAAA;AAErC,MAAM,MAAA,aAAA,GAAgB,kBAAmB,CAAA,QAAA,CAAS,WAAa,EAAA;AAAA,QAC7D,IAAA,EAAM,CAAC,KAAU,KAAA;AACf,UAAA,QAAQ,MAAM,KAAO;AAAA,YACnB,KAAK,uBAAyB,EAAA;AAC5B,cAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AACnB,cAAA;AAAA;AACF,YACA,KAAK,sBAAwB,EAAA;AAC3B,cAAQ,OAAA,EAAA;AACR,cAAA;AAAA;AACF,YACA,KAAK,gBAAkB,EAAA;AACrB,cAAA,QAAA,CAAS,IAAI,cAAA,CAAe,KAAM,CAAA,KAAK,CAAC,CAAA;AACxC,cAAA;AAAA;AACF,YACA,KAAK,uBAAyB,EAAA;AAC5B,cAAS,QAAA,CAAA,IAAI,4BAA4B,CAAA;AACzC,cAAA;AAAA;AACF,YACA;AACE,cAAA,OAAA,CAAQ,SAAU,CAAA,QAAA,EAAU,CAAC,KAAA,CAAM,WAAW,CAAC,CAAA;AAAA;AACnD,SACF;AAAA,QACA,KAAO,EAAA;AAAA,OACR,CAAA;AAED,MAAA,MAAA,GAAS,MAAM;AACb,QAAc,aAAA,EAAA;AACd,QAAA,OAAA,CAAQ,SAAU,CAAA,aAAA,EAAe,CAAC,QAAA,CAAS,WAAW,CAAC,CAAA;AAAA,OACzD;AAEA,MAAM,MAAA,QAAA,GAAW,CAAC,CAAa,KAAA;AAC7B,QAAS,MAAA,GAAA,IAAA;AACT,QAAc,aAAA,EAAA;AACd,QAAA,OAAA,CAAQ,CAAC,CAAA;AAAA,OACX;AAEA,MAAA,MAAM,UAAU,MAAM;AACpB,QAAS,MAAA,GAAA,IAAA;AACT,QAAc,aAAA,EAAA;AACd,QAAO,MAAA,EAAA;AAAA,OACT;AAEA,MAAA,gBAAA,CAAiB,SAAS,cAAc,CAAA;AAAA,KAC1C;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,OAAO,MAAM;AACX,IAAO,MAAA,EAAA;AAAA,GACT;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"storage.mjs","sources":["../../../src/chainhead/storage.ts"],"sourcesContent":["import { OperationLimitError } from \"./errors\"\nimport type {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { abortablePromiseFn } from \"@/internal-utils\"\nimport { createStorageCb } from \"./storage-subscription\"\nimport type { ClientInnerRequest, FollowResponse } from \"./public-types\"\n\nexport const createStorageFn = (\n request: ClientInnerRequest<\n OperationStorageStartedRpc | LimitReachedRpc,\n | CommonOperationEventsRpc\n | OperationStorageItemsRpc\n | OperationStorageDoneRpc\n | OperationWaitingForContinueRpc\n >,\n): FollowResponse[\"storage\"] => {\n const cbStore = createStorageCb(request)\n return abortablePromiseFn((resolve, reject, hash, type, key, childTrie) => {\n const isDescendants = type.startsWith(\"descendants\")\n let result: any = isDescendants ? [] : null\n\n const onItems: Parameters<typeof cbStore>[3] = isDescendants\n ? (items) => {\n result.push(items)\n }\n : (items) => {\n result = items[0]?.[type as \"value\"]\n }\n\n const cancel = cbStore(\n hash,\n [{ key, type }],\n childTrie ?? null,\n onItems,\n reject,\n () => {\n try {\n resolve(isDescendants ? result.flat() : result)\n } catch (e) {\n reject(e)\n }\n },\n (nDiscarded) => {\n if (nDiscarded > 0) {\n cancel()\n reject(new OperationLimitError())\n }\n },\n )\n return cancel\n })\n}\n"],"names":[],"mappings":";;;;AAaa,MAAA,eAAA,GAAkB,CAC7B,OAO8B,KAAA;AAC9B,EAAM,MAAA,OAAA,GAAU,gBAAgB,OAAO,CAAA,CAAA;AACvC,EAAA,OAAO,mBAAmB,CAAC,OAAA,EAAS,QAAQ,IAAM,EAAA,IAAA,EAAM,KAAK,SAAc,KAAA;AACzE,IAAM,MAAA,aAAA,GAAgB,IAAK,CAAA,UAAA,CAAW,aAAa,CAAA,CAAA;AACnD,IAAI,IAAA,MAAA,GAAc,aAAgB,GAAA,EAAK,GAAA,IAAA,CAAA;AAEvC,IAAM,MAAA,OAAA,GAAyC,aAC3C,GAAA,CAAC,KAAU,KAAA;AACT,MAAA,MAAA,CAAO,KAAK,KAAK,CAAA,CAAA;AAAA,KACnB,GACA,CAAC,KAAU,KAAA;AACT,MAAS,MAAA,GAAA,KAAA,CAAM,CAAC,CAAA,GAAI,IAAe,CAAA,CAAA;AAAA,KACrC,CAAA;AAEJ,IAAA,MAAM,MAAS,GAAA,OAAA;AAAA,MACb,IAAA;AAAA,MACA,CAAC,EAAE,GAAK,EAAA,IAAA,EAAM,CAAA;AAAA,MACd,SAAa,IAAA,IAAA;AAAA,MACb,OAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAM;AACJ,QAAI,IAAA;AACF,UAAA,OAAA,CAAQ,aAAgB,GAAA,MAAA,CAAO,IAAK,EAAA,GAAI,MAAM,CAAA,CAAA;AAAA,iBACvC,CAAG,EAAA;AACV,UAAA,MAAA,CAAO,CAAC,CAAA,CAAA;AAAA,SACV;AAAA,OACF;AAAA,MACA,CAAC,UAAe,KAAA;AACd,QAAA,IAAI,aAAa,CAAG,EAAA;AAClB,UAAO,MAAA,EAAA,CAAA;AACP,UAAO,MAAA,CAAA,IAAI,qBAAqB,CAAA,CAAA;AAAA,SAClC;AAAA,OACF;AAAA,KACF,CAAA;AACA,IAAO,OAAA,MAAA,CAAA;AAAA,GACR,CAAA,CAAA;AACH;;;;"}
1
+ {"version":3,"file":"storage.mjs","sources":["../../../src/chainhead/storage.ts"],"sourcesContent":["import { OperationLimitError } from \"./errors\"\nimport type {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { abortablePromiseFn } from \"@/internal-utils\"\nimport { createStorageCb } from \"./storage-subscription\"\nimport type { ClientInnerRequest, FollowResponse } from \"./public-types\"\n\nexport const createStorageFn = (\n request: ClientInnerRequest<\n OperationStorageStartedRpc | LimitReachedRpc,\n | CommonOperationEventsRpc\n | OperationStorageItemsRpc\n | OperationStorageDoneRpc\n | OperationWaitingForContinueRpc\n >,\n): FollowResponse[\"storage\"] => {\n const cbStore = createStorageCb(request)\n return abortablePromiseFn((resolve, reject, hash, type, key, childTrie) => {\n const isDescendants = type.startsWith(\"descendants\")\n let result: any = isDescendants ? [] : null\n\n const onItems: Parameters<typeof cbStore>[3] = isDescendants\n ? (items) => {\n result.push(items)\n }\n : (items) => {\n result = items[0]?.[type as \"value\"]\n }\n\n const cancel = cbStore(\n hash,\n [{ key, type }],\n childTrie ?? null,\n onItems,\n reject,\n () => {\n try {\n resolve(isDescendants ? result.flat() : result)\n } catch (e) {\n reject(e)\n }\n },\n (nDiscarded) => {\n if (nDiscarded > 0) {\n cancel()\n reject(new OperationLimitError())\n }\n },\n )\n return cancel\n })\n}\n"],"names":[],"mappings":";;;;AAaa,MAAA,eAAA,GAAkB,CAC7B,OAO8B,KAAA;AAC9B,EAAM,MAAA,OAAA,GAAU,gBAAgB,OAAO,CAAA;AACvC,EAAA,OAAO,mBAAmB,CAAC,OAAA,EAAS,QAAQ,IAAM,EAAA,IAAA,EAAM,KAAK,SAAc,KAAA;AACzE,IAAM,MAAA,aAAA,GAAgB,IAAK,CAAA,UAAA,CAAW,aAAa,CAAA;AACnD,IAAI,IAAA,MAAA,GAAc,aAAgB,GAAA,EAAK,GAAA,IAAA;AAEvC,IAAM,MAAA,OAAA,GAAyC,aAC3C,GAAA,CAAC,KAAU,KAAA;AACT,MAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,KACnB,GACA,CAAC,KAAU,KAAA;AACT,MAAS,MAAA,GAAA,KAAA,CAAM,CAAC,CAAA,GAAI,IAAe,CAAA;AAAA,KACrC;AAEJ,IAAA,MAAM,MAAS,GAAA,OAAA;AAAA,MACb,IAAA;AAAA,MACA,CAAC,EAAE,GAAK,EAAA,IAAA,EAAM,CAAA;AAAA,MACd,SAAa,IAAA,IAAA;AAAA,MACb,OAAA;AAAA,MACA,MAAA;AAAA,MACA,MAAM;AACJ,QAAI,IAAA;AACF,UAAA,OAAA,CAAQ,aAAgB,GAAA,MAAA,CAAO,IAAK,EAAA,GAAI,MAAM,CAAA;AAAA,iBACvC,CAAG,EAAA;AACV,UAAA,MAAA,CAAO,CAAC,CAAA;AAAA;AACV,OACF;AAAA,MACA,CAAC,UAAe,KAAA;AACd,QAAA,IAAI,aAAa,CAAG,EAAA;AAClB,UAAO,MAAA,EAAA;AACP,UAAO,MAAA,CAAA,IAAI,qBAAqB,CAAA;AAAA;AAClC;AACF,KACF;AACA,IAAO,OAAA,MAAA;AAAA,GACR,CAAA;AACH;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"unpin.mjs","sources":["../../../src/chainhead/unpin.ts"],"sourcesContent":["import { chainHead } from \"@/methods\"\nimport { ClientInnerRequest } from \"./public-types\"\n\nexport const createUnpinFn =\n (request: ClientInnerRequest<null, unknown>) => (hashes: string[]) =>\n hashes.length > 0\n ? new Promise<void>((res, rej) => {\n request(chainHead.unpin, [hashes], {\n onSuccess() {\n res()\n },\n onError: rej,\n })\n })\n : Promise.resolve()\n"],"names":[],"mappings":";;AAGO,MAAM,aACX,GAAA,CAAC,OAA+C,KAAA,CAAC,MAC/C,KAAA,MAAA,CAAO,MAAS,GAAA,CAAA,GACZ,IAAI,OAAA,CAAc,CAAC,GAAA,EAAK,GAAQ,KAAA;AAC9B,EAAA,OAAA,CAAQ,SAAU,CAAA,KAAA,EAAO,CAAC,MAAM,CAAG,EAAA;AAAA,IACjC,SAAY,GAAA;AACV,MAAI,GAAA,EAAA,CAAA;AAAA,KACN;AAAA,IACA,OAAS,EAAA,GAAA;AAAA,GACV,CAAA,CAAA;AACH,CAAC,CAAA,GACD,QAAQ,OAAQ;;;;"}
1
+ {"version":3,"file":"unpin.mjs","sources":["../../../src/chainhead/unpin.ts"],"sourcesContent":["import { chainHead } from \"@/methods\"\nimport { ClientInnerRequest } from \"./public-types\"\n\nexport const createUnpinFn =\n (request: ClientInnerRequest<null, unknown>) => (hashes: string[]) =>\n hashes.length > 0\n ? new Promise<void>((res, rej) => {\n request(chainHead.unpin, [hashes], {\n onSuccess() {\n res()\n },\n onError: rej,\n })\n })\n : Promise.resolve()\n"],"names":[],"mappings":";;AAGO,MAAM,aACX,GAAA,CAAC,OAA+C,KAAA,CAAC,MAC/C,KAAA,MAAA,CAAO,MAAS,GAAA,CAAA,GACZ,IAAI,OAAA,CAAc,CAAC,GAAA,EAAK,GAAQ,KAAA;AAC9B,EAAA,OAAA,CAAQ,SAAU,CAAA,KAAA,EAAO,CAAC,MAAM,CAAG,EAAA;AAAA,IACjC,SAAY,GAAA;AACV,MAAI,GAAA,EAAA;AAAA,KACN;AAAA,IACA,OAAS,EAAA;AAAA,GACV,CAAA;AACH,CAAC,CAAA,GACD,QAAQ,OAAQ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"chainspec.mjs","sources":["../../src/chainspec.ts"],"sourcesContent":["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"],"names":[],"mappings":";;;AAUa,MAAA,kBAAA,GAAqB,CAAC,aAA2C,KAAA;AAC5E,EAAA,MAAM,OAAU,GAAA,kBAAA;AAAA,IACd,CACE,SACA,EAAA,OAAA,EACA,MACA,EAAA,MAAA,KACG,aAAc,CAAA,MAAA,EAAQ,MAAQ,EAAA,EAAE,SAAW,EAAA,OAAA,EAAS,CAAA;AAAA,GAC3D,CAAA;AACA,EAAA,IAAI,aAA+C,GAAA,IAAA,CAAA;AAEnD,EAAA,OAAO,YAAoC;AACzC,IAAA,IAAI,eAAsB,OAAA,aAAA,CAAA;AAC1B,IAAQ,OAAA,aAAA,GAAgB,QAAQ,GAAI,CAAA;AAAA,MAClC,OAAgB,CAAA,SAAA,CAAU,SAAW,EAAA,EAAE,CAAA;AAAA,MACvC,OAAgB,CAAA,SAAA,CAAU,WAAa,EAAA,EAAE,CAAA;AAAA,MACzC,OAAa,CAAA,SAAA,CAAU,UAAY,EAAA,EAAE,CAAA;AAAA,KACtC,EAAE,IAAK,CAAA,CAAC,CAAC,IAAM,EAAA,WAAA,EAAa,UAAU,CAAO,MAAA;AAAA,MAC5C,IAAA;AAAA,MACA,WAAA;AAAA,MACA,UAAA;AAAA,KACA,CAAA,CAAA,CAAA;AAAA,GACJ,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"chainspec.mjs","sources":["../../src/chainspec.ts"],"sourcesContent":["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"],"names":[],"mappings":";;;AAUa,MAAA,kBAAA,GAAqB,CAAC,aAA2C,KAAA;AAC5E,EAAA,MAAM,OAAU,GAAA,kBAAA;AAAA,IACd,CACE,SACA,EAAA,OAAA,EACA,MACA,EAAA,MAAA,KACG,aAAc,CAAA,MAAA,EAAQ,MAAQ,EAAA,EAAE,SAAW,EAAA,OAAA,EAAS;AAAA,GAC3D;AACA,EAAA,IAAI,aAA+C,GAAA,IAAA;AAEnD,EAAA,OAAO,YAAoC;AACzC,IAAA,IAAI,eAAsB,OAAA,aAAA;AAC1B,IAAQ,OAAA,aAAA,GAAgB,QAAQ,GAAI,CAAA;AAAA,MAClC,OAAgB,CAAA,SAAA,CAAU,SAAW,EAAA,EAAE,CAAA;AAAA,MACvC,OAAgB,CAAA,SAAA,CAAU,WAAa,EAAA,EAAE,CAAA;AAAA,MACzC,OAAa,CAAA,SAAA,CAAU,UAAY,EAAA,EAAE;AAAA,KACtC,EAAE,IAAK,CAAA,CAAC,CAAC,IAAM,EAAA,WAAA,EAAa,UAAU,CAAO,MAAA;AAAA,MAC5C,IAAA;AAAA,MACA,WAAA;AAAA,MACA;AAAA,KACA,CAAA,CAAA;AAAA,GACJ;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"DestroyedError.mjs","sources":["../../../src/client/DestroyedError.ts"],"sourcesContent":["export class DestroyedError extends Error {\n constructor() {\n super(\"Client destroyed\")\n this.name = \"DestroyedError\"\n }\n}\n"],"names":[],"mappings":"AAAO,MAAM,uBAAuB,KAAM,CAAA;AAAA,EACxC,WAAc,GAAA;AACZ,IAAA,KAAA,CAAM,kBAAkB,CAAA,CAAA;AACxB,IAAA,IAAA,CAAK,IAAO,GAAA,gBAAA,CAAA;AAAA,GACd;AACF;;;;"}
1
+ {"version":3,"file":"DestroyedError.mjs","sources":["../../../src/client/DestroyedError.ts"],"sourcesContent":["export class DestroyedError extends Error {\n constructor() {\n super(\"Client destroyed\")\n this.name = \"DestroyedError\"\n }\n}\n"],"names":[],"mappings":"AAAO,MAAM,uBAAuB,KAAM,CAAA;AAAA,EACxC,WAAc,GAAA;AACZ,IAAA,KAAA,CAAM,kBAAkB,CAAA;AACxB,IAAA,IAAA,CAAK,IAAO,GAAA,gBAAA;AAAA;AAEhB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"RpcError.mjs","sources":["../../../src/client/RpcError.ts"],"sourcesContent":["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"],"names":[],"mappings":";;;AAMO,MAAM,iBAAiB,KAA2B,CAAA;AAAA,EAGvD,YAAY,CAAc,EAAA;AACxB,IAAA,KAAA,CAAM,EAAE,OAAO,CAAA,CAAA;AAHjB,IAAA,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA,CAAA;AAGE,IAAA,IAAA,CAAK,OAAO,CAAE,CAAA,IAAA,CAAA;AACd,IAAA,IAAA,CAAK,OAAO,CAAE,CAAA,IAAA,CAAA;AACd,IAAA,IAAA,CAAK,IAAO,GAAA,UAAA,CAAA;AAAA,GACd;AACF;;;;"}
1
+ {"version":3,"file":"RpcError.mjs","sources":["../../../src/client/RpcError.ts"],"sourcesContent":["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"],"names":[],"mappings":";;;AAMO,MAAM,iBAAiB,KAA2B,CAAA;AAAA,EAGvD,YAAY,CAAc,EAAA;AACxB,IAAA,KAAA,CAAM,EAAE,OAAO,CAAA;AAHjB,IAAA,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AACA,IAAA,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAGE,IAAA,IAAA,CAAK,OAAO,CAAE,CAAA,IAAA;AACd,IAAA,IAAA,CAAK,OAAO,CAAE,CAAA,IAAA;AACd,IAAA,IAAA,CAAK,IAAO,GAAA,UAAA;AAAA;AAEhB;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"createClient.mjs","sources":["../../../src/client/createClient.ts"],"sourcesContent":["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"],"names":["subscriptionId"],"mappings":"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"}
1
+ {"version":3,"file":"createClient.mjs","sources":["../../../src/client/createClient.ts"],"sourcesContent":["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"],"names":["subscriptionId"],"mappings":";;;;;AA8BA,IAAI,YAAe,GAAA,CAAA;AACN,MAAA,YAAA,GAAe,CAAC,SAAuC,KAAA;AAClE,EAAA,IAAI,QAAW,GAAA,YAAA,EAAA;AACf,EAAM,MAAA,SAAA,uBAAgB,GAAuC,EAAA;AAC7D,EAAA,MAAM,gBAAgB,uBAAwB,EAAA;AAE9C,EAAA,IAAI,UAAuC,GAAA,IAAA;AAE3C,EAAA,MAAM,IAAO,GAAA,CACX,EACA,EAAA,MAAA,EACA,MACG,KAAA;AACH,IAAY,UAAA,CAAA,IAAA;AAAA,MACV,KAAK,SAAU,CAAA;AAAA,QACb,OAAS,EAAA,KAAA;AAAA,QACT,EAAA;AAAA,QACA,MAAA;AAAA,QACA;AAAA,OACD;AAAA,KACH;AAAA,GACF;AAEA,EAAA,SAAS,UAAU,OAAuB,EAAA;AACxC,IAAI,IAAA;AACF,MAAI,IAAA,EAAA,EACF,MACA,EAAA,KAAA,EACA,MACA,EAAA,YAAA;AAEF,MAAM,MAAA,MAAA,GAAS,IAAK,CAAA,KAAA,CAAM,OAAO,CAAA;AAChC,MAAA,CAAC,EAAE,EAAA,EAAI,MAAQ,EAAA,KAAA,EAAO,QAAW,GAAA,MAAA;AAElC,MAAA,IAAI,EAAI,EAAA;AACN,QAAM,MAAA,EAAA,GAAK,SAAU,CAAA,GAAA,CAAI,EAAE,CAAA;AAC3B,QAAA,IAAI,CAAC,EAAI,EAAA;AAET,QAAA,SAAA,CAAU,OAAO,EAAE,CAAA;AAEnB,QAAA,OAAO,KACH,GAAA,EAAA,CAAG,OAAQ,CAAA,IAAI,QAAS,CAAA,KAAK,CAAC,CAAA,GAC9B,EAAG,CAAA,SAAA,CAAU,MAAQ,EAAA,CAAC,UAAU,UAAe,KAAA;AAC7C,UAAA,MAAMA,eAAiB,GAAA,QAAA;AACvB,UAAc,aAAA,CAAA,SAAA,CAAUA,iBAAgB,UAAU,CAAA;AAClD,UAAA,OAAO,MAAM;AACX,YAAA,aAAA,CAAc,YAAYA,eAAc,CAAA;AAAA,WAC1C;AAAA,SACD,CAAA;AAAA;AAIP,MAAA;AAAC,MAAA,CAAC,EAAE,YAAA,EAAc,MAAQ,EAAA,KAAA,EAAU,GAAA,MAAA;AACpC,MAAI,IAAA,CAAC,YAAiB,IAAA,CAAC,KAAS,IAAA,CAAC,OAAO,MAAO,CAAA,MAAA,EAAQ,QAAQ,CAAA,EAAU,MAAA,CAAA;AAEzE,MAAA,MAAM,cAAiB,GAAA,YAAA;AAEvB,MAAA,IAAI,KAAO,EAAA;AACT,QAAA,aAAA,CAAc,KAAM,CAAA,cAAA,EAAgB,IAAI,QAAA,CAAS,KAAM,CAAC,CAAA;AAAA,OACnD,MAAA;AACL,QAAc,aAAA,CAAA,IAAA,CAAK,gBAAgB,MAAM,CAAA;AAAA;AAC3C,aACO,CAAG,EAAA;AACV,MAAQ,OAAA,CAAA,IAAA,CAAK,sCAAsC,OAAO,CAAA;AAC1D,MAAA,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA;AACjB;AAEF,EAAA,UAAA,GAAa,UAAU,SAAS,CAAA;AAEhC,EAAA,MAAM,aAAa,MAAM;AACvB,IAAA,UAAA,EAAY,UAAW,EAAA;AACvB,IAAa,UAAA,GAAA,IAAA;AACb,IAAc,aAAA,CAAA,QAAA,CAAS,IAAI,cAAA,EAAgB,CAAA;AAC3C,IAAU,SAAA,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA,CAAA,CAAE,QAAQ,IAAI,cAAA,EAAgB,CAAC,CAAA;AACxD,IAAA,SAAA,CAAU,KAAM,EAAA;AAAA,GAClB;AAEA,EAAA,IAAI,MAAS,GAAA,CAAA;AACb,EAAA,MAAM,OAAU,GAAA,CACd,MACA,EAAA,MAAA,EACA,EACkB,KAAA;AAClB,IAAA,IAAI,CAAC,UAAA,EAAkB,MAAA,IAAI,MAAM,eAAe,CAAA;AAChD,IAAA,MAAM,EAAK,GAAA,CAAA,EAAG,QAAQ,CAAA,CAAA,EAAI,MAAQ,EAAA,CAAA,CAAA;AAElC,IAAA,IAAI,EAAI,EAAA,SAAA,CAAU,GAAI,CAAA,EAAA,EAAI,EAAE,CAAA;AAC5B,IAAK,IAAA,CAAA,EAAA,EAAI,QAAQ,MAAM,CAAA;AAEvB,IAAA,OAAO,MAAY;AACjB,MAAA,SAAA,CAAU,OAAO,EAAE,CAAA;AAAA,KACrB;AAAA,GACF;AAEA,EAAO,OAAA;AAAA,IACL,OAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}
@@ -1,26 +1,8 @@
1
- import { getTransaction } from './transaction/transaction.mjs';
2
- export { DisjointError, OperationError, OperationInaccessibleError, OperationLimitError, StopError } from './chainhead/errors.mjs';
3
- import { getChainHead } from './chainhead/chainhead.mjs';
1
+ export { AbortError } from '@polkadot-api/utils';
4
2
  export { RpcError } from './client/RpcError.mjs';
5
- import { createClient as createClient$1 } from './client/createClient.mjs';
6
3
  export { DestroyedError } from './client/DestroyedError.mjs';
7
- import { abortablePromiseFn } from './internal-utils/abortablePromiseFn.mjs';
8
- import { createGetChainSpec } from './chainspec.mjs';
9
- export { AbortError } from '@polkadot-api/utils';
10
-
11
- const createClient = (provider) => {
12
- const { request, disconnect } = createClient$1(provider);
13
- return {
14
- chainHead: getChainHead(request),
15
- transaction: getTransaction(request),
16
- getChainSpecData: createGetChainSpec(request),
17
- destroy: disconnect,
18
- request: abortablePromiseFn(
19
- (onSuccess, onError, method, params) => request(method, params, { onSuccess, onError })
20
- ),
21
- _request: request
22
- };
23
- };
24
-
25
- export { createClient };
4
+ export { DisjointError, OperationError, OperationInaccessibleError, OperationLimitError, StopError } from './chainhead/errors.mjs';
5
+ import './methods.mjs';
6
+ export { BlockHashNotFoundError, CallError, StorageError } from './archive/errors.mjs';
7
+ export { createClient } from './substrate-client.mjs';
26
8
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../src/index.ts"],"sourcesContent":["import type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport { getTransaction } from \"./transaction/transaction\"\nimport { getChainHead } from \"./chainhead\"\nimport { ClientRequestCb, createClient as createRawClient } 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\"\n\nexport { AbortError } from \"@polkadot-api/utils\"\nexport type * from \"@polkadot-api/json-rpc-provider\"\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 { request, disconnect } = createRawClient(provider)\n return {\n chainHead: getChainHead(request),\n transaction: getTransaction(request),\n getChainSpecData: createGetChainSpec(request),\n destroy: disconnect,\n request: abortablePromiseFn(\n <T>(\n onSuccess: (value: T) => void,\n onError: (e: any) => void,\n method: string,\n params: any[],\n ) => request(method, params, { onSuccess, onError }),\n ),\n _request: request,\n }\n}\n"],"names":["createRawClient"],"mappings":";;;;;;;;;;AA6Ca,MAAA,YAAA,GAAe,CAAC,QAA+C,KAAA;AAC1E,EAAA,MAAM,EAAE,OAAA,EAAS,UAAW,EAAA,GAAIA,eAAgB,QAAQ,CAAA,CAAA;AACxD,EAAO,OAAA;AAAA,IACL,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,IAC/B,WAAA,EAAa,eAAe,OAAO,CAAA;AAAA,IACnC,gBAAA,EAAkB,mBAAmB,OAAO,CAAA;AAAA,IAC5C,OAAS,EAAA,UAAA;AAAA,IACT,OAAS,EAAA,kBAAA;AAAA,MACP,CACE,SACA,EAAA,OAAA,EACA,MACA,EAAA,MAAA,KACG,OAAQ,CAAA,MAAA,EAAQ,MAAQ,EAAA,EAAE,SAAW,EAAA,OAAA,EAAS,CAAA;AAAA,KACrD;AAAA,IACA,QAAU,EAAA,OAAA;AAAA,GACZ,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,4 +1,4 @@
1
- import { AbortError, noop } from '@polkadot-api/utils';
1
+ import { noop, AbortError } from '@polkadot-api/utils';
2
2
 
3
3
  const abortablePromiseFn = (fn) => (...args) => new Promise((res, rej) => {
4
4
  let cancel = noop;
@@ -1 +1 @@
1
- {"version":3,"file":"abortablePromiseFn.mjs","sources":["../../../src/internal-utils/abortablePromiseFn.ts"],"sourcesContent":["import { AbortError, noop } from \"@polkadot-api/utils\"\nimport { AbortablePromiseFn } from \"../common-types\"\n\nexport const abortablePromiseFn =\n <T, A extends Array<any>>(\n fn: (\n ...args: [...[res: (x: T) => void, rej: (e: any) => void], ...A]\n ) => () => void,\n ): AbortablePromiseFn<A, T> =>\n (...args): Promise<T> =>\n new Promise((res, rej) => {\n let cancel = noop\n\n const [actualArgs, abortSignal] =\n args[args.length - 1] instanceof AbortSignal\n ? ([args.slice(0, args.length - 1), args[args.length - 1]] as [\n A,\n AbortSignal,\n ])\n : ([args] as unknown as [A])\n\n const onAbort = () => {\n cancel()\n rej(new AbortError())\n }\n\n abortSignal?.addEventListener(\"abort\", onAbort, { once: true })\n\n const withCleanup =\n <T>(fn: (x: T) => void): ((x: T) => void) =>\n (x) => {\n cancel = noop\n abortSignal?.removeEventListener(\"abort\", onAbort)\n fn(x)\n }\n\n cancel = fn(...[withCleanup(res), withCleanup(rej), ...actualArgs])\n })\n"],"names":["fn"],"mappings":";;AAGa,MAAA,kBAAA,GACX,CACE,EAIF,KAAA,CAAA,GAAI,SACF,IAAI,OAAA,CAAQ,CAAC,GAAA,EAAK,GAAQ,KAAA;AACxB,EAAA,IAAI,MAAS,GAAA,IAAA,CAAA;AAEb,EAAM,MAAA,CAAC,UAAY,EAAA,WAAW,CAC5B,GAAA,IAAA,CAAK,KAAK,MAAS,GAAA,CAAC,CAAa,YAAA,WAAA,GAC5B,CAAC,IAAA,CAAK,MAAM,CAAG,EAAA,IAAA,CAAK,MAAS,GAAA,CAAC,CAAG,EAAA,IAAA,CAAK,IAAK,CAAA,MAAA,GAAS,CAAC,CAAC,CAItD,GAAA,CAAC,IAAI,CAAA,CAAA;AAEZ,EAAA,MAAM,UAAU,MAAM;AACpB,IAAO,MAAA,EAAA,CAAA;AACP,IAAI,GAAA,CAAA,IAAI,YAAY,CAAA,CAAA;AAAA,GACtB,CAAA;AAEA,EAAA,WAAA,EAAa,iBAAiB,OAAS,EAAA,OAAA,EAAS,EAAE,IAAA,EAAM,MAAM,CAAA,CAAA;AAE9D,EAAA,MAAM,WACJ,GAAA,CAAIA,GACJ,KAAA,CAAC,CAAM,KAAA;AACL,IAAS,MAAA,GAAA,IAAA,CAAA;AACT,IAAa,WAAA,EAAA,mBAAA,CAAoB,SAAS,OAAO,CAAA,CAAA;AACjD,IAAAA,IAAG,CAAC,CAAA,CAAA;AAAA,GACN,CAAA;AAEF,EAAS,MAAA,GAAA,EAAA,CAAG,GAAG,CAAC,WAAY,CAAA,GAAG,CAAG,EAAA,WAAA,CAAY,GAAG,CAAA,EAAG,GAAG,UAAU,CAAC,CAAA,CAAA;AACpE,CAAC;;;;"}
1
+ {"version":3,"file":"abortablePromiseFn.mjs","sources":["../../../src/internal-utils/abortablePromiseFn.ts"],"sourcesContent":["import { AbortError, noop } from \"@polkadot-api/utils\"\nimport { AbortablePromiseFn } from \"../common-types\"\n\nexport const abortablePromiseFn =\n <T, A extends Array<any>>(\n fn: (\n ...args: [...[res: (x: T) => void, rej: (e: any) => void], ...A]\n ) => () => void,\n ): AbortablePromiseFn<A, T> =>\n (...args): Promise<T> =>\n new Promise((res, rej) => {\n let cancel = noop\n\n const [actualArgs, abortSignal] =\n args[args.length - 1] instanceof AbortSignal\n ? ([args.slice(0, args.length - 1), args[args.length - 1]] as [\n A,\n AbortSignal,\n ])\n : ([args] as unknown as [A])\n\n const onAbort = () => {\n cancel()\n rej(new AbortError())\n }\n\n abortSignal?.addEventListener(\"abort\", onAbort, { once: true })\n\n const withCleanup =\n <T>(fn: (x: T) => void): ((x: T) => void) =>\n (x) => {\n cancel = noop\n abortSignal?.removeEventListener(\"abort\", onAbort)\n fn(x)\n }\n\n cancel = fn(...[withCleanup(res), withCleanup(rej), ...actualArgs])\n })\n"],"names":["fn"],"mappings":";;AAGa,MAAA,kBAAA,GACX,CACE,EAIF,KAAA,CAAA,GAAI,SACF,IAAI,OAAA,CAAQ,CAAC,GAAA,EAAK,GAAQ,KAAA;AACxB,EAAA,IAAI,MAAS,GAAA,IAAA;AAEb,EAAM,MAAA,CAAC,UAAY,EAAA,WAAW,CAC5B,GAAA,IAAA,CAAK,KAAK,MAAS,GAAA,CAAC,CAAa,YAAA,WAAA,GAC5B,CAAC,IAAA,CAAK,MAAM,CAAG,EAAA,IAAA,CAAK,MAAS,GAAA,CAAC,CAAG,EAAA,IAAA,CAAK,IAAK,CAAA,MAAA,GAAS,CAAC,CAAC,CAItD,GAAA,CAAC,IAAI,CAAA;AAEZ,EAAA,MAAM,UAAU,MAAM;AACpB,IAAO,MAAA,EAAA;AACP,IAAI,GAAA,CAAA,IAAI,YAAY,CAAA;AAAA,GACtB;AAEA,EAAA,WAAA,EAAa,iBAAiB,OAAS,EAAA,OAAA,EAAS,EAAE,IAAA,EAAM,MAAM,CAAA;AAE9D,EAAA,MAAM,WACJ,GAAA,CAAIA,GACJ,KAAA,CAAC,CAAM,KAAA;AACL,IAAS,MAAA,GAAA,IAAA;AACT,IAAa,WAAA,EAAA,mBAAA,CAAoB,SAAS,OAAO,CAAA;AACjD,IAAAA,IAAG,CAAC,CAAA;AAAA,GACN;AAEF,EAAS,MAAA,GAAA,EAAA,CAAG,GAAG,CAAC,WAAY,CAAA,GAAG,CAAG,EAAA,WAAA,CAAY,GAAG,CAAA,EAAG,GAAG,UAAU,CAAC,CAAA;AACpE,CAAC;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"deferred-promise.mjs","sources":["../../../src/internal-utils/deferred-promise.ts"],"sourcesContent":["export interface DeferredPromise<T> {\n promise: Promise<T>\n res: (value: T) => void\n rej: (err: Error) => void\n}\n\nexport function deferred<T>(): DeferredPromise<T> {\n let res: (value: T) => void = () => {}\n let rej: (err: Error) => void = () => {}\n\n const promise = new Promise<T>((_res, _rej) => {\n res = _res\n rej = _rej\n })\n\n return { promise, res, rej }\n}\n"],"names":[],"mappings":"AAMO,SAAS,QAAkC,GAAA;AAChD,EAAA,IAAI,MAA0B,MAAM;AAAA,GAAC,CAAA;AACrC,EAAA,IAAI,MAA4B,MAAM;AAAA,GAAC,CAAA;AAEvC,EAAA,MAAM,OAAU,GAAA,IAAI,OAAW,CAAA,CAAC,MAAM,IAAS,KAAA;AAC7C,IAAM,GAAA,GAAA,IAAA,CAAA;AACN,IAAM,GAAA,GAAA,IAAA,CAAA;AAAA,GACP,CAAA,CAAA;AAED,EAAO,OAAA,EAAE,OAAS,EAAA,GAAA,EAAK,GAAI,EAAA,CAAA;AAC7B;;;;"}
1
+ {"version":3,"file":"deferred-promise.mjs","sources":["../../../src/internal-utils/deferred-promise.ts"],"sourcesContent":["export interface DeferredPromise<T> {\n promise: Promise<T>\n res: (value: T) => void\n rej: (err: Error) => void\n}\n\nexport function deferred<T>(): DeferredPromise<T> {\n let res: (value: T) => void = () => {}\n let rej: (err: Error) => void = () => {}\n\n const promise = new Promise<T>((_res, _rej) => {\n res = _res\n rej = _rej\n })\n\n return { promise, res, rej }\n}\n"],"names":[],"mappings":"AAMO,SAAS,QAAkC,GAAA;AAChD,EAAA,IAAI,MAA0B,MAAM;AAAA,GAAC;AACrC,EAAA,IAAI,MAA4B,MAAM;AAAA,GAAC;AAEvC,EAAA,MAAM,OAAU,GAAA,IAAI,OAAW,CAAA,CAAC,MAAM,IAAS,KAAA;AAC7C,IAAM,GAAA,GAAA,IAAA;AACN,IAAM,GAAA,GAAA,IAAA;AAAA,GACP,CAAA;AAED,EAAO,OAAA,EAAE,OAAS,EAAA,GAAA,EAAK,GAAI,EAAA;AAC7B;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"subscriptions-manager.mjs","sources":["../../../src/internal-utils/subscriptions-manager.ts"],"sourcesContent":["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"],"names":[],"mappings":"AAKO,MAAM,0BAA0B,MAAS;AAC9C,EAAM,MAAA,aAAA,uBAAoB,GAA2B,EAAA,CAAA;AAErD,EAAO,OAAA;AAAA,IACL,GAAK,EAAA,aAAA,CAAc,GAAI,CAAA,IAAA,CAAK,aAAa,CAAA;AAAA,IACzC,SAAA,CAAU,IAAY,UAA2B,EAAA;AAC/C,MAAc,aAAA,CAAA,GAAA,CAAI,IAAI,UAAU,CAAA,CAAA;AAAA,KAClC;AAAA,IACA,YAAY,EAAY,EAAA;AACtB,MAAA,aAAA,CAAc,OAAO,EAAE,CAAA,CAAA;AAAA,KACzB;AAAA,IACA,IAAA,CAAK,IAAY,IAAS,EAAA;AACxB,MAAA,aAAA,CAAc,GAAI,CAAA,EAAE,CAAG,EAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AAAA,KAClC;AAAA,IACA,KAAA,CAAM,IAAY,CAAU,EAAA;AAC1B,MAAM,MAAA,UAAA,GAAa,aAAc,CAAA,GAAA,CAAI,EAAE,CAAA,CAAA;AACvC,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,aAAA,CAAc,OAAO,EAAE,CAAA,CAAA;AACvB,QAAA,UAAA,CAAW,MAAM,CAAC,CAAA,CAAA;AAAA,OACpB;AAAA,KACF;AAAA,IACA,SAAS,CAAU,EAAA;AACjB,MAAA,MAAM,WAAc,GAAA,CAAC,GAAG,aAAA,CAAc,QAAQ,CAAA,CAAA;AAC9C,MAAA,aAAA,CAAc,KAAM,EAAA,CAAA;AACpB,MAAY,WAAA,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACzB,QAAA,CAAA,CAAE,MAAM,CAAC,CAAA,CAAA;AAAA,OACV,CAAA,CAAA;AAAA,KACH;AAAA,GACF,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"subscriptions-manager.mjs","sources":["../../../src/internal-utils/subscriptions-manager.ts"],"sourcesContent":["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"],"names":[],"mappings":"AAKO,MAAM,0BAA0B,MAAS;AAC9C,EAAM,MAAA,aAAA,uBAAoB,GAA2B,EAAA;AAErD,EAAO,OAAA;AAAA,IACL,GAAK,EAAA,aAAA,CAAc,GAAI,CAAA,IAAA,CAAK,aAAa,CAAA;AAAA,IACzC,SAAA,CAAU,IAAY,UAA2B,EAAA;AAC/C,MAAc,aAAA,CAAA,GAAA,CAAI,IAAI,UAAU,CAAA;AAAA,KAClC;AAAA,IACA,YAAY,EAAY,EAAA;AACtB,MAAA,aAAA,CAAc,OAAO,EAAE,CAAA;AAAA,KACzB;AAAA,IACA,IAAA,CAAK,IAAY,IAAS,EAAA;AACxB,MAAA,aAAA,CAAc,GAAI,CAAA,EAAE,CAAG,EAAA,IAAA,CAAK,IAAI,CAAA;AAAA,KAClC;AAAA,IACA,KAAA,CAAM,IAAY,CAAU,EAAA;AAC1B,MAAM,MAAA,UAAA,GAAa,aAAc,CAAA,GAAA,CAAI,EAAE,CAAA;AACvC,MAAA,IAAI,UAAY,EAAA;AACd,QAAA,aAAA,CAAc,OAAO,EAAE,CAAA;AACvB,QAAA,UAAA,CAAW,MAAM,CAAC,CAAA;AAAA;AACpB,KACF;AAAA,IACA,SAAS,CAAU,EAAA;AACjB,MAAA,MAAM,WAAc,GAAA,CAAC,GAAG,aAAA,CAAc,QAAQ,CAAA;AAC9C,MAAA,aAAA,CAAc,KAAM,EAAA;AACpB,MAAY,WAAA,CAAA,OAAA,CAAQ,CAAC,CAAM,KAAA;AACzB,QAAA,CAAA,CAAE,MAAM,CAAC,CAAA;AAAA,OACV,CAAA;AAAA;AACH,GACF;AACF;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"methods.mjs","sources":["../../src/methods.ts"],"sourcesContent":["const chainHead = {\n body: \"\",\n call: \"\",\n continue: \"\",\n follow: \"\",\n header: \"\",\n stopOperation: \"\",\n storage: \"\",\n unfollow: \"\",\n unpin: \"\",\n followEvent: \"\",\n}\n\nconst chainSpec = {\n chainName: \"\",\n genesisHash: \"\",\n properties: \"\",\n}\n\nconst transaction = {\n broadcast: \"\",\n stop: \"\",\n}\n\nObject.entries({ chainHead, chainSpec, transaction }).forEach(\n ([fnGroupName, methods]) => {\n Object.keys(methods).forEach((methodName) => {\n ;(methods as any)[methodName] = `${fnGroupName}_v1_${methodName}`\n })\n },\n)\n\nexport { chainHead, transaction, chainSpec }\n"],"names":[],"mappings":"AAAA,MAAM,SAAY,GAAA;AAAA,EAChB,IAAM,EAAA,EAAA;AAAA,EACN,IAAM,EAAA,EAAA;AAAA,EACN,QAAU,EAAA,EAAA;AAAA,EACV,MAAQ,EAAA,EAAA;AAAA,EACR,MAAQ,EAAA,EAAA;AAAA,EACR,aAAe,EAAA,EAAA;AAAA,EACf,OAAS,EAAA,EAAA;AAAA,EACT,QAAU,EAAA,EAAA;AAAA,EACV,KAAO,EAAA,EAAA;AAAA,EACP,WAAa,EAAA,EAAA;AACf,EAAA;AAEA,MAAM,SAAY,GAAA;AAAA,EAChB,SAAW,EAAA,EAAA;AAAA,EACX,WAAa,EAAA,EAAA;AAAA,EACb,UAAY,EAAA,EAAA;AACd,EAAA;AAEA,MAAM,WAAc,GAAA;AAAA,EAClB,SAAW,EAAA,EAAA;AAAA,EACX,IAAM,EAAA,EAAA;AACR,EAAA;AAEA,MAAA,CAAO,QAAQ,EAAE,SAAA,EAAW,SAAW,EAAA,WAAA,EAAa,CAAE,CAAA,OAAA;AAAA,EACpD,CAAC,CAAC,WAAa,EAAA,OAAO,CAAM,KAAA;AAC1B,IAAA,MAAA,CAAO,IAAK,CAAA,OAAO,CAAE,CAAA,OAAA,CAAQ,CAAC,UAAe,KAAA;AAC1C,MAAC,QAAgB,UAAU,CAAA,GAAI,CAAG,EAAA,WAAW,OAAO,UAAU,CAAA,CAAA,CAAA;AAAA,KAChE,CAAA,CAAA;AAAA,GACH;AACF,CAAA;;;;"}
1
+ {"version":3,"file":"methods.mjs","sources":["../../src/methods.ts"],"sourcesContent":["const chainHead = {\n body: \"\",\n call: \"\",\n continue: \"\",\n follow: \"\",\n header: \"\",\n stopOperation: \"\",\n storage: \"\",\n unfollow: \"\",\n unpin: \"\",\n followEvent: \"\",\n}\n\nconst chainSpec = {\n chainName: \"\",\n genesisHash: \"\",\n properties: \"\",\n}\n\nconst transaction = {\n broadcast: \"\",\n stop: \"\",\n}\n\nObject.entries({ chainHead, chainSpec, transaction }).forEach(\n ([fnGroupName, methods]) => {\n Object.keys(methods).forEach((methodName) => {\n ;(methods as any)[methodName] = `${fnGroupName}_v1_${methodName}`\n })\n },\n)\n\nexport { chainHead, transaction, chainSpec }\n"],"names":[],"mappings":"AAAA,MAAM,SAAY,GAAA;AAAA,EAChB,IAAM,EAAA,EAAA;AAAA,EACN,IAAM,EAAA,EAAA;AAAA,EACN,QAAU,EAAA,EAAA;AAAA,EACV,MAAQ,EAAA,EAAA;AAAA,EACR,MAAQ,EAAA,EAAA;AAAA,EACR,aAAe,EAAA,EAAA;AAAA,EACf,OAAS,EAAA,EAAA;AAAA,EACT,QAAU,EAAA,EAAA;AAAA,EACV,KAAO,EAAA,EAAA;AAAA,EACP,WAAa,EAAA;AACf;AAEA,MAAM,SAAY,GAAA;AAAA,EAChB,SAAW,EAAA,EAAA;AAAA,EACX,WAAa,EAAA,EAAA;AAAA,EACb,UAAY,EAAA;AACd;AAEA,MAAM,WAAc,GAAA;AAAA,EAClB,SAAW,EAAA,EAAA;AAAA,EACX,IAAM,EAAA;AACR;AAEA,MAAA,CAAO,QAAQ,EAAE,SAAA,EAAW,SAAW,EAAA,WAAA,EAAa,CAAE,CAAA,OAAA;AAAA,EACpD,CAAC,CAAC,WAAa,EAAA,OAAO,CAAM,KAAA;AAC1B,IAAA,MAAA,CAAO,IAAK,CAAA,OAAO,CAAE,CAAA,OAAA,CAAQ,CAAC,UAAe,KAAA;AAC1C,MAAC,QAAgB,UAAU,CAAA,GAAI,CAAG,EAAA,WAAW,OAAO,UAAU,CAAA,CAAA;AAAA,KAChE,CAAA;AAAA;AAEL,CAAA;;;;"}
@@ -0,0 +1,41 @@
1
+ import { getTransaction } from './transaction/transaction.mjs';
2
+ import { getChainHead } from './chainhead/chainhead.mjs';
3
+ import { createClient as createClient$1 } from './client/createClient.mjs';
4
+ import { abortablePromiseFn } from './internal-utils/abortablePromiseFn.mjs';
5
+ import { createGetChainSpec } from './chainspec.mjs';
6
+ import { getArchive } from './archive/archive.mjs';
7
+
8
+ const clientCache = /* @__PURE__ */ new Map();
9
+ const createClient = (provider) => {
10
+ const cached = clientCache.get(provider);
11
+ if (cached) {
12
+ cached.refCount++;
13
+ return cached.client;
14
+ }
15
+ const { request, disconnect } = createClient$1(provider);
16
+ const destroy = () => {
17
+ const cached2 = clientCache.get(provider);
18
+ if (!cached2 || cached2.refCount <= 1) {
19
+ clientCache.delete(provider);
20
+ disconnect();
21
+ } else {
22
+ cached2.refCount--;
23
+ }
24
+ };
25
+ const client = {
26
+ archive: getArchive(request),
27
+ chainHead: getChainHead(request),
28
+ transaction: getTransaction(request),
29
+ getChainSpecData: createGetChainSpec(request),
30
+ destroy,
31
+ request: abortablePromiseFn(
32
+ (onSuccess, onError, method, params) => request(method, params, { onSuccess, onError })
33
+ ),
34
+ _request: request
35
+ };
36
+ clientCache.set(provider, { client, refCount: 1 });
37
+ return client;
38
+ };
39
+
40
+ export { createClient };
41
+ //# sourceMappingURL=substrate-client.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"substrate-client.mjs","sources":["../../src/substrate-client.ts"],"sourcesContent":["import type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport { getTransaction } from \"./transaction/transaction\"\nimport { getChainHead } from \"./chainhead\"\nimport { ClientRequestCb, createClient as createRawClient } 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 { Archive, getArchive } from \"./archive\"\n\nexport interface SubstrateClient {\n archive: Archive\n chainHead: ChainHead\n transaction: Transaction\n destroy: UnsubscribeFn\n getChainSpecData: () => Promise<ChainSpecData>\n request: <T>(\n method: string,\n params: any[],\n abortSignal?: AbortSignal,\n ) => Promise<T>\n _request: <Reply, Notification>(\n method: string,\n params: any[],\n cb?: ClientRequestCb<Reply, Notification>,\n ) => UnsubscribeFn\n}\n\nconst clientCache = new Map<\n JsonRpcProvider,\n { client: SubstrateClient; refCount: number }\n>()\n\nexport const createClient = (provider: JsonRpcProvider): SubstrateClient => {\n const cached = clientCache.get(provider)\n if (cached) {\n cached.refCount++\n return cached.client\n }\n\n const { request, disconnect } = createRawClient(provider)\n const destroy = () => {\n const cached = clientCache.get(provider)\n if (!cached || cached.refCount <= 1) {\n clientCache.delete(provider)\n disconnect()\n } else {\n cached.refCount--\n }\n }\n const client: SubstrateClient = {\n archive: getArchive(request),\n chainHead: getChainHead(request),\n transaction: getTransaction(request),\n getChainSpecData: createGetChainSpec(request),\n destroy,\n request: abortablePromiseFn(\n <T>(\n onSuccess: (value: T) => void,\n onError: (e: any) => void,\n method: string,\n params: any[],\n ) => request(method, params, { onSuccess, onError }),\n ),\n _request: request,\n }\n clientCache.set(provider, { client, refCount: 1 })\n return client\n}\n"],"names":["createRawClient","cached"],"mappings":";;;;;;;AA6BA,MAAM,WAAA,uBAAkB,GAGtB,EAAA;AAEW,MAAA,YAAA,GAAe,CAAC,QAA+C,KAAA;AAC1E,EAAM,MAAA,MAAA,GAAS,WAAY,CAAA,GAAA,CAAI,QAAQ,CAAA;AACvC,EAAA,IAAI,MAAQ,EAAA;AACV,IAAO,MAAA,CAAA,QAAA,EAAA;AACP,IAAA,OAAO,MAAO,CAAA,MAAA;AAAA;AAGhB,EAAA,MAAM,EAAE,OAAA,EAAS,UAAW,EAAA,GAAIA,eAAgB,QAAQ,CAAA;AACxD,EAAA,MAAM,UAAU,MAAM;AACpB,IAAMC,MAAAA,OAAAA,GAAS,WAAY,CAAA,GAAA,CAAI,QAAQ,CAAA;AACvC,IAAA,IAAI,CAACA,OAAAA,IAAUA,OAAO,CAAA,QAAA,IAAY,CAAG,EAAA;AACnC,MAAA,WAAA,CAAY,OAAO,QAAQ,CAAA;AAC3B,MAAW,UAAA,EAAA;AAAA,KACN,MAAA;AACL,MAAAA,OAAO,CAAA,QAAA,EAAA;AAAA;AACT,GACF;AACA,EAAA,MAAM,MAA0B,GAAA;AAAA,IAC9B,OAAA,EAAS,WAAW,OAAO,CAAA;AAAA,IAC3B,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,IAC/B,WAAA,EAAa,eAAe,OAAO,CAAA;AAAA,IACnC,gBAAA,EAAkB,mBAAmB,OAAO,CAAA;AAAA,IAC5C,OAAA;AAAA,IACA,OAAS,EAAA,kBAAA;AAAA,MACP,CACE,SACA,EAAA,OAAA,EACA,MACA,EAAA,MAAA,KACG,OAAQ,CAAA,MAAA,EAAQ,MAAQ,EAAA,EAAE,SAAW,EAAA,OAAA,EAAS;AAAA,KACrD;AAAA,IACA,QAAU,EAAA;AAAA,GACZ;AACA,EAAA,WAAA,CAAY,IAAI,QAAU,EAAA,EAAE,MAAQ,EAAA,QAAA,EAAU,GAAG,CAAA;AACjD,EAAO,OAAA,MAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.mjs","sources":["../../../src/transaction/transaction.ts"],"sourcesContent":["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"],"names":[],"mappings":";;;;AAIO,MAAM,cACX,GAAA,CAAC,OACD,KAAA,CAAC,IAAY,KAA8B,KAAA;AACzC,EAAA,IAAI,SAAS,OAAQ,CAAA,WAAA,CAAY,SAAW,EAAA,CAAC,EAAE,CAAG,EAAA;AAAA,IAChD,SAAA,EAAW,CAAC,cAAmB,KAAA;AAC7B,MACE,MAAA,GAAA,cAAA,KAAmB,IACf,GAAA,IAAA,GACA,MAAM;AACJ,QAAA,OAAA,CAAQ,WAAY,CAAA,IAAA,EAAM,CAAC,cAAc,CAAC,CAAA,CAAA;AAAA,OAC5C,CAAA;AAEN,MAAA,IAAI,mBAAmB,IAAM,EAAA;AAC3B,QAAM,KAAA,CAAA,IAAI,KAAM,CAAA,oDAAoD,CAAC,CAAA,CAAA;AAAA,OACvE;AAAA,KACF;AAAA,IACA,OAAS,EAAA,KAAA;AAAA,GACV,CAAA,CAAA;AAED,EAAA,OAAO,MAAM;AACX,IAAO,MAAA,EAAA,CAAA;AAAA,GACT,CAAA;AACF;;;;"}
1
+ {"version":3,"file":"transaction.mjs","sources":["../../../src/transaction/transaction.ts"],"sourcesContent":["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"],"names":[],"mappings":";;;;AAIO,MAAM,cACX,GAAA,CAAC,OACD,KAAA,CAAC,IAAY,KAA8B,KAAA;AACzC,EAAA,IAAI,SAAS,OAAQ,CAAA,WAAA,CAAY,SAAW,EAAA,CAAC,EAAE,CAAG,EAAA;AAAA,IAChD,SAAA,EAAW,CAAC,cAAmB,KAAA;AAC7B,MACE,MAAA,GAAA,cAAA,KAAmB,IACf,GAAA,IAAA,GACA,MAAM;AACJ,QAAA,OAAA,CAAQ,WAAY,CAAA,IAAA,EAAM,CAAC,cAAc,CAAC,CAAA;AAAA,OAC5C;AAEN,MAAA,IAAI,mBAAmB,IAAM,EAAA;AAC3B,QAAM,KAAA,CAAA,IAAI,KAAM,CAAA,oDAAoD,CAAC,CAAA;AAAA;AACvE,KACF;AAAA,IACA,OAAS,EAAA;AAAA,GACV,CAAA;AAED,EAAA,OAAO,MAAM;AACX,IAAO,MAAA,EAAA;AAAA,GACT;AACF;;;;"}