@gurge/sdk 0.3.21 → 0.3.23

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.
Files changed (29) hide show
  1. package/common/src/data-structures/Hinkal/hinkalWithdraw.cjs +1 -1
  2. package/common/src/data-structures/Hinkal/hinkalWithdraw.mjs +24 -22
  3. package/common/src/functions/snarkjs/constructGeneralZkProof.cjs +1 -1
  4. package/common/src/functions/snarkjs/constructGeneralZkProof.mjs +24 -20
  5. package/common/src/functions/snarkjs/generateMainAndCommitmentZkProof.cjs +1 -1
  6. package/common/src/functions/snarkjs/generateMainAndCommitmentZkProof.mjs +21 -10
  7. package/common/src/functions/snarkjs/generateZkProof.cjs +1 -1
  8. package/common/src/functions/snarkjs/generateZkProof.mjs +23 -12
  9. package/common/src/functions/snarkjs/generateZkProofEnclave.cjs +1 -1
  10. package/common/src/functions/snarkjs/generateZkProofEnclave.mjs +4 -11
  11. package/common/src/functions/snarkjs/generateZkProofSelf.cjs +1 -1
  12. package/common/src/functions/snarkjs/generateZkProofSelf.mjs +20 -14
  13. package/common/src/providers/WagmiProviderAdapter.cjs +1 -1
  14. package/common/src/providers/WagmiProviderAdapter.mjs +4 -3
  15. package/common/src/webworker/package.json +1 -1
  16. package/common/src/webworker/performTaskWithWorker.cjs +1 -1
  17. package/common/src/webworker/performTaskWithWorker.mjs +19 -21
  18. package/common/src/webworker/viteWorkerURL.constant.cjs +3 -3
  19. package/common/src/webworker/viteWorkerURL.constant.mjs +3 -3
  20. package/package.json +1 -1
  21. package/react-native/HinkalWebViewWorker.cjs +7 -35
  22. package/react-native/HinkalWebViewWorker.mjs +53 -98
  23. package/react-native/bridge/HinkalRNWorker.cjs +1 -1
  24. package/react-native/bridge/HinkalRNWorker.d.ts +0 -1
  25. package/react-native/bridge/HinkalRNWorker.mjs +9 -11
  26. package/react-native/metro-config.js +2 -9
  27. package/react-native/shims/idb-keyval.js +11 -4
  28. package/sdk/package.json.cjs +1 -1
  29. package/sdk/package.json.mjs +1 -1
@@ -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`),p=require(`../../functions/utils/hinkalTiming.utils.cjs`);require(`../../functions/pre-transaction/index.cjs`);const m=require(`../../functions/utils/fees.utils.cjs`),h=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),g=require(`../../functions/web3/functionCalls/transactCallDirect.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),v=require(`../../functions/web3/functionCalls/transactCallDirectTron.cjs`),y=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var b=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}},x=async(i,c,l,x,S,C,w,T)=>{let E=s.validateAndGetChainId(c),D=p.createHinkalTiming(`withdraw:chain-${E}`);D.log(`start`,{isRelayerOff:S});let O=e.isTronLike(E),k=o.addressToHexFormat(await i.getEthereumAddressByChain(E)),A=c.map(e=>e.erc20TokenAddress),j=await u.modifyVolatileTokenAmountChanges(E,c,l),M=c[0];if(!M)throw Error(`Deposit Action: No Token Found`);let N;if(!S){let e=w??await f.getFeeStructure(E,C,A,a.ExternalActionId.Transact);N=await m.calculateModifiedFeeStructure(E,M,-j[0],e),await y.mergeWithFeeStructure(E,A,j,N)}D.log(`feeStructure`);let P={externalActionId:0n,externalAddress:o.addressToHexFormat(x),externalActionMetadata:`0x00`},[F,{inputUtxosArray:I,outputUtxosArray:L}]=await Promise.all([i.getRandomRelay(E,!0),b(i,E,A,j)]);if(D.log(`relay+inputOutputUtxos`),!S&&!F)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);D.log(`constructZkProof-start`);let{zkCallData:R,circomData:z,dimData:B,commitmentValidationData:V}=await h.constructZkProof(i.merkleTreeHinkalByChain[E],I,L,i.userKeys,P.externalActionId,P.externalAddress,P.externalActionMetadata,i.generateProofRemotely,N??n.zeroFeeStructure,S?t.zeroAddress:F,E,void 0,void 0,S?k:void 0);D.log(`constructZkProof-done`);let H=O&&S?void 0:await o.reorderZkCallData(O,R,B,z);if(D.log(`reorderZkCallData`),S){if(!M)throw Error(`Withdraw Action: No Token Found`);if(O){D.log(`transactCallDirectTron-start`);let e=await v.transactCallDirectTron(i,E,j[0],M,R,z,B);return D.log(`transactCallDirectTron-done`,{txid:e}),e}D.log(`transactCallDirect-start`);let e=await g.transactCallDirect(i,E,j[0],M,R,z,B);return D.log(`transactCallDirect-done`),e}let U=d.constructAdminData(T,E,A,j,k);D.log(`transactCallRelayer-start`);let W=await _.transactCallRelayer(E,R,B,z,V,void 0,void 0,U,H);return D.log(`transactCallRelayer-done`,{txHash:W}),W};exports.hinkalWithdraw=x;
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`),p=require(`../../functions/utils/hinkalTiming.utils.cjs`);require(`../../functions/pre-transaction/index.cjs`);const m=require(`../../functions/utils/fees.utils.cjs`),h=require(`../../functions/snarkjs/constructGeneralZkProof.cjs`),g=require(`../../functions/web3/functionCalls/transactCallDirect.cjs`),_=require(`../../functions/web3/functionCalls/transactCallRelayer.cjs`),v=require(`../../functions/web3/functionCalls/transactCallDirectTron.cjs`),y=require(`../../functions/pre-transaction/merge-with-fee-structure.cjs`);var b=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}},x=async(i,c,l,x,S,C,w,T)=>{let E=p.createHinkalTiming(`withdraw`),D=s.validateAndGetChainId(c),O=e.isTronLike(D);E.log(`start`,{chainId:D,isRelayerOff:S,tokenCount:c.length});let k=o.addressToHexFormat(await i.getEthereumAddressByChain(D));E.log(`getEthereumAddress`);let A=c.map(e=>e.erc20TokenAddress),j=await u.modifyVolatileTokenAmountChanges(D,c,l);E.log(`modifyVolatileTokenAmountChanges`);let M=c[0];if(!M)throw Error(`Deposit Action: No Token Found`);let N;if(!S){let e=w??await f.getFeeStructure(D,C,A,a.ExternalActionId.Transact);N=await m.calculateModifiedFeeStructure(D,M,-j[0],e),await y.mergeWithFeeStructure(D,A,j,N),E.log(`feeStructure`,{feeToken:C})}let P={externalActionId:0n,externalAddress:o.addressToHexFormat(x),externalActionMetadata:`0x00`},[F,{inputUtxosArray:I,outputUtxosArray:L}]=await Promise.all([i.getRandomRelay(D,!0),b(i,D,A,j)]);if(E.log(`relay+utxos`,{hasRelay:!!F}),!S&&!F)throw Error(r.transactionErrorCodes.RELAYER_NOT_AVAILABLE);let{zkCallData:R,circomData:z,dimData:B,commitmentValidationData:V}=await h.constructZkProof(i.merkleTreeHinkalByChain[D],I,L,i.userKeys,P.externalActionId,P.externalAddress,P.externalActionMetadata,i.generateProofRemotely,N??n.zeroFeeStructure,S?t.zeroAddress:F,D,void 0,void 0,S?k:void 0);E.log(`constructZkProof`,{generateProofRemotely:i.generateProofRemotely});let H=O&&S?void 0:await o.reorderZkCallData(O,R,B,z);if(E.log(`reorderZkCallData`),S){if(!M)throw Error(`Withdraw Action: No Token Found`);if(O){let e=await v.transactCallDirectTron(i,D,j[0],M,R,z,B);return E.log(`transactCallDirectTron`,{txid:e}),E.log(`done`),e}let e=await g.transactCallDirect(i,D,j[0],M,R,z,B);return E.log(`transactCallDirect`,{txHash:e.hash}),E.log(`done`),e}let U=await _.transactCallRelayer(D,R,B,z,V,void 0,void 0,d.constructAdminData(T,D,A,j,k),H);return E.log(`transactCallRelayer`,{txHash:U}),E.log(`done`),U};exports.hinkalWithdraw=x;
@@ -31,41 +31,43 @@ var x = async (e, t, n, r) => {
31
31
  outputUtxosArray: o
32
32
  };
33
33
  }, S = async (i, l, u, S, C, w, T, E) => {
34
- let D = c(l), O = m(`withdraw:chain-${D}`);
35
- O.log("start", { isRelayerOff: C });
36
- let k = e(D), A = o(await i.getEthereumAddressByChain(D)), j = l.map((e) => e.erc20TokenAddress), M = await d(D, l, u), N = l[0];
34
+ let D = m("withdraw"), O = c(l), k = e(O);
35
+ D.log("start", {
36
+ chainId: O,
37
+ isRelayerOff: C,
38
+ tokenCount: l.length
39
+ });
40
+ let A = o(await i.getEthereumAddressByChain(O));
41
+ D.log("getEthereumAddress");
42
+ let j = l.map((e) => e.erc20TokenAddress), M = await d(O, l, u);
43
+ D.log("modifyVolatileTokenAmountChanges");
44
+ let N = l[0];
37
45
  if (!N) throw Error("Deposit Action: No Token Found");
38
46
  let P;
39
47
  if (!C) {
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);
48
+ let e = T ?? await p(O, w, j, a.Transact);
49
+ P = await h(O, N, -M[0], e), await b(O, j, M, P), D.log("feeStructure", { feeToken: w });
42
50
  }
43
- O.log("feeStructure");
44
51
  let F = {
45
52
  externalActionId: 0n,
46
53
  externalAddress: o(S),
47
54
  externalActionMetadata: "0x00"
48
- }, [I, { inputUtxosArray: L, outputUtxosArray: R }] = await Promise.all([i.getRandomRelay(D, !0), x(i, D, j, M)]);
49
- if (O.log("relay+inputOutputUtxos"), !C && !I) throw Error(r.RELAYER_NOT_AVAILABLE);
50
- O.log("constructZkProof-start");
51
- let { zkCallData: z, circomData: B, dimData: V, commitmentValidationData: H } = await g(i.merkleTreeHinkalByChain[D], L, R, i.userKeys, F.externalActionId, F.externalAddress, F.externalActionMetadata, i.generateProofRemotely, P ?? n, C ? t : I, D, void 0, void 0, C ? A : void 0);
52
- O.log("constructZkProof-done");
55
+ }, [I, { inputUtxosArray: L, outputUtxosArray: R }] = await Promise.all([i.getRandomRelay(O, !0), x(i, O, j, M)]);
56
+ if (D.log("relay+utxos", { hasRelay: !!I }), !C && !I) throw Error(r.RELAYER_NOT_AVAILABLE);
57
+ let { zkCallData: z, circomData: B, dimData: V, commitmentValidationData: H } = await g(i.merkleTreeHinkalByChain[O], L, R, i.userKeys, F.externalActionId, F.externalAddress, F.externalActionMetadata, i.generateProofRemotely, P ?? n, C ? t : I, O, void 0, void 0, C ? A : void 0);
58
+ D.log("constructZkProof", { generateProofRemotely: i.generateProofRemotely });
53
59
  let U = k && C ? void 0 : await s(k, z, V, B);
54
- if (O.log("reorderZkCallData"), C) {
60
+ if (D.log("reorderZkCallData"), C) {
55
61
  if (!N) throw Error("Withdraw Action: No Token Found");
56
62
  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;
63
+ let e = await y(i, O, M[0], N, z, B, V);
64
+ return D.log("transactCallDirectTron", { txid: e }), D.log("done"), e;
60
65
  }
61
- O.log("transactCallDirect-start");
62
- let e = await _(i, D, M[0], N, z, B, V);
63
- return O.log("transactCallDirect-done"), e;
66
+ let e = await _(i, O, M[0], N, z, B, V);
67
+ return D.log("transactCallDirect", { txHash: e.hash }), D.log("done"), e;
64
68
  }
65
- let W = f(E, D, j, M, A);
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;
69
+ let W = await v(O, z, V, B, H, void 0, void 0, f(E, O, j, M, A), U);
70
+ return D.log("transactCallRelayer", { txHash: W }), D.log("done"), W;
69
71
  };
70
72
  //#endregion
71
73
  export { S 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(`../utils/hinkalTiming.utils.cjs`),f=require(`./generateMainAndCommitmentZkProof.cjs`),p=require(`./getMerkleTreeSiblingsAndRootHashes.cjs`),m=require(`../private-wallet/emporium.helpers.cjs`);var h=async(h,g,_,v,y,b,x,S,C,w=t.zeroAddress,T=e.chainIds.localhost,E=g.map(()=>!1),D=void 0,O,k)=>{let A=l.getZkProofVerifierName(g,_),j=d.createHinkalTiming(`constructZkProof:chain-${T}`);j.log(`start`,{verifier:A});let M=l.calcAmountChanges(g,_),N=g.map(e=>e[0].erc20TokenAddress),P=l.calcEncryptedOutputs(_),F=t.defaultSignatureData,I=v.getShieldedPrivateKey(),{pubSpendingBJJPoint:ne}=v.getSpendingKeyPair(),L=l.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),I),I,v.getSpendingKeyPair().pubSpendingBJJPoint),{inCommitmentSiblings:re,inCommitmentSiblingSides:ie,rootHashHinkal:R,inNullifiers:z}=await p.getDataFromWorkers(T,h,g.map(e=>e.map(e=>e.getConstructableParams())));j.log(`getDataFromWorkers`);let B=l.buildOutCommitments(_),V=r.randomBigInt(31),H=n.poseidonFunction(V),U=BigInt(_.length>0?_[0][0].timeStamp:a.getCurrentTimeInSeconds()),W={rootHashHinkal:R,spendingPublicKey:ne,nullifyingPrivateKey:I,erc20TokenAddresses:N,amountChanges:M,inAmounts:g.map(e=>e.map(e=>e.amount.toString())),inRandomizations:g.map(e=>e.map(e=>l.getUtxoCircuitInRandomization(e))),inH0Ax:g.map(e=>e.map(e=>l.getUtxoCircuitH0Coords(e)[0].toString())),inH0Ay:g.map(e=>e.map(e=>l.getUtxoCircuitH0Coords(e)[1].toString())),isNewStyle:g.map(e=>e.map(e=>!!e.isNewStyle)),inTimeStamps:g.map(e=>e.map(e=>e.timeStamp)),inNullifiers:z,inCommitmentSiblings:re,inCommitmentSiblingSides:ie,outAmounts:_.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:U,outPublicKeys:_.map(e=>e.map(e=>e.getStealthAddress())),outCommitments:B,calldataHash:0n,messageSeed:V,H0Ax:c.takeOffHighestBit(L.extraRandomization),H0Ay:L.H0},G=l.calcPublicSignalCount(A,W.erc20TokenAddresses,W.amountChanges,W.inNullifiers,W.outCommitments),K=l.calcAmountChanges(g,_,!0),q=l.getSlippageValues(K);s.Logger.log({publicSignalCount:G});let J=Array.isArray(x)?x:[x],Y=e.getOnchainChainId(T),ae=k?te.AccountActions.getSignerAddressFromPrivateKey(Y,k):void 0,X=y===o.ExternalActionId.Emporium?await m.encodeEmporiumMetadata(T,b??t.zeroAddress,k,J,H,ae):await m.encodeEmporiumMetadata(T,t.zeroAddress,void 0,y===0n?[]:J,H,t.zeroAddress);W.calldataHash=l.createCallDataHash(G,w,b,y,X,P,D,q,E,C,F,O);let Z=ee.computeSignedMessageHashEvm({rootHashHinkal:R,erc20TokenAddresses:N,amountChanges:M,outTimeStamp:U,inNullifiers:z,outCommitments:B,calldataHash:W.calldataHash,message:H,outH1Ay:L.H1,H0Ax:W.H0Ax,H0Ay:L.H0}),{R8:Q,S:oe}=v.signEddsa(Z);W.eddsaSignature=[Q[0],Q[1],oe],W.signedMessageHash=Z;let $=A.startsWith(`mainEVMCircuitMin0`),se={outTimeStamp:U,calldataHash:W.calldataHash,messageSeed:V};j.log(`generateMainAndCommitmentZkProof-start`);let{zkCallData:ce,commitmentValidationData:le}=await f.generateMainAndCommitmentZkProof(T,v,N,g,A,$?se:W,S);return j.log(`generateMainAndCommitmentZkProof-done`),{zkCallData:ce,circomData:u.generateCircomData(B,z,R,K,N,_,P,G,y,b,X,w,W.calldataHash,L,E,D,$?Number(U):void 0,q,C,F,O),dimData:{tokenNumber:g.length,nullifierAmount:g.length>0?g[0].length:0,outputAmount:_.length>0?_[0].length:0},encryptedOutputs:P,commitmentValidationData:le}};exports.constructZkProof=h;
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`),ne=require(`../utils/hinkalTiming.utils.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=ne.createHinkalTiming(`constructZkProof`),A=l.getZkProofVerifierName(h,g),j=l.calcAmountChanges(h,g),M=h.map(e=>e[0].erc20TokenAddress),N=l.calcEncryptedOutputs(g),P=t.defaultSignatureData,F=_.getShieldedPrivateKey(),{pubSpendingBJJPoint:I}=_.getSpendingKeyPair(),L=l.calcStealthAddressStructure(i.UserKeys.findCorrectRandomization(r.randomBigInt(31),F),F,_.getSpendingKeyPair().pubSpendingBJJPoint),{inCommitmentSiblings:re,inCommitmentSiblingSides:ie,rootHashHinkal:R,inNullifiers:z}=await f.getDataFromWorkers(w,m,h.map(e=>e.map(e=>e.getConstructableParams())));k.log(`getDataFromWorkers`,{verifierName:A,chainId:w});let B=l.buildOutCommitments(g),V=r.randomBigInt(31),H=n.poseidonFunction(V),U=BigInt(g.length>0?g[0][0].timeStamp:a.getCurrentTimeInSeconds()),W={rootHashHinkal:R,spendingPublicKey:I,nullifyingPrivateKey:F,erc20TokenAddresses:M,amountChanges:j,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:z,inCommitmentSiblings:re,inCommitmentSiblingSides:ie,outAmounts:g.map(e=>e.map(e=>e.amount.toString())),outTimeStamp:U,outPublicKeys:g.map(e=>e.map(e=>e.getStealthAddress())),outCommitments:B,calldataHash:0n,messageSeed:V,H0Ax:c.takeOffHighestBit(L.extraRandomization),H0Ay:L.H0},G=l.calcPublicSignalCount(A,W.erc20TokenAddresses,W.amountChanges,W.inNullifiers,W.outCommitments),K=l.calcAmountChanges(h,g,!0),q=l.getSlippageValues(K);s.Logger.log({publicSignalCount:G});let J=Array.isArray(b)?b:[b],ae=e.getOnchainChainId(w),oe=O?te.AccountActions.getSignerAddressFromPrivateKey(ae,O):void 0,Y=v===o.ExternalActionId.Emporium?await p.encodeEmporiumMetadata(w,y??t.zeroAddress,O,J,H,oe):await p.encodeEmporiumMetadata(w,t.zeroAddress,void 0,v===0n?[]:J,H,t.zeroAddress);k.log(`encodeEmporiumMetadata`,{externalActionId:v.toString()}),W.calldataHash=l.createCallDataHash(G,C,y,v,Y,N,E,q,T,S,P,D);let X=ee.computeSignedMessageHashEvm({rootHashHinkal:R,erc20TokenAddresses:M,amountChanges:j,outTimeStamp:U,inNullifiers:z,outCommitments:B,calldataHash:W.calldataHash,message:H,outH1Ay:L.H1,H0Ax:W.H0Ax,H0Ay:L.H0}),{R8:Z,S:se}=_.signEddsa(X);W.eddsaSignature=[Z[0],Z[1],se],W.signedMessageHash=X;let Q=A.startsWith(`mainEVMCircuitMin0`),$={outTimeStamp:U,calldataHash:W.calldataHash,messageSeed:V},{zkCallData:ce,commitmentValidationData:le}=await d.generateMainAndCommitmentZkProof(w,_,M,h,A,Q?$:W,x);k.log(`generateMainAndCommitmentZkProof`,{verifierName:A,generateProofRemotely:x});let ue=u.generateCircomData(B,z,R,K,M,g,N,G,v,y,Y,C,W.calldataHash,L,T,E,Q?Number(U):void 0,q,S,P,D),de={tokenNumber:h.length,nullifierAmount:h.length>0?h[0].length:0,outputAmount:g.length>0?g[0].length:0};return k.log(`done`),{zkCallData:ce,circomData:ue,dimData:de,encryptedOutputs:N,commitmentValidationData:le}};exports.constructZkProof=m;
@@ -1,8 +1,8 @@
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 r } from "../../crypto/poseidon.mjs";
4
- import { randomBigInt as i } from "../web3/etherFunctions.mjs";
5
- import { UserKeys as te } from "../../data-structures/crypto-keys/keys.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
6
  import { getCurrentTimeInSeconds as ne } from "../utils/time.utils.mjs";
7
7
  import { ExternalActionId as re } from "../../types/external-action.types.mjs";
8
8
  import { Logger as ie } from "../../error-handling/logger.mjs";
@@ -17,11 +17,12 @@ import { getDataFromWorkers as d } from "./getMerkleTreeSiblingsAndRootHashes.mj
17
17
  import { encodeEmporiumMetadata as f } from "../private-wallet/emporium.helpers.mjs";
18
18
  //#region libs/shared/common/src/functions/snarkjs/constructGeneralZkProof.ts
19
19
  var p = async (p, m, h, g, _, v, y, b, x, S = n, C = e.localhost, w = m.map(() => !1), T = void 0, E, D) => {
20
- let O = le(m, h), k = pe(`constructZkProof:chain-${C}`);
21
- k.log("start", { verifier: O });
22
- let A = a(m, h), j = m.map((e) => e[0].erc20TokenAddress), M = se(h), N = ee, P = g.getShieldedPrivateKey(), { pubSpendingBJJPoint: F } = g.getSpendingKeyPair(), I = s(te.findCorrectRandomization(i(31), P), P, g.getSpendingKeyPair().pubSpendingBJJPoint), { inCommitmentSiblings: L, inCommitmentSiblingSides: R, rootHashHinkal: z, inNullifiers: B } = await d(C, p, m.map((e) => e.map((e) => e.getConstructableParams())));
23
- k.log("getDataFromWorkers");
24
- let V = oe(h), H = i(31), U = r(H), W = BigInt(h.length > 0 ? h[0][0].timeStamp : ne()), G = {
20
+ let O = pe("constructZkProof"), k = le(m, h), A = a(m, h), j = m.map((e) => e[0].erc20TokenAddress), M = se(h), N = ee, P = g.getShieldedPrivateKey(), { pubSpendingBJJPoint: F } = g.getSpendingKeyPair(), I = s(i.findCorrectRandomization(r(31), P), P, g.getSpendingKeyPair().pubSpendingBJJPoint), { inCommitmentSiblings: L, inCommitmentSiblingSides: R, rootHashHinkal: z, inNullifiers: B } = await d(C, p, m.map((e) => e.map((e) => e.getConstructableParams())));
21
+ O.log("getDataFromWorkers", {
22
+ verifierName: k,
23
+ chainId: C
24
+ });
25
+ let V = oe(h), H = r(31), U = te(H), W = BigInt(h.length > 0 ? h[0][0].timeStamp : ne()), G = {
25
26
  rootHashHinkal: z,
26
27
  spendingPublicKey: F,
27
28
  nullifyingPrivateKey: P,
@@ -44,10 +45,10 @@ var p = async (p, m, h, g, _, v, y, b, x, S = n, C = e.localhost, w = m.map(() =
44
45
  messageSeed: H,
45
46
  H0Ax: ae(I.extraRandomization),
46
47
  H0Ay: I.H0
47
- }, K = o(O, G.erc20TokenAddresses, G.amountChanges, G.inNullifiers, G.outCommitments), q = a(m, h, !0), J = l(q);
48
+ }, K = o(k, G.erc20TokenAddresses, G.amountChanges, G.inNullifiers, G.outCommitments), q = a(m, h, !0), J = l(q);
48
49
  ie.log({ publicSignalCount: K });
49
50
  let Y = Array.isArray(y) ? y : [y], he = t(C), ge = D ? fe.getSignerAddressFromPrivateKey(he, D) : void 0, X = _ === re.Emporium ? await f(C, v ?? n, D, Y, U, ge) : await f(C, n, void 0, _ === 0n ? [] : Y, U, n);
50
- G.calldataHash = c(K, S, v, _, X, M, T, J, w, x, N, E);
51
+ O.log("encodeEmporiumMetadata", { externalActionId: _.toString() }), G.calldataHash = c(K, S, v, _, X, M, T, J, w, x, N, E);
51
52
  let Z = ue({
52
53
  rootHashHinkal: z,
53
54
  erc20TokenAddresses: j,
@@ -66,21 +67,24 @@ var p = async (p, m, h, g, _, v, y, b, x, S = n, C = e.localhost, w = m.map(() =
66
67
  Q[1],
67
68
  _e
68
69
  ], G.signedMessageHash = Z;
69
- let $ = O.startsWith("mainEVMCircuitMin0"), ve = {
70
+ let $ = k.startsWith("mainEVMCircuitMin0"), ve = {
70
71
  outTimeStamp: W,
71
72
  calldataHash: G.calldataHash,
72
73
  messageSeed: H
74
+ }, { zkCallData: ye, commitmentValidationData: be } = await me(C, g, j, m, k, $ ? ve : G, b);
75
+ O.log("generateMainAndCommitmentZkProof", {
76
+ verifierName: k,
77
+ generateProofRemotely: b
78
+ });
79
+ let xe = 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), Se = {
80
+ tokenNumber: m.length,
81
+ nullifierAmount: m.length > 0 ? m[0].length : 0,
82
+ outputAmount: h.length > 0 ? h[0].length : 0
73
83
  };
74
- k.log("generateMainAndCommitmentZkProof-start");
75
- let { zkCallData: ye, commitmentValidationData: be } = await me(C, g, j, m, O, $ ? ve : G, b);
76
- return k.log("generateMainAndCommitmentZkProof-done"), {
84
+ return O.log("done"), {
77
85
  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),
79
- dimData: {
80
- tokenNumber: m.length,
81
- nullifierAmount: m.length > 0 ? m[0].length : 0,
82
- outputAmount: h.length > 0 ? h[0].length : 0
83
- },
86
+ circomData: xe,
87
+ dimData: Se,
84
88
  encryptedOutputs: M,
85
89
  commitmentValidationData: be
86
90
  };
@@ -1 +1 @@
1
- const e=require(`../pre-transaction/buildCommitmentValidationData.cjs`);require(`../pre-transaction/index.cjs`);const t=require(`./generateZkProof.cjs`);var n=async(n,r,i,a,o,s,c)=>{let l=await e.buildCommitmentValidationData(n,r,i,a),u=[o],d=[s];l&&(u.push(l.verifierName),d.push(l.commitmentInput));let f=await t.generateZkProof(n,u,d,c),{zkCallData:p,publicSignals:m}=f[0];return{zkCallData:p,publicSignals:m,commitmentValidationData:e.buildCommitmentValidationDataFromProof(l,f[1])}};exports.generateMainAndCommitmentZkProof=n;
1
+ const e=require(`../utils/hinkalTiming.utils.cjs`),t=require(`../pre-transaction/buildCommitmentValidationData.cjs`);require(`../pre-transaction/index.cjs`);const n=require(`./generateZkProof.cjs`);var r=async(r,i,a,o,s,c,l)=>{let u=e.createHinkalTiming(`generateMainAndCommitmentZkProof`),d=await t.buildCommitmentValidationData(r,i,a,o);u.log(`buildCommitmentValidationData`,{mainVerifierName:s,hasCommitmentProof:!!d});let f=[s],p=[c];d&&(f.push(d.verifierName),p.push(d.commitmentInput));let m=await n.generateZkProof(r,f,p,l);u.log(`generateZkProof`,{verifierNames:f,generateProofRemotely:l});let{zkCallData:h,publicSignals:g}=m[0];return{zkCallData:h,publicSignals:g,commitmentValidationData:t.buildCommitmentValidationDataFromProof(d,m[1])}};exports.generateMainAndCommitmentZkProof=r;
@@ -1,16 +1,27 @@
1
- import { buildCommitmentValidationData as e, buildCommitmentValidationDataFromProof as t } from "../pre-transaction/buildCommitmentValidationData.mjs";
1
+ import { createHinkalTiming as e } from "../utils/hinkalTiming.utils.mjs";
2
+ import { buildCommitmentValidationData as t, buildCommitmentValidationDataFromProof as n } from "../pre-transaction/buildCommitmentValidationData.mjs";
2
3
  import "../pre-transaction/index.mjs";
3
- import { generateZkProof as n } from "./generateZkProof.mjs";
4
+ import { generateZkProof as r } from "./generateZkProof.mjs";
4
5
  //#region libs/shared/common/src/functions/snarkjs/generateMainAndCommitmentZkProof.ts
5
- var r = async (r, i, a, o, s, c, l) => {
6
- let u = await e(r, i, a, o), d = [s], f = [c];
7
- u && (d.push(u.verifierName), f.push(u.commitmentInput));
8
- let p = await n(r, d, f, l), { zkCallData: m, publicSignals: h } = p[0];
6
+ var i = async (i, a, o, s, c, l, u) => {
7
+ let d = e("generateMainAndCommitmentZkProof"), f = await t(i, a, o, s);
8
+ d.log("buildCommitmentValidationData", {
9
+ mainVerifierName: c,
10
+ hasCommitmentProof: !!f
11
+ });
12
+ let p = [c], m = [l];
13
+ f && (p.push(f.verifierName), m.push(f.commitmentInput));
14
+ let h = await r(i, p, m, u);
15
+ d.log("generateZkProof", {
16
+ verifierNames: p,
17
+ generateProofRemotely: u
18
+ });
19
+ let { zkCallData: g, publicSignals: _ } = h[0];
9
20
  return {
10
- zkCallData: m,
11
- publicSignals: h,
12
- commitmentValidationData: t(u, p[1])
21
+ zkCallData: g,
22
+ publicSignals: _,
23
+ commitmentValidationData: n(f, h[1])
13
24
  };
14
25
  };
15
26
  //#endregion
16
- export { r as generateMainAndCommitmentZkProof };
27
+ export { i as generateMainAndCommitmentZkProof };
@@ -1 +1 @@
1
- const e=require(`../utils/customEnclaveFunctionsRegister.cjs`),t=require(`../../error-handling/logger.cjs`),n=require(`./getZKFiles.cjs`),r=require(`./generateZkProofEnclave.cjs`),i=require(`./generateZkProofSelf.cjs`);var a=async(a,o,s,c)=>{if(c)try{let t=e.getCustomProofGenerator();return t?(await t(s,o.map(e=>n.getWASMFile(e,a)),o.map(e=>n.getZKeyFile(e,a)))).map(({zkCallData:e,publicSignals:t})=>({zkCallData:e,publicSignals:t})):await r.generateZkProofEnclave(a,o,s)}catch(e){t.Logger.error(`enclave proof error`,e)}return Promise.all(o.map((e,t)=>i.generateZkProofSelf(a,e,s[t])))};exports.generateZkProof=a;
1
+ const e=require(`../utils/customEnclaveFunctionsRegister.cjs`),t=require(`../../error-handling/logger.cjs`),n=require(`../utils/hinkalTiming.utils.cjs`),r=require(`./getZKFiles.cjs`),i=require(`./generateZkProofEnclave.cjs`),a=require(`./generateZkProofSelf.cjs`);var o=async(o,s,c,l)=>{let u=n.createHinkalTiming(`generateZkProof`);if(u.log(`start`,{remotely:!!l,verifierNames:s}),l)try{let t=e.getCustomProofGenerator();if(t){let e=await t(c,s.map(e=>r.getWASMFile(e,o)),s.map(e=>r.getZKeyFile(e,o)));return u.log(`customProofGenerator`,{verifierNames:s}),e.map(({zkCallData:e,publicSignals:t})=>({zkCallData:e,publicSignals:t}))}let n=await i.generateZkProofEnclave(o,s,c);return u.log(`enclave`,{verifierNames:s}),n}catch(e){t.Logger.error(`enclave proof error`,e),u.log(`enclave-failed-fallback-self`)}let d=await Promise.all(s.map((e,t)=>a.generateZkProofSelf(o,e,c[t])));return u.log(`self`,{verifierNames:s}),d};exports.generateZkProof=o;
@@ -1,20 +1,31 @@
1
1
  import { getCustomProofGenerator as e } from "../utils/customEnclaveFunctionsRegister.mjs";
2
2
  import { Logger as t } from "../../error-handling/logger.mjs";
3
- import { getWASMFile as n, getZKeyFile as r } from "./getZKFiles.mjs";
4
- import { generateZkProofEnclave as i } from "./generateZkProofEnclave.mjs";
5
- import { generateZkProofSelf as a } from "./generateZkProofSelf.mjs";
3
+ import { createHinkalTiming as n } from "../utils/hinkalTiming.utils.mjs";
4
+ import { getWASMFile as r, getZKeyFile as i } from "./getZKFiles.mjs";
5
+ import { generateZkProofEnclave as a } from "./generateZkProofEnclave.mjs";
6
+ import { generateZkProofSelf as o } from "./generateZkProofSelf.mjs";
6
7
  //#region libs/shared/common/src/functions/snarkjs/generateZkProof.ts
7
- var o = async (o, s, c, l) => {
8
- if (l) try {
8
+ var s = async (s, c, l, u) => {
9
+ let d = n("generateZkProof");
10
+ if (d.log("start", {
11
+ remotely: !!u,
12
+ verifierNames: c
13
+ }), u) try {
9
14
  let t = e();
10
- return t ? (await t(c, s.map((e) => n(e, o)), s.map((e) => r(e, o)))).map(({ zkCallData: e, publicSignals: t }) => ({
11
- zkCallData: e,
12
- publicSignals: t
13
- })) : await i(o, s, c);
15
+ if (t) {
16
+ let e = await t(l, c.map((e) => r(e, s)), c.map((e) => i(e, s)));
17
+ return d.log("customProofGenerator", { verifierNames: c }), e.map(({ zkCallData: e, publicSignals: t }) => ({
18
+ zkCallData: e,
19
+ publicSignals: t
20
+ }));
21
+ }
22
+ let n = await a(s, c, l);
23
+ return d.log("enclave", { verifierNames: c }), n;
14
24
  } catch (e) {
15
- t.error("enclave proof error", e);
25
+ t.error("enclave proof error", e), d.log("enclave-failed-fallback-self");
16
26
  }
17
- return Promise.all(s.map((e, t) => a(o, e, c[t])));
27
+ let f = await Promise.all(c.map((e, t) => o(s, e, l[t])));
28
+ return d.log("self", { verifierNames: c }), f;
18
29
  };
19
30
  //#endregion
20
- export { o as generateZkProof };
31
+ export { s as generateZkProof };
@@ -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(`../utils/hinkalTiming.utils.cjs`),i=require(`./getZKFiles.cjs`);var a=e=>{if(e.startsWith(`http`)){let t=e.split(`/`).at(-1);if(!t)throw Error(`invalid verifierName`);return t}return e},o=async(o,s,c)=>{let l=r.createHinkalTiming(`enclave-proof:chain-${o}`);l.log(`start`,{verifierCount:s.length,verifiers:s});let u=s.map(e=>a(i.getWASMFile(e,o))),d=s.map(e=>a(i.getZKeyFile(e,o))),{keyCiphertext:f,inputCiphertext:p}=await n.makeEnclaveHandshakeAndEncryptInput(c);l.log(`encrypt-input-done`,{inputCount:c.length});let m={circuit_wasms:u,circuit_zkeys:d,inputs:p,key:f};l.log(`generate-proofs-request-start`,{url:`${e.ENCLAVE_URL}/generate-proofs`});let h=await t.httpClient.post(`${e.ENCLAVE_URL}/generate-proofs`,m);return l.log(`generate-proofs-request-done`,{proofCount:h.length}),h.map(({zk_calldata:e,public_signals:t})=>({zkCallData:e,publicSignals:t}))};exports.generateZkProofEnclave=o;
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(`../utils/hinkalTiming.utils.cjs`),i=require(`./getZKFiles.cjs`);var a=e=>{if(e.startsWith(`http`)){let t=e.split(`/`).at(-1);if(!t)throw Error(`invalid verifierName`);return t}return e},o=async(o,s,c)=>{let l=r.createHinkalTiming(`generateZkProofEnclave`),u=s.map(e=>a(i.getWASMFile(e,o))),d=s.map(e=>a(i.getZKeyFile(e,o))),{keyCiphertext:f,inputCiphertext:p}=await n.makeEnclaveHandshakeAndEncryptInput(c);l.log(`handshake+encrypt`,{verifierNames:s});let m={circuit_wasms:u,circuit_zkeys:d,inputs:p,key:f},h=await t.httpClient.post(`${e.ENCLAVE_URL}/generate-proofs`,m);return l.log(`enclave-http`,{verifierNames:s}),h.map(({zk_calldata:e,public_signals:t})=>({zkCallData:e,publicSignals:t}))};exports.generateZkProofEnclave=o;
@@ -13,22 +13,15 @@ var o = (e) => {
13
13
  }
14
14
  return e;
15
15
  }, s = async (s, c, l) => {
16
- let u = r(`enclave-proof:chain-${s}`);
17
- u.log("start", {
18
- verifierCount: c.length,
19
- verifiers: c
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 });
16
+ let u = r("generateZkProofEnclave"), d = c.map((e) => o(i(e, s))), f = c.map((e) => o(a(e, s))), { keyCiphertext: p, inputCiphertext: m } = await n(l);
17
+ u.log("handshake+encrypt", { verifierNames: c });
23
18
  let h = {
24
19
  circuit_wasms: d,
25
20
  circuit_zkeys: f,
26
21
  inputs: m,
27
22
  key: p
28
- };
29
- u.log("generate-proofs-request-start", { url: `${e}/generate-proofs` });
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 }) => ({
23
+ }, g = await t.post(`${e}/generate-proofs`, h);
24
+ return u.log("enclave-http", { verifierNames: c }), g.map(({ zk_calldata: e, public_signals: t }) => ({
32
25
  zkCallData: e,
33
26
  publicSignals: t
34
27
  }));
@@ -1 +1 @@
1
- const e=require(`../../webworker/worker.registry.cjs`),t=require(`../../webworker/performTaskWithWorker.cjs`),n=require(`./getZKFiles.cjs`),r=require(`../../webworker/snarkjsWorker/snarkjsWorker.types.cjs`);var i=async(i,a,o)=>{let s=n.getWASMFile(a,i),c=n.getZKeyFile(a,i),{publicSignals:l,zkCallData:u}=await t.performTaskWithWorker({type:e.WorkerVariant.SnarkJS,payload:{type:r.SnarkJSWorkerActionType.FULL_PROVE,data:{input:o,chainId:i,wasmFilePath:s,zKeyFilePath:c}}});return{zkCallData:u,publicSignals:l}};exports.generateZkProofSelf=i;
1
+ const e=require(`../../webworker/worker.registry.cjs`),t=require(`../utils/hinkalTiming.utils.cjs`),n=require(`../../webworker/performTaskWithWorker.cjs`),r=require(`./getZKFiles.cjs`),i=require(`../../webworker/snarkjsWorker/snarkjsWorker.types.cjs`);var a=async(a,o,s)=>{let c=t.createHinkalTiming(`generateZkProofSelf:${o}`),l=r.getWASMFile(o,a),u=r.getZKeyFile(o,a);c.log(`start`,{chainId:a,wasmFilePath:l});let{publicSignals:d,zkCallData:f}=await n.performTaskWithWorker({type:e.WorkerVariant.SnarkJS,payload:{type:i.SnarkJSWorkerActionType.FULL_PROVE,data:{input:s,chainId:a,wasmFilePath:l,zKeyFilePath:u}}});return c.log(`worker-done`),{zkCallData:f,publicSignals:d}};exports.generateZkProofSelf=a;
@@ -1,25 +1,31 @@
1
1
  import { WorkerVariant as e } from "../../webworker/worker.registry.mjs";
2
- import { performTaskWithWorker as t } from "../../webworker/performTaskWithWorker.mjs";
3
- import { getWASMFile as n, getZKeyFile as r } from "./getZKFiles.mjs";
4
- import { SnarkJSWorkerActionType as i } from "../../webworker/snarkjsWorker/snarkjsWorker.types.mjs";
2
+ import { createHinkalTiming as t } from "../utils/hinkalTiming.utils.mjs";
3
+ import { performTaskWithWorker as n } from "../../webworker/performTaskWithWorker.mjs";
4
+ import { getWASMFile as r, getZKeyFile as i } from "./getZKFiles.mjs";
5
+ import { SnarkJSWorkerActionType as a } from "../../webworker/snarkjsWorker/snarkjsWorker.types.mjs";
5
6
  //#region libs/shared/common/src/functions/snarkjs/generateZkProofSelf.ts
6
- var a = async (a, o, s) => {
7
- let c = n(o, a), l = r(o, a), { publicSignals: u, zkCallData: d } = await t({
7
+ var o = async (o, s, c) => {
8
+ let l = t(`generateZkProofSelf:${s}`), u = r(s, o), d = i(s, o);
9
+ l.log("start", {
10
+ chainId: o,
11
+ wasmFilePath: u
12
+ });
13
+ let { publicSignals: f, zkCallData: p } = await n({
8
14
  type: e.SnarkJS,
9
15
  payload: {
10
- type: i.FULL_PROVE,
16
+ type: a.FULL_PROVE,
11
17
  data: {
12
- input: s,
13
- chainId: a,
14
- wasmFilePath: c,
15
- zKeyFilePath: l
18
+ input: c,
19
+ chainId: o,
20
+ wasmFilePath: u,
21
+ zKeyFilePath: d
16
22
  }
17
23
  }
18
24
  });
19
- return {
20
- zkCallData: d,
21
- publicSignals: u
25
+ return l.log("worker-done"), {
26
+ zkCallData: p,
27
+ publicSignals: f
22
28
  };
23
29
  };
24
30
  //#endregion
25
- export { a as generateZkProofSelf };
31
+ export { o as generateZkProofSelf };
@@ -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`);if((await e.getAccounts())?.length){let t=(0,c.getAccount)(this.config).chainId??await Promise.resolve(e.getChainId?.())??void 0;if(t)return t}if(e.id===`walletConnect`)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;
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
- if ((await e.getAccounts())?.length) {
56
- let t = m(this.config).chainId ?? await Promise.resolve(e.getChainId?.()) ?? void 0;
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,6 +1,6 @@
1
1
  {
2
2
  "name": "@gurge/sdk",
3
- "version": "0.3.21",
3
+ "version": "0.3.23",
4
4
  "homepage": "hinkal.io",
5
5
  "author": {
6
6
  "name": "Hinkal Protocol"
@@ -1 +1 @@
1
- const e=require(`../constants/vite.constants.cjs`),t=require(`../constants/chains.constants.cjs`),n=require(`../functions/utils/hinkalTiming.utils.cjs`),r=require(`./workerFactory.cjs`);var i=e=>e&&typeof e==`object`&&`type`in e?String(e.type):`n/a`,a=async a=>{let o=i(a.payload),s=n.createHinkalTiming(`worker:${a.type}:${o}`);s.log(`start`);let c=await r.WorkerFactory.getWebWorker(a.type);return s.log(`getWebWorker`),new Promise((n,r)=>{let i={};if(typeof window<`u`&&window.location){let{origin:e,protocol:t,host:n,port:r,hostname:a,href:o}=window.location;i={origin:e,protocol:t,host:n,port:r,hostname:a,href:o}}c.onMessage(e=>{s.log(`worker-result`),n(e),c.terminate()}),c.onError(e=>{s.log(`worker-error`,{message:e instanceof Error?e.message:String(e)}),r(e),c.terminate()});let o={payload:a.payload,metadata:{hostLocation:i,constants:{chains:{chainIds:t.chainIds},isDevelopment:e.isDevelopment}}};c.postMessage(o),s.log(`postMessage`)})};exports.performTaskWithWorker=a;
1
+ const e=require(`../constants/vite.constants.cjs`),t=require(`../constants/chains.constants.cjs`),n=require(`./workerFactory.cjs`),r=require(`../functions/utils/hinkalTiming.utils.cjs`);var i=async i=>{let a=r.createHinkalTiming(`worker:${i.type}`),o=await n.WorkerFactory.getWebWorker(i.type);return a.log(`spawned`),new Promise((n,r)=>{let s={};if(typeof window<`u`&&window.location){let{origin:e,protocol:t,host:n,port:r,hostname:i,href:a}=window.location;s={origin:e,protocol:t,host:n,port:r,hostname:i,href:a}}o.onMessage(e=>{a.log(`completed`),n(e),o.terminate()}),o.onError(e=>{a.log(`error`),r(e),o.terminate()});let c={payload:i.payload,metadata:{hostLocation:s,constants:{chains:{chainIds:t.chainIds},isDevelopment:e.isDevelopment}}};o.postMessage(c)})};exports.performTaskWithWorker=i;
@@ -1,42 +1,40 @@
1
1
  import { isDevelopment as e } from "../constants/vite.constants.mjs";
2
2
  import { chainIds as t } from "../constants/chains.constants.mjs";
3
- import { createHinkalTiming as n } from "../functions/utils/hinkalTiming.utils.mjs";
4
- import { WorkerFactory as r } from "./workerFactory.mjs";
3
+ import { WorkerFactory as n } from "./workerFactory.mjs";
4
+ import { createHinkalTiming as r } from "../functions/utils/hinkalTiming.utils.mjs";
5
5
  //#region libs/shared/common/src/webworker/performTaskWithWorker.ts
6
- var i = (e) => e && typeof e == "object" && "type" in e ? String(e.type) : "n/a", a = async (a) => {
7
- let o = i(a.payload), s = n(`worker:${a.type}:${o}`);
8
- s.log("start");
9
- let c = await r.getWebWorker(a.type);
10
- return s.log("getWebWorker"), new Promise((n, r) => {
11
- let i = {};
6
+ var i = async (i) => {
7
+ let a = r(`worker:${i.type}`), o = await n.getWebWorker(i.type);
8
+ return a.log("spawned"), new Promise((n, r) => {
9
+ let s = {};
12
10
  if (typeof window < "u" && window.location) {
13
- let { origin: e, protocol: t, host: n, port: r, hostname: a, href: o } = window.location;
14
- i = {
11
+ let { origin: e, protocol: t, host: n, port: r, hostname: i, href: a } = window.location;
12
+ s = {
15
13
  origin: e,
16
14
  protocol: t,
17
15
  host: n,
18
16
  port: r,
19
- hostname: a,
20
- href: o
17
+ hostname: i,
18
+ href: a
21
19
  };
22
20
  }
23
- c.onMessage((e) => {
24
- s.log("worker-result"), n(e), c.terminate();
25
- }), c.onError((e) => {
26
- s.log("worker-error", { message: e instanceof Error ? e.message : String(e) }), r(e), c.terminate();
21
+ o.onMessage((e) => {
22
+ a.log("completed"), n(e), o.terminate();
23
+ }), o.onError((e) => {
24
+ a.log("error"), r(e), o.terminate();
27
25
  });
28
- let o = {
29
- payload: a.payload,
26
+ let c = {
27
+ payload: i.payload,
30
28
  metadata: {
31
- hostLocation: i,
29
+ hostLocation: s,
32
30
  constants: {
33
31
  chains: { chainIds: t },
34
32
  isDevelopment: e
35
33
  }
36
34
  }
37
35
  };
38
- c.postMessage(o), s.log("postMessage");
36
+ o.postMessage(c);
39
37
  });
40
38
  };
41
39
  //#endregion
42
- export { a as performTaskWithWorker };
40
+ export { i 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.21/' + 'zkProofWorkerLauncher.js'),
18
- [e.SnarkJS]: await getWorkerURL(domain + '/0.3.21/' + 'snarkjsWorkerLauncher.js'),
19
- [e.UTXO]: await getWorkerURL(domain + '/0.3.21/' + 'utxoWorkerLauncher.js'),
17
+ [e.ZKProof]: await getWorkerURL(domain + '/0.3.23/' + 'zkProofWorkerLauncher.js'),
18
+ [e.SnarkJS]: await getWorkerURL(domain + '/0.3.23/' + 'snarkjsWorkerLauncher.js'),
19
+ [e.UTXO]: await getWorkerURL(domain + '/0.3.23/' + '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.21/' + 'zkProofWorkerLauncher.js'),
18
- [e.SnarkJS]: await getWorkerURL(domain + '/0.3.21/' + 'snarkjsWorkerLauncher.js'),
19
- [e.UTXO]: await getWorkerURL(domain + '/0.3.21/' + 'utxoWorkerLauncher.js'),
17
+ [e.ZKProof]: await getWorkerURL(domain + '/0.3.23/' + 'zkProofWorkerLauncher.js'),
18
+ [e.SnarkJS]: await getWorkerURL(domain + '/0.3.23/' + 'snarkjsWorkerLauncher.js'),
19
+ [e.UTXO]: await getWorkerURL(domain + '/0.3.23/' + 'utxoWorkerLauncher.js'),
20
20
  });
21
21
  export { n as getWorkerViteURL };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gurge/sdk",
3
- "version": "0.3.21",
3
+ "version": "0.3.23",
4
4
  "homepage": "hinkal.io",
5
5
  "author": {
6
6
  "name": "Hinkal Protocol"
@@ -1,7 +1,7 @@
1
- require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../common/src/functions/utils/hinkalTiming.utils.cjs`),t=require(`../common/src/webworker/workerFactory.cjs`),n=require(`./workerCDNUrls.cjs`),r=require(`./bridge/serialization.utils.cjs`),i=require(`./bridge/HinkalRNWorker.cjs`);let a=require(`react`),o=require(`react-native`),s=require(`react-native-webview`),c=require(`react/jsx-runtime`);var l=`${new URL(Object.values(n.WORKER_CDN_URLS)[0]).origin}/`;t.WorkerFactory.rnWorkerFactory=e=>new i.HinkalRNWorker(e);var u=`
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(n.WORKER_CDN_URLS)};
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, requestId, marks){
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
- logTiming(requestId, marks, 'worker-ready');
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;`,d=`<!DOCTYPE html><html><head><meta charset="utf-8"/></head><body><script>${u}<\/script></body></html>`,f=o.StyleSheet.create({hiddenHost:{position:`absolute`,height:1,width:1,left:-9999,top:-9999,opacity:0}}),p=()=>{let t=(0,a.useRef)(null),n=(0,a.useRef)({ready:!1,queue:[]}),i=(0,a.useRef)(e.createHinkalTiming(`webview-host`)),p=(0,a.useCallback)((n,i,a)=>{let s=e.createHinkalTiming(`webview-inject:${n}`);s.log(`start`,{variant:i});let c;try{c=JSON.stringify({requestId:n,variant:i,message:a},r.bigIntReplacer),s.log(`serialized`,{bytes:c.length})}catch(e){s.log(`serialize-failed`,{message:e?.message??String(e)}),o.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,{requestId:n,type:`ERROR`,error:`serialize failed: ${e?.message??e}`});return}t.current?.injectJavaScript(`window.handleMessage && window.handleMessage(${c}); true;`),s.log(`injectJavaScript-called`)},[]);(0,a.useEffect)(()=>{i.current.log(`mount`);let e=o.DeviceEventEmitter.addListener(`TO_WEBVIEW_WORKER`,e=>{let t={requestId:e?.__requestId??``,variant:e?.variant??``,message:e?.message};n.current.ready?(i.current.log(`TO_WEBVIEW_WORKER-inject`,{requestId:t.requestId,variant:t.variant}),p(t.requestId,t.variant,t.message)):(i.current.log(`TO_WEBVIEW_WORKER-queued`,{requestId:t.requestId,variant:t.variant}),n.current.queue.push(t))});return()=>e.remove()},[p]);let m=(0,a.useCallback)(e=>{let t;try{t=r.reviveBigInts(JSON.parse(e.nativeEvent.data))}catch(e){o.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,{type:`ERROR`,error:e?.message??`parse error`});return}if(t?.type===`READY`){i.current.log(`webview-READY`,{queued:n.current.queue.length}),n.current.ready=!0;let e=n.current.queue;n.current.queue=[],e.forEach(({requestId:e,variant:t,message:n})=>p(e,t,n));return}if(t?.type===`TIMING`){let e=t.extra?` ${JSON.stringify(t.extra)}`:``;console.log(`[HinkalTiming] [webview:${t.requestId??`unknown`}] ${t.phase} +${t.stepMs}ms (total ${t.totalMs}ms)${e}`);return}(t?.type===`RESULT`||t?.type===`ERROR`)&&i.current.log(`webview-${t.type}`,{requestId:t.requestId}),o.DeviceEventEmitter.emit(`FROM_WEBVIEW_WORKER`,t)},[p]);return(0,c.jsx)(o.View,{pointerEvents:`none`,style:f.hiddenHost,children:(0,c.jsx)(s.WebView,{ref:t,source:{html:d,baseUrl:l},originWhitelist:[`*`],javaScriptEnabled:!0,domStorageEnabled:!0,androidLayerType:`hardware`,onMessage:m,onLoad:()=>{i.current.log(`webview-onLoad`),t.current?.injectJavaScript(u)}})})};module.exports=p;
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 { createHinkalTiming as e } from "../common/src/functions/utils/hinkalTiming.utils.mjs";
2
- import { WorkerFactory as t } from "../common/src/webworker/workerFactory.mjs";
3
- import { WORKER_CDN_URLS as n } from "./workerCDNUrls.mjs";
4
- import { bigIntReplacer as r, reviveBigInts as i } from "./bridge/serialization.utils.mjs";
5
- import { HinkalRNWorker as a } from "./bridge/HinkalRNWorker.mjs";
6
- import { useCallback as o, useEffect as s, useRef as c } from "react";
7
- import { DeviceEventEmitter as l, StyleSheet as u, View as d } from "react-native";
8
- import { WebView as f } from "react-native-webview";
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 m = `${new URL(Object.values(n)[0]).origin}/`;
12
- t.rnWorkerFactory = (e) => new a(e);
13
- var h = `
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(n)};
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, requestId, marks){
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
- logTiming(requestId, marks, 'worker-ready');
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;`, g = `<!DOCTYPE html><html><head><meta charset="utf-8"/></head><body><script>${h}<\/script></body></html>`, _ = u.create({ hiddenHost: {
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
- } }), v = () => {
133
- let t = c(null), n = c({
103
+ } }), _ = () => {
104
+ let e = s(null), t = s({
134
105
  ready: !1,
135
106
  queue: []
136
- }), a = c(e("webview-host")), u = o((n, i, a) => {
137
- let o = e(`webview-inject:${n}`);
138
- o.log("start", { variant: i });
139
- let s;
107
+ }), i = a((t, r, i) => {
108
+ let a;
140
109
  try {
141
- s = JSON.stringify({
142
- requestId: n,
143
- variant: i,
144
- message: a
145
- }, r), o.log("serialized", { bytes: s.length });
110
+ a = JSON.stringify({
111
+ requestId: t,
112
+ variant: r,
113
+ message: i
114
+ }, n);
146
115
  } catch (e) {
147
- o.log("serialize-failed", { message: e?.message ?? String(e) }), l.emit("FROM_WEBVIEW_WORKER", {
148
- requestId: n,
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
- t.current?.injectJavaScript(`window.handleMessage && window.handleMessage(${s}); true;`), o.log("injectJavaScript-called");
123
+ e.current?.injectJavaScript(`window.handleMessage && window.handleMessage(${a}); true;`);
155
124
  }, []);
156
- s(() => {
157
- a.current.log("mount");
158
- let e = l.addListener("TO_WEBVIEW_WORKER", (e) => {
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
- n.current.ready ? (a.current.log("TO_WEBVIEW_WORKER-inject", {
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
- }, [u]);
174
- let v = o((e) => {
175
- let t;
135
+ }, [i]);
136
+ let l = a((e) => {
137
+ let n;
176
138
  try {
177
- t = i(JSON.parse(e.nativeEvent.data));
139
+ n = r(JSON.parse(e.nativeEvent.data));
178
140
  } catch (e) {
179
- l.emit("FROM_WEBVIEW_WORKER", {
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 (t?.type === "READY") {
186
- a.current.log("webview-READY", { queued: n.current.queue.length }), n.current.ready = !0;
187
- let e = n.current.queue;
188
- n.current.queue = [], e.forEach(({ requestId: e, variant: t, message: n }) => u(e, t, n));
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
- (t?.type === "RESULT" || t?.type === "ERROR") && a.current.log(`webview-${t.type}`, { requestId: t.requestId }), l.emit("FROM_WEBVIEW_WORKER", t);
197
- }, [u]);
198
- return /* @__PURE__ */ p(d, {
153
+ c.emit("FROM_WEBVIEW_WORKER", n);
154
+ }, [i]);
155
+ return /* @__PURE__ */ f(u, {
199
156
  pointerEvents: "none",
200
- style: _.hiddenHost,
201
- children: /* @__PURE__ */ p(f, {
202
- ref: t,
157
+ style: g.hiddenHost,
158
+ children: /* @__PURE__ */ f(d, {
159
+ ref: e,
203
160
  source: {
204
- html: g,
205
- baseUrl: m
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: v,
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 { v as default };
174
+ export { _ as default };
@@ -1 +1 @@
1
- require(`../../_virtual/_rolldown/runtime.cjs`);const e=require(`../../common/src/functions/utils/hinkalTiming.utils.cjs`),t=require(`./serialization.utils.cjs`);let n=require(`react-native`);var r=class{onmessage=null;onerror=null;requestId=t.nextRequestId();subscription;timing;constructor(t){this.variant=t,this.timing=e.createHinkalTiming(`rn-worker:${this.requestId}`),this.timing.log(`created`,{variant:t}),this.subscription=n.DeviceEventEmitter.addListener(`FROM_WEBVIEW_WORKER`,e=>{!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`))))})}postMessage(e){this.timing.log(`postMessage-to-webview`,{variant:this.variant}),n.DeviceEventEmitter.emit(`TO_WEBVIEW_WORKER`,{__requestId:this.requestId,variant:this.variant,message:e})}terminate(){this.subscription?.remove?.(),this.subscription=null}};exports.HinkalRNWorker=r;
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;
@@ -7,7 +7,6 @@ export declare class HinkalRNWorker {
7
7
  onerror: ((error: any) => void) | null;
8
8
  private requestId;
9
9
  private subscription;
10
- private timing;
11
10
  constructor(variant: WorkerVariant);
12
11
  postMessage(message: unknown): void;
13
12
  terminate(): void;
@@ -1,20 +1,18 @@
1
- import { createHinkalTiming as e } from "../../common/src/functions/utils/hinkalTiming.utils.mjs";
2
- import { nextRequestId as t } from "./serialization.utils.mjs";
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 r = class {
4
+ var n = class {
6
5
  onmessage = null;
7
6
  onerror = null;
8
- requestId = t();
7
+ requestId = e();
9
8
  subscription;
10
- timing;
11
- constructor(t) {
12
- this.variant = t, this.timing = e(`rn-worker:${this.requestId}`), this.timing.log("created", { variant: t }), this.subscription = n.addListener("FROM_WEBVIEW_WORKER", (e) => {
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
- this.timing.log("postMessage-to-webview", { variant: this.variant }), n.emit("TO_WEBVIEW_WORKER", {
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 { r as HinkalRNWorker };
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
 
@@ -1 +1 @@
1
- var e={name:`@gurge/sdk`,version:`0.3.20`,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;
1
+ var e={name:`@gurge/sdk`,version:`0.3.22`,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;
@@ -1,6 +1,6 @@
1
1
  var e = {
2
2
  name: "@gurge/sdk",
3
- version: "0.3.20",
3
+ version: "0.3.22",
4
4
  homepage: "hinkal.io",
5
5
  author: { name: "Hinkal Protocol" },
6
6
  keywords: [