{"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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"}