{"version":3,"file":"workerTimers-CDy8bBJS.mjs","names":["pollerWorkerSource","setTimeout: WorkerSetTimeout","id","setInterval: WorkerSetTimeout","clearTimeout: WorkerClearTimeout","clearInterval: WorkerClearTimeout"],"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,EAAE,KAAoB;AAC7G,KAAI,OAAO,WAAW,YACpB,QAAO;AAGT,KAAI;EACF,MAAM,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,yCAAyC,CAAC;EAClF,MAAM,eAAe,WAAW,IAAI,gBAAgB,KAAK;AACzD,SAAO,IAAI,OAAO,cAAc,KAAK;SAC/B;AACN,UAAQ,KAAK,uFAAuF;AACpG,SAAO;;;AAIX,MAAM,uBAAuB;AAK3B,QAAO;EAAE,YAJU,WAAW,WAAW,KAAK,WAAW;EAIpC,aAHD,WAAW,YAAY,KAAK,WAAW;EAGzB,cAFb,WAAW,aAAa,KAAK,WAAW;EAEb,eAD1B,WAAW,cAAc,KAAK,WAAW;EACA,SAAS;EAAM;;AAGhF,MAAa,2BAA2B;CACtC,IAAI,KAAK;CACT,MAAM,mBAAmB;CACzB,MAAM,4BAAY,IAAI,KAA2C;CACjE,MAAM,QAAQ,GAAkB,MAAwB,GAAG,YAAY,EAAE;CACzE,MAAM,iBAAiB,MAA8C;AACnE,YAAU,IAAI,EAAE,KAAK,GAAG,IAAI;;CAG9B,IAAI,SAAS,gBAAgBA,4BAAoB,EAAE,MAAM,gBAAgB,CAAC;AAC1E,SAAQ,iBAAiB,WAAW,cAAc;AAElD,KAAI,CAAC,OACH,QAAO,gBAAgB;CAGzB,MAAM,aAAa;AACjB,MAAI,CAAC,QAAQ;AACX,YAAS,gBAAgBA,4BAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtE,WAAQ,iBAAiB,WAAW,cAAc;;;CAItD,MAAM,gBAAgB;AACpB,MAAI,QAAQ;AACV,UAAO,WAAW;AAClB,YAAS;AACT,aAAU,OAAO;;;CAIrB,MAAMC,cAAgC,IAAI,OAAO;AAC/C,QAAM;EACN,MAAMC,OAAK,YAAY;AACvB,YAAU,IAAIA,YAAU;AACtB,OAAI;AACJ,aAAU,OAAOA,KAAG;IACpB;AACF,OAAK,QAAQ;GAAE,MAAM;GAAc;GAAI;GAAI,CAAC;AAC5C,SAAOA;;CAGT,MAAMC,eAAiC,IAAI,OAAO;AAChD,QAAM;EACN,MAAMD,OAAK,YAAY;AACvB,YAAU,IAAIA,MAAI,GAAG;AACrB,OAAK,QAAQ;GAAE,MAAM;GAAe;GAAI;GAAI,CAAC;AAC7C,SAAOA;;CAGT,MAAME,gBAAmC,SAAM;AAC7C,QAAM;AACN,YAAU,OAAOF,KAAG;AACpB,OAAK,QAAQ;GAAE,MAAM;GAAgB;GAAI,CAAC;;CAG5C,MAAMG,iBAAoC,SAAM;AAC9C,QAAM;AACN,YAAU,OAAOH,KAAG;AACpB,OAAK,QAAQ;GAAE,MAAM;GAAiB;GAAI,CAAC;;AAG7C,QAAO;EAAE;EAAY;EAAa;EAAc;EAAe;EAAS"}