@sabaaa1/common 0.0.24 → 0.0.27

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": "@sabaaa1/common",
3
- "version": "0.0.24",
3
+ "version": "0.0.27",
4
4
  "homepage": "hinkal.pro",
5
5
  "author": {
6
6
  "name": "Hinkal Protocol"
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("../constants/vite.constants.cjs"),r=require("./worker.registry.cjs");class t{constructor(){}static resolveWorkerURL=async e=>{const{getWorkerViteURL:s}=await Promise.resolve().then(()=>require("./viteWorkerURL.constant.cjs"));return(await s())[e]};static createWorker=async e=>{if(i.isNode||i.isSandbox||i.isWebpack){let o;return e===r.WorkerVariant.SnarkJS?o=await Promise.resolve().then(()=>require("./snarkjsWorker/snarkjsWorkerLogic.cjs")):e===r.WorkerVariant.ZKProof?o=await Promise.resolve().then(()=>require("./zkProofWorker/zkProofWorkerLogic.cjs")):e===r.WorkerVariant.UTXO&&(o=await Promise.resolve().then(()=>require("./utxoWorker/utxoWorkerLogic.cjs"))),o.default}const s=await t.resolveWorkerURL(e);return new Worker(s,{type:"module"})};static getWebWorker(e){switch(e){case r.WorkerVariant.ZKProof:return t.createWorker(e);case r.WorkerVariant.SnarkJS:return t.createWorker(e);case r.WorkerVariant.UTXO:return t.createWorker(e);default:throw Error(`Unknown worker type: ${e}`)}}}exports.WorkerFactory=t;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../constants/vite.constants.cjs");const n=require("./viteWorkerURL.constant.cjs");class t{static workers=new Map;static createWorker=async e=>{if(typeof window>"u")throw new Error("WebWorker cannot be created outside browser environment");const o=(await n.getWorkerViteURL())[e];if(!o)throw new Error(`Worker URL not found for variant ${e}`);return new Worker(o,{type:"module"})};static getWebWorker(e){let r=this.workers.get(e);return r||(r=t.createWorker(e),this.workers.set(e,r)),r}}exports.WorkerFactory=t;
@@ -1,7 +1,6 @@
1
1
  import { WorkerVariant } from './worker.registry';
2
2
  export declare class WorkerFactory {
3
- private constructor();
4
- private static resolveWorkerURL;
3
+ private static workers;
5
4
  private static createWorker;
6
5
  static getWebWorker(workerVariant: WorkerVariant): Promise<any>;
7
6
  }
@@ -1,40 +1,18 @@
1
- import { isNode as i, isSandbox as c, isWebpack as a } from "../constants/vite.constants.mjs";
2
- import { WorkerVariant as r } from "./worker.registry.mjs";
1
+ import "../constants/vite.constants.mjs";
2
+ import { getWorkerViteURL as s } from "./viteWorkerURL.constant.mjs";
3
3
  class o {
4
- constructor() {
5
- }
6
- static resolveWorkerURL = async (e) => {
7
- const { getWorkerViteURL: s } = await import("./viteWorkerURL.constant.mjs");
8
- return (await s())[e];
9
- };
10
- static createWorker = async (e) => {
11
- if (i || c || a) {
12
- let t;
13
- return e === r.SnarkJS ? t = await import(
14
- /* @vite-ignore */
15
- "./snarkjsWorker/snarkjsWorkerLogic.mjs"
16
- ) : e === r.ZKProof ? t = await import(
17
- /* @vite-ignore */
18
- "./zkProofWorker/zkProofWorkerLogic.mjs"
19
- ) : e === r.UTXO && (t = await import(
20
- /* @vite-ignore */
21
- "./utxoWorker/utxoWorkerLogic.mjs"
22
- )), t.default;
23
- }
24
- const s = await o.resolveWorkerURL(e);
25
- return new Worker(s, { type: "module" });
4
+ static workers = /* @__PURE__ */ new Map();
5
+ static createWorker = async (r) => {
6
+ if (typeof window > "u")
7
+ throw new Error("WebWorker cannot be created outside browser environment");
8
+ const t = (await s())[r];
9
+ if (!t)
10
+ throw new Error(`Worker URL not found for variant ${r}`);
11
+ return new Worker(t, { type: "module" });
26
12
  };
27
- static getWebWorker(e) {
28
- switch (e) {
29
- case r.ZKProof:
30
- return o.createWorker(e);
31
- case r.SnarkJS:
32
- return o.createWorker(e);
33
- case r.UTXO:
34
- return o.createWorker(e);
35
- default:
36
- throw Error(`Unknown worker type: ${e}`);
37
- }
13
+ static getWebWorker(r) {
14
+ let e = this.workers.get(r);
15
+ return e || (e = o.createWorker(r), this.workers.set(r, e)), e;
38
16
  }
39
17
  }
40
18
  export {
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const M=require("../workerProxy.cjs"),i=require("../../constants/vite.constants.cjs"),O=require("snarkjs"),v=require("axios");function F(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const s=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,s.get?s:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const g=F(O),n=new M.WorkerProxy,c=async e=>{const{data:t}=await v.get(e,{responseType:"arraybuffer"});return new Uint8Array(t)},b=async e=>{try{const{input:t,wasmFilePath:r,zKeyFilePath:s,chainId:w}=e.payload.data,{hostLocation:{origin:l},constants:{isDevelopment:k,chains:{chainIds:P}}}=e.metadata;let a=r,o=s,u,f;const h=a.startsWith("https://");if(i.isNode&&!h){i.isWebpack?(a=`libs/hardhat/test/circuits/${r}`,o=`libs/hardhat/test/circuits/${s}`):!i.isWebpack&&k&&(a=`test/circuits/${r}`,o=`test/circuits/${s}`);const y=require("path");a=y.resolve(a),o=y.resolve(o)}i.isNode&&h?(u=await c(a),f=await c(o)):w===P.localhost&&!i.isNode&&(a=`${l}/${r}`,o=`${l}/${s}`);const{proof:d,publicSignals:p}=await g.groth16.fullProve(t,u??a,f??o),m=await g.groth16.exportSolidityCallData(d,p),$=JSON.parse(`[${m}]`);n.postMessageToMainThread({zkCallData:$,proof:d,publicSignals:p})}catch(t){console.error(t),n.postErrorToMainThread(t)}};n.attachWorkerSideOnMessage(b);exports.default=n;exports.fetchUint8Array=c;exports.onWorkerMessage=b;
@@ -1,40 +0,0 @@
1
- import { WorkerProxy as b } from "../workerProxy.mjs";
2
- import { isNode as i, isWebpack as d } from "../../constants/vite.constants.mjs";
3
- import * as m from "snarkjs";
4
- import x from "axios";
5
- const l = new b(), w = async (r) => {
6
- const { data: e } = await x.get(r, { responseType: "arraybuffer" });
7
- return new Uint8Array(e);
8
- }, z = async (r) => {
9
- try {
10
- const { input: e, wasmFilePath: s, zKeyFilePath: o, chainId: $ } = r.payload.data, {
11
- hostLocation: { origin: n },
12
- constants: {
13
- isDevelopment: g,
14
- chains: { chainIds: k }
15
- }
16
- } = r.metadata;
17
- let t = s, a = o, c, h;
18
- const f = t.startsWith("https://");
19
- if (i && !f) {
20
- d ? (t = `libs/hardhat/test/circuits/${s}`, a = `libs/hardhat/test/circuits/${o}`) : !d && g && (t = `test/circuits/${s}`, a = `test/circuits/${o}`);
21
- const y = require("path");
22
- t = y.resolve(t), a = y.resolve(a);
23
- }
24
- i && f ? (c = await w(t), h = await w(a)) : $ === k.localhost && !i && (t = `${n}/${s}`, a = `${n}/${o}`);
25
- const { proof: p, publicSignals: u } = await m.groth16.fullProve(
26
- e,
27
- c ?? t,
28
- h ?? a
29
- ), F = await m.groth16.exportSolidityCallData(p, u), P = JSON.parse(`[${F}]`);
30
- l.postMessageToMainThread({ zkCallData: P, proof: p, publicSignals: u });
31
- } catch (e) {
32
- console.error(e), l.postErrorToMainThread(e);
33
- }
34
- };
35
- l.attachWorkerSideOnMessage(z);
36
- export {
37
- l as default,
38
- w as fetchUint8Array,
39
- z as onWorkerMessage
40
- };
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("../../crypto/preProcessing.cjs"),a=require("../../data-structures/crypto-keys/keys.cjs"),T=require("../../data-structures/utxo/Utxo.cjs"),h=require("../../data-structures/crypto-keys/encryptDecryptUtxo.cjs"),y=require("../../data-structures/crypto-keys/decodeUTXO.cjs"),k=require("../workerProxy.cjs"),d=require("./utxoWorker.types.cjs"),c=new k.WorkerProxy,p=async({data:e})=>{const{utxos:r,nullifiers:s}=e,o=r.filter(t=>{const u=new T.Utxo(t);return!s.has(u.getNullifier())});c.postMessageToMainThread({utxoConstructors:o,stealthPairCache:a.stealthPairCacheDevice.serialize(),stealthAddressCache:a.stealthAddressCacheDevice.serialize()})},U=async({data:e})=>{const r=new a.UserKeys(e.signature),s=r.getShieldedPrivateKey(),o=e.encryptedOutputs.map(t=>{try{return t.isPositive?h.decryptUtxoConstructorArgs(Buffer.from(t.value.slice(2),"hex"),r):y.decodeUtxoConstructorArgs(t.value,s)}catch{return}}).filter(t=>t!==void 0&&t.amount!==0n);c.postMessageToMainThread(o)},x=async({data:e})=>{const r=new a.UserKeys(e.signature),s=[],{encryptedOutputs:o}=e;let{lastOutput:t}=e;const u=r.getShieldedPrivateKey();for(let l=0;l<o.length;l+=1){const n=o[l];if(t=n.value,n.isPositive)try{const i=h.decryptUtxo(Buffer.from(t.slice(2),"hex"),r);if(!i.erc20TokenAddress||!i.amount||!i.stealthAddress)throw Error("bruh");s.push(n)}catch{}else try{y.checkUtxoSignature(t,u)&&s.push(n)}catch{}}c.postMessageToMainThread({additionalEncryptedOutputs:s,lastOutput:t})},g=async e=>{try{await f.preProcessing();const{type:r}=e.payload;switch(r){case d.UtxoWorkerActionType.BATCH_FILTER_UTXOS_WITH_NULLIFIER:await p(e.payload);return;case d.UtxoWorkerActionType.BUILD_UTXOS:await U(e.payload);return;case d.UtxoWorkerActionType.DECIPHER_OUTPUTS:await x(e.payload);return;default:throw Error(`Unknown worker message type ${r}`)}}catch(r){console.error(r),c.postErrorToMainThread(r)}};c.attachWorkerSideOnMessage(g);exports.default=c;exports.handleBuildUtxosMessage=U;exports.handleDecipherMessage=x;exports.handleFilterUtxosWithNullifier=p;exports.onWorkerMessage=g;
@@ -1,76 +0,0 @@
1
- import { preProcessing as u } from "../../crypto/preProcessing.mjs";
2
- import { stealthPairCacheDevice as p, stealthAddressCacheDevice as y, UserKeys as h } from "../../data-structures/crypto-keys/keys.mjs";
3
- import { Utxo as f } from "../../data-structures/utxo/Utxo.mjs";
4
- import { decryptUtxoConstructorArgs as m, decryptUtxo as g } from "../../data-structures/crypto-keys/encryptDecryptUtxo.mjs";
5
- import { decodeUtxoConstructorArgs as x, checkUtxoSignature as U } from "../../data-structures/crypto-keys/decodeUTXO.mjs";
6
- import { WorkerProxy as T } from "../workerProxy.mjs";
7
- import { UtxoWorkerActionType as d } from "./utxoWorker.types.mjs";
8
- const i = new T(), w = async ({ data: e }) => {
9
- const { utxos: r, nullifiers: s } = e, o = r.filter((t) => {
10
- const n = new f(t);
11
- return !s.has(n.getNullifier());
12
- });
13
- i.postMessageToMainThread({
14
- utxoConstructors: o,
15
- stealthPairCache: p.serialize(),
16
- stealthAddressCache: y.serialize()
17
- });
18
- }, P = async ({ data: e }) => {
19
- const r = new h(e.signature), s = r.getShieldedPrivateKey(), o = e.encryptedOutputs.map((t) => {
20
- try {
21
- return t.isPositive ? m(Buffer.from(t.value.slice(2), "hex"), r) : x(t.value, s);
22
- } catch {
23
- return;
24
- }
25
- }).filter((t) => t !== void 0 && t.amount !== 0n);
26
- i.postMessageToMainThread(o);
27
- }, v = async ({ data: e }) => {
28
- const r = new h(e.signature), s = [], { encryptedOutputs: o } = e;
29
- let { lastOutput: t } = e;
30
- const n = r.getShieldedPrivateKey();
31
- for (let l = 0; l < o.length; l += 1) {
32
- const c = o[l];
33
- if (t = c.value, c.isPositive)
34
- try {
35
- const a = g(Buffer.from(t.slice(2), "hex"), r);
36
- if (!a.erc20TokenAddress || !a.amount || !a.stealthAddress)
37
- throw Error("bruh");
38
- s.push(c);
39
- } catch {
40
- }
41
- else
42
- try {
43
- U(t, n) && s.push(c);
44
- } catch {
45
- }
46
- }
47
- i.postMessageToMainThread({ additionalEncryptedOutputs: s, lastOutput: t });
48
- }, k = async (e) => {
49
- try {
50
- await u();
51
- const { type: r } = e.payload;
52
- switch (r) {
53
- case d.BATCH_FILTER_UTXOS_WITH_NULLIFIER:
54
- await w(e.payload);
55
- return;
56
- case d.BUILD_UTXOS:
57
- await P(e.payload);
58
- return;
59
- case d.DECIPHER_OUTPUTS:
60
- await v(e.payload);
61
- return;
62
- default:
63
- throw Error(`Unknown worker message type ${r}`);
64
- }
65
- } catch (r) {
66
- console.error(r), i.postErrorToMainThread(r);
67
- }
68
- };
69
- i.attachWorkerSideOnMessage(k);
70
- export {
71
- i as default,
72
- P as handleBuildUtxosMessage,
73
- v as handleDecipherMessage,
74
- w as handleFilterUtxosWithNullifier,
75
- k as onWorkerMessage
76
- };
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class s{isNode=!1;isSandbox=!1;onmessage=null;onerror=null;_eventEmitter;get eventEmitter(){if(this._eventEmitter)return this._eventEmitter;if(this.isNode){const e=require("events");this._eventEmitter=new e}else this._eventEmitter=new EventTarget;return this._eventEmitter}constructor(){this.isNode=typeof process<"u"&&process.versions!=null&&process.versions.node!=null,this.isSandbox=typeof window<"u"&&window.origin==="null"}terminate(){}postMessage(e){this.isNode?this.eventEmitter.emit("message",e):this.isSandbox?this.eventEmitter?.dispatchEvent(new CustomEvent("worker-message",{detail:e})):postMessage(e)}postMessageToMainThread(e){const t={data:e};this.onmessage?this.onmessage(t):postMessage(e)}postErrorToMainThread(e){const t={data:{error:e}};this.onerror?this.onerror(t):postMessage(e)}attachWorkerSideOnMessage(e){this.isNode?this.eventEmitter.on("message",t=>{e(t)}):this.isSandbox&&this.eventEmitter.addEventListener("worker-message",t=>{e(t.detail)})}}exports.WorkerProxy=s;
@@ -1,54 +0,0 @@
1
- class i {
2
- isNode = !1;
3
- isSandbox = !1;
4
- /**
5
- * This allow browser or main thread to listen for worker response message
6
- * using the normal `worker.onmessage = () => {}` syntax. Is should only be side on the
7
- * main thread side, not on worker side.
8
- */
9
- onmessage = null;
10
- /**
11
- * This allow browser or main thread to listen for worker response message
12
- * using the normal `worker.onerror = () => {}` syntax. Is should only be side on the
13
- * main thread side, not on worker side.
14
- */
15
- onerror = null;
16
- _eventEmitter;
17
- // node EventEmitter
18
- get eventEmitter() {
19
- if (this._eventEmitter)
20
- return this._eventEmitter;
21
- if (this.isNode) {
22
- const e = require("events");
23
- this._eventEmitter = new e();
24
- } else
25
- this._eventEmitter = new EventTarget();
26
- return this._eventEmitter;
27
- }
28
- constructor() {
29
- this.isNode = typeof process < "u" && process.versions != null && process.versions.node != null, this.isSandbox = typeof window < "u" && window.origin === "null";
30
- }
31
- terminate() {
32
- }
33
- postMessage(e) {
34
- this.isNode ? this.eventEmitter.emit("message", e) : this.isSandbox ? this.eventEmitter?.dispatchEvent(new CustomEvent("worker-message", { detail: e })) : postMessage(e);
35
- }
36
- postMessageToMainThread(e) {
37
- const t = { data: e };
38
- this.onmessage ? this.onmessage(t) : postMessage(e);
39
- }
40
- postErrorToMainThread(e) {
41
- const t = { data: { error: e } };
42
- this.onerror ? this.onerror(t) : postMessage(e);
43
- }
44
- attachWorkerSideOnMessage(e) {
45
- this.isNode ? this.eventEmitter.on("message", (t) => {
46
- e(t);
47
- }) : this.isSandbox && this.eventEmitter.addEventListener("worker-message", (t) => {
48
- e(t.detail);
49
- });
50
- }
51
- }
52
- export {
53
- i as WorkerProxy
54
- };
@@ -1 +0,0 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const y=require("../../crypto/preProcessing.cjs"),A=require("../../data-structures/crypto-keys/keys.cjs"),S=require("../../data-structures/utxo/Utxo.cjs"),m=require("../../functions/snarkjs/common.snarkjs.cjs"),C=require("../workerProxy.cjs"),d=require("./zkProofWorker.types.cjs"),u=require("../../functions/utils/merkleTree.utils.cjs"),t=new C.WorkerProxy,p=r=>{const{inputUtxosSerialized:e,merkleTreeSerialized:a}=r.data,c=u.contructMerkleTreeFromSerialized(a),i=e.map(n=>n.map(l=>new S.Utxo(l))),{inCommitmentSiblings:s,inCommitmentSiblingSides:o}=m.calcCommitmentsSiblingAndSides(i,c);t.postMessageToMainThread({inCommitmentSiblings:s,inCommitmentSiblingSides:o})},k=r=>{const{userSignature:e,merkleTreeAccessTokenSerialized:a}=r.data,c=new A.UserKeys(e),i=u.contructMerkleTreeFromSerialized(a),{accessTokenSiblings:s,accessTokenSiblingSides:o}=m.calcAccessTokenSiblingsAndSides(c,i);t.postMessageToMainThread({accessTokenSiblings:s,accessTokenSiblingSides:o})},T=r=>{const{inputUtxosSerialized:e,onChainCreation:a,proverVersion:c}=r.data,i=e.map(o=>o.map(n=>new S.Utxo(n)));let s=[];c==="v1x0"?s=i.map((o,n)=>o.map(l=>a[n]?"0":l.getNullifier())):s=i.map(o=>o.map(n=>n.amount===0n?"0":n.getNullifier())),t.postMessageToMainThread(s)},g=async r=>{try{await y.preProcessing();const{type:e}=r.payload;switch(e){case d.ZKProofWorkerActionType.CALC_COMMITMENTS_SIBLING_AND_SIDES:p(r.payload);return;case d.ZKProofWorkerActionType.CALC_ACCESS_TOKEN_SIBLING_AND_SIDES:k(r.payload);return;case d.ZKProofWorkerActionType.BUILD_IN_NULLIFIERS:T(r.payload);return;default:throw Error(`Unknown worker message type ${e}`)}}catch(e){console.error(e),t.postErrorToMainThread(e)}};t.attachWorkerSideOnMessage(g);exports.default=t;exports.handleBuildInNullifiers=T;exports.handleCalcAccessTokenSiblingAndSides=k;exports.handleCalcCommitmentsSiblingAndSides=p;exports.onWorkerMessage=g;
@@ -1,52 +0,0 @@
1
- import { preProcessing as d } from "../../crypto/preProcessing.mjs";
2
- import { UserKeys as T } from "../../data-structures/crypto-keys/keys.mjs";
3
- import { Utxo as p } from "../../data-structures/utxo/Utxo.mjs";
4
- import { calcCommitmentsSiblingAndSides as g, calcAccessTokenSiblingsAndSides as u } from "../../functions/snarkjs/common.snarkjs.mjs";
5
- import { WorkerProxy as k } from "../workerProxy.mjs";
6
- import { ZKProofWorkerActionType as m } from "./zkProofWorker.types.mjs";
7
- import { contructMerkleTreeFromSerialized as S } from "../../functions/utils/merkleTree.utils.mjs";
8
- const c = new k(), C = (r) => {
9
- const { inputUtxosSerialized: e, merkleTreeSerialized: t } = r.data, a = S(t), i = e.map(
10
- (n) => n.map((l) => new p(l))
11
- ), { inCommitmentSiblings: s, inCommitmentSiblingSides: o } = g(i, a);
12
- c.postMessageToMainThread({ inCommitmentSiblings: s, inCommitmentSiblingSides: o });
13
- }, f = (r) => {
14
- const { userSignature: e, merkleTreeAccessTokenSerialized: t } = r.data, a = new T(e), i = S(t), { accessTokenSiblings: s, accessTokenSiblingSides: o } = u(a, i);
15
- c.postMessageToMainThread({ accessTokenSiblings: s, accessTokenSiblingSides: o });
16
- }, y = (r) => {
17
- const { inputUtxosSerialized: e, onChainCreation: t, proverVersion: a } = r.data, i = e.map(
18
- (o) => o.map((n) => new p(n))
19
- );
20
- let s = [];
21
- a === "v1x0" ? s = i.map(
22
- (o, n) => o.map((l) => t[n] ? "0" : l.getNullifier())
23
- ) : s = i.map((o) => o.map((n) => n.amount === 0n ? "0" : n.getNullifier())), c.postMessageToMainThread(s);
24
- }, A = async (r) => {
25
- try {
26
- await d();
27
- const { type: e } = r.payload;
28
- switch (e) {
29
- case m.CALC_COMMITMENTS_SIBLING_AND_SIDES:
30
- C(r.payload);
31
- return;
32
- case m.CALC_ACCESS_TOKEN_SIBLING_AND_SIDES:
33
- f(r.payload);
34
- return;
35
- case m.BUILD_IN_NULLIFIERS:
36
- y(r.payload);
37
- return;
38
- default:
39
- throw Error(`Unknown worker message type ${e}`);
40
- }
41
- } catch (e) {
42
- console.error(e), c.postErrorToMainThread(e);
43
- }
44
- };
45
- c.attachWorkerSideOnMessage(A);
46
- export {
47
- c as default,
48
- y as handleBuildInNullifiers,
49
- f as handleCalcAccessTokenSiblingAndSides,
50
- C as handleCalcCommitmentsSiblingAndSides,
51
- A as onWorkerMessage
52
- };