h_test_1 0.0.31 → 0.0.33

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "h_test_1",
3
- "version": "0.0.31",
3
+ "version": "0.0.33",
4
4
  "homepage": "hinkal.io",
5
5
  "author": {
6
6
  "name": "Hinkal Protocol"
@@ -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(`../functions/utils/create-provider.cjs`);let r=require(`@coral-xyz/anchor`);var i=class{chainId;connection;wallet;ethereumAddress;chainEventListener;anchorProvider;constructor(t,r){let i=e.networkRegistry[t].fetchRpcUrl;if(!i)throw Error(`RPC URL not found for the specified chain ID`);this.connection=n.createCustomSolanaConnection(i),this.chainId=t,this.ethereumAddress=r}initConnector(e){this.wallet=e,this.initializeAnchorProvider()}async init(e){e&&(this.chainId=e)}async connectToConnector(){return this.chainId??0}async disconnectFromConnector(){}async connectAndPatchProvider(){if(!this.chainId)throw Error(`No Chain Id In Provider Adapter`);return this.chainId}getChainId(){return this.chainId}async waitForTransaction(e,n,r){try{return(await this.connection.confirmTransaction(n,`confirmed`)).value.err===null}catch{throw Error(t.transactionErrorCodes.TRANSACTION_NOT_CONFIRMED)}}async signMessage(e){if(!this.wallet?.signMessage)throw Error(t.transactionErrorCodes.SIGNING_FAILED);let n=typeof e==`string`?new TextEncoder().encode(e):e,{signature:r}=await this.wallet.signMessage(n,`utf8`);if(!r)throw Error(t.transactionErrorCodes.SIGNING_FAILED);return`0x${Buffer.from(r).toString(`hex`)}`}async getAddress(){let e=this.ethereumAddress??this.wallet?.publicKey.toString();if(!e)throw Error(`IllegalState`);return e}setChainEventListener(e){this.chainEventListener=e}async switchNetwork(e){this.chainEventListener?.onChainChanged(e.chainId)}async signTypedData(e,t,n){throw Error(`Typed data signing not supported on Solana`)}async onAccountChanged(){return this.init()}async onChainChanged(e){return this.init(e)}release(){this.chainEventListener=void 0}getContract(e,t,n,r){throw Error(`Not implemented from SolanaProviderAdapter`)}getContractWithSigner(e,t,n){throw Error(`Not implemented from SolanaProviderAdapter`)}getContractWithFetcher(e,t,n){throw Error(`Not implemented from SolanaProviderAdapter`)}async sendTransaction(e){throw Error(`Not implemented from SolanaProviderAdapter`)}async getGasPrice(e){throw Error(`Not implemented from SolanaProviderAdapter`)}isPermitterAvailable(){return!1}getConnection(){return this.connection}initializeAnchorProvider(){if(!this.wallet)throw Error(`No wallet provided`);return this.anchorProvider=new r.AnchorProvider(this.connection,this.wallet,{preflightCommitment:`confirmed`,commitment:`confirmed`}),this.anchorProvider}getAnchorProvider(){return this.anchorProvider??this.initializeAnchorProvider()}getSolanaProgram(e){return new r.Program(e,this.getAnchorProvider())}getSolanaPublicKey(){if(!this.wallet)throw Error(`No wallet provided`);return this.wallet.publicKey}};exports.SolanaProviderAdapter=i;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`../_virtual/_rolldown/runtime.cjs`);const e=require(`../constants/chains.constants.cjs`),t=require(`../error-handling/error-codes.constants.cjs`),n=require(`../functions/utils/create-provider.cjs`);let r=require(`@coral-xyz/anchor`);var i=class{chainId;connection;wallet;ethereumAddress;chainEventListener;anchorProvider;constructor(t,r){let i=e.networkRegistry[t].fetchRpcUrl;if(!i)throw Error(`RPC URL not found for the specified chain ID`);this.connection=n.createCustomSolanaConnection(i),this.chainId=t,this.ethereumAddress=r}initConnector(e){this.wallet=e,this.initializeAnchorProvider()}async init(e){e&&(this.chainId=e)}async connectToConnector(){return this.chainId??0}async disconnectFromConnector(){}async connectAndPatchProvider(){if(!this.chainId)throw Error(`No Chain Id In Provider Adapter`);return this.chainId}getChainId(){return this.chainId}async waitForTransaction(e,n,r){try{return(await this.connection.confirmTransaction(n,`confirmed`)).value.err===null}catch{throw Error(t.transactionErrorCodes.TRANSACTION_NOT_CONFIRMED)}}async signMessage(e){if(!this.wallet?.signMessage)throw Error(t.transactionErrorCodes.SIGNING_FAILED);let n=typeof e==`string`?new TextEncoder().encode(e):e,{signature:r}=await this.wallet.signMessage(n,`utf8`);if(!r)throw Error(t.transactionErrorCodes.SIGNING_FAILED);return`0x${Buffer.from(r).toString(`hex`)}`}async getAddress(){let e=this.ethereumAddress??this.wallet?.publicKey.toString();if(!e)throw Error(`IllegalState`);return e}setChainEventListener(e){this.chainEventListener=e}async switchNetwork(e){this.chainEventListener?.onChainChanged(e.chainId)}async signTypedData(e,t,n){throw Error(`Typed data signing not supported on Solana`)}async onAccountChanged(){return this.init()}async onChainChanged(e){return this.init(e)}release(){this.chainEventListener=void 0}getContract(e,t,n,r){throw Error(`Not implemented from SolanaProviderAdapter`)}getContractWithSigner(e,t,n){throw Error(`Not implemented from SolanaProviderAdapter`)}getContractWithFetcher(e,t,n){throw Error(`Not implemented from SolanaProviderAdapter`)}async sendTransaction(e){throw Error(`Not implemented from SolanaProviderAdapter`)}async getGasPrice(e){throw Error(`Not implemented from SolanaProviderAdapter`)}isPermitterAvailable(){return!1}getConnection(){return this.connection}initializeAnchorProvider(){if(!this.wallet)throw Error(`No wallet provided`);return this.anchorProvider=new r.AnchorProvider(this.connection,this.wallet,{preflightCommitment:`confirmed`,commitment:`confirmed`}),this.anchorProvider}getAnchorProvider(){return this.anchorProvider??this.initializeAnchorProvider()}getSolanaProgram(e){return new r.Program(e,this.getAnchorProvider())}getSolanaPublicKey(){if(!this.wallet)throw Error(`No wallet provided`);return this.wallet.publicKey}},a=(e,t)=>new i(e,t);exports.SolanaProviderAdapter=i,exports.default=a;
@@ -106,6 +106,6 @@ var a = class {
106
106
  if (!this.wallet) throw Error("No wallet provided");
107
107
  return this.wallet.publicKey;
108
108
  }
109
- };
109
+ }, o = (e, t) => new a(e, t);
110
110
  //#endregion
111
- export { a as SolanaProviderAdapter };
111
+ export { a as SolanaProviderAdapter, o as default };
@@ -1 +1 @@
1
- const e=require(`../error-handling/error-codes.constants.cjs`),t=require(`../functions/utils/tron.utils.cjs`),n=require(`../functions/utils/create-provider.cjs`),r=require(`../functions/web3/getContractMetadata.cjs`);require(`../functions/index.cjs`);var i=class{chainId;tronWeb;address;signerAdapter;chainEventListener;accountsChangedHandler;constructor(e){this.chainId=e}initConnector(e){if(this.address=e.address,this.signerAdapter=e.signerAdapter,!this.chainId)throw Error(`TronProviderAdapter: Chain Id Not Set`);this.tronWeb=this.createSignableTronWeb(this.chainId,e.address)}async init(e){this.chainId=e}createSignableTronWeb=(e,n)=>{let r=t.createTronWeb(e);return r.setAddress(n),r.trx.sign=async e=>this.signerAdapter.signTransaction(e),r};async connectToConnector(){return this.chainId??0}async disconnectFromConnector(){}async connectAndPatchProvider(){if(!this.chainId)throw Error(`No Chain Id In Provider Adapter`);return this.chainId}getChainId(){return this.chainId}async waitForTransaction(t,r,i){let a=r.startsWith(`0x`)?r:`0x${r}`;if((await n.createCustomRpcProvider(t).waitForTransaction(a,i))?.status===1)return!0;throw Error(e.transactionErrorCodes.TRANSACTION_NOT_CONFIRMED)}async signMessage(t){let n=typeof t==`string`?t:new TextDecoder().decode(t),r=await this.signerAdapter.signMessage(n);if(!r)throw Error(e.transactionErrorCodes.SIGNING_FAILED);return r}async getAddress(){if(!this.address)throw Error(`IllegalState`);return this.address}setChainEventListener(e){this.chainEventListener=e,this.accountsChangedHandler&&this.signerAdapter.off(`accountsChanged`,this.accountsChangedHandler),this.accountsChangedHandler=e=>{this.chainEventListener&&(this.address=e,this.tronWeb?.setAddress(e),this.chainEventListener.onAccountChanged())},this.signerAdapter.on(`accountsChanged`,this.accountsChangedHandler)}async switchNetwork(e){this.chainEventListener?.onChainChanged(e.chainId)}async signTypedData(e,t,n){throw Error(`Typed data signing not supported on Tron`)}async onAccountChanged(){return Promise.resolve()}async onChainChanged(e){return Promise.resolve()}release(){this.chainEventListener=void 0,this.accountsChangedHandler&&=(this.signerAdapter.off(`accountsChanged`,this.accountsChangedHandler),void 0)}getContract(e,t,n,i){return r.getContract(t,e,n,i)}getContractWithSigner(e,t,n){throw Error(`Not implemented from TronProviderAdapter`)}getContractWithFetcher(e,t,r){let i=n.createCustomRpcProvider(e);return this.getContract(e,t,r,i)}async sendTransaction(e){throw Error(`Not implemented from TronProviderAdapter`)}async getGasPrice(e){throw Error(`Not implemented from TronProviderAdapter`)}isPermitterAvailable(){return!1}getTronWeb(){return this.tronWeb}};exports.TronProviderAdapter=i;
1
+ Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});const e=require(`../error-handling/error-codes.constants.cjs`),t=require(`../functions/utils/tron.utils.cjs`),n=require(`../functions/utils/create-provider.cjs`),r=require(`../functions/web3/getContractMetadata.cjs`);require(`../functions/index.cjs`);var i=class{chainId;tronWeb;address;signerAdapter;chainEventListener;accountsChangedHandler;constructor(e){this.chainId=e}initConnector(e){if(this.address=e.address,this.signerAdapter=e.signerAdapter,!this.chainId)throw Error(`TronProviderAdapter: Chain Id Not Set`);this.tronWeb=this.createSignableTronWeb(this.chainId,e.address)}async init(e){this.chainId=e}createSignableTronWeb=(e,n)=>{let r=t.createTronWeb(e);return r.setAddress(n),r.trx.sign=async e=>this.signerAdapter.signTransaction(e),r};async connectToConnector(){return this.chainId??0}async disconnectFromConnector(){}async connectAndPatchProvider(){if(!this.chainId)throw Error(`No Chain Id In Provider Adapter`);return this.chainId}getChainId(){return this.chainId}async waitForTransaction(t,r,i){let a=r.startsWith(`0x`)?r:`0x${r}`;if((await n.createCustomRpcProvider(t).waitForTransaction(a,i))?.status===1)return!0;throw Error(e.transactionErrorCodes.TRANSACTION_NOT_CONFIRMED)}async signMessage(t){let n=typeof t==`string`?t:new TextDecoder().decode(t),r=await this.signerAdapter.signMessage(n);if(!r)throw Error(e.transactionErrorCodes.SIGNING_FAILED);return r}async getAddress(){if(!this.address)throw Error(`IllegalState`);return this.address}setChainEventListener(e){this.chainEventListener=e,this.accountsChangedHandler&&this.signerAdapter.off(`accountsChanged`,this.accountsChangedHandler),this.accountsChangedHandler=e=>{this.chainEventListener&&(this.address=e,this.tronWeb?.setAddress(e),this.chainEventListener.onAccountChanged())},this.signerAdapter.on(`accountsChanged`,this.accountsChangedHandler)}async switchNetwork(e){this.chainEventListener?.onChainChanged(e.chainId)}async signTypedData(e,t,n){throw Error(`Typed data signing not supported on Tron`)}async onAccountChanged(){return Promise.resolve()}async onChainChanged(e){return Promise.resolve()}release(){this.chainEventListener=void 0,this.accountsChangedHandler&&=(this.signerAdapter.off(`accountsChanged`,this.accountsChangedHandler),void 0)}getContract(e,t,n,i){return r.getContract(t,e,n,i)}getContractWithSigner(e,t,n){throw Error(`Not implemented from TronProviderAdapter`)}getContractWithFetcher(e,t,r){let i=n.createCustomRpcProvider(e);return this.getContract(e,t,r,i)}async sendTransaction(e){throw Error(`Not implemented from TronProviderAdapter`)}async getGasPrice(e){throw Error(`Not implemented from TronProviderAdapter`)}isPermitterAvailable(){return!1}getTronWeb(){return this.tronWeb}},a=e=>new i(e);exports.TronProviderAdapter=i,exports.default=a;
@@ -92,6 +92,6 @@ var i = class {
92
92
  getTronWeb() {
93
93
  return this.tronWeb;
94
94
  }
95
- };
95
+ }, a = (e) => new i(e);
96
96
  //#endregion
97
- export { i as TronProviderAdapter };
97
+ export { i as TronProviderAdapter, a as default };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../constants/chains.constants.cjs`),t=require(`../crypto/preProcessing.cjs`);require(`../crypto/index.cjs`);const n=require(`./SolanaProviderAdapter.cjs`),r=require(`../data-structures/Hinkal/Hinkal.cjs`);require(`../data-structures/index.cjs`);var i=async(i,a,o)=>{await t.preProcessing();let s=new r.Hinkal(o),c=e.chainIds.solanaMainnet,l=n.default(c,a);return await s.initProviderAdapter(i,l),await s.initUserKeys(),await s.resetMerkle(),s};exports.prepareSolanaHinkal=i;
@@ -0,0 +1,14 @@
1
+ import { chainIds as e } from "../constants/chains.constants.mjs";
2
+ import { preProcessing as t } from "../crypto/preProcessing.mjs";
3
+ import "../crypto/index.mjs";
4
+ import n from "./SolanaProviderAdapter.mjs";
5
+ import { Hinkal as r } from "../data-structures/Hinkal/Hinkal.mjs";
6
+ import "../data-structures/index.mjs";
7
+ //#region libs/shared/common/src/providers/prepareSolanaHinkal.ts
8
+ var i = async (i, a, o) => {
9
+ await t();
10
+ let s = new r(o), c = e.solanaMainnet, l = n(c, a);
11
+ return await s.initProviderAdapter(i, l), await s.initUserKeys(), await s.resetMerkle(), s;
12
+ };
13
+ //#endregion
14
+ export { i as prepareSolanaHinkal };
@@ -0,0 +1 @@
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require(`../constants/chains.constants.cjs`),t=require(`../crypto/preProcessing.cjs`);require(`../crypto/index.cjs`);const n=require(`./TronProviderAdapter.cjs`),r=require(`../data-structures/Hinkal/Hinkal.cjs`);require(`../data-structures/index.cjs`);var i=async(i,a)=>{await t.preProcessing();let o=new r.Hinkal(a),s=n.default(e.currentTronChainId);return await o.initProviderAdapter(i,s),await o.initUserKeys(),await o.resetMerkle(),o};exports.prepareTronHinkal=i;
@@ -0,0 +1,14 @@
1
+ import { currentTronChainId as e } from "../constants/chains.constants.mjs";
2
+ import { preProcessing as t } from "../crypto/preProcessing.mjs";
3
+ import "../crypto/index.mjs";
4
+ import n from "./TronProviderAdapter.mjs";
5
+ import { Hinkal as r } from "../data-structures/Hinkal/Hinkal.mjs";
6
+ import "../data-structures/index.mjs";
7
+ //#region libs/shared/common/src/providers/prepareTronHinkal.ts
8
+ var i = async (i, a) => {
9
+ await t();
10
+ let o = new r(a), s = n(e);
11
+ return await o.initProviderAdapter(i, s), await o.initUserKeys(), await o.resetMerkle(), o;
12
+ };
13
+ //#endregion
14
+ export { i as prepareTronHinkal };
@@ -0,0 +1 @@
1
+ const e=require(`../../_virtual/_rolldown/runtime.cjs`),t=require(`../../constants/vite.constants.cjs`),n=require(`../../constants/chains.constants.cjs`),r=require(`../../data-structures/http/HttpClient.cjs`);require(`../../data-structures/http/index.cjs`);const i=require(`../workerProxy.cjs`);let a=require(`snarkjs`);a=e.__toESM(a);var o=new i.WorkerProxy,s=async e=>new Uint8Array(await r.httpClient.get(e,{responseType:`arraybuffer`})),c=async e=>{try{let{input:r,wasmFilePath:i,zKeyFilePath:c,chainId:l}=e.payload.data,{hostLocation:{origin:u},constants:{isDevelopment:d,chains:{chainIds:f}}}=e.metadata,p=i,m=c,h,g,_=p.startsWith(`https://`);if(t.isNode&&!_){t.isWebpack?(p=`libs/hardhat/test/circuits/${i}`,m=`libs/hardhat/test/circuits/${c}`):!t.isWebpack&&d&&(l===n.chainIds.solanaLocalnet?(p=`tests/circuits/${i}`,m=`tests/circuits/${c}`):(p=`test/circuits/${i}`,m=`test/circuits/${c}`));let e=require(`path`);p=e.resolve(p),m=e.resolve(m)}t.isNode&&_?(h=await s(p),g=await s(m)):(l===f.localhost||l===n.chainIds.solanaLocalnet||l===f.tronLocalnet)&&!t.isNode&&(p=`${u}/${i}`,m=`${u}/${c}`);let{proof:v,publicSignals:y}=await a.groth16.fullProve(r,h??p,g??m,void 0,void 0,t.isNode&&l===f.tronLocalnet?{singleThread:!0}:void 0),b=await a.groth16.exportSolidityCallData(v,y),x=JSON.parse(`[${b}]`);o.postMessageToMainThread({zkCallData:x,proof:v,publicSignals:y})}catch(e){console.error(e),o.postErrorToMainThread(e)}};o.attachWorkerSideOnMessage(c),exports.default=o,exports.onWorkerMessage=c;
@@ -0,0 +1,30 @@
1
+ import { __require as e } from "../../_virtual/_rolldown/runtime.mjs";
2
+ import { isNode as t, isWebpack as n } from "../../constants/vite.constants.mjs";
3
+ import { chainIds as r } from "../../constants/chains.constants.mjs";
4
+ import { httpClient as i } from "../../data-structures/http/HttpClient.mjs";
5
+ import "../../data-structures/http/index.mjs";
6
+ import { WorkerProxy as a } from "../workerProxy.mjs";
7
+ import * as o from "snarkjs";
8
+ //#region libs/shared/common/src/webworker/snarkjsWorker/snarkjsWorkerLogic.ts
9
+ var s = new a(), c = async (e) => new Uint8Array(await i.get(e, { responseType: "arraybuffer" })), l = async (i) => {
10
+ try {
11
+ let { input: a, wasmFilePath: l, zKeyFilePath: u, chainId: d } = i.payload.data, { hostLocation: { origin: f }, constants: { isDevelopment: p, chains: { chainIds: m } } } = i.metadata, h = l, g = u, _, v, y = h.startsWith("https://");
12
+ if (t && !y) {
13
+ n ? (h = `libs/hardhat/test/circuits/${l}`, g = `libs/hardhat/test/circuits/${u}`) : !n && p && (d === r.solanaLocalnet ? (h = `tests/circuits/${l}`, g = `tests/circuits/${u}`) : (h = `test/circuits/${l}`, g = `test/circuits/${u}`));
14
+ let t = e("path");
15
+ h = t.resolve(h), g = t.resolve(g);
16
+ }
17
+ t && y ? (_ = await c(h), v = await c(g)) : (d === m.localhost || d === r.solanaLocalnet || d === m.tronLocalnet) && !t && (h = `${f}/${l}`, g = `${f}/${u}`);
18
+ let { proof: b, publicSignals: x } = await o.groth16.fullProve(a, _ ?? h, v ?? g, void 0, void 0, t && d === m.tronLocalnet ? { singleThread: !0 } : void 0), S = await o.groth16.exportSolidityCallData(b, x), C = JSON.parse(`[${S}]`);
19
+ s.postMessageToMainThread({
20
+ zkCallData: C,
21
+ proof: b,
22
+ publicSignals: x
23
+ });
24
+ } catch (e) {
25
+ console.error(e), s.postErrorToMainThread(e);
26
+ }
27
+ };
28
+ s.attachWorkerSideOnMessage(l);
29
+ //#endregion
30
+ export { s as default, l as onWorkerMessage };
@@ -0,0 +1 @@
1
+ const e=require(`../../crypto/preProcessing.cjs`),t=require(`../../data-structures/crypto-keys/keys.cjs`),n=require(`../../data-structures/utxo/Utxo.cjs`),r=require(`../../data-structures/crypto-keys/decodeUTXO.cjs`),i=require(`../../data-structures/crypto-keys/encryptDecryptUtxo.cjs`),a=require(`../../error-handling/logger.cjs`),o=require(`./utxoWorker.types.cjs`);var s=new(require(`../workerProxy.cjs`)).WorkerProxy,c=async({data:e})=>{let{utxos:r,nullifiers:i}=e,a=r.filter(e=>{let t=new n.Utxo(e);return!i.has(t.getNullifier())});s.postMessageToMainThread({utxoConstructors:a,stealthPairCache:t.stealthPairCacheDevice.serialize(),stealthAddressCache:t.stealthAddressCacheDevice.serialize()})},l=async({data:e})=>{let n=new t.UserKeys(e.signature),a=n.getShieldedPrivateKey(),o=e.encryptedOutputs.map(t=>{try{let o=t.isPositive?i.decryptUtxoConstructorArgs(Buffer.from(t.value.slice(2),`hex`),n):r.decodeUtxoConstructorArgs(t.value,a,e.chainId);return o.isBlocked=t.isBlocked,o}catch{return}}).filter(e=>e!==void 0&&e.amount!==0n);s.postMessageToMainThread(o)},u=async({data:e})=>{let n=new t.UserKeys(e.signature),a=[],{encryptedOutputs:o}=e,{lastOutput:c}=e,l=n.getShieldedPrivateKey();for(let t=0;t<o.length;t+=1){let s=o[t];if(c=s.value,s.isPositive)try{let e=i.decryptUtxo(Buffer.from(c.slice(2),`hex`),n);if(e.isBlocked=s.isBlocked,!e.erc20TokenAddress||!e.amount||!e.stealthAddress)throw Error(`bruh`);a.push(s)}catch{}else try{r.checkUtxoSignature(c,l,e.chainId)&&a.push(s)}catch{}}s.postMessageToMainThread({additionalEncryptedOutputs:a,lastOutput:c})},d=async t=>{try{await e.preProcessing();let{type:n}=t.payload;switch(n){case o.UtxoWorkerActionType.BATCH_FILTER_UTXOS_WITH_NULLIFIER:await c(t.payload);return;case o.UtxoWorkerActionType.BUILD_UTXOS:await l(t.payload);return;case o.UtxoWorkerActionType.DECIPHER_OUTPUTS:await u(t.payload);return;default:throw Error(`Unknown worker message type ${n}`)}}catch(e){a.Logger.error(`utxo worker message failed`,e),s.postErrorToMainThread(e)}};s.attachWorkerSideOnMessage(d),exports.default=s,exports.handleBuildUtxosMessage=l,exports.handleDecipherMessage=u,exports.handleFilterUtxosWithNullifier=c,exports.onWorkerMessage=d;
@@ -0,0 +1,69 @@
1
+ import { preProcessing as e } from "../../crypto/preProcessing.mjs";
2
+ import { UserKeys as t, stealthAddressCacheDevice as n, stealthPairCacheDevice as r } from "../../data-structures/crypto-keys/keys.mjs";
3
+ import { Utxo as i } from "../../data-structures/utxo/Utxo.mjs";
4
+ import { checkUtxoSignature as a, decodeUtxoConstructorArgs as o } from "../../data-structures/crypto-keys/decodeUTXO.mjs";
5
+ import { decryptUtxo as s, decryptUtxoConstructorArgs as c } from "../../data-structures/crypto-keys/encryptDecryptUtxo.mjs";
6
+ import { Logger as l } from "../../error-handling/logger.mjs";
7
+ import { UtxoWorkerActionType as u } from "./utxoWorker.types.mjs";
8
+ import { WorkerProxy as d } from "../workerProxy.mjs";
9
+ //#region libs/shared/common/src/webworker/utxoWorker/utxoWorkerLogic.ts
10
+ var f = new d(), p = async ({ data: e }) => {
11
+ let { utxos: t, nullifiers: a } = e, o = t.filter((e) => {
12
+ let t = new i(e);
13
+ return !a.has(t.getNullifier());
14
+ });
15
+ f.postMessageToMainThread({
16
+ utxoConstructors: o,
17
+ stealthPairCache: r.serialize(),
18
+ stealthAddressCache: n.serialize()
19
+ });
20
+ }, m = async ({ data: e }) => {
21
+ let n = new t(e.signature), r = n.getShieldedPrivateKey(), i = e.encryptedOutputs.map((t) => {
22
+ try {
23
+ let i = t.isPositive ? c(Buffer.from(t.value.slice(2), "hex"), n) : o(t.value, r, e.chainId);
24
+ return i.isBlocked = t.isBlocked, i;
25
+ } catch {
26
+ return;
27
+ }
28
+ }).filter((e) => e !== void 0 && e.amount !== 0n);
29
+ f.postMessageToMainThread(i);
30
+ }, h = async ({ data: e }) => {
31
+ let n = new t(e.signature), r = [], { encryptedOutputs: i } = e, { lastOutput: o } = e, c = n.getShieldedPrivateKey();
32
+ for (let t = 0; t < i.length; t += 1) {
33
+ let l = i[t];
34
+ if (o = l.value, l.isPositive) try {
35
+ let e = s(Buffer.from(o.slice(2), "hex"), n);
36
+ if (e.isBlocked = l.isBlocked, !e.erc20TokenAddress || !e.amount || !e.stealthAddress) throw Error("bruh");
37
+ r.push(l);
38
+ } catch {}
39
+ else try {
40
+ a(o, c, e.chainId) && r.push(l);
41
+ } catch {}
42
+ }
43
+ f.postMessageToMainThread({
44
+ additionalEncryptedOutputs: r,
45
+ lastOutput: o
46
+ });
47
+ }, g = async (t) => {
48
+ try {
49
+ await e();
50
+ let { type: n } = t.payload;
51
+ switch (n) {
52
+ case u.BATCH_FILTER_UTXOS_WITH_NULLIFIER:
53
+ await p(t.payload);
54
+ return;
55
+ case u.BUILD_UTXOS:
56
+ await m(t.payload);
57
+ return;
58
+ case u.DECIPHER_OUTPUTS:
59
+ await h(t.payload);
60
+ return;
61
+ default: throw Error(`Unknown worker message type ${n}`);
62
+ }
63
+ } catch (e) {
64
+ l.error("utxo worker message failed", e), f.postErrorToMainThread(e);
65
+ }
66
+ };
67
+ f.attachWorkerSideOnMessage(g);
68
+ //#endregion
69
+ export { f as default, m as handleBuildUtxosMessage, h as handleDecipherMessage, p as handleFilterUtxosWithNullifier, g as onWorkerMessage };
@@ -1 +1 @@
1
- const e=require(`../constants/vite.constants.cjs`),t=require(`./worker.registry.cjs`);var n=class n{constructor(){}static resolveWorkerURL=async e=>{let{getWorkerViteURL:t}=await Promise.resolve().then(()=>require(`./viteWorkerURL.constant.cjs`));return(await t())[e]};static createWorker=async r=>{if(e.isNode){let e;return r===t.WorkerVariant.SnarkJS?e=await import(`./snarkjsWorker/snarkjsWorkerLogic`):r===t.WorkerVariant.ZKProof?e=await import(`./zkProofWorker/zkProofWorkerLogic`):r===t.WorkerVariant.UTXO&&(e=await import(`./utxoWorker/utxoWorkerLogic`)),e.default}let i=await n.resolveWorkerURL(r);return new Worker(i,{type:`module`})};static getWebWorker(e){switch(e){case t.WorkerVariant.ZKProof:return n.createWorker(e);case t.WorkerVariant.SnarkJS:return n.createWorker(e);case t.WorkerVariant.UTXO:return n.createWorker(e);default:throw Error(`Unknown worker type: ${e}`)}}};exports.WorkerFactory=n;
1
+ const e=require(`../constants/vite.constants.cjs`),t=require(`./worker.registry.cjs`);var n=class n{constructor(){}static resolveWorkerURL=async e=>{let{getWorkerViteURL:t}=await Promise.resolve().then(()=>require(`./viteWorkerURL.constant.cjs`));return(await t())[e]};static createWorker=async r=>{if(e.isNode){let e;return r===t.WorkerVariant.SnarkJS?e=await Promise.resolve().then(()=>require(`./snarkjsWorker/snarkjsWorkerLogic.cjs`)):r===t.WorkerVariant.ZKProof?e=await Promise.resolve().then(()=>require(`./zkProofWorker/zkProofWorkerLogic.cjs`)):r===t.WorkerVariant.UTXO&&(e=await Promise.resolve().then(()=>require(`./utxoWorker/utxoWorkerLogic.cjs`))),e.default}let i=await n.resolveWorkerURL(r);return new Worker(i,{type:`module`})};static getWebWorker(e){switch(e){case t.WorkerVariant.ZKProof:return n.createWorker(e);case t.WorkerVariant.SnarkJS:return n.createWorker(e);case t.WorkerVariant.UTXO:return n.createWorker(e);default:throw Error(`Unknown worker type: ${e}`)}}};exports.WorkerFactory=n;
@@ -10,16 +10,7 @@ var n = class n {
10
10
  static createWorker = async (r) => {
11
11
  if (e) {
12
12
  let e;
13
- return r === t.SnarkJS ? e = await import(
14
- /* @vite-ignore */
15
- "./snarkjsWorker/snarkjsWorkerLogic"
16
- ) : r === t.ZKProof ? e = await import(
17
- /* @vite-ignore */
18
- "./zkProofWorker/zkProofWorkerLogic"
19
- ) : r === t.UTXO && (e = await import(
20
- /* @vite-ignore */
21
- "./utxoWorker/utxoWorkerLogic"
22
- )), e.default;
13
+ return r === t.SnarkJS ? e = await import("./snarkjsWorker/snarkjsWorkerLogic.mjs") : r === t.ZKProof ? e = await import("./zkProofWorker/zkProofWorkerLogic.mjs") : r === t.UTXO && (e = await import("./utxoWorker/utxoWorkerLogic.mjs")), e.default;
23
14
  }
24
15
  let i = await n.resolveWorkerURL(r);
25
16
  return new Worker(i, { type: "module" });
@@ -0,0 +1 @@
1
+ var e=class{isNode=!1;onmessage=null;onerror=null;_eventEmitter;get eventEmitter(){return this._eventEmitter||(this.isNode?this._eventEmitter=new(require(`events`)):this._eventEmitter=new EventTarget),this._eventEmitter}constructor(){this.isNode=typeof process<`u`&&process.versions!=null&&process.versions.node!=null}terminate(){}postMessage(e){this.isNode?this.eventEmitter.emit(`message`,e):postMessage(e)}postMessageToMainThread(e){let t={data:e};this.onmessage?this.onmessage(t):postMessage(e)}postErrorToMainThread(e){let t={data:{error:e}};this.onerror?this.onerror(t):postMessage(e)}attachWorkerSideOnMessage(e){this.isNode&&this.eventEmitter.on(`message`,t=>{e(t)})}};exports.WorkerProxy=e;
@@ -0,0 +1,33 @@
1
+ import { __require as e } from "../_virtual/_rolldown/runtime.mjs";
2
+ //#region libs/shared/common/src/webworker/workerProxy.ts
3
+ var t = class {
4
+ isNode = !1;
5
+ onmessage = null;
6
+ onerror = null;
7
+ _eventEmitter;
8
+ get eventEmitter() {
9
+ return this._eventEmitter || (this.isNode ? this._eventEmitter = new (e("events"))() : this._eventEmitter = new EventTarget()), this._eventEmitter;
10
+ }
11
+ constructor() {
12
+ this.isNode = typeof process < "u" && process.versions != null && process.versions.node != null;
13
+ }
14
+ terminate() {}
15
+ postMessage(e) {
16
+ this.isNode ? this.eventEmitter.emit("message", e) : postMessage(e);
17
+ }
18
+ postMessageToMainThread(e) {
19
+ let t = { data: e };
20
+ this.onmessage ? this.onmessage(t) : postMessage(e);
21
+ }
22
+ postErrorToMainThread(e) {
23
+ let t = { data: { error: e } };
24
+ this.onerror ? this.onerror(t) : postMessage(e);
25
+ }
26
+ attachWorkerSideOnMessage(e) {
27
+ this.isNode && this.eventEmitter.on("message", (t) => {
28
+ e(t);
29
+ });
30
+ }
31
+ };
32
+ //#endregion
33
+ export { t as WorkerProxy };
@@ -0,0 +1 @@
1
+ const e=require(`../../crypto/preProcessing.cjs`),t=require(`../../data-structures/utxo/Utxo.cjs`),n=require(`../../functions/snarkjs/common.snarkjs.cjs`),r=require(`./zkProofWorker.types.cjs`),i=require(`../../functions/utils/merkleTree.utils.cjs`);var a=new(require(`../workerProxy.cjs`)).WorkerProxy,o=e=>{let{inputUtxosSerialized:r,merkleTreeSerialized:o}=e.data,s=i.contructMerkleTreeFromSerialized(o),{inCommitmentSiblings:c,inCommitmentSiblingSides:l}=n.calcCommitmentsSiblingAndSides(r.map(e=>e.map(e=>new t.Utxo(e))),s);a.postMessageToMainThread({inCommitmentSiblings:c,inCommitmentSiblingSides:l})},s=e=>{let{accessKey:t,merkleTreeAccessTokenSerialized:r}=e.data,{accessTokenSiblings:o,accessTokenSiblingSides:s}=n.calcAccessTokenSiblingsAndSides(t,i.contructMerkleTreeFromSerialized(r));a.postMessageToMainThread({accessTokenSiblings:o,accessTokenSiblingSides:s})},c=e=>{let{inputUtxosSerialized:n}=e.data,r=n.map(e=>e.map(e=>new t.Utxo(e))).map(e=>e.map(e=>e.amount===0n?`0`:e.getNullifier()));a.postMessageToMainThread(r)},l=async t=>{try{await e.preProcessing();let{type:n}=t.payload;switch(n){case r.ZKProofWorkerActionType.CALC_COMMITMENTS_SIBLING_AND_SIDES:o(t.payload);return;case r.ZKProofWorkerActionType.CALC_ACCESS_TOKEN_SIBLING_AND_SIDES:s(t.payload);return;case r.ZKProofWorkerActionType.BUILD_IN_NULLIFIERS:c(t.payload);return;default:throw Error(`Unknown worker message type ${n}`)}}catch(e){console.error(e),a.postErrorToMainThread(e)}};a.attachWorkerSideOnMessage(l),exports.default=a,exports.handleBuildInNullifiers=c,exports.handleCalcAccessTokenSiblingAndSides=s,exports.handleCalcCommitmentsSiblingAndSides=o,exports.onWorkerMessage=l;
@@ -0,0 +1,45 @@
1
+ import { preProcessing as e } from "../../crypto/preProcessing.mjs";
2
+ import { Utxo as t } from "../../data-structures/utxo/Utxo.mjs";
3
+ import { calcAccessTokenSiblingsAndSides as n, calcCommitmentsSiblingAndSides as r } from "../../functions/snarkjs/common.snarkjs.mjs";
4
+ import { ZKProofWorkerActionType as i } from "./zkProofWorker.types.mjs";
5
+ import { contructMerkleTreeFromSerialized as a } from "../../functions/utils/merkleTree.utils.mjs";
6
+ import { WorkerProxy as o } from "../workerProxy.mjs";
7
+ //#region libs/shared/common/src/webworker/zkProofWorker/zkProofWorkerLogic.ts
8
+ var s = new o(), c = (e) => {
9
+ let { inputUtxosSerialized: n, merkleTreeSerialized: i } = e.data, o = a(i), { inCommitmentSiblings: c, inCommitmentSiblingSides: l } = r(n.map((e) => e.map((e) => new t(e))), o);
10
+ s.postMessageToMainThread({
11
+ inCommitmentSiblings: c,
12
+ inCommitmentSiblingSides: l
13
+ });
14
+ }, l = (e) => {
15
+ let { accessKey: t, merkleTreeAccessTokenSerialized: r } = e.data, { accessTokenSiblings: i, accessTokenSiblingSides: o } = n(t, a(r));
16
+ s.postMessageToMainThread({
17
+ accessTokenSiblings: i,
18
+ accessTokenSiblingSides: o
19
+ });
20
+ }, u = (e) => {
21
+ let { inputUtxosSerialized: n } = e.data, r = n.map((e) => e.map((e) => new t(e))).map((e) => e.map((e) => e.amount === 0n ? "0" : e.getNullifier()));
22
+ s.postMessageToMainThread(r);
23
+ }, d = async (t) => {
24
+ try {
25
+ await e();
26
+ let { type: n } = t.payload;
27
+ switch (n) {
28
+ case i.CALC_COMMITMENTS_SIBLING_AND_SIDES:
29
+ c(t.payload);
30
+ return;
31
+ case i.CALC_ACCESS_TOKEN_SIBLING_AND_SIDES:
32
+ l(t.payload);
33
+ return;
34
+ case i.BUILD_IN_NULLIFIERS:
35
+ u(t.payload);
36
+ return;
37
+ default: throw Error(`Unknown worker message type ${n}`);
38
+ }
39
+ } catch (e) {
40
+ console.error(e), s.postErrorToMainThread(e);
41
+ }
42
+ };
43
+ s.attachWorkerSideOnMessage(d);
44
+ //#endregion
45
+ export { s as default, u as handleBuildInNullifiers, l as handleCalcAccessTokenSiblingAndSides, c as handleCalcCommitmentsSiblingAndSides, d as onWorkerMessage };