dequanto 0.2.46 → 0.2.47
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/cjs/clients/ClientPool.js +14 -0
- package/lib/cjs/clients/ClientPool.js.map +1 -1
- package/lib/cjs/clients/Web3Client.js +4 -1
- package/lib/cjs/clients/Web3Client.js.map +1 -1
- package/lib/cjs/clients/model/ClientStatus.js +1 -0
- package/lib/cjs/clients/model/ClientStatus.js.map +1 -1
- package/lib/cjs/clients/utils/ClientErrorUtil.js +9 -0
- package/lib/cjs/clients/utils/ClientErrorUtil.js.map +1 -1
- package/lib/cjs/config/ConfigDefaults.js +0 -3
- package/lib/cjs/config/ConfigDefaults.js.map +1 -1
- package/lib/cjs/contracts/ContractCreationResolver.js +1 -0
- package/lib/cjs/contracts/ContractCreationResolver.js.map +1 -1
- package/lib/cjs/rpc/RpcBase.js +4 -1
- package/lib/cjs/rpc/RpcBase.js.map +1 -1
- package/lib/cjs/solidity/utils/$str.js +1 -1
- package/lib/cjs/solidity/utils/$str.js.map +1 -1
- package/lib/cjs/utils/$base.js +1 -1
- package/lib/cjs/utils/$base.js.map +1 -1
- package/lib/cjs/utils/$crypto.js.map +1 -1
- package/lib/cjs/utils/$hex.js +15 -3
- package/lib/cjs/utils/$hex.js.map +1 -1
- package/lib/esm/clients/ClientPool.js.map +1 -1
- package/lib/esm/clients/ClientPool.mjs +14 -0
- package/lib/esm/clients/Web3Client.js.map +1 -1
- package/lib/esm/clients/Web3Client.mjs +4 -1
- package/lib/esm/clients/model/ClientStatus.js.map +1 -1
- package/lib/esm/clients/model/ClientStatus.mjs +1 -0
- package/lib/esm/clients/utils/ClientErrorUtil.js.map +1 -1
- package/lib/esm/clients/utils/ClientErrorUtil.mjs +9 -0
- package/lib/esm/config/ConfigDefaults.js.map +1 -1
- package/lib/esm/config/ConfigDefaults.mjs +0 -3
- package/lib/esm/contracts/ContractCreationResolver.js.map +1 -1
- package/lib/esm/contracts/ContractCreationResolver.mjs +1 -0
- package/lib/esm/rpc/RpcBase.js.map +1 -1
- package/lib/esm/rpc/RpcBase.mjs +4 -1
- package/lib/esm/solidity/utils/$str.js.map +1 -1
- package/lib/esm/solidity/utils/$str.mjs +1 -1
- package/lib/esm/utils/$base.js.map +1 -1
- package/lib/esm/utils/$base.mjs +1 -1
- package/lib/esm/utils/$crypto.js.map +1 -1
- package/lib/esm/utils/$hex.js.map +1 -1
- package/lib/esm/utils/$hex.mjs +15 -3
- package/lib/types/clients/ClientPool.d.ts +2 -0
- package/lib/types/clients/model/ClientStatus.d.ts +1 -0
- package/lib/types/clients/utils/ClientErrorUtil.d.ts +4 -0
- package/lib/types/rpc/RpcBase.d.ts +1 -0
- package/lib/types/utils/$crypto.d.ts +3 -0
- package/lib/types/utils/$hex.d.ts +2 -0
- package/package.json +1 -1
- package/src/clients/ClientPool.ts +17 -1
- package/src/clients/Web3Client.ts +4 -1
- package/src/clients/model/ClientStatus.ts +1 -0
- package/src/clients/utils/ClientErrorUtil.ts +8 -0
- package/src/config/ConfigDefaults.ts +0 -3
- package/src/contracts/ContractCreationResolver.ts +1 -0
- package/src/rpc/RpcBase.ts +5 -1
- package/src/solidity/utils/$str.ts +1 -1
- package/src/utils/$base.ts +1 -1
- package/src/utils/$crypto.ts +1 -0
- package/src/utils/$hex.ts +12 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"$hex.js","sourceRoot":"","sources":["../../../src/utils/$hex.ts"],"names":[],"mappings":";;;AACA,uCAAoC;AACpC,yCAAsC;AACtC,IAAiB,IAAI,
|
|
1
|
+
{"version":3,"file":"$hex.js","sourceRoot":"","sources":["../../../src/utils/$hex.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/utils/$hex.mjs
CHANGED
|
@@ -22,12 +22,23 @@ export var $hex;
|
|
|
22
22
|
* Trims '00' bytes from start or end, e.g. 0x68656c6c6f000000 => 0x68656c6c6f
|
|
23
23
|
*/
|
|
24
24
|
function trimBytes(hex) {
|
|
25
|
-
|
|
25
|
+
return trimBytesEnd(trimBytesStart(hex));
|
|
26
|
+
}
|
|
27
|
+
$hex.trimBytes = trimBytes;
|
|
28
|
+
function trimBytesStart(hex) {
|
|
29
|
+
if (hex.startsWith('0x00') === false) {
|
|
26
30
|
return hex;
|
|
27
31
|
}
|
|
28
|
-
return hex.replace(/^0x(0{2})+/, '0x')
|
|
32
|
+
return hex.replace(/^0x(0{2})+/, '0x');
|
|
29
33
|
}
|
|
30
|
-
$hex.
|
|
34
|
+
$hex.trimBytesStart = trimBytesStart;
|
|
35
|
+
function trimBytesEnd(hex) {
|
|
36
|
+
if (hex.endsWith('00') === false) {
|
|
37
|
+
return hex;
|
|
38
|
+
}
|
|
39
|
+
return hex.replace(/(0{2})+$/, '');
|
|
40
|
+
}
|
|
41
|
+
$hex.trimBytesEnd = trimBytesEnd;
|
|
31
42
|
function trimLeadingZerosFromNumber(hex) {
|
|
32
43
|
hex = hex.replace(/^0x0*/, '');
|
|
33
44
|
return hex === '' ? '0x0' : `0x${hex}`;
|
|
@@ -130,6 +141,7 @@ export var $hex;
|
|
|
130
141
|
if (typeof mix === 'boolean') {
|
|
131
142
|
return mix ? '0x1' : '0x0';
|
|
132
143
|
}
|
|
144
|
+
$require.match(/^(0x)?[\da-f]*$/i, mix, 'NotValidHex');
|
|
133
145
|
if (mix.startsWith('0x')) {
|
|
134
146
|
return mix;
|
|
135
147
|
}
|
|
@@ -53,6 +53,8 @@ export interface IPoolWeb3Request {
|
|
|
53
53
|
method?: string;
|
|
54
54
|
batchRequestCount?: number;
|
|
55
55
|
blockRangeCount?: number;
|
|
56
|
+
/** Try another node when the RPC succeeds but returns null, e.g. tx not found on one provider. */
|
|
57
|
+
tryNextOnNull?: boolean;
|
|
56
58
|
}
|
|
57
59
|
export declare class ClientPool {
|
|
58
60
|
private discoveredPartial;
|
|
@@ -3,6 +3,9 @@ interface ICrypto {
|
|
|
3
3
|
randomBytes(size: number): Uint8Array;
|
|
4
4
|
randomUUID(): `${string}-${string}-${string}-${string}-${string}`;
|
|
5
5
|
createECDH(curve: string): any;
|
|
6
|
+
sha256(mix: string | TEth.Hex | Uint8Array, opts?: {
|
|
7
|
+
encoding: 'hex';
|
|
8
|
+
}): Promise<TEth.Hex>;
|
|
6
9
|
sha256(mix: string | TEth.Hex | Uint8Array): Promise<Uint8Array>;
|
|
7
10
|
encrypt(buffer: string | TEth.Hex | Uint8Array, opts: IEncryptionParams & {
|
|
8
11
|
encoding?: undefined | 'binary';
|
|
@@ -13,6 +13,8 @@ export declare namespace $hex {
|
|
|
13
13
|
* Trims '00' bytes from start or end, e.g. 0x68656c6c6f000000 => 0x68656c6c6f
|
|
14
14
|
*/
|
|
15
15
|
function trimBytes(hex: TEth.Hex): TEth.Hex;
|
|
16
|
+
function trimBytesStart(hex: TEth.Hex): TEth.Hex;
|
|
17
|
+
function trimBytesEnd(hex: TEth.Hex): TEth.Hex;
|
|
16
18
|
function trimLeadingZerosFromNumber(hex: string): string;
|
|
17
19
|
function getBytes(hex: string, offset: number, length: number): TEth.Hex;
|
|
18
20
|
function getBytesLength(hex: string): number;
|
package/package.json
CHANGED
|
@@ -93,6 +93,9 @@ export interface IPoolWeb3Request {
|
|
|
93
93
|
|
|
94
94
|
// When fetching logs, specifies the desired block range to query
|
|
95
95
|
blockRangeCount?: number
|
|
96
|
+
|
|
97
|
+
/** Try another node when the RPC succeeds but returns null, e.g. tx not found on one provider. */
|
|
98
|
+
tryNextOnNull?: boolean
|
|
96
99
|
}
|
|
97
100
|
|
|
98
101
|
export class ClientPool {
|
|
@@ -156,12 +159,18 @@ export class ClientPool {
|
|
|
156
159
|
// Client - Retries
|
|
157
160
|
let used = new Map<WClient, number>();
|
|
158
161
|
let errors = [];
|
|
162
|
+
let dataIsNull: boolean;
|
|
159
163
|
|
|
160
164
|
while (true) {
|
|
161
165
|
let wClient = await this.next(used, opts);
|
|
162
166
|
if (wClient == null) {
|
|
163
167
|
let error = errors.pop();
|
|
164
168
|
if (error == null) {
|
|
169
|
+
if (dataIsNull) {
|
|
170
|
+
// No provider returned an error, but none found the requested data
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
|
|
165
174
|
let urls = this
|
|
166
175
|
.clients
|
|
167
176
|
.map(x => ` ${x.config.url}`)
|
|
@@ -182,7 +191,6 @@ export class ClientPool {
|
|
|
182
191
|
?.trace
|
|
183
192
|
?.onComplete({ status, error, time, url: wClient.config.url })
|
|
184
193
|
|
|
185
|
-
|
|
186
194
|
if (wClientUsage == null) {
|
|
187
195
|
// By default, NO_RETRIES
|
|
188
196
|
used.set(wClient, 0);
|
|
@@ -194,6 +202,12 @@ export class ClientPool {
|
|
|
194
202
|
errors.push(error ?? result);
|
|
195
203
|
|
|
196
204
|
if (status == ClientStatus.Ok) {
|
|
205
|
+
if (opts?.tryNextOnNull === true) {
|
|
206
|
+
if (result == null) {
|
|
207
|
+
dataIsNull = true;
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
197
211
|
return result;
|
|
198
212
|
}
|
|
199
213
|
if (status == ClientStatus.RateLimited) {
|
|
@@ -994,6 +1008,8 @@ export class WClient {
|
|
|
994
1008
|
l`yellow<New BatchLimit> for "${this.config.url}" bold<${limit}>`;
|
|
995
1009
|
this.batchLimit = limit;
|
|
996
1010
|
}
|
|
1011
|
+
} else if (ClientErrorUtil.isNodeConfigurationError(error)) {
|
|
1012
|
+
status = ClientStatus.NodeConfigurationError;
|
|
997
1013
|
} else if (ClientErrorUtil.isConnectionFailed(error)) {
|
|
998
1014
|
status = ClientStatus.NetworkError;
|
|
999
1015
|
}
|
|
@@ -227,7 +227,10 @@ export abstract class Web3Client implements IWeb3Client {
|
|
|
227
227
|
getTransaction(txHash: TEth.Hex, opts?: IPoolWeb3Request): Promise<TEth.Tx> {
|
|
228
228
|
return this.pool.call(web3 => {
|
|
229
229
|
return web3.rpc.eth_getTransactionByHash(txHash);
|
|
230
|
-
},
|
|
230
|
+
}, {
|
|
231
|
+
tryNextOnNull: true,
|
|
232
|
+
...(opts ?? {})
|
|
233
|
+
});
|
|
231
234
|
}
|
|
232
235
|
getTransactions(txHashes: TEth.Hex[], opts?: IPoolWeb3Request): Promise<TEth.Tx[]> {
|
|
233
236
|
return this.pool.call(async web3 => {
|
|
@@ -14,6 +14,14 @@ export namespace ClientErrorUtil {
|
|
|
14
14
|
}
|
|
15
15
|
return false;
|
|
16
16
|
}
|
|
17
|
+
export function isNodeConfigurationError (error: Error & { code?, reason? }) {
|
|
18
|
+
let str = error.message ?? error.stack;
|
|
19
|
+
let noHistory = /history unavailable/i.test(str);
|
|
20
|
+
if (noHistory) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
17
25
|
export function isAlreadyKnown (error: Error & { code?, reason? }) {
|
|
18
26
|
return /already known/i.test(error.message);
|
|
19
27
|
}
|
|
@@ -72,6 +72,7 @@ class BlockchainExplorerDateResolver {
|
|
|
72
72
|
throw error;
|
|
73
73
|
}
|
|
74
74
|
let tx = await this.client.getTransaction(info.txHash);
|
|
75
|
+
$require.notNull(tx, `Tx not found: ${info.txHash} in ${this.client.network} (${this.client.options?.endpoints?.[0]?.url})`);
|
|
75
76
|
let block = await this.client.getBlock(tx.blockNumber);
|
|
76
77
|
return {
|
|
77
78
|
tx: tx.hash,
|
package/src/rpc/RpcBase.ts
CHANGED
|
@@ -122,7 +122,7 @@ export abstract class RpcBase {
|
|
|
122
122
|
};
|
|
123
123
|
}
|
|
124
124
|
private _unwrapBody (resp: any): any {
|
|
125
|
-
return resp
|
|
125
|
+
return RpcBase.unwrapBody(resp);
|
|
126
126
|
}
|
|
127
127
|
private _deserialize (method: string, result: any) {
|
|
128
128
|
let { methods, schemas } = this.returnSchemas;
|
|
@@ -141,6 +141,10 @@ export abstract class RpcBase {
|
|
|
141
141
|
|
|
142
142
|
|
|
143
143
|
protected abstract returnSchemas
|
|
144
|
+
|
|
145
|
+
static unwrapBody (resp: any) {
|
|
146
|
+
return resp.result;
|
|
147
|
+
}
|
|
144
148
|
}
|
|
145
149
|
|
|
146
150
|
|
package/src/utils/$base.ts
CHANGED
package/src/utils/$crypto.ts
CHANGED
|
@@ -8,6 +8,7 @@ interface ICrypto {
|
|
|
8
8
|
randomUUID(): `${string}-${string}-${string}-${string}-${string}`;
|
|
9
9
|
createECDH(curve: string)
|
|
10
10
|
|
|
11
|
+
sha256 (mix: string | TEth.Hex | Uint8Array, opts?: { encoding: 'hex' }): Promise<TEth.Hex>;
|
|
11
12
|
sha256 (mix: string | TEth.Hex | Uint8Array): Promise<Uint8Array>;
|
|
12
13
|
|
|
13
14
|
encrypt(buffer: string | TEth.Hex | Uint8Array, opts: IEncryptionParams & { encoding?: undefined | 'binary' }): Promise<Uint8Array>
|
package/src/utils/$hex.ts
CHANGED
|
@@ -24,10 +24,19 @@ export namespace $hex {
|
|
|
24
24
|
* Trims '00' bytes from start or end, e.g. 0x68656c6c6f000000 => 0x68656c6c6f
|
|
25
25
|
*/
|
|
26
26
|
export function trimBytes(hex: TEth.Hex): TEth.Hex {
|
|
27
|
-
|
|
27
|
+
return trimBytesEnd(trimBytesStart(hex));
|
|
28
|
+
}
|
|
29
|
+
export function trimBytesStart(hex: TEth.Hex): TEth.Hex {
|
|
30
|
+
if (hex.startsWith('0x00') === false) {
|
|
28
31
|
return hex;
|
|
29
32
|
}
|
|
30
|
-
return hex.replace(/^0x(0{2})+/, '0x')
|
|
33
|
+
return hex.replace(/^0x(0{2})+/, '0x') as TEth.Hex;
|
|
34
|
+
}
|
|
35
|
+
export function trimBytesEnd(hex: TEth.Hex): TEth.Hex {
|
|
36
|
+
if (hex.endsWith('00') === false) {
|
|
37
|
+
return hex;
|
|
38
|
+
}
|
|
39
|
+
return hex.replace(/(0{2})+$/, '') as TEth.Hex;
|
|
31
40
|
}
|
|
32
41
|
export function trimLeadingZerosFromNumber(hex: string) {
|
|
33
42
|
hex = hex.replace(/^0x0*/, '');
|
|
@@ -114,7 +123,6 @@ export namespace $hex {
|
|
|
114
123
|
return hex;
|
|
115
124
|
}
|
|
116
125
|
|
|
117
|
-
|
|
118
126
|
/**
|
|
119
127
|
* Adds `0x` to the start if not present
|
|
120
128
|
*/
|
|
@@ -131,6 +139,7 @@ export namespace $hex {
|
|
|
131
139
|
if (typeof mix ==='boolean') {
|
|
132
140
|
return mix ? '0x1' : '0x0';
|
|
133
141
|
}
|
|
142
|
+
$require.match(/^(0x)?[\da-f]*$/i, mix, 'NotValidHex');
|
|
134
143
|
if (mix.startsWith('0x')) {
|
|
135
144
|
return mix as TEth.Hex;
|
|
136
145
|
}
|