@polkadot-api/substrate-client 0.4.1 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/archive/archive.mjs.map +1 -1
- package/dist/esm/archive/errors.mjs.map +1 -1
- package/dist/esm/archive/storage-subscription.mjs.map +1 -1
- package/dist/esm/archive/storage.mjs.map +1 -1
- package/dist/esm/chainhead/body.mjs.map +1 -1
- package/dist/esm/chainhead/call.mjs.map +1 -1
- package/dist/esm/chainhead/chainhead.mjs +50 -48
- package/dist/esm/chainhead/chainhead.mjs.map +1 -1
- package/dist/esm/chainhead/errors.mjs.map +1 -1
- package/dist/esm/chainhead/header.mjs.map +1 -1
- package/dist/esm/chainhead/operation-promise.mjs.map +1 -1
- package/dist/esm/chainhead/storage-subscription.mjs.map +1 -1
- package/dist/esm/chainhead/storage.mjs.map +1 -1
- package/dist/esm/chainhead/unpin.mjs.map +1 -1
- package/dist/esm/chainspec.mjs.map +1 -1
- package/dist/esm/index.mjs +1 -2
- package/dist/esm/index.mjs.map +1 -1
- package/dist/esm/internal-utils/abortablePromiseFn.mjs.map +1 -1
- package/dist/esm/internal-utils/deferred-promise.mjs.map +1 -1
- package/dist/esm/methods.mjs.map +1 -1
- package/dist/esm/substrate-client.mjs +1 -1
- package/dist/esm/substrate-client.mjs.map +1 -1
- package/dist/esm/transaction/transaction.mjs.map +1 -1
- package/dist/index.d.ts +5 -33
- package/dist/index.js +87 -200
- package/dist/index.js.map +1 -1
- package/package.json +2 -1
- package/dist/esm/client/DestroyedError.mjs +0 -9
- package/dist/esm/client/DestroyedError.mjs.map +0 -1
- package/dist/esm/client/RpcError.mjs +0 -16
- package/dist/esm/client/RpcError.mjs.map +0 -1
- package/dist/esm/client/createClient.mjs +0 -79
- package/dist/esm/client/createClient.mjs.map +0 -1
- package/dist/esm/internal-utils/subscriptions-manager.mjs +0 -32
- package/dist/esm/internal-utils/subscriptions-manager.mjs.map +0 -1
package/dist/index.js
CHANGED
|
@@ -1,18 +1,36 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var utils = require('@polkadot-api/utils');
|
|
4
|
+
var rawClient = require('@polkadot-api/raw-client');
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
this.
|
|
15
|
-
|
|
6
|
+
class StopError extends Error {
|
|
7
|
+
constructor() {
|
|
8
|
+
super("ChainHead stopped");
|
|
9
|
+
this.name = "StopError";
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
class DisjointError extends Error {
|
|
13
|
+
constructor() {
|
|
14
|
+
super("ChainHead disjointed");
|
|
15
|
+
this.name = "DisjointError";
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
class OperationLimitError extends Error {
|
|
19
|
+
constructor() {
|
|
20
|
+
super("ChainHead operations limit reached");
|
|
21
|
+
this.name = "OperationLimitError";
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
class OperationError extends Error {
|
|
25
|
+
constructor(error) {
|
|
26
|
+
super(error);
|
|
27
|
+
this.name = "OperationError";
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
class OperationInaccessibleError extends Error {
|
|
31
|
+
constructor() {
|
|
32
|
+
super("ChainHead operation inaccessible");
|
|
33
|
+
this.name = "OperationInaccessibleError";
|
|
16
34
|
}
|
|
17
35
|
}
|
|
18
36
|
|
|
@@ -47,146 +65,6 @@ function deferred() {
|
|
|
47
65
|
const noop = () => {
|
|
48
66
|
};
|
|
49
67
|
|
|
50
|
-
const getSubscriptionsManager = () => {
|
|
51
|
-
const subscriptions = /* @__PURE__ */ new Map();
|
|
52
|
-
return {
|
|
53
|
-
has: subscriptions.has.bind(subscriptions),
|
|
54
|
-
subscribe(id, subscriber) {
|
|
55
|
-
subscriptions.set(id, subscriber);
|
|
56
|
-
},
|
|
57
|
-
unsubscribe(id) {
|
|
58
|
-
subscriptions.delete(id);
|
|
59
|
-
},
|
|
60
|
-
next(id, data) {
|
|
61
|
-
subscriptions.get(id)?.next(data);
|
|
62
|
-
},
|
|
63
|
-
error(id, e) {
|
|
64
|
-
const subscriber = subscriptions.get(id);
|
|
65
|
-
if (subscriber) {
|
|
66
|
-
subscriptions.delete(id);
|
|
67
|
-
subscriber.error(e);
|
|
68
|
-
}
|
|
69
|
-
},
|
|
70
|
-
errorAll(e) {
|
|
71
|
-
const subscribers = [...subscriptions.values()];
|
|
72
|
-
subscriptions.clear();
|
|
73
|
-
subscribers.forEach((s) => {
|
|
74
|
-
s.error(e);
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
};
|
|
78
|
-
};
|
|
79
|
-
|
|
80
|
-
class DestroyedError extends Error {
|
|
81
|
-
constructor() {
|
|
82
|
-
super("Client destroyed");
|
|
83
|
-
this.name = "DestroyedError";
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
let nextClientId = 1;
|
|
88
|
-
const createClient$1 = (gProvider) => {
|
|
89
|
-
let clientId = nextClientId++;
|
|
90
|
-
const responses = /* @__PURE__ */ new Map();
|
|
91
|
-
const subscriptions = getSubscriptionsManager();
|
|
92
|
-
let connection = null;
|
|
93
|
-
const send = (id, method, params) => {
|
|
94
|
-
connection.send(
|
|
95
|
-
JSON.stringify({
|
|
96
|
-
jsonrpc: "2.0",
|
|
97
|
-
id,
|
|
98
|
-
method,
|
|
99
|
-
params
|
|
100
|
-
})
|
|
101
|
-
);
|
|
102
|
-
};
|
|
103
|
-
function onMessage(message) {
|
|
104
|
-
try {
|
|
105
|
-
let id, result, error, params, subscription;
|
|
106
|
-
const parsed = JSON.parse(message);
|
|
107
|
-
({ id, result, error, params } = parsed);
|
|
108
|
-
if (id === null) throw new Error(params?.error?.message ?? "id null");
|
|
109
|
-
if (id != null) {
|
|
110
|
-
const cb = responses.get(id);
|
|
111
|
-
if (!cb) return;
|
|
112
|
-
responses.delete(id);
|
|
113
|
-
return error ? cb.onError(new RpcError(error)) : cb.onSuccess(result, (opaqueId, subscriber) => {
|
|
114
|
-
const subscriptionId2 = opaqueId;
|
|
115
|
-
subscriptions.subscribe(subscriptionId2, subscriber);
|
|
116
|
-
return () => {
|
|
117
|
-
subscriptions.unsubscribe(subscriptionId2);
|
|
118
|
-
};
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
;
|
|
122
|
-
({ subscription, result, error } = params);
|
|
123
|
-
if (!subscription || !error && !Object.hasOwn(params, "result")) throw 0;
|
|
124
|
-
const subscriptionId = subscription;
|
|
125
|
-
if (error) {
|
|
126
|
-
subscriptions.error(subscriptionId, new RpcError(error));
|
|
127
|
-
} else {
|
|
128
|
-
subscriptions.next(subscriptionId, result);
|
|
129
|
-
}
|
|
130
|
-
} catch (e) {
|
|
131
|
-
console.warn("Error parsing incomming message: " + message);
|
|
132
|
-
console.error(e);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
connection = gProvider(onMessage);
|
|
136
|
-
const disconnect = () => {
|
|
137
|
-
connection?.disconnect();
|
|
138
|
-
connection = null;
|
|
139
|
-
subscriptions.errorAll(new DestroyedError());
|
|
140
|
-
responses.forEach((r) => r.onError(new DestroyedError()));
|
|
141
|
-
responses.clear();
|
|
142
|
-
};
|
|
143
|
-
let nextId = 1;
|
|
144
|
-
const request = (method, params, cb) => {
|
|
145
|
-
if (!connection) throw new Error("Not connected");
|
|
146
|
-
const id = `${clientId}-${nextId++}`;
|
|
147
|
-
if (cb) responses.set(id, cb);
|
|
148
|
-
send(id, method, params);
|
|
149
|
-
return () => {
|
|
150
|
-
responses.delete(id);
|
|
151
|
-
};
|
|
152
|
-
};
|
|
153
|
-
return {
|
|
154
|
-
request,
|
|
155
|
-
disconnect
|
|
156
|
-
};
|
|
157
|
-
};
|
|
158
|
-
|
|
159
|
-
class StopError extends Error {
|
|
160
|
-
constructor() {
|
|
161
|
-
super("ChainHead stopped");
|
|
162
|
-
this.name = "StopError";
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
class DisjointError extends Error {
|
|
166
|
-
constructor() {
|
|
167
|
-
super("ChainHead disjointed");
|
|
168
|
-
this.name = "DisjointError";
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
class OperationLimitError extends Error {
|
|
172
|
-
constructor() {
|
|
173
|
-
super("ChainHead operations limit reached");
|
|
174
|
-
this.name = "OperationLimitError";
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
class OperationError extends Error {
|
|
178
|
-
constructor(error) {
|
|
179
|
-
super(error);
|
|
180
|
-
this.name = "OperationError";
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
class OperationInaccessibleError extends Error {
|
|
184
|
-
constructor() {
|
|
185
|
-
super("ChainHead operation inaccessible");
|
|
186
|
-
this.name = "OperationInaccessibleError";
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
68
|
const chainHead = {
|
|
191
69
|
body: "",
|
|
192
70
|
call: "",
|
|
@@ -408,67 +286,71 @@ function isOperationEvent(event) {
|
|
|
408
286
|
}
|
|
409
287
|
function getChainHead(request) {
|
|
410
288
|
return (withRuntime, onFollowEvent, onFollowError) => {
|
|
411
|
-
const subscriptions = getSubscriptionsManager();
|
|
289
|
+
const subscriptions = rawClient.getSubscriptionsManager();
|
|
412
290
|
const ongoingRequests = /* @__PURE__ */ new Set();
|
|
413
291
|
const deferredFollow = deferred();
|
|
414
292
|
let followSubscription = deferredFollow.promise;
|
|
293
|
+
let stopListeningToFollowEvents = noop;
|
|
294
|
+
const unfollowRequest = (subscriptionId) => {
|
|
295
|
+
request(chainHead.unfollow, [subscriptionId]);
|
|
296
|
+
};
|
|
297
|
+
const stopEverything = (sendUnfollow) => {
|
|
298
|
+
stopListeningToFollowEvents();
|
|
299
|
+
if (followSubscription === null) return;
|
|
300
|
+
if (sendUnfollow) {
|
|
301
|
+
if (followSubscription instanceof Promise) {
|
|
302
|
+
followSubscription.then((x) => {
|
|
303
|
+
if (typeof x === "string") unfollowRequest(x);
|
|
304
|
+
});
|
|
305
|
+
} else unfollowRequest(followSubscription);
|
|
306
|
+
}
|
|
307
|
+
followSubscription = null;
|
|
308
|
+
ongoingRequests.forEach((cb) => {
|
|
309
|
+
cb();
|
|
310
|
+
});
|
|
311
|
+
ongoingRequests.clear();
|
|
312
|
+
subscriptions.errorAll(new DisjointError());
|
|
313
|
+
};
|
|
415
314
|
const onAllFollowEventsNext = (event) => {
|
|
416
315
|
if (isOperationEvent(event)) {
|
|
417
316
|
if (!subscriptions.has(event.operationId))
|
|
418
317
|
console.warn("Uknown operationId on", event);
|
|
419
318
|
return subscriptions.next(event.operationId, event);
|
|
420
319
|
}
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
320
|
+
switch (event.event) {
|
|
321
|
+
case "stop":
|
|
322
|
+
onFollowError(new StopError());
|
|
323
|
+
return stopEverything(false);
|
|
324
|
+
case "initialized":
|
|
325
|
+
case "newBlock":
|
|
326
|
+
case "bestBlockChanged":
|
|
327
|
+
case "finalized":
|
|
328
|
+
const { event: type, ...rest } = event;
|
|
329
|
+
return onFollowEvent({ type, ...rest });
|
|
431
330
|
}
|
|
432
|
-
|
|
433
|
-
unfollow(false);
|
|
331
|
+
console.warn("Invalid event", event);
|
|
434
332
|
};
|
|
435
333
|
const onAllFollowEventsError = (error) => {
|
|
436
334
|
onFollowError(error);
|
|
437
|
-
|
|
335
|
+
stopEverything(!(error instanceof rawClient.DestroyedError));
|
|
438
336
|
};
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
337
|
+
request(chainHead.follow, [withRuntime], {
|
|
338
|
+
onSuccess: (subscriptionId, follow) => {
|
|
339
|
+
if (followSubscription instanceof Promise) {
|
|
340
|
+
followSubscription = subscriptionId;
|
|
341
|
+
stopListeningToFollowEvents = follow(subscriptionId, {
|
|
342
|
+
next: onAllFollowEventsNext,
|
|
343
|
+
error: onAllFollowEventsError
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
deferredFollow.res(subscriptionId);
|
|
347
|
+
},
|
|
348
|
+
onError: (e) => {
|
|
445
349
|
followSubscription = null;
|
|
446
|
-
|
|
447
|
-
done();
|
|
448
|
-
sendUnfollow && request(chainHead.unfollow, [subscriptionId]);
|
|
449
|
-
subscriptions.errorAll(new DisjointError());
|
|
450
|
-
ongoingRequests.forEach((cb) => {
|
|
451
|
-
cb();
|
|
452
|
-
});
|
|
453
|
-
ongoingRequests.clear();
|
|
454
|
-
};
|
|
455
|
-
followSubscription = subscriptionId;
|
|
456
|
-
deferredFollow.res(subscriptionId);
|
|
457
|
-
};
|
|
458
|
-
const onFollowRequestError = (e) => {
|
|
459
|
-
if (e instanceof DestroyedError) {
|
|
460
|
-
unfollow(false);
|
|
461
|
-
} else {
|
|
350
|
+
deferredFollow.res(e);
|
|
462
351
|
onFollowError(e);
|
|
463
352
|
}
|
|
464
|
-
|
|
465
|
-
deferredFollow.res(e);
|
|
466
|
-
};
|
|
467
|
-
let unfollow = request(
|
|
468
|
-
chainHead.follow,
|
|
469
|
-
[withRuntime],
|
|
470
|
-
{ onSuccess: onFollowRequestSuccess, onError: onFollowRequestError }
|
|
471
|
-
);
|
|
353
|
+
});
|
|
472
354
|
const fRequest = (method, params, cb) => {
|
|
473
355
|
const disjoint = () => {
|
|
474
356
|
cb?.onError(new DisjointError());
|
|
@@ -518,8 +400,7 @@ function getChainHead(request) {
|
|
|
518
400
|
};
|
|
519
401
|
return {
|
|
520
402
|
unfollow() {
|
|
521
|
-
|
|
522
|
-
followSubscription = null;
|
|
403
|
+
stopEverything(true);
|
|
523
404
|
},
|
|
524
405
|
body: createBodyFn(fRequest),
|
|
525
406
|
call: createCallFn(fRequest),
|
|
@@ -711,7 +592,7 @@ const createClient = (provider) => {
|
|
|
711
592
|
cached.refCount++;
|
|
712
593
|
return cached.client;
|
|
713
594
|
}
|
|
714
|
-
const { request, disconnect } = createClient
|
|
595
|
+
const { request, disconnect } = rawClient.createClient(provider);
|
|
715
596
|
const destroy = () => {
|
|
716
597
|
const cached2 = clientCache.get(provider);
|
|
717
598
|
if (!cached2 || cached2.refCount <= 1) {
|
|
@@ -740,14 +621,20 @@ Object.defineProperty(exports, "AbortError", {
|
|
|
740
621
|
enumerable: true,
|
|
741
622
|
get: function () { return utils.AbortError; }
|
|
742
623
|
});
|
|
624
|
+
Object.defineProperty(exports, "DestroyedError", {
|
|
625
|
+
enumerable: true,
|
|
626
|
+
get: function () { return rawClient.DestroyedError; }
|
|
627
|
+
});
|
|
628
|
+
Object.defineProperty(exports, "RpcError", {
|
|
629
|
+
enumerable: true,
|
|
630
|
+
get: function () { return rawClient.RpcError; }
|
|
631
|
+
});
|
|
743
632
|
exports.BlockHashNotFoundError = BlockHashNotFoundError;
|
|
744
633
|
exports.CallError = CallError;
|
|
745
|
-
exports.DestroyedError = DestroyedError;
|
|
746
634
|
exports.DisjointError = DisjointError;
|
|
747
635
|
exports.OperationError = OperationError;
|
|
748
636
|
exports.OperationInaccessibleError = OperationInaccessibleError;
|
|
749
637
|
exports.OperationLimitError = OperationLimitError;
|
|
750
|
-
exports.RpcError = RpcError;
|
|
751
638
|
exports.StopError = StopError;
|
|
752
639
|
exports.StorageError = StorageError;
|
|
753
640
|
exports.createClient = createClient;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/client/RpcError.ts","../src/internal-utils/abortablePromiseFn.ts","../src/internal-utils/deferred-promise.ts","../src/internal-utils/noop.ts","../src/internal-utils/subscriptions-manager.ts","../src/client/DestroyedError.ts","../src/client/createClient.ts","../src/chainhead/errors.ts","../src/methods.ts","../src/chainhead/operation-promise.ts","../src/chainhead/body.ts","../src/chainhead/call.ts","../src/chainhead/header.ts","../src/chainhead/storage-subscription.ts","../src/chainhead/storage.ts","../src/chainhead/unpin.ts","../src/chainhead/chainhead.ts","../src/archive/errors.ts","../src/archive/storage-subscription.ts","../src/archive/storage.ts","../src/archive/archive.ts","../src/transaction/transaction.ts","../src/chainspec.ts","../src/substrate-client.ts"],"sourcesContent":["export interface IRpcError {\n code: number\n message: string\n data?: any\n}\n\nexport class RpcError extends Error implements IRpcError {\n code\n data\n constructor(e: IRpcError) {\n super(e.message)\n this.code = e.code\n this.data = e.data\n this.name = \"RpcError\"\n }\n}\n","import { AbortError, noop } from \"@polkadot-api/utils\"\nimport { AbortablePromiseFn } from \"../common-types\"\n\nexport const abortablePromiseFn =\n <T, A extends Array<any>>(\n fn: (\n ...args: [...[res: (x: T) => void, rej: (e: any) => void], ...A]\n ) => () => void,\n ): AbortablePromiseFn<A, T> =>\n (...args): Promise<T> =>\n new Promise((res, rej) => {\n let cancel = noop\n\n const [actualArgs, abortSignal] =\n args[args.length - 1] instanceof AbortSignal\n ? ([args.slice(0, args.length - 1), args[args.length - 1]] as [\n A,\n AbortSignal,\n ])\n : ([args] as unknown as [A])\n\n const onAbort = () => {\n cancel()\n rej(new AbortError())\n }\n\n abortSignal?.addEventListener(\"abort\", onAbort, { once: true })\n\n const withCleanup =\n <T>(fn: (x: T) => void): ((x: T) => void) =>\n (x) => {\n cancel = noop\n abortSignal?.removeEventListener(\"abort\", onAbort)\n fn(x)\n }\n\n cancel = fn(...[withCleanup(res), withCleanup(rej), ...actualArgs])\n })\n","export interface DeferredPromise<T> {\n promise: Promise<T>\n res: (value: T) => void\n rej: (err: Error) => void\n}\n\nexport function deferred<T>(): DeferredPromise<T> {\n let res: (value: T) => void = () => {}\n let rej: (err: Error) => void = () => {}\n\n const promise = new Promise<T>((_res, _rej) => {\n res = _res\n rej = _rej\n })\n\n return { promise, res, rej }\n}\n","export const noop = (): void => {}\n","export interface Subscriber<T> {\n next: (data: T) => void\n error: (e: Error) => void\n}\n\nexport const getSubscriptionsManager = <T>() => {\n const subscriptions = new Map<string, Subscriber<T>>()\n\n return {\n has: subscriptions.has.bind(subscriptions),\n subscribe(id: string, subscriber: Subscriber<T>) {\n subscriptions.set(id, subscriber)\n },\n unsubscribe(id: string) {\n subscriptions.delete(id)\n },\n next(id: string, data: T) {\n subscriptions.get(id)?.next(data)\n },\n error(id: string, e: Error) {\n const subscriber = subscriptions.get(id)\n if (subscriber) {\n subscriptions.delete(id)\n subscriber.error(e)\n }\n },\n errorAll(e: Error) {\n const subscribers = [...subscriptions.values()]\n subscriptions.clear()\n subscribers.forEach((s) => {\n s.error(e)\n })\n },\n }\n}\n\nexport type SubscriptionManager<T> = ReturnType<\n typeof getSubscriptionsManager<T>\n>\n","export class DestroyedError extends Error {\n constructor() {\n super(\"Client destroyed\")\n this.name = \"DestroyedError\"\n }\n}\n","import type {\n JsonRpcConnection,\n JsonRpcProvider,\n} from \"@polkadot-api/json-rpc-provider\"\nimport { UnsubscribeFn } from \"../common-types\"\nimport { RpcError, IRpcError } from \"./RpcError\"\nimport { getSubscriptionsManager, Subscriber } from \"@/internal-utils\"\nimport { DestroyedError } from \"./DestroyedError\"\n\nexport type FollowSubscriptionCb<T> = (\n subscriptionId: string,\n cb: Subscriber<T>,\n) => UnsubscribeFn\n\nexport type ClientRequestCb<T, TT> = {\n onSuccess: (result: T, followSubscription: FollowSubscriptionCb<TT>) => void\n onError: (e: Error) => void\n}\n\nexport type ClientRequest<T, TT> = (\n method: string,\n params: Array<any>,\n cb?: ClientRequestCb<T, TT>,\n) => UnsubscribeFn\n\nexport interface Client {\n disconnect: () => void\n request: ClientRequest<any, any>\n}\n\nlet nextClientId = 1\nexport const createClient = (gProvider: JsonRpcProvider): Client => {\n let clientId = nextClientId++\n const responses = new Map<string, ClientRequestCb<any, any>>()\n const subscriptions = getSubscriptionsManager()\n\n let connection: JsonRpcConnection | null = null\n\n const send = (\n id: string,\n method: string,\n params: Array<boolean | string | number | null>,\n ) => {\n connection!.send(\n JSON.stringify({\n jsonrpc: \"2.0\",\n id,\n method,\n params,\n }),\n )\n }\n\n function onMessage(message: string): void {\n try {\n let id: string,\n result,\n error: IRpcError | undefined,\n params: { subscription: any; result: any; error?: IRpcError },\n subscription: string\n\n const parsed = JSON.parse(message)\n ;({ id, result, error, params } = parsed)\n\n if (id === null) throw new Error(params?.error?.message ?? \"id null\")\n\n if (id != null) {\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","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","const chainHead = {\n body: \"\",\n call: \"\",\n continue: \"\",\n follow: \"\",\n header: \"\",\n stopOperation: \"\",\n storage: \"\",\n unfollow: \"\",\n unpin: \"\",\n followEvent: \"\",\n}\n\nconst chainSpec = {\n chainName: \"\",\n genesisHash: \"\",\n properties: \"\",\n}\n\nconst transaction = {\n broadcast: \"\",\n stop: \"\",\n}\n\nObject.entries({ chainHead, chainSpec, transaction }).forEach(\n ([fnGroupName, methods]) => {\n Object.keys(methods).forEach((methodName) => {\n ;(methods as any)[methodName] = `${fnGroupName}_v1_${methodName}`\n })\n },\n)\n\nexport { chainHead, transaction, chainSpec }\n","import { abortablePromiseFn, noop } from \"@/internal-utils\"\nimport {\n CommonOperationEventsRpc,\n OperationResponseRpc,\n} from \"./json-rpc-types\"\nimport {\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./errors\"\nimport { ClientInnerRequest } from \"./public-types\"\nimport { chainHead } from \"@/methods\"\n\nexport const createOperationPromise =\n <I extends { operationId: string; event: string }, O, A extends Array<any>>(\n operationName: string,\n factory: (\n ...args: A\n ) => [\n Array<any>,\n (e: I, res: (x: O) => void, rej: (e: Error) => void) => void,\n ],\n ) =>\n (\n request: ClientInnerRequest<\n OperationResponseRpc,\n I | CommonOperationEventsRpc\n >,\n ) =>\n abortablePromiseFn<O, A>((res, rej, ...args) => {\n let isRunning = true\n let cancel = () => {\n isRunning = false\n }\n\n const [requestArgs, logicCb] = factory(...args)\n request(operationName, requestArgs, {\n onSuccess: (response, followSubscription) => {\n if (response.result === \"limitReached\")\n return rej(new OperationLimitError())\n\n const { operationId } = response\n const stopOperation = () => {\n request(chainHead.stopOperation, [operationId])\n }\n\n if (!isRunning) return stopOperation()\n\n let done = noop\n const _res = (x: O) => {\n isRunning = false\n done()\n res(x)\n }\n const _rej = (x: Error) => {\n isRunning = false\n done()\n rej(x)\n }\n\n done = followSubscription(operationId, {\n next: (e) => {\n const _e = e as CommonOperationEventsRpc\n if (_e.event === \"operationError\")\n rej(new OperationError(_e.error))\n else if (_e.event === \"operationInaccessible\")\n rej(new OperationInaccessibleError())\n else logicCb(e as I, _res, _rej)\n },\n error: _rej,\n })\n\n cancel = () => {\n if (isRunning) {\n done()\n stopOperation()\n }\n }\n },\n onError: rej,\n })\n\n return () => {\n cancel()\n }\n })\n","import { chainHead } from \"@/methods\"\nimport type { OperationBodyDoneRpc } from \"./json-rpc-types\"\nimport { createOperationPromise } from \"./operation-promise\"\n\nexport const createBodyFn = createOperationPromise(\n chainHead.body,\n (hash: string) => [\n [hash],\n (e: OperationBodyDoneRpc, res: (x: Array<string>) => void) => {\n res(e.value)\n },\n ],\n)\n","import { chainHead } from \"@/methods\"\nimport type { OperationCallDoneRpc } from \"./json-rpc-types\"\nimport { createOperationPromise } from \"./operation-promise\"\n\nexport const createCallFn = createOperationPromise(\n chainHead.call,\n (hash: string, fnName: string, callParameters: string) => [\n [hash, fnName, callParameters],\n (e: OperationCallDoneRpc, res: (output: string) => void) => {\n res(e.output)\n },\n ],\n)\n","import { chainHead } from \"@/methods\"\nimport { ClientInnerRequest } from \"./public-types\"\n\nexport const createHeaderFn =\n (request: ClientInnerRequest<string, unknown>) => (hash: string) =>\n new Promise<string>((res, rej) => {\n request(chainHead.header, [hash], {\n onSuccess: res,\n onError: rej,\n })\n })\n","import { noop } from \"@polkadot-api/utils\"\nimport type { ClientInnerRequest, FollowResponse } from \"./public-types\"\nimport {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { chainHead } from \"@/methods\"\nimport {\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./errors\"\n\nexport const createStorageCb =\n (\n request: ClientInnerRequest<\n OperationStorageStartedRpc | LimitReachedRpc,\n | CommonOperationEventsRpc\n | OperationStorageItemsRpc\n | OperationStorageDoneRpc\n | OperationWaitingForContinueRpc\n >,\n ): FollowResponse[\"storageSubscription\"] =>\n (hash, inputs, childTrie, onItems, onError, onDone, onDiscardedItems) => {\n if (inputs.length === 0) {\n onDone()\n return noop\n }\n\n let isRunning = true\n let cancel = () => {\n isRunning = false\n }\n\n request(chainHead.storage, [hash, inputs, childTrie], {\n onSuccess: (response, followSubscription) => {\n if (\n response.result === \"limitReached\" ||\n response.discardedItems === inputs.length\n )\n return onError(new OperationLimitError())\n\n const { operationId } = response\n const stopOperation = () => {\n request(chainHead.stopOperation, [operationId])\n }\n\n if (!isRunning) return stopOperation()\n\n const doneListening = followSubscription(response.operationId, {\n next: (event) => {\n switch (event.event) {\n case \"operationStorageItems\": {\n onItems(event.items)\n break\n }\n case \"operationStorageDone\": {\n _onDone()\n break\n }\n case \"operationError\": {\n _onError(new OperationError(event.error))\n break\n }\n case \"operationInaccessible\": {\n _onError(new OperationInaccessibleError())\n break\n }\n default:\n request(chainHead.continue, [event.operationId])\n }\n },\n error: onError,\n })\n\n cancel = () => {\n doneListening()\n request(chainHead.stopOperation, [response.operationId])\n }\n\n const _onError = (e: Error) => {\n cancel = noop\n doneListening()\n onError(e)\n }\n\n const _onDone = () => {\n cancel = noop\n doneListening()\n onDone()\n }\n\n onDiscardedItems(response.discardedItems)\n },\n onError,\n })\n\n return () => {\n cancel()\n }\n }\n","import { OperationLimitError } from \"./errors\"\nimport type {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { abortablePromiseFn } from \"@/internal-utils\"\nimport { createStorageCb } from \"./storage-subscription\"\nimport type { ClientInnerRequest, FollowResponse } from \"./public-types\"\n\nexport const createStorageFn = (\n request: ClientInnerRequest<\n OperationStorageStartedRpc | LimitReachedRpc,\n | CommonOperationEventsRpc\n | OperationStorageItemsRpc\n | OperationStorageDoneRpc\n | OperationWaitingForContinueRpc\n >,\n): FollowResponse[\"storage\"] => {\n const cbStore = createStorageCb(request)\n return abortablePromiseFn((resolve, reject, hash, type, key, childTrie) => {\n const isDescendants = type.startsWith(\"descendants\")\n let result: any = isDescendants ? [] : null\n\n const onItems: Parameters<typeof cbStore>[3] = isDescendants\n ? (items) => {\n result.push(items)\n }\n : (items) => {\n result = items[0]?.[type as \"value\"]\n }\n\n const cancel = cbStore(\n hash,\n [{ key, type }],\n childTrie ?? null,\n onItems,\n reject,\n () => {\n try {\n resolve(isDescendants ? result.flat() : result)\n } catch (e) {\n reject(e)\n }\n },\n (nDiscarded) => {\n if (nDiscarded > 0) {\n cancel()\n reject(new OperationLimitError())\n }\n },\n )\n return cancel\n })\n}\n","import { chainHead } from \"@/methods\"\nimport { ClientInnerRequest } from \"./public-types\"\n\nexport const createUnpinFn =\n (request: ClientInnerRequest<null, unknown>) => (hashes: string[]) =>\n hashes.length > 0\n ? new Promise<void>((res, rej) => {\n request(chainHead.unpin, [hashes], {\n onSuccess() {\n res()\n },\n onError: rej,\n })\n })\n : Promise.resolve()\n","import 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","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","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","import { abortablePromiseFn } from \"@/internal-utils\"\nimport type { Archive } from \"./public-types\"\n\nexport const createStorageFn = (\n cbStore: Archive[\"storageSubscription\"],\n): Archive[\"storage\"] =>\n abortablePromiseFn((resolve, reject, hash, type, key, childTrie) => {\n const isDescendants = type.startsWith(\"descendants\")\n\n let result: any = isDescendants ? [] : null\n const onItem: Parameters<typeof cbStore>[3] = isDescendants\n ? result.push.bind(result)\n : ({ [type]: res }) => {\n result = res\n }\n\n return cbStore(\n hash,\n [{ key, type }],\n childTrie,\n onItem,\n (e) => {\n reject(e)\n result = null\n },\n () => {\n resolve(result)\n result = null\n },\n )\n })\n","import { abortablePromiseFn } from \"@/internal-utils\"\nimport { type ClientRequest } from \"../client\"\nimport { createStorageCb } from \"./storage-subscription\"\nimport { createStorageFn } from \"./storage\"\nimport { Archive } from \"./public-types\"\nimport { CallError, BlockHashNotFoundError } from \"./errors\"\n\nconst identity =\n <T>() =>\n (x: T): T =>\n x\n\nconst handleInvalidBlockHash =\n <T>() =>\n (result: T | null, hash: string): T => {\n if (result === null) throw new BlockHashNotFoundError(hash)\n return result\n }\n\nexport const getArchive = (request: ClientRequest<any, any>): Archive => {\n const archiveRequest: ClientRequest<any, any> = (method: string, ...rest) =>\n request(`archive_v1_${method}`, ...rest)\n\n const fnCreator =\n <A extends Array<any>>(method: string) =>\n <I, O>(mapper: (input: I, ...args: A) => O) =>\n abortablePromiseFn<O, A>((res, rej, ...args) =>\n archiveRequest(method, args, {\n onSuccess: (x: I) => {\n try {\n res(mapper(x, ...args))\n } catch (e) {\n rej(e)\n }\n },\n onError: rej,\n }),\n )\n\n const header = fnCreator<[hash: string]>(\"header\")(\n handleInvalidBlockHash<string>(),\n )\n\n const body = fnCreator<[hash: string]>(\"body\")(\n handleInvalidBlockHash<string[]>(),\n )\n\n const storageSubscription = createStorageCb(archiveRequest)\n const storage = createStorageFn(storageSubscription)\n\n const call = fnCreator<\n [hash: string, function: string, callParameters: string]\n >(\"call\")((\n x:\n | { success: true; value: string }\n | { success: false; error: string }\n | null,\n hash,\n ) => {\n if (!x) throw new BlockHashNotFoundError(hash)\n if (!x.success) throw new CallError(x.error)\n return x.value\n })\n\n const finalizedHeight = fnCreator<[]>(\"finalizedHeight\")(identity<number>())\n const hashByHeight =\n fnCreator<[height: number]>(\"hashByHeight\")(identity<string[]>())\n\n return {\n header,\n body,\n storageSubscription,\n storage,\n call,\n finalizedHeight,\n hashByHeight,\n }\n}\n","import { noop } from \"@/internal-utils\"\nimport { type ClientRequest } from \"../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","import { ClientRequest } from \"./client\"\nimport { abortablePromiseFn } from \"./internal-utils\"\nimport { chainSpec } from \"./methods\"\n\nexport interface ChainSpecData {\n name: string\n genesisHash: string\n properties: any\n}\n\nexport const createGetChainSpec = (clientRequest: ClientRequest<any, any>) => {\n const request = abortablePromiseFn(\n <T>(\n onSuccess: (value: T) => void,\n onError: (e: any) => void,\n method: string,\n params: any[],\n ) => clientRequest(method, params, { onSuccess, onError }),\n )\n let cachedPromise: null | Promise<ChainSpecData> = null\n\n return async (): Promise<ChainSpecData> => {\n if (cachedPromise) return cachedPromise\n return (cachedPromise = Promise.all([\n request<string>(chainSpec.chainName, []),\n request<string>(chainSpec.genesisHash, []),\n request<any>(chainSpec.properties, []),\n ]).then(([name, genesisHash, properties]) => ({\n name,\n genesisHash,\n properties,\n })))\n }\n}\n","import type { 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":["noop","AbortError","fn","createClient","subscriptionId","createStorageCb","createStorageFn","createRawClient","cached"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/chainhead/errors.ts","../src/internal-utils/abortablePromiseFn.ts","../src/internal-utils/deferred-promise.ts","../src/internal-utils/noop.ts","../src/methods.ts","../src/chainhead/operation-promise.ts","../src/chainhead/body.ts","../src/chainhead/call.ts","../src/chainhead/header.ts","../src/chainhead/storage-subscription.ts","../src/chainhead/storage.ts","../src/chainhead/unpin.ts","../src/chainhead/chainhead.ts","../src/archive/errors.ts","../src/archive/storage-subscription.ts","../src/archive/storage.ts","../src/archive/archive.ts","../src/transaction/transaction.ts","../src/chainspec.ts","../src/substrate-client.ts"],"sourcesContent":["export class StopError extends Error {\n constructor() {\n super(\"ChainHead stopped\")\n this.name = \"StopError\"\n }\n}\n\nexport class DisjointError extends Error {\n constructor() {\n super(\"ChainHead disjointed\")\n this.name = \"DisjointError\"\n }\n}\n\nexport class OperationLimitError extends Error {\n constructor() {\n super(\"ChainHead operations limit reached\")\n this.name = \"OperationLimitError\"\n }\n}\n\nexport class OperationError extends Error {\n constructor(error: string) {\n super(error)\n this.name = \"OperationError\"\n }\n}\n\nexport class OperationInaccessibleError extends Error {\n constructor() {\n super(\"ChainHead operation inaccessible\")\n this.name = \"OperationInaccessibleError\"\n }\n}\n","import { AbortError, noop } from \"@polkadot-api/utils\"\nimport { AbortablePromiseFn } from \"../common-types\"\n\nexport const abortablePromiseFn =\n <T, A extends Array<any>>(\n fn: (\n ...args: [...[res: (x: T) => void, rej: (e: any) => void], ...A]\n ) => () => void,\n ): AbortablePromiseFn<A, T> =>\n (...args): Promise<T> =>\n new Promise((res, rej) => {\n let cancel = noop\n\n const [actualArgs, abortSignal] =\n args[args.length - 1] instanceof AbortSignal\n ? ([args.slice(0, args.length - 1), args[args.length - 1]] as [\n A,\n AbortSignal,\n ])\n : ([args] as unknown as [A])\n\n const onAbort = () => {\n cancel()\n rej(new AbortError())\n }\n\n abortSignal?.addEventListener(\"abort\", onAbort, { once: true })\n\n const withCleanup =\n <T>(fn: (x: T) => void): ((x: T) => void) =>\n (x) => {\n cancel = noop\n abortSignal?.removeEventListener(\"abort\", onAbort)\n fn(x)\n }\n\n cancel = fn(...[withCleanup(res), withCleanup(rej), ...actualArgs])\n })\n","export interface DeferredPromise<T> {\n promise: Promise<T>\n res: (value: T) => void\n rej: (err: Error) => void\n}\n\nexport function deferred<T>(): DeferredPromise<T> {\n let res: (value: T) => void = () => {}\n let rej: (err: Error) => void = () => {}\n\n const promise = new Promise<T>((_res, _rej) => {\n res = _res\n rej = _rej\n })\n\n return { promise, res, rej }\n}\n","export const noop = (): void => {}\n","const chainHead = {\n body: \"\",\n call: \"\",\n continue: \"\",\n follow: \"\",\n header: \"\",\n stopOperation: \"\",\n storage: \"\",\n unfollow: \"\",\n unpin: \"\",\n followEvent: \"\",\n}\n\nconst chainSpec = {\n chainName: \"\",\n genesisHash: \"\",\n properties: \"\",\n}\n\nconst transaction = {\n broadcast: \"\",\n stop: \"\",\n}\n\nObject.entries({ chainHead, chainSpec, transaction }).forEach(\n ([fnGroupName, methods]) => {\n Object.keys(methods).forEach((methodName) => {\n ;(methods as any)[methodName] = `${fnGroupName}_v1_${methodName}`\n })\n },\n)\n\nexport { chainHead, transaction, chainSpec }\n","import { abortablePromiseFn, noop } from \"@/internal-utils\"\nimport {\n CommonOperationEventsRpc,\n OperationResponseRpc,\n} from \"./json-rpc-types\"\nimport {\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./errors\"\nimport { ClientInnerRequest } from \"./public-types\"\nimport { chainHead } from \"@/methods\"\n\nexport const createOperationPromise =\n <I extends { operationId: string; event: string }, O, A extends Array<any>>(\n operationName: string,\n factory: (\n ...args: A\n ) => [\n Array<any>,\n (e: I, res: (x: O) => void, rej: (e: Error) => void) => void,\n ],\n ) =>\n (\n request: ClientInnerRequest<\n OperationResponseRpc,\n I | CommonOperationEventsRpc\n >,\n ) =>\n abortablePromiseFn<O, A>((res, rej, ...args) => {\n let isRunning = true\n let cancel = () => {\n isRunning = false\n }\n\n const [requestArgs, logicCb] = factory(...args)\n request(operationName, requestArgs, {\n onSuccess: (response, followSubscription) => {\n if (response.result === \"limitReached\")\n return rej(new OperationLimitError())\n\n const { operationId } = response\n const stopOperation = () => {\n request(chainHead.stopOperation, [operationId])\n }\n\n if (!isRunning) return stopOperation()\n\n let done = noop\n const _res = (x: O) => {\n isRunning = false\n done()\n res(x)\n }\n const _rej = (x: Error) => {\n isRunning = false\n done()\n rej(x)\n }\n\n done = followSubscription(operationId, {\n next: (e) => {\n const _e = e as CommonOperationEventsRpc\n if (_e.event === \"operationError\")\n rej(new OperationError(_e.error))\n else if (_e.event === \"operationInaccessible\")\n rej(new OperationInaccessibleError())\n else logicCb(e as I, _res, _rej)\n },\n error: _rej,\n })\n\n cancel = () => {\n if (isRunning) {\n done()\n stopOperation()\n }\n }\n },\n onError: rej,\n })\n\n return () => {\n cancel()\n }\n })\n","import { chainHead } from \"@/methods\"\nimport type { OperationBodyDoneRpc } from \"./json-rpc-types\"\nimport { createOperationPromise } from \"./operation-promise\"\n\nexport const createBodyFn = createOperationPromise(\n chainHead.body,\n (hash: string) => [\n [hash],\n (e: OperationBodyDoneRpc, res: (x: Array<string>) => void) => {\n res(e.value)\n },\n ],\n)\n","import { chainHead } from \"@/methods\"\nimport type { OperationCallDoneRpc } from \"./json-rpc-types\"\nimport { createOperationPromise } from \"./operation-promise\"\n\nexport const createCallFn = createOperationPromise(\n chainHead.call,\n (hash: string, fnName: string, callParameters: string) => [\n [hash, fnName, callParameters],\n (e: OperationCallDoneRpc, res: (output: string) => void) => {\n res(e.output)\n },\n ],\n)\n","import { chainHead } from \"@/methods\"\nimport { ClientInnerRequest } from \"./public-types\"\n\nexport const createHeaderFn =\n (request: ClientInnerRequest<string, unknown>) => (hash: string) =>\n new Promise<string>((res, rej) => {\n request(chainHead.header, [hash], {\n onSuccess: res,\n onError: rej,\n })\n })\n","import { noop } from \"@polkadot-api/utils\"\nimport type { ClientInnerRequest, FollowResponse } from \"./public-types\"\nimport {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { chainHead } from \"@/methods\"\nimport {\n OperationError,\n OperationInaccessibleError,\n OperationLimitError,\n} from \"./errors\"\n\nexport const createStorageCb =\n (\n request: ClientInnerRequest<\n OperationStorageStartedRpc | LimitReachedRpc,\n | CommonOperationEventsRpc\n | OperationStorageItemsRpc\n | OperationStorageDoneRpc\n | OperationWaitingForContinueRpc\n >,\n ): FollowResponse[\"storageSubscription\"] =>\n (hash, inputs, childTrie, onItems, onError, onDone, onDiscardedItems) => {\n if (inputs.length === 0) {\n onDone()\n return noop\n }\n\n let isRunning = true\n let cancel = () => {\n isRunning = false\n }\n\n request(chainHead.storage, [hash, inputs, childTrie], {\n onSuccess: (response, followSubscription) => {\n if (\n response.result === \"limitReached\" ||\n response.discardedItems === inputs.length\n )\n return onError(new OperationLimitError())\n\n const { operationId } = response\n const stopOperation = () => {\n request(chainHead.stopOperation, [operationId])\n }\n\n if (!isRunning) return stopOperation()\n\n const doneListening = followSubscription(response.operationId, {\n next: (event) => {\n switch (event.event) {\n case \"operationStorageItems\": {\n onItems(event.items)\n break\n }\n case \"operationStorageDone\": {\n _onDone()\n break\n }\n case \"operationError\": {\n _onError(new OperationError(event.error))\n break\n }\n case \"operationInaccessible\": {\n _onError(new OperationInaccessibleError())\n break\n }\n default:\n request(chainHead.continue, [event.operationId])\n }\n },\n error: onError,\n })\n\n cancel = () => {\n doneListening()\n request(chainHead.stopOperation, [response.operationId])\n }\n\n const _onError = (e: Error) => {\n cancel = noop\n doneListening()\n onError(e)\n }\n\n const _onDone = () => {\n cancel = noop\n doneListening()\n onDone()\n }\n\n onDiscardedItems(response.discardedItems)\n },\n onError,\n })\n\n return () => {\n cancel()\n }\n }\n","import { OperationLimitError } from \"./errors\"\nimport type {\n CommonOperationEventsRpc,\n LimitReachedRpc,\n OperationStorageDoneRpc,\n OperationStorageItemsRpc,\n OperationWaitingForContinueRpc,\n OperationStorageStartedRpc,\n} from \"./json-rpc-types\"\nimport { abortablePromiseFn } from \"@/internal-utils\"\nimport { createStorageCb } from \"./storage-subscription\"\nimport type { ClientInnerRequest, FollowResponse } from \"./public-types\"\n\nexport const createStorageFn = (\n request: ClientInnerRequest<\n OperationStorageStartedRpc | LimitReachedRpc,\n | CommonOperationEventsRpc\n | OperationStorageItemsRpc\n | OperationStorageDoneRpc\n | OperationWaitingForContinueRpc\n >,\n): FollowResponse[\"storage\"] => {\n const cbStore = createStorageCb(request)\n return abortablePromiseFn((resolve, reject, hash, type, key, childTrie) => {\n const isDescendants = type.startsWith(\"descendants\")\n let result: any = isDescendants ? [] : null\n\n const onItems: Parameters<typeof cbStore>[3] = isDescendants\n ? (items) => {\n result.push(items)\n }\n : (items) => {\n result = items[0]?.[type as \"value\"]\n }\n\n const cancel = cbStore(\n hash,\n [{ key, type }],\n childTrie ?? null,\n onItems,\n reject,\n () => {\n try {\n resolve(isDescendants ? result.flat() : result)\n } catch (e) {\n reject(e)\n }\n },\n (nDiscarded) => {\n if (nDiscarded > 0) {\n cancel()\n reject(new OperationLimitError())\n }\n },\n )\n return cancel\n })\n}\n","import { chainHead } from \"@/methods\"\nimport { ClientInnerRequest } from \"./public-types\"\n\nexport const createUnpinFn =\n (request: ClientInnerRequest<null, unknown>) => (hashes: string[]) =>\n hashes.length > 0\n ? new Promise<void>((res, rej) => {\n request(chainHead.unpin, [hashes], {\n onSuccess() {\n res()\n },\n onError: rej,\n })\n })\n : Promise.resolve()\n","import {\n DestroyedError,\n Subscriber,\n getSubscriptionsManager,\n ClientRequest,\n FollowSubscriptionCb,\n} from \"@polkadot-api/raw-client\"\nimport type {\n FollowEventWithRuntimeRpc,\n FollowEventWithoutRuntimeRpc,\n OperationEventsRpc,\n StopRpc,\n} from \"./json-rpc-types\"\nimport type {\n ChainHead,\n ClientInnerRequest,\n FollowEventWithoutRuntime,\n FollowEventWithRuntime,\n FollowResponse,\n} from \"./public-types\"\nimport { noop, deferred } from \"@/internal-utils\"\nimport { createBodyFn } from \"./body\"\nimport { createCallFn } from \"./call\"\nimport { createHeaderFn } from \"./header\"\nimport { createStorageFn } from \"./storage\"\nimport { createUnpinFn } from \"./unpin\"\nimport { DisjointError, StopError } from \"./errors\"\nimport { createStorageCb } from \"./storage-subscription\"\nimport { chainHead } from \"@/methods\"\n\ntype FollowEventRpc =\n | FollowEventWithRuntimeRpc\n | FollowEventWithoutRuntimeRpc\n | OperationEventsRpc\n | StopRpc\n\nfunction isOperationEvent(event: FollowEventRpc): event is OperationEventsRpc {\n return (event as OperationEventsRpc).operationId !== undefined\n}\n\nexport function getChainHead(\n request: ClientRequest<string, FollowEventRpc>,\n): ChainHead {\n return (\n withRuntime: boolean,\n onFollowEvent:\n | ((event: FollowEventWithoutRuntime) => void)\n | ((event: FollowEventWithRuntime) => void),\n onFollowError: (e: Error) => void,\n ): FollowResponse => {\n const subscriptions = getSubscriptionsManager<OperationEventsRpc>()\n const ongoingRequests = new Set<() => void>()\n const deferredFollow = deferred<string | Error>()\n // If it's:\n // - a (deferred)`Promise`: it means that the susbscription is active AND that the response to the follow request has not been resolved\n // - a `string`: it means that the subscription is active and that the response to the follow request has been successful.\n // - `null`: it means that the subscription is inactive (for whatever reason: error or unsubscription)\n let followSubscription: Promise<string | Error> | string | null =\n deferredFollow.promise\n\n let stopListeningToFollowEvents = noop\n const unfollowRequest = (subscriptionId: string) => {\n request(chainHead.unfollow, [subscriptionId])\n }\n\n const stopEverything = (sendUnfollow: boolean) => {\n stopListeningToFollowEvents()\n // if it's `null` it means that everything has already been stopped\n if (followSubscription === null) return\n\n if (sendUnfollow) {\n if (followSubscription instanceof Promise) {\n followSubscription.then((x) => {\n if (typeof x === \"string\") unfollowRequest(x)\n })\n } else unfollowRequest(followSubscription)\n }\n followSubscription = null\n ongoingRequests.forEach((cb) => {\n cb()\n })\n ongoingRequests.clear()\n subscriptions.errorAll(new DisjointError())\n }\n\n const onAllFollowEventsNext = (event: FollowEventRpc) => {\n if (isOperationEvent(event)) {\n if (!subscriptions.has(event.operationId))\n console.warn(\"Uknown operationId on\", event)\n return subscriptions.next(event.operationId, event)\n }\n\n switch (event.event) {\n case \"stop\":\n onFollowError(new StopError())\n return stopEverything(false)\n case \"initialized\":\n case \"newBlock\":\n case \"bestBlockChanged\":\n case \"finalized\":\n const { event: type, ...rest } = event\n return onFollowEvent({ type, ...rest } as any)\n }\n console.warn(\"Invalid event\", event)\n }\n\n const onAllFollowEventsError = (error: Error) => {\n onFollowError(error)\n stopEverything(!(error instanceof DestroyedError))\n }\n\n request(chainHead.follow, [withRuntime], {\n onSuccess: (\n subscriptionId: string,\n follow: FollowSubscriptionCb<FollowEventRpc>,\n ) => {\n // If the consumer has unsubscribed in between, then it will be `null`\n // and it should stay that way\n if (followSubscription instanceof Promise) {\n followSubscription = subscriptionId\n stopListeningToFollowEvents = follow(subscriptionId, {\n next: onAllFollowEventsNext,\n error: onAllFollowEventsError,\n })\n }\n deferredFollow.res(subscriptionId)\n },\n onError: (e: Error) => {\n followSubscription = null\n deferredFollow.res(e)\n onFollowError(e)\n },\n })\n\n const fRequest: ClientInnerRequest<any, any> = (method, params, cb) => {\n const disjoint = () => {\n cb?.onError(new DisjointError())\n }\n\n if (followSubscription === null) {\n disjoint()\n return noop\n }\n\n const onSubscription = (subscription: string) => {\n if (!cb) return request(method, [subscription, ...params])\n\n ongoingRequests.add(disjoint)\n\n const onSubscribeOperation = (\n operationId: string,\n subscriber: Subscriber<any>,\n ) => {\n if (followSubscription === null) {\n subscriber.error(new DisjointError())\n return noop\n }\n\n subscriptions.subscribe(operationId, subscriber)\n\n return () => {\n subscriptions.unsubscribe(operationId)\n }\n }\n\n const cleanup = request(method, [subscription, ...params], {\n onSuccess: (response) => {\n ongoingRequests.delete(disjoint)\n cb.onSuccess(response, onSubscribeOperation)\n },\n onError: (e) => {\n ongoingRequests.delete(disjoint)\n cb.onError(e)\n },\n })\n\n return () => {\n ongoingRequests.delete(disjoint)\n cleanup()\n }\n }\n\n if (typeof followSubscription === \"string\")\n return onSubscription(followSubscription)\n\n let onCancel = noop\n followSubscription.then((x) => {\n if (x instanceof Error) return disjoint()\n if (followSubscription) onCancel = onSubscription(x)\n })\n\n return () => {\n onCancel()\n }\n }\n\n return {\n unfollow() {\n stopEverything(true)\n },\n body: createBodyFn(fRequest),\n call: createCallFn(fRequest),\n header: createHeaderFn(fRequest),\n storage: createStorageFn(fRequest),\n storageSubscription: createStorageCb(fRequest),\n unpin: createUnpinFn(fRequest),\n _request: fRequest,\n }\n }\n}\n","export class BlockHashNotFoundError extends Error {\n 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","import type { ClientRequest } from \"@polkadot-api/raw-client\"\nimport { noop } from \"@polkadot-api/utils\"\nimport { Archive } from \"./public-types\"\nimport { StorageItemResponse } from \"@/chainhead\"\nimport { StorageError } from \"./errors\"\n\ntype StorageEvent = {\n event: \"storage\"\n} & StorageItemResponse\n\ntype StorageDone = {\n event: \"storageDone\"\n}\n\ntype StorageErrorEvent = {\n event: \"storageError\"\n error: string\n}\n\nexport const createStorageCb =\n (\n archiveRequest: ClientRequest<\n string,\n StorageEvent | StorageDone | StorageErrorEvent\n >,\n ): Archive[\"storageSubscription\"] =>\n (hash, inputs, childTrie, onItem, onError, onDone) => {\n if (inputs.length === 0) {\n onDone()\n return noop\n }\n\n let isRunning = true\n let cancel = () => {\n isRunning = false\n }\n\n archiveRequest(\"storage\", [hash, inputs, childTrie], {\n onSuccess: (operationId, followSubscription) => {\n const stopOperation = () => {\n archiveRequest(\"stopStorage\", [operationId])\n }\n\n if (!isRunning) return stopOperation()\n\n const doneListening = followSubscription(operationId, {\n next: (event) => {\n const { event: type } = event\n if (type === \"storage\") {\n const { event: _, ...item } = event\n onItem(item)\n } else if (type === \"storageDone\") _onDone()\n else _onError(new StorageError(event.error))\n },\n error: onError,\n })\n\n const tearDown = () => {\n cancel = noop\n doneListening()\n }\n\n cancel = () => {\n tearDown()\n stopOperation()\n }\n\n const _onError = (e: Error) => {\n tearDown()\n onError(e)\n }\n\n const _onDone = () => {\n tearDown()\n onDone()\n }\n },\n onError,\n })\n\n return () => {\n cancel()\n }\n }\n","import { abortablePromiseFn } from \"@/internal-utils\"\nimport type { Archive } from \"./public-types\"\n\nexport const createStorageFn = (\n cbStore: Archive[\"storageSubscription\"],\n): Archive[\"storage\"] =>\n abortablePromiseFn((resolve, reject, hash, type, key, childTrie) => {\n const isDescendants = type.startsWith(\"descendants\")\n\n let result: any = isDescendants ? [] : null\n const onItem: Parameters<typeof cbStore>[3] = isDescendants\n ? result.push.bind(result)\n : ({ [type]: res }) => {\n result = res\n }\n\n return cbStore(\n hash,\n [{ key, type }],\n childTrie,\n onItem,\n (e) => {\n reject(e)\n result = null\n },\n () => {\n resolve(result)\n result = null\n },\n )\n })\n","import { abortablePromiseFn } from \"@/internal-utils\"\nimport { type ClientRequest } from \"@polkadot-api/raw-client\"\nimport { createStorageCb } from \"./storage-subscription\"\nimport { createStorageFn } from \"./storage\"\nimport { Archive } from \"./public-types\"\nimport { CallError, BlockHashNotFoundError } from \"./errors\"\n\nconst identity =\n <T>() =>\n (x: T): T =>\n x\n\nconst handleInvalidBlockHash =\n <T>() =>\n (result: T | null, hash: string): T => {\n if (result === null) throw new BlockHashNotFoundError(hash)\n return result\n }\n\nexport const getArchive = (request: ClientRequest<any, any>): Archive => {\n const archiveRequest: ClientRequest<any, any> = (method: string, ...rest) =>\n request(`archive_v1_${method}`, ...rest)\n\n const fnCreator =\n <A extends Array<any>>(method: string) =>\n <I, O>(mapper: (input: I, ...args: A) => O) =>\n abortablePromiseFn<O, A>((res, rej, ...args) =>\n archiveRequest(method, args, {\n onSuccess: (x: I) => {\n try {\n res(mapper(x, ...args))\n } catch (e) {\n rej(e)\n }\n },\n onError: rej,\n }),\n )\n\n const header = fnCreator<[hash: string]>(\"header\")(\n handleInvalidBlockHash<string>(),\n )\n\n const body = fnCreator<[hash: string]>(\"body\")(\n handleInvalidBlockHash<string[]>(),\n )\n\n const storageSubscription = createStorageCb(archiveRequest)\n const storage = createStorageFn(storageSubscription)\n\n const call = fnCreator<\n [hash: string, function: string, callParameters: string]\n >(\"call\")((\n x:\n | { success: true; value: string }\n | { success: false; error: string }\n | null,\n hash,\n ) => {\n if (!x) throw new BlockHashNotFoundError(hash)\n if (!x.success) throw new CallError(x.error)\n return x.value\n })\n\n const finalizedHeight = fnCreator<[]>(\"finalizedHeight\")(identity<number>())\n const hashByHeight =\n fnCreator<[height: number]>(\"hashByHeight\")(identity<string[]>())\n\n return {\n header,\n body,\n storageSubscription,\n storage,\n call,\n finalizedHeight,\n hashByHeight,\n }\n}\n","import { noop } from \"@/internal-utils\"\nimport { type ClientRequest } from \"@polkadot-api/raw-client\"\nimport { transaction } from \"@/methods\"\n\nexport const getTransaction =\n (request: ClientRequest<string, any>) =>\n (tx: string, error: (e: Error) => void) => {\n let 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","import { type ClientRequest } from \"@polkadot-api/raw-client\"\nimport { abortablePromiseFn } from \"./internal-utils\"\nimport { chainSpec } from \"./methods\"\n\nexport interface ChainSpecData {\n name: string\n genesisHash: string\n properties: any\n}\n\nexport const createGetChainSpec = (clientRequest: ClientRequest<any, any>) => {\n const request = abortablePromiseFn(\n <T>(\n onSuccess: (value: T) => void,\n onError: (e: any) => void,\n method: string,\n params: any[],\n ) => clientRequest(method, params, { onSuccess, onError }),\n )\n let cachedPromise: null | Promise<ChainSpecData> = null\n\n return async (): Promise<ChainSpecData> => {\n if (cachedPromise) return cachedPromise\n return (cachedPromise = Promise.all([\n request<string>(chainSpec.chainName, []),\n request<string>(chainSpec.genesisHash, []),\n request<any>(chainSpec.properties, []),\n ]).then(([name, genesisHash, properties]) => ({\n name,\n genesisHash,\n properties,\n })))\n }\n}\n","import type { JsonRpcProvider } from \"@polkadot-api/json-rpc-provider\"\nimport {\n ClientRequestCb,\n createClient as createRawClient,\n} from \"@polkadot-api/raw-client\"\nimport { getTransaction } from \"./transaction/transaction\"\nimport { getChainHead } from \"./chainhead\"\nimport type { ChainHead } from \"./chainhead\"\nimport type { Transaction } from \"./transaction\"\nimport { UnsubscribeFn } from \"./common-types\"\nimport { abortablePromiseFn } from \"./internal-utils\"\nimport { ChainSpecData, createGetChainSpec } from \"./chainspec\"\nimport { Archive, getArchive } from \"./archive\"\n\nexport interface SubstrateClient {\n archive: Archive\n chainHead: ChainHead\n transaction: Transaction\n destroy: UnsubscribeFn\n getChainSpecData: () => Promise<ChainSpecData>\n request: <T>(\n method: string,\n params: any[],\n abortSignal?: AbortSignal,\n ) => Promise<T>\n _request: <Reply, Notification>(\n method: string,\n params: any[],\n cb?: ClientRequestCb<Reply, Notification>,\n ) => UnsubscribeFn\n}\n\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":["noop","AbortError","fn","createStorageCb","createStorageFn","getSubscriptionsManager","DestroyedError","createRawClient","cached"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@polkadot-api/substrate-client",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.3",
|
|
4
4
|
"author": "Josep M Sobrepere (https://github.com/josepot)",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -35,6 +35,7 @@
|
|
|
35
35
|
"dist"
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
|
+
"@polkadot-api/raw-client": "0.1.1",
|
|
38
39
|
"@polkadot-api/utils": "0.2.0",
|
|
39
40
|
"@polkadot-api/json-rpc-provider": "0.0.4"
|
|
40
41
|
},
|
|
@@ -1 +0,0 @@
|
|
|
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,16 +0,0 @@
|
|
|
1
|
-
var __defProp = Object.defineProperty;
|
|
2
|
-
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
3
|
-
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
4
|
-
class RpcError extends Error {
|
|
5
|
-
constructor(e) {
|
|
6
|
-
super(e.message);
|
|
7
|
-
__publicField(this, "code");
|
|
8
|
-
__publicField(this, "data");
|
|
9
|
-
this.code = e.code;
|
|
10
|
-
this.data = e.data;
|
|
11
|
-
this.name = "RpcError";
|
|
12
|
-
}
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
export { RpcError };
|
|
16
|
-
//# sourceMappingURL=RpcError.mjs.map
|