viem 0.3.0-main.20230411T230052 → 0.3.0-main.20230412T014743
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/createBlockFilter.js +5 -1
- package/dist/cjs/actions/public/createBlockFilter.js.map +1 -1
- package/dist/cjs/actions/public/createContractEventFilter.js +5 -0
- package/dist/cjs/actions/public/createContractEventFilter.js.map +1 -1
- package/dist/cjs/actions/public/createEventFilter.js +5 -0
- package/dist/cjs/actions/public/createEventFilter.js.map +1 -1
- package/dist/cjs/actions/public/createPendingTransactionFilter.js +5 -1
- package/dist/cjs/actions/public/createPendingTransactionFilter.js.map +1 -1
- package/dist/cjs/actions/public/getFilterChanges.js +2 -2
- package/dist/cjs/actions/public/getFilterChanges.js.map +1 -1
- package/dist/cjs/actions/public/getFilterLogs.js +2 -2
- package/dist/cjs/actions/public/getFilterLogs.js.map +1 -1
- package/dist/cjs/actions/public/uninstallFilter.js +2 -2
- package/dist/cjs/actions/public/uninstallFilter.js.map +1 -1
- package/dist/cjs/clients/transports/fallback.js +18 -1
- package/dist/cjs/clients/transports/fallback.js.map +1 -1
- package/dist/cjs/errors/base.js +27 -21
- package/dist/cjs/errors/base.js.map +1 -1
- package/dist/cjs/errors/index.js +27 -23
- package/dist/cjs/errors/index.js.map +1 -1
- package/dist/cjs/errors/request.js +50 -259
- package/dist/cjs/errors/request.js.map +1 -1
- package/dist/cjs/errors/rpc.js +271 -50
- package/dist/cjs/errors/rpc.js.map +1 -1
- package/dist/cjs/errors/version.js +1 -1
- package/dist/cjs/index.js +9 -5
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/utils/buildRequest.js +16 -1
- package/dist/cjs/utils/buildRequest.js.map +1 -1
- package/dist/cjs/utils/errors/getNodeError.js +28 -27
- package/dist/cjs/utils/errors/getNodeError.js.map +1 -1
- package/dist/cjs/utils/filters/createFilterRequestScope.js +14 -0
- package/dist/cjs/utils/filters/createFilterRequestScope.js.map +1 -0
- package/dist/cjs/utils/rpc.js +3 -3
- package/dist/cjs/utils/rpc.js.map +1 -1
- package/dist/esm/actions/public/createBlockFilter.js +5 -1
- package/dist/esm/actions/public/createBlockFilter.js.map +1 -1
- package/dist/esm/actions/public/createContractEventFilter.js +5 -0
- package/dist/esm/actions/public/createContractEventFilter.js.map +1 -1
- package/dist/esm/actions/public/createEventFilter.js +5 -0
- package/dist/esm/actions/public/createEventFilter.js.map +1 -1
- package/dist/esm/actions/public/createPendingTransactionFilter.js +5 -1
- package/dist/esm/actions/public/createPendingTransactionFilter.js.map +1 -1
- package/dist/esm/actions/public/getFilterChanges.js +2 -2
- package/dist/esm/actions/public/getFilterChanges.js.map +1 -1
- package/dist/esm/actions/public/getFilterLogs.js +2 -2
- package/dist/esm/actions/public/getFilterLogs.js.map +1 -1
- package/dist/esm/actions/public/uninstallFilter.js +2 -2
- package/dist/esm/actions/public/uninstallFilter.js.map +1 -1
- package/dist/esm/clients/transports/fallback.js +18 -1
- package/dist/esm/clients/transports/fallback.js.map +1 -1
- package/dist/esm/errors/base.js +27 -21
- package/dist/esm/errors/base.js.map +1 -1
- package/dist/esm/errors/index.js +4 -4
- package/dist/esm/errors/index.js.map +1 -1
- package/dist/esm/errors/request.js +45 -241
- package/dist/esm/errors/request.js.map +1 -1
- package/dist/esm/errors/rpc.js +249 -45
- package/dist/esm/errors/rpc.js.map +1 -1
- package/dist/esm/errors/version.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/buildRequest.js +16 -1
- package/dist/esm/utils/buildRequest.js.map +1 -1
- package/dist/esm/utils/errors/getNodeError.js +3 -2
- package/dist/esm/utils/errors/getNodeError.js.map +1 -1
- package/dist/esm/utils/filters/createFilterRequestScope.js +10 -0
- package/dist/esm/utils/filters/createFilterRequestScope.js.map +1 -0
- package/dist/esm/utils/rpc.js +4 -4
- package/dist/esm/utils/rpc.js.map +1 -1
- package/dist/types/actions/public/createBlockFilter.d.ts.map +1 -1
- package/dist/types/actions/public/createContractEventFilter.d.ts.map +1 -1
- package/dist/types/actions/public/createEventFilter.d.ts.map +1 -1
- package/dist/types/actions/public/createPendingTransactionFilter.d.ts.map +1 -1
- package/dist/types/actions/public/getFilterChanges.d.ts +1 -1
- package/dist/types/actions/public/getFilterChanges.d.ts.map +1 -1
- package/dist/types/actions/public/getFilterLogs.d.ts +1 -1
- package/dist/types/actions/public/getFilterLogs.d.ts.map +1 -1
- package/dist/types/actions/public/uninstallFilter.d.ts +1 -1
- package/dist/types/actions/public/uninstallFilter.d.ts.map +1 -1
- package/dist/types/clients/transports/fallback.d.ts +14 -0
- package/dist/types/clients/transports/fallback.d.ts.map +1 -1
- package/dist/types/errors/base.d.ts +1 -0
- package/dist/types/errors/base.d.ts.map +1 -1
- package/dist/types/errors/index.d.ts +4 -4
- package/dist/types/errors/index.d.ts.map +1 -1
- package/dist/types/errors/request.d.ts +42 -80
- package/dist/types/errors/request.d.ts.map +1 -1
- package/dist/types/errors/rpc.d.ts +189 -43
- package/dist/types/errors/rpc.d.ts.map +1 -1
- package/dist/types/errors/version.d.ts +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/filter.d.ts +2 -0
- package/dist/types/types/filter.d.ts.map +1 -1
- package/dist/types/utils/buildRequest.d.ts.map +1 -1
- package/dist/types/utils/errors/getNodeError.d.ts +1 -1
- package/dist/types/utils/errors/getNodeError.d.ts.map +1 -1
- package/dist/types/utils/filters/createFilterRequestScope.d.ts +16 -0
- package/dist/types/utils/filters/createFilterRequestScope.d.ts.map +1 -0
- package/dist/types/utils/rpc.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/actions/public/createBlockFilter.ts +5 -1
- package/src/actions/public/createContractEventFilter.ts +6 -0
- package/src/actions/public/createEventFilter.ts +7 -0
- package/src/actions/public/createPendingTransactionFilter.ts +5 -1
- package/src/actions/public/getFilterChanges.ts +2 -2
- package/src/actions/public/getFilterLogs.ts +2 -2
- package/src/actions/public/uninstallFilter.ts +2 -2
- package/src/clients/transports/fallback.ts +46 -2
- package/src/errors/base.ts +6 -4
- package/src/errors/index.ts +15 -11
- package/src/errors/request.ts +82 -175
- package/src/errors/rpc.ts +355 -89
- package/src/errors/version.ts +1 -1
- package/src/index.ts +5 -1
- package/src/types/filter.ts +3 -0
- package/src/utils/buildRequest.ts +19 -1
- package/src/utils/errors/getNodeError.ts +2 -3
- package/src/utils/filters/createFilterRequestScope.ts +42 -0
- package/src/utils/rpc.ts +6 -4
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"getNodeError.d.ts","sourceRoot":"","sources":["../../../../src/utils/errors/getNodeError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,KAAK,
|
1
|
+
{"version":3,"file":"getNodeError.d.ts","sourceRoot":"","sources":["../../../../src/utils/errors/getNodeError.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAA;AACvE,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACvE,OAAO,EACL,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EAEvB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EAEnB,gCAAgC,EAChC,gBAAgB,EACjB,MAAM,uBAAuB,CAAA;AAE9B,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,WAM/C;AAED,wBAAgB,YAAY,CAC1B,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,OAAO,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,yRA6C9C"}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import type { Chain } from '../../chains.js';
|
2
|
+
import type { PublicClient, Transport } from '../../clients/index.js';
|
3
|
+
import type { Requests } from '../../types/eip1193.js';
|
4
|
+
import type { Hex } from '../../types/index.js';
|
5
|
+
type CreateFilterRequestScopeParameters = {
|
6
|
+
method: 'eth_newFilter' | 'eth_newPendingTransactionFilter' | 'eth_newBlockFilter';
|
7
|
+
};
|
8
|
+
type CreateFilterRequestScopeReturnType = (id: Hex) => Requests['request'];
|
9
|
+
/**
|
10
|
+
* Scopes `request` to the filter ID. If the client is a fallback, it will
|
11
|
+
* listen for responses and scope the child transport `request` function
|
12
|
+
* to the successful filter ID.
|
13
|
+
*/
|
14
|
+
export declare function createFilterRequestScope<TChain extends Chain | undefined>(client: PublicClient<Transport, TChain>, { method }: CreateFilterRequestScopeParameters): CreateFilterRequestScopeReturnType;
|
15
|
+
export {};
|
16
|
+
//# sourceMappingURL=createFilterRequestScope.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"createFilterRequestScope.d.ts","sourceRoot":"","sources":["../../../../src/utils/filters/createFilterRequestScope.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAA;AAErE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAA;AAE/C,KAAK,kCAAkC,GAAG;IACxC,MAAM,EACF,eAAe,GACf,iCAAiC,GACjC,oBAAoB,CAAA;CACzB,CAAA;AAED,KAAK,kCAAkC,GAAG,CAAC,EAAE,EAAE,GAAG,KAAK,QAAQ,CAAC,SAAS,CAAC,CAAA;AAE1E;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,SAAS,KAAK,GAAG,SAAS,EACvE,MAAM,EAAE,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,EACvC,EAAE,MAAM,EAAE,EAAE,kCAAkC,GAC7C,kCAAkC,CAkBpC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../../src/utils/rpc.ts"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,eAAe,CAAA;AAarC,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,EAAE,CAAA;CAAE,CAAA;AAEpD,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,mBAqD3C;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,
|
1
|
+
{"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../../src/utils/rpc.ts"],"names":[],"mappings":";AAAA,OAAO,SAAS,MAAM,eAAe,CAAA;AAarC,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,EAAE,CAAA;CAAE,CAAA;AAEpD,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,mBAqD3C;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
@@ -1,5 +1,6 @@
|
|
1
1
|
import type { PublicClient, Transport } from '../../clients/index.js'
|
2
2
|
import type { Chain, Filter } from '../../types/index.js'
|
3
|
+
import { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js'
|
3
4
|
|
4
5
|
export type CreateBlockFilterReturnType = Filter<'block'>
|
5
6
|
|
@@ -27,8 +28,11 @@ export type CreateBlockFilterReturnType = Filter<'block'>
|
|
27
28
|
export async function createBlockFilter<TChain extends Chain | undefined>(
|
28
29
|
client: PublicClient<Transport, TChain>,
|
29
30
|
): Promise<CreateBlockFilterReturnType> {
|
31
|
+
const getRequest = createFilterRequestScope(client, {
|
32
|
+
method: 'eth_newBlockFilter',
|
33
|
+
})
|
30
34
|
const id = await client.request({
|
31
35
|
method: 'eth_newBlockFilter',
|
32
36
|
})
|
33
|
-
return { id, type: 'block' }
|
37
|
+
return { id, request: getRequest(id), type: 'block' }
|
34
38
|
}
|
@@ -12,6 +12,7 @@ import type {
|
|
12
12
|
} from '../../types/index.js'
|
13
13
|
import { encodeEventTopics, numberToHex } from '../../utils/index.js'
|
14
14
|
import type { EncodeEventTopicsParameters } from '../../utils/index.js'
|
15
|
+
import { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js'
|
15
16
|
|
16
17
|
export type CreateContractEventFilterParameters<
|
17
18
|
TAbi extends Abi | readonly unknown[] = Abi,
|
@@ -86,6 +87,10 @@ export async function createContractEventFilter<
|
|
86
87
|
toBlock,
|
87
88
|
}: CreateContractEventFilterParameters<TAbi, TEventName, TArgs>,
|
88
89
|
): Promise<CreateContractEventFilterReturnType<TAbi, TEventName, TArgs>> {
|
90
|
+
const getRequest = createFilterRequestScope(client, {
|
91
|
+
method: 'eth_newFilter',
|
92
|
+
})
|
93
|
+
|
89
94
|
const topics = eventName
|
90
95
|
? encodeEventTopics({
|
91
96
|
abi,
|
@@ -110,6 +115,7 @@ export async function createContractEventFilter<
|
|
110
115
|
args,
|
111
116
|
eventName,
|
112
117
|
id,
|
118
|
+
request: getRequest(id),
|
113
119
|
type: 'event',
|
114
120
|
} as unknown as CreateContractEventFilterReturnType<TAbi, TEventName, TArgs>
|
115
121
|
}
|
@@ -14,6 +14,7 @@ import type {
|
|
14
14
|
} from '../../types/index.js'
|
15
15
|
import { encodeEventTopics, numberToHex } from '../../utils/index.js'
|
16
16
|
import type { EncodeEventTopicsParameters } from '../../utils/index.js'
|
17
|
+
import { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js'
|
17
18
|
|
18
19
|
export type CreateEventFilterParameters<
|
19
20
|
TAbiEvent extends AbiEvent | undefined = undefined,
|
@@ -105,6 +106,10 @@ export async function createEventFilter<
|
|
105
106
|
_Args
|
106
107
|
> = {} as any,
|
107
108
|
): Promise<CreateEventFilterReturnType<TAbiEvent, _Abi, _EventName, _Args>> {
|
109
|
+
const getRequest = createFilterRequestScope(client, {
|
110
|
+
method: 'eth_newFilter',
|
111
|
+
})
|
112
|
+
|
108
113
|
let topics: LogTopic[] = []
|
109
114
|
if (event)
|
110
115
|
topics = encodeEventTopics({
|
@@ -125,11 +130,13 @@ export async function createEventFilter<
|
|
125
130
|
},
|
126
131
|
],
|
127
132
|
})
|
133
|
+
|
128
134
|
return {
|
129
135
|
abi: event ? [event] : undefined,
|
130
136
|
args,
|
131
137
|
eventName: event ? (event as AbiEvent).name : undefined,
|
132
138
|
id,
|
139
|
+
request: getRequest(id),
|
133
140
|
type: 'event',
|
134
141
|
} as unknown as CreateEventFilterReturnType<
|
135
142
|
TAbiEvent,
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import type { PublicClient, Transport } from '../../clients/index.js'
|
2
2
|
import type { Chain, Filter } from '../../types/index.js'
|
3
|
+
import { createFilterRequestScope } from '../../utils/filters/createFilterRequestScope.js'
|
3
4
|
|
4
5
|
export type CreatePendingTransactionFilterReturnType = Filter<'transaction'>
|
5
6
|
|
@@ -30,8 +31,11 @@ export async function createPendingTransactionFilter<
|
|
30
31
|
>(
|
31
32
|
client: PublicClient<TTransport, TChain>,
|
32
33
|
): Promise<CreatePendingTransactionFilterReturnType> {
|
34
|
+
const getRequest = createFilterRequestScope(client, {
|
35
|
+
method: 'eth_newPendingTransactionFilter',
|
36
|
+
})
|
33
37
|
const id = await client.request({
|
34
38
|
method: 'eth_newPendingTransactionFilter',
|
35
39
|
})
|
36
|
-
return { id, type: 'transaction' }
|
40
|
+
return { id, request: getRequest(id), type: 'transaction' }
|
37
41
|
}
|
@@ -121,12 +121,12 @@ export async function getFilterChanges<
|
|
121
121
|
TAbi extends Abi | readonly unknown[],
|
122
122
|
TEventName extends string | undefined,
|
123
123
|
>(
|
124
|
-
|
124
|
+
_client: PublicClient<TTransport, TChain>,
|
125
125
|
{
|
126
126
|
filter,
|
127
127
|
}: GetFilterChangesParameters<TFilterType, TAbiEvent, TAbi, TEventName>,
|
128
128
|
) {
|
129
|
-
const logs = await
|
129
|
+
const logs = await filter.request({
|
130
130
|
method: 'eth_getFilterChanges',
|
131
131
|
params: [filter.id],
|
132
132
|
})
|
@@ -57,10 +57,10 @@ export async function getFilterLogs<
|
|
57
57
|
TAbi extends Abi | readonly unknown[],
|
58
58
|
TEventName extends string | undefined,
|
59
59
|
>(
|
60
|
-
|
60
|
+
_client: PublicClient<Transport, TChain>,
|
61
61
|
{ filter }: GetFilterLogsParameters<TAbiEvent, TAbi, TEventName>,
|
62
62
|
): Promise<GetFilterLogsReturnType<TAbiEvent, TAbi, TEventName>> {
|
63
|
-
const logs = await
|
63
|
+
const logs = await filter.request({
|
64
64
|
method: 'eth_getFilterLogs',
|
65
65
|
params: [filter.id],
|
66
66
|
})
|
@@ -35,10 +35,10 @@ export async function uninstallFilter<
|
|
35
35
|
TTransport extends Transport,
|
36
36
|
TChain extends Chain | undefined,
|
37
37
|
>(
|
38
|
-
|
38
|
+
_client: PublicClient<TTransport, TChain>,
|
39
39
|
{ filter }: UninstallFilterParameters,
|
40
40
|
): Promise<UninstallFilterReturnType> {
|
41
|
-
return
|
41
|
+
return filter.request({
|
42
42
|
method: 'eth_uninstallFilter',
|
43
43
|
params: [filter.id],
|
44
44
|
})
|
@@ -4,6 +4,26 @@ import { wait } from '../../utils/wait.js'
|
|
4
4
|
import type { Transport, TransportConfig } from './createTransport.js'
|
5
5
|
import { createTransport } from './createTransport.js'
|
6
6
|
|
7
|
+
// TODO: Narrow `method` & `params` types.
|
8
|
+
export type OnResponseFn = (
|
9
|
+
args: {
|
10
|
+
method: string
|
11
|
+
params: unknown[]
|
12
|
+
transport: ReturnType<Transport>
|
13
|
+
} & (
|
14
|
+
| {
|
15
|
+
error?: never
|
16
|
+
response: unknown
|
17
|
+
status: 'success'
|
18
|
+
}
|
19
|
+
| {
|
20
|
+
error: Error
|
21
|
+
response?: never
|
22
|
+
status: 'error'
|
23
|
+
}
|
24
|
+
),
|
25
|
+
) => void
|
26
|
+
|
7
27
|
type RankOptions = {
|
8
28
|
/**
|
9
29
|
* The polling interval (in ms) at which the ranker should ping the RPC URL.
|
@@ -52,7 +72,10 @@ export type FallbackTransportConfig = {
|
|
52
72
|
|
53
73
|
export type FallbackTransport = Transport<
|
54
74
|
'fallback',
|
55
|
-
{
|
75
|
+
{
|
76
|
+
onResponse: (fn: OnResponseFn) => void
|
77
|
+
transports: ReturnType<Transport>[]
|
78
|
+
}
|
56
79
|
>
|
57
80
|
|
58
81
|
export function fallback(
|
@@ -69,6 +92,8 @@ export function fallback(
|
|
69
92
|
return ({ chain, pollingInterval = 4_000, timeout }) => {
|
70
93
|
let transports = transports_
|
71
94
|
|
95
|
+
let onResponse: OnResponseFn = () => {}
|
96
|
+
|
72
97
|
const transport = createTransport(
|
73
98
|
{
|
74
99
|
key,
|
@@ -77,11 +102,29 @@ export function fallback(
|
|
77
102
|
const fetch = async (i: number = 0): Promise<any> => {
|
78
103
|
const transport = transports[i]({ chain, retryCount: 0, timeout })
|
79
104
|
try {
|
80
|
-
|
105
|
+
const response = await transport.request({
|
81
106
|
method,
|
82
107
|
params,
|
83
108
|
} as any)
|
109
|
+
|
110
|
+
onResponse({
|
111
|
+
method,
|
112
|
+
params: params as unknown[],
|
113
|
+
response,
|
114
|
+
transport,
|
115
|
+
status: 'success',
|
116
|
+
})
|
117
|
+
|
118
|
+
return response
|
84
119
|
} catch (err) {
|
120
|
+
onResponse({
|
121
|
+
error: err as Error,
|
122
|
+
method,
|
123
|
+
params: params as unknown[],
|
124
|
+
transport,
|
125
|
+
status: 'error',
|
126
|
+
})
|
127
|
+
|
85
128
|
// If the error is deterministic, we don't need to fall back.
|
86
129
|
// So throw the error.
|
87
130
|
if (isDeterministicError(err as Error)) throw err
|
@@ -100,6 +143,7 @@ export function fallback(
|
|
100
143
|
type: 'fallback',
|
101
144
|
},
|
102
145
|
{
|
146
|
+
onResponse: (fn: OnResponseFn) => (onResponse = fn),
|
103
147
|
transports: transports.map((fn) => fn({ chain, retryCount: 0 })),
|
104
148
|
},
|
105
149
|
)
|
package/src/errors/base.ts
CHANGED
@@ -22,8 +22,11 @@ export class BaseError extends Error {
|
|
22
22
|
shortMessage: string
|
23
23
|
|
24
24
|
override name = 'ViemError'
|
25
|
+
version = getVersion()
|
25
26
|
|
26
27
|
constructor(shortMessage: string, args: BaseErrorParameters = {}) {
|
28
|
+
super()
|
29
|
+
|
27
30
|
const details =
|
28
31
|
args.cause instanceof BaseError
|
29
32
|
? args.cause.details
|
@@ -34,7 +37,8 @@ export class BaseError extends Error {
|
|
34
37
|
args.cause instanceof BaseError
|
35
38
|
? args.cause.docsPath || args.docsPath
|
36
39
|
: args.docsPath
|
37
|
-
|
40
|
+
|
41
|
+
this.message = [
|
38
42
|
shortMessage || 'An error occurred.',
|
39
43
|
'',
|
40
44
|
...(args.metaMessages ? [...args.metaMessages, ''] : []),
|
@@ -46,11 +50,9 @@ export class BaseError extends Error {
|
|
46
50
|
]
|
47
51
|
: []),
|
48
52
|
...(details ? [`Details: ${details}`] : []),
|
49
|
-
`Version: ${
|
53
|
+
`Version: ${this.version}`,
|
50
54
|
].join('\n')
|
51
55
|
|
52
|
-
super(message)
|
53
|
-
|
54
56
|
if (args.cause) this.cause = args.cause
|
55
57
|
this.details = details
|
56
58
|
this.docsPath = docsPath
|
package/src/errors/index.ts
CHANGED
@@ -63,8 +63,8 @@ export {
|
|
63
63
|
export {
|
64
64
|
EnsAvatarInvalidMetadataError,
|
65
65
|
EnsAvatarInvalidNftUriError,
|
66
|
-
EnsAvatarUriResolutionError,
|
67
66
|
EnsAvatarUnsupportedNamespaceError,
|
67
|
+
EnsAvatarUriResolutionError,
|
68
68
|
} from './ens.js'
|
69
69
|
|
70
70
|
export { EstimateGasExecutionError } from './estimateGas.js'
|
@@ -87,6 +87,14 @@ export {
|
|
87
87
|
} from './node.js'
|
88
88
|
|
89
89
|
export {
|
90
|
+
HttpRequestError,
|
91
|
+
RpcRequestError,
|
92
|
+
TimeoutError,
|
93
|
+
WebSocketRequestError,
|
94
|
+
} from './request.js'
|
95
|
+
|
96
|
+
export {
|
97
|
+
ChainDisconnectedError,
|
90
98
|
InternalRpcError,
|
91
99
|
InvalidInputRpcError,
|
92
100
|
InvalidParamsRpcError,
|
@@ -96,29 +104,25 @@ export {
|
|
96
104
|
MethodNotFoundRpcError,
|
97
105
|
MethodNotSupportedRpcError,
|
98
106
|
ParseRpcError,
|
99
|
-
|
107
|
+
ProviderDisconnectedError,
|
108
|
+
ProviderRpcError,
|
100
109
|
ResourceNotFoundRpcError,
|
101
110
|
ResourceUnavailableRpcError,
|
102
|
-
|
111
|
+
RpcError,
|
103
112
|
SwitchChainError,
|
104
113
|
TransactionRejectedRpcError,
|
114
|
+
UnauthorizedProviderError,
|
105
115
|
UnknownRpcError,
|
116
|
+
UnsupportedProviderMethodError,
|
106
117
|
UserRejectedRequestError,
|
107
|
-
} from './request.js'
|
108
|
-
|
109
|
-
export {
|
110
|
-
HttpRequestError,
|
111
|
-
RpcError,
|
112
|
-
TimeoutError,
|
113
|
-
WebSocketRequestError,
|
114
118
|
} from './rpc.js'
|
115
119
|
|
116
120
|
export {
|
117
121
|
FeeConflictError,
|
118
122
|
InvalidLegacyVError,
|
123
|
+
InvalidSerializableTransactionError,
|
119
124
|
InvalidSerializedTransactionError,
|
120
125
|
InvalidSerializedTransactionTypeError,
|
121
|
-
InvalidSerializableTransactionError,
|
122
126
|
InvalidStorageKeySizeError,
|
123
127
|
TransactionExecutionError,
|
124
128
|
TransactionNotFoundError,
|
package/src/errors/request.ts
CHANGED
@@ -1,191 +1,98 @@
|
|
1
|
+
import { stringify } from '../utils/index.js'
|
1
2
|
import { BaseError } from './base.js'
|
2
|
-
import
|
3
|
-
|
4
|
-
export class
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
this.name = err.name
|
33
|
-
}
|
34
|
-
}
|
35
|
-
|
36
|
-
export class ParseRpcError extends RpcRequestError {
|
37
|
-
override name = 'ParseRpcError'
|
38
|
-
override code = -32700
|
39
|
-
|
40
|
-
constructor(err: RpcError) {
|
41
|
-
super(err, {
|
42
|
-
shortMessage:
|
43
|
-
'Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text.',
|
44
|
-
})
|
45
|
-
}
|
46
|
-
}
|
47
|
-
|
48
|
-
export class InvalidRequestRpcError extends RpcRequestError {
|
49
|
-
override name = 'InvalidRequestRpcError'
|
50
|
-
override code = -32600
|
51
|
-
|
52
|
-
constructor(err: RpcError) {
|
53
|
-
super(err, { shortMessage: 'JSON is not a valid request object.' })
|
54
|
-
}
|
55
|
-
}
|
56
|
-
|
57
|
-
export class MethodNotFoundRpcError extends RpcRequestError {
|
58
|
-
override name = 'MethodNotFoundRpcError'
|
59
|
-
override code = -32601
|
60
|
-
|
61
|
-
constructor(err: RpcError) {
|
62
|
-
super(err, {
|
63
|
-
shortMessage: 'The method does not exist / is not available.',
|
3
|
+
import { getUrl } from './utils.js'
|
4
|
+
|
5
|
+
export class HttpRequestError extends BaseError {
|
6
|
+
override name = 'HttpRequestError'
|
7
|
+
|
8
|
+
body: { [key: string]: unknown }
|
9
|
+
headers?: Headers
|
10
|
+
status?: number
|
11
|
+
url: string
|
12
|
+
|
13
|
+
constructor({
|
14
|
+
body,
|
15
|
+
details,
|
16
|
+
headers,
|
17
|
+
status,
|
18
|
+
url,
|
19
|
+
}: {
|
20
|
+
body: { [key: string]: unknown }
|
21
|
+
details?: string
|
22
|
+
headers?: Headers
|
23
|
+
status?: number
|
24
|
+
url: string
|
25
|
+
}) {
|
26
|
+
super('HTTP request failed.', {
|
27
|
+
details,
|
28
|
+
metaMessages: [
|
29
|
+
status && `Status: ${status}`,
|
30
|
+
`URL: ${getUrl(url)}`,
|
31
|
+
`Request body: ${stringify(body)}`,
|
32
|
+
].filter(Boolean) as string[],
|
64
33
|
})
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
34
|
+
this.body = body
|
35
|
+
this.headers = headers
|
36
|
+
this.status = status
|
37
|
+
this.url = url
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
export class WebSocketRequestError extends BaseError {
|
42
|
+
override name = 'WebSocketRequestError'
|
43
|
+
|
44
|
+
constructor({
|
45
|
+
body,
|
46
|
+
details,
|
47
|
+
url,
|
48
|
+
}: {
|
49
|
+
body: { [key: string]: unknown }
|
50
|
+
details: string
|
51
|
+
url: string
|
52
|
+
}) {
|
53
|
+
super('WebSocket request failed.', {
|
54
|
+
details,
|
55
|
+
metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],
|
78
56
|
})
|
79
57
|
}
|
80
58
|
}
|
81
59
|
|
82
|
-
export class
|
83
|
-
override name = '
|
84
|
-
override code = -32603
|
85
|
-
|
86
|
-
constructor(err: RpcError) {
|
87
|
-
super(err, { shortMessage: 'An internal error was received.' })
|
88
|
-
}
|
89
|
-
}
|
90
|
-
|
91
|
-
export class InvalidInputRpcError extends RpcRequestError {
|
92
|
-
override name = 'InvalidInputRpcError'
|
93
|
-
override code = -32000
|
94
|
-
|
95
|
-
constructor(err: RpcError) {
|
96
|
-
super(err, {
|
97
|
-
shortMessage: [
|
98
|
-
'Missing or invalid parameters.',
|
99
|
-
'Double check you have provided the correct parameters.',
|
100
|
-
].join('\n'),
|
101
|
-
})
|
102
|
-
}
|
103
|
-
}
|
60
|
+
export class RpcRequestError extends BaseError {
|
61
|
+
override name = 'RpcRequestError'
|
104
62
|
|
105
|
-
|
106
|
-
override name = 'ResourceNotFoundRpcError'
|
107
|
-
override code = -32001
|
108
|
-
|
109
|
-
constructor(err: RpcError) {
|
110
|
-
super(err, { shortMessage: 'Requested resource not found.' })
|
111
|
-
}
|
112
|
-
}
|
113
|
-
|
114
|
-
export class ResourceUnavailableRpcError extends RpcRequestError {
|
115
|
-
override name = 'ResourceUnavailableRpcError'
|
116
|
-
override code = -32002
|
117
|
-
|
118
|
-
constructor(err: RpcError) {
|
119
|
-
super(err, { shortMessage: 'Requested resource not available.' })
|
120
|
-
}
|
121
|
-
}
|
122
|
-
|
123
|
-
export class TransactionRejectedRpcError extends RpcRequestError {
|
124
|
-
override name = 'TransactionRejectedRpcError'
|
125
|
-
override code = -32003
|
126
|
-
|
127
|
-
constructor(err: RpcError) {
|
128
|
-
super(err, { shortMessage: 'Transaction creation failed.' })
|
129
|
-
}
|
130
|
-
}
|
131
|
-
|
132
|
-
export class MethodNotSupportedRpcError extends RpcRequestError {
|
133
|
-
override name = 'MethodNotSupportedRpcError'
|
134
|
-
override code = -32004
|
135
|
-
|
136
|
-
constructor(err: RpcError) {
|
137
|
-
super(err, { shortMessage: 'Method is not implemented.' })
|
138
|
-
}
|
139
|
-
}
|
140
|
-
|
141
|
-
export class LimitExceededRpcError extends RpcRequestError {
|
142
|
-
override name = 'LimitExceededRpcError'
|
143
|
-
override code = -32005
|
144
|
-
|
145
|
-
constructor(err: RpcError) {
|
146
|
-
super(err, { shortMessage: 'Request exceeds defined limit.' })
|
147
|
-
}
|
148
|
-
}
|
149
|
-
|
150
|
-
export class JsonRpcVersionUnsupportedError extends RpcRequestError {
|
151
|
-
override name = 'JsonRpcVersionUnsupportedError'
|
152
|
-
override code = -32006
|
153
|
-
|
154
|
-
constructor(err: RpcError) {
|
155
|
-
super(err, {
|
156
|
-
shortMessage: 'Version of JSON-RPC protocol is not supported.',
|
157
|
-
})
|
158
|
-
}
|
159
|
-
}
|
160
|
-
|
161
|
-
export class UserRejectedRequestError extends RequestError {
|
162
|
-
override name = 'UserRejectedRequestError'
|
163
|
-
code = 4001
|
164
|
-
|
165
|
-
constructor(err: Error) {
|
166
|
-
super(err, {
|
167
|
-
shortMessage: 'User rejected the request.',
|
168
|
-
})
|
169
|
-
}
|
170
|
-
}
|
171
|
-
|
172
|
-
export class SwitchChainError extends RequestError {
|
173
|
-
override name = 'SwitchChainError'
|
174
|
-
code = 4902
|
63
|
+
code: number
|
175
64
|
|
176
|
-
constructor(
|
177
|
-
|
178
|
-
|
65
|
+
constructor({
|
66
|
+
body,
|
67
|
+
error,
|
68
|
+
url,
|
69
|
+
}: {
|
70
|
+
body: { [key: string]: unknown }
|
71
|
+
error: { code: number; message: string }
|
72
|
+
url: string
|
73
|
+
}) {
|
74
|
+
super('RPC Request failed.', {
|
75
|
+
cause: error as any,
|
76
|
+
details: error.message,
|
77
|
+
metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],
|
179
78
|
})
|
79
|
+
this.code = error.code
|
180
80
|
}
|
181
81
|
}
|
182
82
|
|
183
|
-
export class
|
184
|
-
override name = '
|
83
|
+
export class TimeoutError extends BaseError {
|
84
|
+
override name = 'TimeoutError'
|
185
85
|
|
186
|
-
constructor(
|
187
|
-
|
188
|
-
|
86
|
+
constructor({
|
87
|
+
body,
|
88
|
+
url,
|
89
|
+
}: {
|
90
|
+
body: { [key: string]: unknown }
|
91
|
+
url: string
|
92
|
+
}) {
|
93
|
+
super('The request took too long to respond.', {
|
94
|
+
details: 'The request timed out.',
|
95
|
+
metaMessages: [`URL: ${getUrl(url)}`, `Request body: ${stringify(body)}`],
|
189
96
|
})
|
190
97
|
}
|
191
98
|
}
|