@helium/helium-react-hooks 0.0.8
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/LICENSE +203 -0
- package/lib/cjs/contexts/accountContext.js +47 -0
- package/lib/cjs/contexts/accountContext.js.map +1 -0
- package/lib/cjs/hooks/useAccount.js +151 -0
- package/lib/cjs/hooks/useAccount.js.map +1 -0
- package/lib/cjs/hooks/useAccountFetchCache.js +14 -0
- package/lib/cjs/hooks/useAccountFetchCache.js.map +1 -0
- package/lib/cjs/hooks/useAssociatedTokenAccount.js +34 -0
- package/lib/cjs/hooks/useAssociatedTokenAccount.js.map +1 -0
- package/lib/cjs/hooks/useAssociatedTokenAddress.js +26 -0
- package/lib/cjs/hooks/useAssociatedTokenAddress.js.map +1 -0
- package/lib/cjs/hooks/useIdlAccount.js +24 -0
- package/lib/cjs/hooks/useIdlAccount.js.map +1 -0
- package/lib/cjs/hooks/useInterval.js +20 -0
- package/lib/cjs/hooks/useInterval.js.map +1 -0
- package/lib/cjs/hooks/useMint.js +20 -0
- package/lib/cjs/hooks/useMint.js.map +1 -0
- package/lib/cjs/hooks/useOwnedAmount.js +28 -0
- package/lib/cjs/hooks/useOwnedAmount.js.map +1 -0
- package/lib/cjs/hooks/useSolOwnedAmount.js +13 -0
- package/lib/cjs/hooks/useSolOwnedAmount.js.map +1 -0
- package/lib/cjs/hooks/useTokenAccount.js +13 -0
- package/lib/cjs/hooks/useTokenAccount.js.map +1 -0
- package/lib/cjs/index.js +27 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/esm/src/contexts/accountContext.js +20 -0
- package/lib/esm/src/contexts/accountContext.js.map +1 -0
- package/lib/esm/src/hooks/useAccount.js +147 -0
- package/lib/esm/src/hooks/useAccount.js.map +1 -0
- package/lib/esm/src/hooks/useAccountFetchCache.js +10 -0
- package/lib/esm/src/hooks/useAccountFetchCache.js.map +1 -0
- package/lib/esm/src/hooks/useAssociatedTokenAccount.js +30 -0
- package/lib/esm/src/hooks/useAssociatedTokenAccount.js.map +1 -0
- package/lib/esm/src/hooks/useAssociatedTokenAddress.js +13 -0
- package/lib/esm/src/hooks/useAssociatedTokenAddress.js.map +1 -0
- package/lib/esm/src/hooks/useIdlAccount.js +20 -0
- package/lib/esm/src/hooks/useIdlAccount.js.map +1 -0
- package/lib/esm/src/hooks/useInterval.js +16 -0
- package/lib/esm/src/hooks/useInterval.js.map +1 -0
- package/lib/esm/src/hooks/useMint.js +17 -0
- package/lib/esm/src/hooks/useMint.js.map +1 -0
- package/lib/esm/src/hooks/useOwnedAmount.js +24 -0
- package/lib/esm/src/hooks/useOwnedAmount.js.map +1 -0
- package/lib/esm/src/hooks/useSolOwnedAmount.js +9 -0
- package/lib/esm/src/hooks/useSolOwnedAmount.js.map +1 -0
- package/lib/esm/src/hooks/useTokenAccount.js +9 -0
- package/lib/esm/src/hooks/useTokenAccount.js.map +1 -0
- package/lib/esm/src/index.js +12 -0
- package/lib/esm/src/index.js.map +1 -0
- package/lib/esm/tsconfig.esm.tsbuildinfo +1 -0
- package/lib/types/src/contexts/accountContext.d.ts +12 -0
- package/lib/types/src/contexts/accountContext.d.ts.map +1 -0
- package/lib/types/src/hooks/useAccount.d.ts +24 -0
- package/lib/types/src/hooks/useAccount.d.ts.map +1 -0
- package/lib/types/src/hooks/useAccountFetchCache.d.ts +6 -0
- package/lib/types/src/hooks/useAccountFetchCache.d.ts.map +1 -0
- package/lib/types/src/hooks/useAssociatedTokenAccount.d.ts +16 -0
- package/lib/types/src/hooks/useAssociatedTokenAccount.d.ts.map +1 -0
- package/lib/types/src/hooks/useAssociatedTokenAddress.d.ts +8 -0
- package/lib/types/src/hooks/useAssociatedTokenAddress.d.ts.map +1 -0
- package/lib/types/src/hooks/useIdlAccount.d.ts +5 -0
- package/lib/types/src/hooks/useIdlAccount.d.ts.map +1 -0
- package/lib/types/src/hooks/useInterval.d.ts +2 -0
- package/lib/types/src/hooks/useInterval.d.ts.map +1 -0
- package/lib/types/src/hooks/useMint.d.ts +5 -0
- package/lib/types/src/hooks/useMint.d.ts.map +1 -0
- package/lib/types/src/hooks/useOwnedAmount.d.ts +7 -0
- package/lib/types/src/hooks/useOwnedAmount.d.ts.map +1 -0
- package/lib/types/src/hooks/useSolOwnedAmount.d.ts +6 -0
- package/lib/types/src/hooks/useSolOwnedAmount.d.ts.map +1 -0
- package/lib/types/src/hooks/useTokenAccount.d.ts +5 -0
- package/lib/types/src/hooks/useTokenAccount.d.ts.map +1 -0
- package/lib/types/src/index.d.ts +14 -0
- package/lib/types/src/index.d.ts.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTokenAccount.js","sourceRoot":"","sources":["../../../src/hooks/useTokenAccount.ts"],"names":[],"mappings":";;;AAAA,6CAA2D;AAC3D,iDAA2D;AAG3D,MAAM,MAAM,GAAG,CACb,MAAiB,EACjB,IAAyB,EACJ,EAAE;IACvB,OAAO,IAAA,yBAAa,EAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,SAAgB,eAAe,CAC7B,OAAqC;IAErC,OAAO,IAAA,uBAAU,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAJD,0CAIC"}
|
package/lib/cjs/index.js
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.useAssociatedTokenAddress = exports.useTokenAccount = exports.useSolOwnedAmount = exports.useOwnedAmount = exports.useMint = exports.useAssociatedTokenAccount = exports.useInterval = exports.useAccountFetchCache = exports.useIdlAccount = exports.AccountProvider = exports.AccountContext = exports.useAccount = void 0;
|
|
4
|
+
var useAccount_1 = require("./hooks/useAccount");
|
|
5
|
+
Object.defineProperty(exports, "useAccount", { enumerable: true, get: function () { return useAccount_1.useAccount; } });
|
|
6
|
+
var accountContext_1 = require("./contexts/accountContext");
|
|
7
|
+
Object.defineProperty(exports, "AccountContext", { enumerable: true, get: function () { return accountContext_1.AccountContext; } });
|
|
8
|
+
Object.defineProperty(exports, "AccountProvider", { enumerable: true, get: function () { return accountContext_1.AccountProvider; } });
|
|
9
|
+
var useIdlAccount_1 = require("./hooks/useIdlAccount");
|
|
10
|
+
Object.defineProperty(exports, "useIdlAccount", { enumerable: true, get: function () { return useIdlAccount_1.useIdlAccount; } });
|
|
11
|
+
var useAccountFetchCache_1 = require("./hooks/useAccountFetchCache");
|
|
12
|
+
Object.defineProperty(exports, "useAccountFetchCache", { enumerable: true, get: function () { return useAccountFetchCache_1.useAccountFetchCache; } });
|
|
13
|
+
var useInterval_1 = require("./hooks/useInterval");
|
|
14
|
+
Object.defineProperty(exports, "useInterval", { enumerable: true, get: function () { return useInterval_1.useInterval; } });
|
|
15
|
+
var useAssociatedTokenAccount_1 = require("./hooks/useAssociatedTokenAccount");
|
|
16
|
+
Object.defineProperty(exports, "useAssociatedTokenAccount", { enumerable: true, get: function () { return useAssociatedTokenAccount_1.useAssociatedTokenAccount; } });
|
|
17
|
+
var useMint_1 = require("./hooks/useMint");
|
|
18
|
+
Object.defineProperty(exports, "useMint", { enumerable: true, get: function () { return useMint_1.useMint; } });
|
|
19
|
+
var useOwnedAmount_1 = require("./hooks/useOwnedAmount");
|
|
20
|
+
Object.defineProperty(exports, "useOwnedAmount", { enumerable: true, get: function () { return useOwnedAmount_1.useOwnedAmount; } });
|
|
21
|
+
var useSolOwnedAmount_1 = require("./hooks/useSolOwnedAmount");
|
|
22
|
+
Object.defineProperty(exports, "useSolOwnedAmount", { enumerable: true, get: function () { return useSolOwnedAmount_1.useSolOwnedAmount; } });
|
|
23
|
+
var useTokenAccount_1 = require("./hooks/useTokenAccount");
|
|
24
|
+
Object.defineProperty(exports, "useTokenAccount", { enumerable: true, get: function () { return useTokenAccount_1.useTokenAccount; } });
|
|
25
|
+
var useAssociatedTokenAddress_1 = require("./hooks/useAssociatedTokenAddress");
|
|
26
|
+
Object.defineProperty(exports, "useAssociatedTokenAddress", { enumerable: true, get: function () { return useAssociatedTokenAddress_1.useAssociatedTokenAddress; } });
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,iDAAgD;AAAvC,wGAAA,UAAU,OAAA;AAEnB,4DAA4E;AAAnE,gHAAA,cAAc,OAAA;AAAE,iHAAA,eAAe,OAAA;AAExC,uDAAsD;AAA7C,8GAAA,aAAa,OAAA;AACtB,qEAAoE;AAA3D,4HAAA,oBAAoB,OAAA;AAC7B,mDAAkD;AAAzC,0GAAA,WAAW,OAAA;AACpB,+EAA8E;AAArE,sIAAA,yBAAyB,OAAA;AAClC,2CAA0C;AAAjC,kGAAA,OAAO,OAAA;AAChB,yDAAwD;AAA/C,gHAAA,cAAc,OAAA;AACvB,+DAA8D;AAArD,sHAAA,iBAAiB,OAAA;AAC1B,2DAA0D;AAAjD,kHAAA,eAAe,OAAA;AACxB,+EAA8E;AAArE,sIAAA,yBAAyB,OAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { useState, useEffect } from "react";
|
|
2
|
+
import { useAccountFetchCache } from "./useAccountFetchCache";
|
|
3
|
+
/**
|
|
4
|
+
* Generic hook to get a cached, auto updating, deserialized form of any Solana account. Massively saves on RPC usage by using
|
|
5
|
+
* the spl-utils accountFetchCache.
|
|
6
|
+
*
|
|
7
|
+
* @param key
|
|
8
|
+
* @param parser
|
|
9
|
+
* @param isStatic
|
|
10
|
+
* @returns
|
|
11
|
+
*/
|
|
12
|
+
export function useAccount(key, parser, isStatic = false // Set if the accounts data will never change, optimisation to lower websocket usage.
|
|
13
|
+
) {
|
|
14
|
+
const cache = useAccountFetchCache();
|
|
15
|
+
const [state, setState] = useState({
|
|
16
|
+
loading: true,
|
|
17
|
+
});
|
|
18
|
+
const parsedAccountBaseParser = (pubkey, data) => {
|
|
19
|
+
try {
|
|
20
|
+
const info = parser(pubkey, data);
|
|
21
|
+
return {
|
|
22
|
+
pubkey,
|
|
23
|
+
account: data,
|
|
24
|
+
info,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
catch (e) {
|
|
28
|
+
console.error("Error while parsing", e);
|
|
29
|
+
return {
|
|
30
|
+
pubkey,
|
|
31
|
+
account: data,
|
|
32
|
+
info: undefined,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const id = typeof key === "string" ? key : key?.toBase58();
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
// Occassionally, dispose can get called while the cache promise is still going.
|
|
39
|
+
// In that case, we want to dispose immediately.
|
|
40
|
+
let shouldDisposeImmediately = false;
|
|
41
|
+
let disposeWatch = () => {
|
|
42
|
+
shouldDisposeImmediately = true;
|
|
43
|
+
};
|
|
44
|
+
if (!id || !cache) {
|
|
45
|
+
setState({ loading: false });
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
setState({ loading: true });
|
|
50
|
+
}
|
|
51
|
+
let prevInfo = state.info;
|
|
52
|
+
cache
|
|
53
|
+
.searchAndWatch(id, parser ? parsedAccountBaseParser : undefined, isStatic)
|
|
54
|
+
.then(([acc, dispose]) => {
|
|
55
|
+
if (shouldDisposeImmediately) {
|
|
56
|
+
dispose();
|
|
57
|
+
shouldDisposeImmediately = false;
|
|
58
|
+
}
|
|
59
|
+
disposeWatch = dispose;
|
|
60
|
+
if (acc) {
|
|
61
|
+
try {
|
|
62
|
+
const nextInfo = mergePublicKeys(prevInfo, (parser && parser(acc.pubkey, acc.account)));
|
|
63
|
+
prevInfo = nextInfo;
|
|
64
|
+
setState({
|
|
65
|
+
loading: false,
|
|
66
|
+
info: nextInfo,
|
|
67
|
+
account: acc.account,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
catch (e) {
|
|
71
|
+
console.error("Error while parsing", e);
|
|
72
|
+
setState({
|
|
73
|
+
loading: false,
|
|
74
|
+
info: undefined,
|
|
75
|
+
account: acc.account,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
setState({ loading: false });
|
|
81
|
+
}
|
|
82
|
+
})
|
|
83
|
+
.catch((e) => {
|
|
84
|
+
console.error(e);
|
|
85
|
+
setState({ loading: false });
|
|
86
|
+
});
|
|
87
|
+
const disposeEmitter = cache.emitter.onCache((e) => {
|
|
88
|
+
const event = e;
|
|
89
|
+
if (event.id === id) {
|
|
90
|
+
cache
|
|
91
|
+
.search(id, parser ? parsedAccountBaseParser : undefined)
|
|
92
|
+
.then((acc) => {
|
|
93
|
+
if (acc && acc.account != state.account) {
|
|
94
|
+
try {
|
|
95
|
+
setState({
|
|
96
|
+
loading: false,
|
|
97
|
+
info: mergePublicKeys(state.info, parser && parser(acc.pubkey, acc.account)),
|
|
98
|
+
account: acc.account,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
catch (e) {
|
|
102
|
+
console.error("Error while parsing", e);
|
|
103
|
+
setState({
|
|
104
|
+
loading: false,
|
|
105
|
+
info: undefined,
|
|
106
|
+
account: acc.account,
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
return () => {
|
|
114
|
+
disposeEmitter();
|
|
115
|
+
setTimeout(disposeWatch, 30 * 1000); // Keep cached accounts around for 30s in case a rerender is causing reuse
|
|
116
|
+
};
|
|
117
|
+
}, [cache, id, !parser]); // only trigger on change to parser if it wasn't defined before.
|
|
118
|
+
return state;
|
|
119
|
+
}
|
|
120
|
+
function isPureObject(input) {
|
|
121
|
+
return (null !== input &&
|
|
122
|
+
typeof input === "object" &&
|
|
123
|
+
Object.getPrototypeOf(input).isPrototypeOf(Object));
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Updates to a solana account will contain new PublicKeys that are
|
|
127
|
+
* actually the same, just a new JS object. This will cause a lot of useMemo
|
|
128
|
+
* to fail.
|
|
129
|
+
*/
|
|
130
|
+
function mergePublicKeys(arg0, arg1) {
|
|
131
|
+
if (!isPureObject(arg1) || !arg1 || !arg0) {
|
|
132
|
+
return arg1;
|
|
133
|
+
}
|
|
134
|
+
return Object.entries(arg1).reduce((acc, [key, value]) => {
|
|
135
|
+
if (arg1[key] &&
|
|
136
|
+
arg1[key].equals &&
|
|
137
|
+
arg0[key] &&
|
|
138
|
+
arg1[key].equals(arg0[key])) {
|
|
139
|
+
acc[key] = arg0[key];
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
acc[key] = value;
|
|
143
|
+
}
|
|
144
|
+
return acc;
|
|
145
|
+
}, {});
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=useAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAccount.js","sourceRoot":"","sources":["../../../../src/hooks/useAccount.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
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
|
|
@@ -0,0 +1 @@
|
|
|
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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { useAssociatedTokenAddress } from "./useAssociatedTokenAddress";
|
|
3
|
+
import { useTokenAccount } from "./useTokenAccount";
|
|
4
|
+
/**
|
|
5
|
+
* Get the associcated token account for this wallet, or the account itself is this address is already an ata
|
|
6
|
+
*
|
|
7
|
+
* @param walletOrAta
|
|
8
|
+
* @param mint
|
|
9
|
+
* @returns
|
|
10
|
+
*/
|
|
11
|
+
export function useAssociatedTokenAccount(walletOrAta, mint) {
|
|
12
|
+
const { result: associatedTokenAddress, loading: loading } = useAssociatedTokenAddress(walletOrAta, mint);
|
|
13
|
+
const { info: associatedAccount, loading: loading2 } = useTokenAccount(associatedTokenAddress);
|
|
14
|
+
const { info: account, loading: loading3 } = useTokenAccount(associatedTokenAddress || undefined);
|
|
15
|
+
const result = useMemo(() => {
|
|
16
|
+
if (account?.mint === mint) {
|
|
17
|
+
// The passed value is the ata
|
|
18
|
+
return account;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
return associatedAccount;
|
|
22
|
+
}
|
|
23
|
+
}, [associatedAccount, account, mint]);
|
|
24
|
+
return {
|
|
25
|
+
associatedAccount: result,
|
|
26
|
+
loading: loading || loading2 || loading3,
|
|
27
|
+
associatedAccountKey: associatedTokenAddress,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=useAssociatedTokenAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAssociatedTokenAccount.js","sourceRoot":"","sources":["../../../../src/hooks/useAssociatedTokenAccount.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAQpD;;;;;;GAMG;AACH,MAAM,UAAU,yBAAyB,CACvC,WAAyC,EACzC,IAAkC;IAElC,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,OAAO,EAAE,OAAO,EAAE,GACxD,yBAAyB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,eAAe,CACpE,sBAAsB,CACvB,CAAC;IACF,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,eAAe,CAC1D,sBAAsB,IAAI,SAAS,CACpC,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,IAAI,OAAO,EAAE,IAAI,KAAK,IAAI,EAAE;YAC1B,8BAA8B;YAC9B,OAAO,OAAO,CAAC;SAChB;aAAM;YACL,OAAO,iBAAiB,CAAC;SAC1B;IACH,CAAC,EAAE,CAAC,iBAAiB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;IAEvC,OAAO;QACL,iBAAiB,EAAE,MAAM;QACzB,OAAO,EAAE,OAAO,IAAI,QAAQ,IAAI,QAAQ;QACxC,oBAAoB,EAAE,sBAAsB;KAC7C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { getAssociatedTokenAddress, } from "@solana/spl-token";
|
|
2
|
+
import { useAsync } from "react-async-hook";
|
|
3
|
+
const fetch = async (wallet, mint) => {
|
|
4
|
+
if (!wallet || !mint) {
|
|
5
|
+
return undefined;
|
|
6
|
+
}
|
|
7
|
+
return getAssociatedTokenAddress(mint, wallet, true);
|
|
8
|
+
};
|
|
9
|
+
export function useAssociatedTokenAddress(wallet, mint) {
|
|
10
|
+
const { result, loading } = useAsync(fetch, [wallet, mint]);
|
|
11
|
+
return { result, loading };
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=useAssociatedTokenAddress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAssociatedTokenAddress.js","sourceRoot":"","sources":["../../../../src/hooks/useAssociatedTokenAddress.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAM5C,MAAM,KAAK,GAAG,KAAK,EACjB,MAAoC,EACpC,IAAkC,EACF,EAAE;IAClC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE;QACpB,OAAO,SAAS,CAAC;KAClB;IAED,OAAO,yBAAyB,CAC9B,IAAI,EACJ,MAAM,EACN,IAAI,CACL,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,yBAAyB,CACvC,MAAoC,EACpC,IAAkC;IAElC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAE5D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { useAccount } from "./useAccount";
|
|
2
|
+
import { BorshAccountsCoder } from "@project-serum/anchor";
|
|
3
|
+
import { useMemo } from "react";
|
|
4
|
+
export function useIdlAccount(key, idl, type) {
|
|
5
|
+
const parser = useMemo(() => {
|
|
6
|
+
return (pubkey, data) => {
|
|
7
|
+
try {
|
|
8
|
+
const coder = new BorshAccountsCoder(idl);
|
|
9
|
+
const decoded = coder.decode(type, data.data);
|
|
10
|
+
decoded.pubkey = pubkey;
|
|
11
|
+
return decoded;
|
|
12
|
+
}
|
|
13
|
+
catch (e) {
|
|
14
|
+
console.error(e);
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
}, [idl, type]);
|
|
18
|
+
return useAccount(key, parser);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=useIdlAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useIdlAccount.js","sourceRoot":"","sources":["../../../../src/hooks/useIdlAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,UAAU,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAoB,MAAM,uBAAuB,CAAC;AAE7E,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAGhC,MAAM,UAAU,aAAa,CAC3B,GAAc,EACd,GAAQ,EACR,IAAO;IAEP,MAAM,MAAM,GAA4C,OAAO,CAAC,GAAG,EAAE;QACnE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE;YACtB,IAAI;gBACF,MAAM,KAAK,GAAG,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC9C,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;gBACxB,OAAO,OAAO,CAAC;aAChB;YAAC,OAAO,CAAM,EAAE;gBACf,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAClB;QACH,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;IAChB,OAAO,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { useRef, useEffect } from "react";
|
|
2
|
+
export function useInterval(callback, delay, deps = []) {
|
|
3
|
+
const savedCallbackRef = useRef();
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
savedCallbackRef.current = callback;
|
|
6
|
+
}, [callback]);
|
|
7
|
+
useEffect(() => {
|
|
8
|
+
const handler = (...args) => savedCallbackRef.current(...args);
|
|
9
|
+
if (delay !== null) {
|
|
10
|
+
handler();
|
|
11
|
+
const intervalId = setInterval(handler, delay);
|
|
12
|
+
return () => clearInterval(intervalId);
|
|
13
|
+
}
|
|
14
|
+
}, [delay, ...deps]);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=useInterval.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useInterval.js","sourceRoot":"","sources":["../../../../src/hooks/useInterval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1C,MAAM,UAAU,WAAW,CACzB,QAAkC,EAClC,KAAoB,EACpB,OAAc,EAAE;IAEhB,MAAM,gBAAgB,GAAG,MAAM,EAA4B,CAAC;IAE5D,SAAS,CAAC,GAAG,EAAE;QACb,gBAAgB,CAAC,OAAO,GAAG,QAAQ,CAAC;IACtC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,OAAO,GAAG,CAAC,GAAG,IAAW,EAAE,EAAE,CAAC,gBAAgB,CAAC,OAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;QAEvE,IAAI,KAAK,KAAK,IAAI,EAAE;YAClB,OAAO,EAAE,CAAC;YACV,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YAC/C,OAAO,GAAG,EAAE,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;SACxC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { unpackMint } from "@solana/spl-token";
|
|
2
|
+
import { useAccount } from "./useAccount";
|
|
3
|
+
export const MintParser = (pubKey, info) => {
|
|
4
|
+
const data = unpackMint(pubKey, info);
|
|
5
|
+
const details = {
|
|
6
|
+
pubkey: pubKey,
|
|
7
|
+
account: {
|
|
8
|
+
...info,
|
|
9
|
+
},
|
|
10
|
+
info: data,
|
|
11
|
+
};
|
|
12
|
+
return details;
|
|
13
|
+
};
|
|
14
|
+
export function useMint(key) {
|
|
15
|
+
return useAccount(key, MintParser);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=useMint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMint.js","sourceRoot":"","sources":["../../../../src/hooks/useMint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAqB,UAAU,EAAE,MAAM,cAAc,CAAC;AAE7D,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,MAAiB,EAAE,IAAyB,EAAE,EAAE;IACzE,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAEtC,MAAM,OAAO,GAAG;QACd,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,GAAG,IAAI;SACR;QACD,IAAI,EAAE,IAAI;KACU,CAAC;IAEvB,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,UAAU,OAAO,CAAC,GAAiC;IACvD,OAAO,UAAU,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { NATIVE_MINT } from "@solana/spl-token";
|
|
2
|
+
import { useMemo } from "react";
|
|
3
|
+
import { useAssociatedTokenAccount } from "./useAssociatedTokenAccount";
|
|
4
|
+
import { useMint } from "./useMint";
|
|
5
|
+
import { useSolOwnedAmount } from "./useSolOwnedAmount";
|
|
6
|
+
export function useOwnedAmount(wallet, mint) {
|
|
7
|
+
const { amount: solOwnedAmount } = useSolOwnedAmount(wallet || undefined);
|
|
8
|
+
const { associatedAccount, loading: loadingAssoc } = useAssociatedTokenAccount(wallet, mint);
|
|
9
|
+
const { info: mintAcc, loading: loadingMint } = useMint(mint);
|
|
10
|
+
const amount = useMemo(() => {
|
|
11
|
+
if (mint?.equals(NATIVE_MINT)) {
|
|
12
|
+
return solOwnedAmount;
|
|
13
|
+
}
|
|
14
|
+
else if (associatedAccount) {
|
|
15
|
+
return associatedAccount.amount;
|
|
16
|
+
}
|
|
17
|
+
}, [solOwnedAmount, associatedAccount?.amount]);
|
|
18
|
+
return {
|
|
19
|
+
loading: loadingAssoc || loadingMint,
|
|
20
|
+
amount,
|
|
21
|
+
decimals: mintAcc?.info.decimals,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=useOwnedAmount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOwnedAmount.js","sourceRoot":"","sources":["../../../../src/hooks/useOwnedAmount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,UAAU,cAAc,CAC5B,MAAoC,EACpC,IAAkC;IAElC,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,iBAAiB,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;IAC1E,MAAM,EAAE,iBAAiB,EAAE,OAAO,EAAE,YAAY,EAAE,GAChD,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE;QAC1B,IAAI,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,EAAE;YAC7B,OAAO,cAAc,CAAA;SACtB;aAAM,IAAI,iBAAiB,EAAE;YAC5B,OAAO,iBAAiB,CAAC,MAAM,CAAA;SAChC;IACH,CAAC,EAAE,CAAC,cAAc,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC,CAAC;IAChD,OAAO;QACL,OAAO,EAAE,YAAY,IAAI,WAAW;QACpC,MAAM;QACN,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ;KACjC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { useAccount } from "./useAccount";
|
|
2
|
+
export function useSolOwnedAmount(ownerPublicKey) {
|
|
3
|
+
const { info: lamports, loading } = useAccount(ownerPublicKey, (_, account) => BigInt(account.lamports));
|
|
4
|
+
return {
|
|
5
|
+
amount: lamports,
|
|
6
|
+
loading,
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=useSolOwnedAmount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSolOwnedAmount.js","sourceRoot":"","sources":["../../../../src/hooks/useSolOwnedAmount.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,iBAAiB,CAAC,cAA0B;IAI1D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,UAAU,CAC5C,cAAc,EACd,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CACzC,CAAC;IAEF,OAAO;QACL,MAAM,EAAE,QAAQ;QAChB,OAAO;KACR,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { useAccount } from "./useAccount";
|
|
2
|
+
import { unpackAccount } from "@solana/spl-token";
|
|
3
|
+
const parser = (pubkey, acct) => {
|
|
4
|
+
return unpackAccount(pubkey, acct);
|
|
5
|
+
};
|
|
6
|
+
export function useTokenAccount(address) {
|
|
7
|
+
return useAccount(address, parser);
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=useTokenAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTokenAccount.js","sourceRoot":"","sources":["../../../../src/hooks/useTokenAccount.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAW,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAG3D,MAAM,MAAM,GAAG,CACb,MAAiB,EACjB,IAAyB,EACJ,EAAE;IACvB,OAAO,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,UAAU,eAAe,CAC7B,OAAqC;IAErC,OAAO,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { useAccount } from "./hooks/useAccount";
|
|
2
|
+
export { AccountContext, AccountProvider } from "./contexts/accountContext";
|
|
3
|
+
export { useIdlAccount } from "./hooks/useIdlAccount";
|
|
4
|
+
export { useAccountFetchCache } from "./hooks/useAccountFetchCache";
|
|
5
|
+
export { useInterval } from "./hooks/useInterval";
|
|
6
|
+
export { useAssociatedTokenAccount } from "./hooks/useAssociatedTokenAccount";
|
|
7
|
+
export { useMint } from "./hooks/useMint";
|
|
8
|
+
export { useOwnedAmount } from "./hooks/useOwnedAmount";
|
|
9
|
+
export { useSolOwnedAmount } from "./hooks/useSolOwnedAmount";
|
|
10
|
+
export { useTokenAccount } from "./hooks/useTokenAccount";
|
|
11
|
+
export { useAssociatedTokenAddress } from "./hooks/useAssociatedTokenAddress";
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC"}
|