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