index.ts 867 B

123456789101112131415161718192021222324252627
  1. import { Remote } from "comlink";
  2. import { ComlinkWorker } from "../worker/comlinkWorker";
  3. import { DedicatedCryptoWorker } from "./internal/crypto.worker";
  4. class ComlinkCryptoWorker {
  5. private comlinkWorkerInstance:
  6. | Promise<Remote<DedicatedCryptoWorker>>
  7. | undefined;
  8. async getInstance() {
  9. if (!this.comlinkWorkerInstance) {
  10. const comlinkWorker = getDedicatedCryptoWorker();
  11. this.comlinkWorkerInstance = comlinkWorker.remote;
  12. }
  13. return this.comlinkWorkerInstance;
  14. }
  15. }
  16. export const getDedicatedCryptoWorker = () => {
  17. const cryptoComlinkWorker = new ComlinkWorker<typeof DedicatedCryptoWorker>(
  18. "ente-crypto-worker",
  19. new Worker(new URL("internal/crypto.worker.ts", import.meta.url)),
  20. );
  21. return cryptoComlinkWorker;
  22. };
  23. export default new ComlinkCryptoWorker();