UNPKG

@hazae41/networker

Version:

Generate Network secrets in a worker

1 lines 8.06 kB
{"version":3,"file":"index.cjs","sources":["../../../../src/mods/library/mods/worker/index.ts"],"sourcesContent":["import { Deferred, Stack } from \"@hazae41/box\";\nimport { Future } from \"@hazae41/future\";\nimport { RpcCounter, RpcRequestPreinit, RpcResponse, RpcResponseInit } from \"@hazae41/jsonrpc\";\nimport { NetWorkerCreateParams, NetWorkerGenerateResult } from \"mods/common/index.js\";\nimport { DisWorker } from \"mods/library/libs/disworker/index.js\";\nimport { data } from \"../data/index.js\";\n\nexport class NetWorker extends DisWorker {\n\n readonly worker = new Worker(data, { type: \"module\" })\n readonly counter = new RpcCounter()\n\n async requestOrThrow<T>(prerequest: RpcRequestPreinit<unknown>) {\n using stack = new Stack()\n\n const request = this.counter.prepare(prerequest)\n const future = new Future<RpcResponse<T>>()\n\n const onMessage = (e: MessageEvent<RpcResponseInit<T>>) => {\n if (e.data.id !== request.id)\n return\n future.resolve(RpcResponse.from(e.data))\n }\n\n this.worker.addEventListener(\"message\", onMessage, { passive: true })\n stack.push(new Deferred(() => this.worker.removeEventListener(\"message\", onMessage)))\n\n const onError = () => future.reject(new Error(\"Errored\"))\n\n this.worker.addEventListener(\"error\", onError, { passive: true })\n stack.push(new Deferred(() => this.worker.removeEventListener(\"error\", onError)))\n\n const onMessageError = (cause: unknown) => future.reject(new Error(\"Errored\", { cause }))\n\n this.worker.addEventListener(\"messageerror\", onMessageError, { passive: true })\n stack.push(new Deferred(() => this.worker.removeEventListener(\"messageerror\", onMessageError)))\n\n this.worker.postMessage(request)\n\n return await future.promise\n }\n\n async createOrThrow(params: NetWorkerCreateParams) {\n const uuid = await this.requestOrThrow<string>({\n method: \"net_create\",\n params: [params]\n }).then(r => r.getOrThrow())\n\n return new NetMixin(this, uuid)\n }\n\n}\n\nexport class NetMixin {\n\n constructor(\n readonly worker: NetWorker,\n readonly uuid: string\n ) { }\n\n async [Symbol.asyncDispose]() {\n await this.worker.requestOrThrow<void>({\n method: \"net_destroy\",\n params: [this.uuid]\n }).then(r => r.getOrThrow())\n }\n\n async generateOrThrow(minimumZeroHex: string) {\n return await this.worker.requestOrThrow<NetWorkerGenerateResult>({\n method: \"net_generate\",\n params: [this.uuid, minimumZeroHex]\n }).then(r => r.getOrThrow())\n }\n\n async verifyProofOrThrow(proofZeroHex: string) {\n return await this.worker.requestOrThrow<string>({\n method: \"net_verify_proof\",\n params: [this.uuid, proofZeroHex]\n }).then(r => r.getOrThrow())\n }\n\n async verifySecretOrThrow(secretZeroHex: string) {\n return await this.worker.requestOrThrow<string>({\n method: \"net_verify_secret\",\n params: [this.uuid, secretZeroHex]\n }).then(r => r.getOrThrow())\n }\n\n async verifyProofsOrThrow(proofsZeroHexArray: readonly string[]) {\n return await this.worker.requestOrThrow<string>({\n method: \"net_verify_proofs\",\n params: [this.uuid, proofsZeroHexArray]\n }).then(r => r.getOrThrow())\n }\n\n async verifySecretsOrThrow(secretsZeroHexArray: readonly string[]) {\n return await this.worker.requestOrThrow<string>({\n method: \"net_verify_secrets\",\n params: [this.uuid, secretsZeroHexArray]\n }).then(r => r.getOrThrow())\n }\n\n}"],"names":["NetWorker","DisWorker","worker","Worker","data","type","counter","RpcCounter","requestOrThrow","prerequest","stack","Stack","request","prepare","future","Future","onMessage","e","id","resolve","RpcResponse","from","addEventListener","passive","push","Deferred","removeEventListener","onError","reject","Error","onMessageError","cause","postMessage","promise","createOrThrow","params","uuid","method","then","r","getOrThrow","NetMixin","constructor","Symbol","asyncDispose","generateOrThrow","minimumZeroHex","verifyProofOrThrow","proofZeroHex","verifySecretOrThrow","secretZeroHex","verifyProofsOrThrow","proofsZeroHexArray","verifySecretsOrThrow","secretsZeroHexArray"],"mappings":"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"}