@helium/helium-react-hooks 0.1.3 → 0.2.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/lib/cjs/hooks/useIdlAccount.js +2 -2
- package/lib/cjs/hooks/useIdlAccount.js.map +1 -1
- package/lib/cjs/hooks/useMint.js +2 -2
- package/lib/cjs/hooks/useMint.js.map +1 -1
- package/lib/cjs/hooks/useSolOwnedAmount.js +2 -2
- package/lib/cjs/hooks/useSolOwnedAmount.js.map +1 -1
- package/lib/cjs/hooks/useTokenAccount.js +2 -2
- package/lib/cjs/hooks/useTokenAccount.js.map +1 -1
- package/lib/cjs/index.js +1 -8
- package/lib/cjs/index.js.map +1 -1
- package/lib/esm/src/hooks/useIdlAccount.js +1 -1
- package/lib/esm/src/hooks/useIdlAccount.js.map +1 -1
- package/lib/esm/src/hooks/useMint.js +1 -1
- package/lib/esm/src/hooks/useMint.js.map +1 -1
- package/lib/esm/src/hooks/useSolOwnedAmount.js +1 -1
- package/lib/esm/src/hooks/useSolOwnedAmount.js.map +1 -1
- package/lib/esm/src/hooks/useTokenAccount.js +1 -1
- package/lib/esm/src/hooks/useTokenAccount.js.map +1 -1
- package/lib/esm/src/index.js +0 -3
- package/lib/esm/src/index.js.map +1 -1
- package/lib/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types/src/hooks/useIdlAccount.d.ts +1 -1
- package/lib/types/src/hooks/useIdlAccount.d.ts.map +1 -1
- package/lib/types/src/hooks/useMint.d.ts +2 -2
- package/lib/types/src/hooks/useMint.d.ts.map +1 -1
- package/lib/types/src/hooks/useTokenAccount.d.ts +1 -1
- package/lib/types/src/hooks/useTokenAccount.d.ts.map +1 -1
- package/lib/types/src/index.d.ts +0 -5
- package/lib/types/src/index.d.ts.map +1 -1
- package/package.json +4 -3
- package/lib/cjs/contexts/accountContext.js +0 -47
- package/lib/cjs/contexts/accountContext.js.map +0 -1
- package/lib/cjs/hooks/useAccount.js +0 -172
- package/lib/cjs/hooks/useAccount.js.map +0 -1
- package/lib/cjs/hooks/useAccountFetchCache.js +0 -14
- package/lib/cjs/hooks/useAccountFetchCache.js.map +0 -1
- package/lib/esm/src/contexts/accountContext.js +0 -20
- package/lib/esm/src/contexts/accountContext.js.map +0 -1
- package/lib/esm/src/hooks/useAccount.js +0 -159
- package/lib/esm/src/hooks/useAccount.js.map +0 -1
- package/lib/esm/src/hooks/useAccountFetchCache.js +0 -10
- package/lib/esm/src/hooks/useAccountFetchCache.js.map +0 -1
- package/lib/types/src/contexts/accountContext.d.ts +0 -12
- package/lib/types/src/contexts/accountContext.d.ts.map +0 -1
- package/lib/types/src/hooks/useAccount.d.ts +0 -24
- package/lib/types/src/hooks/useAccount.d.ts.map +0 -1
- package/lib/types/src/hooks/useAccountFetchCache.d.ts +0 -6
- package/lib/types/src/hooks/useAccountFetchCache.d.ts.map +0 -1
|
@@ -1,172 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.useAccount = void 0;
|
|
13
|
-
const react_1 = require("react");
|
|
14
|
-
const useAccountFetchCache_1 = require("./useAccountFetchCache");
|
|
15
|
-
const react_async_hook_1 = require("react-async-hook");
|
|
16
|
-
/**
|
|
17
|
-
* Generic hook to get a cached, auto updating, deserialized form of any Solana account. Massively saves on RPC usage by using
|
|
18
|
-
* the spl-utils accountFetchCache.
|
|
19
|
-
*
|
|
20
|
-
* @param key
|
|
21
|
-
* @param parser
|
|
22
|
-
* @param isStatic
|
|
23
|
-
* @returns
|
|
24
|
-
*/
|
|
25
|
-
function useAccount(key, parser, isStatic = false) {
|
|
26
|
-
const cache = (0, useAccountFetchCache_1.useAccountFetchCache)();
|
|
27
|
-
const [state, setState] = (0, react_1.useState)({
|
|
28
|
-
loading: true,
|
|
29
|
-
});
|
|
30
|
-
const parsedAccountBaseParser = (pubkey, data) => {
|
|
31
|
-
try {
|
|
32
|
-
if (parser) {
|
|
33
|
-
const info = parser(pubkey, data);
|
|
34
|
-
return {
|
|
35
|
-
pubkey,
|
|
36
|
-
account: data,
|
|
37
|
-
info,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
return {
|
|
41
|
-
pubkey,
|
|
42
|
-
account: data,
|
|
43
|
-
info: undefined,
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
catch (e) {
|
|
47
|
-
console.error(`Error while parsing: ${e.message}`);
|
|
48
|
-
return {
|
|
49
|
-
pubkey,
|
|
50
|
-
account: data,
|
|
51
|
-
info: undefined,
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
const id = typeof key === 'string' ? key : key === null || key === void 0 ? void 0 : key.toBase58();
|
|
56
|
-
(0, react_async_hook_1.useAsync)(() => __awaiter(this, void 0, void 0, function* () {
|
|
57
|
-
// Occassionally, dispose can get called while the cache promise is still going.
|
|
58
|
-
// In that case, we want to dispose immediately.
|
|
59
|
-
let shouldDisposeImmediately = false;
|
|
60
|
-
let disposeWatch = () => {
|
|
61
|
-
shouldDisposeImmediately = true;
|
|
62
|
-
};
|
|
63
|
-
if (!id || !cache) {
|
|
64
|
-
setState((s) => (!s.loading ? s : { loading: false }));
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
setState((s) => (s.loading ? s : { loading: true }));
|
|
68
|
-
let prevInfo = state.info;
|
|
69
|
-
cache
|
|
70
|
-
.searchAndWatch(id, parser ? parsedAccountBaseParser : undefined, isStatic)
|
|
71
|
-
.then(([acc, dispose]) => {
|
|
72
|
-
if (shouldDisposeImmediately) {
|
|
73
|
-
dispose();
|
|
74
|
-
shouldDisposeImmediately = false;
|
|
75
|
-
}
|
|
76
|
-
disposeWatch = dispose;
|
|
77
|
-
if (acc) {
|
|
78
|
-
try {
|
|
79
|
-
const nextInfo = mergePublicKeys(prevInfo, parser && parser(acc.pubkey, acc === null || acc === void 0 ? void 0 : acc.account));
|
|
80
|
-
prevInfo = nextInfo;
|
|
81
|
-
setState({
|
|
82
|
-
loading: false,
|
|
83
|
-
info: nextInfo,
|
|
84
|
-
account: acc.account,
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
catch (e) {
|
|
88
|
-
console.error(`Error while parsing: ${e.message}`);
|
|
89
|
-
setState({
|
|
90
|
-
loading: false,
|
|
91
|
-
info: undefined,
|
|
92
|
-
account: acc.account,
|
|
93
|
-
});
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
else {
|
|
97
|
-
setState((s) => (!s.loading ? s : { loading: false }));
|
|
98
|
-
}
|
|
99
|
-
})
|
|
100
|
-
.catch((e) => {
|
|
101
|
-
console.error(e);
|
|
102
|
-
setState((s) => (!s.loading ? s : { loading: false }));
|
|
103
|
-
});
|
|
104
|
-
const disposeEmitter = cache.emitter.onCache((e) => {
|
|
105
|
-
const event = e;
|
|
106
|
-
if (event.id === id) {
|
|
107
|
-
cache
|
|
108
|
-
.search(id, parser ? parsedAccountBaseParser : undefined)
|
|
109
|
-
.then((acc) => {
|
|
110
|
-
if (acc && acc.account !== state.account) {
|
|
111
|
-
try {
|
|
112
|
-
setState({
|
|
113
|
-
loading: false,
|
|
114
|
-
info: mergePublicKeys(state.info, parser && parser(acc.pubkey, acc.account)),
|
|
115
|
-
account: acc.account,
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
catch (err) {
|
|
119
|
-
console.error(`Error while parsing: ${err.message}`);
|
|
120
|
-
setState({
|
|
121
|
-
loading: false,
|
|
122
|
-
info: undefined,
|
|
123
|
-
account: acc.account,
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
});
|
|
128
|
-
}
|
|
129
|
-
});
|
|
130
|
-
return () => {
|
|
131
|
-
disposeEmitter();
|
|
132
|
-
setTimeout(disposeWatch, 30 * 1000); // Keep cached accounts around for 30s in case a rerender is causing reuse
|
|
133
|
-
};
|
|
134
|
-
}), [cache, id, !parser]); // only trigger on change to parser if it wasn't defined before.
|
|
135
|
-
return state;
|
|
136
|
-
}
|
|
137
|
-
exports.useAccount = useAccount;
|
|
138
|
-
/**
|
|
139
|
-
*
|
|
140
|
-
* @param input
|
|
141
|
-
* @returns
|
|
142
|
-
*/
|
|
143
|
-
function isPureObject(input) {
|
|
144
|
-
return (input !== null &&
|
|
145
|
-
typeof input === 'object' &&
|
|
146
|
-
Object.getPrototypeOf(input).isPrototypeOf(Object));
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Updates to a solana account will contain new PublicKeys that are
|
|
150
|
-
* actually the same, just a new JS object. This will cause a lot of useMemo
|
|
151
|
-
* to fail.
|
|
152
|
-
*/
|
|
153
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
154
|
-
function mergePublicKeys(arg0, arg1) {
|
|
155
|
-
if (!isPureObject(arg1) || !arg1 || !arg0) {
|
|
156
|
-
return arg1;
|
|
157
|
-
}
|
|
158
|
-
return Object.entries(arg1).reduce((acc, [key, value]) => {
|
|
159
|
-
if (arg1[key] &&
|
|
160
|
-
arg1[key].equals &&
|
|
161
|
-
arg0[key] &&
|
|
162
|
-
arg1[key].equals(arg0[key])) {
|
|
163
|
-
acc[key] = arg0[key];
|
|
164
|
-
}
|
|
165
|
-
else {
|
|
166
|
-
acc[key] = value;
|
|
167
|
-
}
|
|
168
|
-
return acc;
|
|
169
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
170
|
-
}, {});
|
|
171
|
-
}
|
|
172
|
-
//# sourceMappingURL=useAccount.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAccount.js","sourceRoot":"","sources":["../../../src/hooks/useAccount.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useAccountFetchCache = void 0;
|
|
4
|
-
const react_1 = require("react");
|
|
5
|
-
const accountContext_1 = require("../contexts/accountContext");
|
|
6
|
-
/**
|
|
7
|
-
* Get the account fetch cache to save on rcp calls. Generally, you want to use {@link useAccount}
|
|
8
|
-
* @returns
|
|
9
|
-
*/
|
|
10
|
-
const useAccountFetchCache = () => {
|
|
11
|
-
return (0, react_1.useContext)(accountContext_1.AccountContext);
|
|
12
|
-
};
|
|
13
|
-
exports.useAccountFetchCache = useAccountFetchCache;
|
|
14
|
-
//# sourceMappingURL=useAccountFetchCache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAccountFetchCache.js","sourceRoot":"","sources":["../../../src/hooks/useAccountFetchCache.ts"],"names":[],"mappings":";;;AAAA,iCAAmC;AACnC,+DAA4D;AAE5D;;;GAGG;AACI,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,OAAO,IAAA,kBAAU,EAAC,+BAAc,CAAC,CAAC;AACpC,CAAC,CAAC;AAFW,QAAA,oBAAoB,wBAE/B"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { AccountFetchCache } from "@helium/spl-utils";
|
|
2
|
-
import React, { createContext, useEffect, useState, } from "react";
|
|
3
|
-
export const AccountContext = createContext(undefined);
|
|
4
|
-
export const AccountProvider = ({ children, commitment = "confirmed", extendConnection = true, connection }) => {
|
|
5
|
-
const [cache, setCache] = useState();
|
|
6
|
-
useEffect(() => {
|
|
7
|
-
if (connection) {
|
|
8
|
-
cache?.close();
|
|
9
|
-
setCache(new AccountFetchCache({
|
|
10
|
-
connection,
|
|
11
|
-
delay: 50,
|
|
12
|
-
commitment,
|
|
13
|
-
extendConnection,
|
|
14
|
-
}));
|
|
15
|
-
}
|
|
16
|
-
}, [connection]);
|
|
17
|
-
return (React.createElement(AccountContext.Provider, { value: cache }, children));
|
|
18
|
-
return null;
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=accountContext.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"accountContext.js","sourceRoot":"","sources":["../../../../src/contexts/accountContext.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,EACZ,aAAa,EAGb,SAAS,EACT,QAAQ,GACT,MAAM,OAAO,CAAC;AASf,MAAM,CAAC,MAAM,cAAc,GAAG,aAAa,CACzC,SAAS,CACV,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAA8B,CAAC,EACzD,QAAQ,EACR,UAAU,GAAG,WAAW,EACxB,gBAAgB,GAAG,IAAI,EACvB,UAAU,EACX,EAAE,EAAE;IACH,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,EAAqB,CAAC;IACxD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,UAAU,EAAE;YACd,KAAK,EAAE,KAAK,EAAE,CAAC;YAEf,QAAQ,CACN,IAAI,iBAAiB,CAAC;gBACpB,UAAU;gBACV,KAAK,EAAE,EAAE;gBACT,UAAU;gBACV,gBAAgB;aACjB,CAAC,CACH,CAAC;SACH;IACH,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;IAEjB,OAAO,CACL,oBAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,KAAK,IAAG,QAAQ,CAA2B,CAC5E,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import { useState } from "react";
|
|
2
|
-
import { useAccountFetchCache } from "./useAccountFetchCache";
|
|
3
|
-
import { useAsync } from 'react-async-hook';
|
|
4
|
-
/**
|
|
5
|
-
* Generic hook to get a cached, auto updating, deserialized form of any Solana account. Massively saves on RPC usage by using
|
|
6
|
-
* the spl-utils accountFetchCache.
|
|
7
|
-
*
|
|
8
|
-
* @param key
|
|
9
|
-
* @param parser
|
|
10
|
-
* @param isStatic
|
|
11
|
-
* @returns
|
|
12
|
-
*/
|
|
13
|
-
export function useAccount(key, parser, isStatic = false) {
|
|
14
|
-
const cache = useAccountFetchCache();
|
|
15
|
-
const [state, setState] = useState({
|
|
16
|
-
loading: true,
|
|
17
|
-
});
|
|
18
|
-
const parsedAccountBaseParser = (pubkey, data) => {
|
|
19
|
-
try {
|
|
20
|
-
if (parser) {
|
|
21
|
-
const info = parser(pubkey, data);
|
|
22
|
-
return {
|
|
23
|
-
pubkey,
|
|
24
|
-
account: data,
|
|
25
|
-
info,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
return {
|
|
29
|
-
pubkey,
|
|
30
|
-
account: data,
|
|
31
|
-
info: undefined,
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
catch (e) {
|
|
35
|
-
console.error(`Error while parsing: ${e.message}`);
|
|
36
|
-
return {
|
|
37
|
-
pubkey,
|
|
38
|
-
account: data,
|
|
39
|
-
info: undefined,
|
|
40
|
-
};
|
|
41
|
-
}
|
|
42
|
-
};
|
|
43
|
-
const id = typeof key === 'string' ? key : key?.toBase58();
|
|
44
|
-
useAsync(async () => {
|
|
45
|
-
// Occassionally, dispose can get called while the cache promise is still going.
|
|
46
|
-
// In that case, we want to dispose immediately.
|
|
47
|
-
let shouldDisposeImmediately = false;
|
|
48
|
-
let disposeWatch = () => {
|
|
49
|
-
shouldDisposeImmediately = true;
|
|
50
|
-
};
|
|
51
|
-
if (!id || !cache) {
|
|
52
|
-
setState((s) => (!s.loading ? s : { loading: false }));
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
setState((s) => (s.loading ? s : { loading: true }));
|
|
56
|
-
let prevInfo = state.info;
|
|
57
|
-
cache
|
|
58
|
-
.searchAndWatch(id, parser ? parsedAccountBaseParser : undefined, isStatic)
|
|
59
|
-
.then(([acc, dispose]) => {
|
|
60
|
-
if (shouldDisposeImmediately) {
|
|
61
|
-
dispose();
|
|
62
|
-
shouldDisposeImmediately = false;
|
|
63
|
-
}
|
|
64
|
-
disposeWatch = dispose;
|
|
65
|
-
if (acc) {
|
|
66
|
-
try {
|
|
67
|
-
const nextInfo = mergePublicKeys(prevInfo, parser && parser(acc.pubkey, acc?.account));
|
|
68
|
-
prevInfo = nextInfo;
|
|
69
|
-
setState({
|
|
70
|
-
loading: false,
|
|
71
|
-
info: nextInfo,
|
|
72
|
-
account: acc.account,
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
catch (e) {
|
|
76
|
-
console.error(`Error while parsing: ${e.message}`);
|
|
77
|
-
setState({
|
|
78
|
-
loading: false,
|
|
79
|
-
info: undefined,
|
|
80
|
-
account: acc.account,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
setState((s) => (!s.loading ? s : { loading: false }));
|
|
86
|
-
}
|
|
87
|
-
})
|
|
88
|
-
.catch((e) => {
|
|
89
|
-
console.error(e);
|
|
90
|
-
setState((s) => (!s.loading ? s : { loading: false }));
|
|
91
|
-
});
|
|
92
|
-
const disposeEmitter = cache.emitter.onCache((e) => {
|
|
93
|
-
const event = e;
|
|
94
|
-
if (event.id === id) {
|
|
95
|
-
cache
|
|
96
|
-
.search(id, parser ? parsedAccountBaseParser : undefined)
|
|
97
|
-
.then((acc) => {
|
|
98
|
-
if (acc && acc.account !== state.account) {
|
|
99
|
-
try {
|
|
100
|
-
setState({
|
|
101
|
-
loading: false,
|
|
102
|
-
info: mergePublicKeys(state.info, parser && parser(acc.pubkey, acc.account)),
|
|
103
|
-
account: acc.account,
|
|
104
|
-
});
|
|
105
|
-
}
|
|
106
|
-
catch (err) {
|
|
107
|
-
console.error(`Error while parsing: ${err.message}`);
|
|
108
|
-
setState({
|
|
109
|
-
loading: false,
|
|
110
|
-
info: undefined,
|
|
111
|
-
account: acc.account,
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
return () => {
|
|
119
|
-
disposeEmitter();
|
|
120
|
-
setTimeout(disposeWatch, 30 * 1000); // Keep cached accounts around for 30s in case a rerender is causing reuse
|
|
121
|
-
};
|
|
122
|
-
}, [cache, id, !parser]); // only trigger on change to parser if it wasn't defined before.
|
|
123
|
-
return state;
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
*
|
|
127
|
-
* @param input
|
|
128
|
-
* @returns
|
|
129
|
-
*/
|
|
130
|
-
function isPureObject(input) {
|
|
131
|
-
return (input !== null &&
|
|
132
|
-
typeof input === 'object' &&
|
|
133
|
-
Object.getPrototypeOf(input).isPrototypeOf(Object));
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Updates to a solana account will contain new PublicKeys that are
|
|
137
|
-
* actually the same, just a new JS object. This will cause a lot of useMemo
|
|
138
|
-
* to fail.
|
|
139
|
-
*/
|
|
140
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
141
|
-
function mergePublicKeys(arg0, arg1) {
|
|
142
|
-
if (!isPureObject(arg1) || !arg1 || !arg0) {
|
|
143
|
-
return arg1;
|
|
144
|
-
}
|
|
145
|
-
return Object.entries(arg1).reduce((acc, [key, value]) => {
|
|
146
|
-
if (arg1[key] &&
|
|
147
|
-
arg1[key].equals &&
|
|
148
|
-
arg0[key] &&
|
|
149
|
-
arg1[key].equals(arg0[key])) {
|
|
150
|
-
acc[key] = arg0[key];
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
acc[key] = value;
|
|
154
|
-
}
|
|
155
|
-
return acc;
|
|
156
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
157
|
-
}, {});
|
|
158
|
-
}
|
|
159
|
-
//# sourceMappingURL=useAccount.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAccount.js","sourceRoot":"","sources":["../../../../src/hooks/useAccount.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { useContext } from "react";
|
|
2
|
-
import { AccountContext } from "../contexts/accountContext";
|
|
3
|
-
/**
|
|
4
|
-
* Get the account fetch cache to save on rcp calls. Generally, you want to use {@link useAccount}
|
|
5
|
-
* @returns
|
|
6
|
-
*/
|
|
7
|
-
export const useAccountFetchCache = () => {
|
|
8
|
-
return useContext(AccountContext);
|
|
9
|
-
};
|
|
10
|
-
//# sourceMappingURL=useAccountFetchCache.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAccountFetchCache.js","sourceRoot":"","sources":["../../../../src/hooks/useAccountFetchCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAE5D;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC;AACpC,CAAC,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Commitment, Connection } from "@solana/web3.js";
|
|
2
|
-
import { AccountFetchCache } from "@helium/spl-utils";
|
|
3
|
-
import React, { FC, ReactNode } from "react";
|
|
4
|
-
export interface IAccountProviderProps {
|
|
5
|
-
children: ReactNode;
|
|
6
|
-
connection: Connection;
|
|
7
|
-
commitment: Commitment;
|
|
8
|
-
extendConnection?: boolean;
|
|
9
|
-
}
|
|
10
|
-
export declare const AccountContext: React.Context<AccountFetchCache>;
|
|
11
|
-
export declare const AccountProvider: FC<IAccountProviderProps>;
|
|
12
|
-
//# sourceMappingURL=accountContext.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"accountContext.d.ts","sourceRoot":"","sources":["../../../../src/contexts/accountContext.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,EAEZ,EAAE,EACF,SAAS,EAGV,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,EAAE,UAAU,CAAC;IACvB,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,eAAO,MAAM,cAAc,kCAE1B,CAAC;AAEF,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,qBAAqB,CA2BrD,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
|
-
import { PublicKey, AccountInfo } from "@solana/web3.js";
|
|
3
|
-
import { TypedAccountParser } from "@helium/spl-utils";
|
|
4
|
-
export interface ParsedAccountBase {
|
|
5
|
-
pubkey: PublicKey;
|
|
6
|
-
account: AccountInfo<Buffer>;
|
|
7
|
-
info: any;
|
|
8
|
-
}
|
|
9
|
-
export interface UseAccountState<T> {
|
|
10
|
-
loading: boolean;
|
|
11
|
-
account?: AccountInfo<Buffer>;
|
|
12
|
-
info?: T;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* Generic hook to get a cached, auto updating, deserialized form of any Solana account. Massively saves on RPC usage by using
|
|
16
|
-
* the spl-utils accountFetchCache.
|
|
17
|
-
*
|
|
18
|
-
* @param key
|
|
19
|
-
* @param parser
|
|
20
|
-
* @param isStatic
|
|
21
|
-
* @returns
|
|
22
|
-
*/
|
|
23
|
-
export declare function useAccount<T>(key: null | undefined | PublicKey, parser?: TypedAccountParser<T>, isStatic?: boolean): UseAccountState<T>;
|
|
24
|
-
//# sourceMappingURL=useAccount.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAccount.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useAccount.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAGvD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,CAAA;IACjB,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC5B,IAAI,EAAE,GAAG,CAAC;CACX;AAED,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IAC7B,IAAI,CAAC,EAAE,CAAC,CAAA;CACT;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,GAAG,EAAE,IAAI,GAAG,SAAS,GAAG,SAAS,EACjC,MAAM,CAAC,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC9B,QAAQ,UAAQ,GACf,eAAe,CAAC,CAAC,CAAC,CA6HpB"}
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Get the account fetch cache to save on rcp calls. Generally, you want to use {@link useAccount}
|
|
3
|
-
* @returns
|
|
4
|
-
*/
|
|
5
|
-
export declare const useAccountFetchCache: () => import("@helium/spl-utils").AccountFetchCache;
|
|
6
|
-
//# sourceMappingURL=useAccountFetchCache.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useAccountFetchCache.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useAccountFetchCache.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,eAAO,MAAM,oBAAoB,qDAEhC,CAAC"}
|