@polkadot-api/substrate-client 0.1.3 → 0.2.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 (50) hide show
  1. package/dist/esm/chainhead/body.mjs +15 -0
  2. package/dist/esm/chainhead/body.mjs.map +1 -0
  3. package/dist/esm/chainhead/call.mjs +15 -0
  4. package/dist/esm/chainhead/call.mjs.map +1 -0
  5. package/dist/esm/chainhead/chainhead.mjs +145 -0
  6. package/dist/esm/chainhead/chainhead.mjs.map +1 -0
  7. package/dist/esm/chainhead/errors.mjs +33 -0
  8. package/dist/esm/chainhead/errors.mjs.map +1 -0
  9. package/dist/esm/chainhead/header.mjs +11 -0
  10. package/dist/esm/chainhead/header.mjs.map +1 -0
  11. package/dist/esm/chainhead/operation-promise.mjs +58 -0
  12. package/dist/esm/chainhead/operation-promise.mjs.map +1 -0
  13. package/dist/esm/chainhead/storage-subscription.mjs +72 -0
  14. package/dist/esm/chainhead/storage-subscription.mjs.map +1 -0
  15. package/dist/esm/chainhead/storage.mjs +42 -0
  16. package/dist/esm/chainhead/storage.mjs.map +1 -0
  17. package/dist/esm/chainhead/unpin.mjs +13 -0
  18. package/dist/esm/chainhead/unpin.mjs.map +1 -0
  19. package/dist/esm/chainspec.mjs +24 -0
  20. package/dist/esm/chainspec.mjs.map +1 -0
  21. package/dist/esm/client/DestroyedError.mjs +9 -0
  22. package/dist/esm/client/DestroyedError.mjs.map +1 -0
  23. package/dist/esm/client/RpcError.mjs +16 -0
  24. package/dist/esm/client/RpcError.mjs.map +1 -0
  25. package/dist/esm/client/createClient.mjs +78 -0
  26. package/dist/esm/client/createClient.mjs.map +1 -0
  27. package/dist/esm/index.mjs +26 -0
  28. package/dist/esm/index.mjs.map +1 -0
  29. package/dist/esm/internal-utils/abortablePromiseFn.mjs +20 -0
  30. package/dist/esm/internal-utils/abortablePromiseFn.mjs.map +1 -0
  31. package/dist/esm/internal-utils/deferred-promise.mjs +14 -0
  32. package/dist/esm/internal-utils/deferred-promise.mjs.map +1 -0
  33. package/dist/esm/internal-utils/noop.mjs +5 -0
  34. package/dist/esm/internal-utils/noop.mjs.map +1 -0
  35. package/dist/esm/internal-utils/subscriptions-manager.mjs +32 -0
  36. package/dist/esm/internal-utils/subscriptions-manager.mjs.map +1 -0
  37. package/dist/esm/methods.mjs +31 -0
  38. package/dist/esm/methods.mjs.map +1 -0
  39. package/dist/esm/transaction/transaction.mjs +23 -0
  40. package/dist/esm/transaction/transaction.mjs.map +1 -0
  41. package/dist/index.d.ts +2 -3
  42. package/dist/index.js +73 -182
  43. package/dist/index.js.map +1 -1
  44. package/package.json +10 -12
  45. package/dist/index.d.mts +0 -237
  46. package/dist/index.mjs +0 -684
  47. package/dist/index.mjs.map +0 -1
  48. package/dist/min/index.d.ts +0 -237
  49. package/dist/min/index.js +0 -2
  50. package/dist/min/index.js.map +0 -1
package/dist/index.js CHANGED
@@ -1,57 +1,23 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
7
- var __export = (target, all) => {
8
- for (var name in all)
9
- __defProp(target, name, { get: all[name], enumerable: true });
10
- };
11
- var __copyProps = (to, from, except, desc) => {
12
- if (from && typeof from === "object" || typeof from === "function") {
13
- for (let key of __getOwnPropNames(from))
14
- if (!__hasOwnProp.call(to, key) && key !== except)
15
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
- }
17
- return to;
18
- };
19
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
20
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
1
+ 'use strict';
21
2
 
22
- // src/index.ts
23
- var src_exports = {};
24
- __export(src_exports, {
25
- DestroyedError: () => DestroyedError,
26
- DisjointError: () => DisjointError,
27
- OperationError: () => OperationError,
28
- OperationInaccessibleError: () => OperationInaccessibleError,
29
- OperationLimitError: () => OperationLimitError,
30
- RpcError: () => RpcError,
31
- StopError: () => StopError,
32
- createClient: () => createClient2
33
- });
34
- module.exports = __toCommonJS(src_exports);
3
+ var utils = require('@polkadot-api/utils');
35
4
 
36
- // src/internal-utils/abortablePromiseFn.ts
37
- var import_utils = require("@polkadot-api/utils");
38
- var abortablePromiseFn = (fn) => (...args) => new Promise((res, rej) => {
39
- let cancel = import_utils.noop;
5
+ const abortablePromiseFn = (fn) => (...args) => new Promise((res, rej) => {
6
+ let cancel = utils.noop;
40
7
  const [actualArgs, abortSignal] = args[args.length - 1] instanceof AbortSignal ? [args.slice(0, args.length - 1), args[args.length - 1]] : [args];
41
8
  const onAbort = () => {
42
9
  cancel();
43
- rej(new import_utils.AbortError());
10
+ rej(new utils.AbortError());
44
11
  };
45
12
  abortSignal?.addEventListener("abort", onAbort, { once: true });
46
13
  const withCleanup = (fn2) => (x) => {
47
- cancel = import_utils.noop;
14
+ cancel = utils.noop;
48
15
  abortSignal?.removeEventListener("abort", onAbort);
49
16
  fn2(x);
50
17
  };
51
18
  cancel = fn(...[withCleanup(res), withCleanup(rej), ...actualArgs]);
52
19
  });
53
20
 
54
- // src/internal-utils/deferred-promise.ts
55
21
  function deferred() {
56
22
  let res = () => {
57
23
  };
@@ -64,12 +30,10 @@ function deferred() {
64
30
  return { promise, res, rej };
65
31
  }
66
32
 
67
- // src/internal-utils/noop.ts
68
- var noop2 = () => {
33
+ const noop = () => {
69
34
  };
70
35
 
71
- // src/internal-utils/subscriptions-manager.ts
72
- var getSubscriptionsManager = () => {
36
+ const getSubscriptionsManager = () => {
73
37
  const subscriptions = /* @__PURE__ */ new Map();
74
38
  return {
75
39
  has: subscriptions.has.bind(subscriptions),
@@ -99,8 +63,7 @@ var getSubscriptionsManager = () => {
99
63
  };
100
64
  };
101
65
 
102
- // src/methods.ts
103
- var chainHead = {
66
+ const chainHead = {
104
67
  body: "",
105
68
  call: "",
106
69
  continue: "",
@@ -112,33 +75,27 @@ var chainHead = {
112
75
  unpin: "",
113
76
  followEvent: ""
114
77
  };
115
- var chainSpec = {
78
+ const chainSpec = {
116
79
  chainName: "",
117
80
  genesisHash: "",
118
81
  properties: ""
119
82
  };
120
- var transaction = {
83
+ const transaction = {
121
84
  broadcast: "",
122
85
  stop: ""
123
86
  };
124
- var transactionWatch = {
125
- submitAndWatch: "",
126
- unwatch: ""
127
- };
128
- Object.entries({ chainHead, chainSpec, transaction, transactionWatch }).forEach(
87
+ Object.entries({ chainHead, chainSpec, transaction }).forEach(
129
88
  ([fnGroupName, methods]) => {
130
89
  Object.keys(methods).forEach((methodName) => {
131
- ;
132
90
  methods[methodName] = `${fnGroupName}_v1_${methodName}`;
133
91
  });
134
92
  }
135
93
  );
136
94
 
137
- // src/transaction/transaction.ts
138
- var getTransaction = (request) => (tx, error) => {
95
+ const getTransaction = (request) => (tx, error) => {
139
96
  let cancel = request(transaction.broadcast, [tx], {
140
97
  onSuccess: (subscriptionId) => {
141
- cancel = subscriptionId === null ? noop2 : () => {
98
+ cancel = subscriptionId === null ? noop : () => {
142
99
  request(transaction.stop, [subscriptionId]);
143
100
  };
144
101
  if (subscriptionId === null) {
@@ -152,40 +109,38 @@ var getTransaction = (request) => (tx, error) => {
152
109
  };
153
110
  };
154
111
 
155
- // src/chainhead/errors.ts
156
- var StopError = class extends Error {
112
+ class StopError extends Error {
157
113
  constructor() {
158
114
  super("ChainHead stopped");
159
115
  this.name = "StopError";
160
116
  }
161
- };
162
- var DisjointError = class extends Error {
117
+ }
118
+ class DisjointError extends Error {
163
119
  constructor() {
164
120
  super("ChainHead disjointed");
165
121
  this.name = "DisjointError";
166
122
  }
167
- };
168
- var OperationLimitError = class extends Error {
123
+ }
124
+ class OperationLimitError extends Error {
169
125
  constructor() {
170
126
  super("ChainHead operations limit reached");
171
127
  this.name = "OperationLimitError";
172
128
  }
173
- };
174
- var OperationError = class extends Error {
129
+ }
130
+ class OperationError extends Error {
175
131
  constructor(error) {
176
132
  super(error);
177
133
  this.name = "OperationError";
178
134
  }
179
- };
180
- var OperationInaccessibleError = class extends Error {
135
+ }
136
+ class OperationInaccessibleError extends Error {
181
137
  constructor() {
182
138
  super("ChainHead operation inaccessible");
183
139
  this.name = "OperationInaccessibleError";
184
140
  }
185
- };
141
+ }
186
142
 
187
- // src/chainhead/operation-promise.ts
188
- var createOperationPromise = (operationName, factory) => (request) => abortablePromiseFn((res, rej, ...args) => {
143
+ const createOperationPromise = (operationName, factory) => (request) => abortablePromiseFn((res, rej, ...args) => {
189
144
  let isRunning = true;
190
145
  let cancel = () => {
191
146
  isRunning = false;
@@ -200,7 +155,7 @@ var createOperationPromise = (operationName, factory) => (request) => abortableP
200
155
  request(chainHead.stopOperation, [operationId]);
201
156
  };
202
157
  if (!isRunning) return stopOperation();
203
- let done = noop2;
158
+ let done = noop;
204
159
  const _res = (x) => {
205
160
  isRunning = false;
206
161
  done();
@@ -236,8 +191,7 @@ var createOperationPromise = (operationName, factory) => (request) => abortableP
236
191
  };
237
192
  });
238
193
 
239
- // src/chainhead/body.ts
240
- var createBodyFn = createOperationPromise(
194
+ const createBodyFn = createOperationPromise(
241
195
  chainHead.body,
242
196
  (hash) => [
243
197
  [hash],
@@ -247,8 +201,7 @@ var createBodyFn = createOperationPromise(
247
201
  ]
248
202
  );
249
203
 
250
- // src/chainhead/call.ts
251
- var createCallFn = createOperationPromise(
204
+ const createCallFn = createOperationPromise(
252
205
  chainHead.call,
253
206
  (hash, fnName, callParameters) => [
254
207
  [hash, fnName, callParameters],
@@ -258,20 +211,17 @@ var createCallFn = createOperationPromise(
258
211
  ]
259
212
  );
260
213
 
261
- // src/chainhead/header.ts
262
- var createHeaderFn = (request) => (hash) => new Promise((res, rej) => {
214
+ const createHeaderFn = (request) => (hash) => new Promise((res, rej) => {
263
215
  request(chainHead.header, [hash], {
264
216
  onSuccess: res,
265
217
  onError: rej
266
218
  });
267
219
  });
268
220
 
269
- // src/chainhead/storage-subscription.ts
270
- var import_utils2 = require("@polkadot-api/utils");
271
- var createStorageCb = (request) => (hash, inputs, childTrie, onItems, onError, onDone, onDiscardedItems) => {
221
+ const createStorageCb = (request) => (hash, inputs, childTrie, onItems, onError, onDone, onDiscardedItems) => {
272
222
  if (inputs.length === 0) {
273
223
  onDone();
274
- return import_utils2.noop;
224
+ return utils.noop;
275
225
  }
276
226
  let isRunning = true;
277
227
  let cancel = () => {
@@ -316,12 +266,12 @@ var createStorageCb = (request) => (hash, inputs, childTrie, onItems, onError, o
316
266
  request(chainHead.stopOperation, [response.operationId]);
317
267
  };
318
268
  const _onError = (e) => {
319
- cancel = import_utils2.noop;
269
+ cancel = utils.noop;
320
270
  doneListening();
321
271
  onError(e);
322
272
  };
323
273
  const _onDone = () => {
324
- cancel = import_utils2.noop;
274
+ cancel = utils.noop;
325
275
  doneListening();
326
276
  onDone();
327
277
  };
@@ -334,8 +284,7 @@ var createStorageCb = (request) => (hash, inputs, childTrie, onItems, onError, o
334
284
  };
335
285
  };
336
286
 
337
- // src/chainhead/storage.ts
338
- var createStorageFn = (request) => {
287
+ const createStorageFn = (request) => {
339
288
  const cbStore = createStorageCb(request);
340
289
  return abortablePromiseFn((resolve, reject, hash, type, key, childTrie) => {
341
290
  const isDescendants = type.startsWith("descendants");
@@ -369,8 +318,7 @@ var createStorageFn = (request) => {
369
318
  });
370
319
  };
371
320
 
372
- // src/chainhead/unpin.ts
373
- var createUnpinFn = (request) => (hashes) => hashes.length > 0 ? new Promise((res, rej) => {
321
+ const createUnpinFn = (request) => (hashes) => hashes.length > 0 ? new Promise((res, rej) => {
374
322
  request(chainHead.unpin, [hashes], {
375
323
  onSuccess() {
376
324
  res();
@@ -379,15 +327,13 @@ var createUnpinFn = (request) => (hashes) => hashes.length > 0 ? new Promise((re
379
327
  });
380
328
  }) : Promise.resolve();
381
329
 
382
- // src/client/DestroyedError.ts
383
- var DestroyedError = class extends Error {
330
+ class DestroyedError extends Error {
384
331
  constructor() {
385
332
  super("Client destroyed");
386
333
  this.name = "DestroyedError";
387
334
  }
388
- };
335
+ }
389
336
 
390
- // src/chainhead/chainhead.ts
391
337
  function isOperationEvent(event) {
392
338
  return event.operationId !== void 0;
393
339
  }
@@ -407,7 +353,7 @@ function getChainHead(request) {
407
353
  if (event.event === "initialized") {
408
354
  return onFollowEvent({
409
355
  type: event.event,
410
- finalizedBlockHashes: "finalizedBlockHash" in event ? [event.finalizedBlockHash] : event.finalizedBlockHashes,
356
+ finalizedBlockHashes: event.finalizedBlockHashes,
411
357
  finalizedBlockRuntime: event.finalizedBlockRuntime
412
358
  });
413
359
  }
@@ -428,7 +374,7 @@ function getChainHead(request) {
428
374
  });
429
375
  unfollow = (sendUnfollow = true) => {
430
376
  followSubscription = null;
431
- unfollow = noop2;
377
+ unfollow = noop;
432
378
  done();
433
379
  sendUnfollow && request(chainHead.unfollow, [subscriptionId]);
434
380
  subscriptions.errorAll(new DisjointError());
@@ -460,7 +406,7 @@ function getChainHead(request) {
460
406
  };
461
407
  if (followSubscription === null) {
462
408
  disjoint();
463
- return noop2;
409
+ return noop;
464
410
  }
465
411
  const onSubscription = (subscription) => {
466
412
  if (!cb) return request(method, [subscription, ...params]);
@@ -468,7 +414,7 @@ function getChainHead(request) {
468
414
  const onSubscribeOperation = (operationId, subscriber) => {
469
415
  if (followSubscription === null) {
470
416
  subscriber.error(new DisjointError());
471
- return noop2;
417
+ return noop;
472
418
  }
473
419
  subscriptions.subscribe(operationId, subscriber);
474
420
  return () => {
@@ -492,7 +438,7 @@ function getChainHead(request) {
492
438
  };
493
439
  if (typeof followSubscription === "string")
494
440
  return onSubscription(followSubscription);
495
- let onCancel = noop2;
441
+ let onCancel = noop;
496
442
  followSubscription.then((x) => {
497
443
  if (x instanceof Error) return disjoint();
498
444
  if (followSubscription) onCancel = onSubscription(x);
@@ -517,8 +463,10 @@ function getChainHead(request) {
517
463
  };
518
464
  }
519
465
 
520
- // src/client/RpcError.ts
521
- var RpcError = class extends Error {
466
+ var __defProp = Object.defineProperty;
467
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
468
+ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
469
+ class RpcError extends Error {
522
470
  constructor(e) {
523
471
  super(e.message);
524
472
  __publicField(this, "code");
@@ -527,11 +475,10 @@ var RpcError = class extends Error {
527
475
  this.data = e.data;
528
476
  this.name = "RpcError";
529
477
  }
530
- };
478
+ }
531
479
 
532
- // src/client/createClient.ts
533
- var nextClientId = 1;
534
- var createClient = (gProvider) => {
480
+ let nextClientId = 1;
481
+ const createClient$1 = (gProvider) => {
535
482
  let clientId = nextClientId++;
536
483
  const responses = /* @__PURE__ */ new Map();
537
484
  const subscriptions = getSubscriptionsManager();
@@ -601,8 +548,7 @@ var createClient = (gProvider) => {
601
548
  };
602
549
  };
603
550
 
604
- // src/chainspec.ts
605
- var createGetChainSpec = (clientRequest) => {
551
+ const createGetChainSpec = (clientRequest) => {
606
552
  const request = abortablePromiseFn(
607
553
  (onSuccess, onError, method, params) => clientRequest(method, params, { onSuccess, onError })
608
554
  );
@@ -621,85 +567,30 @@ var createGetChainSpec = (clientRequest) => {
621
567
  };
622
568
  };
623
569
 
624
- // src/request-compatibility-enhancer.ts
625
- var getCompatibilityEnhancer = (rpcMethodsP, request) => (methods) => {
626
- let translations = {};
627
- let enhancedRequest = null;
628
- return (method, ...rest) => {
629
- if (enhancedRequest) return enhancedRequest(method, ...rest);
630
- let isRunning = true;
631
- let cleanup = () => {
632
- isRunning = false;
633
- };
634
- rpcMethodsP.then((rpcMethods) => {
635
- enhancedRequest = (method_, ...iRest) => {
636
- const method2 = translations[method_] ?? method_;
637
- if (rpcMethods.has(method2)) return request(method2, ...iRest);
638
- iRest[1]?.onError(new Error(`Unsupported method ${method2}`));
639
- return noop2;
640
- };
641
- if (rpcMethods.has(method)) return;
642
- const parts = method.split("_");
643
- if (parts[1] !== "v1") return;
644
- parts[1] = "unstable";
645
- if (rpcMethods.has(parts.join("_")))
646
- Object.values(methods).forEach((value) => {
647
- translations[value] = value.replace("_v1_", "_unstable_");
648
- });
649
- else if (parts[0] === "transaction") {
650
- let unwatch;
651
- let version;
652
- const txGroup = ["transactionWatch", "transaction"].find(
653
- (group) => {
654
- version = ["v1", "unstable"].find(
655
- (v) => rpcMethods.has(unwatch = `${group}_${v}_unwatch`)
656
- );
657
- return !!version;
658
- }
659
- );
660
- if (txGroup) {
661
- translations[methods.broadcast] = `${txGroup}_${version}_submitAndWatch`;
662
- translations[methods.stop] = unwatch;
663
- }
664
- }
665
- }).then(() => {
666
- if (isRunning) cleanup = enhancedRequest(method, ...rest);
667
- });
668
- return () => {
669
- cleanup();
670
- };
671
- };
672
- };
673
-
674
- // src/index.ts
675
- var createClient2 = (provider) => {
676
- const client = createClient(provider);
677
- const request = abortablePromiseFn(
678
- (onSuccess, onError, method, params) => client.request(method, params, { onSuccess, onError })
679
- );
680
- const rpcMethods = request("rpc_methods", []).then(
681
- (x) => new Set(Array.isArray(x) ? x : x.methods),
682
- () => /* @__PURE__ */ new Set()
683
- );
684
- const compatibilityEnhancer = getCompatibilityEnhancer(
685
- rpcMethods,
686
- client.request
687
- );
570
+ const createClient = (provider) => {
571
+ const { request, disconnect } = createClient$1(provider);
688
572
  return {
689
- chainHead: getChainHead(
690
- compatibilityEnhancer(chainHead)
573
+ chainHead: getChainHead(request),
574
+ transaction: getTransaction(request),
575
+ getChainSpecData: createGetChainSpec(request),
576
+ destroy: disconnect,
577
+ request: abortablePromiseFn(
578
+ (onSuccess, onError, method, params) => request(method, params, { onSuccess, onError })
691
579
  ),
692
- transaction: getTransaction(
693
- compatibilityEnhancer(transaction)
694
- ),
695
- getChainSpecData: createGetChainSpec(
696
- compatibilityEnhancer(chainSpec)
697
- ),
698
- destroy: () => {
699
- client.disconnect();
700
- },
701
- request,
702
- _request: client.request
580
+ _request: request
703
581
  };
704
582
  };
705
- //# sourceMappingURL=index.js.map
583
+
584
+ Object.defineProperty(exports, "AbortError", {
585
+ enumerable: true,
586
+ get: function () { return utils.AbortError; }
587
+ });
588
+ exports.DestroyedError = DestroyedError;
589
+ exports.DisjointError = DisjointError;
590
+ exports.OperationError = OperationError;
591
+ exports.OperationInaccessibleError = OperationInaccessibleError;
592
+ exports.OperationLimitError = OperationLimitError;
593
+ exports.RpcError = RpcError;
594
+ exports.StopError = StopError;
595
+ exports.createClient = createClient;
596
+ //# sourceMappingURL=index.js.map