{"version":3,"file":"workerTimers--tNpEYVw.mjs","names":["pollerWorkerSource"],"sources":["../../src/workerTimers/workerTimers.built.ts","../../src/workerTimers/createWorkerTimers.ts"],"sourcesContent":["/**\n *\n * This is the minified string output of transforming workerTimers.worker.ts\n * Once the tsdown docs are complete, we will write a similar plugin as the one below:\n *\n * (this was the previous esbuild plugin we were using)\n * export const WebWorkerMinifyPlugin: Plugin = {\n *  name: 'WebWorkerMinifyPlugin',\n * setup(build) {\n *   build.onLoad({ filter: /\\.worker\\.ts/ }, async args => {\n *     console.log('aaaaaaaaaaaaa');\n *     const f = await readFile(args.path);\n *     const js = await esbuild.transform(f, { loader: 'ts', minify: true });\n *     return { loader: 'text', contents: js.code };\n *   });\n * },\n * };\n *\n */\nexport default 'const respond=r=>{self.postMessage(r)},workerToTabIds={};self.addEventListener(\"message\",r=>{const e=r.data;switch(e.type){case\"setTimeout\":workerToTabIds[e.id]=setTimeout(()=>{respond({id:e.id}),delete workerToTabIds[e.id]},e.ms);break;case\"clearTimeout\":workerToTabIds[e.id]&&(clearTimeout(workerToTabIds[e.id]),delete workerToTabIds[e.id]);break;case\"setInterval\":workerToTabIds[e.id]=setInterval(()=>{respond({id:e.id})},e.ms);break;case\"clearInterval\":workerToTabIds[e.id]&&(clearInterval(workerToTabIds[e.id]),delete workerToTabIds[e.id]);break}});\\n';\n","import { noop } from '../utils/noop';\nimport pollerWorkerSource from './workerTimers.built';\nimport type {\n  WorkerClearTimeout,\n  WorkerSetTimeout,\n  WorkerTimeoutCallback,\n  WorkerTimerEvent,\n  WorkerTimerId,\n  WorkerTimerResponseEvent,\n} from './workerTimers.types';\n\nconst createWebWorker = (source: string, opts: ConstructorParameters<typeof Worker>[1] = {}): Worker | null => {\n  if (typeof Worker === 'undefined') {\n    return null;\n  }\n\n  try {\n    const blob = new Blob([source], { type: 'application/javascript; charset=utf-8' });\n    const workerScript = globalThis.URL.createObjectURL(blob);\n    return new Worker(workerScript, opts);\n  } catch {\n    console.warn('Clerk: Cannot create worker from blob. Consider adding worker-src blob:; to your CSP');\n    return null;\n  }\n};\n\nconst fallbackTimers = () => {\n  const setTimeout = globalThis.setTimeout.bind(globalThis) as WorkerSetTimeout;\n  const setInterval = globalThis.setInterval.bind(globalThis) as WorkerSetTimeout;\n  const clearTimeout = globalThis.clearTimeout.bind(globalThis) as WorkerClearTimeout;\n  const clearInterval = globalThis.clearInterval.bind(globalThis) as WorkerClearTimeout;\n  return { setTimeout, setInterval, clearTimeout, clearInterval, cleanup: noop };\n};\n\nexport const createWorkerTimers = () => {\n  let id = 0;\n  const generateId = () => id++;\n  const callbacks = new Map<WorkerTimerId, WorkerTimeoutCallback>();\n  const post = (w: Worker | null, p: WorkerTimerEvent) => w?.postMessage(p);\n  const handleMessage = (e: MessageEvent<WorkerTimerResponseEvent>) => {\n    callbacks.get(e.data.id)?.();\n  };\n\n  let worker = createWebWorker(pollerWorkerSource, { name: 'clerk-timers' });\n  worker?.addEventListener('message', handleMessage);\n\n  if (!worker) {\n    return fallbackTimers();\n  }\n\n  const init = () => {\n    if (!worker) {\n      worker = createWebWorker(pollerWorkerSource, { name: 'clerk-timers' });\n      worker?.addEventListener('message', handleMessage);\n    }\n  };\n\n  const cleanup = () => {\n    if (worker) {\n      worker.terminate();\n      worker = null;\n      callbacks.clear();\n    }\n  };\n\n  const setTimeout: WorkerSetTimeout = (cb, ms) => {\n    init();\n    const id = generateId();\n    callbacks.set(id, () => {\n      cb();\n      callbacks.delete(id);\n    });\n    post(worker, { type: 'setTimeout', id, ms });\n    return id;\n  };\n\n  const setInterval: WorkerSetTimeout = (cb, ms) => {\n    init();\n    const id = generateId();\n    callbacks.set(id, cb);\n    post(worker, { type: 'setInterval', id, ms });\n    return id;\n  };\n\n  const clearTimeout: WorkerClearTimeout = id => {\n    init();\n    callbacks.delete(id);\n    post(worker, { type: 'clearTimeout', id });\n  };\n\n  const clearInterval: WorkerClearTimeout = id => {\n    init();\n    callbacks.delete(id);\n    post(worker, { type: 'clearInterval', id });\n  };\n\n  return { setTimeout, setInterval, clearTimeout, clearInterval, cleanup };\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAmBA,iCAAe;;;;ACRf,MAAM,mBAAmB,QAAgB,OAAgD,CAAC,MAAqB;CAC7G,IAAI,OAAO,WAAW,aACpB,OAAO;CAGT,IAAI;EACF,MAAM,OAAO,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,MAAM,wCAAwC,CAAC;EACjF,MAAM,eAAe,WAAW,IAAI,gBAAgB,IAAI;EACxD,OAAO,IAAI,OAAO,cAAc,IAAI;CACtC,QAAQ;EACN,QAAQ,KAAK,sFAAsF;EACnG,OAAO;CACT;AACF;AAEA,MAAM,uBAAuB;CAK3B,OAAO;EAAE,YAJU,WAAW,WAAW,KAAK,UAI5B;EAAG,aAHD,WAAW,YAAY,KAAK,UAGjB;EAAG,cAFb,WAAW,aAAa,KAAK,UAEL;EAAG,eAD1B,WAAW,cAAc,KAAK,UACQ;EAAG,SAAS;CAAK;AAC/E;AAEA,MAAa,2BAA2B;CACtC,IAAI,KAAK;CACT,MAAM,mBAAmB;CACzB,MAAM,4BAAY,IAAI,IAA0C;CAChE,MAAM,QAAQ,GAAkB,MAAwB,GAAG,YAAY,CAAC;CACxE,MAAM,iBAAiB,MAA8C;EACnE,UAAU,IAAI,EAAE,KAAK,EAAE,CAAC,GAAG;CAC7B;CAEA,IAAI,SAAS,gBAAgBA,4BAAoB,EAAE,MAAM,eAAe,CAAC;CACzE,QAAQ,iBAAiB,WAAW,aAAa;CAEjD,IAAI,CAAC,QACH,OAAO,eAAe;CAGxB,MAAM,aAAa;EACjB,IAAI,CAAC,QAAQ;GACX,SAAS,gBAAgBA,4BAAoB,EAAE,MAAM,eAAe,CAAC;GACrE,QAAQ,iBAAiB,WAAW,aAAa;EACnD;CACF;CAEA,MAAM,gBAAgB;EACpB,IAAI,QAAQ;GACV,OAAO,UAAU;GACjB,SAAS;GACT,UAAU,MAAM;EAClB;CACF;CAEA,MAAM,cAAgC,IAAI,OAAO;EAC/C,KAAK;EACL,MAAM,KAAK,WAAW;EACtB,UAAU,IAAI,UAAU;GACtB,GAAG;GACH,UAAU,OAAO,EAAE;EACrB,CAAC;EACD,KAAK,QAAQ;GAAE,MAAM;GAAc;GAAI;EAAG,CAAC;EAC3C,OAAO;CACT;CAEA,MAAM,eAAiC,IAAI,OAAO;EAChD,KAAK;EACL,MAAM,KAAK,WAAW;EACtB,UAAU,IAAI,IAAI,EAAE;EACpB,KAAK,QAAQ;GAAE,MAAM;GAAe;GAAI;EAAG,CAAC;EAC5C,OAAO;CACT;CAEA,MAAM,gBAAmC,OAAM;EAC7C,KAAK;EACL,UAAU,OAAO,EAAE;EACnB,KAAK,QAAQ;GAAE,MAAM;GAAgB;EAAG,CAAC;CAC3C;CAEA,MAAM,iBAAoC,OAAM;EAC9C,KAAK;EACL,UAAU,OAAO,EAAE;EACnB,KAAK,QAAQ;GAAE,MAAM;GAAiB;EAAG,CAAC;CAC5C;CAEA,OAAO;EAAE;EAAY;EAAa;EAAc;EAAe;CAAQ;AACzE"}