@vlayer/react 1.0.1-nightly-20250515-e652e4ce3f0cebd639308904fd66cc3205278cb1 → 1.0.1-nightly-20250520-a951fb542527044cc8b03150d137c99a2980ccfd
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/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/useSyncChain/useSyncChain.d.ts +25 -0
- package/dist/useSyncChain/useSyncChain.d.ts.map +1 -0
- package/dist/useSyncChain/useSyncChain.js +74 -0
- package/dist/useSyncChain/useSyncChain.js.map +1 -0
- package/package.json +2 -2
- package/dist/useChain/useChain.d.ts +0 -6
- package/dist/useChain/useChain.d.ts.map +0 -1
- package/dist/useChain/useChain.js +0 -48
- package/dist/useChain/useChain.js.map +0 -1
package/dist/index.d.ts
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
import { useWebProof } from "./useWebproof/useWebProof.js";
|
2
2
|
import { ProofProvider } from "./context.js";
|
3
3
|
import { useCallProver } from "./useCallProver/useCallProver.js";
|
4
|
-
import {
|
4
|
+
import { useSyncChain } from "./useSyncChain/useSyncChain.js";
|
5
5
|
import { useWaitForProvingResult } from "./useWaitForProvingResult/useWaitForProvingResult.js";
|
6
|
-
export { ProofProvider, useWebProof, useCallProver, useWaitForProvingResult,
|
6
|
+
export { ProofProvider, useWebProof, useCallProver, useWaitForProvingResult, useSyncChain, };
|
7
7
|
export * from "./types.js";
|
8
8
|
//# 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,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,EACL,aAAa,EACb,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,YAAY,GACb,CAAC;AACF,cAAc,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
import { useWebProof } from "./useWebproof/useWebProof.js";
|
2
2
|
import { ProofProvider } from "./context.js";
|
3
3
|
import { useCallProver } from "./useCallProver/useCallProver.js";
|
4
|
-
import {
|
4
|
+
import { useSyncChain } from "./useSyncChain/useSyncChain.js";
|
5
5
|
import { useWaitForProvingResult } from "./useWaitForProvingResult/useWaitForProvingResult.js";
|
6
|
-
export { ProofProvider, useWebProof, useCallProver, useWaitForProvingResult,
|
6
|
+
export { ProofProvider, useWebProof, useCallProver, useWaitForProvingResult, useSyncChain, };
|
7
7
|
export * from "./types.js";
|
8
8
|
//# 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,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mDAAmD,CAAC;AAC5F,OAAO,EACL,aAAa,EACb,WAAW,EACX,aAAa,EACb,uBAAuB,EACvB,YAAY,GACb,CAAC;AACF,cAAc,SAAS,CAAC"}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
import type { Chain } from "viem";
|
2
|
+
export declare class ChainSwitchError extends Error {
|
3
|
+
constructor(chainName: string);
|
4
|
+
}
|
5
|
+
export declare class ChainNotSupportedError extends Error {
|
6
|
+
constructor(chainName: string);
|
7
|
+
}
|
8
|
+
export declare class MissingChainError extends Error {
|
9
|
+
constructor();
|
10
|
+
}
|
11
|
+
/**
|
12
|
+
* @description This hook is used to make sure the chain in the environment variable is the same as the chain in the wallet.
|
13
|
+
* @param configChain - The chain name in the environment variable.
|
14
|
+
* @returns The chain object and the error object.
|
15
|
+
* @throws {MissingChainError} - If the chain name in the environment variable is not defined.
|
16
|
+
* @throws {ChainNotSupportedError} - If the chain name in the environment variable is not supported by viem.
|
17
|
+
* @throws {ChainSwitchError} - If the chain name provided by the environment variable is not the same as the chain in the wallet
|
18
|
+
* and the switch fails (most likely because the wallet does not have the chain)
|
19
|
+
*/
|
20
|
+
export declare const useSyncChain: (configChain: string | undefined) => {
|
21
|
+
chain: Chain | null;
|
22
|
+
error: MissingChainError | ChainNotSupportedError | ChainSwitchError | null;
|
23
|
+
switched: boolean;
|
24
|
+
};
|
25
|
+
//# sourceMappingURL=useSyncChain.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useSyncChain.d.ts","sourceRoot":"","sources":["../../src/useSyncChain/useSyncChain.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAGlC,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,SAAS,EAAE,MAAM;CAM9B;AAED,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,SAAS,EAAE,MAAM;CAI9B;AAED,qBAAa,iBAAkB,SAAQ,KAAK;;CAK3C;AAED;;;;;;;;GAQG;AAEH,eAAO,MAAM,YAAY,GACvB,aAAa,MAAM,GAAG,SAAS,KAC9B;IACD,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,iBAAiB,GAAG,sBAAsB,GAAG,gBAAgB,GAAG,IAAI,CAAC;IAC5E,QAAQ,EAAE,OAAO,CAAC;CAgDnB,CAAC"}
|
@@ -0,0 +1,74 @@
|
|
1
|
+
import { getChainSpecs } from "@vlayer/sdk";
|
2
|
+
import { useEffect, useState } from "react";
|
3
|
+
import { useAccount, useSwitchChain } from "wagmi";
|
4
|
+
export class ChainSwitchError extends Error {
|
5
|
+
constructor(chainName) {
|
6
|
+
super(`Failed to switch to ${chainName} make sure you have it in your wallet`);
|
7
|
+
this.name = "ChainSwitchError";
|
8
|
+
}
|
9
|
+
}
|
10
|
+
export class ChainNotSupportedError extends Error {
|
11
|
+
constructor(chainName) {
|
12
|
+
super(`Chain ${chainName} is not supported`);
|
13
|
+
this.name = "ChainNotSupportedError";
|
14
|
+
}
|
15
|
+
}
|
16
|
+
export class MissingChainError extends Error {
|
17
|
+
constructor() {
|
18
|
+
super("Env chain not defined");
|
19
|
+
this.name = "MissingChainError";
|
20
|
+
}
|
21
|
+
}
|
22
|
+
/**
|
23
|
+
* @description This hook is used to make sure the chain in the environment variable is the same as the chain in the wallet.
|
24
|
+
* @param configChain - The chain name in the environment variable.
|
25
|
+
* @returns The chain object and the error object.
|
26
|
+
* @throws {MissingChainError} - If the chain name in the environment variable is not defined.
|
27
|
+
* @throws {ChainNotSupportedError} - If the chain name in the environment variable is not supported by viem.
|
28
|
+
* @throws {ChainSwitchError} - If the chain name provided by the environment variable is not the same as the chain in the wallet
|
29
|
+
* and the switch fails (most likely because the wallet does not have the chain)
|
30
|
+
*/
|
31
|
+
export const useSyncChain = (configChain) => {
|
32
|
+
const { switchChain } = useSwitchChain();
|
33
|
+
const [chain, setChain] = useState(null);
|
34
|
+
const [error, setError] = useState(null);
|
35
|
+
const [switched, setSwitched] = useState(false);
|
36
|
+
const { chainId: wagmiChainId } = useAccount();
|
37
|
+
useEffect(() => {
|
38
|
+
if (configChain === undefined) {
|
39
|
+
setChain(null);
|
40
|
+
setError(new MissingChainError());
|
41
|
+
return;
|
42
|
+
}
|
43
|
+
try {
|
44
|
+
const chain = getChainSpecs(configChain);
|
45
|
+
if (!chain) {
|
46
|
+
setChain(null);
|
47
|
+
setError(new ChainNotSupportedError(configChain));
|
48
|
+
return;
|
49
|
+
}
|
50
|
+
if (wagmiChainId === chain.id) {
|
51
|
+
setChain(chain);
|
52
|
+
setError(null);
|
53
|
+
}
|
54
|
+
else {
|
55
|
+
switchChain({ chainId: chain.id }, {
|
56
|
+
onError: (e) => {
|
57
|
+
console.error("chain switch error", chain.name, chain.id, e);
|
58
|
+
setError(new ChainSwitchError(chain.name));
|
59
|
+
},
|
60
|
+
onSuccess: () => {
|
61
|
+
setSwitched(true);
|
62
|
+
},
|
63
|
+
});
|
64
|
+
}
|
65
|
+
}
|
66
|
+
catch {
|
67
|
+
setChain(null);
|
68
|
+
setError(new ChainNotSupportedError(configChain));
|
69
|
+
}
|
70
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
71
|
+
}, [wagmiChainId, configChain]);
|
72
|
+
return { chain, error, switched };
|
73
|
+
};
|
74
|
+
//# sourceMappingURL=useSyncChain.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"useSyncChain.js","sourceRoot":"","sources":["../../src/useSyncChain/useSyncChain.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@vlayer/react",
|
3
|
-
"version": "1.0.1-nightly-
|
3
|
+
"version": "1.0.1-nightly-20250520-a951fb542527044cc8b03150d137c99a2980ccfd",
|
4
4
|
"exports": {
|
5
5
|
".": {
|
6
6
|
"import": "./dist/index.js",
|
@@ -22,7 +22,7 @@
|
|
22
22
|
"react": "^18 || ^19",
|
23
23
|
"wagmi": "2.x",
|
24
24
|
"viem": "2.x",
|
25
|
-
"@vlayer/sdk": "1.0.1-nightly-
|
25
|
+
"@vlayer/sdk": "1.0.1-nightly-20250520-a951fb542527044cc8b03150d137c99a2980ccfd"
|
26
26
|
},
|
27
27
|
"files": [
|
28
28
|
"dist"
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"useChain.d.ts","sourceRoot":"","sources":["../../src/useChain/useChain.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAelC,eAAO,MAAM,QAAQ,GACnB,aAAa,MAAM,GAAG,SAAS,KAC9B;IAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CA2C7C,CAAC"}
|
@@ -1,48 +0,0 @@
|
|
1
|
-
import { getChainSpecs } from "@vlayer/sdk";
|
2
|
-
import { useEffect, useMemo, useState } from "react";
|
3
|
-
import { useChainId, useChains } from "wagmi";
|
4
|
-
const findChainById = (chains, chainId) => {
|
5
|
-
const chain = chains.find((chain) => chain.id === chainId);
|
6
|
-
if (!chain) {
|
7
|
-
return undefined;
|
8
|
-
}
|
9
|
-
return chain.name;
|
10
|
-
};
|
11
|
-
export const useChain = (configChain) => {
|
12
|
-
const [chain, setChain] = useState(null);
|
13
|
-
const [error, setError] = useState(null);
|
14
|
-
const wagmiChainId = useChainId();
|
15
|
-
const wagmiChains = useChains();
|
16
|
-
const wagmiChain = useMemo(() => {
|
17
|
-
return findChainById(wagmiChains, wagmiChainId);
|
18
|
-
}, [wagmiChainId, wagmiChains]);
|
19
|
-
useEffect(() => {
|
20
|
-
if (configChain === undefined) {
|
21
|
-
setChain(null);
|
22
|
-
setError(`Env chain not defined`);
|
23
|
-
return;
|
24
|
-
}
|
25
|
-
try {
|
26
|
-
const chain = getChainSpecs(configChain);
|
27
|
-
if (!chain) {
|
28
|
-
setChain(null);
|
29
|
-
setError(`Chain ${configChain} is not supported`);
|
30
|
-
return;
|
31
|
-
}
|
32
|
-
if (wagmiChainId === chain.id) {
|
33
|
-
setChain(chain);
|
34
|
-
setError(null);
|
35
|
-
}
|
36
|
-
else {
|
37
|
-
setChain(null);
|
38
|
-
setError(`Chains mismatched. Wallet chain: ${wagmiChain} is not equal to env chain: ${configChain}`);
|
39
|
-
}
|
40
|
-
}
|
41
|
-
catch {
|
42
|
-
setChain(null);
|
43
|
-
setError(`Chain ${configChain} is not supported`);
|
44
|
-
}
|
45
|
-
}, [wagmiChainId, configChain, wagmiChain]);
|
46
|
-
return { chain, error };
|
47
|
-
};
|
48
|
-
//# sourceMappingURL=useChain.js.map
|
@@ -1 +0,0 @@
|
|
1
|
-
{"version":3,"file":"useChain.js","sourceRoot":"","sources":["../../src/useChain/useChain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE9C,MAAM,aAAa,GAAG,CACpB,MAAoC,EACpC,OAAe,EACf,EAAE;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC;IAE3D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,WAA+B,EACgB,EAAE;IACjD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,YAAY,GAAG,UAAU,EAAE,CAAC;IAClC,MAAM,WAAW,GAAG,SAAS,EAAE,CAAC;IAEhC,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE;QAC9B,OAAO,aAAa,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAClD,CAAC,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;IAEhC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,QAAQ,CAAC,uBAAuB,CAAC,CAAC;YAClC,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;YAEzC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACf,QAAQ,CAAC,SAAS,WAAW,mBAAmB,CAAC,CAAC;gBAClD,OAAO;YACT,CAAC;YAED,IAAI,YAAY,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC;gBAC9B,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAChB,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACf,QAAQ,CACN,oCAAoC,UAAU,+BAA+B,WAAW,EAAE,CAC3F,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,IAAI,CAAC,CAAC;YACf,QAAQ,CAAC,SAAS,WAAW,mBAAmB,CAAC,CAAC;QACpD,CAAC;IACH,CAAC,EAAE,CAAC,YAAY,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC;IAE5C,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC,CAAC"}
|