@acala-network/chopsticks-core 0.8.4 → 0.8.5-1
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/lib/api.d.ts +1 -10
- package/lib/api.js +1 -10
- package/lib/blockchain/head-state.d.ts +1 -1
- package/lib/blockchain/head-state.js +2 -2
- package/lib/blockchain/index.d.ts +4 -4
- package/lib/blockchain/index.js +16 -19
- package/lib/blockchain/storage-layer.d.ts +2 -2
- package/lib/blockchain/storage-layer.js +3 -5
- package/lib/chopsticks-provider.d.ts +32 -0
- package/lib/chopsticks-provider.js +168 -248
- package/lib/database.d.ts +26 -0
- package/lib/database.js +2 -0
- package/lib/genesis-provider.d.ts +0 -1
- package/lib/genesis-provider.js +4 -47
- package/lib/index.d.ts +3 -0
- package/lib/index.js +3 -1
- package/lib/rpc/substrate/author.js +6 -3
- package/lib/rpc/substrate/chain.js +2 -2
- package/lib/rpc/substrate/index.d.ts +5 -5
- package/lib/rpc/substrate/state.d.ts +5 -5
- package/lib/rpc/substrate/state.js +11 -7
- package/lib/setup.d.ts +4 -3
- package/lib/setup.js +2 -13
- package/lib/wasm-executor/index.d.ts +1 -1
- package/lib/wasm-executor/index.js +2 -3
- package/lib/wasm-executor/node-wasm-executor.mjs +1 -1
- package/package.json +7 -11
- package/lib/chopsticks-worker.d.ts +0 -1
- package/lib/chopsticks-worker.js +0 -101
- package/lib/db/browser.d.ts +0 -2
- package/lib/db/browser.js +0 -64
- package/lib/db/entities.d.ts +0 -15
- package/lib/db/entities.js +0 -53
- package/lib/db/index.d.ts +0 -1
- package/lib/db/index.js +0 -44
- package/lib/db/node.d.ts +0 -2
- package/lib/db/node.js +0 -49
- package/lib/db/sql-wasm.d.ts +0 -1
- package/lib/db/sql-wasm.js +0 -9
|
@@ -1,249 +1,169 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
// }
|
|
171
|
-
// async unsubscribe(_type: string, method: string, id: number | string): Promise<boolean> {
|
|
172
|
-
// if (!this.#subscriptions[id]) {
|
|
173
|
-
// logger.error(`Unable to find active subscription=${id}`)
|
|
174
|
-
// return false
|
|
175
|
-
// }
|
|
176
|
-
// try {
|
|
177
|
-
// return this.isConnected ? this.send<boolean>(method, [id]) : true
|
|
178
|
-
// } catch {
|
|
179
|
-
// return false
|
|
180
|
-
// }
|
|
181
|
-
// }
|
|
182
|
-
// #onWorkerMessage = (e: any) => {
|
|
183
|
-
// switch (e.data.type) {
|
|
184
|
-
// case 'connection':
|
|
185
|
-
// logger.debug('connection.', e.data)
|
|
186
|
-
// if (e.data.connected) {
|
|
187
|
-
// this.#isConnected = true
|
|
188
|
-
// this.#eventemitter.emit('connected')
|
|
189
|
-
// } else {
|
|
190
|
-
// this.#isConnected = false
|
|
191
|
-
// this.#eventemitter.emit('error', new Error('Unable to connect to the chain'))
|
|
192
|
-
// logger.error(`Unable to connect to the chain: ${e.data.message}`)
|
|
193
|
-
// }
|
|
194
|
-
// break
|
|
195
|
-
// case 'subscribe-callback':
|
|
196
|
-
// {
|
|
197
|
-
// logger.debug('subscribe-callback', e.data)
|
|
198
|
-
// const sub = this.#subscriptions[e.data.subid]
|
|
199
|
-
// if (!sub) {
|
|
200
|
-
// // record it first, sometimes callback comes first
|
|
201
|
-
// this.#subscriptions[e.data.subid] = {
|
|
202
|
-
// callback: () => {},
|
|
203
|
-
// method: e.data.method,
|
|
204
|
-
// params: e.data.params,
|
|
205
|
-
// type: e.data.type,
|
|
206
|
-
// result: JSON.parse(e.data.result),
|
|
207
|
-
// }
|
|
208
|
-
// return
|
|
209
|
-
// }
|
|
210
|
-
// sub.callback(null, JSON.parse(e.data.result))
|
|
211
|
-
// }
|
|
212
|
-
// break
|
|
213
|
-
// case 'unsubscribe-callback':
|
|
214
|
-
// {
|
|
215
|
-
// logger.debug('unsubscribe-callback', e.data)
|
|
216
|
-
// const sub = this.#subscriptions[e.data.subid]
|
|
217
|
-
// if (!sub) {
|
|
218
|
-
// logger.error(`Unable to find active subscription=${e.data.subid}`)
|
|
219
|
-
// return
|
|
220
|
-
// }
|
|
221
|
-
// sub?.onCancel?.()
|
|
222
|
-
// delete this.#subscriptions[e.data.subid]
|
|
223
|
-
// }
|
|
224
|
-
// break
|
|
225
|
-
// case 'send-result':
|
|
226
|
-
// {
|
|
227
|
-
// const handler = this.#handlers[e.data.id]
|
|
228
|
-
// if (!handler) {
|
|
229
|
-
// logger.error(`Unable to find handler=${e.data.id}`)
|
|
230
|
-
// return
|
|
231
|
-
// }
|
|
232
|
-
// logger.debug('send-result', {
|
|
233
|
-
// method: e.data.method,
|
|
234
|
-
// result: JSON.parse(e.data.result || '{}'),
|
|
235
|
-
// data: e.data,
|
|
236
|
-
// })
|
|
237
|
-
// try {
|
|
238
|
-
// handler.callback(null, e.data.result ? JSON.parse(e.data.result) : undefined)
|
|
239
|
-
// } catch (error) {
|
|
240
|
-
// handler.callback(error as Error, undefined)
|
|
241
|
-
// }
|
|
242
|
-
// delete this.#handlers[e.data.id]
|
|
243
|
-
// }
|
|
244
|
-
// break
|
|
245
|
-
// default:
|
|
246
|
-
// break
|
|
247
|
-
// }
|
|
248
|
-
// }
|
|
249
|
-
// }
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
12
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
13
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
14
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
15
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
16
|
+
};
|
|
17
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
18
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
19
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
20
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
21
|
+
};
|
|
22
|
+
var _a, _ChopsticksProvider_isConnected, _ChopsticksProvider_eventemitter, _ChopsticksProvider_isReadyPromise, _ChopsticksProvider_subscriptions;
|
|
23
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
24
|
+
exports.ChopsticksProvider = void 0;
|
|
25
|
+
const eventemitter3_1 = require("eventemitter3");
|
|
26
|
+
const rpc_1 = require("./rpc");
|
|
27
|
+
const logger_1 = require("./logger");
|
|
28
|
+
const setup_1 = require("./setup");
|
|
29
|
+
const providerHandlers = Object.assign(Object.assign({}, rpc_1.allHandlers), { dev_newBlock: (context, _params, _subscriptionManager) => __awaiter(void 0, void 0, void 0, function* () {
|
|
30
|
+
const block = yield context.chain.newBlock();
|
|
31
|
+
return block.hash;
|
|
32
|
+
}) });
|
|
33
|
+
const logger = logger_1.defaultLogger.child({ name: '[Chopsticks provider]' });
|
|
34
|
+
/**
|
|
35
|
+
* Provider for local chopsticks chain
|
|
36
|
+
*/
|
|
37
|
+
class ChopsticksProvider {
|
|
38
|
+
constructor(chain) {
|
|
39
|
+
this.chain = chain;
|
|
40
|
+
_ChopsticksProvider_isConnected.set(this, false);
|
|
41
|
+
_ChopsticksProvider_eventemitter.set(this, void 0);
|
|
42
|
+
_ChopsticksProvider_isReadyPromise.set(this, void 0);
|
|
43
|
+
_ChopsticksProvider_subscriptions.set(this, {});
|
|
44
|
+
this.clone = () => {
|
|
45
|
+
return new ChopsticksProvider(this.chain);
|
|
46
|
+
};
|
|
47
|
+
this.connect = () => __awaiter(this, void 0, void 0, function* () {
|
|
48
|
+
__classPrivateFieldSet(this, _ChopsticksProvider_isConnected, true, "f");
|
|
49
|
+
__classPrivateFieldGet(this, _ChopsticksProvider_eventemitter, "f").emit('connected');
|
|
50
|
+
});
|
|
51
|
+
this.disconnect = () => __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
__classPrivateFieldSet(this, _ChopsticksProvider_isConnected, false, "f");
|
|
53
|
+
__classPrivateFieldGet(this, _ChopsticksProvider_eventemitter, "f").emit('disconnected');
|
|
54
|
+
});
|
|
55
|
+
this.on = (type, sub) => {
|
|
56
|
+
__classPrivateFieldGet(this, _ChopsticksProvider_eventemitter, "f").on(type, sub);
|
|
57
|
+
return () => {
|
|
58
|
+
__classPrivateFieldGet(this, _ChopsticksProvider_eventemitter, "f").removeListener(type, sub);
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
this.subscriptionManager = {
|
|
62
|
+
subscribe: (method, subid, onCancel = () => { }) => {
|
|
63
|
+
const sub = __classPrivateFieldGet(this, _ChopsticksProvider_subscriptions, "f")[subid];
|
|
64
|
+
if (sub) {
|
|
65
|
+
sub.onCancel = onCancel;
|
|
66
|
+
}
|
|
67
|
+
return (data) => {
|
|
68
|
+
logger.debug('subscribe-callback', method, subid, data);
|
|
69
|
+
const sub = __classPrivateFieldGet(this, _ChopsticksProvider_subscriptions, "f")[subid];
|
|
70
|
+
if (sub) {
|
|
71
|
+
sub.callback(null, data);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
logger.trace(`Unable to find active subscription=${subid}`);
|
|
75
|
+
}
|
|
76
|
+
};
|
|
77
|
+
},
|
|
78
|
+
unsubscribe: (subid) => {
|
|
79
|
+
var _b;
|
|
80
|
+
logger.debug('unsubscribe-callback', subid);
|
|
81
|
+
const sub = __classPrivateFieldGet(this, _ChopsticksProvider_subscriptions, "f")[subid];
|
|
82
|
+
if (sub) {
|
|
83
|
+
(_b = sub.onCancel) === null || _b === void 0 ? void 0 : _b.call(sub);
|
|
84
|
+
delete __classPrivateFieldGet(this, _ChopsticksProvider_subscriptions, "f")[subid];
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
logger.trace(`Unable to find active subscription=${subid}`);
|
|
88
|
+
}
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
this.send = (method, params, _isCacheable, subscription) => __awaiter(this, void 0, void 0, function* () {
|
|
92
|
+
try {
|
|
93
|
+
logger.debug('send', { method, params });
|
|
94
|
+
const rpcHandler = providerHandlers[method];
|
|
95
|
+
if (!rpcHandler) {
|
|
96
|
+
logger.error(`Unable to find rpc handler=${method}`);
|
|
97
|
+
throw new Error(`Unable to find rpc handler=${method}`);
|
|
98
|
+
}
|
|
99
|
+
if (subscription) {
|
|
100
|
+
logger.debug('subscribe', { method, params });
|
|
101
|
+
const subid = yield rpcHandler({ chain: this.chain }, params, this.subscriptionManager);
|
|
102
|
+
if (!subid) {
|
|
103
|
+
throw new Error(`Unable to subscribe=${method}`);
|
|
104
|
+
}
|
|
105
|
+
__classPrivateFieldGet(this, _ChopsticksProvider_subscriptions, "f")[subid] = {
|
|
106
|
+
callback: subscription.callback,
|
|
107
|
+
method,
|
|
108
|
+
params,
|
|
109
|
+
type: subscription.type,
|
|
110
|
+
};
|
|
111
|
+
return subid;
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
logger.debug('call', { method, params });
|
|
115
|
+
return rpcHandler({ chain: this.chain }, params, this.subscriptionManager);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch (e) {
|
|
119
|
+
logger.error('send error.', e);
|
|
120
|
+
throw e;
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
__classPrivateFieldSet(this, _ChopsticksProvider_eventemitter, new eventemitter3_1.EventEmitter(), "f");
|
|
124
|
+
__classPrivateFieldSet(this, _ChopsticksProvider_isReadyPromise, new Promise((resolve, reject) => {
|
|
125
|
+
__classPrivateFieldGet(this, _ChopsticksProvider_eventemitter, "f").once('connected', resolve);
|
|
126
|
+
__classPrivateFieldGet(this, _ChopsticksProvider_eventemitter, "f").once('error', reject);
|
|
127
|
+
this.connect();
|
|
128
|
+
}), "f");
|
|
129
|
+
}
|
|
130
|
+
get hasSubscriptions() {
|
|
131
|
+
return true;
|
|
132
|
+
}
|
|
133
|
+
get isClonable() {
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
136
|
+
get isConnected() {
|
|
137
|
+
return __classPrivateFieldGet(this, _ChopsticksProvider_isConnected, "f");
|
|
138
|
+
}
|
|
139
|
+
get isReady() {
|
|
140
|
+
return __classPrivateFieldGet(this, _ChopsticksProvider_isReadyPromise, "f");
|
|
141
|
+
}
|
|
142
|
+
subscribe(type, method, params, callback) {
|
|
143
|
+
return this.send(method, params, false, { callback, type });
|
|
144
|
+
}
|
|
145
|
+
unsubscribe(_type, method, id) {
|
|
146
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
147
|
+
if (!__classPrivateFieldGet(this, _ChopsticksProvider_subscriptions, "f")[id]) {
|
|
148
|
+
logger.trace(`Unable to find active subscription=${id}`);
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
try {
|
|
152
|
+
return this.send(method, [id]);
|
|
153
|
+
}
|
|
154
|
+
catch (_b) {
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
exports.ChopsticksProvider = ChopsticksProvider;
|
|
161
|
+
_a = ChopsticksProvider, _ChopsticksProvider_isConnected = new WeakMap(), _ChopsticksProvider_eventemitter = new WeakMap(), _ChopsticksProvider_isReadyPromise = new WeakMap(), _ChopsticksProvider_subscriptions = new WeakMap();
|
|
162
|
+
ChopsticksProvider.fromEndpoint = (endpoint, block, db) => __awaiter(void 0, void 0, void 0, function* () {
|
|
163
|
+
return new ChopsticksProvider(yield (0, setup_1.setup)({
|
|
164
|
+
endpoint,
|
|
165
|
+
mockSignatureHost: true,
|
|
166
|
+
block,
|
|
167
|
+
db,
|
|
168
|
+
}));
|
|
169
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { HexString } from '@polkadot/util/types';
|
|
2
|
+
export interface BlockEntry {
|
|
3
|
+
hash: HexString;
|
|
4
|
+
number: number;
|
|
5
|
+
header: HexString;
|
|
6
|
+
parentHash: HexString | null;
|
|
7
|
+
extrinsics: HexString[];
|
|
8
|
+
storageDiff: Record<HexString, HexString | null> | null;
|
|
9
|
+
}
|
|
10
|
+
export interface KeyValueEntry {
|
|
11
|
+
blockHash: string;
|
|
12
|
+
key: string;
|
|
13
|
+
value: string | null;
|
|
14
|
+
}
|
|
15
|
+
export declare class Database {
|
|
16
|
+
constructor(location: string);
|
|
17
|
+
close: () => Promise<void>;
|
|
18
|
+
saveBlock: (block: BlockEntry) => Promise<void>;
|
|
19
|
+
queryBlock: (hash: HexString) => Promise<BlockEntry | null>;
|
|
20
|
+
queryBlockByNumber: (number: number) => Promise<BlockEntry | null>;
|
|
21
|
+
queryHighestBlock: () => Promise<BlockEntry | null>;
|
|
22
|
+
deleteBlock: (hash: HexString) => Promise<void>;
|
|
23
|
+
blocksCount: () => Promise<number>;
|
|
24
|
+
saveStorage: (blockHash: HexString, key: HexString, value: HexString | null) => Promise<void>;
|
|
25
|
+
queryStorage: (blockHash: HexString, key: HexString) => Promise<KeyValueEntry | null>;
|
|
26
|
+
}
|
package/lib/database.js
ADDED
|
@@ -6,7 +6,6 @@ export declare class GenesisProvider implements ProviderInterface {
|
|
|
6
6
|
#private;
|
|
7
7
|
readonly stats?: ProviderStats;
|
|
8
8
|
constructor(genesis: Genesis);
|
|
9
|
-
static fromUrl: (url: string) => Promise<GenesisProvider>;
|
|
10
9
|
get isClonable(): boolean;
|
|
11
10
|
clone: () => ProviderInterface;
|
|
12
11
|
get hasSubscriptions(): boolean;
|
package/lib/genesis-provider.js
CHANGED
|
@@ -1,27 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
3
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
4
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -42,17 +19,12 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
|
|
|
42
19
|
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
43
20
|
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
44
21
|
};
|
|
45
|
-
var
|
|
46
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
47
|
-
};
|
|
48
|
-
var _a, _GenesisProvider_isConnected, _GenesisProvider_eventemitter, _GenesisProvider_isReadyPromise, _GenesisProvider_genesis, _GenesisProvider_stateRoot;
|
|
22
|
+
var _GenesisProvider_isConnected, _GenesisProvider_eventemitter, _GenesisProvider_isReadyPromise, _GenesisProvider_genesis, _GenesisProvider_stateRoot;
|
|
49
23
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
50
24
|
exports.GenesisProvider = void 0;
|
|
51
25
|
const eventemitter3_1 = require("eventemitter3");
|
|
52
|
-
const axios_1 = __importDefault(require("axios"));
|
|
53
26
|
const schema_1 = require("./schema");
|
|
54
27
|
const wasm_executor_1 = require("./wasm-executor");
|
|
55
|
-
const utils_1 = require("./utils");
|
|
56
28
|
class GenesisProvider {
|
|
57
29
|
constructor(genesis) {
|
|
58
30
|
_GenesisProvider_isConnected.set(this, false);
|
|
@@ -126,7 +98,7 @@ class GenesisProvider {
|
|
|
126
98
|
this.unsubscribe = (_type, _method, _id) => __awaiter(this, void 0, void 0, function* () {
|
|
127
99
|
throw Error('unimplemented');
|
|
128
100
|
});
|
|
129
|
-
__classPrivateFieldSet(this, _GenesisProvider_genesis, genesis, "f");
|
|
101
|
+
__classPrivateFieldSet(this, _GenesisProvider_genesis, schema_1.genesisSchema.parse(genesis), "f");
|
|
130
102
|
__classPrivateFieldSet(this, _GenesisProvider_stateRoot, (0, wasm_executor_1.calculateStateRoot)(Object.entries(__classPrivateFieldGet(this, _GenesisProvider_genesis, "f").genesis.raw.top).reduce((accu, item) => {
|
|
131
103
|
accu.push(item);
|
|
132
104
|
return accu;
|
|
@@ -137,6 +109,7 @@ class GenesisProvider {
|
|
|
137
109
|
resolve();
|
|
138
110
|
});
|
|
139
111
|
__classPrivateFieldGet(this, _GenesisProvider_eventemitter, "f").once('error', reject);
|
|
112
|
+
this.connect();
|
|
140
113
|
}), "f");
|
|
141
114
|
}
|
|
142
115
|
get isClonable() {
|
|
@@ -149,7 +122,6 @@ class GenesisProvider {
|
|
|
149
122
|
return __classPrivateFieldGet(this, _GenesisProvider_isConnected, "f");
|
|
150
123
|
}
|
|
151
124
|
get isReady() {
|
|
152
|
-
this.connect();
|
|
153
125
|
return __classPrivateFieldGet(this, _GenesisProvider_isReadyPromise, "f");
|
|
154
126
|
}
|
|
155
127
|
get blockHash() {
|
|
@@ -173,19 +145,4 @@ class GenesisProvider {
|
|
|
173
145
|
}
|
|
174
146
|
}
|
|
175
147
|
exports.GenesisProvider = GenesisProvider;
|
|
176
|
-
|
|
177
|
-
GenesisProvider.fromUrl = (url) => __awaiter(void 0, void 0, void 0, function* () {
|
|
178
|
-
const getFile = (url) => __awaiter(void 0, void 0, void 0, function* () {
|
|
179
|
-
if ((0, utils_1.isUrl)(url)) {
|
|
180
|
-
return axios_1.default.get(url).then((x) => x.data);
|
|
181
|
-
}
|
|
182
|
-
else if (typeof process === 'object') {
|
|
183
|
-
const { lstatSync, readFileSync } = yield Promise.resolve().then(() => __importStar(require('node:fs')));
|
|
184
|
-
if (lstatSync(url).isFile()) {
|
|
185
|
-
return JSON.parse(String(readFileSync(url)));
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
throw Error(`invalid genesis path or url ${url}`);
|
|
189
|
-
});
|
|
190
|
-
return new GenesisProvider(schema_1.genesisSchema.parse(yield getFile(url)));
|
|
191
|
-
});
|
|
148
|
+
_GenesisProvider_isConnected = new WeakMap(), _GenesisProvider_eventemitter = new WeakMap(), _GenesisProvider_isReadyPromise = new WeakMap(), _GenesisProvider_genesis = new WeakMap(), _GenesisProvider_stateRoot = new WeakMap();
|
package/lib/index.d.ts
CHANGED
|
@@ -19,7 +19,10 @@ export * from './wasm-executor';
|
|
|
19
19
|
export * from './schema';
|
|
20
20
|
export * from './xcm';
|
|
21
21
|
export * from './setup';
|
|
22
|
+
export * from './database';
|
|
22
23
|
export * from './blockchain/inherent';
|
|
23
24
|
export * from './logger';
|
|
24
25
|
export * from './offchain';
|
|
26
|
+
export * from './chopsticks-provider';
|
|
27
|
+
export * from './genesis-provider';
|
|
25
28
|
export * from './rpc';
|
package/lib/index.js
CHANGED
|
@@ -35,8 +35,10 @@ __exportStar(require("./wasm-executor"), exports);
|
|
|
35
35
|
__exportStar(require("./schema"), exports);
|
|
36
36
|
__exportStar(require("./xcm"), exports);
|
|
37
37
|
__exportStar(require("./setup"), exports);
|
|
38
|
+
__exportStar(require("./database"), exports);
|
|
38
39
|
__exportStar(require("./blockchain/inherent"), exports);
|
|
39
40
|
__exportStar(require("./logger"), exports);
|
|
40
41
|
__exportStar(require("./offchain"), exports);
|
|
41
|
-
|
|
42
|
+
__exportStar(require("./chopsticks-provider"), exports);
|
|
43
|
+
__exportStar(require("./genesis-provider"), exports);
|
|
42
44
|
__exportStar(require("./rpc"), exports);
|
|
@@ -66,9 +66,12 @@ const author_submitAndWatchExtrinsic = (context, [extrinsic], { subscribe, unsub
|
|
|
66
66
|
});
|
|
67
67
|
try {
|
|
68
68
|
yield context.chain.submitExtrinsic(extrinsic);
|
|
69
|
-
callback
|
|
70
|
-
|
|
71
|
-
|
|
69
|
+
// send callback after subscription id is returned
|
|
70
|
+
setTimeout(() => {
|
|
71
|
+
callback({
|
|
72
|
+
ready: null,
|
|
73
|
+
});
|
|
74
|
+
}, 50);
|
|
72
75
|
}
|
|
73
76
|
catch (error) {
|
|
74
77
|
logger.error({ error }, 'ExtrinsicFailed');
|
|
@@ -78,7 +78,7 @@ const chain_subscribeNewHead = (context, _params, { subscribe }) => __awaiter(vo
|
|
|
78
78
|
update = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
79
79
|
callback(processHeader(yield context.chain.head.header));
|
|
80
80
|
});
|
|
81
|
-
update
|
|
81
|
+
setTimeout(update, 50);
|
|
82
82
|
return id;
|
|
83
83
|
});
|
|
84
84
|
exports.chain_subscribeNewHead = chain_subscribeNewHead;
|
|
@@ -89,7 +89,7 @@ const chain_subscribeFinalizedHeads = (context, _params, { subscribe }) => __awa
|
|
|
89
89
|
update = () => __awaiter(void 0, void 0, void 0, function* () {
|
|
90
90
|
callback(processHeader(yield context.chain.head.header));
|
|
91
91
|
});
|
|
92
|
-
update
|
|
92
|
+
setTimeout(update, 50);
|
|
93
93
|
return id;
|
|
94
94
|
});
|
|
95
95
|
exports.chain_subscribeFinalizedHeads = chain_subscribeFinalizedHeads;
|