viem 0.3.26 → 0.3.27
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/actions/public/waitForTransactionReceipt.js +14 -7
- package/dist/cjs/actions/public/waitForTransactionReceipt.js.map +1 -1
- package/dist/cjs/errors/version.js +1 -1
- package/dist/cjs/utils/data/isHex.js +2 -2
- package/dist/cjs/utils/data/isHex.js.map +1 -1
- package/dist/cjs/utils/data/size.js +1 -1
- package/dist/cjs/utils/data/size.js.map +1 -1
- package/dist/cjs/utils/data/slice.js +1 -1
- package/dist/cjs/utils/data/slice.js.map +1 -1
- package/dist/cjs/utils/hash/keccak256.js +1 -1
- package/dist/cjs/utils/hash/keccak256.js.map +1 -1
- package/dist/cjs/utils/promise/createBatchScheduler.js.map +1 -1
- package/dist/cjs/utils/rpc.js +49 -40
- package/dist/cjs/utils/rpc.js.map +1 -1
- package/dist/esm/actions/public/waitForTransactionReceipt.js +14 -7
- package/dist/esm/actions/public/waitForTransactionReceipt.js.map +1 -1
- package/dist/esm/errors/version.js +1 -1
- package/dist/esm/utils/data/isHex.js +2 -2
- package/dist/esm/utils/data/isHex.js.map +1 -1
- package/dist/esm/utils/data/size.js +1 -1
- package/dist/esm/utils/data/size.js.map +1 -1
- package/dist/esm/utils/data/slice.js +1 -1
- package/dist/esm/utils/data/slice.js.map +1 -1
- package/dist/esm/utils/hash/keccak256.js +1 -1
- package/dist/esm/utils/hash/keccak256.js.map +1 -1
- package/dist/esm/utils/promise/createBatchScheduler.js.map +1 -1
- package/dist/esm/utils/rpc.js +49 -40
- package/dist/esm/utils/rpc.js.map +1 -1
- package/dist/types/actions/public/getTransactionReceipt.d.ts +1 -1
- package/dist/types/actions/public/waitForTransactionReceipt.d.ts.map +1 -1
- package/dist/types/errors/version.d.ts +1 -1
- package/dist/types/utils/data/isHex.d.ts +3 -1
- package/dist/types/utils/data/isHex.d.ts.map +1 -1
- package/dist/types/utils/hash/keccak256.d.ts.map +1 -1
- package/dist/types/utils/promise/createBatchScheduler.d.ts +6 -4
- package/dist/types/utils/promise/createBatchScheduler.d.ts.map +1 -1
- package/dist/types/utils/rpc.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/actions/public/getTransactionReceipt.ts +1 -1
- package/src/actions/public/waitForTransactionReceipt.ts +24 -6
- package/src/errors/version.ts +1 -1
- package/src/utils/data/isHex.ts +5 -2
- package/src/utils/data/size.ts +1 -1
- package/src/utils/data/slice.ts +1 -1
- package/src/utils/hash/keccak256.ts +3 -1
- package/src/utils/promise/createBatchScheduler.ts +24 -7
- package/src/utils/rpc.ts +59 -49
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.waitForTransactionReceipt = void 0;
|
4
4
|
const transaction_js_1 = require("../../errors/transaction.js");
|
5
5
|
const observe_js_1 = require("../../utils/observe.js");
|
6
|
+
const withRetry_js_1 = require("../../utils/promise/withRetry.js");
|
6
7
|
const getBlock_js_1 = require("./getBlock.js");
|
7
8
|
const getTransaction_js_1 = require("./getTransaction.js");
|
8
9
|
const getTransactionReceipt_js_1 = require("./getTransactionReceipt.js");
|
@@ -16,7 +17,6 @@ async function waitForTransactionReceipt(client, { confirmations = 1, hash, onRe
|
|
16
17
|
let transaction;
|
17
18
|
let replacedTransaction;
|
18
19
|
let receipt;
|
19
|
-
let retries = 0;
|
20
20
|
return new Promise((resolve, reject) => {
|
21
21
|
if (timeout)
|
22
22
|
setTimeout(() => reject(new transaction_js_1.WaitForTransactionReceiptTimeoutError({ hash })), timeout);
|
@@ -26,7 +26,8 @@ async function waitForTransactionReceipt(client, { confirmations = 1, hash, onRe
|
|
26
26
|
emitOnBegin: true,
|
27
27
|
poll: true,
|
28
28
|
pollingInterval,
|
29
|
-
async onBlockNumber(
|
29
|
+
async onBlockNumber(blockNumber_) {
|
30
|
+
let blockNumber = blockNumber_;
|
30
31
|
const done = async (fn) => {
|
31
32
|
unwatch();
|
32
33
|
fn();
|
@@ -39,9 +40,17 @@ async function waitForTransactionReceipt(client, { confirmations = 1, hash, onRe
|
|
39
40
|
done(() => emit.resolve(receipt));
|
40
41
|
return;
|
41
42
|
}
|
42
|
-
|
43
|
+
await (0, withRetry_js_1.withRetry)(async () => {
|
44
|
+
transaction = await (0, getTransaction_js_1.getTransaction)(client, { hash });
|
45
|
+
if (transaction.blockNumber)
|
46
|
+
blockNumber = transaction.blockNumber;
|
47
|
+
}, {
|
48
|
+
delay: ({ count }) => ~~(1 << count) * 100,
|
49
|
+
retryCount: 3,
|
50
|
+
});
|
43
51
|
receipt = await (0, getTransactionReceipt_js_1.getTransactionReceipt)(client, { hash });
|
44
|
-
if (
|
52
|
+
if (confirmations > 0 &&
|
53
|
+
blockNumber - receipt.blockNumber + 1n < confirmations)
|
45
54
|
return;
|
46
55
|
done(() => emit.resolve(receipt));
|
47
56
|
}
|
@@ -83,9 +92,7 @@ async function waitForTransactionReceipt(client, { confirmations = 1, hash, onRe
|
|
83
92
|
});
|
84
93
|
}
|
85
94
|
else {
|
86
|
-
|
87
|
-
done(() => emit.reject(err));
|
88
|
-
retries++;
|
95
|
+
done(() => emit.reject(err));
|
89
96
|
}
|
90
97
|
}
|
91
98
|
},
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"waitForTransactionReceipt.js","sourceRoot":"","sources":["../../../../src/actions/public/waitForTransactionReceipt.ts"],"names":[],"mappings":";;;AAEA,gEAIoC;AAIpC,uDAAgD;
|
1
|
+
{"version":3,"file":"waitForTransactionReceipt.js","sourceRoot":"","sources":["../../../../src/actions/public/waitForTransactionReceipt.ts"],"names":[],"mappings":"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"}
|
@@ -1,12 +1,12 @@
|
|
1
1
|
"use strict";
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.isHex = void 0;
|
4
|
-
function isHex(value) {
|
4
|
+
function isHex(value, { strict = true } = {}) {
|
5
5
|
if (!value)
|
6
6
|
return false;
|
7
7
|
if (typeof value !== 'string')
|
8
8
|
return false;
|
9
|
-
return /^0x[0-9a-fA-F]*$/.test(value);
|
9
|
+
return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith('0x');
|
10
10
|
}
|
11
11
|
exports.isHex = isHex;
|
12
12
|
//# sourceMappingURL=isHex.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"isHex.js","sourceRoot":"","sources":["../../../../src/utils/data/isHex.ts"],"names":[],"mappings":";;;AAEA,SAAgB,KAAK,
|
1
|
+
{"version":3,"file":"isHex.js","sourceRoot":"","sources":["../../../../src/utils/data/isHex.ts"],"names":[],"mappings":";;;AAEA,SAAgB,KAAK,CACnB,KAAc,EACd,EAAE,MAAM,GAAG,IAAI,KAA2B,EAAE;IAE5C,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAA;IACxB,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,OAAO,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AACzE,CAAC;AAPD,sBAOC"}
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.size = void 0;
|
4
4
|
const isHex_js_1 = require("./isHex.js");
|
5
5
|
function size(value) {
|
6
|
-
if ((0, isHex_js_1.isHex)(value))
|
6
|
+
if ((0, isHex_js_1.isHex)(value, { strict: false }))
|
7
7
|
return Math.ceil((value.length - 2) / 2);
|
8
8
|
return value.length;
|
9
9
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"size.js","sourceRoot":"","sources":["../../../../src/utils/data/size.ts"],"names":[],"mappings":";;;AAEA,yCAAkC;AAQlC,SAAgB,IAAI,CAAC,KAAsB;IACzC,IAAI,IAAA,gBAAK,EAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;
|
1
|
+
{"version":3,"file":"size.js","sourceRoot":"","sources":["../../../../src/utils/data/size.ts"],"names":[],"mappings":";;;AAEA,yCAAkC;AAQlC,SAAgB,IAAI,CAAC,KAAsB;IACzC,IAAI,IAAA,gBAAK,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAC7E,OAAO,KAAK,CAAC,MAAM,CAAA;AACrB,CAAC;AAHD,oBAGC"}
|
@@ -5,7 +5,7 @@ const data_js_1 = require("../../errors/data.js");
|
|
5
5
|
const isHex_js_1 = require("./isHex.js");
|
6
6
|
const size_js_1 = require("./size.js");
|
7
7
|
function slice(value, start, end, { strict } = {}) {
|
8
|
-
if ((0, isHex_js_1.isHex)(value))
|
8
|
+
if ((0, isHex_js_1.isHex)(value, { strict: false }))
|
9
9
|
return sliceHex(value, start, end, {
|
10
10
|
strict,
|
11
11
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"slice.js","sourceRoot":"","sources":["../../../../src/utils/data/slice.ts"],"names":[],"mappings":";;;AAAA,kDAAkE;AAGlE,yCAAkC;AAClC,uCAAgC;AAahC,SAAgB,KAAK,CACnB,KAAa,EACb,KAAc,EACd,GAAY,EACZ,EAAE,MAAM,KAA2B,EAAE;IAErC,IAAI,IAAA,gBAAK,EAAC,KAAK,CAAC;
|
1
|
+
{"version":3,"file":"slice.js","sourceRoot":"","sources":["../../../../src/utils/data/slice.ts"],"names":[],"mappings":";;;AAAA,kDAAkE;AAGlE,yCAAkC;AAClC,uCAAgC;AAahC,SAAgB,KAAK,CACnB,KAAa,EACb,KAAc,EACd,GAAY,EACZ,EAAE,MAAM,KAA2B,EAAE;IAErC,IAAI,IAAA,gBAAK,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC,KAAY,EAAE,KAAK,EAAE,GAAG,EAAE;YACxC,MAAM;SACP,CAA4B,CAAA;IAC/B,OAAO,UAAU,CAAC,KAAkB,EAAE,KAAK,EAAE,GAAG,EAAE;QAChD,MAAM;KACP,CAA4B,CAAA;AAC/B,CAAC;AAbD,sBAaC;AAED,SAAS,iBAAiB,CAAC,KAAsB,EAAE,KAAc;IAC/D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAA,cAAI,EAAC,KAAK,CAAC,GAAG,CAAC;QACnE,MAAM,IAAI,qCAA2B,CAAC;YACpC,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,IAAA,cAAI,EAAC,KAAK,CAAC;SAClB,CAAC,CAAA;AACN,CAAC;AAED,SAAS,eAAe,CAAC,KAAsB,EAAE,KAAc,EAAE,GAAY;IAC3E,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,GAAG,KAAK,QAAQ;QACvB,IAAA,cAAI,EAAC,KAAK,CAAC,KAAK,GAAG,GAAG,KAAK,EAC3B;QACA,MAAM,IAAI,qCAA2B,CAAC;YACpC,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,IAAA,cAAI,EAAC,KAAK,CAAC;SAClB,CAAC,CAAA;KACH;AACH,CAAC;AASD,SAAgB,UAAU,CACxB,MAAiB,EACjB,KAAc,EACd,GAAY,EACZ,EAAE,MAAM,KAA2B,EAAE;IAErC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACtC,IAAI,MAAM;QAAE,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;IAC9C,OAAO,KAAK,CAAA;AACd,CAAC;AAVD,gCAUC;AASD,SAAgB,QAAQ,CACtB,MAAW,EACX,KAAc,EACd,GAAY,EACZ,EAAE,MAAM,KAA2B,EAAE;IAErC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAChC,MAAM,KAAK,GAAG,KAAK,MAAM;SACtB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAW,CAAA;IACjE,IAAI,MAAM;QAAE,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;IAC9C,OAAO,KAAK,CAAA;AACd,CAAC;AAZD,4BAYC"}
|
@@ -7,7 +7,7 @@ const toBytes_js_1 = require("../encoding/toBytes.js");
|
|
7
7
|
const toHex_js_1 = require("../encoding/toHex.js");
|
8
8
|
function keccak256(value, to_) {
|
9
9
|
const to = to_ || 'hex';
|
10
|
-
const bytes = (0, sha3_1.keccak_256)((0, isHex_js_1.isHex)(value) ? (0, toBytes_js_1.toBytes)(value) : value);
|
10
|
+
const bytes = (0, sha3_1.keccak_256)((0, isHex_js_1.isHex)(value, { strict: false }) ? (0, toBytes_js_1.toBytes)(value) : value);
|
11
11
|
if (to === 'bytes')
|
12
12
|
return bytes;
|
13
13
|
return (0, toHex_js_1.toHex)(bytes);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"keccak256.js","sourceRoot":"","sources":["../../../../src/utils/hash/keccak256.ts"],"names":[],"mappings":";;;AAAA,6CAA+C;AAG/C,+CAAwC;AACxC,uDAAgD;AAChD,mDAA4C;AAQ5C,SAAgB,SAAS,CACvB,KAAsB,EACtB,GAAS;IAET,MAAM,EAAE,GAAG,GAAG,IAAI,KAAK,CAAA;IACvB,MAAM,KAAK,GAAG,IAAA,iBAAU,
|
1
|
+
{"version":3,"file":"keccak256.js","sourceRoot":"","sources":["../../../../src/utils/hash/keccak256.ts"],"names":[],"mappings":";;;AAAA,6CAA+C;AAG/C,+CAAwC;AACxC,uDAAgD;AAChD,mDAA4C;AAQ5C,SAAgB,SAAS,CACvB,KAAsB,EACtB,GAAS;IAET,MAAM,EAAE,GAAG,GAAG,IAAI,KAAK,CAAA;IACvB,MAAM,KAAK,GAAG,IAAA,iBAAU,EACtB,IAAA,gBAAK,EAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAA,oBAAO,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CACzD,CAAA;IACD,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAA2B,CAAA;IACtD,OAAO,IAAA,gBAAK,EAAC,KAAK,CAAuB,CAAA;AAC3C,CAAC;AAVD,8BAUC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"createBatchScheduler.js","sourceRoot":"","sources":["../../../../src/utils/promise/createBatchScheduler.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"createBatchScheduler.js","sourceRoot":"","sources":["../../../../src/utils/promise/createBatchScheduler.ts"],"names":[],"mappings":";;;AA+BA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAoC,CAAA;AAElE,SAAgB,oBAAoB,CAGlC,EACA,EAAE,EACF,EAAE,EACF,gBAAgB,EAChB,IAAI,GAAG,CAAC,GAIT;IACC,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;QAChC,KAAK,EAAE,CAAA;QAEP,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;QAE9C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAE7B,EAAE,CAAC,IAAqB,CAAC;aACtB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACb,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAC1C,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAC1C,CAAA;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;QACzE,CAAC,CAAC,CAAA;IACN,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAE7C,MAAM,cAAc,GAAG,GAAG,EAAE,CAC1B,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAkB,CAAA;IAEzD,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;IAEvD,MAAM,YAAY,GAAG,CAAC,IAAmB,EAAE,EAAE,CAC3C,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;IAEnD,OAAO;QACL,KAAK;QACL,KAAK,CAAC,QAAQ,CAAC,IAAiB;YAC9B,MAAM,cAAc,GAAgC,EAAE,CAAA;YACtD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrE,cAAc,CAAC,OAAO,GAAG,OAAO,CAAA;gBAChC,cAAc,CAAC,MAAM,GAAG,MAAM,CAAA;YAChC,CAAC,CAAC,CAAA;YAEF,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;YAE7D,IAAI,KAAK;gBAAE,IAAI,EAAE,CAAA;YAEjB,MAAM,kBAAkB,GAAG,YAAY,EAAE,CAAC,MAAM,GAAG,CAAC,CAAA;YACpD,IAAI,kBAAkB,EAAE;gBACtB,YAAY,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAA;gBACtC,OAAO,OAAO,CAAA;aACf;YAED,YAAY,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAA;YACtC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACtB,OAAO,OAAO,CAAA;QAChB,CAAC;KACqE,CAAA;AAC1E,CAAC;AAjED,oDAiEC"}
|
package/dist/cjs/utils/rpc.js
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
3
3
|
exports.rpc = exports.getSocket = void 0;
|
4
4
|
const request_js_1 = require("../errors/request.js");
|
5
|
+
const createBatchScheduler_js_1 = require("./promise/createBatchScheduler.js");
|
5
6
|
const withTimeout_js_1 = require("./promise/withTimeout.js");
|
6
7
|
const stringify_js_1 = require("./stringify.js");
|
7
8
|
let id = 0;
|
@@ -67,47 +68,55 @@ async function getSocket(url_) {
|
|
67
68
|
let socket = sockets.get(urlKey);
|
68
69
|
if (socket)
|
69
70
|
return socket;
|
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
|
-
webSocket.
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
71
|
+
const { schedule } = (0, createBatchScheduler_js_1.createBatchScheduler)({
|
72
|
+
id: urlKey,
|
73
|
+
fn: async () => {
|
74
|
+
let WebSocket = await import('isomorphic-ws');
|
75
|
+
if (WebSocket.default
|
76
|
+
?.constructor)
|
77
|
+
WebSocket = WebSocket
|
78
|
+
.default;
|
79
|
+
else
|
80
|
+
WebSocket = WebSocket.WebSocket;
|
81
|
+
const webSocket = new WebSocket(url);
|
82
|
+
const requests = new Map();
|
83
|
+
const subscriptions = new Map();
|
84
|
+
const onMessage = ({ data }) => {
|
85
|
+
const message = JSON.parse(data);
|
86
|
+
const isSubscription = message.method === 'eth_subscription';
|
87
|
+
const id = isSubscription ? message.params.subscription : message.id;
|
88
|
+
const cache = isSubscription ? subscriptions : requests;
|
89
|
+
const callback = cache.get(id);
|
90
|
+
if (callback)
|
91
|
+
callback({ data });
|
92
|
+
if (!isSubscription)
|
93
|
+
cache.delete(id);
|
94
|
+
};
|
95
|
+
const onClose = () => {
|
96
|
+
sockets.delete(urlKey);
|
97
|
+
webSocket.removeEventListener('close', onClose);
|
98
|
+
webSocket.removeEventListener('message', onMessage);
|
99
|
+
};
|
100
|
+
webSocket.addEventListener('close', onClose);
|
101
|
+
webSocket.addEventListener('message', onMessage);
|
102
|
+
if (webSocket.readyState === WebSocket.CONNECTING) {
|
103
|
+
await new Promise((resolve, reject) => {
|
104
|
+
if (!webSocket)
|
105
|
+
return;
|
106
|
+
webSocket.onopen = resolve;
|
107
|
+
webSocket.onerror = reject;
|
108
|
+
});
|
109
|
+
}
|
110
|
+
socket = Object.assign(webSocket, {
|
111
|
+
requests,
|
112
|
+
subscriptions,
|
113
|
+
});
|
114
|
+
sockets.set(urlKey, socket);
|
115
|
+
return [socket];
|
116
|
+
},
|
108
117
|
});
|
109
|
-
|
110
|
-
return
|
118
|
+
const [_, [socket_]] = await schedule();
|
119
|
+
return socket_;
|
111
120
|
}
|
112
121
|
exports.getSocket = getSocket;
|
113
122
|
function webSocket(socket, { body, onData, onError, }) {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../src/utils/rpc.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../src/utils/rpc.ts"],"names":[],"mappings":"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"}
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import { TransactionNotFoundError, TransactionReceiptNotFoundError, WaitForTransactionReceiptTimeoutError, } from '../../errors/transaction.js';
|
2
2
|
import { observe } from '../../utils/observe.js';
|
3
|
+
import { withRetry } from '../../utils/promise/withRetry.js';
|
3
4
|
import { getBlock } from './getBlock.js';
|
4
5
|
import { getTransaction, } from './getTransaction.js';
|
5
6
|
import { getTransactionReceipt, } from './getTransactionReceipt.js';
|
@@ -13,7 +14,6 @@ export async function waitForTransactionReceipt(client, { confirmations = 1, has
|
|
13
14
|
let transaction;
|
14
15
|
let replacedTransaction;
|
15
16
|
let receipt;
|
16
|
-
let retries = 0;
|
17
17
|
return new Promise((resolve, reject) => {
|
18
18
|
if (timeout)
|
19
19
|
setTimeout(() => reject(new WaitForTransactionReceiptTimeoutError({ hash })), timeout);
|
@@ -23,7 +23,8 @@ export async function waitForTransactionReceipt(client, { confirmations = 1, has
|
|
23
23
|
emitOnBegin: true,
|
24
24
|
poll: true,
|
25
25
|
pollingInterval,
|
26
|
-
async onBlockNumber(
|
26
|
+
async onBlockNumber(blockNumber_) {
|
27
|
+
let blockNumber = blockNumber_;
|
27
28
|
const done = async (fn) => {
|
28
29
|
unwatch();
|
29
30
|
fn();
|
@@ -36,9 +37,17 @@ export async function waitForTransactionReceipt(client, { confirmations = 1, has
|
|
36
37
|
done(() => emit.resolve(receipt));
|
37
38
|
return;
|
38
39
|
}
|
39
|
-
|
40
|
+
await withRetry(async () => {
|
41
|
+
transaction = await getTransaction(client, { hash });
|
42
|
+
if (transaction.blockNumber)
|
43
|
+
blockNumber = transaction.blockNumber;
|
44
|
+
}, {
|
45
|
+
delay: ({ count }) => ~~(1 << count) * 100,
|
46
|
+
retryCount: 3,
|
47
|
+
});
|
40
48
|
receipt = await getTransactionReceipt(client, { hash });
|
41
|
-
if (
|
49
|
+
if (confirmations > 0 &&
|
50
|
+
blockNumber - receipt.blockNumber + 1n < confirmations)
|
42
51
|
return;
|
43
52
|
done(() => emit.resolve(receipt));
|
44
53
|
}
|
@@ -80,9 +89,7 @@ export async function waitForTransactionReceipt(client, { confirmations = 1, has
|
|
80
89
|
});
|
81
90
|
}
|
82
91
|
else {
|
83
|
-
|
84
|
-
done(() => emit.reject(err));
|
85
|
-
retries++;
|
92
|
+
done(() => emit.reject(err));
|
86
93
|
}
|
87
94
|
}
|
88
95
|
},
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"waitForTransactionReceipt.js","sourceRoot":"","sources":["../../../../src/actions/public/waitForTransactionReceipt.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,wBAAwB,EACxB,+BAA+B,EAC/B,qCAAqC,GACtC,MAAM,6BAA6B,CAAA;AAIpC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;
|
1
|
+
{"version":3,"file":"waitForTransactionReceipt.js","sourceRoot":"","sources":["../../../../src/actions/public/waitForTransactionReceipt.ts"],"names":[],"mappings":"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"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export const version = '0.3.
|
1
|
+
export const version = '0.3.27';
|
2
2
|
//# sourceMappingURL=version.js.map
|
@@ -1,8 +1,8 @@
|
|
1
|
-
export function isHex(value) {
|
1
|
+
export function isHex(value, { strict = true } = {}) {
|
2
2
|
if (!value)
|
3
3
|
return false;
|
4
4
|
if (typeof value !== 'string')
|
5
5
|
return false;
|
6
|
-
return /^0x[0-9a-fA-F]*$/.test(value);
|
6
|
+
return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith('0x');
|
7
7
|
}
|
8
8
|
//# sourceMappingURL=isHex.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"isHex.js","sourceRoot":"","sources":["../../../../src/utils/data/isHex.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,KAAK,
|
1
|
+
{"version":3,"file":"isHex.js","sourceRoot":"","sources":["../../../../src/utils/data/isHex.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,KAAK,CACnB,KAAc,EACd,EAAE,MAAM,GAAG,IAAI,KAA2B,EAAE;IAE5C,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAA;IACxB,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,OAAO,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;AACzE,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"size.js","sourceRoot":"","sources":["../../../../src/utils/data/size.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAQlC,MAAM,UAAU,IAAI,CAAC,KAAsB;IACzC,IAAI,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;
|
1
|
+
{"version":3,"file":"size.js","sourceRoot":"","sources":["../../../../src/utils/data/size.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAQlC,MAAM,UAAU,IAAI,CAAC,KAAsB;IACzC,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;IAC7E,OAAO,KAAK,CAAC,MAAM,CAAA;AACrB,CAAC"}
|
@@ -2,7 +2,7 @@ import { SliceOffsetOutOfBoundsError } from '../../errors/data.js';
|
|
2
2
|
import { isHex } from './isHex.js';
|
3
3
|
import { size } from './size.js';
|
4
4
|
export function slice(value, start, end, { strict } = {}) {
|
5
|
-
if (isHex(value))
|
5
|
+
if (isHex(value, { strict: false }))
|
6
6
|
return sliceHex(value, start, end, {
|
7
7
|
strict,
|
8
8
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"slice.js","sourceRoot":"","sources":["../../../../src/utils/data/slice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAGlE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAahC,MAAM,UAAU,KAAK,CACnB,KAAa,EACb,KAAc,EACd,GAAY,EACZ,EAAE,MAAM,KAA2B,EAAE;IAErC,IAAI,KAAK,CAAC,KAAK,CAAC;
|
1
|
+
{"version":3,"file":"slice.js","sourceRoot":"","sources":["../../../../src/utils/data/slice.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAA;AAGlE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAahC,MAAM,UAAU,KAAK,CACnB,KAAa,EACb,KAAc,EACd,GAAY,EACZ,EAAE,MAAM,KAA2B,EAAE;IAErC,IAAI,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACjC,OAAO,QAAQ,CAAC,KAAY,EAAE,KAAK,EAAE,GAAG,EAAE;YACxC,MAAM;SACP,CAA4B,CAAA;IAC/B,OAAO,UAAU,CAAC,KAAkB,EAAE,KAAK,EAAE,GAAG,EAAE;QAChD,MAAM;KACP,CAA4B,CAAA;AAC/B,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAsB,EAAE,KAAc;IAC/D,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QACnE,MAAM,IAAI,2BAA2B,CAAC;YACpC,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,OAAO;YACjB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;SAClB,CAAC,CAAA;AACN,CAAC;AAED,SAAS,eAAe,CAAC,KAAsB,EAAE,KAAc,EAAE,GAAY;IAC3E,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,OAAO,GAAG,KAAK,QAAQ;QACvB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,KAAK,EAC3B;QACA,MAAM,IAAI,2BAA2B,CAAC;YACpC,MAAM,EAAE,GAAG;YACX,QAAQ,EAAE,KAAK;YACf,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;SAClB,CAAC,CAAA;KACH;AACH,CAAC;AASD,MAAM,UAAU,UAAU,CACxB,MAAiB,EACjB,KAAc,EACd,GAAY,EACZ,EAAE,MAAM,KAA2B,EAAE;IAErC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;IACtC,IAAI,MAAM;QAAE,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;IAC9C,OAAO,KAAK,CAAA;AACd,CAAC;AASD,MAAM,UAAU,QAAQ,CACtB,MAAW,EACX,KAAc,EACd,GAAY,EACZ,EAAE,MAAM,KAA2B,EAAE;IAErC,iBAAiB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAChC,MAAM,KAAK,GAAG,KAAK,MAAM;SACtB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAW,CAAA;IACjE,IAAI,MAAM;QAAE,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;IAC9C,OAAO,KAAK,CAAA;AACd,CAAC"}
|
@@ -4,7 +4,7 @@ import { toBytes } from '../encoding/toBytes.js';
|
|
4
4
|
import { toHex } from '../encoding/toHex.js';
|
5
5
|
export function keccak256(value, to_) {
|
6
6
|
const to = to_ || 'hex';
|
7
|
-
const bytes = keccak_256(isHex(value) ? toBytes(value) : value);
|
7
|
+
const bytes = keccak_256(isHex(value, { strict: false }) ? toBytes(value) : value);
|
8
8
|
if (to === 'bytes')
|
9
9
|
return bytes;
|
10
10
|
return toHex(bytes);
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"keccak256.js","sourceRoot":"","sources":["../../../../src/utils/hash/keccak256.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAG/C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAQ5C,MAAM,UAAU,SAAS,CACvB,KAAsB,EACtB,GAAS;IAET,MAAM,EAAE,GAAG,GAAG,IAAI,KAAK,CAAA;IACvB,MAAM,KAAK,GAAG,UAAU,
|
1
|
+
{"version":3,"file":"keccak256.js","sourceRoot":"","sources":["../../../../src/utils/hash/keccak256.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAG/C,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAQ5C,MAAM,UAAU,SAAS,CACvB,KAAsB,EACtB,GAAS;IAET,MAAM,EAAE,GAAG,GAAG,IAAI,KAAK,CAAA;IACvB,MAAM,KAAK,GAAG,UAAU,CACtB,KAAK,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CACzD,CAAA;IACD,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAA2B,CAAA;IACtD,OAAO,KAAK,CAAC,KAAK,CAAuB,CAAA;AAC3C,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"createBatchScheduler.js","sourceRoot":"","sources":["../../../../src/utils/promise/createBatchScheduler.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"createBatchScheduler.js","sourceRoot":"","sources":["../../../../src/utils/promise/createBatchScheduler.ts"],"names":[],"mappings":"AA+BA,MAAM,cAAc,GAAG,IAAI,GAAG,EAAoC,CAAA;AAElE,MAAM,UAAU,oBAAoB,CAGlC,EACA,EAAE,EACF,EAAE,EACF,gBAAgB,EAChB,IAAI,GAAG,CAAC,GAIT;IACC,MAAM,IAAI,GAAG,KAAK,IAAI,EAAE;QACtB,MAAM,SAAS,GAAG,YAAY,EAAE,CAAA;QAChC,KAAK,EAAE,CAAA;QAEP,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;QAE9C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAE7B,EAAE,CAAC,IAAqB,CAAC;aACtB,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YACb,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE,CAC1C,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAC1C,CAAA;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,cAAc,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;QACzE,CAAC,CAAC,CAAA;IACN,CAAC,CAAA;IAED,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IAE7C,MAAM,cAAc,GAAG,GAAG,EAAE,CAC1B,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAkB,CAAA;IAEzD,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAA;IAEvD,MAAM,YAAY,GAAG,CAAC,IAAmB,EAAE,EAAE,CAC3C,cAAc,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,YAAY,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;IAEnD,OAAO;QACL,KAAK;QACL,KAAK,CAAC,QAAQ,CAAC,IAAiB;YAC9B,MAAM,cAAc,GAAgC,EAAE,CAAA;YACtD,MAAM,OAAO,GAAG,IAAI,OAAO,CAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBACrE,cAAc,CAAC,OAAO,GAAG,OAAO,CAAA;gBAChC,cAAc,CAAC,MAAM,GAAG,MAAM,CAAA;YAChC,CAAC,CAAC,CAAA;YAEF,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC,CAAC,GAAG,cAAc,EAAE,EAAE,IAAI,CAAC,CAAC,CAAA;YAE7D,IAAI,KAAK;gBAAE,IAAI,EAAE,CAAA;YAEjB,MAAM,kBAAkB,GAAG,YAAY,EAAE,CAAC,MAAM,GAAG,CAAC,CAAA;YACpD,IAAI,kBAAkB,EAAE;gBACtB,YAAY,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAA;gBACtC,OAAO,OAAO,CAAA;aACf;YAED,YAAY,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAA;YACtC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;YACtB,OAAO,OAAO,CAAA;QAChB,CAAC;KACqE,CAAA;AAC1E,CAAC"}
|
package/dist/esm/utils/rpc.js
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import { HttpRequestError, RpcRequestError, TimeoutError, WebSocketRequestError, } from '../errors/request.js';
|
2
|
+
import { createBatchScheduler } from './promise/createBatchScheduler.js';
|
2
3
|
import { withTimeout } from './promise/withTimeout.js';
|
3
4
|
import { stringify } from './stringify.js';
|
4
5
|
let id = 0;
|
@@ -64,47 +65,55 @@ export async function getSocket(url_) {
|
|
64
65
|
let socket = sockets.get(urlKey);
|
65
66
|
if (socket)
|
66
67
|
return socket;
|
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
|
-
webSocket.
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
68
|
+
const { schedule } = createBatchScheduler({
|
69
|
+
id: urlKey,
|
70
|
+
fn: async () => {
|
71
|
+
let WebSocket = await import('isomorphic-ws');
|
72
|
+
if (WebSocket.default
|
73
|
+
?.constructor)
|
74
|
+
WebSocket = WebSocket
|
75
|
+
.default;
|
76
|
+
else
|
77
|
+
WebSocket = WebSocket.WebSocket;
|
78
|
+
const webSocket = new WebSocket(url);
|
79
|
+
const requests = new Map();
|
80
|
+
const subscriptions = new Map();
|
81
|
+
const onMessage = ({ data }) => {
|
82
|
+
const message = JSON.parse(data);
|
83
|
+
const isSubscription = message.method === 'eth_subscription';
|
84
|
+
const id = isSubscription ? message.params.subscription : message.id;
|
85
|
+
const cache = isSubscription ? subscriptions : requests;
|
86
|
+
const callback = cache.get(id);
|
87
|
+
if (callback)
|
88
|
+
callback({ data });
|
89
|
+
if (!isSubscription)
|
90
|
+
cache.delete(id);
|
91
|
+
};
|
92
|
+
const onClose = () => {
|
93
|
+
sockets.delete(urlKey);
|
94
|
+
webSocket.removeEventListener('close', onClose);
|
95
|
+
webSocket.removeEventListener('message', onMessage);
|
96
|
+
};
|
97
|
+
webSocket.addEventListener('close', onClose);
|
98
|
+
webSocket.addEventListener('message', onMessage);
|
99
|
+
if (webSocket.readyState === WebSocket.CONNECTING) {
|
100
|
+
await new Promise((resolve, reject) => {
|
101
|
+
if (!webSocket)
|
102
|
+
return;
|
103
|
+
webSocket.onopen = resolve;
|
104
|
+
webSocket.onerror = reject;
|
105
|
+
});
|
106
|
+
}
|
107
|
+
socket = Object.assign(webSocket, {
|
108
|
+
requests,
|
109
|
+
subscriptions,
|
110
|
+
});
|
111
|
+
sockets.set(urlKey, socket);
|
112
|
+
return [socket];
|
113
|
+
},
|
105
114
|
});
|
106
|
-
|
107
|
-
return
|
115
|
+
const [_, [socket_]] = await schedule();
|
116
|
+
return socket_;
|
108
117
|
}
|
109
118
|
function webSocket(socket, { body, onData, onError, }) {
|
110
119
|
if (socket.readyState === socket.CLOSED ||
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../src/utils/rpc.ts"],"names":[],"mappings":"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
|
1
|
+
{"version":3,"file":"rpc.js","sourceRoot":"","sources":["../../../src/utils/rpc.ts"],"names":[],"mappings":"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"}
|
@@ -13,7 +13,7 @@ export type GetTransactionReceiptReturnType<TChain extends Chain | undefined = C
|
|
13
13
|
*
|
14
14
|
* - Docs: https://viem.sh/docs/actions/public/getTransactionReceipt.html
|
15
15
|
* - Example: https://stackblitz.com/github/wagmi-dev/viem/tree/main/examples/transactions/fetching-transactions
|
16
|
-
* - JSON-RPC Methods: [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#
|
16
|
+
* - JSON-RPC Methods: [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionreceipt)
|
17
17
|
*
|
18
18
|
* @param client - Client to use
|
19
19
|
* @param parameters - {@link GetTransactionReceiptParameters}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"waitForTransactionReceipt.d.ts","sourceRoot":"","sources":["../../../../src/actions/public/waitForTransactionReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAM5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;
|
1
|
+
{"version":3,"file":"waitForTransactionReceipt.d.ts","sourceRoot":"","sources":["../../../../src/actions/public/waitForTransactionReceipt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAA;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAA;AAM5E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAA;AAS7D,OAAO,EACL,KAAK,+BAA+B,EAErC,MAAM,4BAA4B,CAAA;AAGnC,MAAM,MAAM,iBAAiB,GAAG,WAAW,GAAG,UAAU,GAAG,UAAU,CAAA;AACrE,MAAM,MAAM,qBAAqB,CAC/B,MAAM,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,IAClD;IACF,MAAM,EAAE,iBAAiB,CAAA;IACzB,mBAAmB,EAAE,WAAW,CAAA;IAChC,WAAW,EAAE,WAAW,CAAA;IACxB,kBAAkB,EAAE,+BAA+B,CAAC,MAAM,CAAC,CAAA;CAC5D,CAAA;AAED,MAAM,MAAM,mCAAmC,CAC7C,MAAM,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,IAClD,+BAA+B,CAAC,MAAM,CAAC,CAAA;AAE3C,MAAM,MAAM,mCAAmC,CAC7C,MAAM,SAAS,KAAK,GAAG,SAAS,GAAG,KAAK,GAAG,SAAS,IAClD;IACF;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mCAAmC;IACnC,IAAI,EAAE,IAAI,CAAA;IACV,sEAAsE;IACtE,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,qBAAqB,CAAC,MAAM,CAAC,KAAK,IAAI,CAAA;IAC9D;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAsB,yBAAyB,CAC7C,MAAM,SAAS,KAAK,GAAG,SAAS,EAEhC,MAAM,EAAE,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,EACvC,EACE,aAAiB,EACjB,IAAI,EACJ,UAAU,EACV,eAAwC,EACxC,OAAO,GACR,EAAE,mCAAmC,CAAC,MAAM,CAAC,GAC7C,OAAO,CAAC,mCAAmC,CAAC,MAAM,CAAC,CAAC,CA8ItD"}
|
@@ -1,2 +1,2 @@
|
|
1
|
-
export declare const version = "0.3.
|
1
|
+
export declare const version = "0.3.27";
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"isHex.d.ts","sourceRoot":"","sources":["../../../../src/utils/data/isHex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAE9C,wBAAgB,KAAK,
|
1
|
+
{"version":3,"file":"isHex.d.ts","sourceRoot":"","sources":["../../../../src/utils/data/isHex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAE9C,wBAAgB,KAAK,CACnB,KAAK,EAAE,OAAO,EACd,EAAE,MAAa,EAAE,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3C,KAAK,IAAI,GAAG,CAId"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"keccak256.d.ts","sourceRoot":"","sources":["../../../../src/utils/hash/keccak256.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAKzD,KAAK,EAAE,GAAG,KAAK,GAAG,OAAO,CAAA;AAEzB,MAAM,MAAM,aAAa,CAAC,GAAG,SAAS,EAAE,IACpC,CAAC,GAAG,SAAS,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC,GACzC,CAAC,GAAG,SAAS,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,CAAA;AAErC,wBAAgB,SAAS,CAAC,GAAG,SAAS,EAAE,GAAG,KAAK,EAC9C,KAAK,EAAE,GAAG,GAAG,SAAS,EACtB,GAAG,CAAC,EAAE,GAAG,GACR,aAAa,CAAC,GAAG,CAAC,
|
1
|
+
{"version":3,"file":"keccak256.d.ts","sourceRoot":"","sources":["../../../../src/utils/hash/keccak256.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAA;AAKzD,KAAK,EAAE,GAAG,KAAK,GAAG,OAAO,CAAA;AAEzB,MAAM,MAAM,aAAa,CAAC,GAAG,SAAS,EAAE,IACpC,CAAC,GAAG,SAAS,OAAO,GAAG,SAAS,GAAG,KAAK,CAAC,GACzC,CAAC,GAAG,SAAS,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC,CAAA;AAErC,wBAAgB,SAAS,CAAC,GAAG,SAAS,EAAE,GAAG,KAAK,EAC9C,KAAK,EAAE,GAAG,GAAG,SAAS,EACtB,GAAG,CAAC,EAAE,GAAG,GACR,aAAa,CAAC,GAAG,CAAC,CAOpB"}
|
@@ -2,14 +2,16 @@ type Resolved<TReturnType extends readonly unknown[] = any> = [
|
|
2
2
|
result: TReturnType[number],
|
3
3
|
results: TReturnType
|
4
4
|
];
|
5
|
-
export
|
5
|
+
export type CreateBatchSchedulerArguments<TParameters = unknown, TReturnType extends readonly unknown[] = readonly unknown[]> = {
|
6
6
|
fn: (args: TParameters[]) => Promise<TReturnType>;
|
7
7
|
id: number | string;
|
8
8
|
shouldSplitBatch?: (args: TParameters[]) => boolean;
|
9
9
|
wait?: number;
|
10
|
-
}): {
|
11
|
-
flush: () => boolean;
|
12
|
-
schedule(args: TParameters): Promise<Resolved<TReturnType>>;
|
13
10
|
};
|
11
|
+
export type CreateBatchSchedulerReturnType<TParameters = unknown, TReturnType extends readonly unknown[] = readonly unknown[]> = {
|
12
|
+
flush: () => void;
|
13
|
+
schedule: TParameters extends undefined ? (args?: TParameters) => Promise<Resolved<TReturnType>> : (args: TParameters) => Promise<Resolved<TReturnType>>;
|
14
|
+
};
|
15
|
+
export declare function createBatchScheduler<TParameters, TReturnType extends readonly unknown[]>({ fn, id, shouldSplitBatch, wait, }: CreateBatchSchedulerArguments<TParameters, TReturnType>): CreateBatchSchedulerReturnType<TParameters, TReturnType>;
|
14
16
|
export {};
|
15
17
|
//# sourceMappingURL=createBatchScheduler.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"createBatchScheduler.d.ts","sourceRoot":"","sources":["../../../../src/utils/promise/createBatchScheduler.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,CAAC,WAAW,SAAS,SAAS,OAAO,EAAE,GAAG,GAAG,IAAI;IAC5D,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;IAC3B,OAAO,EAAE,WAAW;CACrB,CAAA;
|
1
|
+
{"version":3,"file":"createBatchScheduler.d.ts","sourceRoot":"","sources":["../../../../src/utils/promise/createBatchScheduler.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,CAAC,WAAW,SAAS,SAAS,OAAO,EAAE,GAAG,GAAG,IAAI;IAC5D,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;IAC3B,OAAO,EAAE,WAAW;CACrB,CAAA;AASD,MAAM,MAAM,6BAA6B,CACvC,WAAW,GAAG,OAAO,EACrB,WAAW,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,IACzD;IACF,EAAE,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,CAAA;IACjD,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,OAAO,CAAA;IACnD,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AACD,MAAM,MAAM,8BAA8B,CACxC,WAAW,GAAG,OAAO,EACrB,WAAW,SAAS,SAAS,OAAO,EAAE,GAAG,SAAS,OAAO,EAAE,IACzD;IACF,KAAK,EAAE,MAAM,IAAI,CAAA;IACjB,QAAQ,EAAE,WAAW,SAAS,SAAS,GACnC,CAAC,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,GACtD,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAA;CAC1D,CAAA;AAID,wBAAgB,oBAAoB,CAClC,WAAW,EACX,WAAW,SAAS,SAAS,OAAO,EAAE,EACtC,EACA,EAAE,EACF,EAAE,EACF,gBAAgB,EAChB,IAAQ,GACT,EAAE,6BAA6B,CAC9B,WAAW,EACX,WAAW,CACZ,GAAG,8BAA8B,CAAC,WAAW,EAAE,WAAW,CAAC,CAsD3D"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../../src/utils/rpc.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAA;
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../../src/utils/rpc.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAgB,SAAS,EAAE,MAAM,eAAe,CAAA;AAe5D,KAAK,aAAa,CAAC,CAAC,IAAI;IACtB,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,MAAM,EAAE,CAAC,CAAA;IACT,KAAK,CAAC,EAAE,KAAK,CAAA;CACd,CAAA;AACD,KAAK,WAAW,CAAC,CAAC,IAAI;IACpB,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,KAAK,EAAE,CAAC,CAAA;CACT,CAAA;AACD,KAAK,YAAY,CAAC,OAAO,EAAE,MAAM,IAAI;IACnC,MAAM,EAAE,kBAAkB,CAAA;IAC1B,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,MAAM,CAAC,EAAE,KAAK,CAAA;IACd,MAAM,EAAE;QACN,YAAY,EAAE,MAAM,CAAA;KACrB,GAAG,CACA;QACE,MAAM,EAAE,OAAO,CAAA;QACf,KAAK,CAAC,EAAE,KAAK,CAAA;KACd,GACD;QACE,MAAM,CAAC,EAAE,KAAK,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;KACd,CACJ,CAAA;CACF,CAAA;AAED,KAAK,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,GAAG,CAAA;CAAE,CAAA;AAElD,MAAM,MAAM,WAAW,CAAC,OAAO,GAAG,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI;IACrD,OAAO,EAAE,GAAG,MAAM,EAAE,CAAA;IACpB,EAAE,EAAE,MAAM,CAAA;CACX,GAAG,CACA,aAAa,CAAC,OAAO,CAAC,GACtB,WAAW,CAAC,MAAM,CAAC,GACnB,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAChC,CAAA;AAKD,MAAM,MAAM,WAAW,GAAG;IAExB,IAAI,EAAE,UAAU,CAAA;IAEhB,YAAY,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAA;IAExC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,iBAAe,IAAI,CACjB,GAAG,EAAE,MAAM,EACX,EAAE,IAAI,EAAE,YAAiB,EAAE,OAAgB,EAAE,EAAE,WAAW,kCAwD3D;AAKD,KAAK,EAAE,GAAG,MAAM,GAAG,MAAM,CAAA;AACzB,KAAK,UAAU,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAA;AACxC,KAAK,WAAW,GAAG,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAA;AAEtC,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG;IAC/B,QAAQ,EAAE,WAAW,CAAA;IACrB,aAAa,EAAE,WAAW,CAAA;CAC3B,CAAA;AAID,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,mBAyE3C;AAED,iBAAS,SAAS,CAChB,MAAM,EAAE,MAAM,EACd,EACE,IAAI,EACJ,MAAM,EACN,OAAO,GACR,EAAE;IAED,IAAI,EAAE,UAAU,CAAA;IAEhB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,CAAA;IAEvC,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,IAAI,CAAA;CAClD,UA2CF;AAED,iBAAe,cAAc,CAC3B,MAAM,EAAE,MAAM,EACd,EACE,IAAI,EACJ,OAAgB,GACjB,EAAE;IAED,IAAI,EAAE,UAAU,CAAA;IAEhB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,kCAgBF;AAID,eAAO,MAAM,GAAG;;;;CAIf,CAAA"}
|
package/package.json
CHANGED
@@ -24,7 +24,7 @@ export type GetTransactionReceiptReturnType<
|
|
24
24
|
*
|
25
25
|
* - Docs: https://viem.sh/docs/actions/public/getTransactionReceipt.html
|
26
26
|
* - Example: https://stackblitz.com/github/wagmi-dev/viem/tree/main/examples/transactions/fetching-transactions
|
27
|
-
* - JSON-RPC Methods: [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#
|
27
|
+
* - JSON-RPC Methods: [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactionreceipt)
|
28
28
|
*
|
29
29
|
* @param client - Client to use
|
30
30
|
* @param parameters - {@link GetTransactionReceiptParameters}
|
@@ -9,6 +9,7 @@ import type { Chain } from '../../types/chain.js'
|
|
9
9
|
import type { Hash } from '../../types/misc.js'
|
10
10
|
import type { Transaction } from '../../types/transaction.js'
|
11
11
|
import { observe } from '../../utils/observe.js'
|
12
|
+
import { withRetry } from '../../utils/promise/withRetry.js'
|
12
13
|
|
13
14
|
import { getBlock } from './getBlock.js'
|
14
15
|
import {
|
@@ -115,7 +116,6 @@ export async function waitForTransactionReceipt<
|
|
115
116
|
let transaction: GetTransactionReturnType<TChain> | undefined
|
116
117
|
let replacedTransaction: GetTransactionReturnType<TChain> | undefined
|
117
118
|
let receipt: GetTransactionReceiptReturnType<TChain>
|
118
|
-
let retries = 0
|
119
119
|
|
120
120
|
return new Promise((resolve, reject) => {
|
121
121
|
if (timeout)
|
@@ -133,7 +133,9 @@ export async function waitForTransactionReceipt<
|
|
133
133
|
emitOnBegin: true,
|
134
134
|
poll: true,
|
135
135
|
pollingInterval,
|
136
|
-
async onBlockNumber(
|
136
|
+
async onBlockNumber(blockNumber_) {
|
137
|
+
let blockNumber = blockNumber_
|
138
|
+
|
137
139
|
const done = async (fn: () => void) => {
|
138
140
|
unwatch()
|
139
141
|
fn()
|
@@ -152,13 +154,30 @@ export async function waitForTransactionReceipt<
|
|
152
154
|
}
|
153
155
|
|
154
156
|
// Get the transaction to check if it's been replaced.
|
155
|
-
|
157
|
+
// We need to retry as some RPC Providers may be slow to sync
|
158
|
+
// up mined transactions.
|
159
|
+
await withRetry(
|
160
|
+
async () => {
|
161
|
+
transaction = await getTransaction(client, { hash })
|
162
|
+
if (transaction.blockNumber)
|
163
|
+
blockNumber = transaction.blockNumber
|
164
|
+
},
|
165
|
+
{
|
166
|
+
// exponential backoff
|
167
|
+
delay: ({ count }) => ~~(1 << count) * 100,
|
168
|
+
retryCount: 3,
|
169
|
+
},
|
170
|
+
)
|
156
171
|
|
157
172
|
// Get the receipt to check if it's been processed.
|
158
173
|
receipt = await getTransactionReceipt(client, { hash })
|
159
174
|
|
160
175
|
// Check if we have enough confirmations. If not, continue polling.
|
161
|
-
if (
|
176
|
+
if (
|
177
|
+
confirmations > 0 &&
|
178
|
+
blockNumber - receipt.blockNumber + 1n < confirmations
|
179
|
+
)
|
180
|
+
return
|
162
181
|
|
163
182
|
done(() => emit.resolve(receipt))
|
164
183
|
} catch (err) {
|
@@ -220,8 +239,7 @@ export async function waitForTransactionReceipt<
|
|
220
239
|
emit.resolve(receipt)
|
221
240
|
})
|
222
241
|
} else {
|
223
|
-
|
224
|
-
retries++
|
242
|
+
done(() => emit.reject(err))
|
225
243
|
}
|
226
244
|
}
|
227
245
|
},
|
package/src/errors/version.ts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
export const version = '0.3.
|
1
|
+
export const version = '0.3.27'
|
package/src/utils/data/isHex.ts
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
import type { Hex } from '../../types/misc.js'
|
2
2
|
|
3
|
-
export function isHex(
|
3
|
+
export function isHex(
|
4
|
+
value: unknown,
|
5
|
+
{ strict = true }: { strict?: boolean } = {},
|
6
|
+
): value is Hex {
|
4
7
|
if (!value) return false
|
5
8
|
if (typeof value !== 'string') return false
|
6
|
-
return /^0x[0-9a-fA-F]*$/.test(value)
|
9
|
+
return strict ? /^0x[0-9a-fA-F]*$/.test(value) : value.startsWith('0x')
|
7
10
|
}
|
package/src/utils/data/size.ts
CHANGED
@@ -9,6 +9,6 @@ import { isHex } from './isHex.js'
|
|
9
9
|
* @returns The size of the value (in bytes).
|
10
10
|
*/
|
11
11
|
export function size(value: Hex | ByteArray) {
|
12
|
-
if (isHex(value)) return Math.ceil((value.length - 2) / 2)
|
12
|
+
if (isHex(value, { strict: false })) return Math.ceil((value.length - 2) / 2)
|
13
13
|
return value.length
|
14
14
|
}
|
package/src/utils/data/slice.ts
CHANGED
@@ -21,7 +21,7 @@ export function slice<TValue extends ByteArray | Hex>(
|
|
21
21
|
end?: number,
|
22
22
|
{ strict }: { strict?: boolean } = {},
|
23
23
|
): SliceReturnType<TValue> {
|
24
|
-
if (isHex(value))
|
24
|
+
if (isHex(value, { strict: false }))
|
25
25
|
return sliceHex(value as Hex, start, end, {
|
26
26
|
strict,
|
27
27
|
}) as SliceReturnType<TValue>
|
@@ -16,7 +16,9 @@ export function keccak256<TTo extends To = 'hex'>(
|
|
16
16
|
to_?: TTo,
|
17
17
|
): Keccak256Hash<TTo> {
|
18
18
|
const to = to_ || 'hex'
|
19
|
-
const bytes = keccak_256(
|
19
|
+
const bytes = keccak_256(
|
20
|
+
isHex(value, { strict: false }) ? toBytes(value) : value,
|
21
|
+
)
|
20
22
|
if (to === 'bytes') return bytes as Keccak256Hash<TTo>
|
21
23
|
return toHex(bytes) as Keccak256Hash<TTo>
|
22
24
|
}
|
@@ -10,6 +10,25 @@ type PendingPromise<TReturnType extends readonly unknown[] = any> = {
|
|
10
10
|
|
11
11
|
type SchedulerItem = { args: unknown; pendingPromise: PendingPromise }
|
12
12
|
|
13
|
+
export type CreateBatchSchedulerArguments<
|
14
|
+
TParameters = unknown,
|
15
|
+
TReturnType extends readonly unknown[] = readonly unknown[],
|
16
|
+
> = {
|
17
|
+
fn: (args: TParameters[]) => Promise<TReturnType>
|
18
|
+
id: number | string
|
19
|
+
shouldSplitBatch?: (args: TParameters[]) => boolean
|
20
|
+
wait?: number
|
21
|
+
}
|
22
|
+
export type CreateBatchSchedulerReturnType<
|
23
|
+
TParameters = unknown,
|
24
|
+
TReturnType extends readonly unknown[] = readonly unknown[],
|
25
|
+
> = {
|
26
|
+
flush: () => void
|
27
|
+
schedule: TParameters extends undefined
|
28
|
+
? (args?: TParameters) => Promise<Resolved<TReturnType>>
|
29
|
+
: (args: TParameters) => Promise<Resolved<TReturnType>>
|
30
|
+
}
|
31
|
+
|
13
32
|
const schedulerCache = new Map<number | string, SchedulerItem[]>()
|
14
33
|
|
15
34
|
export function createBatchScheduler<
|
@@ -20,12 +39,10 @@ export function createBatchScheduler<
|
|
20
39
|
id,
|
21
40
|
shouldSplitBatch,
|
22
41
|
wait = 0,
|
23
|
-
}:
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
wait?: number
|
28
|
-
}) {
|
42
|
+
}: CreateBatchSchedulerArguments<
|
43
|
+
TParameters,
|
44
|
+
TReturnType
|
45
|
+
>): CreateBatchSchedulerReturnType<TParameters, TReturnType> {
|
29
46
|
const exec = async () => {
|
30
47
|
const scheduler = getScheduler()
|
31
48
|
flush()
|
@@ -78,5 +95,5 @@ export function createBatchScheduler<
|
|
78
95
|
setTimeout(exec, wait)
|
79
96
|
return promise
|
80
97
|
},
|
81
|
-
}
|
98
|
+
} as unknown as CreateBatchSchedulerReturnType<TParameters, TReturnType>
|
82
99
|
}
|
package/src/utils/rpc.ts
CHANGED
@@ -7,6 +7,7 @@ import {
|
|
7
7
|
WebSocketRequestError,
|
8
8
|
} from '../errors/request.js'
|
9
9
|
|
10
|
+
import { createBatchScheduler } from './promise/createBatchScheduler.js'
|
10
11
|
import { withTimeout } from './promise/withTimeout.js'
|
11
12
|
import { stringify } from './stringify.js'
|
12
13
|
|
@@ -146,61 +147,70 @@ export async function getSocket(url_: string) {
|
|
146
147
|
// If the socket already exists, return it.
|
147
148
|
if (socket) return socket
|
148
149
|
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
150
|
+
const { schedule } = createBatchScheduler<undefined, [Socket]>({
|
151
|
+
id: urlKey,
|
152
|
+
fn: async () => {
|
153
|
+
let WebSocket = await import('isomorphic-ws')
|
154
|
+
// Workaround for Vite.
|
155
|
+
// https://github.com/vitejs/vite/issues/9703
|
156
|
+
// TODO: Remove when issue is resolved.
|
157
|
+
if (
|
158
|
+
(WebSocket as unknown as { default?: typeof WebSocket }).default
|
159
|
+
?.constructor
|
160
|
+
)
|
161
|
+
WebSocket = (WebSocket as unknown as { default: typeof WebSocket })
|
162
|
+
.default
|
163
|
+
else WebSocket = WebSocket.WebSocket
|
164
|
+
|
165
|
+
const webSocket = new WebSocket(url)
|
166
|
+
|
167
|
+
// Set up a cache for incoming "synchronous" requests.
|
168
|
+
const requests = new Map<Id, CallbackFn>()
|
169
|
+
|
170
|
+
// Set up a cache for subscriptions (eth_subscribe).
|
171
|
+
const subscriptions = new Map<Id, CallbackFn>()
|
172
|
+
|
173
|
+
const onMessage: (event: MessageEvent) => void = ({ data }) => {
|
174
|
+
const message: RpcResponse = JSON.parse(data as string)
|
175
|
+
const isSubscription = message.method === 'eth_subscription'
|
176
|
+
const id = isSubscription ? message.params.subscription : message.id
|
177
|
+
const cache = isSubscription ? subscriptions : requests
|
178
|
+
const callback = cache.get(id)
|
179
|
+
if (callback) callback({ data })
|
180
|
+
if (!isSubscription) cache.delete(id)
|
181
|
+
}
|
182
|
+
const onClose = () => {
|
183
|
+
sockets.delete(urlKey)
|
184
|
+
webSocket.removeEventListener('close', onClose)
|
185
|
+
webSocket.removeEventListener('message', onMessage)
|
186
|
+
}
|
164
187
|
|
165
|
-
|
166
|
-
|
188
|
+
// Setup event listeners for RPC & subscription responses.
|
189
|
+
webSocket.addEventListener('close', onClose)
|
190
|
+
webSocket.addEventListener('message', onMessage)
|
167
191
|
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
}
|
177
|
-
const onClose = () => {
|
178
|
-
sockets.delete(urlKey)
|
179
|
-
webSocket.removeEventListener('close', onClose)
|
180
|
-
webSocket.removeEventListener('message', onMessage)
|
181
|
-
}
|
182
|
-
|
183
|
-
// Setup event listeners for RPC & subscription responses.
|
184
|
-
webSocket.addEventListener('close', onClose)
|
185
|
-
webSocket.addEventListener('message', onMessage)
|
192
|
+
// Wait for the socket to open.
|
193
|
+
if (webSocket.readyState === WebSocket.CONNECTING) {
|
194
|
+
await new Promise((resolve, reject) => {
|
195
|
+
if (!webSocket) return
|
196
|
+
webSocket.onopen = resolve
|
197
|
+
webSocket.onerror = reject
|
198
|
+
})
|
199
|
+
}
|
186
200
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
})
|
194
|
-
}
|
201
|
+
// Create a new socket instance.
|
202
|
+
socket = Object.assign(webSocket, {
|
203
|
+
requests,
|
204
|
+
subscriptions,
|
205
|
+
})
|
206
|
+
sockets.set(urlKey, socket)
|
195
207
|
|
196
|
-
|
197
|
-
|
198
|
-
requests,
|
199
|
-
subscriptions,
|
208
|
+
return [socket]
|
209
|
+
},
|
200
210
|
})
|
201
|
-
sockets.set(urlKey, socket)
|
202
211
|
|
203
|
-
|
212
|
+
const [_, [socket_]] = await schedule()
|
213
|
+
return socket_
|
204
214
|
}
|
205
215
|
|
206
216
|
function webSocket(
|