@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.
@@ -1,249 +1,169 @@
1
1
  "use strict";
2
- // import { EventEmitter } from 'eventemitter3'
3
- // import {
4
- // ProviderInterface,
5
- // ProviderInterfaceCallback,
6
- // ProviderInterfaceEmitCb,
7
- // ProviderInterfaceEmitted,
8
- // ProviderStats,
9
- // } from '@polkadot/rpc-provider/types'
10
- // import { StorageValues } from './utils'
11
- // import { defaultLogger } from './logger'
12
- // const logger = defaultLogger.child({ name: '[Chopsticks provider]' })
13
- // interface SubscriptionHandler {
14
- // callback: ProviderInterfaceCallback
15
- // type: string
16
- // }
17
- // interface Subscription extends SubscriptionHandler {
18
- // method: string
19
- // params: unknown[]
20
- // onCancel?: () => void
21
- // result?: unknown
22
- // }
23
- // interface Handler {
24
- // callback: ProviderInterfaceCallback
25
- // method: string
26
- // params: unknown[]
27
- // start: number
28
- // subscription?: SubscriptionHandler | undefined
29
- // }
30
- // export interface ChopsticksProviderProps {
31
- // /** upstream endpoint */
32
- // endpoint: string
33
- // /** default to latest block */
34
- // blockHash?: string
35
- // dbPath?: string
36
- // storageValues?: StorageValues
37
- // }
38
- // /**
39
- // * A provider for ApiPromise.
40
- // *
41
- // * Currectly only support browser environment.
42
- // */
43
- // export class ChopsticksProvider implements ProviderInterface {
44
- // #isConnected = false
45
- // #eventemitter: EventEmitter
46
- // #isReadyPromise: Promise<void>
47
- // #endpoint: string
48
- // readonly stats?: ProviderStats
49
- // #subscriptions: Record<string, Subscription> = {}
50
- // #worker: Worker
51
- // #blockHash: string | undefined
52
- // #dbPath: string | undefined
53
- // #storageValues: StorageValues | undefined
54
- // #handlers: Record<string, Handler> = {}
55
- // #idCounter = 0
56
- // constructor({ endpoint, blockHash, dbPath, storageValues }: ChopsticksProviderProps) {
57
- // if (!endpoint) {
58
- // throw new Error('ChopsticksProvider requires the upstream endpoint')
59
- // }
60
- // this.#endpoint = endpoint
61
- // this.#blockHash = blockHash
62
- // this.#dbPath = dbPath
63
- // this.#storageValues = storageValues
64
- // this.#eventemitter = new EventEmitter()
65
- // this.#isReadyPromise = new Promise((resolve, reject): void => {
66
- // this.#eventemitter.once('connected', (): void => {
67
- // logger.debug('isReadyPromise: connected.')
68
- // resolve()
69
- // })
70
- // this.#eventemitter.once('error', reject)
71
- // })
72
- // const chopsticksWorker = new Worker(new URL('./chopsticks-worker', import.meta.url), { type: 'module' })
73
- // this.#worker = chopsticksWorker
74
- // this.connect()
75
- // }
76
- // get hasSubscriptions(): boolean {
77
- // return true
78
- // }
79
- // get isClonable(): boolean {
80
- // return true
81
- // }
82
- // get isConnected(): boolean {
83
- // return this.#isConnected
84
- // }
85
- // get isReady(): Promise<void> {
86
- // return this.#isReadyPromise
87
- // }
88
- // clone = (): ProviderInterface => {
89
- // return new ChopsticksProvider({ endpoint: this.#endpoint })
90
- // }
91
- // connect = async (): Promise<void> => {
92
- // if (this.#isConnected) {
93
- // return
94
- // }
95
- // this.#worker!.onmessage = this.#onWorkerMessage
96
- // this.#worker?.postMessage({
97
- // type: 'connect',
98
- // endpoint: this.#endpoint,
99
- // blockHash: this.#blockHash,
100
- // dbPath: this.#dbPath,
101
- // storageValues: this.#storageValues,
102
- // })
103
- // }
104
- // disconnect = async (): Promise<void> => {
105
- // this.#worker?.postMessage({ type: 'disconnect' })
106
- // this.#isConnected = false
107
- // this.#eventemitter.emit('disconnected')
108
- // }
109
- // on = (type: ProviderInterfaceEmitted, sub: ProviderInterfaceEmitCb): (() => void) => {
110
- // this.#eventemitter.on(type, sub)
111
- // return (): void => {
112
- // this.#eventemitter.removeListener(type, sub)
113
- // }
114
- // }
115
- // send = async <T>(
116
- // method: string,
117
- // params: unknown[],
118
- // _isCacheable?: boolean,
119
- // subscription?: SubscriptionHandler,
120
- // ): Promise<T> => {
121
- // return new Promise<T>((resolve, reject): void => {
122
- // try {
123
- // if (!this.isConnected || this.#worker === undefined) {
124
- // throw new Error('Api is not connected')
125
- // }
126
- // logger.debug('send', { method, params })
127
- // const id = `${method}::${this.#idCounter++}`
128
- // const callback = (error?: Error | null, result?: T): void => {
129
- // if (subscription) {
130
- // // if it's a subscription, we usually returns the subid
131
- // const subid = result as string
132
- // if (subid) {
133
- // if (!this.#subscriptions[subid]) {
134
- // this.#subscriptions[subid] = {
135
- // callback: subscription.callback,
136
- // method,
137
- // params,
138
- // type: subscription.type,
139
- // }
140
- // }
141
- // }
142
- // }
143
- // error ? reject(error) : resolve(result as T)
144
- // }
145
- // this.#handlers[id] = {
146
- // callback,
147
- // method,
148
- // params,
149
- // start: Date.now(),
150
- // subscription,
151
- // }
152
- // this.#worker?.postMessage({
153
- // type: 'send',
154
- // id,
155
- // method,
156
- // params,
157
- // })
158
- // } catch (error) {
159
- // reject(error)
160
- // }
161
- // })
162
- // }
163
- // subscribe(
164
- // type: string,
165
- // method: string,
166
- // params: unknown[],
167
- // callback: ProviderInterfaceCallback,
168
- // ): Promise<number | string> {
169
- // return this.send<string | number>(method, params, false, { callback, type })
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
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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;
@@ -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 __importDefault = (this && this.__importDefault) || function (mod) {
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
- _a = GenesisProvider, _GenesisProvider_isConnected = new WeakMap(), _GenesisProvider_eventemitter = new WeakMap(), _GenesisProvider_isReadyPromise = new WeakMap(), _GenesisProvider_genesis = new WeakMap(), _GenesisProvider_stateRoot = new WeakMap();
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
- // export * from './chopsticks-provider'
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
- ready: null,
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;