@sentio/sdk 2.1.5-rc.2 → 2.1.5-rc.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/lib/eth/provider.js +40 -3
- package/lib/eth/provider.js.map +1 -1
- package/package.json +5 -5
- package/src/eth/provider.ts +47 -3
package/lib/eth/provider.js
CHANGED
|
@@ -31,19 +31,56 @@ export function getProvider(networkish) {
|
|
|
31
31
|
providers.set(network.chainId.toString(), provider);
|
|
32
32
|
return provider;
|
|
33
33
|
}
|
|
34
|
+
function getTag(prefix, value) {
|
|
35
|
+
return (prefix +
|
|
36
|
+
':' +
|
|
37
|
+
JSON.stringify(value, (k, v) => {
|
|
38
|
+
if (v == null) {
|
|
39
|
+
return 'null';
|
|
40
|
+
}
|
|
41
|
+
if (typeof v === 'bigint') {
|
|
42
|
+
return `bigint:${v.toString()}`;
|
|
43
|
+
}
|
|
44
|
+
if (typeof v === 'string') {
|
|
45
|
+
return v.toLowerCase();
|
|
46
|
+
}
|
|
47
|
+
// Sort object keys
|
|
48
|
+
if (typeof v === 'object' && !Array.isArray(v)) {
|
|
49
|
+
const keys = Object.keys(v);
|
|
50
|
+
keys.sort();
|
|
51
|
+
return keys.reduce((accum, key) => {
|
|
52
|
+
accum[key] = v[key];
|
|
53
|
+
return accum;
|
|
54
|
+
}, {});
|
|
55
|
+
}
|
|
56
|
+
return v;
|
|
57
|
+
}));
|
|
58
|
+
}
|
|
34
59
|
class QueuedStaticJsonRpcProvider extends JsonRpcProvider {
|
|
35
60
|
executor;
|
|
61
|
+
#performCache = new Map();
|
|
36
62
|
constructor(url, network, concurrency) {
|
|
37
63
|
// TODO re-enable match when possible
|
|
38
64
|
super(url, network, { staticNetwork: network, batchMaxCount: 1 });
|
|
39
65
|
this.executor = new PQueue({ concurrency: concurrency });
|
|
40
66
|
}
|
|
41
67
|
async send(method, params) {
|
|
42
|
-
const
|
|
43
|
-
|
|
68
|
+
const tag = getTag(method, params);
|
|
69
|
+
let perform = this.#performCache.get(tag);
|
|
70
|
+
if (!perform) {
|
|
71
|
+
perform = this.executor.add(() => super.send(method, params));
|
|
72
|
+
this.#performCache.set(tag, perform);
|
|
73
|
+
setTimeout(() => {
|
|
74
|
+
if (this.#performCache.get(tag) === perform) {
|
|
75
|
+
this.#performCache.delete(tag);
|
|
76
|
+
}
|
|
77
|
+
}, 500);
|
|
78
|
+
}
|
|
79
|
+
const result = await perform;
|
|
80
|
+
if (!result) {
|
|
44
81
|
throw Error('Unexpected null response');
|
|
45
82
|
}
|
|
46
|
-
return
|
|
83
|
+
return result;
|
|
47
84
|
}
|
|
48
85
|
}
|
|
49
86
|
//# sourceMappingURL=provider.js.map
|
package/lib/eth/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/eth/provider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAA;AAG3D,OAAO,MAAM,MAAM,SAAS,CAAA;AAC5B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAE3C,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AAErE,MAAM,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAA;AAEpD,MAAM,UAAU,WAAW,CAAC,UAAuB;IACjD,IAAI,CAAC,UAAU,EAAE;QACf,UAAU,GAAG,CAAC,CAAA;KACf;IACD,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE;QAClC,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAA;QAC/B,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;YACd,UAAU,GAAG,CAAC,CAAA;SACf;KACF;IACD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACxC,iCAAiC;IAEjC,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC9E,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,GAAG,GAAG,OAAO,CAAA;IACtD,IAAI,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAEjC,IAAI,QAAQ,EAAE;QACZ,OAAO,QAAQ,CAAA;KAChB;IAED,IAAI,OAAO,KAAK,SAAS,EAAE;QACzB,MAAM,KAAK,CACT,+BAA+B;YAC7B,OAAO,CAAC,OAAO;YACf,uBAAuB;YACvB,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CACvD,CAAA;KACF;IACD,QAAQ,GAAG,IAAI,2BAA2B,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAC1G,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,CAAA;IACnD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,2BAA4B,SAAQ,eAAe;IACvD,QAAQ,CAAQ;
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/eth/provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { Provider, Network, JsonRpcProvider } from 'ethers'\nimport { Networkish } from 'ethers/providers'\n\nimport PQueue from 'p-queue'\nimport { Endpoints } from '@sentio/runtime'\n\nexport const DummyProvider = new JsonRpcProvider('', Network.from(1))\n\nconst providers = new Map<string, JsonRpcProvider>()\n\nexport function getProvider(networkish?: Networkish): Provider {\n if (!networkish) {\n networkish = 1\n }\n if (typeof networkish === 'string') {\n const id = parseInt(networkish)\n if (!isNaN(id)) {\n networkish = 1\n }\n }\n const network = Network.from(networkish)\n // TODO check if other key needed\n\n const address = Endpoints.INSTANCE.chainServer.get(network.chainId.toString())\n const key = network.chainId.toString() + '-' + address\n let provider = providers.get(key)\n\n if (provider) {\n return provider\n }\n\n if (address === undefined) {\n throw Error(\n 'Provider not found for chain ' +\n network.chainId +\n ', configured chains: ' +\n [...Endpoints.INSTANCE.chainServer.keys()].join(' ')\n )\n }\n provider = new QueuedStaticJsonRpcProvider(address, Network.from(network), Endpoints.INSTANCE.concurrency)\n providers.set(network.chainId.toString(), provider)\n return provider\n}\n\nfunction getTag(prefix: string, value: any): string {\n return (\n prefix +\n ':' +\n JSON.stringify(value, (k, v) => {\n if (v == null) {\n return 'null'\n }\n if (typeof v === 'bigint') {\n return `bigint:${v.toString()}`\n }\n if (typeof v === 'string') {\n return v.toLowerCase()\n }\n\n // Sort object keys\n if (typeof v === 'object' && !Array.isArray(v)) {\n const keys = Object.keys(v)\n keys.sort()\n return keys.reduce((accum, key) => {\n accum[key] = v[key]\n return accum\n }, <any>{})\n }\n\n return v\n })\n )\n}\n\nclass QueuedStaticJsonRpcProvider extends JsonRpcProvider {\n executor: PQueue\n #performCache = new Map<string, Promise<any>>()\n\n constructor(url: string, network: Network, concurrency: number) {\n // TODO re-enable match when possible\n super(url, network, { staticNetwork: network, batchMaxCount: 1 })\n this.executor = new PQueue({ concurrency: concurrency })\n }\n\n async send(method: string, params: Array<any>): Promise<any> {\n const tag = getTag(method, params)\n let perform = this.#performCache.get(tag)\n if (!perform) {\n perform = this.executor.add(() => super.send(method, params))\n this.#performCache.set(tag, perform)\n\n setTimeout(() => {\n if (this.#performCache.get(tag) === perform) {\n this.#performCache.delete(tag)\n }\n }, 500)\n }\n\n const result = await perform\n if (!result) {\n throw Error('Unexpected null response')\n }\n return result\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sentio/sdk",
|
|
3
3
|
"license": "Apache-2.0",
|
|
4
|
-
"version": "2.1.5-rc.
|
|
4
|
+
"version": "2.1.5-rc.3",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"compile": "tsc -p . && cp src/utils/*.csv lib/utils && cp src/tsup.config.ts lib",
|
|
@@ -18,9 +18,9 @@
|
|
|
18
18
|
"@project-serum/anchor": "^0.26.0",
|
|
19
19
|
"@sentio/bigdecimal": "^9.1.1-patch.3",
|
|
20
20
|
"@sentio/ethers-v6": "^1.0.25",
|
|
21
|
-
"@sentio/protos": "^2.1.5-rc.
|
|
22
|
-
"@sentio/runtime": "^2.1.5-rc.
|
|
23
|
-
"@sentio/sdk": "^2.1.5-rc.
|
|
21
|
+
"@sentio/protos": "^2.1.5-rc.3",
|
|
22
|
+
"@sentio/runtime": "^2.1.5-rc.3",
|
|
23
|
+
"@sentio/sdk": "^2.1.5-rc.3",
|
|
24
24
|
"@solana/web3.js": "^1.47.3",
|
|
25
25
|
"@types/prettier": "^2.7.2",
|
|
26
26
|
"aptos-sdk": "npm:@sentio/aptos@^1.6.0",
|
|
@@ -71,5 +71,5 @@
|
|
|
71
71
|
"typedoc": {
|
|
72
72
|
"entryPoint": "./src/index.ts"
|
|
73
73
|
},
|
|
74
|
-
"gitHead": "
|
|
74
|
+
"gitHead": "2a56b34cc14f22e0da27e16a20e16009d027664e"
|
|
75
75
|
}
|
package/src/eth/provider.ts
CHANGED
|
@@ -42,8 +42,39 @@ export function getProvider(networkish?: Networkish): Provider {
|
|
|
42
42
|
return provider
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
+
function getTag(prefix: string, value: any): string {
|
|
46
|
+
return (
|
|
47
|
+
prefix +
|
|
48
|
+
':' +
|
|
49
|
+
JSON.stringify(value, (k, v) => {
|
|
50
|
+
if (v == null) {
|
|
51
|
+
return 'null'
|
|
52
|
+
}
|
|
53
|
+
if (typeof v === 'bigint') {
|
|
54
|
+
return `bigint:${v.toString()}`
|
|
55
|
+
}
|
|
56
|
+
if (typeof v === 'string') {
|
|
57
|
+
return v.toLowerCase()
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// Sort object keys
|
|
61
|
+
if (typeof v === 'object' && !Array.isArray(v)) {
|
|
62
|
+
const keys = Object.keys(v)
|
|
63
|
+
keys.sort()
|
|
64
|
+
return keys.reduce((accum, key) => {
|
|
65
|
+
accum[key] = v[key]
|
|
66
|
+
return accum
|
|
67
|
+
}, <any>{})
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return v
|
|
71
|
+
})
|
|
72
|
+
)
|
|
73
|
+
}
|
|
74
|
+
|
|
45
75
|
class QueuedStaticJsonRpcProvider extends JsonRpcProvider {
|
|
46
76
|
executor: PQueue
|
|
77
|
+
#performCache = new Map<string, Promise<any>>()
|
|
47
78
|
|
|
48
79
|
constructor(url: string, network: Network, concurrency: number) {
|
|
49
80
|
// TODO re-enable match when possible
|
|
@@ -52,10 +83,23 @@ class QueuedStaticJsonRpcProvider extends JsonRpcProvider {
|
|
|
52
83
|
}
|
|
53
84
|
|
|
54
85
|
async send(method: string, params: Array<any>): Promise<any> {
|
|
55
|
-
const
|
|
56
|
-
|
|
86
|
+
const tag = getTag(method, params)
|
|
87
|
+
let perform = this.#performCache.get(tag)
|
|
88
|
+
if (!perform) {
|
|
89
|
+
perform = this.executor.add(() => super.send(method, params))
|
|
90
|
+
this.#performCache.set(tag, perform)
|
|
91
|
+
|
|
92
|
+
setTimeout(() => {
|
|
93
|
+
if (this.#performCache.get(tag) === perform) {
|
|
94
|
+
this.#performCache.delete(tag)
|
|
95
|
+
}
|
|
96
|
+
}, 500)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
const result = await perform
|
|
100
|
+
if (!result) {
|
|
57
101
|
throw Error('Unexpected null response')
|
|
58
102
|
}
|
|
59
|
-
return
|
|
103
|
+
return result
|
|
60
104
|
}
|
|
61
105
|
}
|