@gurge/sdk-react-native 0.3.71 → 0.3.74
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/_virtual/_rolldown/runtime.mjs +11 -2
- package/common/src/crypto/babyJub.cjs +1 -1
- package/common/src/crypto/babyJub.mjs +7 -6
- package/common/src/crypto/eddsa.cjs +1 -1
- package/common/src/crypto/eddsa.mjs +7 -6
- package/common/src/crypto/poseidon.cjs +1 -1
- package/common/src/crypto/poseidon.mjs +13 -13
- package/common/src/data-structures/IndexedDB/activity-db.cjs +1 -1
- package/common/src/data-structures/IndexedDB/activity-db.mjs +38 -38
- package/common/src/data-structures/IndexedDB/balances-db.cjs +1 -1
- package/common/src/data-structures/IndexedDB/balances-db.mjs +18 -16
- package/common/src/data-structures/IndexedDB/contact-db.cjs +1 -1
- package/common/src/data-structures/IndexedDB/contact-db.mjs +16 -14
- package/common/src/data-structures/IndexedDB/key-val-store.cjs +1 -1
- package/common/src/data-structures/IndexedDB/key-val-store.mjs +12 -12
- package/common/src/data-structures/IndexedDB/pay-activity-db.cjs +1 -1
- package/common/src/data-structures/IndexedDB/pay-activity-db.mjs +10 -8
- package/common/src/data-structures/IndexedDB/signatures-db.cjs +1 -1
- package/common/src/data-structures/IndexedDB/signatures-db.mjs +23 -21
- package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.cjs +1 -1
- package/common/src/data-structures/TokenDBs/AlchemyPublicTokensDB.mjs +32 -31
- package/common/src/data-structures/TokenDBs/ArcPublicTokensDB.cjs +1 -1
- package/common/src/data-structures/TokenDBs/ArcPublicTokensDB.mjs +25 -25
- package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.cjs +1 -1
- package/common/src/data-structures/TokenDBs/EventsPublicTokensDB.mjs +47 -46
- package/common/src/data-structures/TokenDBs/PrivateTokensDB.cjs +1 -1
- package/common/src/data-structures/TokenDBs/PrivateTokensDB.mjs +20 -20
- package/common/src/data-structures/TokenDBs/TempoPublicTokensDB.cjs +1 -1
- package/common/src/data-structures/TokenDBs/TempoPublicTokensDB.mjs +19 -19
- package/common/src/data-structures/TokenDBs/TronPublicTokensDB.cjs +1 -1
- package/common/src/data-structures/TokenDBs/TronPublicTokensDB.mjs +19 -19
- package/common/src/data-structures/TokenDBs/token-visibility-db.cjs +1 -1
- package/common/src/data-structures/TokenDBs/token-visibility-db.mjs +45 -44
- package/common/src/functions/snarkjs/verifyCommitmentValidationData.cjs +1 -1
- package/common/src/functions/snarkjs/verifyCommitmentValidationData.mjs +4 -1
- package/common/src/functions/utils/cacheFunctions.cjs +1 -1
- package/common/src/functions/utils/cacheFunctions.mjs +13 -13
- package/common/src/functions/utils/ipfs.cjs +1 -1
- package/common/src/functions/utils/ipfs.mjs +3 -1
- package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
- package/package.json +1 -1
- package/shims/circomlibjs-hinkal-fork.cjs +14 -0
- package/shims/circomlibjs-hinkal-fork.mjs +3 -0
- package/shims/circomlibjs.cjs +15 -0
- package/shims/circomlibjs.mjs +3 -0
- package/shims/constants.cjs +7 -0
- package/shims/constants.mjs +3 -0
- package/shims/crypto.cjs +102 -0
- package/shims/crypto.mjs +3 -0
- package/shims/ffjavascript.cjs +5 -0
- package/shims/ffjavascript.mjs +3 -0
- package/shims/globals.cjs +15 -0
- package/shims/globals.mjs +3 -0
- package/shims/idb-keyval.cjs +75 -0
- package/shims/idb-keyval.mjs +3 -0
- package/shims/multiformats.cjs +1 -0
- package/shims/multiformats.mjs +3 -0
- package/shims/os.cjs +7 -0
- package/shims/os.mjs +3 -0
- package/shims/readline.cjs +6 -0
- package/shims/readline.mjs +3 -0
- package/shims/snarkjs.cjs +21 -0
- package/shims/snarkjs.mjs +3 -0
- package/shims/url.cjs +5 -0
- package/shims/url.mjs +3 -0
- package/shims/web-worker.cjs +7 -0
- package/shims/web-worker.mjs +3 -0
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import { lowerCaseIncludes as e } from "../../functions/utils/caseInsensitive.utils.mjs";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
2
|
+
import { require_idb_keyval as t } from "../../../../shims/idb-keyval.mjs";
|
|
3
|
+
import { StorageKeys as n } from "../../types/cache.types.mjs";
|
|
4
|
+
import { API as r } from "../../API/API.mjs";
|
|
5
|
+
import { getStateKey as i } from "../../functions/utils/string.utils.mjs";
|
|
6
|
+
import { tokenVisibilityStorage as a } from "./token-visibility-db.mjs";
|
|
7
|
+
import { getErc20TokensForChainAPI as o, overlayTokensWithRegistryData as s } from "../../functions/utils/erc20tokenFunctions.mjs";
|
|
8
|
+
import { getPublicBalanceByTokenAddress as c } from "../../functions/utils/publicBalance.utils.mjs";
|
|
9
9
|
//#region common/src/data-structures/TokenDBs/TempoPublicTokensDB.ts
|
|
10
|
-
var u = class {
|
|
10
|
+
var l = t(), u = class {
|
|
11
11
|
fetchedTokens = {};
|
|
12
|
-
async getPublicTokens(e,
|
|
13
|
-
let
|
|
14
|
-
return
|
|
12
|
+
async getPublicTokens(e, t) {
|
|
13
|
+
let r = i(e, t);
|
|
14
|
+
return s((await (0, l.get)(n.TEMPO_PUBLIC_TOKENS))?.[r] || [], t);
|
|
15
15
|
}
|
|
16
16
|
async getFetchedTokens(e, t) {
|
|
17
|
-
let n =
|
|
18
|
-
return
|
|
17
|
+
let n = i(e, t);
|
|
18
|
+
return s(this.fetchedTokens[n] || [], t);
|
|
19
19
|
}
|
|
20
|
-
async fetchAndUpdatePublicTokens(
|
|
21
|
-
let s =
|
|
20
|
+
async fetchAndUpdatePublicTokens(t, o) {
|
|
21
|
+
let s = i(t, o), c = await this.getHeldTokenAddresses(t, o);
|
|
22
22
|
if (!c.length) return;
|
|
23
|
-
let u = (await
|
|
24
|
-
await l(
|
|
23
|
+
let u = (await r.tokensInfoCall(o, c)).filter((e) => !!e), d = await a.hideSpamsAndFetchHiddenTokensAddresses(o, u), f = u.filter((t) => !e(d, t.erc20TokenAddress));
|
|
24
|
+
await (0, l.update)(n.TEMPO_PUBLIC_TOKENS, (e = {}) => {
|
|
25
25
|
let t = {
|
|
26
26
|
...e,
|
|
27
27
|
[s]: f
|
|
@@ -30,8 +30,8 @@ var u = class {
|
|
|
30
30
|
});
|
|
31
31
|
}
|
|
32
32
|
async getHeldTokenAddresses(e, t) {
|
|
33
|
-
let n = await
|
|
34
|
-
let r = await
|
|
33
|
+
let n = await o(t), r = await Promise.all(n.map(async (n) => {
|
|
34
|
+
let r = await c(t, e, n.erc20TokenAddress);
|
|
35
35
|
return r && r > 0n ? n.erc20TokenAddress : null;
|
|
36
36
|
}));
|
|
37
37
|
return Array.from(new Set(r.filter((e) => !!e)));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const e=require(`../../constants/protocol.constants.cjs`),t=require(`../../functions/utils/caseInsensitive.utils.cjs`),n=require(`../../../../shims/idb-keyval.cjs`),r=require(`../../types/cache.types.cjs`),i=require(`../http/HttpClient.cjs`);require(`../http/index.cjs`);const a=require(`../../functions/utils/tron.utils.cjs`),o=require(`../../API/API.cjs`),s=require(`../../functions/utils/string.utils.cjs`),c=require(`./token-visibility-db.cjs`),l=require(`../../functions/utils/erc20tokenFunctions.cjs`);var u=n.default,d=class{fetchedTokens={};async getPublicTokens(e,t){let n=s.getStateKey(e,t);return l.overlayTokensWithRegistryData((await(0,u.get)(r.StorageKeys.TRON_PUBLIC_TOKENS))?.[n]||[],t)}async getFetchedTokens(e,t){let n=s.getStateKey(e,t);return l.overlayTokensWithRegistryData(this.fetchedTokens[n]||[],t)}async fetchAndUpdatePublicTokens(e,n){let i=s.getStateKey(e,n),a=await this.getHeldTokenAddresses(e,n);if(!a.length)return;let l=(await o.API.tokensInfoCall(n,a)).filter(e=>!!e),d=await c.tokenVisibilityStorage.hideSpamsAndFetchHiddenTokensAddresses(n,l),f=l.filter(e=>!t.lowerCaseIncludes(d,e.erc20TokenAddress));await(0,u.update)(r.StorageKeys.TRON_PUBLIC_TOKENS,(e={})=>{let t={...e,[i]:f};return this.fetchedTokens=t,t})}async getHeldTokenAddresses(t,n){let r=a.toTronBase58IfHex(t),o=`${a.getTronWalletRpcUrl(n)}/v1/accounts/${r}`,s=(await i.httpClient.get(o))?.data?.[0];if(!s)return[];let c=[];return s.balance&&s.balance>0&&c.push(e.zeroAddress),(s.trc20??[]).forEach(e=>{Object.entries(e).forEach(([e,t])=>{BigInt(t)>0n&&c.push(a.addressToHexFormat(e))})}),Array.from(new Set(c))}},f=new d;exports.TronPublicTokensDB=d,exports.tronPublicTokensDB=f;
|
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
import { zeroAddress as e } from "../../constants/protocol.constants.mjs";
|
|
2
2
|
import { lowerCaseIncludes as t } from "../../functions/utils/caseInsensitive.utils.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { require_idb_keyval as n } from "../../../../shims/idb-keyval.mjs";
|
|
4
|
+
import { StorageKeys as r } from "../../types/cache.types.mjs";
|
|
5
|
+
import { httpClient as i } from "../http/HttpClient.mjs";
|
|
5
6
|
import "../http/index.mjs";
|
|
6
|
-
import { addressToHexFormat as
|
|
7
|
-
import { API as
|
|
8
|
-
import { getStateKey as
|
|
9
|
-
import { tokenVisibilityStorage as
|
|
10
|
-
import { overlayTokensWithRegistryData as
|
|
11
|
-
import { get as d, update as f } from "idb-keyval";
|
|
7
|
+
import { addressToHexFormat as a, getTronWalletRpcUrl as o, toTronBase58IfHex as s } from "../../functions/utils/tron.utils.mjs";
|
|
8
|
+
import { API as c } from "../../API/API.mjs";
|
|
9
|
+
import { getStateKey as l } from "../../functions/utils/string.utils.mjs";
|
|
10
|
+
import { tokenVisibilityStorage as u } from "./token-visibility-db.mjs";
|
|
11
|
+
import { overlayTokensWithRegistryData as d } from "../../functions/utils/erc20tokenFunctions.mjs";
|
|
12
12
|
//#region common/src/data-structures/TokenDBs/TronPublicTokensDB.ts
|
|
13
|
-
var p = class {
|
|
13
|
+
var f = n(), p = class {
|
|
14
14
|
fetchedTokens = {};
|
|
15
15
|
async getPublicTokens(e, t) {
|
|
16
|
-
let
|
|
17
|
-
return
|
|
16
|
+
let n = l(e, t);
|
|
17
|
+
return d((await (0, f.get)(r.TRON_PUBLIC_TOKENS))?.[n] || [], t);
|
|
18
18
|
}
|
|
19
19
|
async getFetchedTokens(e, t) {
|
|
20
|
-
let n =
|
|
21
|
-
return
|
|
20
|
+
let n = l(e, t);
|
|
21
|
+
return d(this.fetchedTokens[n] || [], t);
|
|
22
22
|
}
|
|
23
|
-
async fetchAndUpdatePublicTokens(e,
|
|
24
|
-
let i =
|
|
23
|
+
async fetchAndUpdatePublicTokens(e, n) {
|
|
24
|
+
let i = l(e, n), a = await this.getHeldTokenAddresses(e, n);
|
|
25
25
|
if (!a.length) return;
|
|
26
|
-
let o = (await
|
|
27
|
-
await f(
|
|
26
|
+
let o = (await c.tokensInfoCall(n, a)).filter((e) => !!e), s = await u.hideSpamsAndFetchHiddenTokensAddresses(n, o), d = o.filter((e) => !t(s, e.erc20TokenAddress));
|
|
27
|
+
await (0, f.update)(r.TRON_PUBLIC_TOKENS, (e = {}) => {
|
|
28
28
|
let t = {
|
|
29
29
|
...e,
|
|
30
30
|
[i]: d
|
|
@@ -33,12 +33,12 @@ var p = class {
|
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
35
|
async getHeldTokenAddresses(t, n) {
|
|
36
|
-
let
|
|
36
|
+
let r = s(t), c = `${o(n)}/v1/accounts/${r}`, l = (await i.get(c))?.data?.[0];
|
|
37
37
|
if (!l) return [];
|
|
38
38
|
let u = [];
|
|
39
39
|
return l.balance && l.balance > 0 && u.push(e), (l.trc20 ?? []).forEach((e) => {
|
|
40
40
|
Object.entries(e).forEach(([e, t]) => {
|
|
41
|
-
BigInt(t) > 0n && u.push(
|
|
41
|
+
BigInt(t) > 0n && u.push(a(e));
|
|
42
42
|
});
|
|
43
43
|
}), Array.from(new Set(u));
|
|
44
44
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(
|
|
1
|
+
const e=require(`../../../../shims/idb-keyval.cjs`),t=require(`../../error-handling/logger.cjs`),n=require(`../../functions/utils/token-check.utils.cjs`);var r=e.default,i=new class{STORAGE_KEY=`hiddenTokenAddresses`;UNHIDDEN_SPAM_KEY=`unhiddenSpamTokens`;async getHiddenTokens(e){try{return(await(0,r.get)(this.STORAGE_KEY))?.[e]||[]}catch(e){return t.Logger.error(`Error retrieving hidden tokens`,e),[]}}async getHiddenTokenAddresses(e){try{return(await this.getHiddenTokens(e)).map(({erc20TokenAddress:e})=>e.toLowerCase())}catch(e){return t.Logger.error(`Error retrieving hidden tokens`,e),[]}}async filterOutHiddenTokens(e,t){let r=await this.getHiddenTokens(e);return t.filter(e=>!r.some(t=>n.isSameERC20Token(t,e)))}async hideToken(e){try{await(0,r.update)(this.STORAGE_KEY,t=>{let r=t??{},{chainId:i}=e;return r[i]||(r[i]=[]),r[i].some(t=>n.isSameERC20Token(t,e))||r[i].push(e),r}),e.isSpam&&await this.deleteUnhiddenSpamToken(e)}catch(e){t.Logger.error(`Error hiding token`,e)}}async showToken(e){try{await(0,r.update)(this.STORAGE_KEY,t=>{let{chainId:r}=e,i=t??{};return i[r]||(i[r]=[]),i[r]=i[r].filter(t=>!n.isSameERC20Token(t,e)),i}),e.isSpam&&await this.storeUnhiddenSpamToken(e)}catch(e){t.Logger.error(`Error showing token`,e)}}async storeUnhiddenSpamToken(e){let{chainId:i}=e;try{await(0,r.update)(this.UNHIDDEN_SPAM_KEY,t=>{let r=t??{};return r[i]||(r[i]=[]),r[i].some(t=>n.isSameERC20Token(t,e))||r[i].push(e),r})}catch(e){t.Logger.error(`Error storing unhidden spam token`,e)}}async deleteUnhiddenSpamToken(e){await(0,r.update)(this.UNHIDDEN_SPAM_KEY,t=>{let{chainId:r}=e,i=t??{};return i[r]=i[r]?.filter(t=>!n.isSameERC20Token(t,e)),i})}async getUnhiddenSpamTokens(e){try{return(await(0,r.get)(this.UNHIDDEN_SPAM_KEY))?.[e]||[]}catch(e){return t.Logger.error(`Error retrieving unhidden spam tokens`,e),[]}}async hideUnnecessarySpamTokens(e,t){let r=await this.getUnhiddenSpamTokens(e),i=t.filter(e=>e.isSpam?!r.some(t=>n.isSameERC20Token(t,e)):!1);await Promise.all(i.map(e=>this.hideToken(e)))}async hideSpamsAndFetchHiddenTokensAddresses(e,t){return await this.hideUnnecessarySpamTokens(e,t),this.getHiddenTokenAddresses(e)}};exports.tokenVisibilityStorage=i;
|
|
@@ -1,73 +1,74 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
|
|
1
|
+
import { require_idb_keyval as e } from "../../../../shims/idb-keyval.mjs";
|
|
2
|
+
import { Logger as t } from "../../error-handling/logger.mjs";
|
|
3
|
+
import { isSameERC20Token as n } from "../../functions/utils/token-check.utils.mjs";
|
|
4
|
+
//#region common/src/data-structures/TokenDBs/token-visibility-db.ts
|
|
5
|
+
var r = e(), i = new class {
|
|
5
6
|
STORAGE_KEY = "hiddenTokenAddresses";
|
|
6
7
|
UNHIDDEN_SPAM_KEY = "unhiddenSpamTokens";
|
|
7
|
-
async getHiddenTokens(
|
|
8
|
+
async getHiddenTokens(e) {
|
|
8
9
|
try {
|
|
9
|
-
return (await
|
|
10
|
-
} catch (
|
|
11
|
-
return
|
|
10
|
+
return (await (0, r.get)(this.STORAGE_KEY))?.[e] || [];
|
|
11
|
+
} catch (e) {
|
|
12
|
+
return t.error("Error retrieving hidden tokens", e), [];
|
|
12
13
|
}
|
|
13
14
|
}
|
|
14
|
-
async getHiddenTokenAddresses(
|
|
15
|
+
async getHiddenTokenAddresses(e) {
|
|
15
16
|
try {
|
|
16
|
-
return (await this.getHiddenTokens(
|
|
17
|
-
} catch (
|
|
18
|
-
return
|
|
17
|
+
return (await this.getHiddenTokens(e)).map(({ erc20TokenAddress: e }) => e.toLowerCase());
|
|
18
|
+
} catch (e) {
|
|
19
|
+
return t.error("Error retrieving hidden tokens", e), [];
|
|
19
20
|
}
|
|
20
21
|
}
|
|
21
|
-
async filterOutHiddenTokens(e,
|
|
22
|
+
async filterOutHiddenTokens(e, t) {
|
|
22
23
|
let r = await this.getHiddenTokens(e);
|
|
23
|
-
return
|
|
24
|
+
return t.filter((e) => !r.some((t) => n(t, e)));
|
|
24
25
|
}
|
|
25
|
-
async hideToken(
|
|
26
|
+
async hideToken(e) {
|
|
26
27
|
try {
|
|
27
|
-
await r(this.STORAGE_KEY, (
|
|
28
|
-
let r =
|
|
29
|
-
return r[i] || (r[i] = []), r[i].some((
|
|
30
|
-
}),
|
|
31
|
-
} catch (
|
|
32
|
-
|
|
28
|
+
await (0, r.update)(this.STORAGE_KEY, (t) => {
|
|
29
|
+
let r = t ?? {}, { chainId: i } = e;
|
|
30
|
+
return r[i] || (r[i] = []), r[i].some((t) => n(t, e)) || r[i].push(e), r;
|
|
31
|
+
}), e.isSpam && await this.deleteUnhiddenSpamToken(e);
|
|
32
|
+
} catch (e) {
|
|
33
|
+
t.error("Error hiding token", e);
|
|
33
34
|
}
|
|
34
35
|
}
|
|
35
|
-
async showToken(
|
|
36
|
+
async showToken(e) {
|
|
36
37
|
try {
|
|
37
|
-
await r(this.STORAGE_KEY, (
|
|
38
|
-
let { chainId: r } =
|
|
39
|
-
return i[r] || (i[r] = []), i[r] = i[r].filter((
|
|
40
|
-
}),
|
|
41
|
-
} catch (
|
|
42
|
-
|
|
38
|
+
await (0, r.update)(this.STORAGE_KEY, (t) => {
|
|
39
|
+
let { chainId: r } = e, i = t ?? {};
|
|
40
|
+
return i[r] || (i[r] = []), i[r] = i[r].filter((t) => !n(t, e)), i;
|
|
41
|
+
}), e.isSpam && await this.storeUnhiddenSpamToken(e);
|
|
42
|
+
} catch (e) {
|
|
43
|
+
t.error("Error showing token", e);
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
|
-
async storeUnhiddenSpamToken(
|
|
46
|
-
let { chainId: i } =
|
|
46
|
+
async storeUnhiddenSpamToken(e) {
|
|
47
|
+
let { chainId: i } = e;
|
|
47
48
|
try {
|
|
48
|
-
await r(this.UNHIDDEN_SPAM_KEY, (
|
|
49
|
-
let r =
|
|
50
|
-
return r[i] || (r[i] = []), r[i].some((
|
|
49
|
+
await (0, r.update)(this.UNHIDDEN_SPAM_KEY, (t) => {
|
|
50
|
+
let r = t ?? {};
|
|
51
|
+
return r[i] || (r[i] = []), r[i].some((t) => n(t, e)) || r[i].push(e), r;
|
|
51
52
|
});
|
|
52
|
-
} catch (
|
|
53
|
-
|
|
53
|
+
} catch (e) {
|
|
54
|
+
t.error("Error storing unhidden spam token", e);
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
57
|
async deleteUnhiddenSpamToken(e) {
|
|
57
|
-
await r(this.UNHIDDEN_SPAM_KEY, (
|
|
58
|
-
let { chainId: r } = e, i =
|
|
59
|
-
return i[r] = i[r]?.filter((
|
|
58
|
+
await (0, r.update)(this.UNHIDDEN_SPAM_KEY, (t) => {
|
|
59
|
+
let { chainId: r } = e, i = t ?? {};
|
|
60
|
+
return i[r] = i[r]?.filter((t) => !n(t, e)), i;
|
|
60
61
|
});
|
|
61
62
|
}
|
|
62
|
-
async getUnhiddenSpamTokens(
|
|
63
|
+
async getUnhiddenSpamTokens(e) {
|
|
63
64
|
try {
|
|
64
|
-
return (await
|
|
65
|
-
} catch (
|
|
66
|
-
return
|
|
65
|
+
return (await (0, r.get)(this.UNHIDDEN_SPAM_KEY))?.[e] || [];
|
|
66
|
+
} catch (e) {
|
|
67
|
+
return t.error("Error retrieving unhidden spam tokens", e), [];
|
|
67
68
|
}
|
|
68
69
|
}
|
|
69
|
-
async hideUnnecessarySpamTokens(e,
|
|
70
|
-
let r = await this.getUnhiddenSpamTokens(e), i =
|
|
70
|
+
async hideUnnecessarySpamTokens(e, t) {
|
|
71
|
+
let r = await this.getUnhiddenSpamTokens(e), i = t.filter((e) => e.isSpam ? !r.some((t) => n(t, e)) : !1);
|
|
71
72
|
await Promise.all(i.map((e) => this.hideToken(e)));
|
|
72
73
|
}
|
|
73
74
|
async hideSpamsAndFetchHiddenTokensAddresses(e, t) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../../../../_virtual/_rolldown/runtime.cjs`),require(`../../data-structures/http/HttpClient.cjs`),require(`./common.snarkjs.cjs`),require(`../utils/bytes32.utils.cjs`),require(`./getZKFiles.cjs`)
|
|
1
|
+
require(`../../../../../../_virtual/_rolldown/runtime.cjs`),require(`../../data-structures/http/HttpClient.cjs`),require(`./common.snarkjs.cjs`),require(`../utils/bytes32.utils.cjs`),require(`./getZKFiles.cjs`);const e=require(`../../../../shims/snarkjs.cjs`);require(`ethers`),e.default;
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import "../../../../../../_virtual/_rolldown/runtime.mjs";
|
|
1
2
|
import "../../data-structures/http/HttpClient.mjs";
|
|
2
3
|
import "./common.snarkjs.mjs";
|
|
3
4
|
import "../utils/bytes32.utils.mjs";
|
|
4
5
|
import "./getZKFiles.mjs";
|
|
6
|
+
import { require_snarkjs as e } from "../../../../shims/snarkjs.mjs";
|
|
5
7
|
import "ethers";
|
|
6
|
-
|
|
8
|
+
e();
|
|
9
|
+
//#endregion
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./serialize.utils.cjs`),t=require(`../../constants/chains.constants.cjs`);require(
|
|
1
|
+
const e=require(`./serialize.utils.cjs`),t=require(`../../constants/chains.constants.cjs`);require(`../../../../shims/idb-keyval.cjs`).default;var n={encryptedOutputs:[],lastOutput:``},r=(e,t)=>({shortPublicKey:e.substring(0,25),shortHinkalAddress:t.substring(0,25)}),i=(e,t,n)=>`hinkalCache-${e}-${t}-${n}`,a=(a,o,s)=>{let{hinkalAddress:c}=t.networkRegistry[o].contractData;if(!o||!s||!c)throw Error(`GetHinkalCache: incorrect arguments`);let{shortPublicKey:l,shortHinkalAddress:u}=r(s,c);return JSON.parse(a.cacheDevice.get(i(o,l,u))??e.safeJsonStringify(n))},o=(n,a,o,s)=>{let{hinkalAddress:c}=t.networkRegistry[o].contractData;if(!o||!s||!c)throw Error(`SetHinkalCache: incorrect arguments`);let{shortPublicKey:l,shortHinkalAddress:u}=r(s,c);a.cacheDevice.set(i(o,l,u),e.safeJsonStringify(n))},s=(e,t,r)=>{o(n,e,t,r)};exports.getFilePath=i,exports.getHinkalCache=a,exports.resetCache=s,exports.setHinkalCache=o;
|
|
@@ -1,25 +1,25 @@
|
|
|
1
1
|
import { safeJsonStringify as e } from "./serialize.utils.mjs";
|
|
2
2
|
import { networkRegistry as t } from "../../constants/chains.constants.mjs";
|
|
3
|
-
import "idb-keyval";
|
|
4
|
-
|
|
5
|
-
var
|
|
3
|
+
import { require_idb_keyval as n } from "../../../../shims/idb-keyval.mjs";
|
|
4
|
+
n();
|
|
5
|
+
var r = {
|
|
6
6
|
encryptedOutputs: [],
|
|
7
7
|
lastOutput: ""
|
|
8
|
-
},
|
|
8
|
+
}, i = (e, t) => ({
|
|
9
9
|
shortPublicKey: e.substring(0, 25),
|
|
10
10
|
shortHinkalAddress: t.substring(0, 25)
|
|
11
|
-
}),
|
|
11
|
+
}), a = (e, t, n) => `hinkalCache-${e}-${t}-${n}`, o = (n, o, s) => {
|
|
12
12
|
let { hinkalAddress: c } = t[o].contractData;
|
|
13
13
|
if (!o || !s || !c) throw Error("GetHinkalCache: incorrect arguments");
|
|
14
|
-
let { shortPublicKey: l, shortHinkalAddress: u } =
|
|
15
|
-
return JSON.parse(
|
|
16
|
-
},
|
|
14
|
+
let { shortPublicKey: l, shortHinkalAddress: u } = i(s, c);
|
|
15
|
+
return JSON.parse(n.cacheDevice.get(a(o, l, u)) ?? e(r));
|
|
16
|
+
}, s = (n, r, o, s) => {
|
|
17
17
|
let { hinkalAddress: c } = t[o].contractData;
|
|
18
18
|
if (!o || !s || !c) throw Error("SetHinkalCache: incorrect arguments");
|
|
19
|
-
let { shortPublicKey: l, shortHinkalAddress: u } =
|
|
20
|
-
|
|
21
|
-
},
|
|
22
|
-
|
|
19
|
+
let { shortPublicKey: l, shortHinkalAddress: u } = i(s, c);
|
|
20
|
+
r.cacheDevice.set(a(o, l, u), e(n));
|
|
21
|
+
}, c = (e, t, n) => {
|
|
22
|
+
s(r, e, t, n);
|
|
23
23
|
};
|
|
24
24
|
//#endregion
|
|
25
|
-
export {
|
|
25
|
+
export { a as getFilePath, o as getHinkalCache, c as resetCache, s as setHinkalCache };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(
|
|
1
|
+
require(`../../../../shims/multiformats.cjs`).default;
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
const domain = 'https://storage.googleapis.com/hinkal-workers-staging';
|
|
3
3
|
|
|
4
4
|
const WORKER_CDN_URLS = {
|
|
5
|
-
ZKProof: domain + '/0.3.
|
|
6
|
-
SnarkJS: domain + '/0.3.
|
|
7
|
-
UTXO: domain + '/0.3.
|
|
5
|
+
ZKProof: domain + '/0.3.74/' + 'zkProofWorkerLauncher.js',
|
|
6
|
+
SnarkJS: domain + '/0.3.74/' + 'snarkjsWorkerLauncher.js',
|
|
7
|
+
UTXO: domain + '/0.3.74/' + 'utxoWorkerLauncher.js',
|
|
8
8
|
};
|
|
9
9
|
|
|
10
10
|
// Returns a blob:// URL which points
|
package/package.json
CHANGED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
function notSupported(name) {
|
|
2
|
+
return () => {
|
|
3
|
+
throw new Error(
|
|
4
|
+
`[hinkal-rn] circomlibjs-hinkal-fork.${name} is not available on React Native. ` +
|
|
5
|
+
'The SDK uses poseidon-lite + an inline BabyJubJub instead.',
|
|
6
|
+
);
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
module.exports = {
|
|
11
|
+
buildPoseidon: notSupported('buildPoseidon'),
|
|
12
|
+
buildPoseidonReference: notSupported('buildPoseidonReference'),
|
|
13
|
+
buildBabyjub: notSupported('buildBabyjub'),
|
|
14
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
function notSupported(name) {
|
|
2
|
+
return () => {
|
|
3
|
+
throw new Error(
|
|
4
|
+
`[hinkal-rn] circomlibjs.${name} is not available on React Native. ` +
|
|
5
|
+
'The SDK uses poseidon-lite + an inline BabyJubJub instead.',
|
|
6
|
+
);
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
module.exports = {
|
|
11
|
+
buildPoseidon: notSupported('buildPoseidon'),
|
|
12
|
+
buildPoseidonReference: notSupported('buildPoseidonReference'),
|
|
13
|
+
buildPoseidonWasm: notSupported('buildPoseidonWasm'),
|
|
14
|
+
buildBabyjub: notSupported('buildBabyjub'),
|
|
15
|
+
};
|
package/shims/crypto.cjs
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// Node `crypto` shim for React Native.
|
|
2
|
+
|
|
3
|
+
const { sha256, sha512, keccak256 } = require('ethers');
|
|
4
|
+
const { Buffer } = require('buffer');
|
|
5
|
+
|
|
6
|
+
function ensureRng() {
|
|
7
|
+
if (!global.crypto || typeof global.crypto.getRandomValues !== 'function') {
|
|
8
|
+
throw new Error(
|
|
9
|
+
'[hinkal-rn] global.crypto.getRandomValues is not available. ' +
|
|
10
|
+
'Import @hinkal/sdk-react-native (HinkalProvider) before other SDK code.',
|
|
11
|
+
);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
function randomBytes(size) {
|
|
16
|
+
ensureRng();
|
|
17
|
+
const arr = new Uint8Array(size);
|
|
18
|
+
global.crypto.getRandomValues(arr);
|
|
19
|
+
return Buffer.from(arr);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
function randomFillSync(buf, offset, size) {
|
|
23
|
+
ensureRng();
|
|
24
|
+
const start = offset ?? 0;
|
|
25
|
+
const end = size != null ? start + size : buf.length;
|
|
26
|
+
const view = new Uint8Array(buf.buffer || buf, buf.byteOffset || 0, buf.length);
|
|
27
|
+
const tmp = new Uint8Array(end - start);
|
|
28
|
+
global.crypto.getRandomValues(tmp);
|
|
29
|
+
view.set(tmp, start);
|
|
30
|
+
return buf;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function randomUUID() {
|
|
34
|
+
// RFC 4122 v4 UUID via crypto-secure bytes.
|
|
35
|
+
const b = randomBytes(16);
|
|
36
|
+
b[6] = (b[6] & 0x0f) | 0x40;
|
|
37
|
+
b[8] = (b[8] & 0x3f) | 0x80;
|
|
38
|
+
const hex = b.toString('hex');
|
|
39
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
function toBytesLike(input) {
|
|
43
|
+
if (input == null) return new Uint8Array(0);
|
|
44
|
+
if (typeof input === 'string') return Buffer.from(input, 'utf8');
|
|
45
|
+
if (input instanceof Uint8Array) return input;
|
|
46
|
+
if (Buffer.isBuffer(input)) return input;
|
|
47
|
+
if (input.buffer) return new Uint8Array(input.buffer, input.byteOffset || 0, input.byteLength || input.length);
|
|
48
|
+
return Buffer.from(input);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
function hexToBuffer(hex) {
|
|
52
|
+
return Buffer.from(hex.replace(/^0x/, ''), 'hex');
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
function createHash(algorithm) {
|
|
56
|
+
const alg = String(algorithm).toLowerCase().replace('-', '');
|
|
57
|
+
const chunks = [];
|
|
58
|
+
return {
|
|
59
|
+
update(chunk) {
|
|
60
|
+
chunks.push(toBytesLike(chunk));
|
|
61
|
+
return this;
|
|
62
|
+
},
|
|
63
|
+
digest(encoding) {
|
|
64
|
+
const total = chunks.reduce((acc, c) => acc + c.length, 0);
|
|
65
|
+
const merged = new Uint8Array(total);
|
|
66
|
+
let off = 0;
|
|
67
|
+
for (const c of chunks) {
|
|
68
|
+
merged.set(c, off);
|
|
69
|
+
off += c.length;
|
|
70
|
+
}
|
|
71
|
+
let hex;
|
|
72
|
+
if (alg === 'sha256') hex = sha256(merged);
|
|
73
|
+
else if (alg === 'sha512') hex = sha512(merged);
|
|
74
|
+
else if (alg === 'keccak256') hex = keccak256(merged);
|
|
75
|
+
else throw new Error(`[hinkal-rn] unsupported hash algorithm: ${algorithm}`);
|
|
76
|
+
const buf = hexToBuffer(hex);
|
|
77
|
+
if (!encoding) return buf;
|
|
78
|
+
if (encoding === 'hex') return buf.toString('hex');
|
|
79
|
+
if (encoding === 'base64') return buf.toString('base64');
|
|
80
|
+
return buf.toString(encoding);
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
function createHmac() {
|
|
86
|
+
throw new Error('[hinkal-rn] crypto.createHmac is not implemented in the RN shim. Use a JS implementation.');
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
module.exports = {
|
|
90
|
+
randomBytes,
|
|
91
|
+
randomFillSync,
|
|
92
|
+
randomUUID,
|
|
93
|
+
createHash,
|
|
94
|
+
createHmac,
|
|
95
|
+
webcrypto: typeof global.crypto !== 'undefined' ? global.crypto : undefined,
|
|
96
|
+
getRandomValues: (arr) => {
|
|
97
|
+
ensureRng();
|
|
98
|
+
global.crypto.getRandomValues(arr);
|
|
99
|
+
return arr;
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
module.exports.default = module.exports;
|
package/shims/crypto.mjs
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Buffer } from "buffer";
|
|
2
|
+
import * as ReactNative from "react-native";
|
|
3
|
+
global.Buffer = Buffer;
|
|
4
|
+
|
|
5
|
+
// key-val-store probes indexedDB; without it the SDK falls back to FileKeyValStore (process.cwd).
|
|
6
|
+
if (typeof globalThis.indexedDB === "undefined") {
|
|
7
|
+
globalThis.indexedDB = {};
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
if (typeof global.require === "undefined") {
|
|
11
|
+
global.require = (m) => {
|
|
12
|
+
if (m === "react-native") return ReactNative;
|
|
13
|
+
throw new Error(`global.require shim: unsupported module "${m}"`);
|
|
14
|
+
};
|
|
15
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// idb-keyval shim for React Native
|
|
2
|
+
const AsyncStorage =
|
|
3
|
+
require("@react-native-async-storage/async-storage").default;
|
|
4
|
+
|
|
5
|
+
const PREFIX = "@hinkal/idb-keyval:";
|
|
6
|
+
const key = (k) => `${PREFIX}${typeof k === "string" ? k : JSON.stringify(k)}`;
|
|
7
|
+
|
|
8
|
+
async function get(k) {
|
|
9
|
+
const raw = await AsyncStorage.getItem(key(k));
|
|
10
|
+
if (raw == null) return undefined;
|
|
11
|
+
try {
|
|
12
|
+
return JSON.parse(raw);
|
|
13
|
+
} catch {
|
|
14
|
+
return undefined;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
async function set(k, value) {
|
|
19
|
+
if (value === undefined) {
|
|
20
|
+
await AsyncStorage.removeItem(key(k));
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
await AsyncStorage.setItem(key(k), JSON.stringify(value));
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
async function update(k, updater) {
|
|
27
|
+
const current = await get(k);
|
|
28
|
+
const next = updater(current);
|
|
29
|
+
await set(k, next);
|
|
30
|
+
return next;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
async function del(k) {
|
|
34
|
+
await AsyncStorage.removeItem(key(k));
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
async function clear() {
|
|
38
|
+
const all = await AsyncStorage.getAllKeys();
|
|
39
|
+
const ours = all.filter((x) => x.startsWith(PREFIX));
|
|
40
|
+
if (ours.length) await AsyncStorage.multiRemove(ours);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
async function keys() {
|
|
44
|
+
const all = await AsyncStorage.getAllKeys();
|
|
45
|
+
return all.filter((x) => x.startsWith(PREFIX)).map((x) => x.slice(PREFIX.length));
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
async function values() {
|
|
49
|
+
const ks = await keys();
|
|
50
|
+
return Promise.all(ks.map(get));
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async function entries() {
|
|
54
|
+
const ks = await keys();
|
|
55
|
+
const vs = await Promise.all(ks.map(get));
|
|
56
|
+
return ks.map((k, i) => [k, vs[i]]);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
function createStore() {
|
|
60
|
+
// idb-keyval lets callers create a store with a custom DB name; we ignore it
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
module.exports = {
|
|
65
|
+
get,
|
|
66
|
+
set,
|
|
67
|
+
update,
|
|
68
|
+
del,
|
|
69
|
+
clear,
|
|
70
|
+
keys,
|
|
71
|
+
values,
|
|
72
|
+
entries,
|
|
73
|
+
createStore,
|
|
74
|
+
};
|
|
75
|
+
module.exports.default = module.exports;
|