{"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[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();\n const post = (w: Worker | null, p: WorkerTimerEvent) => w?.postMessage(p);\n const handleMessage = (e: MessageEvent) => {\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"}