@acala-network/chopsticks-core 0.9.1-1 → 0.9.1-2

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/cjs/api.js CHANGED
@@ -124,6 +124,18 @@ class Api {
124
124
  return __classPrivateFieldGet(this, _Api_provider, "f").send('state_getKeysPaged', params, !!hash);
125
125
  }
126
126
  }
127
+ async subscribeRemoteNewHeads(cb) {
128
+ if (!__classPrivateFieldGet(this, _Api_provider, "f").hasSubscriptions) {
129
+ throw new Error('subscribeRemoteNewHeads only works with subscriptions');
130
+ }
131
+ return __classPrivateFieldGet(this, _Api_provider, "f").subscribe('chain_newHead', 'chain_subscribeNewHeads', [], cb);
132
+ }
133
+ async subscribeRemoteFinalizedHeads(cb) {
134
+ if (!__classPrivateFieldGet(this, _Api_provider, "f").hasSubscriptions) {
135
+ throw new Error('subscribeRemoteFinalizedHeads only works with subscriptions');
136
+ }
137
+ return __classPrivateFieldGet(this, _Api_provider, "f").subscribe('chain_finalizedHead', 'chain_subscribeFinalizedHeads', [], cb);
138
+ }
127
139
  }
128
140
  exports.Api = Api;
129
141
  _Api_provider = new WeakMap(), _Api_ready = new WeakMap(), _Api_chain = new WeakMap(), _Api_chainProperties = new WeakMap();
@@ -16,7 +16,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
16
16
  var _TxPool_instances, _TxPool_chain, _TxPool_pool, _TxPool_ump, _TxPool_dmp, _TxPool_hrmp, _TxPool_mode, _TxPool_inherentProvider, _TxPool_pendingBlocks, _TxPool_isBuilding, _TxPool_getSigner, _TxPool_maybeBuildBlock, _TxPool_batchBuildBlock, _TxPool_buildBlockIfNeeded, _TxPool_buildBlock;
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
18
  exports.TxPool = exports.BuildBlockMode = exports.APPLY_EXTRINSIC_ERROR = void 0;
19
- const eventemitter3_1 = require("eventemitter3");
19
+ const eventemitter3_1 = __importDefault(require("eventemitter3"));
20
20
  const lodash_1 = __importDefault(require("lodash"));
21
21
  const utils_1 = require("../utils");
22
22
  const block_builder_1 = require("./block-builder");
@@ -43,7 +43,7 @@ class TxPool {
43
43
  _TxPool_mode.set(this, void 0);
44
44
  _TxPool_inherentProvider.set(this, void 0);
45
45
  _TxPool_pendingBlocks.set(this, []);
46
- this.event = new eventemitter3_1.EventEmitter();
46
+ this.event = new eventemitter3_1.default();
47
47
  _TxPool_isBuilding.set(this, false);
48
48
  _TxPool_batchBuildBlock.set(this, lodash_1.default.debounce(this.buildBlock, 100, { maxWait: 1000 }));
49
49
  __classPrivateFieldSet(this, _TxPool_chain, chain, "f");
@@ -10,10 +10,13 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  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");
11
11
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
12
  };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
13
16
  var _a, _ChopsticksProvider_isConnected, _ChopsticksProvider_eventemitter, _ChopsticksProvider_isReadyPromise, _ChopsticksProvider_subscriptions;
14
17
  Object.defineProperty(exports, "__esModule", { value: true });
15
18
  exports.ChopsticksProvider = void 0;
16
- const eventemitter3_1 = require("eventemitter3");
19
+ const eventemitter3_1 = __importDefault(require("eventemitter3"));
17
20
  const rpc_1 = require("./rpc");
18
21
  const logger_1 = require("./logger");
19
22
  const setup_1 = require("./setup");
@@ -113,7 +116,7 @@ class ChopsticksProvider {
113
116
  throw e;
114
117
  }
115
118
  };
116
- __classPrivateFieldSet(this, _ChopsticksProvider_eventemitter, new eventemitter3_1.EventEmitter(), "f");
119
+ __classPrivateFieldSet(this, _ChopsticksProvider_eventemitter, new eventemitter3_1.default(), "f");
117
120
  __classPrivateFieldSet(this, _ChopsticksProvider_isReadyPromise, new Promise((resolve, reject) => {
118
121
  __classPrivateFieldGet(this, _ChopsticksProvider_eventemitter, "f").once('connected', resolve);
119
122
  __classPrivateFieldGet(this, _ChopsticksProvider_eventemitter, "f").once('error', reject);
@@ -10,10 +10,13 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  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");
11
11
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
12
12
  };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
13
16
  var _GenesisProvider_isConnected, _GenesisProvider_eventemitter, _GenesisProvider_isReadyPromise, _GenesisProvider_genesis, _GenesisProvider_stateRoot;
14
17
  Object.defineProperty(exports, "__esModule", { value: true });
15
18
  exports.GenesisProvider = void 0;
16
- const eventemitter3_1 = require("eventemitter3");
19
+ const eventemitter3_1 = __importDefault(require("eventemitter3"));
17
20
  const schema_1 = require("./schema");
18
21
  const wasm_executor_1 = require("./wasm-executor");
19
22
  /**
@@ -104,7 +107,7 @@ class GenesisProvider {
104
107
  accu.push(item);
105
108
  return accu;
106
109
  }, []), 1), "f");
107
- __classPrivateFieldSet(this, _GenesisProvider_eventemitter, new eventemitter3_1.EventEmitter(), "f");
110
+ __classPrivateFieldSet(this, _GenesisProvider_eventemitter, new eventemitter3_1.default(), "f");
108
111
  __classPrivateFieldSet(this, _GenesisProvider_isReadyPromise, new Promise((resolve, reject) => {
109
112
  __classPrivateFieldGet(this, _GenesisProvider_eventemitter, "f").once('connected', () => {
110
113
  resolve();
@@ -7,10 +7,41 @@ exports.startWorker = void 0;
7
7
  const comlink_1 = require("comlink");
8
8
  const node_adapter_js_1 = __importDefault(require("comlink/dist/umd/node-adapter.js"));
9
9
  const node_worker_threads_1 = __importDefault(require("node:worker_threads"));
10
- const node_url_1 = __importDefault(require("node:url"));
11
10
  const startWorker = async () => {
12
- const worker = new node_worker_threads_1.default.Worker(node_url_1.default.resolve(__filename, 'node-wasm-executor.mjs'), {
11
+ const workerCode = `
12
+ const Comlink = require('comlink')
13
+ const pkg = require('@acala-network/chopsticks-executor')
14
+ const { parentPort } = require('node:worker_threads')
15
+ const nodeEndpoint = require('comlink/dist/umd/node-adapter.js')
16
+
17
+ const getRuntimeVersion = async (code) => {
18
+ return pkg.get_runtime_version(code)
19
+ }
20
+
21
+ // trie_version: 0 for old trie, 1 for new trie
22
+ const calculateStateRoot = async (entries, trie_version) => {
23
+ return pkg.calculate_state_root(entries, trie_version)
24
+ }
25
+
26
+ const decodeProof = async (trieRootHash, keys, nodes) => {
27
+ return pkg.decode_proof(trieRootHash, keys, nodes)
28
+ }
29
+
30
+ const createProof = async (nodes, entries) => {
31
+ return pkg.create_proof(nodes, entries)
32
+ }
33
+
34
+ const runTask = async (task, callback) => {
35
+ return pkg.run_task(task, callback, process.env.RUST_LOG)
36
+ }
37
+
38
+ const wasmExecutor = { runTask, getRuntimeVersion, calculateStateRoot, createProof, decodeProof }
39
+
40
+ Comlink.expose(wasmExecutor, nodeEndpoint(parentPort))
41
+ `;
42
+ const worker = new node_worker_threads_1.default.Worker(workerCode, {
13
43
  name: 'chopsticks-wasm-executor',
44
+ eval: true,
14
45
  });
15
46
  return {
16
47
  remote: (0, comlink_1.wrap)((0, node_adapter_js_1.default)(worker)),
package/dist/esm/api.js CHANGED
@@ -121,5 +121,17 @@ export class Api {
121
121
  return __classPrivateFieldGet(this, _Api_provider, "f").send('state_getKeysPaged', params, !!hash);
122
122
  }
123
123
  }
124
+ async subscribeRemoteNewHeads(cb) {
125
+ if (!__classPrivateFieldGet(this, _Api_provider, "f").hasSubscriptions) {
126
+ throw new Error('subscribeRemoteNewHeads only works with subscriptions');
127
+ }
128
+ return __classPrivateFieldGet(this, _Api_provider, "f").subscribe('chain_newHead', 'chain_subscribeNewHeads', [], cb);
129
+ }
130
+ async subscribeRemoteFinalizedHeads(cb) {
131
+ if (!__classPrivateFieldGet(this, _Api_provider, "f").hasSubscriptions) {
132
+ throw new Error('subscribeRemoteFinalizedHeads only works with subscriptions');
133
+ }
134
+ return __classPrivateFieldGet(this, _Api_provider, "f").subscribe('chain_finalizedHead', 'chain_subscribeFinalizedHeads', [], cb);
135
+ }
124
136
  }
125
137
  _Api_provider = new WeakMap(), _Api_ready = new WeakMap(), _Api_chain = new WeakMap(), _Api_chainProperties = new WeakMap();
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _TxPool_instances, _TxPool_chain, _TxPool_pool, _TxPool_ump, _TxPool_dmp, _TxPool_hrmp, _TxPool_mode, _TxPool_inherentProvider, _TxPool_pendingBlocks, _TxPool_isBuilding, _TxPool_getSigner, _TxPool_maybeBuildBlock, _TxPool_batchBuildBlock, _TxPool_buildBlockIfNeeded, _TxPool_buildBlock;
13
- import { EventEmitter } from 'eventemitter3';
13
+ import { default as EventEmitter } from 'eventemitter3';
14
14
  import _ from 'lodash';
15
15
  import { defer } from '../utils';
16
16
  import { buildBlock } from './block-builder';
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _a, _ChopsticksProvider_isConnected, _ChopsticksProvider_eventemitter, _ChopsticksProvider_isReadyPromise, _ChopsticksProvider_subscriptions;
13
- import { EventEmitter } from 'eventemitter3';
13
+ import { default as EventEmitter } from 'eventemitter3';
14
14
  import { allHandlers } from './rpc';
15
15
  import { defaultLogger } from './logger';
16
16
  import { setup } from './setup';
@@ -10,7 +10,7 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _GenesisProvider_isConnected, _GenesisProvider_eventemitter, _GenesisProvider_isReadyPromise, _GenesisProvider_genesis, _GenesisProvider_stateRoot;
13
- import { EventEmitter } from 'eventemitter3';
13
+ import { default as EventEmitter } from 'eventemitter3';
14
14
  import { genesisSchema } from './schema';
15
15
  import { calculateStateRoot, emptyTaskHandler } from './wasm-executor';
16
16
  /**
@@ -0,0 +1 @@
1
+ {"type": "module"}
@@ -1,10 +1,41 @@
1
1
  import { wrap } from 'comlink';
2
2
  import nodeEndpoint from 'comlink/dist/umd/node-adapter.js';
3
3
  import threads from 'node:worker_threads';
4
- import url from 'node:url';
5
4
  export const startWorker = async () => {
6
- const worker = new threads.Worker(url.resolve(__filename, 'node-wasm-executor.mjs'), {
5
+ const workerCode = `
6
+ const Comlink = require('comlink')
7
+ const pkg = require('@acala-network/chopsticks-executor')
8
+ const { parentPort } = require('node:worker_threads')
9
+ const nodeEndpoint = require('comlink/dist/umd/node-adapter.js')
10
+
11
+ const getRuntimeVersion = async (code) => {
12
+ return pkg.get_runtime_version(code)
13
+ }
14
+
15
+ // trie_version: 0 for old trie, 1 for new trie
16
+ const calculateStateRoot = async (entries, trie_version) => {
17
+ return pkg.calculate_state_root(entries, trie_version)
18
+ }
19
+
20
+ const decodeProof = async (trieRootHash, keys, nodes) => {
21
+ return pkg.decode_proof(trieRootHash, keys, nodes)
22
+ }
23
+
24
+ const createProof = async (nodes, entries) => {
25
+ return pkg.create_proof(nodes, entries)
26
+ }
27
+
28
+ const runTask = async (task, callback) => {
29
+ return pkg.run_task(task, callback, process.env.RUST_LOG)
30
+ }
31
+
32
+ const wasmExecutor = { runTask, getRuntimeVersion, calculateStateRoot, createProof, decodeProof }
33
+
34
+ Comlink.expose(wasmExecutor, nodeEndpoint(parentPort))
35
+ `;
36
+ const worker = new threads.Worker(workerCode, {
7
37
  name: 'chopsticks-wasm-executor',
38
+ eval: true,
8
39
  });
9
40
  return {
10
41
  remote: wrap(nodeEndpoint(worker)),
@@ -1,6 +1,6 @@
1
1
  import { ExtDef } from '@polkadot/types/extrinsic/signedExtensions/types';
2
2
  import { HexString } from '@polkadot/util/types';
3
- import { ProviderInterface } from '@polkadot/rpc-provider/types';
3
+ import { ProviderInterface, ProviderInterfaceCallback } from '@polkadot/rpc-provider/types';
4
4
  export type ChainProperties = {
5
5
  ss58Format?: number;
6
6
  tokenDecimals?: number[];
@@ -50,5 +50,7 @@ export declare class Api {
50
50
  getBlock(hash?: string): Promise<SignedBlock | null>;
51
51
  getStorage(key: string, hash?: string): Promise<`0x${string}` | null>;
52
52
  getKeysPaged(prefix: string, pageSize: number, startKey: string, hash?: string): Promise<string[]>;
53
+ subscribeRemoteNewHeads(cb: ProviderInterfaceCallback): Promise<string | number>;
54
+ subscribeRemoteFinalizedHeads(cb: ProviderInterfaceCallback): Promise<string | number>;
53
55
  }
54
56
  export {};
@@ -1,4 +1,4 @@
1
- import { EventEmitter } from 'eventemitter3';
1
+ import { default as EventEmitter } from 'eventemitter3';
2
2
  import { HexString } from '@polkadot/util/types';
3
3
  import { Blockchain } from '.';
4
4
  import { InherentProvider } from './inherent';
@@ -1,5 +1,4 @@
1
- import type { WasmExecutor } from '.';
2
- export declare const startWorker: () => Promise<{
3
- remote: import("comlink").Remote<WasmExecutor>;
1
+ export declare const startWorker: <T>() => Promise<{
2
+ remote: import("comlink").Remote<T>;
4
3
  terminate: () => Promise<void>;
5
4
  }>;
@@ -1,5 +1,4 @@
1
- import type { WasmExecutor } from '.';
2
- export declare const startWorker: () => Promise<{
3
- remote: import("comlink").Remote<WasmExecutor>;
1
+ export declare const startWorker: <T>() => Promise<{
2
+ remote: import("comlink").Remote<T>;
4
3
  terminate: () => Promise<void>;
5
4
  }>;
package/package.json CHANGED
@@ -1,16 +1,16 @@
1
1
  {
2
2
  "name": "@acala-network/chopsticks-core",
3
- "version": "0.9.1-1",
3
+ "version": "0.9.1-2",
4
4
  "author": "Acala Developers <hello@acala.network>",
5
5
  "license": "Apache-2.0",
6
6
  "scripts": {
7
7
  "clean": "rm -rf dist",
8
- "build": "yarn clean && tsc -p ./tsconfig.json && tsc -p ./tsconfig.esm.json && yarn copyfiles",
8
+ "build": "yarn clean && tsc -p ./tsconfig.json && tsc -p ./tsconfig.esm.json && echo '{\"type\": \"module\"}' > ./dist/esm/package.json && yarn copyfiles",
9
9
  "copyfiles": "cp -r src/wasm-executor/*.mjs dist/cjs/wasm-executor/ && cp -r src/wasm-executor/*.mjs dist/esm/wasm-executor/",
10
10
  "docs:prep": "typedoc"
11
11
  },
12
12
  "dependencies": {
13
- "@acala-network/chopsticks-executor": "0.9.1-1",
13
+ "@acala-network/chopsticks-executor": "0.9.1-2",
14
14
  "@polkadot/api": "^10.10.1",
15
15
  "@polkadot/util-crypto": "^12.5.1",
16
16
  "comlink": "^4.4.1",
@@ -45,12 +45,11 @@
45
45
  "import": "./dist/esm/index.js",
46
46
  "default": "./dist/esm/index.js"
47
47
  },
48
- "./package.json": "./package.json"
48
+ "./package.json": "./package.json",
49
+ "./package.esm.json": "./dist/esm/package.json"
49
50
  },
50
51
  "browser": {
51
- "./dist/cjs/wasm-executor/node-wasm-executor.mjs": "./dist/cjs/wasm-executor/browser-wasm-executor.mjs",
52
52
  "./dist/cjs/wasm-executor/node-worker.js": "./dist/cjs/wasm-executor/browser-worker.js",
53
- "./dist/esm/wasm-executor/node-wasm-executor.mjs": "./dist/esm/wasm-executor/browser-wasm-executor.mjs",
54
53
  "./dist/esm/wasm-executor/node-worker.js": "./dist/esm/wasm-executor/browser-worker.js"
55
54
  }
56
55
  }
@@ -1,29 +0,0 @@
1
- import * as Comlink from 'comlink'
2
- import * as pkg from '@acala-network/chopsticks-executor'
3
- import { parentPort } from 'node:worker_threads'
4
- import nodeEndpoint from 'comlink/dist/umd/node-adapter.js'
5
-
6
- const getRuntimeVersion = async (code) => {
7
- return pkg.get_runtime_version(code)
8
- }
9
-
10
- // trie_version: 0 for old trie, 1 for new trie
11
- const calculateStateRoot = async (entries, trie_version) => {
12
- return pkg.calculate_state_root(entries, trie_version)
13
- }
14
-
15
- const decodeProof = async (trieRootHash, keys, nodes) => {
16
- return pkg.decode_proof(trieRootHash, keys, nodes)
17
- }
18
-
19
- const createProof = async (nodes, entries) => {
20
- return pkg.create_proof(nodes, entries)
21
- }
22
-
23
- const runTask = async (task, callback) => {
24
- return pkg.run_task(task, callback, process.env.RUST_LOG)
25
- }
26
-
27
- const wasmExecutor = { runTask, getRuntimeVersion, calculateStateRoot, createProof, decodeProof }
28
-
29
- Comlink.expose(wasmExecutor, nodeEndpoint(parentPort))
@@ -1,29 +0,0 @@
1
- import * as Comlink from 'comlink'
2
- import * as pkg from '@acala-network/chopsticks-executor'
3
- import { parentPort } from 'node:worker_threads'
4
- import nodeEndpoint from 'comlink/dist/umd/node-adapter.js'
5
-
6
- const getRuntimeVersion = async (code) => {
7
- return pkg.get_runtime_version(code)
8
- }
9
-
10
- // trie_version: 0 for old trie, 1 for new trie
11
- const calculateStateRoot = async (entries, trie_version) => {
12
- return pkg.calculate_state_root(entries, trie_version)
13
- }
14
-
15
- const decodeProof = async (trieRootHash, keys, nodes) => {
16
- return pkg.decode_proof(trieRootHash, keys, nodes)
17
- }
18
-
19
- const createProof = async (nodes, entries) => {
20
- return pkg.create_proof(nodes, entries)
21
- }
22
-
23
- const runTask = async (task, callback) => {
24
- return pkg.run_task(task, callback, process.env.RUST_LOG)
25
- }
26
-
27
- const wasmExecutor = { runTask, getRuntimeVersion, calculateStateRoot, createProof, decodeProof }
28
-
29
- Comlink.expose(wasmExecutor, nodeEndpoint(parentPort))