@gurge/sdk 0.3.21 → 0.3.22
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/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
- package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +24 -41
- package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
- package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +73 -80
- package/common/src/functions/snarkjs/generateZkProofEnclave.cjs +1 -1
- package/common/src/functions/snarkjs/generateZkProofEnclave.mjs +10 -20
- package/common/src/providers/WagmiProviderAdapter.cjs +1 -1
- package/common/src/providers/WagmiProviderAdapter.mjs +4 -3
- package/common/src/webworker/package.json +1 -1
- package/common/src/webworker/performTaskWithWorker.cjs +1 -1
- package/common/src/webworker/performTaskWithWorker.mjs +18 -21
- package/common/src/webworker/viteWorkerURL.constant.cjs +3 -3
- package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
- package/package.json +1 -1
- package/react-native/HinkalWebViewWorker.cjs +7 -35
- package/react-native/HinkalWebViewWorker.mjs +53 -98
- package/react-native/bridge/HinkalRNWorker.cjs +1 -1
- package/react-native/bridge/HinkalRNWorker.d.ts +0 -1
- package/react-native/bridge/HinkalRNWorker.mjs +9 -11
- package/react-native/metro-config.js +2 -9
- package/react-native/shims/idb-keyval.js +11 -4
- package/sdk/package.json.cjs +1 -1
- package/sdk/package.json.mjs +1 -1
- package/common/src/functions/utils/hinkalTiming.utils.cjs +0 -1
- package/common/src/functions/utils/hinkalTiming.utils.mjs +0 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../../types/external-action.types.cjs`),o=require(`../../functions/utils/tron.utils.cjs`),s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/web3/events/getShieldedBalance.cjs`),l=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),u=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`)
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../types/hinkal.types.cjs`),r=require(`../../error-handling/error-codes.constants.cjs`),i=require(`../../functions/utils/time.utils.cjs`),a=require(`../../types/external-action.types.cjs`),o=require(`../../functions/utils/tron.utils.cjs`),s=require(`../../functions/utils/token-check.utils.cjs`),c=require(`../../functions/web3/events/getShieldedBalance.cjs`),l=require(`../../functions/pre-transaction/outputUtxoProcessing.cjs`),u=require(`../../functions/pre-transaction/getVolatileTransferAmount.cjs`),d=require(`../../functions/pre-transaction/constructAdminData.cjs`),f=require(`../../functions/pre-transaction/getFeeStructure.cjs`);require(`../../functions/pre-transaction/index.cjs`);const p=require(`../../functions/utils/fees.utils.cjs`),m=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),h=require(`../../functions/web3/functionCalls/transactCallDirect.cjs`),g=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),_=require(`../../functions/web3/functionCalls/transactCallDirectTron.cjs`),v=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var y=async(e,t,n,r)=>{let a=[...await c.addPaddingToUtxos(e,t,n,r)],o=[],s=i.getCurrentTimeInSeconds().toString();for(let t=0;t<n.length;t+=1){let{outputUtxos:n}=l.outputUtxoProcessing(e.userKeys,a[t],r[t],s);o.push(n)}return{inputUtxosArray:a,outputUtxosArray:o}},b=async(i,c,l,b,x,S,C,w)=>{let T=s.validateAndGetChainId(c),E=e.isTronLike(T),D=o.addressToHexFormat(await i.getEthereumAddressByChain(T)),O=c.map(e=>e.erc20TokenAddress),k=await u.modifyVolatileTokenAmountChanges(T,c,l),A=c[0];if(!A)throw Error(`Deposit Action: No Token Found`);let j;if(!x){let e=C??await f.getFeeStructure(T,S,O,a.ExternalActionId.Transact);j=await p.calculateModifiedFeeStructure(T,A,-k[0],e),await v.mergeWithFeeStructure(T,O,k,j)}let M={externalActionId:0n,externalAddress:o.addressToHexFormat(b),externalActionMetadata:`0x00`},[N,{inputUtxosArray:P,outputUtxosArray:F}]=await Promise.all([i.getRandomRelay(T,!0),y(i,T,O,k)]);if(!x&&!N)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let{zkCallData:I,circomData:L,dimData:R,commitmentValidationData:z}=await m.constructZkProof(i.merkleTreeHinkalByChain[T],P,F,i.userKeys,M.externalActionId,M.externalAddress,M.externalActionMetadata,i.generateProofRemotely,j??n.zeroFeeStructure,x?t.zeroAddress:N,T,void 0,void 0,x?D:void 0),B=E&&x?void 0:await o.reorderZkCallData(E,I,R,L);if(x){if(!A)throw Error(`Withdraw Action: No Token Found`);return E?await _.transactCallDirectTron(i,T,k[0],A,I,L,R):await h.transactCallDirect(i,T,k[0],A,I,L,R)}return await g.transactCallRelayer(T,I,R,L,z,void 0,void 0,d.constructAdminData(w,T,O,k,D),B)};exports.hinkalWithdraw=b;
|
|
@@ -11,16 +11,15 @@ import { outputUtxoProcessing as u } from "../../functions/pre-transaction/outpu
|
|
|
11
11
|
import { modifyVolatileTokenAmountChanges as d } from "../../functions/pre-transaction/getVolatileTransferAmount.mjs";
|
|
12
12
|
import { constructAdminData as f } from "../../functions/pre-transaction/constructAdminData.mjs";
|
|
13
13
|
import { getFeeStructure as p } from "../../functions/pre-transaction/getFeeStructure.mjs";
|
|
14
|
-
import { createHinkalTiming as m } from "../../functions/utils/hinkalTiming.utils.mjs";
|
|
15
14
|
import "../../functions/pre-transaction/index.mjs";
|
|
16
|
-
import { calculateModifiedFeeStructure as
|
|
17
|
-
import { constructZkProof as
|
|
18
|
-
import { transactCallDirect as
|
|
19
|
-
import { transactCallRelayer as
|
|
20
|
-
import { transactCallDirectTron as
|
|
21
|
-
import { mergeWithFeeStructure as
|
|
15
|
+
import { calculateModifiedFeeStructure as m } from "../../functions/utils/fees.utils.mjs";
|
|
16
|
+
import { constructZkProof as h } from "../../functions/snarkjs/constructGeneralZkProof.mjs";
|
|
17
|
+
import { transactCallDirect as g } from "../../functions/web3/functionCalls/transactCallDirect.mjs";
|
|
18
|
+
import { transactCallRelayer as _ } from "../../functions/web3/functionCalls/transactCallRelayer.mjs";
|
|
19
|
+
import { transactCallDirectTron as v } from "../../functions/web3/functionCalls/transactCallDirectTron.mjs";
|
|
20
|
+
import { mergeWithFeeStructure as y } from "../../functions/pre-transaction/merge-with-fee-structure.mjs";
|
|
22
21
|
//#region libs/shared/common/src/data-structures/Hinkal/hinkalWithdraw.ts
|
|
23
|
-
var
|
|
22
|
+
var b = async (e, t, n, r) => {
|
|
24
23
|
let a = [...await l(e, t, n, r)], o = [], s = i().toString();
|
|
25
24
|
for (let t = 0; t < n.length; t += 1) {
|
|
26
25
|
let { outputUtxos: n } = u(e.userKeys, a[t], r[t], s);
|
|
@@ -30,42 +29,26 @@ var x = async (e, t, n, r) => {
|
|
|
30
29
|
inputUtxosArray: a,
|
|
31
30
|
outputUtxosArray: o
|
|
32
31
|
};
|
|
33
|
-
},
|
|
34
|
-
let
|
|
35
|
-
|
|
36
|
-
let
|
|
37
|
-
if (!
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
let e = T ?? await p(D, w, j, a.Transact);
|
|
41
|
-
P = await h(D, N, -M[0], e), await b(D, j, M, P);
|
|
32
|
+
}, x = async (i, l, u, x, S, C, w, T) => {
|
|
33
|
+
let E = c(l), D = e(E), O = o(await i.getEthereumAddressByChain(E)), k = l.map((e) => e.erc20TokenAddress), A = await d(E, l, u), j = l[0];
|
|
34
|
+
if (!j) throw Error("Deposit Action: No Token Found");
|
|
35
|
+
let M;
|
|
36
|
+
if (!S) {
|
|
37
|
+
let e = w ?? await p(E, C, k, a.Transact);
|
|
38
|
+
M = await m(E, j, -A[0], e), await y(E, k, A, M);
|
|
42
39
|
}
|
|
43
|
-
|
|
44
|
-
let F = {
|
|
40
|
+
let N = {
|
|
45
41
|
externalActionId: 0n,
|
|
46
|
-
externalAddress: o(
|
|
42
|
+
externalAddress: o(x),
|
|
47
43
|
externalActionMetadata: "0x00"
|
|
48
|
-
}, [
|
|
49
|
-
if (
|
|
50
|
-
O
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if (O.log("reorderZkCallData"), C) {
|
|
55
|
-
if (!N) throw Error("Withdraw Action: No Token Found");
|
|
56
|
-
if (k) {
|
|
57
|
-
O.log("transactCallDirectTron-start");
|
|
58
|
-
let e = await y(i, D, M[0], N, z, B, V);
|
|
59
|
-
return O.log("transactCallDirectTron-done", { txid: e }), e;
|
|
60
|
-
}
|
|
61
|
-
O.log("transactCallDirect-start");
|
|
62
|
-
let e = await _(i, D, M[0], N, z, B, V);
|
|
63
|
-
return O.log("transactCallDirect-done"), e;
|
|
44
|
+
}, [P, { inputUtxosArray: F, outputUtxosArray: I }] = await Promise.all([i.getRandomRelay(E, !0), b(i, E, k, A)]);
|
|
45
|
+
if (!S && !P) throw Error(r.RELAYER_NOT_AVAILABLE);
|
|
46
|
+
let { zkCallData: L, circomData: R, dimData: z, commitmentValidationData: B } = await h(i.merkleTreeHinkalByChain[E], F, I, i.userKeys, N.externalActionId, N.externalAddress, N.externalActionMetadata, i.generateProofRemotely, M ?? n, S ? t : P, E, void 0, void 0, S ? O : void 0), V = D && S ? void 0 : await s(D, L, z, R);
|
|
47
|
+
if (S) {
|
|
48
|
+
if (!j) throw Error("Withdraw Action: No Token Found");
|
|
49
|
+
return D ? await v(i, E, A[0], j, L, R, z) : await g(i, E, A[0], j, L, R, z);
|
|
64
50
|
}
|
|
65
|
-
|
|
66
|
-
O.log("transactCallRelayer-start");
|
|
67
|
-
let G = await v(D, z, V, B, H, void 0, void 0, W, U);
|
|
68
|
-
return O.log("transactCallRelayer-done", { txHash: G }), G;
|
|
51
|
+
return await _(E, L, z, R, B, void 0, void 0, f(T, E, k, A, O), V);
|
|
69
52
|
};
|
|
70
53
|
//#endregion
|
|
71
|
-
export {
|
|
54
|
+
export { x as hinkalWithdraw };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../crypto/poseidon.cjs`),r=require(`../web3/etherFunctions.cjs`),i=require(`../../data-structures/crypto-keys/keys.cjs`),a=require(`../utils/time.utils.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../error-handling/logger.cjs`),c=require(`../utils/bit.operations.cjs`),l=require(`./common.snarkjs.cjs`),ee=require(`./signedMessageHash.cjs`),u=require(`./generateCircomData.cjs`),te=require(`../../data-structures/AccountActions/AccountActions.cjs`),d=require(
|
|
1
|
+
const e=require(`../../constants/chains.constants.cjs`),t=require(`../../constants/protocol.constants.cjs`),n=require(`../../crypto/poseidon.cjs`),r=require(`../web3/etherFunctions.cjs`),i=require(`../../data-structures/crypto-keys/keys.cjs`),a=require(`../utils/time.utils.cjs`),o=require(`../../types/external-action.types.cjs`),s=require(`../../error-handling/logger.cjs`),c=require(`../utils/bit.operations.cjs`),l=require(`./common.snarkjs.cjs`),ee=require(`./signedMessageHash.cjs`),u=require(`./generateCircomData.cjs`),te=require(`../../data-structures/AccountActions/AccountActions.cjs`),d=require(`./generateMainAndCommitmentZkProof.cjs`),f=require(`./getMerkleTreeSiblingsAndRootHashes.cjs`),p=require(`../private-wallet/emporium.helpers.cjs`);var m=async(m,h,g,_,v,y,b,x,S,C=t.zeroAddress,w=e.chainIds.localhost,T=h.map(()=>!1),E=void 0,D,O)=>{let k=l.getZkProofVerifierName(h,g),A=l.calcAmountChanges(h,g),j=h.map(e=>e[0].erc20TokenAddress),M=l.calcEncryptedOutputs(g),N=t.defaultSignatureData,P=_.getShieldedPrivateKey(),{pubSpendingBJJPoint:F}=_.getSpendingKeyPair(),I=l.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),P),P,_.getSpendingKeyPair().pubSpendingBJJPoint),{inCommitmentSiblings:ne,inCommitmentSiblingSides:re,rootHashHinkal:L,inNullifiers:R}=await f.getDataFromWorkers(w,m,h.map(e=>e.map(e=>e.getConstructableParams()))),z=l.buildOutCommitments(g),B=r.randomBigInt(31),V=n.poseidonFunction(B),H=BigInt(g.length>0?g[0][0].timeStamp:a.getCurrentTimeInSeconds()),U={rootHashHinkal:L,spendingPublicKey:F,nullifyingPrivateKey:P,erc20TokenAddresses:j,amountChanges:A,inAmounts:h.map(e=>e.map(e=>e.amount.toString())),inRandomizations:h.map(e=>e.map(e=>l.getUtxoCircuitInRandomization(e))),inH0Ax:h.map(e=>e.map(e=>l.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:h.map(e=>e.map(e=>l.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:h.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:h.map(e=>e.map(e=>e.timeStamp)),inNullifiers:R,inCommitmentSiblings:ne,inCommitmentSiblingSides:re,outAmounts:g.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:H,outPublicKeys:g.map(e=>e.map(e=>e.getStealthAddress())),outCommitments:z,calldataHash:0n,messageSeed:B,H0Ax:c.takeOffHighestBit(I.extraRandomization),H0Ay:I.H0},W=l.calcPublicSignalCount(k,U.erc20TokenAddresses,U.amountChanges,U.inNullifiers,U.outCommitments),G=l.calcAmountChanges(h,g,!0),K=l.getSlippageValues(G);s.Logger.log({publicSignalCount:W});let q=Array.isArray(b)?b:[b],J=e.getOnchainChainId(w),Y=O?te.AccountActions.getSignerAddressFromPrivateKey(J,O):void 0,X=v===o.ExternalActionId.Emporium?await p.encodeEmporiumMetadata(w,y??t.zeroAddress,O,q,V,Y):await p.encodeEmporiumMetadata(w,t.zeroAddress,void 0,v===0n?[]:q,V,t.zeroAddress);U.calldataHash=l.createCallDataHash(W,C,y,v,X,M,E,K,T,S,N,D);let Z=ee.computeSignedMessageHashEvm({rootHashHinkal:L,erc20TokenAddresses:j,amountChanges:A,outTimeStamp:H,inNullifiers:R,outCommitments:z,calldataHash:U.calldataHash,message:V,outH1Ay:I.H1,H0Ax:U.H0Ax,H0Ay:I.H0}),{R8:Q,S:ie}=_.signEddsa(Z);U.eddsaSignature=[Q[0],Q[1],ie],U.signedMessageHash=Z;let $=k.startsWith(`mainEVMCircuitMin0`),ae={outTimeStamp:H,calldataHash:U.calldataHash,messageSeed:B},{zkCallData:oe,commitmentValidationData:se}=await d.generateMainAndCommitmentZkProof(w,_,j,h,k,$?ae:U,x);return{zkCallData:oe,circomData:u.generateCircomData(z,R,L,G,j,g,M,W,v,y,X,C,U.calldataHash,I,T,E,$?Number(H):void 0,K,S,N,D),dimData:{tokenNumber:h.length,nullifierAmount:h.length>0?h[0].length:0,outputAmount:g.length>0?g[0].length:0},encryptedOutputs:M,commitmentValidationData:se}};exports.constructZkProof=m;
|
|
@@ -1,89 +1,82 @@
|
|
|
1
1
|
import { chainIds as e, getOnchainChainId as t } from "../../constants/chains.constants.mjs";
|
|
2
2
|
import { defaultSignatureData as ee, zeroAddress as n } from "../../constants/protocol.constants.mjs";
|
|
3
|
-
import { poseidonFunction as
|
|
4
|
-
import { randomBigInt as
|
|
5
|
-
import { UserKeys as
|
|
6
|
-
import { getCurrentTimeInSeconds as
|
|
7
|
-
import { ExternalActionId as
|
|
8
|
-
import { Logger as
|
|
9
|
-
import { takeOffHighestBit as
|
|
10
|
-
import { buildOutCommitments as
|
|
11
|
-
import { computeSignedMessageHashEvm as
|
|
12
|
-
import { generateCircomData as
|
|
13
|
-
import { AccountActions as
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import { encodeEmporiumMetadata as f } from "../private-wallet/emporium.helpers.mjs";
|
|
3
|
+
import { poseidonFunction as te } from "../../crypto/poseidon.mjs";
|
|
4
|
+
import { randomBigInt as r } from "../web3/etherFunctions.mjs";
|
|
5
|
+
import { UserKeys as i } from "../../data-structures/crypto-keys/keys.mjs";
|
|
6
|
+
import { getCurrentTimeInSeconds as a } from "../utils/time.utils.mjs";
|
|
7
|
+
import { ExternalActionId as o } from "../../types/external-action.types.mjs";
|
|
8
|
+
import { Logger as s } from "../../error-handling/logger.mjs";
|
|
9
|
+
import { takeOffHighestBit as ne } from "../utils/bit.operations.mjs";
|
|
10
|
+
import { buildOutCommitments as re, calcAmountChanges as c, calcEncryptedOutputs as ie, calcPublicSignalCount as ae, calcStealthAddressStructure as oe, createCallDataHash as se, getSlippageValues as ce, getUtxoCircuitH0Coords as l, getUtxoCircuitInRandomization as le, getZkProofVerifierName as ue } from "./common.snarkjs.mjs";
|
|
11
|
+
import { computeSignedMessageHashEvm as de } from "./signedMessageHash.mjs";
|
|
12
|
+
import { generateCircomData as fe } from "./generateCircomData.mjs";
|
|
13
|
+
import { AccountActions as u } from "../../data-structures/AccountActions/AccountActions.mjs";
|
|
14
|
+
import { generateMainAndCommitmentZkProof as d } from "./generateMainAndCommitmentZkProof.mjs";
|
|
15
|
+
import { getDataFromWorkers as f } from "./getMerkleTreeSiblingsAndRootHashes.mjs";
|
|
16
|
+
import { encodeEmporiumMetadata as p } from "../private-wallet/emporium.helpers.mjs";
|
|
18
17
|
//#region libs/shared/common/src/functions/snarkjs/constructGeneralZkProof.ts
|
|
19
|
-
var
|
|
20
|
-
let O =
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
outAmounts: h.map((e) => e.map((e) => e.amount.toString())),
|
|
40
|
-
outTimeStamp: W,
|
|
41
|
-
outPublicKeys: h.map((e) => e.map((e) => e.getStealthAddress())),
|
|
42
|
-
outCommitments: V,
|
|
18
|
+
var m = async (m, h, g, _, v, y, b, pe, x, S = n, C = e.localhost, w = h.map(() => !1), T = void 0, E, D) => {
|
|
19
|
+
let O = ue(h, g), k = c(h, g), A = h.map((e) => e[0].erc20TokenAddress), j = ie(g), M = ee, N = _.getShieldedPrivateKey(), { pubSpendingBJJPoint: P } = _.getSpendingKeyPair(), F = oe(i.findCorrectRandomization(r(31), N), N, _.getSpendingKeyPair().pubSpendingBJJPoint), { inCommitmentSiblings: I, inCommitmentSiblingSides: L, rootHashHinkal: R, inNullifiers: z } = await f(C, m, h.map((e) => e.map((e) => e.getConstructableParams()))), B = re(g), V = r(31), H = te(V), U = BigInt(g.length > 0 ? g[0][0].timeStamp : a()), W = {
|
|
20
|
+
rootHashHinkal: R,
|
|
21
|
+
spendingPublicKey: P,
|
|
22
|
+
nullifyingPrivateKey: N,
|
|
23
|
+
erc20TokenAddresses: A,
|
|
24
|
+
amountChanges: k,
|
|
25
|
+
inAmounts: h.map((e) => e.map((e) => e.amount.toString())),
|
|
26
|
+
inRandomizations: h.map((e) => e.map((e) => le(e))),
|
|
27
|
+
inH0Ax: h.map((e) => e.map((e) => l(e)[0].toString())),
|
|
28
|
+
inH0Ay: h.map((e) => e.map((e) => l(e)[1].toString())),
|
|
29
|
+
isNewStyle: h.map((e) => e.map((e) => !!e.isNewStyle)),
|
|
30
|
+
inTimeStamps: h.map((e) => e.map((e) => e.timeStamp)),
|
|
31
|
+
inNullifiers: z,
|
|
32
|
+
inCommitmentSiblings: I,
|
|
33
|
+
inCommitmentSiblingSides: L,
|
|
34
|
+
outAmounts: g.map((e) => e.map((e) => e.amount.toString())),
|
|
35
|
+
outTimeStamp: U,
|
|
36
|
+
outPublicKeys: g.map((e) => e.map((e) => e.getStealthAddress())),
|
|
37
|
+
outCommitments: B,
|
|
43
38
|
calldataHash: 0n,
|
|
44
|
-
messageSeed:
|
|
45
|
-
H0Ax:
|
|
46
|
-
H0Ay:
|
|
47
|
-
},
|
|
48
|
-
|
|
49
|
-
let
|
|
50
|
-
|
|
51
|
-
let
|
|
52
|
-
rootHashHinkal:
|
|
53
|
-
erc20TokenAddresses:
|
|
54
|
-
amountChanges:
|
|
55
|
-
outTimeStamp:
|
|
56
|
-
inNullifiers:
|
|
57
|
-
outCommitments:
|
|
58
|
-
calldataHash:
|
|
59
|
-
message:
|
|
60
|
-
outH1Ay:
|
|
61
|
-
H0Ax:
|
|
62
|
-
H0Ay:
|
|
63
|
-
}), { R8:
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
],
|
|
69
|
-
let
|
|
70
|
-
outTimeStamp:
|
|
71
|
-
calldataHash:
|
|
72
|
-
messageSeed:
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
zkCallData: ye,
|
|
78
|
-
circomData: de(V, B, z, q, j, h, M, K, _, v, X, S, G.calldataHash, I, w, T, $ ? Number(W) : void 0, J, x, N, E),
|
|
39
|
+
messageSeed: V,
|
|
40
|
+
H0Ax: ne(F.extraRandomization),
|
|
41
|
+
H0Ay: F.H0
|
|
42
|
+
}, G = ae(O, W.erc20TokenAddresses, W.amountChanges, W.inNullifiers, W.outCommitments), K = c(h, g, !0), q = ce(K);
|
|
43
|
+
s.log({ publicSignalCount: G });
|
|
44
|
+
let J = Array.isArray(b) ? b : [b], me = t(C), he = D ? u.getSignerAddressFromPrivateKey(me, D) : void 0, Y = v === o.Emporium ? await p(C, y ?? n, D, J, H, he) : await p(C, n, void 0, v === 0n ? [] : J, H, n);
|
|
45
|
+
W.calldataHash = se(G, S, y, v, Y, j, T, q, w, x, M, E);
|
|
46
|
+
let X = de({
|
|
47
|
+
rootHashHinkal: R,
|
|
48
|
+
erc20TokenAddresses: A,
|
|
49
|
+
amountChanges: k,
|
|
50
|
+
outTimeStamp: U,
|
|
51
|
+
inNullifiers: z,
|
|
52
|
+
outCommitments: B,
|
|
53
|
+
calldataHash: W.calldataHash,
|
|
54
|
+
message: H,
|
|
55
|
+
outH1Ay: F.H1,
|
|
56
|
+
H0Ax: W.H0Ax,
|
|
57
|
+
H0Ay: F.H0
|
|
58
|
+
}), { R8: Z, S: ge } = _.signEddsa(X);
|
|
59
|
+
W.eddsaSignature = [
|
|
60
|
+
Z[0],
|
|
61
|
+
Z[1],
|
|
62
|
+
ge
|
|
63
|
+
], W.signedMessageHash = X;
|
|
64
|
+
let Q = O.startsWith("mainEVMCircuitMin0"), $ = {
|
|
65
|
+
outTimeStamp: U,
|
|
66
|
+
calldataHash: W.calldataHash,
|
|
67
|
+
messageSeed: V
|
|
68
|
+
}, { zkCallData: _e, commitmentValidationData: ve } = await d(C, _, A, h, O, Q ? $ : W, pe);
|
|
69
|
+
return {
|
|
70
|
+
zkCallData: _e,
|
|
71
|
+
circomData: fe(B, z, R, K, A, g, j, G, v, y, Y, S, W.calldataHash, F, w, T, Q ? Number(U) : void 0, q, x, M, E),
|
|
79
72
|
dimData: {
|
|
80
|
-
tokenNumber:
|
|
81
|
-
nullifierAmount:
|
|
82
|
-
outputAmount:
|
|
73
|
+
tokenNumber: h.length,
|
|
74
|
+
nullifierAmount: h.length > 0 ? h[0].length : 0,
|
|
75
|
+
outputAmount: g.length > 0 ? g[0].length : 0
|
|
83
76
|
},
|
|
84
|
-
encryptedOutputs:
|
|
85
|
-
commitmentValidationData:
|
|
77
|
+
encryptedOutputs: j,
|
|
78
|
+
commitmentValidationData: ve
|
|
86
79
|
};
|
|
87
80
|
};
|
|
88
81
|
//#endregion
|
|
89
|
-
export {
|
|
82
|
+
export { m as constructZkProof };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./constant.cjs`),t=require(`../../data-structures/http/HttpClient.cjs`);require(`../../data-structures/http/index.cjs`);const n=require(`../utils/encryptInputForEnclave.cjs`),r=require(
|
|
1
|
+
const e=require(`./constant.cjs`),t=require(`../../data-structures/http/HttpClient.cjs`);require(`../../data-structures/http/index.cjs`);const n=require(`../utils/encryptInputForEnclave.cjs`),r=require(`./getZKFiles.cjs`);var i=e=>{if(e.startsWith(`http`)){let t=e.split(`/`).at(-1);if(!t)throw Error(`invalid verifierName`);return t}return e},a=async(a,o,s)=>{let c=o.map(e=>i(r.getWASMFile(e,a))),l=o.map(e=>i(r.getZKeyFile(e,a))),{keyCiphertext:u,inputCiphertext:d}=await n.makeEnclaveHandshakeAndEncryptInput(s),f={circuit_wasms:c,circuit_zkeys:l,inputs:d,key:u};return(await t.httpClient.post(`${e.ENCLAVE_URL}/generate-proofs`,f)).map(({zk_calldata:e,public_signals:t})=>({zkCallData:e,publicSignals:t}))};exports.generateZkProofEnclave=a;
|
|
@@ -2,36 +2,26 @@ import { ENCLAVE_URL as e } from "./constant.mjs";
|
|
|
2
2
|
import { httpClient as t } from "../../data-structures/http/HttpClient.mjs";
|
|
3
3
|
import "../../data-structures/http/index.mjs";
|
|
4
4
|
import { makeEnclaveHandshakeAndEncryptInput as n } from "../utils/encryptInputForEnclave.mjs";
|
|
5
|
-
import {
|
|
6
|
-
import { getWASMFile as i, getZKeyFile as a } from "./getZKFiles.mjs";
|
|
5
|
+
import { getWASMFile as r, getZKeyFile as i } from "./getZKFiles.mjs";
|
|
7
6
|
//#region libs/shared/common/src/functions/snarkjs/generateZkProofEnclave.ts
|
|
8
|
-
var
|
|
7
|
+
var a = (e) => {
|
|
9
8
|
if (e.startsWith("http")) {
|
|
10
9
|
let t = e.split("/").at(-1);
|
|
11
10
|
if (!t) throw Error("invalid verifierName");
|
|
12
11
|
return t;
|
|
13
12
|
}
|
|
14
13
|
return e;
|
|
15
|
-
},
|
|
16
|
-
let
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
let d = c.map((e) => o(i(e, s))), f = c.map((e) => o(a(e, s))), { keyCiphertext: p, inputCiphertext: m } = await n(l);
|
|
22
|
-
u.log("encrypt-input-done", { inputCount: l.length });
|
|
23
|
-
let h = {
|
|
24
|
-
circuit_wasms: d,
|
|
25
|
-
circuit_zkeys: f,
|
|
26
|
-
inputs: m,
|
|
27
|
-
key: p
|
|
14
|
+
}, o = async (o, s, c) => {
|
|
15
|
+
let l = s.map((e) => a(r(e, o))), u = s.map((e) => a(i(e, o))), { keyCiphertext: d, inputCiphertext: f } = await n(c), p = {
|
|
16
|
+
circuit_wasms: l,
|
|
17
|
+
circuit_zkeys: u,
|
|
18
|
+
inputs: f,
|
|
19
|
+
key: d
|
|
28
20
|
};
|
|
29
|
-
|
|
30
|
-
let g = await t.post(`${e}/generate-proofs`, h);
|
|
31
|
-
return u.log("generate-proofs-request-done", { proofCount: g.length }), g.map(({ zk_calldata: e, public_signals: t }) => ({
|
|
21
|
+
return (await t.post(`${e}/generate-proofs`, p)).map(({ zk_calldata: e, public_signals: t }) => ({
|
|
32
22
|
zkCallData: e,
|
|
33
23
|
publicSignals: t
|
|
34
24
|
}));
|
|
35
25
|
};
|
|
36
26
|
//#endregion
|
|
37
|
-
export {
|
|
27
|
+
export { o as generateZkProofEnclave };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants/chains.constants.cjs`),t=require(`../error-handling/error-codes.constants.cjs`),n=require(`../types/eip5792.types.cjs`),r=require(`../error-handling/logger.cjs`),i=require(`../functions/utils/create-provider.cjs`),a=require(`../functions/web3/getContractMetadata.cjs`);let o=require(`ethers`),s=require(`wagmi`),c=require(`wagmi/actions`);var l=class l{connector;chainId;originalProvider;fetchProviders={};signer;chainEventListener;config;unsubscribeFns=[];constructor(){e.HINKAL_SUPPORTED_CHAINS.forEach(t=>{if(e.isSolanaLike(t))return;let{fetchRpcUrl:n}=e.networkRegistry[t];if(!n)throw Error(`No Fetch RPC URL In Provider Adapter`);this.fetchProviders[t]=n.includes(`wss`)?new o.ethers.WebSocketProvider(n):i.createJsonRpcProvider(t)})}initConnector(e){this.connector=e}initConfig(e){this.config=e}async init(e){if(!this.connector)throw Error(`No Connector In Provider Adapter`);if(e&&(this.chainId=e),!this.chainId)throw Error(`No Chain Id In Provider Adapter`);let t=await this.connector.getProvider();this.originalProvider=new o.ethers.BrowserProvider(t);let n=(await this.connector.getAccounts())?.[0];if(!n){this.chainEventListener&&this.chainEventListener.onChainChanged();return}this.signer=await this.walletClientToSigner({transport:t,account:n},this.chainId)}async disconnectFromConnector(){if(!this.config)throw Error(`No Config In Provider Adapter`);this.release(),await(0,c.disconnect)(this.config)}async connectToConnector(e){if(!this.config)throw Error(`No Config In Provider Adapter`);
|
|
1
|
+
require(`../../../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants/chains.constants.cjs`),t=require(`../error-handling/error-codes.constants.cjs`),n=require(`../types/eip5792.types.cjs`),r=require(`../error-handling/logger.cjs`),i=require(`../functions/utils/create-provider.cjs`),a=require(`../functions/web3/getContractMetadata.cjs`);let o=require(`ethers`),s=require(`wagmi`),c=require(`wagmi/actions`);var l=class l{connector;chainId;originalProvider;fetchProviders={};signer;chainEventListener;config;unsubscribeFns=[];constructor(){e.HINKAL_SUPPORTED_CHAINS.forEach(t=>{if(e.isSolanaLike(t))return;let{fetchRpcUrl:n}=e.networkRegistry[t];if(!n)throw Error(`No Fetch RPC URL In Provider Adapter`);this.fetchProviders[t]=n.includes(`wss`)?new o.ethers.WebSocketProvider(n):i.createJsonRpcProvider(t)})}initConnector(e){this.connector=e}initConfig(e){this.config=e}async init(e){if(!this.connector)throw Error(`No Connector In Provider Adapter`);if(e&&(this.chainId=e),!this.chainId)throw Error(`No Chain Id In Provider Adapter`);let t=await this.connector.getProvider();this.originalProvider=new o.ethers.BrowserProvider(t);let n=(await this.connector.getAccounts())?.[0];if(!n){this.chainEventListener&&this.chainEventListener.onChainChanged();return}this.signer=await this.walletClientToSigner({transport:t,account:n},this.chainId)}async disconnectFromConnector(){if(!this.config)throw Error(`No Config In Provider Adapter`);this.release(),await(0,c.disconnect)(this.config)}async connectToConnector(e){if(!this.config)throw Error(`No Config In Provider Adapter`);let{isConnected:n,chainId:r,address:i}=(0,c.getAccount)(this.config);if(n&&i){let t=r??await Promise.resolve(e.getChainId?.())??void 0;if(t)return t}if(e.id===`walletConnect`&&!n)try{await(0,c.reconnect)(this.config,{connectors:[e]}),await(0,c.disconnect)(this.config)}catch{}try{return(await(0,c.connect)(this.config,{connector:e})).chainId}catch(n){if(n instanceof s.ConnectorAlreadyConnectedError)return e.getChainId();let r=t.transactionErrorCodes.CONNECTION_FAILED;throw n?.code===4001&&(r=t.UserFriendlyErrorCodes.YOU_CANCELED_REQUEST),Error(r)}}getChainId(){return this.chainId}async waitForTransaction(e,n,r){if((await this.fetchProviders[e]?.waitForTransaction(n,r))?.status)return!0;throw Error(t.transactionErrorCodes.TRANSACTION_NOT_CONFIRMED)}async signMessage(e){if(!this.config)throw Error(`No Config In Provider Adapter`);let n=await(0,c.signMessage)(this.config,{message:e});if(!n)throw Error(t.transactionErrorCodes.SIGNING_FAILED);if(n.includes(`error`))throw Error(t.transactionErrorCodes.SIGNATURE_UNSUPPORTED_PERSONAL_SIGN);return n}async signTypedData(e,t,n){return this.signer.signTypedData(e,t,n)}async switchNetwork(t){if(!this.config)throw Error(`No Config In Provider Adapter`);let n=e.getOnchainChainId(t.chainId);return(0,c.switchChain)(this.config,{chainId:n})}async getAddress(){if(!this.config)throw Error(`No Config In Provider Adapter`);let{address:e}=(0,c.getAccount)(this.config);if(!e)throw Error(`IllegalState`);return o.ethers.getAddress(e)}setChainEventListener(e){if(!this.config)throw Error(`No Config In Provider Adapter`);this.chainEventListener=e,this.chainEventListener&&(this.unsubscribeFns.push((0,c.watchAccount)(this.config,{onChange:({address:e},{address:t})=>{this.chainEventListener&&e!==t&&this.chainEventListener.onAccountChanged()}})),this.unsubscribeFns.push((0,c.watchChainId)(this.config,{onChange:e=>{this.chainEventListener&&this.chainEventListener.onChainChanged(e)}})))}onAccountChanged(){return this.init()}onChainChanged(e){return this.init(e)}release(){this.removeListeners()}removeListeners(){this.unsubscribeFns.forEach(e=>e()),this.unsubscribeFns=[]}getContract(e,t,n=void 0,r){return a.getContract(t,e,n,r)}getContractWithSigner(e,t,n=void 0){if(!this.signer)throw Error(`IllegalState: no signer`);return this.getContract(e,t,n,this.signer)}getContractWithFetcher(e,t,n=void 0){let r=this.fetchProviders[e];if(!r)throw Error(`fetchProvider not initialized`);return this.getContract(e,t,n,r)}async sendTransaction(e){if(!this.signer)throw Error(`IllegalState: no signer`);return await this.signer.sendTransaction(e)}async connectAndPatchProvider(e){return await this.connectToConnector(e)}isPermitterAvailable(){if(!this.chainId)throw Error(`Illegal state: no chainId`);return!!e.networkRegistry[this.chainId]?.contractData?.permitterAddress}async getGasPrice(e){let t=(await this.fetchProviders[e]?.getFeeData())?.gasPrice;if(!t)throw Error(`Could not fetch gas price in getGasPrice`);return t}static FALLBACK_METHODS=new Set([`eth_blockNumber`,`eth_call`]);wrapTransportWithRpcFallback(e,t){let n=this.fetchProviders[t];return n?{request:async t=>{let r=await e.request(t);return r==null&&l.FALLBACK_METHODS.has(t.method)?n.send(t.method,Array.isArray(t.params)?t.params:[]):r}}:e}async walletClientToSigner(e,t){let{account:n,transport:r}=e;return new o.ethers.BrowserProvider(this.wrapTransportWithRpcFallback(r,t)).getSigner(n)}async supportsBatchCall(t){if(!this.originalProvider)return!1;try{let n=await this.getAddress(),r=`0x${e.getOnchainChainId(t).toString(16)}`,i=await this.originalProvider.send(`wallet_getCapabilities`,[n,[r]]),a=i?.[r]||i?.[`0x0`];if(!a?.atomic)return!1;let o=typeof a.atomic==`string`?a.atomic:a.atomic?.status;return o===`supported`||o===`ready`}catch{return!1}}async waitForBatchTransactionStatus(e){if(!this.originalProvider)throw Error(`WagmiProviderAdapter: Provider not initialized`);for(let t=0;t<60;t+=1){await new Promise(e=>{setTimeout(()=>e(),1e3)});try{let t=await this.originalProvider.send(`wallet_getCallsStatus`,[e]);if(t.status===n.CallsStatus.Confirmed&&t.receipts?.[0]?.transactionHash)return t.receipts[0].transactionHash;if(t.status===n.CallsStatus.OffchainFailure||t.status===n.CallsStatus.ChainFailure||t.status===n.CallsStatus.PartialFailure)break}catch(e){r.Logger.log(`waitForBatchTransactionStatus:`,e)}}throw Error(`Batch transaction timed out or failed`)}async sendBatchCallsTransaction(t,n){if(!this.fetchProviders[t])throw Error(`WagmiProviderAdapter: fetchProvider not initialized`);if(!this.originalProvider)throw Error(`WagmiProviderAdapter: Provider not initialized`);let r=await this.getAddress(),i={version:`2.0.0`,chainId:`0x${e.getOnchainChainId(t).toString(16)}`,from:r,atomicRequired:!0,calls:n},a=await this.originalProvider.send(`wallet_sendCalls`,[i]),o=a?.id||a;if(!o||typeof o!=`string`)throw Error(`Invalid batch ID received from wallet_sendCalls`);let s=await this.waitForBatchTransactionStatus(o),c=await this.fetchProviders[t].getTransaction(s);if(!c)throw Error(`Transaction not found`);return c}},u=new l,d=()=>new l;exports.default=d,exports.wagmiProviderAdapter=u;
|
|
@@ -52,11 +52,12 @@ var b = class b {
|
|
|
52
52
|
}
|
|
53
53
|
async connectToConnector(e) {
|
|
54
54
|
if (!this.config) throw Error("No Config In Provider Adapter");
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
let { isConnected: t, chainId: n, address: r } = m(this.config);
|
|
56
|
+
if (t && r) {
|
|
57
|
+
let t = n ?? await Promise.resolve(e.getChainId?.()) ?? void 0;
|
|
57
58
|
if (t) return t;
|
|
58
59
|
}
|
|
59
|
-
if (e.id === "walletConnect") try {
|
|
60
|
+
if (e.id === "walletConnect" && !t) try {
|
|
60
61
|
await h(this.config, { connectors: [e] }), await p(this.config);
|
|
61
62
|
} catch {}
|
|
62
63
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`../constants/vite.constants.cjs`),t=require(`../constants/chains.constants.cjs`),n=require(
|
|
1
|
+
const e=require(`../constants/vite.constants.cjs`),t=require(`../constants/chains.constants.cjs`),n=require(`./workerFactory.cjs`);var r=async r=>{let i=await n.WorkerFactory.getWebWorker(r.type);return new Promise((n,a)=>{let o={};if(typeof window<`u`&&window.location){let{origin:e,protocol:t,host:n,port:r,hostname:i,href:a}=window.location;o={origin:e,protocol:t,host:n,port:r,hostname:i,href:a}}i.onMessage(e=>{n(e),i.terminate()}),i.onError(e=>{a(e),i.terminate()});let s={payload:r.payload,metadata:{hostLocation:o,constants:{chains:{chainIds:t.chainIds},isDevelopment:e.isDevelopment}}};i.postMessage(s)})};exports.performTaskWithWorker=r;
|
|
@@ -1,42 +1,39 @@
|
|
|
1
1
|
import { isDevelopment as e } from "../constants/vite.constants.mjs";
|
|
2
2
|
import { chainIds as t } from "../constants/chains.constants.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import { WorkerFactory as r } from "./workerFactory.mjs";
|
|
3
|
+
import { WorkerFactory as n } from "./workerFactory.mjs";
|
|
5
4
|
//#region libs/shared/common/src/webworker/performTaskWithWorker.ts
|
|
6
|
-
var
|
|
7
|
-
let
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
return s.log("getWebWorker"), new Promise((n, r) => {
|
|
11
|
-
let i = {};
|
|
5
|
+
var r = async (r) => {
|
|
6
|
+
let i = await n.getWebWorker(r.type);
|
|
7
|
+
return new Promise((n, a) => {
|
|
8
|
+
let o = {};
|
|
12
9
|
if (typeof window < "u" && window.location) {
|
|
13
|
-
let { origin: e, protocol: t, host: n, port: r, hostname:
|
|
14
|
-
|
|
10
|
+
let { origin: e, protocol: t, host: n, port: r, hostname: i, href: a } = window.location;
|
|
11
|
+
o = {
|
|
15
12
|
origin: e,
|
|
16
13
|
protocol: t,
|
|
17
14
|
host: n,
|
|
18
15
|
port: r,
|
|
19
|
-
hostname:
|
|
20
|
-
href:
|
|
16
|
+
hostname: i,
|
|
17
|
+
href: a
|
|
21
18
|
};
|
|
22
19
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}),
|
|
26
|
-
|
|
20
|
+
i.onMessage((e) => {
|
|
21
|
+
n(e), i.terminate();
|
|
22
|
+
}), i.onError((e) => {
|
|
23
|
+
a(e), i.terminate();
|
|
27
24
|
});
|
|
28
|
-
let
|
|
29
|
-
payload:
|
|
25
|
+
let s = {
|
|
26
|
+
payload: r.payload,
|
|
30
27
|
metadata: {
|
|
31
|
-
hostLocation:
|
|
28
|
+
hostLocation: o,
|
|
32
29
|
constants: {
|
|
33
30
|
chains: { chainIds: t },
|
|
34
31
|
isDevelopment: e
|
|
35
32
|
}
|
|
36
33
|
}
|
|
37
34
|
};
|
|
38
|
-
|
|
35
|
+
i.postMessage(s);
|
|
39
36
|
});
|
|
40
37
|
};
|
|
41
38
|
//#endregion
|
|
42
|
-
export {
|
|
39
|
+
export { r as performTaskWithWorker };
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
var e = /* @__PURE__ */ ((r) => (r.ZKProof = "ZKProof", r.SnarkJS = "SnarkJS", r.UTXO = "UTXO", r))(e || {});
|
|
15
15
|
|
|
16
16
|
const n = async () => ({
|
|
17
|
-
[e.ZKProof]: await getWorkerURL(domain + '/0.3.
|
|
18
|
-
[e.SnarkJS]: await getWorkerURL(domain + '/0.3.
|
|
19
|
-
[e.UTXO]: await getWorkerURL(domain + '/0.3.
|
|
17
|
+
[e.ZKProof]: await getWorkerURL(domain + '/0.3.22/' + 'zkProofWorkerLauncher.js'),
|
|
18
|
+
[e.SnarkJS]: await getWorkerURL(domain + '/0.3.22/' + 'snarkjsWorkerLauncher.js'),
|
|
19
|
+
[e.UTXO]: await getWorkerURL(domain + '/0.3.22/' + 'utxoWorkerLauncher.js'),
|
|
20
20
|
});
|
|
21
21
|
exports.getWorkerViteURL = n;
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
var e = /* @__PURE__ */ ((r) => (r.ZKProof = "ZKProof", r.SnarkJS = "SnarkJS", r.UTXO = "UTXO", r))(e || {});
|
|
15
15
|
|
|
16
16
|
const n = async () => ({
|
|
17
|
-
[e.ZKProof]: await getWorkerURL(domain + '/0.3.
|
|
18
|
-
[e.SnarkJS]: await getWorkerURL(domain + '/0.3.
|
|
19
|
-
[e.UTXO]: await getWorkerURL(domain + '/0.3.
|
|
17
|
+
[e.ZKProof]: await getWorkerURL(domain + '/0.3.22/' + 'zkProofWorkerLauncher.js'),
|
|
18
|
+
[e.SnarkJS]: await getWorkerURL(domain + '/0.3.22/' + 'snarkjsWorkerLauncher.js'),
|
|
19
|
+
[e.UTXO]: await getWorkerURL(domain + '/0.3.22/' + 'utxoWorkerLauncher.js'),
|
|
20
20
|
});
|
|
21
21
|
export { n as getWorkerViteURL };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../common/src/
|
|
1
|
+
require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../common/src/webworker/workerFactory.cjs`),t=require(`./workerCDNUrls.cjs`),n=require(`./bridge/serialization.utils.cjs`),r=require(`./bridge/HinkalRNWorker.cjs`);let i=require(`react`),a=require(`react-native`),o=require(`react-native-webview`),s=require(`react/jsx-runtime`);var c=`${new URL(Object.values(t.WORKER_CDN_URLS)[0]).origin}/`;e.WorkerFactory.rnWorkerFactory=e=>new r.HinkalRNWorker(e);var l=`
|
|
2
2
|
if (!window.__hinkalPageBoot) (function(){
|
|
3
3
|
window.__hinkalPageBoot = true;
|
|
4
|
-
var URLS = ${JSON.stringify(
|
|
4
|
+
var URLS = ${JSON.stringify(t.WORKER_CDN_URLS)};
|
|
5
5
|
var BLOBS = {};
|
|
6
6
|
|
|
7
7
|
function replacer(_key, value){
|
|
@@ -22,18 +22,6 @@ if (!window.__hinkalPageBoot) (function(){
|
|
|
22
22
|
var out = {}; for (var i = 0; i < keys.length; i++) out[keys[i]] = revive(value[keys[i]]); return out;
|
|
23
23
|
}
|
|
24
24
|
function post(payload){ try { window.ReactNativeWebView.postMessage(JSON.stringify(payload, replacer)); } catch(_){} }
|
|
25
|
-
function logTiming(requestId, marks, phase, extra){
|
|
26
|
-
var now = Date.now();
|
|
27
|
-
post({
|
|
28
|
-
type: 'TIMING',
|
|
29
|
-
requestId: requestId,
|
|
30
|
-
phase: phase,
|
|
31
|
-
stepMs: now - marks.last,
|
|
32
|
-
totalMs: now - marks.start,
|
|
33
|
-
extra: extra || null,
|
|
34
|
-
});
|
|
35
|
-
marks.last = now;
|
|
36
|
-
}
|
|
37
25
|
function describe(error){
|
|
38
26
|
if (!error) return 'worker error';
|
|
39
27
|
if (error.message) return error.message;
|
|
@@ -41,16 +29,11 @@ if (!window.__hinkalPageBoot) (function(){
|
|
|
41
29
|
try { return JSON.stringify(error); } catch(_){ return String(error); }
|
|
42
30
|
}
|
|
43
31
|
|
|
44
|
-
async function blobUrl(url
|
|
45
|
-
if (BLOBS[url])
|
|
46
|
-
logTiming(requestId, marks, 'blobUrl-cache-hit', { url: url });
|
|
47
|
-
return BLOBS[url];
|
|
48
|
-
}
|
|
49
|
-
logTiming(requestId, marks, 'blobUrl-fetch-start', { url: url });
|
|
32
|
+
async function blobUrl(url){
|
|
33
|
+
if (BLOBS[url]) return BLOBS[url];
|
|
50
34
|
var response = await fetch(url);
|
|
51
35
|
if (!response.ok) throw new Error('HTTP ' + response.status + ' ' + url);
|
|
52
36
|
var body = await response.text();
|
|
53
|
-
logTiming(requestId, marks, 'blobUrl-fetch-done', { bytes: body.length });
|
|
54
37
|
BLOBS[url] = URL.createObjectURL(new Blob([${JSON.stringify(`(function(){
|
|
55
38
|
var post = self.postMessage.bind(self);
|
|
56
39
|
function describe(error){
|
|
@@ -65,7 +48,6 @@ if (!window.__hinkalPageBoot) (function(){
|
|
|
65
48
|
self.addEventListener('unhandledrejection', function(event){ try { post({ __hinkalWorkerError: 'unhandledrejection: ' + describe(event && event.reason) }); } catch(_){} });
|
|
66
49
|
try { post({ __hinkalWorkerReady: true }); } catch(_){}
|
|
67
50
|
})();`)}, body], { type: 'application/javascript' }));
|
|
68
|
-
logTiming(requestId, marks, 'blobUrl-created');
|
|
69
51
|
return BLOBS[url];
|
|
70
52
|
}
|
|
71
53
|
|
|
@@ -76,18 +58,12 @@ if (!window.__hinkalPageBoot) (function(){
|
|
|
76
58
|
window.handleMessage = async function(envelope){
|
|
77
59
|
var requestId = envelope && envelope.requestId;
|
|
78
60
|
var variant = envelope && envelope.variant;
|
|
79
|
-
var marks = { start: Date.now(), last: Date.now() };
|
|
80
|
-
logTiming(requestId, marks, 'handleMessage-start', { variant: variant });
|
|
81
61
|
var message = revive(envelope && envelope.message);
|
|
82
|
-
logTiming(requestId, marks, 'message-revived');
|
|
83
62
|
var url = URLS[variant];
|
|
84
63
|
if (!url) return post({ requestId: requestId, type: 'ERROR', error: 'Unknown variant: ' + variant });
|
|
85
64
|
|
|
86
65
|
var worker;
|
|
87
|
-
try {
|
|
88
|
-
worker = spawn(await blobUrl(url, requestId, marks));
|
|
89
|
-
logTiming(requestId, marks, 'worker-spawned');
|
|
90
|
-
}
|
|
66
|
+
try { worker = spawn(await blobUrl(url)); }
|
|
91
67
|
catch (error) { return post({ requestId: requestId, type: 'ERROR', error: 'spawn failed: ' + describe(error) }); }
|
|
92
68
|
|
|
93
69
|
var done = false, ready = false, pending = message;
|
|
@@ -98,24 +74,20 @@ if (!window.__hinkalPageBoot) (function(){
|
|
|
98
74
|
if (data && typeof data === 'object') {
|
|
99
75
|
if (data.__hinkalWorkerReady) {
|
|
100
76
|
ready = true;
|
|
101
|
-
|
|
102
|
-
try { worker.postMessage(pending); pending = null; logTiming(requestId, marks, 'worker-payload-sent'); }
|
|
77
|
+
try { worker.postMessage(pending); pending = null; }
|
|
103
78
|
catch (error) { post({ requestId: requestId, type: 'ERROR', error: 'postMessage failed: ' + describe(error) }); finish(); }
|
|
104
79
|
return;
|
|
105
80
|
}
|
|
106
81
|
if (typeof data.__hinkalWorkerError === 'string') {
|
|
107
|
-
logTiming(requestId, marks, 'worker-error', { error: data.__hinkalWorkerError });
|
|
108
82
|
post({ requestId: requestId, type: 'ERROR', error: data.__hinkalWorkerError });
|
|
109
83
|
finish();
|
|
110
84
|
return;
|
|
111
85
|
}
|
|
112
86
|
}
|
|
113
|
-
logTiming(requestId, marks, 'worker-result');
|
|
114
87
|
post({ requestId: requestId, type: 'RESULT', data: data });
|
|
115
88
|
finish();
|
|
116
89
|
};
|
|
117
90
|
worker.onerror = function(event){
|
|
118
|
-
logTiming(requestId, marks, 'worker-onerror', { ready: ready });
|
|
119
91
|
post({ requestId: requestId, type: 'ERROR', error: (ready ? 'worker runtime: ' : 'worker startup: ') + describe(event) });
|
|
120
92
|
finish();
|
|
121
93
|
};
|
|
@@ -123,4 +95,4 @@ if (!window.__hinkalPageBoot) (function(){
|
|
|
123
95
|
|
|
124
96
|
post({ type: 'READY' });
|
|
125
97
|
})();
|
|
126
|
-
true;`,
|
|
98
|
+
true;`,u=`<!DOCTYPE html><html><head><meta charset="utf-8"/></head><body><script>${l}<\/script></body></html>`,d=a.StyleSheet.create({hiddenHost:{position:`absolute`,height:1,width:1,left:-9999,top:-9999,opacity:0}}),f=()=>{let e=(0,i.useRef)(null),t=(0,i.useRef)({ready:!1,queue:[]}),r=(0,i.useCallback)((t,r,i)=>{let o;try{o=JSON.stringify({requestId:t,variant:r,message:i},n.bigIntReplacer)}catch(e){a.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,{requestId:t,type:`ERROR`,error:`serialize failed: ${e?.message??e}`});return}e.current?.injectJavaScript(`window.handleMessage && window.handleMessage(${o}); true;`)},[]);(0,i.useEffect)(()=>{let e=a.DeviceEventEmitter.addListener(`TO_WEBVIEW_WORKER`,e=>{let n={requestId:e?.__requestId??``,variant:e?.variant??``,message:e?.message};t.current.ready?r(n.requestId,n.variant,n.message):t.current.queue.push(n)});return()=>e.remove()},[r]);let f=(0,i.useCallback)(e=>{let i;try{i=n.reviveBigInts(JSON.parse(e.nativeEvent.data))}catch(e){a.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,{type:`ERROR`,error:e?.message??`parse error`});return}if(i?.type===`READY`){t.current.ready=!0;let e=t.current.queue;t.current.queue=[],e.forEach(({requestId:e,variant:t,message:n})=>r(e,t,n));return}a.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,i)},[r]);return(0,s.jsx)(a.View,{pointerEvents:`none`,style:d.hiddenHost,children:(0,s.jsx)(o.WebView,{ref:e,source:{html:u,baseUrl:c},originWhitelist:[`*`],javaScriptEnabled:!0,domStorageEnabled:!0,androidLayerType:`hardware`,onMessage:f,onLoad:()=>e.current?.injectJavaScript(l)})})};module.exports=f;
|
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import { jsx as p } from "react/jsx-runtime";
|
|
1
|
+
import { WorkerFactory as e } from "../common/src/webworker/workerFactory.mjs";
|
|
2
|
+
import { WORKER_CDN_URLS as t } from "./workerCDNUrls.mjs";
|
|
3
|
+
import { bigIntReplacer as n, reviveBigInts as r } from "./bridge/serialization.utils.mjs";
|
|
4
|
+
import { HinkalRNWorker as i } from "./bridge/HinkalRNWorker.mjs";
|
|
5
|
+
import { useCallback as a, useEffect as o, useRef as s } from "react";
|
|
6
|
+
import { DeviceEventEmitter as c, StyleSheet as l, View as u } from "react-native";
|
|
7
|
+
import { WebView as d } from "react-native-webview";
|
|
8
|
+
import { jsx as f } from "react/jsx-runtime";
|
|
10
9
|
//#region libs/shared/sdk/src/react-native/HinkalWebViewWorker.tsx
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
var
|
|
10
|
+
var p = `${new URL(Object.values(t)[0]).origin}/`;
|
|
11
|
+
e.rnWorkerFactory = (e) => new i(e);
|
|
12
|
+
var m = `
|
|
14
13
|
if (!window.__hinkalPageBoot) (function(){
|
|
15
14
|
window.__hinkalPageBoot = true;
|
|
16
|
-
var URLS = ${JSON.stringify(
|
|
15
|
+
var URLS = ${JSON.stringify(t)};
|
|
17
16
|
var BLOBS = {};
|
|
18
17
|
|
|
19
18
|
function replacer(_key, value){
|
|
@@ -34,18 +33,6 @@ if (!window.__hinkalPageBoot) (function(){
|
|
|
34
33
|
var out = {}; for (var i = 0; i < keys.length; i++) out[keys[i]] = revive(value[keys[i]]); return out;
|
|
35
34
|
}
|
|
36
35
|
function post(payload){ try { window.ReactNativeWebView.postMessage(JSON.stringify(payload, replacer)); } catch(_){} }
|
|
37
|
-
function logTiming(requestId, marks, phase, extra){
|
|
38
|
-
var now = Date.now();
|
|
39
|
-
post({
|
|
40
|
-
type: 'TIMING',
|
|
41
|
-
requestId: requestId,
|
|
42
|
-
phase: phase,
|
|
43
|
-
stepMs: now - marks.last,
|
|
44
|
-
totalMs: now - marks.start,
|
|
45
|
-
extra: extra || null,
|
|
46
|
-
});
|
|
47
|
-
marks.last = now;
|
|
48
|
-
}
|
|
49
36
|
function describe(error){
|
|
50
37
|
if (!error) return 'worker error';
|
|
51
38
|
if (error.message) return error.message;
|
|
@@ -53,18 +40,12 @@ if (!window.__hinkalPageBoot) (function(){
|
|
|
53
40
|
try { return JSON.stringify(error); } catch(_){ return String(error); }
|
|
54
41
|
}
|
|
55
42
|
|
|
56
|
-
async function blobUrl(url
|
|
57
|
-
if (BLOBS[url])
|
|
58
|
-
logTiming(requestId, marks, 'blobUrl-cache-hit', { url: url });
|
|
59
|
-
return BLOBS[url];
|
|
60
|
-
}
|
|
61
|
-
logTiming(requestId, marks, 'blobUrl-fetch-start', { url: url });
|
|
43
|
+
async function blobUrl(url){
|
|
44
|
+
if (BLOBS[url]) return BLOBS[url];
|
|
62
45
|
var response = await fetch(url);
|
|
63
46
|
if (!response.ok) throw new Error('HTTP ' + response.status + ' ' + url);
|
|
64
47
|
var body = await response.text();
|
|
65
|
-
logTiming(requestId, marks, 'blobUrl-fetch-done', { bytes: body.length });
|
|
66
48
|
BLOBS[url] = URL.createObjectURL(new Blob([${JSON.stringify("(function(){\n var post = self.postMessage.bind(self);\n function describe(error){\n if (!error) return 'unknown';\n var parts = [];\n if (error.message) parts.push(error.message);\n if (error.error && error.error.stack) parts.push(error.error.stack);\n if (!parts.length) { try { parts.push(JSON.stringify(error)); } catch(_) { parts.push(String(error)); } }\n return parts.join(' | ');\n }\n self.addEventListener('error', function(event){ try { post({ __hinkalWorkerError: describe(event) }); } catch(_){} });\n self.addEventListener('unhandledrejection', function(event){ try { post({ __hinkalWorkerError: 'unhandledrejection: ' + describe(event && event.reason) }); } catch(_){} });\n try { post({ __hinkalWorkerReady: true }); } catch(_){}\n})();")}, body], { type: 'application/javascript' }));
|
|
67
|
-
logTiming(requestId, marks, 'blobUrl-created');
|
|
68
49
|
return BLOBS[url];
|
|
69
50
|
}
|
|
70
51
|
|
|
@@ -75,18 +56,12 @@ if (!window.__hinkalPageBoot) (function(){
|
|
|
75
56
|
window.handleMessage = async function(envelope){
|
|
76
57
|
var requestId = envelope && envelope.requestId;
|
|
77
58
|
var variant = envelope && envelope.variant;
|
|
78
|
-
var marks = { start: Date.now(), last: Date.now() };
|
|
79
|
-
logTiming(requestId, marks, 'handleMessage-start', { variant: variant });
|
|
80
59
|
var message = revive(envelope && envelope.message);
|
|
81
|
-
logTiming(requestId, marks, 'message-revived');
|
|
82
60
|
var url = URLS[variant];
|
|
83
61
|
if (!url) return post({ requestId: requestId, type: 'ERROR', error: 'Unknown variant: ' + variant });
|
|
84
62
|
|
|
85
63
|
var worker;
|
|
86
|
-
try {
|
|
87
|
-
worker = spawn(await blobUrl(url, requestId, marks));
|
|
88
|
-
logTiming(requestId, marks, 'worker-spawned');
|
|
89
|
-
}
|
|
64
|
+
try { worker = spawn(await blobUrl(url)); }
|
|
90
65
|
catch (error) { return post({ requestId: requestId, type: 'ERROR', error: 'spawn failed: ' + describe(error) }); }
|
|
91
66
|
|
|
92
67
|
var done = false, ready = false, pending = message;
|
|
@@ -97,24 +72,20 @@ if (!window.__hinkalPageBoot) (function(){
|
|
|
97
72
|
if (data && typeof data === 'object') {
|
|
98
73
|
if (data.__hinkalWorkerReady) {
|
|
99
74
|
ready = true;
|
|
100
|
-
|
|
101
|
-
try { worker.postMessage(pending); pending = null; logTiming(requestId, marks, 'worker-payload-sent'); }
|
|
75
|
+
try { worker.postMessage(pending); pending = null; }
|
|
102
76
|
catch (error) { post({ requestId: requestId, type: 'ERROR', error: 'postMessage failed: ' + describe(error) }); finish(); }
|
|
103
77
|
return;
|
|
104
78
|
}
|
|
105
79
|
if (typeof data.__hinkalWorkerError === 'string') {
|
|
106
|
-
logTiming(requestId, marks, 'worker-error', { error: data.__hinkalWorkerError });
|
|
107
80
|
post({ requestId: requestId, type: 'ERROR', error: data.__hinkalWorkerError });
|
|
108
81
|
finish();
|
|
109
82
|
return;
|
|
110
83
|
}
|
|
111
84
|
}
|
|
112
|
-
logTiming(requestId, marks, 'worker-result');
|
|
113
85
|
post({ requestId: requestId, type: 'RESULT', data: data });
|
|
114
86
|
finish();
|
|
115
87
|
};
|
|
116
88
|
worker.onerror = function(event){
|
|
117
|
-
logTiming(requestId, marks, 'worker-onerror', { ready: ready });
|
|
118
89
|
post({ requestId: requestId, type: 'ERROR', error: (ready ? 'worker runtime: ' : 'worker startup: ') + describe(event) });
|
|
119
90
|
finish();
|
|
120
91
|
};
|
|
@@ -122,98 +93,82 @@ if (!window.__hinkalPageBoot) (function(){
|
|
|
122
93
|
|
|
123
94
|
post({ type: 'READY' });
|
|
124
95
|
})();
|
|
125
|
-
true;`,
|
|
96
|
+
true;`, h = `<!DOCTYPE html><html><head><meta charset="utf-8"/></head><body><script>${m}<\/script></body></html>`, g = l.create({ hiddenHost: {
|
|
126
97
|
position: "absolute",
|
|
127
98
|
height: 1,
|
|
128
99
|
width: 1,
|
|
129
100
|
left: -9999,
|
|
130
101
|
top: -9999,
|
|
131
102
|
opacity: 0
|
|
132
|
-
} }),
|
|
133
|
-
let
|
|
103
|
+
} }), _ = () => {
|
|
104
|
+
let e = s(null), t = s({
|
|
134
105
|
ready: !1,
|
|
135
106
|
queue: []
|
|
136
|
-
}),
|
|
137
|
-
let
|
|
138
|
-
o.log("start", { variant: i });
|
|
139
|
-
let s;
|
|
107
|
+
}), i = a((t, r, i) => {
|
|
108
|
+
let a;
|
|
140
109
|
try {
|
|
141
|
-
|
|
142
|
-
requestId:
|
|
143
|
-
variant:
|
|
144
|
-
message:
|
|
145
|
-
},
|
|
110
|
+
a = JSON.stringify({
|
|
111
|
+
requestId: t,
|
|
112
|
+
variant: r,
|
|
113
|
+
message: i
|
|
114
|
+
}, n);
|
|
146
115
|
} catch (e) {
|
|
147
|
-
|
|
148
|
-
requestId:
|
|
116
|
+
c.emit("FROM_WEBVIEW_WORKER", {
|
|
117
|
+
requestId: t,
|
|
149
118
|
type: "ERROR",
|
|
150
119
|
error: `serialize failed: ${e?.message ?? e}`
|
|
151
120
|
});
|
|
152
121
|
return;
|
|
153
122
|
}
|
|
154
|
-
|
|
123
|
+
e.current?.injectJavaScript(`window.handleMessage && window.handleMessage(${a}); true;`);
|
|
155
124
|
}, []);
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
let t = {
|
|
125
|
+
o(() => {
|
|
126
|
+
let e = c.addListener("TO_WEBVIEW_WORKER", (e) => {
|
|
127
|
+
let n = {
|
|
160
128
|
requestId: e?.__requestId ?? "",
|
|
161
129
|
variant: e?.variant ?? "",
|
|
162
130
|
message: e?.message
|
|
163
131
|
};
|
|
164
|
-
|
|
165
|
-
requestId: t.requestId,
|
|
166
|
-
variant: t.variant
|
|
167
|
-
}), u(t.requestId, t.variant, t.message)) : (a.current.log("TO_WEBVIEW_WORKER-queued", {
|
|
168
|
-
requestId: t.requestId,
|
|
169
|
-
variant: t.variant
|
|
170
|
-
}), n.current.queue.push(t));
|
|
132
|
+
t.current.ready ? i(n.requestId, n.variant, n.message) : t.current.queue.push(n);
|
|
171
133
|
});
|
|
172
134
|
return () => e.remove();
|
|
173
|
-
}, [
|
|
174
|
-
let
|
|
175
|
-
let
|
|
135
|
+
}, [i]);
|
|
136
|
+
let l = a((e) => {
|
|
137
|
+
let n;
|
|
176
138
|
try {
|
|
177
|
-
|
|
139
|
+
n = r(JSON.parse(e.nativeEvent.data));
|
|
178
140
|
} catch (e) {
|
|
179
|
-
|
|
141
|
+
c.emit("FROM_WEBVIEW_WORKER", {
|
|
180
142
|
type: "ERROR",
|
|
181
143
|
error: e?.message ?? "parse error"
|
|
182
144
|
});
|
|
183
145
|
return;
|
|
184
146
|
}
|
|
185
|
-
if (
|
|
186
|
-
|
|
187
|
-
let e =
|
|
188
|
-
|
|
189
|
-
return;
|
|
190
|
-
}
|
|
191
|
-
if (t?.type === "TIMING") {
|
|
192
|
-
let e = t.extra ? ` ${JSON.stringify(t.extra)}` : "";
|
|
193
|
-
console.log(`[HinkalTiming] [webview:${t.requestId ?? "unknown"}] ${t.phase} +${t.stepMs}ms (total ${t.totalMs}ms)${e}`);
|
|
147
|
+
if (n?.type === "READY") {
|
|
148
|
+
t.current.ready = !0;
|
|
149
|
+
let e = t.current.queue;
|
|
150
|
+
t.current.queue = [], e.forEach(({ requestId: e, variant: t, message: n }) => i(e, t, n));
|
|
194
151
|
return;
|
|
195
152
|
}
|
|
196
|
-
|
|
197
|
-
}, [
|
|
198
|
-
return /* @__PURE__ */
|
|
153
|
+
c.emit("FROM_WEBVIEW_WORKER", n);
|
|
154
|
+
}, [i]);
|
|
155
|
+
return /* @__PURE__ */ f(u, {
|
|
199
156
|
pointerEvents: "none",
|
|
200
|
-
style:
|
|
201
|
-
children: /* @__PURE__ */
|
|
202
|
-
ref:
|
|
157
|
+
style: g.hiddenHost,
|
|
158
|
+
children: /* @__PURE__ */ f(d, {
|
|
159
|
+
ref: e,
|
|
203
160
|
source: {
|
|
204
|
-
html:
|
|
205
|
-
baseUrl:
|
|
161
|
+
html: h,
|
|
162
|
+
baseUrl: p
|
|
206
163
|
},
|
|
207
164
|
originWhitelist: ["*"],
|
|
208
165
|
javaScriptEnabled: !0,
|
|
209
166
|
domStorageEnabled: !0,
|
|
210
167
|
androidLayerType: "hardware",
|
|
211
|
-
onMessage:
|
|
212
|
-
onLoad: () =>
|
|
213
|
-
a.current.log("webview-onLoad"), t.current?.injectJavaScript(h);
|
|
214
|
-
}
|
|
168
|
+
onMessage: l,
|
|
169
|
+
onLoad: () => e.current?.injectJavaScript(m)
|
|
215
170
|
})
|
|
216
171
|
});
|
|
217
172
|
};
|
|
218
173
|
//#endregion
|
|
219
|
-
export {
|
|
174
|
+
export { _ as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(
|
|
1
|
+
require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`./serialization.utils.cjs`);let t=require(`react-native`);var n=class{onmessage=null;onerror=null;requestId=e.nextRequestId();subscription;constructor(e){this.variant=e,this.subscription=t.DeviceEventEmitter.addListener(`FROM_WEBVIEW_WORKER`,e=>{!e||e.requestId!==this.requestId||(e.type===`RESULT`?this.onmessage?.({data:e.data}):e.type===`ERROR`&&this.onerror?.(Error(e.error??`WebView worker error`)))})}postMessage(e){t.DeviceEventEmitter.emit(`TO_WEBVIEW_WORKER`,{__requestId:this.requestId,variant:this.variant,message:e})}terminate(){this.subscription?.remove?.(),this.subscription=null}};exports.HinkalRNWorker=n;
|
|
@@ -1,20 +1,18 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { DeviceEventEmitter as n } from "react-native";
|
|
1
|
+
import { nextRequestId as e } from "./serialization.utils.mjs";
|
|
2
|
+
import { DeviceEventEmitter as t } from "react-native";
|
|
4
3
|
//#region libs/shared/sdk/src/react-native/bridge/HinkalRNWorker.ts
|
|
5
|
-
var
|
|
4
|
+
var n = class {
|
|
6
5
|
onmessage = null;
|
|
7
6
|
onerror = null;
|
|
8
|
-
requestId =
|
|
7
|
+
requestId = e();
|
|
9
8
|
subscription;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
!e || e.requestId !== this.requestId || (e.type === "RESULT" ? (this.timing.log("result-from-webview"), this.onmessage?.({ data: e.data })) : e.type === "ERROR" && (this.timing.log("error-from-webview", { error: e.error }), this.onerror?.(Error(e.error ?? "WebView worker error"))));
|
|
9
|
+
constructor(e) {
|
|
10
|
+
this.variant = e, this.subscription = t.addListener("FROM_WEBVIEW_WORKER", (e) => {
|
|
11
|
+
!e || e.requestId !== this.requestId || (e.type === "RESULT" ? this.onmessage?.({ data: e.data }) : e.type === "ERROR" && this.onerror?.(Error(e.error ?? "WebView worker error")));
|
|
14
12
|
});
|
|
15
13
|
}
|
|
16
14
|
postMessage(e) {
|
|
17
|
-
|
|
15
|
+
t.emit("TO_WEBVIEW_WORKER", {
|
|
18
16
|
__requestId: this.requestId,
|
|
19
17
|
variant: this.variant,
|
|
20
18
|
message: e
|
|
@@ -25,4 +23,4 @@ var r = class {
|
|
|
25
23
|
}
|
|
26
24
|
};
|
|
27
25
|
//#endregion
|
|
28
|
-
export {
|
|
26
|
+
export { n as HinkalRNWorker };
|
|
@@ -17,12 +17,7 @@ const shim = (name) => ({
|
|
|
17
17
|
type: 'sourceFile',
|
|
18
18
|
});
|
|
19
19
|
|
|
20
|
-
const isFromHinkalSdk = (originPath) =>
|
|
21
|
-
!!originPath &&
|
|
22
|
-
(originPath.includes('/@hinkal/sdk/') ||
|
|
23
|
-
originPath.includes('/@gurge/sdk/') ||
|
|
24
|
-
originPath.includes('node_modules/@hinkal/sdk') ||
|
|
25
|
-
originPath.includes('node_modules/@gurge/sdk'));
|
|
20
|
+
const isFromHinkalSdk = (originPath) => !!originPath && originPath.includes('/@hinkal/sdk/');
|
|
26
21
|
|
|
27
22
|
const applyHinkalMetroConfig = (config) => {
|
|
28
23
|
if (!config || !config.resolver) {
|
|
@@ -73,12 +68,10 @@ const applyHinkalMetroConfig = (config) => {
|
|
|
73
68
|
if (moduleName === 'circomlibjs-hinkal-fork') return shim('circomlibjs-hinkal-fork');
|
|
74
69
|
if (moduleName === 'assert') return { filePath: require.resolve('assert/'), type: 'sourceFile' };
|
|
75
70
|
|
|
76
|
-
// IndexedDB is unavailable on RN; always route idb-keyval through AsyncStorage shim.
|
|
77
|
-
if (moduleName === 'idb-keyval') return shim('idb-keyval');
|
|
78
|
-
|
|
79
71
|
if (isFromHinkalSdk(context.originModulePath)) {
|
|
80
72
|
if (moduleName === 'multiformats' || moduleName.startsWith('multiformats/')) return shim('multiformats');
|
|
81
73
|
if (moduleName === 'snarkjs') return shim('snarkjs');
|
|
74
|
+
if (moduleName === 'idb-keyval') return shim('idb-keyval');
|
|
82
75
|
}
|
|
83
76
|
|
|
84
77
|
if (moduleName.startsWith('node:')) {
|
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
// idb-keyval shim for React Native
|
|
1
|
+
// idb-keyval shim for React Native
|
|
2
2
|
const AsyncStorage =
|
|
3
3
|
require("@react-native-async-storage/async-storage").default;
|
|
4
4
|
|
|
5
5
|
const PREFIX = "@hinkal/idb-keyval:";
|
|
6
6
|
const key = (k) => `${PREFIX}${typeof k === "string" ? k : JSON.stringify(k)}`;
|
|
7
7
|
|
|
8
|
+
const replacer = (_key, value) =>
|
|
9
|
+
typeof value === "bigint" ? { __bigint: value.toString() } : value;
|
|
10
|
+
|
|
11
|
+
const reviver = (_key, value) =>
|
|
12
|
+
value && typeof value === "object" && "__bigint" in value
|
|
13
|
+
? BigInt(value.__bigint)
|
|
14
|
+
: value;
|
|
15
|
+
|
|
8
16
|
async function get(k) {
|
|
9
17
|
const raw = await AsyncStorage.getItem(key(k));
|
|
10
18
|
if (raw == null) return undefined;
|
|
11
19
|
try {
|
|
12
|
-
return JSON.parse(raw);
|
|
20
|
+
return JSON.parse(raw, reviver);
|
|
13
21
|
} catch {
|
|
14
22
|
return undefined;
|
|
15
23
|
}
|
|
@@ -20,7 +28,7 @@ async function set(k, value) {
|
|
|
20
28
|
await AsyncStorage.removeItem(key(k));
|
|
21
29
|
return;
|
|
22
30
|
}
|
|
23
|
-
await AsyncStorage.setItem(key(k), JSON.stringify(value));
|
|
31
|
+
await AsyncStorage.setItem(key(k), JSON.stringify(value, replacer));
|
|
24
32
|
}
|
|
25
33
|
|
|
26
34
|
async function update(k, updater) {
|
|
@@ -57,7 +65,6 @@ async function entries() {
|
|
|
57
65
|
}
|
|
58
66
|
|
|
59
67
|
function createStore() {
|
|
60
|
-
// idb-keyval lets callers create a store with a custom DB name; we ignore it
|
|
61
68
|
return undefined;
|
|
62
69
|
}
|
|
63
70
|
|
package/sdk/package.json.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={name:`@gurge/sdk`,version:`0.3.
|
|
1
|
+
var e={name:`@gurge/sdk`,version:`0.3.21`,homepage:`hinkal.io`,author:{name:`Hinkal Protocol`},keywords:[`blockchain`,`privacy`,`zero-knowledge`,`stealth addresses`],exports:{".":{types:`./index.d.ts`,"react-native":`./index.cjs`,import:`./index.mjs`,default:`./index.cjs`},"./providers/WagmiProviderAdapter":{types:`./providers/WagmiProviderAdapter.d.ts`,"react-native":`./providers/WagmiProviderAdapter.cjs`,import:`./providers/WagmiProviderAdapter.mjs`,default:`./providers/WagmiProviderAdapter.cjs`},"./providers/EthersProviderAdapter":{types:`./providers/EthersProviderAdapter.d.ts`,"react-native":`./providers/EthersProviderAdapter.cjs`,import:`./providers/EthersProviderAdapter.mjs`,default:`./providers/EthersProviderAdapter.cjs`},"./providers/TronProviderAdapter":{types:`./providers/TronProviderAdapter.d.ts`,"react-native":`./providers/TronProviderAdapter.cjs`,import:`./providers/TronProviderAdapter.mjs`,default:`./providers/TronProviderAdapter.cjs`},"./providers/SolanaProviderAdapter":{types:`./providers/SolanaProviderAdapter.d.ts`,"react-native":`./providers/SolanaProviderAdapter.cjs`,import:`./providers/SolanaProviderAdapter.mjs`,default:`./providers/SolanaProviderAdapter.cjs`},"./providers/prepareEthersHinkal":{types:`./providers/prepareEthersHinkal.d.ts`,"react-native":`./providers/prepareEthersHinkal.cjs`,import:`./providers/prepareEthersHinkal.mjs`,default:`./providers/prepareEthersHinkal.cjs`},"./providers/prepareWagmiHinkal":{types:`./providers/prepareWagmiHinkal.d.ts`,"react-native":`./providers/prepareWagmiHinkal.cjs`,import:`./providers/prepareWagmiHinkal.mjs`,default:`./providers/prepareWagmiHinkal.cjs`},"./providers/prepareTronHinkal":{types:`./providers/prepareTronHinkal.d.ts`,"react-native":`./providers/prepareTronHinkal.cjs`,import:`./providers/prepareTronHinkal.mjs`,default:`./providers/prepareTronHinkal.cjs`},"./providers/prepareSolanaHinkal":{types:`./providers/prepareSolanaHinkal.d.ts`,"react-native":`./providers/prepareSolanaHinkal.cjs`,import:`./providers/prepareSolanaHinkal.mjs`,default:`./providers/prepareSolanaHinkal.cjs`},"./react-native/HinkalWebViewWorker":{types:`./react-native/HinkalWebViewWorker.d.ts`,"react-native":`./react-native/HinkalWebViewWorker.cjs`,import:`./react-native/HinkalWebViewWorker.mjs`,default:`./react-native/HinkalWebViewWorker.cjs`},"./react-native/metro-config":`./react-native/metro-config.js`,"./react-native/shims/*":`./react-native/shims/*`},types:`./index.d.ts`,scripts:{prebuild:`nx prebuild:workers`,build:`nx build`,lint:`nx lint`,test:`nx test`},devDependencies:{nx:`22.6.4`,vite:`^8.0.4`,"vite-plugin-dts":`^4.5.4`,"vite-tsconfig-paths":`^6.1.1`},dependencies:{"@coral-xyz/anchor":`^0.31.0`,"@solana/spl-token":`^0.4.14`,"@solana/web3.js":`^1.98.4`,"@solana/wallet-adapter-react":`^0.15.39`,axios:`^1.15.0`,"async-mutex":`^0.4.0`,bs58:`^6.0.0`,buffer:`6.0.3`,"circomlibjs-hinkal-fork":`^0.0.10`,dotenv:`^16.4.5`,ethers:`^6.15.0`,"idb-keyval":`6.2.1`,multiformats:`^9.4.2`,snarkjs:`0.7.5`,"libsodium-wrappers":`^0.8.2`,lodash:`^4.17.21`,tweetnacl:`^1.0.3`,process:`0.11.10`,"ua-parser-js":`^1.0.37`,uuid:`^9.0.1`,"node-forge":`^1.3.1`,"poseidon-lite":`^0.3.0`,tronweb:`^6.2.0`},peerDependencies:{wagmi:`2.13.3`,"@walletconnect/utils":`^2.17.2`,react:`*`,"react-native":`*`,"react-native-webview":`*`},peerDependenciesMeta:{wagmi:{optional:!0},"@walletconnect/utils":{optional:!0},react:{optional:!0},"react-native":{optional:!0},"react-native-webview":{optional:!0}}};exports.default=e;
|
package/sdk/package.json.mjs
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var e=`[HinkalTiming]`,t=(t,n,r,i)=>{let a=Date.now(),o=a-r.last,s=a-r.start;r.last=a;let c=i?` ${JSON.stringify(i)}`:``;console.log(`${e} [${t}] ${n} +${o}ms (total ${s}ms)${c}`)},n=e=>{let n={start:Date.now(),last:Date.now()};return{marks:n,log:(r,i)=>t(e,r,n,i)}};exports.createHinkalTiming=n;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
//#region libs/shared/common/src/functions/utils/hinkalTiming.utils.ts
|
|
2
|
-
var e = "[HinkalTiming]", t = (t, n, r, i) => {
|
|
3
|
-
let a = Date.now(), o = a - r.last, s = a - r.start;
|
|
4
|
-
r.last = a;
|
|
5
|
-
let c = i ? ` ${JSON.stringify(i)}` : "";
|
|
6
|
-
console.log(`${e} [${t}] ${n} +${o}ms (total ${s}ms)${c}`);
|
|
7
|
-
}, n = (e) => {
|
|
8
|
-
let n = {
|
|
9
|
-
start: Date.now(),
|
|
10
|
-
last: Date.now()
|
|
11
|
-
};
|
|
12
|
-
return {
|
|
13
|
-
marks: n,
|
|
14
|
-
log: (r, i) => t(e, r, n, i)
|
|
15
|
-
};
|
|
16
|
-
};
|
|
17
|
-
//#endregion
|
|
18
|
-
export { n as createHinkalTiming };
|