{"version":3,"file":"utils/worker/worker.mjs","sources":["../../../src/utils/worker/worker.ts"],"sourcesContent":["import { WorkerMessage, UserWorkerEventCallback, NativeWorkerMessage } from './types';\nimport { sendMessageInClient } from './utils';\n\nexport class ChildWorker {\n  private timer = 0;\n\n  private callbacks: Map<number | string, UserWorkerEventCallback> = new Map();\n\n  constructor(protected worker: Worker) {\n    this.setup();\n  }\n\n  protected setup() {\n    this.worker.onmessage = (msg: NativeWorkerMessage) => {\n      const { data } = msg;\n      if (this.callbacks.has(data.id)) {\n        const fn = this.callbacks.get(data.id)!;\n        // remove it when execute.\n        this.callbacks.delete(data.id);\n        fn(data.data);\n      }\n    };\n  }\n\n  protected createEventId() {\n    return `${Date.now()}_${++this.timer}`;\n  }\n\n  public emit<T, P = unknown>(data: P, callback: UserWorkerEventCallback<T>) {\n    const id = this.createEventId();\n    const msg: WorkerMessage<P> = {\n      id,\n      data,\n    };\n\n    this.callbacks.set(id, callback as UserWorkerEventCallback);\n    sendMessageInClient(msg, this.worker);\n\n    return { abort: () => this.callbacks.delete(id) };\n  }\n\n  public dispose() {\n    this.worker.terminate();\n  }\n}\n"],"names":["ChildWorker","msg","data","fn","Date","callback","id","sendMessageInClient","worker","Map"],"mappings":";;;;;;;;;;;AAGO,MAAMA;IASD,QAAQ;QAChB,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,CAACC;YACvB,MAAM,EAAEC,IAAI,EAAE,GAAGD;YACjB,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAACC,KAAK,EAAE,GAAG;gBAC/B,MAAMC,KAAK,IAAI,CAAC,SAAS,CAAC,GAAG,CAACD,KAAK,EAAE;gBAErC,IAAI,CAAC,SAAS,CAAC,MAAM,CAACA,KAAK,EAAE;gBAC7BC,GAAGD,KAAK,IAAI;YACd;QACF;IACF;IAEU,gBAAgB;QACxB,OAAO,GAAGE,KAAK,GAAG,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE;IACxC;IAEO,KAAqBF,IAAO,EAAEG,QAAoC,EAAE;QACzE,MAAMC,KAAK,IAAI,CAAC,aAAa;QAC7B,MAAML,MAAwB;YAC5BK;YACAJ;QACF;QAEA,IAAI,CAAC,SAAS,CAAC,GAAG,CAACI,IAAID;QACvBE,oBAAoBN,KAAK,IAAI,CAAC,MAAM;QAEpC,OAAO;YAAE,OAAO,IAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAACK;QAAI;IAClD;IAEO,UAAU;QACf,IAAI,CAAC,MAAM,CAAC,SAAS;IACvB;IAnCA,YAAsBE,MAAc,CAAE;;QAJtC,uBAAQ,SAAR;QAEA,uBAAQ,aAAR;aAEsBA,MAAM,GAANA;aAJd,KAAK,GAAG;aAER,SAAS,GAAkD,IAAIC;QAGrE,IAAI,CAAC,KAAK;IACZ;AAkCF"}