viem 2.48.11 → 2.49.0
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/CHANGELOG.md +21 -0
- package/_cjs/actions/public/call.js +26 -6
- package/_cjs/actions/public/call.js.map +1 -1
- package/_cjs/clients/transports/http.js +19 -2
- package/_cjs/clients/transports/http.js.map +1 -1
- package/_cjs/errors/utils.js +17 -0
- package/_cjs/errors/utils.js.map +1 -1
- package/_cjs/errors/version.js +1 -1
- package/_cjs/errors/version.js.map +1 -1
- package/_cjs/index.js.map +1 -1
- package/_cjs/tempo/actions/wallet.js.map +1 -1
- package/_cjs/utils/buildRequest.js +12 -2
- package/_cjs/utils/buildRequest.js.map +1 -1
- package/_cjs/utils/ccip.js +17 -4
- package/_cjs/utils/ccip.js.map +1 -1
- package/_cjs/utils/promise/withRetry.js +23 -3
- package/_cjs/utils/promise/withRetry.js.map +1 -1
- package/_cjs/utils/promise/withTimeout.js +5 -2
- package/_cjs/utils/promise/withTimeout.js.map +1 -1
- package/_cjs/utils/rpc/http.js +5 -0
- package/_cjs/utils/rpc/http.js.map +1 -1
- package/_cjs/utils/wait.js +19 -2
- package/_cjs/utils/wait.js.map +1 -1
- package/_esm/actions/public/call.js +26 -6
- package/_esm/actions/public/call.js.map +1 -1
- package/_esm/clients/transports/http.js +19 -2
- package/_esm/clients/transports/http.js.map +1 -1
- package/_esm/errors/utils.js +15 -0
- package/_esm/errors/utils.js.map +1 -1
- package/_esm/errors/version.js +1 -1
- package/_esm/errors/version.js.map +1 -1
- package/_esm/index.js.map +1 -1
- package/_esm/tempo/actions/wallet.js +1 -1
- package/_esm/tempo/actions/wallet.js.map +1 -1
- package/_esm/utils/buildRequest.js +12 -2
- package/_esm/utils/buildRequest.js.map +1 -1
- package/_esm/utils/ccip.js +17 -4
- package/_esm/utils/ccip.js.map +1 -1
- package/_esm/utils/promise/withRetry.js +23 -3
- package/_esm/utils/promise/withRetry.js.map +1 -1
- package/_esm/utils/promise/withTimeout.js +5 -2
- package/_esm/utils/promise/withTimeout.js.map +1 -1
- package/_esm/utils/rpc/http.js +5 -0
- package/_esm/utils/rpc/http.js.map +1 -1
- package/_esm/utils/wait.js +19 -2
- package/_esm/utils/wait.js.map +1 -1
- package/_types/actions/public/call.d.ts +4 -1
- package/_types/actions/public/call.d.ts.map +1 -1
- package/_types/clients/transports/http.d.ts.map +1 -1
- package/_types/errors/utils.d.ts +3 -0
- package/_types/errors/utils.d.ts.map +1 -1
- package/_types/errors/version.d.ts +1 -1
- package/_types/errors/version.d.ts.map +1 -1
- package/_types/index.d.ts +1 -1
- package/_types/index.d.ts.map +1 -1
- package/_types/tempo/actions/wallet.d.ts +15 -5
- package/_types/tempo/actions/wallet.d.ts.map +1 -1
- package/_types/types/eip1193.d.ts +2 -0
- package/_types/types/eip1193.d.ts.map +1 -1
- package/_types/utils/buildRequest.d.ts +5 -3
- package/_types/utils/buildRequest.d.ts.map +1 -1
- package/_types/utils/ccip.d.ts +5 -3
- package/_types/utils/ccip.d.ts.map +1 -1
- package/_types/utils/promise/withRetry.d.ts +3 -2
- package/_types/utils/promise/withRetry.d.ts.map +1 -1
- package/_types/utils/promise/withTimeout.d.ts +1 -1
- package/_types/utils/promise/withTimeout.d.ts.map +1 -1
- package/_types/utils/rpc/http.d.ts +1 -1
- package/_types/utils/rpc/http.d.ts.map +1 -1
- package/_types/utils/wait.d.ts +3 -1
- package/_types/utils/wait.d.ts.map +1 -1
- package/actions/public/call.ts +59 -23
- package/clients/transports/http.ts +18 -2
- package/errors/utils.ts +19 -0
- package/errors/version.ts +1 -1
- package/index.ts +1 -0
- package/package.json +1 -1
- package/tempo/actions/wallet.ts +15 -5
- package/types/eip1193.ts +2 -0
- package/utils/buildRequest.ts +22 -6
- package/utils/ccip.ts +22 -4
- package/utils/promise/withRetry.ts +29 -2
- package/utils/promise/withTimeout.ts +6 -3
- package/utils/rpc/http.ts +7 -1
- package/utils/wait.ts +24 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildRequest.d.ts","sourceRoot":"","sources":["../../utils/buildRequest.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC/B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAEL,KAAK,8BAA8B,EAEnC,KAAK,yCAAyC,EAE9C,KAAK,uBAAuB,EAE5B,KAAK,0BAA0B,EAE/B,KAAK,oBAAoB,EAEzB,KAAK,oBAAoB,EAEzB,KAAK,wBAAwB,EAE7B,KAAK,yBAAyB,EAE9B,KAAK,0BAA0B,EAE/B,KAAK,kCAAkC,EAEvC,KAAK,yBAAyB,EAE9B,KAAK,0BAA0B,EAE/B,KAAK,8BAA8B,EAEnC,KAAK,iBAAiB,EAEtB,KAAK,6BAA6B,EAGlC,KAAK,4BAA4B,EAEjC,KAAK,+BAA+B,EAGpC,KAAK,YAAY,EAEjB,KAAK,oBAAoB,EAEzB,KAAK,+BAA+B,EAEpC,KAAK,6BAA6B,EAElC,KAAK,wBAAwB,EAE7B,KAAK,mBAAmB,EAExB,KAAK,2BAA2B,EAEhC,KAAK,yCAAyC,EAE9C,KAAK,kCAAkC,EAEvC,KAAK,4BAA4B,EAEjC,KAAK,uCAAuC,EAC7C,MAAM,kBAAkB,CAAA;AACzB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"buildRequest.d.ts","sourceRoot":"","sources":["../../utils/buildRequest.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC/B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAEL,KAAK,8BAA8B,EAEnC,KAAK,yCAAyC,EAE9C,KAAK,uBAAuB,EAE5B,KAAK,0BAA0B,EAE/B,KAAK,oBAAoB,EAEzB,KAAK,oBAAoB,EAEzB,KAAK,wBAAwB,EAE7B,KAAK,yBAAyB,EAE9B,KAAK,0BAA0B,EAE/B,KAAK,kCAAkC,EAEvC,KAAK,yBAAyB,EAE9B,KAAK,0BAA0B,EAE/B,KAAK,8BAA8B,EAEnC,KAAK,iBAAiB,EAEtB,KAAK,6BAA6B,EAGlC,KAAK,4BAA4B,EAEjC,KAAK,+BAA+B,EAGpC,KAAK,YAAY,EAEjB,KAAK,oBAAoB,EAEzB,KAAK,+BAA+B,EAEpC,KAAK,6BAA6B,EAElC,KAAK,wBAAwB,EAE7B,KAAK,mBAAmB,EAExB,KAAK,2BAA2B,EAEhC,KAAK,yCAAyC,EAE9C,KAAK,kCAAkC,EAEvC,KAAK,4BAA4B,EAEjC,KAAK,uCAAuC,EAC7C,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,SAAS,EAGf,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EACV,gBAAgB,EAChB,qBAAqB,EACtB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAA;AAEtF,OAAO,EAAE,KAAK,kBAAkB,EAAa,MAAM,wBAAwB,CAAA;AAC3E,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAA;AAGlE,MAAM,MAAM,gBAAgB,GACxB,8BAA8B,GAC9B,yCAAyC,GACzC,uBAAuB,GACvB,0BAA0B,GAC1B,6BAA6B,GAC7B,oBAAoB,GACpB,oBAAoB,GACpB,oBAAoB,GACpB,wBAAwB,GACxB,yBAAyB,GACzB,0BAA0B,GAC1B,2BAA2B,GAC3B,kCAAkC,GAClC,yBAAyB,GACzB,0BAA0B,GAC1B,8BAA8B,GAC9B,iBAAiB,GACjB,6BAA6B,GAC7B,4BAA4B,GAC5B,+BAA+B,GAC/B,YAAY,GACZ,mBAAmB,GACnB,oBAAoB,GACpB,gBAAgB,GAChB,+BAA+B,GAC/B,6BAA6B,GAC7B,wBAAwB,GACxB,mBAAmB,GACnB,2BAA2B,GAC3B,yCAAyC,GACzC,kCAAkC,GAClC,4BAA4B,GAC5B,uCAAuC,GACvC,yBAAyB,GACzB,kBAAkB,GAClB,cAAc,GACd,SAAS,CAAA;AAEb,wBAAgB,YAAY,CAC1B,OAAO,SAAS,CACd,IAAI,EAAE,GAAG,EACT,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CAAE,GAAG,SAAS,KACvD,OAAO,CAAC,GAAG,CAAC,EACjB,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,qBAA0B,GAAG,gBAAgB,CA+JzE;AAED,gBAAgB;AAChB,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,WAgCvC"}
|
package/_types/utils/ccip.d.ts
CHANGED
|
@@ -4,8 +4,9 @@ import type { Client } from '../clients/createClient.js';
|
|
|
4
4
|
import type { Transport } from '../clients/transports/createTransport.js';
|
|
5
5
|
import { type OffchainLookupErrorType as OffchainLookupErrorType_, type OffchainLookupResponseMalformedErrorType } from '../errors/ccip.js';
|
|
6
6
|
import { type HttpRequestErrorType } from '../errors/request.js';
|
|
7
|
-
import type
|
|
7
|
+
import { type ErrorType } from '../errors/utils.js';
|
|
8
8
|
import type { Chain } from '../types/chain.js';
|
|
9
|
+
import type { EIP1193RequestOptions } from '../types/eip1193.js';
|
|
9
10
|
import type { Hex } from '../types/misc.js';
|
|
10
11
|
export declare const offchainLookupSignature = "0x556f1830";
|
|
11
12
|
export declare const offchainLookupAbiItem: {
|
|
@@ -29,16 +30,17 @@ export declare const offchainLookupAbiItem: {
|
|
|
29
30
|
}];
|
|
30
31
|
};
|
|
31
32
|
export type OffchainLookupErrorType = OffchainLookupErrorType_ | ErrorType;
|
|
32
|
-
export declare function offchainLookup<chain extends Chain | undefined>(client: Client<Transport, chain>, { blockNumber, blockTag, data, to, }: Pick<CallParameters, 'blockNumber' | 'blockTag'> & {
|
|
33
|
+
export declare function offchainLookup<chain extends Chain | undefined>(client: Client<Transport, chain>, { blockNumber, blockTag, data, requestOptions, to, }: Pick<CallParameters, 'blockNumber' | 'blockTag' | 'requestOptions'> & {
|
|
33
34
|
data: Hex;
|
|
34
35
|
to: Address;
|
|
35
36
|
}): Promise<Hex>;
|
|
36
37
|
export type CcipRequestParameters = {
|
|
37
38
|
data: Hex;
|
|
39
|
+
requestOptions?: EIP1193RequestOptions | undefined;
|
|
38
40
|
sender: Address;
|
|
39
41
|
urls: readonly string[];
|
|
40
42
|
};
|
|
41
43
|
export type CcipRequestReturnType = Hex;
|
|
42
44
|
export type CcipRequestErrorType = HttpRequestErrorType | OffchainLookupResponseMalformedErrorType | ErrorType;
|
|
43
|
-
export declare function ccipRequest({ data, sender, urls, }: CcipRequestParameters): Promise<CcipRequestReturnType>;
|
|
45
|
+
export declare function ccipRequest({ data, requestOptions, sender, urls, }: CcipRequestParameters): Promise<CcipRequestReturnType>;
|
|
44
46
|
//# sourceMappingURL=ccip.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ccip.d.ts","sourceRoot":"","sources":["../../utils/ccip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAO,OAAO,EAAE,MAAM,SAAS,CAAA;AAE3C,OAAO,EAAE,KAAK,cAAc,EAAQ,MAAM,2BAA2B,CAAA;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAA;AAEzE,OAAO,EAEL,KAAK,uBAAuB,IAAI,wBAAwB,EAExD,KAAK,wCAAwC,EAE9C,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"ccip.d.ts","sourceRoot":"","sources":["../../utils/ccip.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAO,OAAO,EAAE,MAAM,SAAS,CAAA;AAE3C,OAAO,EAAE,KAAK,cAAc,EAAQ,MAAM,2BAA2B,CAAA;AACrE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAA;AAEzE,OAAO,EAEL,KAAK,uBAAuB,IAAI,wBAAwB,EAExD,KAAK,wCAAwC,EAE9C,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAEL,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,KAAK,SAAS,EAA+B,MAAM,oBAAoB,CAAA;AAChF,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAC9C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAChE,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAA;AAY3C,eAAO,MAAM,uBAAuB,eAAe,CAAA;AACnD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;CAyBF,CAAA;AAEhC,MAAM,MAAM,uBAAuB,GAAG,wBAAwB,GAAG,SAAS,CAAA;AAE1E,wBAAsB,cAAc,CAAC,KAAK,SAAS,KAAK,GAAG,SAAS,EAClE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,EAChC,EACE,WAAW,EACX,QAAQ,EACR,IAAI,EACJ,cAAc,EACd,EAAE,GACH,EAAE,IAAI,CAAC,cAAc,EAAE,aAAa,GAAG,UAAU,GAAG,gBAAgB,CAAC,GAAG;IACvE,IAAI,EAAE,GAAG,CAAA;IACT,EAAE,EAAE,OAAO,CAAA;CACZ,GACA,OAAO,CAAC,GAAG,CAAC,CAsDd;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,GAAG,CAAA;IACT,cAAc,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAA;IAClD,MAAM,EAAE,OAAO,CAAA;IACf,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG,GAAG,CAAA;AAEvC,MAAM,MAAM,oBAAoB,GAC5B,oBAAoB,GACpB,wCAAwC,GACxC,SAAS,CAAA;AAEb,wBAAsB,WAAW,CAAC,EAChC,IAAI,EACJ,cAAc,EACd,MAAM,EACN,IAAI,GACL,EAAE,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAqExD"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ErrorType } from '../../errors/utils.js';
|
|
2
2
|
export type WithRetryParameters = {
|
|
3
3
|
delay?: ((config: {
|
|
4
4
|
count: number;
|
|
@@ -9,7 +9,8 @@ export type WithRetryParameters = {
|
|
|
9
9
|
count: number;
|
|
10
10
|
error: Error;
|
|
11
11
|
}) => Promise<boolean> | boolean) | undefined;
|
|
12
|
+
signal?: AbortSignal | undefined;
|
|
12
13
|
};
|
|
13
14
|
export type WithRetryErrorType = ErrorType;
|
|
14
|
-
export declare function withRetry<data>(fn: () => Promise<data>, { delay: delay_, retryCount, shouldRetry, }?: WithRetryParameters): Promise<data>;
|
|
15
|
+
export declare function withRetry<data>(fn: () => Promise<data>, { delay: delay_, retryCount, shouldRetry, signal, }?: WithRetryParameters): Promise<data>;
|
|
15
16
|
//# sourceMappingURL=withRetry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withRetry.d.ts","sourceRoot":"","sources":["../../../utils/promise/withRetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"withRetry.d.ts","sourceRoot":"","sources":["../../../utils/promise/withRetry.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EAGf,MAAM,uBAAuB,CAAA;AAG9B,MAAM,MAAM,mBAAmB,GAAG;IAEhC,KAAK,CAAC,EACF,CAAC,CAAC,MAAM,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE,KAAK,MAAM,CAAC,GACrD,MAAM,GACN,SAAS,CAAA;IAEb,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAE/B,WAAW,CAAC,EACR,CAAC,CAAC,EACA,KAAK,EACL,KAAK,GACN,EAAE;QACD,KAAK,EAAE,MAAM,CAAA;QACb,KAAK,EAAE,KAAK,CAAA;KACb,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,GACjC,SAAS,CAAA;IAEb,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CACjC,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG,SAAS,CAAA;AAE1C,wBAAgB,SAAS,CAAC,IAAI,EAC5B,EAAE,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACvB,EACE,KAAK,EAAE,MAAY,EACnB,UAAc,EACd,WAAwB,EACxB,MAAM,GACP,GAAE,mBAAwB,iBA6C5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withTimeout.d.ts","sourceRoot":"","sources":["../../../utils/promise/withTimeout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"withTimeout.d.ts","sourceRoot":"","sources":["../../../utils/promise/withTimeout.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAgB,MAAM,uBAAuB,CAAA;AAEpE,MAAM,MAAM,oBAAoB,GAAG,SAAS,CAAA;AAE5C,wBAAgB,WAAW,CAAC,IAAI,EAC9B,EAAE,EAAE,CAAC,EACH,MAAM,GACP,EAAE;IACD,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAA;CACzC,KAAK,OAAO,CAAC,IAAI,CAAC,EACnB,EACE,aAAsC,EACtC,OAAO,EACP,MAAM,GACP,EAAE;IAED,aAAa,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;IAEjC,OAAO,EAAE,MAAM,CAAA;IAEf,MAAM,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;CAC7B,GACA,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type HttpRequestErrorType as HttpRequestErrorType_, type TimeoutErrorType } from '../../errors/request.js';
|
|
2
|
-
import type
|
|
2
|
+
import { type ErrorType } from '../../errors/utils.js';
|
|
3
3
|
import type { RpcRequest, RpcResponse } from '../../types/rpc.js';
|
|
4
4
|
import type { MaybePromise } from '../../types/utils.js';
|
|
5
5
|
import { type WithTimeoutErrorType } from '../promise/withTimeout.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../utils/rpc/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,IAAI,qBAAqB,EAElD,KAAK,gBAAgB,EACtB,MAAM,yBAAyB,CAAA;AAChC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../../utils/rpc/http.ts"],"names":[],"mappings":"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"}
|
package/_types/utils/wait.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../utils/wait.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wait.d.ts","sourceRoot":"","sources":["../../utils/wait.ts"],"names":[],"mappings":"AAEA,wBAAsB,IAAI,CACxB,IAAI,EAAE,MAAM,EACZ,EAAE,MAAM,EAAE,GAAE;IAAE,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CAAO,iBAoBtD"}
|
package/actions/public/call.ts
CHANGED
|
@@ -25,9 +25,14 @@ import {
|
|
|
25
25
|
RawContractError,
|
|
26
26
|
type RawContractErrorType,
|
|
27
27
|
} from '../../errors/contract.js'
|
|
28
|
-
import
|
|
28
|
+
import {
|
|
29
|
+
type ErrorType,
|
|
30
|
+
getAbortError,
|
|
31
|
+
isAbortError,
|
|
32
|
+
} from '../../errors/utils.js'
|
|
29
33
|
import type { BlockTag } from '../../types/block.js'
|
|
30
34
|
import type { Chain } from '../../types/chain.js'
|
|
35
|
+
import type { EIP1193RequestOptions } from '../../types/eip1193.js'
|
|
31
36
|
import type { Hex } from '../../types/misc.js'
|
|
32
37
|
import type { RpcTransactionRequest } from '../../types/rpc.js'
|
|
33
38
|
import type { StateOverride } from '../../types/stateOverride.js'
|
|
@@ -93,6 +98,8 @@ export type CallParameters<
|
|
|
93
98
|
factory?: Address | undefined
|
|
94
99
|
/** Calldata to execute on the factory to deploy the contract. */
|
|
95
100
|
factoryData?: Hex | undefined
|
|
101
|
+
/** Request options. */
|
|
102
|
+
requestOptions?: EIP1193RequestOptions | undefined
|
|
96
103
|
/** State overrides for the call. */
|
|
97
104
|
stateOverride?: StateOverride | undefined
|
|
98
105
|
} & (
|
|
@@ -175,6 +182,7 @@ export async function call<chain extends Chain | undefined>(
|
|
|
175
182
|
maxFeePerGas,
|
|
176
183
|
maxPriorityFeePerGas,
|
|
177
184
|
nonce,
|
|
185
|
+
requestOptions,
|
|
178
186
|
to,
|
|
179
187
|
value,
|
|
180
188
|
stateOverride,
|
|
@@ -258,6 +266,7 @@ export async function call<chain extends Chain | undefined>(
|
|
|
258
266
|
...request,
|
|
259
267
|
blockNumber,
|
|
260
268
|
blockTag,
|
|
269
|
+
requestOptions,
|
|
261
270
|
} as unknown as ScheduleMulticallParameters<chain>)
|
|
262
271
|
} catch (err) {
|
|
263
272
|
if (
|
|
@@ -280,13 +289,20 @@ export async function call<chain extends Chain | undefined>(
|
|
|
280
289
|
return base
|
|
281
290
|
})()
|
|
282
291
|
|
|
283
|
-
const response = await client.request(
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
292
|
+
const response = await client.request(
|
|
293
|
+
{
|
|
294
|
+
method: 'eth_call',
|
|
295
|
+
params,
|
|
296
|
+
},
|
|
297
|
+
requestOptions,
|
|
298
|
+
)
|
|
287
299
|
if (response === '0x') return { data: undefined }
|
|
288
300
|
return { data: response }
|
|
289
301
|
} catch (err) {
|
|
302
|
+
if (requestOptions?.signal?.aborted)
|
|
303
|
+
throw getAbortError(requestOptions.signal)
|
|
304
|
+
if (isAbortError(err)) throw err
|
|
305
|
+
|
|
290
306
|
const data = getRevertErrorData(err)
|
|
291
307
|
|
|
292
308
|
// Check for CCIP-Read offchain lookup signature.
|
|
@@ -298,7 +314,9 @@ export async function call<chain extends Chain | undefined>(
|
|
|
298
314
|
data?.slice(0, 10) === offchainLookupSignature &&
|
|
299
315
|
to
|
|
300
316
|
)
|
|
301
|
-
return {
|
|
317
|
+
return {
|
|
318
|
+
data: await offchainLookup(client, { data, requestOptions, to }),
|
|
319
|
+
}
|
|
302
320
|
|
|
303
321
|
// Check for counterfactual deployment error.
|
|
304
322
|
if (deploylessCall && data?.slice(0, 10) === '0x101bb98d')
|
|
@@ -329,12 +347,26 @@ function shouldPerformMulticall({ request }: { request: TransactionRequest }) {
|
|
|
329
347
|
return true
|
|
330
348
|
}
|
|
331
349
|
|
|
350
|
+
let requestOptionsId = 0
|
|
351
|
+
const requestOptionsIds = new WeakMap<EIP1193RequestOptions, number>()
|
|
352
|
+
function getRequestOptionsId(
|
|
353
|
+
requestOptions: EIP1193RequestOptions | undefined,
|
|
354
|
+
) {
|
|
355
|
+
if (!requestOptions) return 'default'
|
|
356
|
+
const id = requestOptionsIds.get(requestOptions)
|
|
357
|
+
if (id !== undefined) return id
|
|
358
|
+
const nextId = requestOptionsId++
|
|
359
|
+
requestOptionsIds.set(requestOptions, nextId)
|
|
360
|
+
return nextId
|
|
361
|
+
}
|
|
362
|
+
|
|
332
363
|
type ScheduleMulticallParameters<chain extends Chain | undefined> = Pick<
|
|
333
364
|
CallParameters<chain>,
|
|
334
365
|
'blockNumber' | 'blockTag'
|
|
335
366
|
> & {
|
|
336
367
|
data: Hex
|
|
337
368
|
multicallAddress?: Address | undefined
|
|
369
|
+
requestOptions?: EIP1193RequestOptions | undefined
|
|
338
370
|
to: Address
|
|
339
371
|
}
|
|
340
372
|
|
|
@@ -360,6 +392,7 @@ async function scheduleMulticall<chain extends Chain | undefined>(
|
|
|
360
392
|
blockNumber,
|
|
361
393
|
blockTag = client.experimental_blockTag ?? 'latest',
|
|
362
394
|
data,
|
|
395
|
+
requestOptions,
|
|
363
396
|
to,
|
|
364
397
|
} = args
|
|
365
398
|
|
|
@@ -381,7 +414,7 @@ async function scheduleMulticall<chain extends Chain | undefined>(
|
|
|
381
414
|
const block = blockNumberHex || blockTag
|
|
382
415
|
|
|
383
416
|
const { schedule } = createBatchScheduler({
|
|
384
|
-
id: `${client.uid}.${block}`,
|
|
417
|
+
id: `${client.uid}.${block}.${getRequestOptionsId(requestOptions)}`,
|
|
385
418
|
wait,
|
|
386
419
|
shouldSplitBatch(args) {
|
|
387
420
|
const size = args.reduce((size, { data }) => size + (data.length - 2), 0)
|
|
@@ -405,22 +438,25 @@ async function scheduleMulticall<chain extends Chain | undefined>(
|
|
|
405
438
|
functionName: 'aggregate3',
|
|
406
439
|
})
|
|
407
440
|
|
|
408
|
-
const data = await client.request(
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
441
|
+
const data = await client.request(
|
|
442
|
+
{
|
|
443
|
+
method: 'eth_call',
|
|
444
|
+
params: [
|
|
445
|
+
{
|
|
446
|
+
...(multicallAddress === null
|
|
447
|
+
? {
|
|
448
|
+
data: toDeploylessCallViaBytecodeData({
|
|
449
|
+
code: multicall3Bytecode,
|
|
450
|
+
data: calldata,
|
|
451
|
+
}),
|
|
452
|
+
}
|
|
453
|
+
: { to: multicallAddress, data: calldata }),
|
|
454
|
+
},
|
|
455
|
+
block,
|
|
456
|
+
],
|
|
457
|
+
},
|
|
458
|
+
requestOptions,
|
|
459
|
+
)
|
|
424
460
|
|
|
425
461
|
return decodeFunctionResult({
|
|
426
462
|
abi: multicall3Abi,
|
|
@@ -81,6 +81,17 @@ export type HttpTransportErrorType =
|
|
|
81
81
|
| UrlRequiredErrorType
|
|
82
82
|
| ErrorType
|
|
83
83
|
|
|
84
|
+
let signalId = 0
|
|
85
|
+
const signalIds = new WeakMap<AbortSignal, number>()
|
|
86
|
+
function getSignalId(signal: AbortSignal | undefined) {
|
|
87
|
+
if (!signal) return 'default'
|
|
88
|
+
const id = signalIds.get(signal)
|
|
89
|
+
if (id !== undefined) return id
|
|
90
|
+
const nextId = signalId++
|
|
91
|
+
signalIds.set(signal, nextId)
|
|
92
|
+
return nextId
|
|
93
|
+
}
|
|
94
|
+
|
|
84
95
|
/**
|
|
85
96
|
* @description Creates a HTTP transport that connects to a JSON-RPC API.
|
|
86
97
|
*/
|
|
@@ -125,11 +136,14 @@ export function http<
|
|
|
125
136
|
key,
|
|
126
137
|
methods,
|
|
127
138
|
name,
|
|
128
|
-
async request({ method, params }) {
|
|
139
|
+
async request({ method, params }, options) {
|
|
129
140
|
const body = { method, params }
|
|
141
|
+
const fetchOptions = options?.signal
|
|
142
|
+
? { signal: options.signal }
|
|
143
|
+
: undefined
|
|
130
144
|
|
|
131
145
|
const { schedule } = createBatchScheduler({
|
|
132
|
-
id: url_
|
|
146
|
+
id: `${url_}.${getSignalId(options?.signal)}`,
|
|
133
147
|
wait,
|
|
134
148
|
shouldSplitBatch(requests) {
|
|
135
149
|
return requests.length > batchSize
|
|
@@ -137,6 +151,7 @@ export function http<
|
|
|
137
151
|
fn: (body: RpcRequest[]) =>
|
|
138
152
|
rpcClient.request({
|
|
139
153
|
body,
|
|
154
|
+
fetchOptions,
|
|
140
155
|
}),
|
|
141
156
|
sort: (a, b) => a.id - b.id,
|
|
142
157
|
})
|
|
@@ -147,6 +162,7 @@ export function http<
|
|
|
147
162
|
: [
|
|
148
163
|
await rpcClient.request({
|
|
149
164
|
body,
|
|
165
|
+
fetchOptions,
|
|
150
166
|
}),
|
|
151
167
|
]
|
|
152
168
|
|
package/errors/utils.ts
CHANGED
|
@@ -1,9 +1,28 @@
|
|
|
1
1
|
import type { Address } from 'abitype'
|
|
2
2
|
|
|
3
3
|
export type ErrorType<name extends string = 'Error'> = Error & { name: name }
|
|
4
|
+
export type AbortErrorType = ErrorType<'AbortError'>
|
|
4
5
|
|
|
5
6
|
export const getContractAddress = (address: Address) => address
|
|
6
7
|
|
|
8
|
+
export function getAbortError(signal?: AbortSignal | undefined) {
|
|
9
|
+
if (signal?.reason) return signal.reason
|
|
10
|
+
if (typeof DOMException === 'function')
|
|
11
|
+
return new DOMException('This operation was aborted', 'AbortError')
|
|
12
|
+
const error = new Error('This operation was aborted') as AbortErrorType
|
|
13
|
+
error.name = 'AbortError'
|
|
14
|
+
return error
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function isAbortError(error: unknown): error is AbortErrorType {
|
|
18
|
+
return (
|
|
19
|
+
typeof error === 'object' &&
|
|
20
|
+
error !== null &&
|
|
21
|
+
'name' in error &&
|
|
22
|
+
error.name === 'AbortError'
|
|
23
|
+
)
|
|
24
|
+
}
|
|
25
|
+
|
|
7
26
|
/**
|
|
8
27
|
* Returns the URL with any embedded basic-auth credentials stripped, so
|
|
9
28
|
* error messages and logs don't leak secrets when an RPC URL like
|
package/errors/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '2.
|
|
1
|
+
export const version = '2.49.0'
|
package/index.ts
CHANGED
package/package.json
CHANGED
package/tempo/actions/wallet.ts
CHANGED
|
@@ -19,9 +19,9 @@ import type { TransactionReceipt } from '../Transaction.js'
|
|
|
19
19
|
* })
|
|
20
20
|
*
|
|
21
21
|
* const { receipt } = await Actions.wallet.send(client, {
|
|
22
|
+
* amount: '1.5',
|
|
22
23
|
* to: '0x...',
|
|
23
24
|
* token: '0x...',
|
|
24
|
-
* value: '1.5',
|
|
25
25
|
* })
|
|
26
26
|
* ```
|
|
27
27
|
*
|
|
@@ -48,17 +48,27 @@ export async function send<chain extends Chain | undefined>(
|
|
|
48
48
|
|
|
49
49
|
export declare namespace send {
|
|
50
50
|
export type Parameters = {
|
|
51
|
+
/** Human-readable amount to pre-fill (for example, "1.5"). */
|
|
52
|
+
amount?: string | undefined
|
|
51
53
|
/**
|
|
52
54
|
* Fee payer override. `false` to disable the wallet's default fee payer,
|
|
53
55
|
* a URL string to use a custom fee payer service.
|
|
54
56
|
*/
|
|
55
57
|
feePayer?: boolean | string | undefined
|
|
58
|
+
/**
|
|
59
|
+
* UTF-8 memo (max 32 bytes) to attach to the transfer. Wallet rejects
|
|
60
|
+
* the request if the selected token does not support memos (non-TIP-20).
|
|
61
|
+
*/
|
|
62
|
+
memo?: string | undefined
|
|
56
63
|
/** Recipient address to pre-fill. */
|
|
57
64
|
to?: Address | undefined
|
|
58
|
-
/**
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
65
|
+
/**
|
|
66
|
+
* Token to pre-fill, accepted as either a contract address or a curated
|
|
67
|
+
* tokenlist symbol (case-insensitive, for example `"pathUsd"`). Symbols
|
|
68
|
+
* are resolved against the curated tokenlist on the active chain. Omit
|
|
69
|
+
* to let the user choose.
|
|
70
|
+
*/
|
|
71
|
+
token?: Address | string | undefined
|
|
62
72
|
}
|
|
63
73
|
|
|
64
74
|
export type ReturnValue = {
|
package/types/eip1193.ts
CHANGED
|
@@ -2140,6 +2140,8 @@ export type EIP1193RequestOptions = {
|
|
|
2140
2140
|
retryDelay?: number | undefined
|
|
2141
2141
|
/** The max number of times to retry. */
|
|
2142
2142
|
retryCount?: number | undefined
|
|
2143
|
+
/** Abort signal to cancel the request. */
|
|
2144
|
+
signal?: AbortSignal | undefined
|
|
2143
2145
|
/** Unique identifier for the request. */
|
|
2144
2146
|
uid?: string | undefined
|
|
2145
2147
|
}
|
package/utils/buildRequest.ts
CHANGED
|
@@ -66,7 +66,12 @@ import {
|
|
|
66
66
|
WalletConnectSessionSettlementError,
|
|
67
67
|
type WalletConnectSessionSettlementErrorType,
|
|
68
68
|
} from '../errors/rpc.js'
|
|
69
|
-
import
|
|
69
|
+
import {
|
|
70
|
+
type AbortErrorType,
|
|
71
|
+
type ErrorType,
|
|
72
|
+
getAbortError,
|
|
73
|
+
isAbortError,
|
|
74
|
+
} from '../errors/utils.js'
|
|
70
75
|
import type {
|
|
71
76
|
EIP1193RequestFn,
|
|
72
77
|
EIP1193RequestOptions,
|
|
@@ -113,18 +118,22 @@ export type RequestErrorType =
|
|
|
113
118
|
| WalletConnectSessionSettlementErrorType
|
|
114
119
|
| WebSocketRequestErrorType
|
|
115
120
|
| WithRetryErrorType
|
|
121
|
+
| AbortErrorType
|
|
116
122
|
| ErrorType
|
|
117
123
|
|
|
118
|
-
export function buildRequest<
|
|
119
|
-
request
|
|
120
|
-
|
|
121
|
-
|
|
124
|
+
export function buildRequest<
|
|
125
|
+
request extends (
|
|
126
|
+
args: any,
|
|
127
|
+
options?: { signal?: AbortSignal | undefined } | undefined,
|
|
128
|
+
) => Promise<any>,
|
|
129
|
+
>(request: request, options: EIP1193RequestOptions = {}): EIP1193RequestFn {
|
|
122
130
|
return async (args, overrideOptions = {}) => {
|
|
123
131
|
const {
|
|
124
132
|
dedupe = false,
|
|
125
133
|
methods,
|
|
126
134
|
retryDelay = 150,
|
|
127
135
|
retryCount = 3,
|
|
136
|
+
signal,
|
|
128
137
|
uid,
|
|
129
138
|
} = {
|
|
130
139
|
...options,
|
|
@@ -141,6 +150,8 @@ export function buildRequest<request extends (args: any) => Promise<any>>(
|
|
|
141
150
|
method,
|
|
142
151
|
})
|
|
143
152
|
|
|
153
|
+
if (signal?.aborted) throw getAbortError(signal)
|
|
154
|
+
|
|
144
155
|
const requestId = dedupe
|
|
145
156
|
? hashString(`${uid}.${stringify(args)}`)
|
|
146
157
|
: undefined
|
|
@@ -149,8 +160,11 @@ export function buildRequest<request extends (args: any) => Promise<any>>(
|
|
|
149
160
|
withRetry(
|
|
150
161
|
async () => {
|
|
151
162
|
try {
|
|
152
|
-
return await request(args)
|
|
163
|
+
return await request(args, signal ? { signal } : undefined)
|
|
153
164
|
} catch (err_) {
|
|
165
|
+
if (signal?.aborted) throw getAbortError(signal)
|
|
166
|
+
if (isAbortError(err_)) throw err_
|
|
167
|
+
|
|
154
168
|
const err = err_ as unknown as RpcError<
|
|
155
169
|
RpcErrorCode | ProviderRpcErrorCode
|
|
156
170
|
>
|
|
@@ -264,6 +278,7 @@ export function buildRequest<request extends (args: any) => Promise<any>>(
|
|
|
264
278
|
return ~~(1 << count) * retryDelay
|
|
265
279
|
},
|
|
266
280
|
retryCount,
|
|
281
|
+
signal,
|
|
267
282
|
shouldRetry: ({ error }) => shouldRetry(error),
|
|
268
283
|
},
|
|
269
284
|
),
|
|
@@ -274,6 +289,7 @@ export function buildRequest<request extends (args: any) => Promise<any>>(
|
|
|
274
289
|
|
|
275
290
|
/** @internal */
|
|
276
291
|
export function shouldRetry(error: Error) {
|
|
292
|
+
if (isAbortError(error)) return false
|
|
277
293
|
if ('code' in error && typeof error.code === 'number') {
|
|
278
294
|
if (error.code === -1) return true // Unknown error
|
|
279
295
|
if (error.code === LimitExceededRpcError.code) return true
|
package/utils/ccip.ts
CHANGED
|
@@ -15,8 +15,9 @@ import {
|
|
|
15
15
|
HttpRequestError,
|
|
16
16
|
type HttpRequestErrorType,
|
|
17
17
|
} from '../errors/request.js'
|
|
18
|
-
import type
|
|
18
|
+
import { type ErrorType, getAbortError, isAbortError } from '../errors/utils.js'
|
|
19
19
|
import type { Chain } from '../types/chain.js'
|
|
20
|
+
import type { EIP1193RequestOptions } from '../types/eip1193.js'
|
|
20
21
|
import type { Hex } from '../types/misc.js'
|
|
21
22
|
import { decodeErrorResult } from './abi/decodeErrorResult.js'
|
|
22
23
|
import { encodeAbiParameters } from './abi/encodeAbiParameters.js'
|
|
@@ -65,8 +66,9 @@ export async function offchainLookup<chain extends Chain | undefined>(
|
|
|
65
66
|
blockNumber,
|
|
66
67
|
blockTag,
|
|
67
68
|
data,
|
|
69
|
+
requestOptions,
|
|
68
70
|
to,
|
|
69
|
-
}: Pick<CallParameters, 'blockNumber' | 'blockTag'> & {
|
|
71
|
+
}: Pick<CallParameters, 'blockNumber' | 'blockTag' | 'requestOptions'> & {
|
|
70
72
|
data: Hex
|
|
71
73
|
to: Address
|
|
72
74
|
},
|
|
@@ -90,9 +92,10 @@ export async function offchainLookup<chain extends Chain | undefined>(
|
|
|
90
92
|
const result = urls.includes(localBatchGatewayUrl)
|
|
91
93
|
? await localBatchGatewayRequest({
|
|
92
94
|
data: callData,
|
|
93
|
-
ccipRequest:
|
|
95
|
+
ccipRequest: (parameters) =>
|
|
96
|
+
ccipRequest_({ ...parameters, requestOptions }),
|
|
94
97
|
})
|
|
95
|
-
: await ccipRequest_({ data: callData, sender, urls })
|
|
98
|
+
: await ccipRequest_({ data: callData, requestOptions, sender, urls })
|
|
96
99
|
|
|
97
100
|
const { data: data_ } = await call(client, {
|
|
98
101
|
blockNumber,
|
|
@@ -104,11 +107,16 @@ export async function offchainLookup<chain extends Chain | undefined>(
|
|
|
104
107
|
[result, extraData],
|
|
105
108
|
),
|
|
106
109
|
]),
|
|
110
|
+
requestOptions,
|
|
107
111
|
to,
|
|
108
112
|
} as CallParameters)
|
|
109
113
|
|
|
110
114
|
return data_!
|
|
111
115
|
} catch (err) {
|
|
116
|
+
if (requestOptions?.signal?.aborted)
|
|
117
|
+
throw getAbortError(requestOptions.signal)
|
|
118
|
+
if (isAbortError(err)) throw err
|
|
119
|
+
|
|
112
120
|
throw new OffchainLookupError({
|
|
113
121
|
callbackSelector,
|
|
114
122
|
cause: err as BaseError,
|
|
@@ -122,6 +130,7 @@ export async function offchainLookup<chain extends Chain | undefined>(
|
|
|
122
130
|
|
|
123
131
|
export type CcipRequestParameters = {
|
|
124
132
|
data: Hex
|
|
133
|
+
requestOptions?: EIP1193RequestOptions | undefined
|
|
125
134
|
sender: Address
|
|
126
135
|
urls: readonly string[]
|
|
127
136
|
}
|
|
@@ -135,12 +144,16 @@ export type CcipRequestErrorType =
|
|
|
135
144
|
|
|
136
145
|
export async function ccipRequest({
|
|
137
146
|
data,
|
|
147
|
+
requestOptions,
|
|
138
148
|
sender,
|
|
139
149
|
urls,
|
|
140
150
|
}: CcipRequestParameters): Promise<CcipRequestReturnType> {
|
|
141
151
|
let error = new Error('An unknown error occurred.')
|
|
142
152
|
|
|
143
153
|
for (let i = 0; i < urls.length; i++) {
|
|
154
|
+
if (requestOptions?.signal?.aborted)
|
|
155
|
+
throw getAbortError(requestOptions.signal)
|
|
156
|
+
|
|
144
157
|
const url = urls[i]
|
|
145
158
|
const method = url.includes('{data}') ? 'GET' : 'POST'
|
|
146
159
|
const body = method === 'POST' ? { data, sender } : undefined
|
|
@@ -154,6 +167,7 @@ export async function ccipRequest({
|
|
|
154
167
|
body: JSON.stringify(body),
|
|
155
168
|
headers,
|
|
156
169
|
method,
|
|
170
|
+
...(requestOptions?.signal ? { signal: requestOptions.signal } : {}),
|
|
157
171
|
},
|
|
158
172
|
)
|
|
159
173
|
|
|
@@ -189,6 +203,10 @@ export async function ccipRequest({
|
|
|
189
203
|
|
|
190
204
|
return result
|
|
191
205
|
} catch (err) {
|
|
206
|
+
if (requestOptions?.signal?.aborted)
|
|
207
|
+
throw getAbortError(requestOptions.signal)
|
|
208
|
+
if (isAbortError(err)) throw err
|
|
209
|
+
|
|
192
210
|
error = new HttpRequestError({
|
|
193
211
|
body,
|
|
194
212
|
details: (err as Error).message,
|