@windstack/evm 1.0.0 → 2.1.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/README.md CHANGED
@@ -2,9 +2,9 @@
2
2
 
3
3
  ## Overview
4
4
 
5
- `@windstack/evm` provides a browser client for EIP-1193 wallet providers with EIP-6963 provider discovery. It supports account access, chain queries, chain switching, chain registration, request forwarding, provider events, and VEX EVM network identifiers.
5
+ `@windstack/evm` provides generic address and chain-ID normalization, a chain-verified HTTP JSON-RPC client, EIP-1193 wallet access, and EIP-6963 provider discovery.
6
6
 
7
- The client prefers announced EIP-6963 providers and can use `window.ethereum` when no announced provider is available.
7
+ The client uses announced EIP-6963 providers and can fall back to `window.ethereum`. A particular wallet is preferred only when `preferredRdns` is explicitly configured.
8
8
 
9
9
  ## Installation
10
10
 
@@ -15,11 +15,19 @@ npm install @windstack/core @windstack/evm
15
15
  ## Usage
16
16
 
17
17
  ```ts
18
- import { createEVMClient } from "@windstack/evm";
18
+ import { EvmRpcClient, createEVMClient, normalizeEvmAddress } from "@windstack/evm";
19
19
 
20
20
  const client = await createEVMClient();
21
21
  const accounts = await client.connect();
22
22
  const chainId = await client.getChainId();
23
+ const address = normalizeEvmAddress(accounts[0]);
24
+
25
+ const rpc = new EvmRpcClient({
26
+ endpoints: ["https://rpc.example", "https://backup.example"],
27
+ expectedChainId: chainId,
28
+ maxResponseBytes: 4 * 1024 * 1024,
29
+ });
30
+ const blockNumber = await rpc.request("eth_blockNumber", [], { retry: "safe" });
23
31
 
24
32
  client.on("accountsChanged", (nextAccounts) => {
25
33
  console.log(nextAccounts);
@@ -28,7 +36,7 @@ client.on("accountsChanged", (nextAccounts) => {
28
36
  await client.switchChain("0x1a50");
29
37
  ```
30
38
 
31
- VEX EVM can be registered with standard EIP-3085 chain metadata:
39
+ Chain-specific metadata belongs in a chain package. For example, VEX EVM metadata is exported by `@windstack/vexanium` and can be registered with EIP-3085:
32
40
 
33
41
  ```ts
34
42
  await client.addChain({
@@ -0,0 +1,9 @@
1
+ export declare function isEvmAddress(value: unknown): value is `0x${string}`;
2
+ /** Normalize an address to lowercase. This does not claim EIP-55 checksum validation. */
3
+ export declare function normalizeEvmAddress(value: string): `0x${string}`;
4
+ export declare function isEvmTransactionHash(value: unknown): value is `0x${string}`;
5
+ export declare function normalizeEvmTransactionHash(value: string): `0x${string}`;
6
+ export declare function formatEvmAddress(value: string, visibleBytes?: number): string;
7
+ export declare function normalizeEvmChainId(value: string | number | bigint): `0x${string}`;
8
+ export declare function evmChainIdsEqual(left: string | number | bigint, right: string | number | bigint): boolean;
9
+ //# sourceMappingURL=address.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.d.ts","sourceRoot":"","sources":["../src/address.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,MAAM,EAAE,CAEnE;AAED,yFAAyF;AACzF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAGhE;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,MAAM,EAAE,CAE3E;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,MAAM,EAAE,CAIxE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,SAAI,GAAG,MAAM,CAOxE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,MAAM,EAAE,CAalF;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAC9B,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAC9B,OAAO,CAET"}
@@ -0,0 +1,47 @@
1
+ const ADDRESS_PATTERN = /^0x[0-9a-fA-F]{40}$/;
2
+ const HASH_PATTERN = /^0x[0-9a-fA-F]{64}$/;
3
+ export function isEvmAddress(value) {
4
+ return typeof value === "string" && ADDRESS_PATTERN.test(value);
5
+ }
6
+ /** Normalize an address to lowercase. This does not claim EIP-55 checksum validation. */
7
+ export function normalizeEvmAddress(value) {
8
+ if (!isEvmAddress(value))
9
+ throw new TypeError("EVM address must contain exactly 20 bytes");
10
+ return value.toLowerCase();
11
+ }
12
+ export function isEvmTransactionHash(value) {
13
+ return typeof value === "string" && HASH_PATTERN.test(value);
14
+ }
15
+ export function normalizeEvmTransactionHash(value) {
16
+ if (!isEvmTransactionHash(value))
17
+ throw new TypeError("EVM transaction hash must contain exactly 32 bytes");
18
+ return value.toLowerCase();
19
+ }
20
+ export function formatEvmAddress(value, visibleBytes = 4) {
21
+ const address = normalizeEvmAddress(value);
22
+ if (!Number.isInteger(visibleBytes) || visibleBytes < 1 || visibleBytes > 9) {
23
+ throw new RangeError("visibleBytes must be between 1 and 9");
24
+ }
25
+ const chars = visibleBytes * 2;
26
+ return `${address.slice(0, 2 + chars)}…${address.slice(-chars)}`;
27
+ }
28
+ export function normalizeEvmChainId(value) {
29
+ let chainId;
30
+ try {
31
+ if (typeof value === "number" && !Number.isSafeInteger(value))
32
+ throw new Error("unsafe");
33
+ if (typeof value === "string" && !/^(?:0x[0-9a-fA-F]+|[0-9]+)$/.test(value))
34
+ throw new Error("invalid");
35
+ chainId = BigInt(value);
36
+ }
37
+ catch {
38
+ throw new TypeError("EVM chain ID must be a non-negative integer");
39
+ }
40
+ if (chainId < 0n || chainId > (1n << 256n) - 1n)
41
+ throw new RangeError("EVM chain ID must fit in uint256");
42
+ return `0x${chainId.toString(16)}`;
43
+ }
44
+ export function evmChainIdsEqual(left, right) {
45
+ return normalizeEvmChainId(left) === normalizeEvmChainId(right);
46
+ }
47
+ //# sourceMappingURL=address.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"address.js","sourceRoot":"","sources":["../src/address.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,qBAAqB,CAAC;AAC9C,MAAM,YAAY,GAAG,qBAAqB,CAAC;AAE3C,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,2CAA2C,CAAC,CAAC;IAC3F,OAAO,KAAK,CAAC,WAAW,EAAmB,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,KAAa;IACvD,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;QAC9B,MAAM,IAAI,SAAS,CAAC,oDAAoD,CAAC,CAAC;IAC5E,OAAO,KAAK,CAAC,WAAW,EAAmB,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,YAAY,GAAG,CAAC;IAC9D,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,YAAY,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QAC5E,MAAM,IAAI,UAAU,CAAC,sCAAsC,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,GAAG,CAAC,CAAC;IAC/B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAA+B;IACjE,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;QACzF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7B,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE;QAC7C,MAAM,IAAI,UAAU,CAAC,kCAAkC,CAAC,CAAC;IAC3D,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAA8B,EAC9B,KAA+B;IAE/B,OAAO,mBAAmB,CAAC,IAAI,CAAC,KAAK,mBAAmB,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAGV,SAAS,EACT,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAiDpB,wBAAsB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,CA+DxF"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAGV,SAAS,EACT,gBAAgB,EAEjB,MAAM,YAAY,CAAC;AAqEpB,wBAAsB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,CA6ExF"}
package/dist/client.js CHANGED
@@ -1,6 +1,7 @@
1
- import { WISP_ERROR_CODES, WispProviderError, invalidParams, normalizeProviderError, } from "@windstack/core";
1
+ import { PROVIDER_ERROR_CODES, ProviderRpcError, invalidParams, normalizeProviderRpcError, } from "@windstack/core";
2
2
  import { EVM_METHODS } from "./constants.js";
3
3
  import { getEVMProvider, getInjectedEVMProvider } from "./discovery.js";
4
+ import { normalizeEvmAddress, normalizeEvmChainId } from "./address.js";
4
5
  const HEX_CHAIN_ID_PATTERN = /^0x(?:0|[1-9a-f][0-9a-f]*)$/i;
5
6
  function assertHexChainId(chainId) {
6
7
  if (typeof chainId !== "string" || !HEX_CHAIN_ID_PATTERN.test(chainId)) {
@@ -44,12 +45,36 @@ function assertAddChainParams(params) {
44
45
  throw invalidParams("nativeCurrency name and symbol are required");
45
46
  }
46
47
  }
48
+ function normalizeAccountsResponse(value) {
49
+ if (!Array.isArray(value) || value.length > 1000) {
50
+ throw invalidParams("Provider returned malformed accounts");
51
+ }
52
+ let accounts;
53
+ try {
54
+ accounts = value.map((account) => {
55
+ if (typeof account !== "string")
56
+ throw new TypeError("Invalid account");
57
+ return normalizeEvmAddress(account);
58
+ });
59
+ }
60
+ catch {
61
+ throw invalidParams("Provider returned malformed accounts");
62
+ }
63
+ if (new Set(accounts).size !== accounts.length) {
64
+ throw invalidParams("Provider returned duplicate accounts");
65
+ }
66
+ return accounts;
67
+ }
47
68
  export async function createEVMClient(options = {}) {
48
- let provider = options.provider ?? (await getEVMProvider(options.discoveryTimeoutMs));
69
+ let provider = options.provider ??
70
+ (await getEVMProvider({
71
+ timeoutMs: options.discoveryTimeoutMs,
72
+ preferredRdns: options.preferredRdns,
73
+ }));
49
74
  const requireProvider = () => {
50
75
  provider = provider ?? getInjectedEVMProvider();
51
76
  if (!provider?.request) {
52
- throw new WispProviderError(WISP_ERROR_CODES.INTERNAL_ERROR, "No EVM provider is available");
77
+ throw new ProviderRpcError(PROVIDER_ERROR_CODES.INTERNAL_ERROR, "No EVM provider is available");
53
78
  }
54
79
  return provider;
55
80
  };
@@ -58,7 +83,7 @@ export async function createEVMClient(options = {}) {
58
83
  return await requireProvider().request(args);
59
84
  }
60
85
  catch (error) {
61
- throw normalizeProviderError(error);
86
+ throw normalizeProviderRpcError(error);
62
87
  }
63
88
  };
64
89
  return {
@@ -70,14 +95,23 @@ export async function createEVMClient(options = {}) {
70
95
  return provider;
71
96
  },
72
97
  request,
73
- connect() {
74
- return request({ method: EVM_METHODS.REQUEST_ACCOUNTS });
98
+ async connect() {
99
+ const accounts = await request({ method: EVM_METHODS.REQUEST_ACCOUNTS });
100
+ return normalizeAccountsResponse(accounts);
75
101
  },
76
- getAccounts() {
77
- return request({ method: EVM_METHODS.GET_ACCOUNTS });
102
+ async getAccounts() {
103
+ const accounts = await request({ method: EVM_METHODS.GET_ACCOUNTS });
104
+ return normalizeAccountsResponse(accounts);
78
105
  },
79
- getChainId() {
80
- return request({ method: EVM_METHODS.GET_CHAIN_ID });
106
+ async getChainId() {
107
+ try {
108
+ return normalizeEvmChainId(await request({ method: EVM_METHODS.GET_CHAIN_ID }));
109
+ }
110
+ catch (error) {
111
+ if (error instanceof ProviderRpcError)
112
+ throw error;
113
+ throw invalidParams("Provider returned a malformed chain ID");
114
+ }
81
115
  },
82
116
  async switchChain(chainId) {
83
117
  assertHexChainId(chainId);
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,6 @@ export declare const EVM_PROVIDER_GLOBAL: "ethereum";
2
2
  export declare const EIP6963_REQUEST_PROVIDER_EVENT: "eip6963:requestProvider";
3
3
  export declare const EIP6963_ANNOUNCE_PROVIDER_EVENT: "eip6963:announceProvider";
4
4
  export declare const DEFAULT_EVM_DISCOVERY_TIMEOUT_MS = 120;
5
- export declare const WISP_EVM_PROVIDER_RDNS: "com.wisp.wallet";
6
- export declare const VEX_EVM_CHAIN_ID: 6736;
7
- export declare const VEX_EVM_CHAIN_ID_HEX: "0x1a50";
8
- export declare const VEX_EVM_SCOPE: "eip155:6736";
9
5
  export declare const EVM_METHODS: {
10
6
  readonly REQUEST_ACCOUNTS: "eth_requestAccounts";
11
7
  readonly GET_ACCOUNTS: "eth_accounts";
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,mBAAmB,YAAa,CAAC;AAC9C,eAAO,MAAM,8BAA8B,2BAA6B,CAAC;AACzE,eAAO,MAAM,+BAA+B,4BAA8B,CAAC;AAC3E,eAAO,MAAM,gCAAgC,MAAM,CAAC;AACpD,eAAO,MAAM,sBAAsB,mBAAgB,CAAC;AACpD,eAAO,MAAM,gBAAgB,MAAc,CAAC;AAC5C,eAAO,MAAM,oBAAoB,UAAiB,CAAC;AACnD,eAAO,MAAM,aAAa,eAAY,CAAC;AAEvC,eAAO,MAAM,WAAW;aACtB,gBAAgB;aAChB,YAAY;aACZ,YAAY;aACZ,YAAY;aACZ,mBAAmB;aACnB,mBAAmB;aACnB,eAAe;aACf,YAAY;aACZ,SAAS;aACT,YAAY;aACZ,eAAe;aACf,kBAAkB;aAClB,kBAAkB;aAClB,gBAAgB;aAChB,gBAAgB;CACR,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,mBAAmB,EAAG,UAAmB,CAAC;AACvD,eAAO,MAAM,8BAA8B,EAAG,yBAAkC,CAAC;AACjF,eAAO,MAAM,+BAA+B,EAAG,0BAAmC,CAAC;AACnF,eAAO,MAAM,gCAAgC,MAAM,CAAC;AAEpD,eAAO,MAAM,WAAW;aACtB,gBAAgB,EAAE,qBAAqB;aACvC,YAAY,EAAE,cAAc;aAC5B,YAAY,EAAE,cAAc;aAC5B,YAAY,EAAE,aAAa;aAC3B,mBAAmB,EAAE,aAAa;aAClC,mBAAmB,EAAE,2BAA2B;aAChD,eAAe,EAAE,uBAAuB;aACxC,YAAY,EAAE,4BAA4B;aAC1C,SAAS,EAAE,yBAAyB;aACpC,YAAY,EAAE,eAAe;aAC7B,eAAe,EAAE,mBAAmB;aACpC,kBAAkB,EAAE,sBAAsB;aAC1C,kBAAkB,EAAE,sBAAsB;aAC1C,gBAAgB,EAAE,qBAAqB;aACvC,gBAAgB,EAAE,qBAAqB;CAC/B,CAAC"}
package/dist/constants.js CHANGED
@@ -1,28 +1,22 @@
1
- import { WISP_PROVIDER_CONTRACT } from "@windstack/core";
2
- const { evm, provider } = WISP_PROVIDER_CONTRACT;
3
- export const EVM_PROVIDER_GLOBAL = evm.global;
4
- export const EIP6963_REQUEST_PROVIDER_EVENT = evm.events.requestProvider;
5
- export const EIP6963_ANNOUNCE_PROVIDER_EVENT = evm.events.announceProvider;
1
+ export const EVM_PROVIDER_GLOBAL = "ethereum";
2
+ export const EIP6963_REQUEST_PROVIDER_EVENT = "eip6963:requestProvider";
3
+ export const EIP6963_ANNOUNCE_PROVIDER_EVENT = "eip6963:announceProvider";
6
4
  export const DEFAULT_EVM_DISCOVERY_TIMEOUT_MS = 120;
7
- export const WISP_EVM_PROVIDER_RDNS = provider.rdns;
8
- export const VEX_EVM_CHAIN_ID = evm.chainId;
9
- export const VEX_EVM_CHAIN_ID_HEX = evm.chainIdHex;
10
- export const VEX_EVM_SCOPE = evm.scope;
11
5
  export const EVM_METHODS = {
12
- REQUEST_ACCOUNTS: evm.methods.requestAccounts,
13
- GET_ACCOUNTS: evm.methods.getAccounts,
14
- GET_COINBASE: evm.methods.getCoinbase,
15
- GET_CHAIN_ID: evm.methods.getChainId,
16
- GET_NETWORK_VERSION: evm.methods.getNetworkVersion,
17
- REQUEST_PERMISSIONS: evm.methods.requestPermissions,
18
- GET_PERMISSIONS: evm.methods.getPermissions,
19
- SWITCH_CHAIN: evm.methods.switchChain,
20
- ADD_CHAIN: evm.methods.addChain,
21
- SIGN_MESSAGE: evm.methods.signMessage,
22
- SIGN_TYPED_DATA: evm.methods.signTypedData,
23
- SIGN_TYPED_DATA_V3: evm.methods.signTypedDataV3,
24
- SIGN_TYPED_DATA_V4: evm.methods.signTypedDataV4,
25
- SIGN_TRANSACTION: evm.methods.signTransaction,
26
- SEND_TRANSACTION: evm.methods.sendTransaction,
6
+ REQUEST_ACCOUNTS: "eth_requestAccounts",
7
+ GET_ACCOUNTS: "eth_accounts",
8
+ GET_COINBASE: "eth_coinbase",
9
+ GET_CHAIN_ID: "eth_chainId",
10
+ GET_NETWORK_VERSION: "net_version",
11
+ REQUEST_PERMISSIONS: "wallet_requestPermissions",
12
+ GET_PERMISSIONS: "wallet_getPermissions",
13
+ SWITCH_CHAIN: "wallet_switchEthereumChain",
14
+ ADD_CHAIN: "wallet_addEthereumChain",
15
+ SIGN_MESSAGE: "personal_sign",
16
+ SIGN_TYPED_DATA: "eth_signTypedData",
17
+ SIGN_TYPED_DATA_V3: "eth_signTypedData_v3",
18
+ SIGN_TYPED_DATA_V4: "eth_signTypedData_v4",
19
+ SIGN_TRANSACTION: "eth_signTransaction",
20
+ SEND_TRANSACTION: "eth_sendTransaction",
27
21
  };
28
22
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,sBAAsB,CAAC;AAEjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC,MAAM,CAAC;AAC9C,MAAM,CAAC,MAAM,8BAA8B,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC;AACzE,MAAM,CAAC,MAAM,+BAA+B,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC;AAC3E,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,CAAC;AACpD,MAAM,CAAC,MAAM,sBAAsB,GAAG,QAAQ,CAAC,IAAI,CAAC;AACpD,MAAM,CAAC,MAAM,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAC;AAC5C,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAC,UAAU,CAAC;AACnD,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC;AAEvC,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,gBAAgB,EAAE,GAAG,CAAC,OAAO,CAAC,eAAe;IAC7C,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW;IACrC,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW;IACrC,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU;IACpC,mBAAmB,EAAE,GAAG,CAAC,OAAO,CAAC,iBAAiB;IAClD,mBAAmB,EAAE,GAAG,CAAC,OAAO,CAAC,kBAAkB;IACnD,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc;IAC3C,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW;IACrC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,QAAQ;IAC/B,YAAY,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW;IACrC,eAAe,EAAE,GAAG,CAAC,OAAO,CAAC,aAAa;IAC1C,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,eAAe;IAC/C,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,eAAe;IAC/C,gBAAgB,EAAE,GAAG,CAAC,OAAO,CAAC,eAAe;IAC7C,gBAAgB,EAAE,GAAG,CAAC,OAAO,CAAC,eAAe;CACrC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,mBAAmB,GAAG,UAAmB,CAAC;AACvD,MAAM,CAAC,MAAM,8BAA8B,GAAG,yBAAkC,CAAC;AACjF,MAAM,CAAC,MAAM,+BAA+B,GAAG,0BAAmC,CAAC;AACnF,MAAM,CAAC,MAAM,gCAAgC,GAAG,GAAG,CAAC;AAEpD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,gBAAgB,EAAE,qBAAqB;IACvC,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,aAAa;IAC3B,mBAAmB,EAAE,aAAa;IAClC,mBAAmB,EAAE,2BAA2B;IAChD,eAAe,EAAE,uBAAuB;IACxC,YAAY,EAAE,4BAA4B;IAC1C,SAAS,EAAE,yBAAyB;IACpC,YAAY,EAAE,eAAe;IAC7B,eAAe,EAAE,mBAAmB;IACpC,kBAAkB,EAAE,sBAAsB;IAC1C,kBAAkB,EAAE,sBAAsB;IAC1C,gBAAgB,EAAE,qBAAqB;IACvC,gBAAgB,EAAE,qBAAqB;CAC/B,CAAC"}
@@ -4,5 +4,8 @@ export declare function isEIP6963ProviderDetail(value: unknown): value is EIP696
4
4
  export declare function getInjectedEVMProvider(): EIP1193Provider | null;
5
5
  export declare function requestEIP6963Providers(): void;
6
6
  export declare function discoverEVMProviders(timeoutMs?: number): Promise<EIP6963ProviderDetail[]>;
7
- export declare function getEVMProvider(timeoutMs?: number): Promise<EIP1193Provider | null>;
7
+ export declare function getEVMProvider(options?: {
8
+ timeoutMs?: number;
9
+ preferredRdns?: string;
10
+ }): Promise<EIP1193Provider | null>;
8
11
  //# sourceMappingURL=discovery.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAwB9F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAalF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,qBAAqB,CAItF;AAmCD,wBAAgB,sBAAsB,IAAI,eAAe,GAAG,IAAI,CAK/D;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAQ9C;AAED,wBAAsB,oBAAoB,CACxC,SAAS,SAAmC,GAC3C,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAWlC;AAED,wBAAsB,cAAc,CAClC,SAAS,SAAmC,GAC3C,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAIjC"}
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAwB9F,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAalF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,qBAAqB,CAItF;AAmCD,wBAAgB,sBAAsB,IAAI,eAAe,GAAG,IAAI,CAK/D;AAED,wBAAgB,uBAAuB,IAAI,IAAI,CAQ9C;AAED,wBAAsB,oBAAoB,CACxC,SAAS,SAAmC,GAC3C,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAWlC;AAED,wBAAsB,cAAc,CAClC,OAAO,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3D,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAOjC"}
package/dist/discovery.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { getRuntimeWindow, invalidParams } from "@windstack/core";
2
- import { DEFAULT_EVM_DISCOVERY_TIMEOUT_MS, EIP6963_ANNOUNCE_PROVIDER_EVENT, EIP6963_REQUEST_PROVIDER_EVENT, EVM_PROVIDER_GLOBAL, WISP_EVM_PROVIDER_RDNS, } from "./constants.js";
2
+ import { DEFAULT_EVM_DISCOVERY_TIMEOUT_MS, EIP6963_ANNOUNCE_PROVIDER_EVENT, EIP6963_REQUEST_PROVIDER_EVENT, EVM_PROVIDER_GLOBAL, } from "./constants.js";
3
3
  const UUID_V4_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
4
4
  const RDNS_PATTERN = /^(?=.{1,253}$)(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/i;
5
5
  const providerRegistries = new WeakMap();
@@ -90,9 +90,12 @@ export async function discoverEVMProviders(timeoutMs = DEFAULT_EVM_DISCOVERY_TIM
90
90
  }
91
91
  return [...registry.details];
92
92
  }
93
- export async function getEVMProvider(timeoutMs = DEFAULT_EVM_DISCOVERY_TIMEOUT_MS) {
93
+ export async function getEVMProvider(options = {}) {
94
+ const timeoutMs = options.timeoutMs ?? DEFAULT_EVM_DISCOVERY_TIMEOUT_MS;
94
95
  const providers = await discoverEVMProviders(timeoutMs);
95
- const wispProvider = providers.find(({ info }) => info.rdns === WISP_EVM_PROVIDER_RDNS)?.provider;
96
- return wispProvider ?? providers[0]?.provider ?? getInjectedEVMProvider();
96
+ const preferred = options.preferredRdns
97
+ ? providers.find(({ info }) => info.rdns === options.preferredRdns)?.provider
98
+ : undefined;
99
+ return preferred ?? providers[0]?.provider ?? getInjectedEVMProvider();
97
100
  }
98
101
  //# sourceMappingURL=discovery.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,8 @@
1
1
  export { createEVMClient } from "./client.js";
2
- export { DEFAULT_EVM_DISCOVERY_TIMEOUT_MS, EIP6963_ANNOUNCE_PROVIDER_EVENT, EIP6963_REQUEST_PROVIDER_EVENT, EVM_METHODS, EVM_PROVIDER_GLOBAL, VEX_EVM_CHAIN_ID, VEX_EVM_CHAIN_ID_HEX, VEX_EVM_SCOPE, WISP_EVM_PROVIDER_RDNS, } from "./constants.js";
2
+ export { evmChainIdsEqual, formatEvmAddress, isEvmAddress, isEvmTransactionHash, normalizeEvmAddress, normalizeEvmChainId, normalizeEvmTransactionHash, } from "./address.js";
3
+ export { EvmRpcClient, EvmRpcError, EvmRpcTransportError } from "./rpc.js";
4
+ export type { EvmFetch, EvmRpcClientOptions, EvmRpcRequestOptions } from "./rpc.js";
5
+ export { DEFAULT_EVM_DISCOVERY_TIMEOUT_MS, EIP6963_ANNOUNCE_PROVIDER_EVENT, EIP6963_REQUEST_PROVIDER_EVENT, EVM_METHODS, EVM_PROVIDER_GLOBAL, } from "./constants.js";
3
6
  export { discoverEVMProviders, getEVMProvider, getInjectedEVMProvider, isEIP6963ProviderDetail, isEIP6963ProviderInfo, requestEIP6963Providers, } from "./discovery.js";
4
7
  export type { AddEthereumChainParameter, EIP1193Provider, EIP6963ProviderDetail, EIP6963ProviderInfo, EVMClient, EVMClientOptions, EVMProviderEventMap, } from "./types.js";
5
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,8BAA8B,EAC9B,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,EACT,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAC3E,YAAY,EAAE,QAAQ,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACpF,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,8BAA8B,EAC9B,WAAW,EACX,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,SAAS,EACT,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,6 @@
1
1
  export { createEVMClient } from "./client.js";
2
- export { DEFAULT_EVM_DISCOVERY_TIMEOUT_MS, EIP6963_ANNOUNCE_PROVIDER_EVENT, EIP6963_REQUEST_PROVIDER_EVENT, EVM_METHODS, EVM_PROVIDER_GLOBAL, VEX_EVM_CHAIN_ID, VEX_EVM_CHAIN_ID_HEX, VEX_EVM_SCOPE, WISP_EVM_PROVIDER_RDNS, } from "./constants.js";
2
+ export { evmChainIdsEqual, formatEvmAddress, isEvmAddress, isEvmTransactionHash, normalizeEvmAddress, normalizeEvmChainId, normalizeEvmTransactionHash, } from "./address.js";
3
+ export { EvmRpcClient, EvmRpcError, EvmRpcTransportError } from "./rpc.js";
4
+ export { DEFAULT_EVM_DISCOVERY_TIMEOUT_MS, EIP6963_ANNOUNCE_PROVIDER_EVENT, EIP6963_REQUEST_PROVIDER_EVENT, EVM_METHODS, EVM_PROVIDER_GLOBAL, } from "./constants.js";
3
5
  export { discoverEVMProviders, getEVMProvider, getInjectedEVMProvider, isEIP6963ProviderDetail, isEIP6963ProviderInfo, requestEIP6963Providers, } from "./discovery.js";
4
6
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,8BAA8B,EAC9B,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,EACpB,aAAa,EACb,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAE3E,OAAO,EACL,gCAAgC,EAChC,+BAA+B,EAC/B,8BAA8B,EAC9B,WAAW,EACX,mBAAmB,GACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC"}
package/dist/rpc.d.ts ADDED
@@ -0,0 +1,31 @@
1
+ export type EvmFetch = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
2
+ export type EvmRpcClientOptions = {
3
+ endpoints: string | readonly string[];
4
+ fetch?: EvmFetch;
5
+ timeoutMs?: number;
6
+ maxResponseBytes?: number;
7
+ expectedChainId?: string | number | bigint;
8
+ };
9
+ export type EvmRpcRequestOptions = {
10
+ signal?: AbortSignal;
11
+ /** Read-only calls may fail over; writes are never retried automatically. */
12
+ retry?: "safe" | "never";
13
+ };
14
+ export declare class EvmRpcError extends Error {
15
+ readonly code: number;
16
+ readonly data?: unknown;
17
+ readonly endpoint: string;
18
+ constructor(message: string, code: number, endpoint: string, data?: unknown);
19
+ }
20
+ export declare class EvmRpcTransportError extends Error {
21
+ readonly endpoint: string;
22
+ readonly status?: number;
23
+ constructor(message: string, endpoint: string, status?: number, options?: ErrorOptions);
24
+ }
25
+ export declare class EvmRpcClient {
26
+ #private;
27
+ readonly endpoints: readonly string[];
28
+ constructor(options: EvmRpcClientOptions);
29
+ request<TResult = unknown>(method: string, params?: readonly unknown[] | Record<string, unknown>, options?: EvmRpcRequestOptions): Promise<TResult>;
30
+ }
31
+ //# sourceMappingURL=rpc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,QAAQ,GAAG,CAAC,KAAK,EAAE,WAAW,GAAG,GAAG,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE3F,MAAM,MAAM,mBAAmB,GAAG;IAChC,SAAS,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC;IACtC,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;CAC5C,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,CAAC;AAEF,qBAAa,WAAY,SAAQ,KAAK;IACpC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B,YAAY,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAM1E;CACF;AAED,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEzB,YAAY,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAKrF;CACF;AAuCD,qBAAa,YAAY;;IACvB,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IAQtC,YAAY,OAAO,EAAE,mBAAmB,EAevC;IAEK,OAAO,CAAC,OAAO,GAAG,OAAO,EAC7B,MAAM,EAAE,MAAM,EACd,MAAM,GAAE,SAAS,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EACzD,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,OAAO,CAAC,CA4BlB;CA8FF"}
package/dist/rpc.js ADDED
@@ -0,0 +1,176 @@
1
+ import { readResponseText } from "@windstack/core";
2
+ import { normalizeEvmChainId } from "./address.js";
3
+ export class EvmRpcError extends Error {
4
+ code;
5
+ data;
6
+ endpoint;
7
+ constructor(message, code, endpoint, data) {
8
+ super(message);
9
+ this.name = "EvmRpcError";
10
+ this.code = code;
11
+ this.endpoint = endpoint;
12
+ this.data = data;
13
+ }
14
+ }
15
+ export class EvmRpcTransportError extends Error {
16
+ endpoint;
17
+ status;
18
+ constructor(message, endpoint, status, options) {
19
+ super(message, options);
20
+ this.name = "EvmRpcTransportError";
21
+ this.endpoint = endpoint;
22
+ this.status = status;
23
+ }
24
+ }
25
+ const SAFE_METHODS = new Set([
26
+ "eth_blockNumber",
27
+ "eth_call",
28
+ "eth_chainId",
29
+ "eth_estimateGas",
30
+ "eth_feeHistory",
31
+ "eth_gasPrice",
32
+ "eth_getBalance",
33
+ "eth_getBlockByHash",
34
+ "eth_getBlockByNumber",
35
+ "eth_getCode",
36
+ "eth_getLogs",
37
+ "eth_getStorageAt",
38
+ "eth_getTransactionByHash",
39
+ "eth_getTransactionCount",
40
+ "eth_getTransactionReceipt",
41
+ "net_version",
42
+ "web3_clientVersion",
43
+ ]);
44
+ function endpoints(value) {
45
+ const result = [
46
+ ...new Set((typeof value === "string" ? [value] : value).map((item) => {
47
+ const url = new URL(item);
48
+ if (url.protocol !== "https:" && url.protocol !== "http:")
49
+ throw new TypeError("EVM RPC endpoints must use HTTP or HTTPS");
50
+ if (url.username || url.password)
51
+ throw new TypeError("EVM RPC endpoints cannot include credentials");
52
+ return url.toString().replace(/\/$/, "");
53
+ })),
54
+ ];
55
+ if (!result.length)
56
+ throw new TypeError("At least one EVM RPC endpoint is required");
57
+ return result;
58
+ }
59
+ export class EvmRpcClient {
60
+ endpoints;
61
+ #fetch;
62
+ #timeoutMs;
63
+ #maxResponseBytes;
64
+ #expectedChainId;
65
+ #verified = new Set();
66
+ #id = 0;
67
+ constructor(options) {
68
+ this.endpoints = Object.freeze(endpoints(options.endpoints));
69
+ this.#fetch = options.fetch ?? globalThis.fetch;
70
+ if (typeof this.#fetch !== "function")
71
+ throw new TypeError("A fetch implementation is required");
72
+ this.#timeoutMs = options.timeoutMs ?? 10_000;
73
+ this.#maxResponseBytes = options.maxResponseBytes ?? 4 * 1024 * 1024;
74
+ if (!Number.isFinite(this.#timeoutMs) || this.#timeoutMs <= 0)
75
+ throw new RangeError("timeoutMs must be positive");
76
+ if (!Number.isSafeInteger(this.#maxResponseBytes) || this.#maxResponseBytes < 1024)
77
+ throw new RangeError("maxResponseBytes must be at least 1024");
78
+ this.#expectedChainId =
79
+ options.expectedChainId === undefined
80
+ ? undefined
81
+ : normalizeEvmChainId(options.expectedChainId);
82
+ }
83
+ async request(method, params = [], options = {}) {
84
+ if (typeof method !== "string" || !method)
85
+ throw new TypeError("JSON-RPC method is required");
86
+ const canRetry = options.retry === "safe" && SAFE_METHODS.has(method);
87
+ const candidates = canRetry ? this.endpoints : this.endpoints.slice(0, 1);
88
+ let lastError;
89
+ for (const endpoint of candidates) {
90
+ try {
91
+ if (this.#expectedChainId && method !== "eth_chainId") {
92
+ await this.#verifyEndpoint(endpoint, options.signal);
93
+ }
94
+ const result = await this.#post(endpoint, method, params, options.signal);
95
+ if (method === "eth_chainId" && this.#expectedChainId) {
96
+ const actual = normalizeEvmChainId(result);
97
+ if (actual !== this.#expectedChainId)
98
+ throw new EvmRpcTransportError(`EVM chain mismatch: expected ${this.#expectedChainId}, received ${actual}`, endpoint);
99
+ this.#verified.add(endpoint);
100
+ }
101
+ return result;
102
+ }
103
+ catch (error) {
104
+ if (options.signal?.aborted)
105
+ throw options.signal.reason ?? error;
106
+ lastError = error;
107
+ if (!canRetry || error instanceof EvmRpcError)
108
+ break;
109
+ }
110
+ }
111
+ throw lastError;
112
+ }
113
+ async #verifyEndpoint(endpoint, signal) {
114
+ if (this.#verified.has(endpoint))
115
+ return;
116
+ const chainId = normalizeEvmChainId(await this.#post(endpoint, "eth_chainId", [], signal));
117
+ if (chainId !== this.#expectedChainId)
118
+ throw new EvmRpcTransportError(`EVM chain mismatch: expected ${this.#expectedChainId}, received ${chainId}`, endpoint);
119
+ this.#verified.add(endpoint);
120
+ }
121
+ async #post(endpoint, method, params, signal) {
122
+ const controller = new AbortController();
123
+ const timeout = setTimeout(() => controller.abort(), this.#timeoutMs);
124
+ const abort = () => controller.abort(signal?.reason);
125
+ signal?.addEventListener("abort", abort, { once: true });
126
+ const id = ++this.#id;
127
+ try {
128
+ const response = await this.#fetch(endpoint, {
129
+ method: "POST",
130
+ headers: { accept: "application/json", "content-type": "application/json" },
131
+ body: JSON.stringify({ jsonrpc: "2.0", id, method, params }),
132
+ signal: controller.signal,
133
+ });
134
+ const text = await readResponseText(response, this.#maxResponseBytes);
135
+ let payload;
136
+ try {
137
+ payload = JSON.parse(text);
138
+ }
139
+ catch (cause) {
140
+ throw new EvmRpcTransportError("EVM RPC returned invalid JSON", endpoint, response.status, {
141
+ cause,
142
+ });
143
+ }
144
+ if (!response.ok)
145
+ throw new EvmRpcTransportError(`EVM RPC returned HTTP ${response.status}`, endpoint, response.status);
146
+ if (!payload || typeof payload !== "object" || Array.isArray(payload))
147
+ throw new EvmRpcTransportError("EVM RPC returned a malformed response", endpoint, response.status);
148
+ const record = payload;
149
+ if (record.jsonrpc !== "2.0" || record.id !== id)
150
+ throw new EvmRpcTransportError("EVM RPC response id or version mismatch", endpoint, response.status);
151
+ if (record.error && typeof record.error === "object") {
152
+ const error = record.error;
153
+ if (!Number.isInteger(error.code) || typeof error.message !== "string")
154
+ throw new EvmRpcTransportError("EVM RPC returned a malformed error", endpoint, response.status);
155
+ throw new EvmRpcError(error.message, error.code, endpoint, error.data);
156
+ }
157
+ if (!("result" in record))
158
+ throw new EvmRpcTransportError("EVM RPC response is missing result", endpoint, response.status);
159
+ return record.result;
160
+ }
161
+ catch (error) {
162
+ if (signal?.aborted)
163
+ throw signal.reason ?? error;
164
+ if (error instanceof EvmRpcError || error instanceof EvmRpcTransportError)
165
+ throw error;
166
+ throw new EvmRpcTransportError(controller.signal.aborted
167
+ ? `EVM RPC timed out after ${this.#timeoutMs}ms`
168
+ : "EVM RPC request failed", endpoint, undefined, { cause: error });
169
+ }
170
+ finally {
171
+ clearTimeout(timeout);
172
+ signal?.removeEventListener("abort", abort);
173
+ }
174
+ }
175
+ }
176
+ //# sourceMappingURL=rpc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.js","sourceRoot":"","sources":["../src/rpc.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -33,6 +33,7 @@ export type EIP6963ProviderDetail = ProviderDetail<EIP1193Provider, EIP6963Provi
33
33
  export type EVMClientOptions = {
34
34
  provider?: EIP1193Provider;
35
35
  discoveryTimeoutMs?: number;
36
+ preferredRdns?: string;
36
37
  };
37
38
  export type AddEthereumChainParameter = {
38
39
  chainId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExE,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7B,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjG,EAAE,CAAC,MAAM,SAAS,MAAM,mBAAmB,EACzC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,KAAK,IAAI,GACtD,IAAI,CAAC;IACR,GAAG,CAAC,CAAC,MAAM,SAAS,MAAM,mBAAmB,EAC3C,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,KAAK,IAAI,GACtD,IAAI,CAAC;IACR,cAAc,CAAC,MAAM,SAAS,MAAM,mBAAmB,EACrD,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,KAAK,IAAI,GACtD,IAAI,CAAC;CACT,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG,cAAc,CAAC,eAAe,EAAE,mBAAmB,CAAC,CAAC;AAEzF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,CAAC,EAAE;QACf,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG;IACtB,WAAW,IAAI,OAAO,CAAC;IACvB,WAAW,IAAI,eAAe,GAAG,IAAI,CAAC;IACtC,OAAO,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACjG,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7B,WAAW,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACjC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/C,QAAQ,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC9D,EAAE,CAAC,MAAM,SAAS,MAAM,mBAAmB,EACzC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,KAAK,IAAI,GACtD,IAAI,CAAC;IACR,GAAG,CAAC,MAAM,SAAS,MAAM,mBAAmB,EAC1C,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,CAAC,OAAO,EAAE,mBAAmB,CAAC,MAAM,CAAC,KAAK,IAAI,GACtD,IAAI,CAAC;CACT,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@windstack/evm",
3
- "version": "1.0.0",
4
- "description": "EIP-1193 and EIP-6963 EVM provider client for Wisp Wallet-compatible dApps.",
3
+ "version": "2.1.0",
4
+ "description": "Generic EVM address, JSON-RPC, EIP-1193, and EIP-6963 provider utilities.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
7
7
  "types": "./dist/index.d.ts",
@@ -19,18 +19,18 @@
19
19
  ],
20
20
  "scripts": {
21
21
  "build": "tsc -p tsconfig.json",
22
- "typecheck": "tsc -p tsconfig.json --noEmit false",
22
+ "typecheck": "tsc -p tsconfig.json --noEmit",
23
23
  "prepack": "npm run build"
24
24
  },
25
25
  "dependencies": {
26
- "@windstack/core": "1.0.0"
26
+ "@windstack/core": "2.1.0"
27
27
  },
28
28
  "sideEffects": false,
29
29
  "keywords": [
30
30
  "windstack",
31
- "vexanium",
32
- "vex-evm",
33
- "wisp-wallet",
31
+ "rpc",
32
+ "account",
33
+ "wallet",
34
34
  "evm",
35
35
  "eip-1193",
36
36
  "eip-6963",