@xyo-network/react-chain-provider 1.12.0 → 1.12.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/dist/browser/index.mjs +90 -75
- package/dist/browser/index.mjs.map +1 -1
- package/package.json +15 -16
package/dist/browser/index.mjs
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
var __defProp = Object.defineProperty;
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
|
+
|
|
1
4
|
// src/hooks/useAddressBalance.ts
|
|
2
5
|
import { usePromise } from "@xylabs/react-promise";
|
|
3
6
|
import { isUndefined, isUndefinedOrNull } from "@xylabs/typeof";
|
|
4
7
|
import { ShiftedBigInt } from "@xyo-network/chain-wrappers";
|
|
5
8
|
import { useMemo, useState } from "react";
|
|
6
|
-
var useAddressBalance = (address, viewer, refresh) => {
|
|
9
|
+
var useAddressBalance = /* @__PURE__ */ __name((address, viewer, refresh) => {
|
|
7
10
|
const [balancesResult, setBalancesResult] = useState();
|
|
8
11
|
const [loading, setLoading] = useState(false);
|
|
9
12
|
const [, balancesError] = usePromise(async () => {
|
|
@@ -13,12 +16,18 @@ var useAddressBalance = (address, viewer, refresh) => {
|
|
|
13
16
|
const balance = await viewer.accountBalance(address);
|
|
14
17
|
setBalancesResult(balance);
|
|
15
18
|
setLoading(false);
|
|
16
|
-
}, [
|
|
19
|
+
}, [
|
|
20
|
+
address,
|
|
21
|
+
viewer,
|
|
22
|
+
refresh
|
|
23
|
+
]);
|
|
17
24
|
useMemo(() => {
|
|
18
25
|
if (balancesError) {
|
|
19
26
|
setLoading(false);
|
|
20
27
|
}
|
|
21
|
-
}, [
|
|
28
|
+
}, [
|
|
29
|
+
balancesError
|
|
30
|
+
]);
|
|
22
31
|
const shiftedBigInt = useMemo(() => {
|
|
23
32
|
if (typeof balancesResult !== "bigint") return;
|
|
24
33
|
return new ShiftedBigInt(balancesResult, {
|
|
@@ -28,13 +37,19 @@ var useAddressBalance = (address, viewer, refresh) => {
|
|
|
28
37
|
minDecimals: 1,
|
|
29
38
|
locale: navigator.language
|
|
30
39
|
});
|
|
31
|
-
}, [
|
|
40
|
+
}, [
|
|
41
|
+
balancesResult
|
|
42
|
+
]);
|
|
32
43
|
const balanceIntlFriendly = useMemo(() => {
|
|
33
44
|
return shiftedBigInt?.toFullString();
|
|
34
|
-
}, [
|
|
45
|
+
}, [
|
|
46
|
+
shiftedBigInt
|
|
47
|
+
]);
|
|
35
48
|
const shortBalanceIntlFriendly = useMemo(() => {
|
|
36
49
|
return isUndefinedOrNull(balancesResult) ? void 0 : balancesResult < 1000000000000n && balancesResult > 0n ? "<0.00001" : shiftedBigInt?.toShortString();
|
|
37
|
-
}, [
|
|
50
|
+
}, [
|
|
51
|
+
shiftedBigInt
|
|
52
|
+
]);
|
|
38
53
|
return {
|
|
39
54
|
address,
|
|
40
55
|
balanceForAddress: balancesResult,
|
|
@@ -43,82 +58,79 @@ var useAddressBalance = (address, viewer, refresh) => {
|
|
|
43
58
|
error: balancesError,
|
|
44
59
|
loading
|
|
45
60
|
};
|
|
46
|
-
};
|
|
61
|
+
}, "useAddressBalance");
|
|
47
62
|
|
|
48
63
|
// src/hooks/useCurrentBlock.ts
|
|
49
64
|
import { usePromise as usePromise2 } from "@xylabs/react-promise";
|
|
50
|
-
var useCurrentBlock = (refresh = 1, viewer) => {
|
|
65
|
+
var useCurrentBlock = /* @__PURE__ */ __name((refresh = 1, viewer) => {
|
|
51
66
|
return usePromise2(async () => {
|
|
52
67
|
if (viewer && refresh > 0) {
|
|
53
68
|
const block = await viewer.currentBlock();
|
|
54
69
|
return block;
|
|
55
70
|
}
|
|
56
|
-
}, [
|
|
57
|
-
|
|
71
|
+
}, [
|
|
72
|
+
viewer,
|
|
73
|
+
refresh
|
|
74
|
+
]);
|
|
75
|
+
}, "useCurrentBlock");
|
|
58
76
|
|
|
59
77
|
// src/hooks/useHttpRpcRunner.ts
|
|
60
78
|
import { isUndefined as isUndefined2 } from "@xylabs/typeof";
|
|
61
|
-
import {
|
|
62
|
-
AllRpcSchemas,
|
|
63
|
-
HttpRpcTransport,
|
|
64
|
-
JsonRpcXyoRunner
|
|
65
|
-
} from "@xyo-network/xl1-rpc";
|
|
79
|
+
import { AllRpcSchemas, HttpRpcTransport, JsonRpcXyoRunner } from "@xyo-network/xl1-rpc";
|
|
66
80
|
import { useMemo as useMemo2 } from "react";
|
|
67
|
-
var useHttpRpcRunner = (url) => {
|
|
81
|
+
var useHttpRpcRunner = /* @__PURE__ */ __name((url) => {
|
|
68
82
|
return useMemo2(() => {
|
|
69
83
|
if (isUndefined2(url)) {
|
|
70
84
|
return;
|
|
71
85
|
}
|
|
72
86
|
const transport = new HttpRpcTransport(`${url}/rpc`, AllRpcSchemas);
|
|
73
87
|
return new JsonRpcXyoRunner(transport);
|
|
74
|
-
}, [
|
|
75
|
-
|
|
88
|
+
}, [
|
|
89
|
+
url
|
|
90
|
+
]);
|
|
91
|
+
}, "useHttpRpcRunner");
|
|
76
92
|
|
|
77
93
|
// src/hooks/useNetwork.ts
|
|
78
94
|
import { isUndefined as isUndefined3 } from "@xylabs/typeof";
|
|
79
95
|
import { MemoryXyoNetwork } from "@xyo-network/xl1-rpc";
|
|
80
96
|
import { useMemo as useMemo3 } from "react";
|
|
81
|
-
var useNetwork = (id) => {
|
|
97
|
+
var useNetwork = /* @__PURE__ */ __name((id) => {
|
|
82
98
|
const network = useMemo3(() => {
|
|
83
99
|
if (isUndefined3(id)) return;
|
|
84
100
|
return new MemoryXyoNetwork(id);
|
|
85
|
-
}, [
|
|
101
|
+
}, [
|
|
102
|
+
id
|
|
103
|
+
]);
|
|
86
104
|
return network;
|
|
87
|
-
};
|
|
105
|
+
}, "useNetwork");
|
|
88
106
|
|
|
89
107
|
// src/hooks/useSigner.ts
|
|
90
108
|
import { MemoryXyoSigner } from "@xyo-network/xl1-rpc";
|
|
91
109
|
import { useMemo as useMemo4 } from "react";
|
|
92
|
-
var useSigner = (_provider, account) => {
|
|
93
|
-
return useMemo4(() => account ? new MemoryXyoSigner(account) : void 0, [
|
|
94
|
-
|
|
110
|
+
var useSigner = /* @__PURE__ */ __name((_provider, account) => {
|
|
111
|
+
return useMemo4(() => account ? new MemoryXyoSigner(account) : void 0, [
|
|
112
|
+
account
|
|
113
|
+
]);
|
|
114
|
+
}, "useSigner");
|
|
95
115
|
|
|
96
116
|
// src/hooks/viewer/useCheckRpc.ts
|
|
97
117
|
import { delay } from "@xylabs/delay";
|
|
98
118
|
import { isDefined, isUndefined as isUndefined4 } from "@xylabs/typeof";
|
|
99
119
|
import { LocalNetwork, SequenceNetwork } from "@xyo-network/chain-network-model";
|
|
100
|
-
import {
|
|
101
|
-
|
|
102
|
-
JsonRpcXyoViewer,
|
|
103
|
-
XyoViewerRpcSchemas
|
|
104
|
-
} from "@xyo-network/xl1-rpc";
|
|
105
|
-
import {
|
|
106
|
-
useEffect,
|
|
107
|
-
useMemo as useMemo5,
|
|
108
|
-
useState as useState2
|
|
109
|
-
} from "react";
|
|
120
|
+
import { HttpRpcTransport as HttpRpcTransport2, JsonRpcXyoViewer, XyoViewerRpcSchemas } from "@xyo-network/xl1-rpc";
|
|
121
|
+
import { useEffect, useMemo as useMemo5, useState as useState2 } from "react";
|
|
110
122
|
var INTERVAL = 5e3;
|
|
111
123
|
var localRpcEndpoint = `${LocalNetwork.url}/rpc`;
|
|
112
124
|
var sequenceRpcEndpoint = `${SequenceNetwork.url}/rpc`;
|
|
113
|
-
var useCheckLocalRpc = () => {
|
|
125
|
+
var useCheckLocalRpc = /* @__PURE__ */ __name(() => {
|
|
114
126
|
const isLocalProducer = useCheckRpc(localRpcEndpoint);
|
|
115
127
|
return isLocalProducer;
|
|
116
|
-
};
|
|
117
|
-
var useCheckSequenceRpc = () => {
|
|
128
|
+
}, "useCheckLocalRpc");
|
|
129
|
+
var useCheckSequenceRpc = /* @__PURE__ */ __name(() => {
|
|
118
130
|
const isLocalProducer = useCheckRpc(sequenceRpcEndpoint);
|
|
119
131
|
return isLocalProducer;
|
|
120
|
-
};
|
|
121
|
-
var useCheckRpc = (endpoint) => {
|
|
132
|
+
}, "useCheckSequenceRpc");
|
|
133
|
+
var useCheckRpc = /* @__PURE__ */ __name((endpoint) => {
|
|
122
134
|
const [isLocalProducer, setIsLocalProducer] = useState2(false);
|
|
123
135
|
const [error, setError] = useState2();
|
|
124
136
|
const viewer = useMemo5(() => {
|
|
@@ -126,7 +138,9 @@ var useCheckRpc = (endpoint) => {
|
|
|
126
138
|
const transport = new HttpRpcTransport2(endpoint, XyoViewerRpcSchemas);
|
|
127
139
|
const viewer2 = new JsonRpcXyoViewer(transport);
|
|
128
140
|
return viewer2;
|
|
129
|
-
}, [
|
|
141
|
+
}, [
|
|
142
|
+
endpoint
|
|
143
|
+
]);
|
|
130
144
|
useEffect(() => {
|
|
131
145
|
if (isUndefined4(viewer)) return;
|
|
132
146
|
void (async () => {
|
|
@@ -142,61 +156,56 @@ var useCheckRpc = (endpoint) => {
|
|
|
142
156
|
await delay(INTERVAL);
|
|
143
157
|
}
|
|
144
158
|
})();
|
|
145
|
-
}, [
|
|
146
|
-
|
|
147
|
-
|
|
159
|
+
}, [
|
|
160
|
+
viewer
|
|
161
|
+
]);
|
|
162
|
+
return {
|
|
163
|
+
isLocalProducer,
|
|
164
|
+
error
|
|
165
|
+
};
|
|
166
|
+
}, "useCheckRpc");
|
|
148
167
|
|
|
149
168
|
// src/hooks/viewer/useHttpRpcViewer.ts
|
|
150
169
|
import { isUndefined as isUndefined5 } from "@xylabs/typeof";
|
|
151
|
-
import {
|
|
152
|
-
HttpRpcTransport as HttpRpcTransport3,
|
|
153
|
-
JsonRpcXyoViewer as JsonRpcXyoViewer2,
|
|
154
|
-
XyoViewerRpcSchemas as XyoViewerRpcSchemas2
|
|
155
|
-
} from "@xyo-network/xl1-rpc";
|
|
170
|
+
import { HttpRpcTransport as HttpRpcTransport3, JsonRpcXyoViewer as JsonRpcXyoViewer2, XyoViewerRpcSchemas as XyoViewerRpcSchemas2 } from "@xyo-network/xl1-rpc";
|
|
156
171
|
import { useMemo as useMemo6 } from "react";
|
|
157
|
-
var useHttpRpcViewer = (url) => {
|
|
172
|
+
var useHttpRpcViewer = /* @__PURE__ */ __name((url) => {
|
|
158
173
|
const resolvedViewer = useMemo6(() => {
|
|
159
174
|
if (isUndefined5(url)) {
|
|
160
175
|
return;
|
|
161
176
|
}
|
|
162
177
|
const transport = new HttpRpcTransport3(`${url}/rpc`, XyoViewerRpcSchemas2);
|
|
163
178
|
return new JsonRpcXyoViewer2(transport);
|
|
164
|
-
}, [
|
|
179
|
+
}, [
|
|
180
|
+
url
|
|
181
|
+
]);
|
|
165
182
|
return resolvedViewer;
|
|
166
|
-
};
|
|
183
|
+
}, "useHttpRpcViewer");
|
|
167
184
|
|
|
168
185
|
// src/hooks/viewer/useViewerFromWallet.ts
|
|
169
186
|
import { usePromise as usePromise3 } from "@xylabs/react-promise";
|
|
170
|
-
import {
|
|
171
|
-
isDefined as isDefined3,
|
|
172
|
-
isTruthy,
|
|
173
|
-
isUndefined as isUndefined6
|
|
174
|
-
} from "@xylabs/typeof";
|
|
187
|
+
import { isDefined as isDefined3, isTruthy, isUndefined as isUndefined6 } from "@xylabs/typeof";
|
|
175
188
|
import { useEffect as useEffect2, useMemo as useMemo7 } from "react";
|
|
176
189
|
|
|
177
190
|
// src/hooks/viewer/resolveGateway.ts
|
|
178
191
|
import { isDefined as isDefined2 } from "@xylabs/typeof";
|
|
179
|
-
import {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
LegacyPostMessageRpcTransport,
|
|
183
|
-
MemoryXyoGateway,
|
|
184
|
-
RpcXyoSigner,
|
|
185
|
-
XyoConnection
|
|
186
|
-
} from "@xyo-network/xl1-rpc";
|
|
187
|
-
var gateways = () => globalThis.xyo?.client?.gateways;
|
|
188
|
-
var buildGatewayFromConnection = (networkId) => {
|
|
192
|
+
import { JsonRpcXyoRunner as JsonRpcXyoRunner2, JsonRpcXyoViewer as JsonRpcXyoViewer3, LegacyPostMessageRpcTransport, MemoryXyoGateway, RpcXyoSigner, XyoConnection } from "@xyo-network/xl1-rpc";
|
|
193
|
+
var gateways = /* @__PURE__ */ __name(() => globalThis.xyo?.client?.gateways, "gateways");
|
|
194
|
+
var buildGatewayFromConnection = /* @__PURE__ */ __name((networkId) => {
|
|
189
195
|
const connections = globalThis.xyo?.connections;
|
|
190
196
|
if (isDefined2(connections) && isDefined2(connections[networkId])) {
|
|
191
197
|
const legacyPostMessageRpcTransport = new LegacyPostMessageRpcTransport(networkId, globalThis.xyo.walletExtensionId() ?? "");
|
|
192
198
|
const signer = new RpcXyoSigner(legacyPostMessageRpcTransport);
|
|
193
199
|
const viewer = new JsonRpcXyoViewer3(legacyPostMessageRpcTransport);
|
|
194
200
|
const runner = new JsonRpcXyoRunner2(legacyPostMessageRpcTransport);
|
|
195
|
-
const connection = new XyoConnection({
|
|
201
|
+
const connection = new XyoConnection({
|
|
202
|
+
viewer,
|
|
203
|
+
runner
|
|
204
|
+
});
|
|
196
205
|
return new MemoryXyoGateway(signer, connection);
|
|
197
206
|
}
|
|
198
|
-
};
|
|
199
|
-
var resolveGateway = (networkId) => {
|
|
207
|
+
}, "buildGatewayFromConnection");
|
|
208
|
+
var resolveGateway = /* @__PURE__ */ __name((networkId) => {
|
|
200
209
|
const networkGateway = gateways()?.[networkId];
|
|
201
210
|
if (isDefined2(networkGateway)) {
|
|
202
211
|
return networkGateway;
|
|
@@ -206,27 +215,33 @@ var resolveGateway = (networkId) => {
|
|
|
206
215
|
return builtGateway;
|
|
207
216
|
}
|
|
208
217
|
console.warn(`No gateway found for networkId: ${networkId}`);
|
|
209
|
-
};
|
|
218
|
+
}, "resolveGateway");
|
|
210
219
|
|
|
211
220
|
// src/hooks/viewer/useViewerFromWallet.ts
|
|
212
|
-
var useViewerFromWallet = (networkId) => {
|
|
221
|
+
var useViewerFromWallet = /* @__PURE__ */ __name((networkId) => {
|
|
213
222
|
const networkGateway = useMemo7(() => {
|
|
214
223
|
if (isDefined3(networkId)) {
|
|
215
224
|
return resolveGateway(networkId);
|
|
216
225
|
}
|
|
217
|
-
}, [
|
|
226
|
+
}, [
|
|
227
|
+
networkId
|
|
228
|
+
]);
|
|
218
229
|
const [gatewayViewer, rpcError] = usePromise3(async () => {
|
|
219
230
|
if (isUndefined6(networkGateway)) return;
|
|
220
231
|
const connection = await networkGateway.connection();
|
|
221
232
|
return connection.viewer;
|
|
222
|
-
}, [
|
|
233
|
+
}, [
|
|
234
|
+
networkGateway
|
|
235
|
+
]);
|
|
223
236
|
useEffect2(() => {
|
|
224
237
|
if (isTruthy(rpcError)) {
|
|
225
238
|
console.error("Error creating viewer from wallet:", rpcError);
|
|
226
239
|
}
|
|
227
|
-
}, [
|
|
240
|
+
}, [
|
|
241
|
+
rpcError
|
|
242
|
+
]);
|
|
228
243
|
return gatewayViewer;
|
|
229
|
-
};
|
|
244
|
+
}, "useViewerFromWallet");
|
|
230
245
|
export {
|
|
231
246
|
useAddressBalance,
|
|
232
247
|
useCheckLocalRpc,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/hooks/useAddressBalance.ts","../../src/hooks/useCurrentBlock.ts","../../src/hooks/useHttpRpcRunner.ts","../../src/hooks/useNetwork.ts","../../src/hooks/useSigner.ts","../../src/hooks/viewer/useCheckRpc.ts","../../src/hooks/viewer/useHttpRpcViewer.ts","../../src/hooks/viewer/useViewerFromWallet.ts","../../src/hooks/viewer/resolveGateway.ts"],"sourcesContent":["import type { Address } from '@xylabs/hex'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isUndefined, isUndefinedOrNull } from '@xylabs/typeof'\nimport { ShiftedBigInt } from '@xyo-network/chain-wrappers'\nimport type { AttoXL1, XyoViewer } from '@xyo-network/xl1-protocol'\nimport { useMemo, useState } from 'react'\n\nexport const useAddressBalance = (\n // address to get balance for\n address?: Address,\n // viewer to use for fetching balance\n viewer?: XyoViewer,\n // refresh balance trigger\n refresh?: number,\n) => {\n const [balancesResult, setBalancesResult] = useState<AttoXL1 | null>()\n const [loading, setLoading] = useState(false)\n\n const [, balancesError] = usePromise(async () => {\n if (isUndefined(viewer) || isUndefined(address)) return\n setLoading(true)\n setBalancesResult(undefined)\n const balance = await viewer.accountBalance(address)\n setBalancesResult(balance as AttoXL1)\n setLoading(false)\n }, [address, viewer, refresh])\n\n useMemo(() => {\n if (balancesError) {\n setLoading(false)\n }\n }, [balancesError])\n\n const shiftedBigInt = useMemo(() => {\n if (typeof balancesResult !== 'bigint') return\n return new ShiftedBigInt(balancesResult, {\n places: 18, maxDecimal: 18, maxCharacters: 9, minDecimals: 1, locale: navigator.language,\n })\n }, [balancesResult])\n\n const balanceIntlFriendly = useMemo(() => {\n return shiftedBigInt?.toFullString()\n }, [shiftedBigInt])\n\n const shortBalanceIntlFriendly = useMemo(() => {\n return isUndefinedOrNull(balancesResult)\n ? undefined\n : (balancesResult < 1_000_000_000_000n && balancesResult > 0n) ? '<0.00001' : shiftedBigInt?.toShortString()\n }, [shiftedBigInt])\n\n return {\n address,\n balanceForAddress: balancesResult,\n balanceIntlFriendly,\n shortBalanceIntlFriendly,\n error: balancesError,\n loading,\n }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { XyoViewer } from '@xyo-network/xl1-protocol'\n\nexport const useCurrentBlock = (refresh = 1, viewer?: XyoViewer) => {\n return usePromise(async () => {\n if (viewer && refresh > 0) {\n const block = await viewer.currentBlock()\n return block\n }\n }, [viewer, refresh])\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport type { RpcTransport, XyoRunnerRpcSchemas } from '@xyo-network/xl1-rpc'\nimport {\n AllRpcSchemas, HttpRpcTransport, JsonRpcXyoRunner,\n} from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useHttpRpcRunner = (url?: string) => {\n return useMemo(() => {\n if (isUndefined(url)) {\n return\n }\n const transport = new HttpRpcTransport(`${url}/rpc`, AllRpcSchemas)\n return new JsonRpcXyoRunner(transport as RpcTransport<typeof XyoRunnerRpcSchemas>)\n }, [url])\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport type { DefaultNetworkIds } from '@xyo-network/xl1-protocol'\nimport { MemoryXyoNetwork } from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useNetwork = (id?: DefaultNetworkIds) => {\n const network = useMemo(() => {\n if (isUndefined(id)) return\n return new MemoryXyoNetwork(id)\n }, [id])\n\n return network\n}\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport type { XyoConnectionProvider, XyoSigner } from '@xyo-network/xl1-protocol'\nimport { MemoryXyoSigner } from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useSigner = (_provider?: XyoConnectionProvider, account?: AccountInstance) => {\n return useMemo<XyoSigner | undefined>(() => account ? new MemoryXyoSigner(account) : undefined, [account])\n}\n","import { delay } from '@xylabs/delay'\nimport { isDefined, isUndefined } from '@xylabs/typeof'\nimport { LocalNetwork, SequenceNetwork } from '@xyo-network/chain-network-model'\nimport {\n HttpRpcTransport, JsonRpcXyoViewer, XyoViewerRpcSchemas,\n} from '@xyo-network/xl1-rpc'\nimport {\n useEffect, useMemo, useState,\n} from 'react'\n\nconst INTERVAL = 5000 // 5 seconds\n\nconst localRpcEndpoint: string = `${LocalNetwork.url}/rpc`\nconst sequenceRpcEndpoint: string = `${SequenceNetwork.url}/rpc`\n\nexport const useCheckLocalRpc = () => {\n const isLocalProducer = useCheckRpc(localRpcEndpoint)\n return isLocalProducer\n}\n\nexport const useCheckSequenceRpc = () => {\n const isLocalProducer = useCheckRpc(sequenceRpcEndpoint)\n return isLocalProducer\n}\n\nexport const useCheckRpc = (endpoint?: string) => {\n const [isLocalProducer, setIsLocalProducer] = useState(false)\n const [error, setError] = useState<Error>()\n\n const viewer = useMemo(() => {\n if (isUndefined(endpoint)) return\n\n const transport = new HttpRpcTransport(endpoint, XyoViewerRpcSchemas)\n const viewer = new JsonRpcXyoViewer(transport)\n return viewer\n }, [endpoint])\n\n useEffect(() => {\n if (isUndefined(viewer)) return\n\n void (async () => {\n setError(undefined)\n while (!isLocalProducer) {\n try {\n const block = await viewer.currentBlock()\n setIsLocalProducer(isDefined(block))\n } catch (err) {\n setError(err as Error)\n setIsLocalProducer(false)\n }\n await delay(INTERVAL)\n }\n })()\n }, [viewer])\n\n return { isLocalProducer, error }\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport {\n HttpRpcTransport, JsonRpcXyoViewer, XyoViewerRpcSchemas,\n} from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useHttpRpcViewer = (url?: string) => {\n const resolvedViewer = useMemo(() => {\n if (isUndefined(url)) {\n return\n }\n const transport = new HttpRpcTransport(`${url}/rpc`, XyoViewerRpcSchemas)\n return new JsonRpcXyoViewer(transport)\n }, [url])\n\n return resolvedViewer\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport {\n isDefined, isTruthy, isUndefined,\n} from '@xylabs/typeof'\nimport type { GatewayName } from '@xyo-network/xl1-protocol'\nimport { useEffect, useMemo } from 'react'\n\nimport { resolveGateway } from './resolveGateway.ts'\n\n/**\n * Creates a JsonRpcXyoViewer instance based on the provided networkId.\n * @param networkId - a network id like 'sequence', 'local', etc.\n * @returns An instance of XyoViewer if the networkId is found in wallet gateways\n * otherwise undefined.\n */\nexport const useViewerFromWallet = (networkId?: GatewayName) => {\n const networkGateway = useMemo(() => {\n if (isDefined(networkId)) {\n return resolveGateway(networkId)\n }\n }, [networkId])\n\n const [gatewayViewer, rpcError] = usePromise(async () => {\n if (isUndefined(networkGateway)) return\n const connection = await networkGateway.connection()\n return connection.viewer\n }, [networkGateway])\n\n useEffect(() => {\n if (isTruthy(rpcError)) {\n console.error('Error creating viewer from wallet:', rpcError)\n }\n }, [rpcError])\n\n return gatewayViewer\n}\n","import { isDefined } from '@xylabs/typeof'\nimport type { GatewayName } from '@xyo-network/xl1-protocol'\nimport type {\n RpcTransport,\n XyoRunnerRpcSchemas, XyoSignerRpcSchemas,\n XyoViewerRpcSchemas,\n} from '@xyo-network/xl1-rpc'\nimport {\n JsonRpcXyoRunner, JsonRpcXyoViewer, LegacyPostMessageRpcTransport, MemoryXyoGateway, RpcXyoSigner, XyoConnection,\n} from '@xyo-network/xl1-rpc'\n\n/**\n * Check the global xyo object for gateways on the injected client.\n * @returns The gateways from the global xyo object, or undefined if it does not exist.\n */\nconst gateways = () => globalThis.xyo?.client?.gateways\n\n/**\n * Builds a gateway from the connection if it exists in the global xyo object.\n * @param networkId - a network id like 'sequence', 'local', etc.\n * @returns A MemoryXyoGateway instance if the connection exists, otherwise undefined.\n */\nconst buildGatewayFromConnection = (networkId: GatewayName) => {\n const connections = globalThis.xyo?.connections\n if (isDefined(connections) && isDefined(connections[networkId])) {\n // use the legacy post message transport to ensure compatibility with older implementations\n const legacyPostMessageRpcTransport = new LegacyPostMessageRpcTransport(networkId, globalThis.xyo.walletExtensionId() ?? '')\n const signer = new RpcXyoSigner(legacyPostMessageRpcTransport as RpcTransport<typeof XyoSignerRpcSchemas>)\n const viewer = new JsonRpcXyoViewer(legacyPostMessageRpcTransport as RpcTransport<typeof XyoViewerRpcSchemas>)\n const runner = new JsonRpcXyoRunner(legacyPostMessageRpcTransport as RpcTransport<typeof XyoRunnerRpcSchemas>)\n const connection = new XyoConnection({ viewer, runner })\n return new MemoryXyoGateway(signer, connection)\n }\n}\n\n/**\n * Retrieves a gateway from the wallet based on the provided networkId.\n * Includes fallback logic to build a gateway from the connection if it does not exist in\n * the global xyo object.\n * @param networkId - a network id like 'sequence', 'local', etc.\n * @returns A MemoryXyoGateway instance if the connection exists, otherwise undefined.\n */\nexport const resolveGateway = (networkId: GatewayName) => {\n const networkGateway = gateways()?.[networkId]\n if (isDefined(networkGateway)) {\n return networkGateway\n }\n const builtGateway = buildGatewayFromConnection(networkId)\n if (isDefined(builtGateway)) {\n return builtGateway\n }\n // If no gateway is found, log a warning\n console.warn(`No gateway found for networkId: ${networkId}`)\n}\n"],"mappings":"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","names":["usePromise","isUndefined","useMemo","isUndefined","useMemo","useMemo","isUndefined","HttpRpcTransport","useMemo","useState","viewer","isUndefined","HttpRpcTransport","JsonRpcXyoViewer","XyoViewerRpcSchemas","useMemo","usePromise","isDefined","isUndefined","useEffect","useMemo","isDefined","JsonRpcXyoRunner","JsonRpcXyoViewer","useMemo","isDefined","usePromise","isUndefined","useEffect"]}
|
|
1
|
+
{"version":3,"sources":["../../src/hooks/useAddressBalance.ts","../../src/hooks/useCurrentBlock.ts","../../src/hooks/useHttpRpcRunner.ts","../../src/hooks/useNetwork.ts","../../src/hooks/useSigner.ts","../../src/hooks/viewer/useCheckRpc.ts","../../src/hooks/viewer/useHttpRpcViewer.ts","../../src/hooks/viewer/useViewerFromWallet.ts","../../src/hooks/viewer/resolveGateway.ts"],"sourcesContent":["import type { Address } from '@xylabs/hex'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isUndefined, isUndefinedOrNull } from '@xylabs/typeof'\nimport { ShiftedBigInt } from '@xyo-network/chain-wrappers'\nimport type { AttoXL1, XyoViewer } from '@xyo-network/xl1-protocol'\nimport { useMemo, useState } from 'react'\n\nexport const useAddressBalance = (\n // address to get balance for\n address?: Address,\n // viewer to use for fetching balance\n viewer?: XyoViewer,\n // refresh balance trigger\n refresh?: number,\n) => {\n const [balancesResult, setBalancesResult] = useState<AttoXL1 | null>()\n const [loading, setLoading] = useState(false)\n\n const [, balancesError] = usePromise(async () => {\n if (isUndefined(viewer) || isUndefined(address)) return\n setLoading(true)\n setBalancesResult(undefined)\n const balance = await viewer.accountBalance(address)\n setBalancesResult(balance as AttoXL1)\n setLoading(false)\n }, [address, viewer, refresh])\n\n useMemo(() => {\n if (balancesError) {\n setLoading(false)\n }\n }, [balancesError])\n\n const shiftedBigInt = useMemo(() => {\n if (typeof balancesResult !== 'bigint') return\n return new ShiftedBigInt(balancesResult, {\n places: 18, maxDecimal: 18, maxCharacters: 9, minDecimals: 1, locale: navigator.language,\n })\n }, [balancesResult])\n\n const balanceIntlFriendly = useMemo(() => {\n return shiftedBigInt?.toFullString()\n }, [shiftedBigInt])\n\n const shortBalanceIntlFriendly = useMemo(() => {\n return isUndefinedOrNull(balancesResult)\n ? undefined\n : (balancesResult < 1_000_000_000_000n && balancesResult > 0n) ? '<0.00001' : shiftedBigInt?.toShortString()\n }, [shiftedBigInt])\n\n return {\n address,\n balanceForAddress: balancesResult,\n balanceIntlFriendly,\n shortBalanceIntlFriendly,\n error: balancesError,\n loading,\n }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { XyoViewer } from '@xyo-network/xl1-protocol'\n\nexport const useCurrentBlock = (refresh = 1, viewer?: XyoViewer) => {\n return usePromise(async () => {\n if (viewer && refresh > 0) {\n const block = await viewer.currentBlock()\n return block\n }\n }, [viewer, refresh])\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport type { RpcTransport, XyoRunnerRpcSchemas } from '@xyo-network/xl1-rpc'\nimport {\n AllRpcSchemas, HttpRpcTransport, JsonRpcXyoRunner,\n} from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useHttpRpcRunner = (url?: string) => {\n return useMemo(() => {\n if (isUndefined(url)) {\n return\n }\n const transport = new HttpRpcTransport(`${url}/rpc`, AllRpcSchemas)\n return new JsonRpcXyoRunner(transport as RpcTransport<typeof XyoRunnerRpcSchemas>)\n }, [url])\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport type { DefaultNetworkIds } from '@xyo-network/xl1-protocol'\nimport { MemoryXyoNetwork } from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useNetwork = (id?: DefaultNetworkIds) => {\n const network = useMemo(() => {\n if (isUndefined(id)) return\n return new MemoryXyoNetwork(id)\n }, [id])\n\n return network\n}\n","import type { AccountInstance } from '@xyo-network/account-model'\nimport type { XyoConnectionProvider, XyoSigner } from '@xyo-network/xl1-protocol'\nimport { MemoryXyoSigner } from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useSigner = (_provider?: XyoConnectionProvider, account?: AccountInstance) => {\n return useMemo<XyoSigner | undefined>(() => account ? new MemoryXyoSigner(account) : undefined, [account])\n}\n","import { delay } from '@xylabs/delay'\nimport { isDefined, isUndefined } from '@xylabs/typeof'\nimport { LocalNetwork, SequenceNetwork } from '@xyo-network/chain-network-model'\nimport {\n HttpRpcTransport, JsonRpcXyoViewer, XyoViewerRpcSchemas,\n} from '@xyo-network/xl1-rpc'\nimport {\n useEffect, useMemo, useState,\n} from 'react'\n\nconst INTERVAL = 5000 // 5 seconds\n\nconst localRpcEndpoint: string = `${LocalNetwork.url}/rpc`\nconst sequenceRpcEndpoint: string = `${SequenceNetwork.url}/rpc`\n\nexport const useCheckLocalRpc = () => {\n const isLocalProducer = useCheckRpc(localRpcEndpoint)\n return isLocalProducer\n}\n\nexport const useCheckSequenceRpc = () => {\n const isLocalProducer = useCheckRpc(sequenceRpcEndpoint)\n return isLocalProducer\n}\n\nexport const useCheckRpc = (endpoint?: string) => {\n const [isLocalProducer, setIsLocalProducer] = useState(false)\n const [error, setError] = useState<Error>()\n\n const viewer = useMemo(() => {\n if (isUndefined(endpoint)) return\n\n const transport = new HttpRpcTransport(endpoint, XyoViewerRpcSchemas)\n const viewer = new JsonRpcXyoViewer(transport)\n return viewer\n }, [endpoint])\n\n useEffect(() => {\n if (isUndefined(viewer)) return\n\n void (async () => {\n setError(undefined)\n while (!isLocalProducer) {\n try {\n const block = await viewer.currentBlock()\n setIsLocalProducer(isDefined(block))\n } catch (err) {\n setError(err as Error)\n setIsLocalProducer(false)\n }\n await delay(INTERVAL)\n }\n })()\n }, [viewer])\n\n return { isLocalProducer, error }\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport {\n HttpRpcTransport, JsonRpcXyoViewer, XyoViewerRpcSchemas,\n} from '@xyo-network/xl1-rpc'\nimport { useMemo } from 'react'\n\nexport const useHttpRpcViewer = (url?: string) => {\n const resolvedViewer = useMemo(() => {\n if (isUndefined(url)) {\n return\n }\n const transport = new HttpRpcTransport(`${url}/rpc`, XyoViewerRpcSchemas)\n return new JsonRpcXyoViewer(transport)\n }, [url])\n\n return resolvedViewer\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport {\n isDefined, isTruthy, isUndefined,\n} from '@xylabs/typeof'\nimport type { GatewayName } from '@xyo-network/xl1-protocol'\nimport { useEffect, useMemo } from 'react'\n\nimport { resolveGateway } from './resolveGateway.ts'\n\n/**\n * Creates a JsonRpcXyoViewer instance based on the provided networkId.\n * @param networkId - a network id like 'sequence', 'local', etc.\n * @returns An instance of XyoViewer if the networkId is found in wallet gateways\n * otherwise undefined.\n */\nexport const useViewerFromWallet = (networkId?: GatewayName) => {\n const networkGateway = useMemo(() => {\n if (isDefined(networkId)) {\n return resolveGateway(networkId)\n }\n }, [networkId])\n\n const [gatewayViewer, rpcError] = usePromise(async () => {\n if (isUndefined(networkGateway)) return\n const connection = await networkGateway.connection()\n return connection.viewer\n }, [networkGateway])\n\n useEffect(() => {\n if (isTruthy(rpcError)) {\n console.error('Error creating viewer from wallet:', rpcError)\n }\n }, [rpcError])\n\n return gatewayViewer\n}\n","import { isDefined } from '@xylabs/typeof'\nimport type { GatewayName } from '@xyo-network/xl1-protocol'\nimport type {\n RpcTransport,\n XyoRunnerRpcSchemas, XyoSignerRpcSchemas,\n XyoViewerRpcSchemas,\n} from '@xyo-network/xl1-rpc'\nimport {\n JsonRpcXyoRunner, JsonRpcXyoViewer, LegacyPostMessageRpcTransport, MemoryXyoGateway, RpcXyoSigner, XyoConnection,\n} from '@xyo-network/xl1-rpc'\n\n/**\n * Check the global xyo object for gateways on the injected client.\n * @returns The gateways from the global xyo object, or undefined if it does not exist.\n */\nconst gateways = () => globalThis.xyo?.client?.gateways\n\n/**\n * Builds a gateway from the connection if it exists in the global xyo object.\n * @param networkId - a network id like 'sequence', 'local', etc.\n * @returns A MemoryXyoGateway instance if the connection exists, otherwise undefined.\n */\nconst buildGatewayFromConnection = (networkId: GatewayName) => {\n const connections = globalThis.xyo?.connections\n if (isDefined(connections) && isDefined(connections[networkId])) {\n // use the legacy post message transport to ensure compatibility with older implementations\n const legacyPostMessageRpcTransport = new LegacyPostMessageRpcTransport(networkId, globalThis.xyo.walletExtensionId() ?? '')\n const signer = new RpcXyoSigner(legacyPostMessageRpcTransport as RpcTransport<typeof XyoSignerRpcSchemas>)\n const viewer = new JsonRpcXyoViewer(legacyPostMessageRpcTransport as RpcTransport<typeof XyoViewerRpcSchemas>)\n const runner = new JsonRpcXyoRunner(legacyPostMessageRpcTransport as RpcTransport<typeof XyoRunnerRpcSchemas>)\n const connection = new XyoConnection({ viewer, runner })\n return new MemoryXyoGateway(signer, connection)\n }\n}\n\n/**\n * Retrieves a gateway from the wallet based on the provided networkId.\n * Includes fallback logic to build a gateway from the connection if it does not exist in\n * the global xyo object.\n * @param networkId - a network id like 'sequence', 'local', etc.\n * @returns A MemoryXyoGateway instance if the connection exists, otherwise undefined.\n */\nexport const resolveGateway = (networkId: GatewayName) => {\n const networkGateway = gateways()?.[networkId]\n if (isDefined(networkGateway)) {\n return networkGateway\n }\n const builtGateway = buildGatewayFromConnection(networkId)\n if (isDefined(builtGateway)) {\n return builtGateway\n }\n // If no gateway is found, log a warning\n console.warn(`No gateway found for networkId: ${networkId}`)\n}\n"],"mappings":"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","names":["usePromise","isUndefined","isUndefinedOrNull","ShiftedBigInt","useMemo","useState","useAddressBalance","address","viewer","refresh","balancesResult","setBalancesResult","useState","loading","setLoading","balancesError","usePromise","isUndefined","undefined","balance","accountBalance","useMemo","shiftedBigInt","ShiftedBigInt","places","maxDecimal","maxCharacters","minDecimals","locale","navigator","language","balanceIntlFriendly","toFullString","shortBalanceIntlFriendly","isUndefinedOrNull","toShortString","balanceForAddress","error","usePromise","useCurrentBlock","refresh","viewer","usePromise","block","currentBlock","isUndefined","AllRpcSchemas","HttpRpcTransport","JsonRpcXyoRunner","useMemo","useHttpRpcRunner","url","useMemo","isUndefined","transport","HttpRpcTransport","AllRpcSchemas","JsonRpcXyoRunner","isUndefined","MemoryXyoNetwork","useMemo","useNetwork","id","network","useMemo","isUndefined","MemoryXyoNetwork","MemoryXyoSigner","useMemo","useSigner","_provider","account","useMemo","MemoryXyoSigner","undefined","delay","isDefined","isUndefined","LocalNetwork","SequenceNetwork","HttpRpcTransport","JsonRpcXyoViewer","XyoViewerRpcSchemas","useEffect","useMemo","useState","INTERVAL","localRpcEndpoint","LocalNetwork","url","sequenceRpcEndpoint","SequenceNetwork","useCheckLocalRpc","isLocalProducer","useCheckRpc","useCheckSequenceRpc","endpoint","setIsLocalProducer","useState","error","setError","viewer","useMemo","isUndefined","transport","HttpRpcTransport","XyoViewerRpcSchemas","JsonRpcXyoViewer","useEffect","undefined","block","currentBlock","isDefined","err","delay","isUndefined","HttpRpcTransport","JsonRpcXyoViewer","XyoViewerRpcSchemas","useMemo","useHttpRpcViewer","url","resolvedViewer","useMemo","isUndefined","transport","HttpRpcTransport","XyoViewerRpcSchemas","JsonRpcXyoViewer","usePromise","isDefined","isTruthy","isUndefined","useEffect","useMemo","isDefined","JsonRpcXyoRunner","JsonRpcXyoViewer","LegacyPostMessageRpcTransport","MemoryXyoGateway","RpcXyoSigner","XyoConnection","gateways","globalThis","xyo","client","buildGatewayFromConnection","networkId","connections","isDefined","legacyPostMessageRpcTransport","LegacyPostMessageRpcTransport","walletExtensionId","signer","RpcXyoSigner","viewer","JsonRpcXyoViewer","runner","JsonRpcXyoRunner","connection","XyoConnection","MemoryXyoGateway","resolveGateway","networkGateway","builtGateway","console","warn","useViewerFromWallet","networkId","networkGateway","useMemo","isDefined","resolveGateway","gatewayViewer","rpcError","usePromise","isUndefined","connection","viewer","useEffect","isTruthy","console","error"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@xyo-network/react-chain-provider",
|
|
4
|
-
"version": "1.12.
|
|
4
|
+
"version": "1.12.1",
|
|
5
5
|
"description": "XYO Layer One API",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -41,15 +41,15 @@
|
|
|
41
41
|
"src"
|
|
42
42
|
],
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@xylabs/delay": "~5.0.
|
|
45
|
-
"@xylabs/hex": "~5.0.
|
|
46
|
-
"@xylabs/react-promise": "~7.0.
|
|
47
|
-
"@xylabs/typeof": "~5.0.
|
|
48
|
-
"@xyo-network/account-model": "~5.0.
|
|
49
|
-
"@xyo-network/chain-network-model": "~1.12.
|
|
50
|
-
"@xyo-network/chain-wrappers": "~1.12.
|
|
51
|
-
"@xyo-network/xl1-protocol": "~1.10.
|
|
52
|
-
"@xyo-network/xl1-rpc": "~1.12.
|
|
44
|
+
"@xylabs/delay": "~5.0.8",
|
|
45
|
+
"@xylabs/hex": "~5.0.8",
|
|
46
|
+
"@xylabs/react-promise": "~7.0.1",
|
|
47
|
+
"@xylabs/typeof": "~5.0.8",
|
|
48
|
+
"@xyo-network/account-model": "~5.0.5",
|
|
49
|
+
"@xyo-network/chain-network-model": "~1.12.1",
|
|
50
|
+
"@xyo-network/chain-wrappers": "~1.12.1",
|
|
51
|
+
"@xyo-network/xl1-protocol": "~1.10.13",
|
|
52
|
+
"@xyo-network/xl1-rpc": "~1.12.1",
|
|
53
53
|
"react": "~19.1.1"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
@@ -58,12 +58,11 @@
|
|
|
58
58
|
"@mui/material": "~7.3.1",
|
|
59
59
|
"@storybook/react-vite": "~9.1.2",
|
|
60
60
|
"@types/react": "~19.1.10",
|
|
61
|
-
"@xylabs/ts-scripts-yarn3": "~7.1.
|
|
62
|
-
"@xylabs/tsconfig": "~7.1.
|
|
63
|
-
"@xylabs/tsconfig-dom": "~7.1.
|
|
64
|
-
"@xylabs/tsconfig-react": "~7.1.
|
|
65
|
-
"@xyo-network/chain-
|
|
66
|
-
"@xyo-network/react-chain-model": "~1.12.0",
|
|
61
|
+
"@xylabs/ts-scripts-yarn3": "~7.1.2",
|
|
62
|
+
"@xylabs/tsconfig": "~7.1.2",
|
|
63
|
+
"@xylabs/tsconfig-dom": "~7.1.2",
|
|
64
|
+
"@xylabs/tsconfig-react": "~7.1.2",
|
|
65
|
+
"@xyo-network/react-chain-model": "~1.12.1",
|
|
67
66
|
"typescript": "~5.9.2"
|
|
68
67
|
},
|
|
69
68
|
"packageManager": "yarn@4.6.0",
|