@windstack/evm 0.3.0 → 0.6.1
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 +24 -15
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +49 -6
- package/dist/client.js.map +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/discovery.d.ts +3 -1
- package/dist/discovery.d.ts.map +1 -1
- package/dist/discovery.js +68 -30
- package/dist/discovery.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +24 -7
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -3
package/README.md
CHANGED
|
@@ -1,33 +1,42 @@
|
|
|
1
1
|
# @windstack/evm
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
The client works with EIP-1193 providers and uses EIP-6963 discovery when available. It prefers a provider with `rdns: "com.wisp.wallet"`, then falls back to injected providers.
|
|
6
|
-
|
|
7
|
-
## Install
|
|
3
|
+
Small EIP-1193 client with EIP-6963 discovery for browser wallets.
|
|
8
4
|
|
|
9
5
|
```bash
|
|
10
6
|
npm install @windstack/core @windstack/evm
|
|
11
7
|
```
|
|
12
8
|
|
|
13
|
-
## Usage
|
|
14
|
-
|
|
15
9
|
```ts
|
|
16
|
-
import { createEVMClient } from
|
|
10
|
+
import { createEVMClient } from "@windstack/evm";
|
|
17
11
|
|
|
18
12
|
const client = await createEVMClient();
|
|
19
|
-
|
|
20
|
-
const accounts = await client.requestAccounts();
|
|
13
|
+
const accounts = await client.connect();
|
|
21
14
|
const chainId = await client.getChainId();
|
|
22
15
|
|
|
23
|
-
|
|
16
|
+
client.on("accountsChanged", (nextAccounts) => {
|
|
17
|
+
// Update application state.
|
|
18
|
+
});
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
`connect()` calls `eth_requestAccounts`. `getAccounts()` calls the silent `eth_accounts` method.
|
|
22
|
+
|
|
23
|
+
## Chain requests
|
|
24
|
+
|
|
25
|
+
```ts
|
|
26
|
+
await client.switchChain("0x1a50");
|
|
27
|
+
|
|
28
|
+
await client.addChain({
|
|
29
|
+
chainId: "0x1a50",
|
|
30
|
+
chainName: "VEX EVM",
|
|
31
|
+
nativeCurrency: { name: "Vexanium", symbol: "VEX", decimals: 18 },
|
|
32
|
+
rpcUrls: ["https://rpc.example"],
|
|
33
|
+
});
|
|
24
34
|
```
|
|
25
35
|
|
|
26
|
-
|
|
36
|
+
Chain IDs must be canonical `0x`-prefixed hexadecimal values. Chain metadata URLs must use HTTPS. Always verify an RPC endpoint's `eth_chainId` response before presenting it to users.
|
|
27
37
|
|
|
28
|
-
-
|
|
29
|
-
- This package is independent from Vexanium, VSR, and WharfKit.
|
|
38
|
+
EIP-6963 announcements are retained for the lifetime of the page, as required by the specification. `window.ethereum` is only used as a fallback when no announced provider is available.
|
|
30
39
|
|
|
31
40
|
## License
|
|
32
41
|
|
|
33
|
-
MIT
|
|
42
|
+
MIT, PT WIND KRIPTOGRAFI TEKNOLOGI.
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"
|
|
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;AA6CpB,wBAAsB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,OAAO,CAAC,SAAS,CAAC,CAsDxF"}
|
package/dist/client.js
CHANGED
|
@@ -1,6 +1,47 @@
|
|
|
1
|
-
import { WISP_ERROR_CODES, WispProviderError, normalizeProviderError } from "@windstack/core";
|
|
1
|
+
import { WISP_ERROR_CODES, WispProviderError, invalidParams, normalizeProviderError, } from "@windstack/core";
|
|
2
2
|
import { EVM_METHODS } from "./constants.js";
|
|
3
3
|
import { getEVMProvider, getInjectedEVMProvider } from "./discovery.js";
|
|
4
|
+
const HEX_CHAIN_ID_PATTERN = /^0x(?:0|[1-9a-f][0-9a-f]*)$/i;
|
|
5
|
+
function assertHexChainId(chainId) {
|
|
6
|
+
if (typeof chainId !== "string" || !HEX_CHAIN_ID_PATTERN.test(chainId)) {
|
|
7
|
+
throw invalidParams("EVM chainId must be a canonical 0x-prefixed hexadecimal integer", { chainId });
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
function assertSecureUrls(values, field) {
|
|
11
|
+
if (!values)
|
|
12
|
+
return;
|
|
13
|
+
if (!Array.isArray(values) || values.length === 0)
|
|
14
|
+
throw invalidParams(`${field} must be a non-empty array`);
|
|
15
|
+
for (const value of values) {
|
|
16
|
+
try {
|
|
17
|
+
const url = new URL(value);
|
|
18
|
+
if (url.protocol !== "https:" || url.username || url.password) {
|
|
19
|
+
throw new Error("Unsupported URL");
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
throw invalidParams(`${field} must contain valid HTTPS URLs`, { value });
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
function assertAddChainParams(params) {
|
|
28
|
+
if (typeof params !== "object" || params === null)
|
|
29
|
+
throw invalidParams("Chain parameters are required");
|
|
30
|
+
assertHexChainId(params.chainId);
|
|
31
|
+
assertSecureUrls(params.rpcUrls, "rpcUrls");
|
|
32
|
+
assertSecureUrls(params.blockExplorerUrls, "blockExplorerUrls");
|
|
33
|
+
assertSecureUrls(params.iconUrls, "iconUrls");
|
|
34
|
+
if (params.nativeCurrency && !Number.isInteger(params.nativeCurrency.decimals)) {
|
|
35
|
+
throw invalidParams("nativeCurrency.decimals must be a non-negative integer");
|
|
36
|
+
}
|
|
37
|
+
if (params.nativeCurrency && params.nativeCurrency.decimals < 0) {
|
|
38
|
+
throw invalidParams("nativeCurrency.decimals must be a non-negative integer");
|
|
39
|
+
}
|
|
40
|
+
if (params.nativeCurrency && (!params.nativeCurrency.name?.trim() ||
|
|
41
|
+
!params.nativeCurrency.symbol?.trim())) {
|
|
42
|
+
throw invalidParams("nativeCurrency name and symbol are required");
|
|
43
|
+
}
|
|
44
|
+
}
|
|
4
45
|
export async function createEVMClient(options = {}) {
|
|
5
46
|
let provider = options.provider ?? await getEVMProvider(options.discoveryTimeoutMs);
|
|
6
47
|
const requireProvider = () => {
|
|
@@ -36,14 +77,16 @@ export async function createEVMClient(options = {}) {
|
|
|
36
77
|
getChainId() {
|
|
37
78
|
return request({ method: EVM_METHODS.GET_CHAIN_ID });
|
|
38
79
|
},
|
|
39
|
-
switchChain(chainId) {
|
|
40
|
-
|
|
80
|
+
async switchChain(chainId) {
|
|
81
|
+
assertHexChainId(chainId);
|
|
82
|
+
return await request({ method: EVM_METHODS.SWITCH_CHAIN, params: [{ chainId }] });
|
|
41
83
|
},
|
|
42
|
-
addChain(params) {
|
|
43
|
-
|
|
84
|
+
async addChain(params) {
|
|
85
|
+
assertAddChainParams(params);
|
|
86
|
+
return await request({ method: EVM_METHODS.ADD_CHAIN, params: [params] });
|
|
44
87
|
},
|
|
45
88
|
on(event, handler) {
|
|
46
|
-
requireProvider().on
|
|
89
|
+
requireProvider().on(event, handler);
|
|
47
90
|
},
|
|
48
91
|
off(event, handler) {
|
|
49
92
|
const current = requireProvider();
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/constants.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;AACpD,eAAO,MAAM,sBAAsB,EAAG,iBAA0B,CAAC;AAEjE,eAAO,MAAM,WAAW
|
|
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;AACpD,eAAO,MAAM,sBAAsB,EAAG,iBAA0B,CAAC;AAEjE,eAAO,MAAM,WAAW;aACtB,gBAAgB,EAAE,qBAAqB;aACvC,YAAY,EAAE,cAAc;aAC5B,YAAY,EAAE,aAAa;aAC3B,YAAY,EAAE,4BAA4B;aAC1C,SAAS,EAAE,yBAAyB;CAC5B,CAAC"}
|
package/dist/discovery.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
import type { EIP1193Provider, EIP6963ProviderDetail } from "./types.js";
|
|
1
|
+
import type { EIP1193Provider, EIP6963ProviderDetail, EIP6963ProviderInfo } from "./types.js";
|
|
2
|
+
export declare function isEIP6963ProviderInfo(value: unknown): value is EIP6963ProviderInfo;
|
|
3
|
+
export declare function isEIP6963ProviderDetail(value: unknown): value is EIP6963ProviderDetail;
|
|
2
4
|
export declare function getInjectedEVMProvider(): EIP1193Provider | null;
|
|
3
5
|
export declare function requestEIP6963Providers(): void;
|
|
4
6
|
export declare function discoverEVMProviders(timeoutMs?: number): Promise<EIP6963ProviderDetail[]>;
|
package/dist/discovery.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAuBpB,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAalF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,qBAAqB,CAItF;AAiCD,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"}
|
package/dist/discovery.js
CHANGED
|
@@ -1,13 +1,69 @@
|
|
|
1
|
-
import { getRuntimeWindow } from "@windstack/core";
|
|
1
|
+
import { getRuntimeWindow, invalidParams } from "@windstack/core";
|
|
2
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";
|
|
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
|
+
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
|
+
const providerRegistries = new WeakMap();
|
|
6
|
+
function isEIP1193Provider(value) {
|
|
7
|
+
if (typeof value !== "object" || value === null)
|
|
8
|
+
return false;
|
|
9
|
+
const provider = value;
|
|
10
|
+
return (typeof provider.request === "function" &&
|
|
11
|
+
typeof provider.on === "function" &&
|
|
12
|
+
typeof provider.removeListener === "function");
|
|
13
|
+
}
|
|
14
|
+
export function isEIP6963ProviderInfo(value) {
|
|
15
|
+
if (typeof value !== "object" || value === null)
|
|
16
|
+
return false;
|
|
17
|
+
const info = value;
|
|
18
|
+
return (typeof info.uuid === "string" &&
|
|
19
|
+
UUID_V4_PATTERN.test(info.uuid) &&
|
|
20
|
+
typeof info.name === "string" &&
|
|
21
|
+
info.name.trim().length > 0 &&
|
|
22
|
+
typeof info.icon === "string" &&
|
|
23
|
+
info.icon.startsWith("data:image/") &&
|
|
24
|
+
typeof info.rdns === "string" &&
|
|
25
|
+
RDNS_PATTERN.test(info.rdns));
|
|
26
|
+
}
|
|
27
|
+
export function isEIP6963ProviderDetail(value) {
|
|
28
|
+
if (typeof value !== "object" || value === null)
|
|
29
|
+
return false;
|
|
30
|
+
const detail = value;
|
|
31
|
+
return isEIP6963ProviderInfo(detail.info) && isEIP1193Provider(detail.provider);
|
|
32
|
+
}
|
|
33
|
+
function getProviderRegistry(runtimeWindow) {
|
|
34
|
+
const existing = providerRegistries.get(runtimeWindow);
|
|
35
|
+
if (existing)
|
|
36
|
+
return existing;
|
|
37
|
+
const registry = {
|
|
38
|
+
details: [],
|
|
39
|
+
providers: new Set(),
|
|
40
|
+
uuids: new Set(),
|
|
41
|
+
};
|
|
42
|
+
runtimeWindow.addEventListener(EIP6963_ANNOUNCE_PROVIDER_EVENT, (event) => {
|
|
43
|
+
const detail = event.detail;
|
|
44
|
+
if (!isEIP6963ProviderDetail(detail))
|
|
45
|
+
return;
|
|
46
|
+
if (registry.providers.has(detail.provider) || registry.uuids.has(detail.info.uuid))
|
|
47
|
+
return;
|
|
48
|
+
const info = Object.freeze({ ...detail.info });
|
|
49
|
+
registry.providers.add(detail.provider);
|
|
50
|
+
registry.uuids.add(info.uuid);
|
|
51
|
+
registry.details.push(Object.freeze({ info, provider: detail.provider }));
|
|
52
|
+
});
|
|
53
|
+
providerRegistries.set(runtimeWindow, registry);
|
|
54
|
+
return registry;
|
|
55
|
+
}
|
|
56
|
+
function assertDiscoveryTimeout(timeoutMs) {
|
|
57
|
+
if (!Number.isFinite(timeoutMs) || timeoutMs < 0) {
|
|
58
|
+
throw invalidParams("EVM discovery timeout must be a non-negative finite number", { timeoutMs });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
3
61
|
export function getInjectedEVMProvider() {
|
|
4
62
|
const runtimeWindow = getRuntimeWindow();
|
|
5
63
|
if (!runtimeWindow)
|
|
6
64
|
return null;
|
|
7
65
|
const provider = runtimeWindow[EVM_PROVIDER_GLOBAL];
|
|
8
|
-
|
|
9
|
-
return provider;
|
|
10
|
-
return null;
|
|
66
|
+
return isEIP1193Provider(provider) ? provider : null;
|
|
11
67
|
}
|
|
12
68
|
export function requestEIP6963Providers() {
|
|
13
69
|
const runtimeWindow = getRuntimeWindow();
|
|
@@ -17,42 +73,24 @@ export function requestEIP6963Providers() {
|
|
|
17
73
|
runtimeWindow.dispatchEvent(new Event(EIP6963_REQUEST_PROVIDER_EVENT));
|
|
18
74
|
}
|
|
19
75
|
catch {
|
|
20
|
-
//
|
|
76
|
+
// Discovery is optional; a broken injected wallet must not stop the dApp.
|
|
21
77
|
}
|
|
22
78
|
}
|
|
23
79
|
export async function discoverEVMProviders(timeoutMs = DEFAULT_EVM_DISCOVERY_TIMEOUT_MS) {
|
|
80
|
+
assertDiscoveryTimeout(timeoutMs);
|
|
24
81
|
const runtimeWindow = getRuntimeWindow();
|
|
25
82
|
if (!runtimeWindow)
|
|
26
83
|
return [];
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
return;
|
|
32
|
-
seen.add(detail.provider);
|
|
33
|
-
discovered.push(detail);
|
|
34
|
-
};
|
|
35
|
-
await new Promise((resolve) => {
|
|
36
|
-
const onAnnounce = (event) => {
|
|
37
|
-
if (event.detail)
|
|
38
|
-
addProvider(event.detail);
|
|
39
|
-
};
|
|
40
|
-
runtimeWindow.addEventListener(EIP6963_ANNOUNCE_PROVIDER_EVENT, onAnnounce);
|
|
41
|
-
requestEIP6963Providers();
|
|
42
|
-
setTimeout(() => {
|
|
43
|
-
runtimeWindow.removeEventListener(EIP6963_ANNOUNCE_PROVIDER_EVENT, onAnnounce);
|
|
44
|
-
resolve();
|
|
45
|
-
}, timeoutMs);
|
|
46
|
-
});
|
|
47
|
-
const injected = getInjectedEVMProvider();
|
|
48
|
-
if (injected && !seen.has(injected)) {
|
|
49
|
-
addProvider({ info: { name: "Injected EVM Provider", rdns: "injected.evm" }, provider: injected });
|
|
84
|
+
const registry = getProviderRegistry(runtimeWindow);
|
|
85
|
+
requestEIP6963Providers();
|
|
86
|
+
if (timeoutMs > 0) {
|
|
87
|
+
await new Promise((resolve) => setTimeout(resolve, timeoutMs));
|
|
50
88
|
}
|
|
51
|
-
return
|
|
89
|
+
return [...registry.details];
|
|
52
90
|
}
|
|
53
91
|
export async function getEVMProvider(timeoutMs = DEFAULT_EVM_DISCOVERY_TIMEOUT_MS) {
|
|
54
92
|
const providers = await discoverEVMProviders(timeoutMs);
|
|
55
|
-
const wispProvider = providers.find((
|
|
93
|
+
const wispProvider = providers.find(({ info }) => info.rdns === WISP_EVM_PROVIDER_RDNS)?.provider;
|
|
56
94
|
return wispProvider ?? providers[0]?.provider ?? getInjectedEVMProvider();
|
|
57
95
|
}
|
|
58
96
|
//# sourceMappingURL=discovery.js.map
|
package/dist/discovery.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.js","sourceRoot":"","sources":["../src/discovery.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
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,5 @@
|
|
|
1
1
|
export { createEVMClient } from "./client.js";
|
|
2
2
|
export { DEFAULT_EVM_DISCOVERY_TIMEOUT_MS, EIP6963_ANNOUNCE_PROVIDER_EVENT, EIP6963_REQUEST_PROVIDER_EVENT, EVM_METHODS, EVM_PROVIDER_GLOBAL, WISP_EVM_PROVIDER_RDNS, } from "./constants.js";
|
|
3
|
-
export { discoverEVMProviders, getEVMProvider, getInjectedEVMProvider, requestEIP6963Providers, } from "./discovery.js";
|
|
4
|
-
export type { EIP1193Provider, EIP6963ProviderDetail, EIP6963ProviderInfo, EVMClient, EVMClientOptions, EVMProviderEventMap, } from "./types.js";
|
|
3
|
+
export { discoverEVMProviders, getEVMProvider, getInjectedEVMProvider, isEIP6963ProviderDetail, isEIP6963ProviderInfo, requestEIP6963Providers, } from "./discovery.js";
|
|
4
|
+
export type { AddEthereumChainParameter, EIP1193Provider, EIP6963ProviderDetail, EIP6963ProviderInfo, EVMClient, EVMClientOptions, EVMProviderEventMap, } from "./types.js";
|
|
5
5
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,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,gCAAgC,EAChC,+BAA+B,EAC/B,8BAA8B,EAC9B,WAAW,EACX,mBAAmB,EACnB,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"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { createEVMClient } from "./client.js";
|
|
2
2
|
export { DEFAULT_EVM_DISCOVERY_TIMEOUT_MS, EIP6963_ANNOUNCE_PROVIDER_EVENT, EIP6963_REQUEST_PROVIDER_EVENT, EVM_METHODS, EVM_PROVIDER_GLOBAL, WISP_EVM_PROVIDER_RDNS, } from "./constants.js";
|
|
3
|
-
export { discoverEVMProviders, getEVMProvider, getInjectedEVMProvider, requestEIP6963Providers, } from "./discovery.js";
|
|
3
|
+
export { discoverEVMProviders, getEVMProvider, getInjectedEVMProvider, isEIP6963ProviderDetail, isEIP6963ProviderInfo, requestEIP6963Providers, } from "./discovery.js";
|
|
4
4
|
//# 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,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,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,gCAAgC,EAChC,+BAA+B,EAC/B,8BAA8B,EAC9B,WAAW,EACX,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,cAAc,EACd,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ProviderDetail, RequestArguments } from "@windstack/core";
|
|
2
2
|
export type EVMProviderEventMap = {
|
|
3
3
|
connect: {
|
|
4
4
|
chainId: string;
|
|
@@ -9,26 +9,43 @@ export type EVMProviderEventMap = {
|
|
|
9
9
|
};
|
|
10
10
|
accountsChanged: string[];
|
|
11
11
|
chainChanged: string;
|
|
12
|
-
message:
|
|
12
|
+
message: {
|
|
13
|
+
type: string;
|
|
14
|
+
data: unknown;
|
|
15
|
+
};
|
|
13
16
|
};
|
|
14
17
|
export type EIP1193Provider = {
|
|
15
18
|
isMetaMask?: boolean;
|
|
16
19
|
selectedAddress?: string | null;
|
|
17
20
|
chainId?: string;
|
|
18
21
|
request<TResult = unknown, TParams = unknown>(args: RequestArguments<TParams>): Promise<TResult>;
|
|
19
|
-
on
|
|
22
|
+
on<TEvent extends keyof EVMProviderEventMap>(event: TEvent, handler: (payload: EVMProviderEventMap[TEvent]) => void): void;
|
|
20
23
|
off?<TEvent extends keyof EVMProviderEventMap>(event: TEvent, handler: (payload: EVMProviderEventMap[TEvent]) => void): void;
|
|
21
|
-
removeListener
|
|
24
|
+
removeListener<TEvent extends keyof EVMProviderEventMap>(event: TEvent, handler: (payload: EVMProviderEventMap[TEvent]) => void): void;
|
|
22
25
|
};
|
|
23
|
-
export type EIP6963ProviderInfo =
|
|
26
|
+
export type EIP6963ProviderInfo = {
|
|
27
|
+
uuid: string;
|
|
28
|
+
name: string;
|
|
29
|
+
icon: string;
|
|
24
30
|
rdns: string;
|
|
25
31
|
};
|
|
26
32
|
export type EIP6963ProviderDetail = ProviderDetail<EIP1193Provider, EIP6963ProviderInfo>;
|
|
27
33
|
export type EVMClientOptions = {
|
|
28
|
-
dapp?: DappMetadataInput;
|
|
29
34
|
provider?: EIP1193Provider;
|
|
30
35
|
discoveryTimeoutMs?: number;
|
|
31
36
|
};
|
|
37
|
+
export type AddEthereumChainParameter = {
|
|
38
|
+
chainId: string;
|
|
39
|
+
blockExplorerUrls?: string[];
|
|
40
|
+
chainName?: string;
|
|
41
|
+
iconUrls?: string[];
|
|
42
|
+
nativeCurrency?: {
|
|
43
|
+
name: string;
|
|
44
|
+
symbol: string;
|
|
45
|
+
decimals: number;
|
|
46
|
+
};
|
|
47
|
+
rpcUrls?: string[];
|
|
48
|
+
};
|
|
32
49
|
export type EVMClient = {
|
|
33
50
|
isAvailable(): boolean;
|
|
34
51
|
getProvider(): EIP1193Provider | null;
|
|
@@ -37,7 +54,7 @@ export type EVMClient = {
|
|
|
37
54
|
getAccounts(): Promise<string[]>;
|
|
38
55
|
getChainId(): Promise<string>;
|
|
39
56
|
switchChain(chainId: string): Promise<unknown>;
|
|
40
|
-
addChain(params:
|
|
57
|
+
addChain(params: AddEthereumChainParameter): Promise<unknown>;
|
|
41
58
|
on<TEvent extends keyof EVMProviderEventMap>(event: TEvent, handler: (payload: EVMProviderEventMap[TEvent]) => void): void;
|
|
42
59
|
off<TEvent extends keyof EVMProviderEventMap>(event: TEvent, handler: (payload: EVMProviderEventMap[TEvent]) => void): void;
|
|
43
60
|
};
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@windstack/evm",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "EIP-1193 and EIP-6963 EVM provider client for Wisp Wallet-compatible dApps.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
|
-
"module": "./dist/index.js",
|
|
8
7
|
"types": "./dist/index.d.ts",
|
|
9
8
|
"exports": {
|
|
10
9
|
".": {
|
|
@@ -24,7 +23,7 @@
|
|
|
24
23
|
"prepack": "npm run build"
|
|
25
24
|
},
|
|
26
25
|
"dependencies": {
|
|
27
|
-
"@windstack/core": "0.
|
|
26
|
+
"@windstack/core": "0.6.1"
|
|
28
27
|
},
|
|
29
28
|
"sideEffects": false,
|
|
30
29
|
"keywords": [
|
|
@@ -41,6 +40,15 @@
|
|
|
41
40
|
],
|
|
42
41
|
"license": "MIT",
|
|
43
42
|
"author": "PT WIND KRIPTOGRAFI TEKNOLOGI",
|
|
43
|
+
"homepage": "https://github.com/windvex/windstack-sdk/tree/main/packages/evm#readme",
|
|
44
|
+
"repository": {
|
|
45
|
+
"type": "git",
|
|
46
|
+
"url": "git+https://github.com/windvex/windstack-sdk.git",
|
|
47
|
+
"directory": "packages/evm"
|
|
48
|
+
},
|
|
49
|
+
"bugs": {
|
|
50
|
+
"url": "https://github.com/windvex/windstack-sdk/issues"
|
|
51
|
+
},
|
|
44
52
|
"publishConfig": {
|
|
45
53
|
"access": "public",
|
|
46
54
|
"registry": "https://registry.npmjs.org/"
|