{"version":3,"names":["SystemClock","now","globalThis","performance","Error","setTimeout","fn","delayMs","clearTimeout","handle","setInterval","clearInterval"],"sources":["clock.ts"],"sourcesContent":["export type TimerHandle = ReturnType<typeof globalThis.setTimeout> | number;\n\nexport interface Clock {\n\tclearInterval(handle: TimerHandle): void;\n\tclearTimeout(handle: TimerHandle): void;\n\tnow(): number;\n\tsetInterval(fn: () => void, delayMs: number): TimerHandle;\n\tsetTimeout(fn: () => void, delayMs: number): TimerHandle;\n}\n\nexport class SystemClock implements Clock {\n\tpublic now(): number {\n\t\tif (\n\t\t\t!globalThis.performance ||\n\t\t\ttypeof globalThis.performance.now !== \"function\"\n\t\t) {\n\t\t\tthrow new Error(\"SystemClock requires globalThis.performance.now()\");\n\t\t}\n\n\t\treturn globalThis.performance.now();\n\t}\n\n\tpublic setTimeout(fn: () => void, delayMs: number): TimerHandle {\n\t\treturn globalThis.setTimeout(fn, delayMs);\n\t}\n\n\tpublic clearTimeout(handle: TimerHandle): void {\n\t\tglobalThis.clearTimeout(handle as ReturnType<typeof globalThis.setTimeout>);\n\t}\n\n\tpublic setInterval(fn: () => void, delayMs: number): TimerHandle {\n\t\treturn globalThis.setInterval(fn, delayMs);\n\t}\n\n\tpublic clearInterval(handle: TimerHandle): void {\n\t\tglobalThis.clearInterval(\n\t\t\thandle as ReturnType<typeof globalThis.setTimeout>,\n\t\t);\n\t}\n}\n"],"mappings":"AAUA,OAAO,MAAMA,WAAW,CAAkB;EAClCC,GAAGA,CAAA,EAAW;IACpB,IACC,CAACC,UAAU,CAACC,WAAW,IACvB,OAAOD,UAAU,CAACC,WAAW,CAACF,GAAG,KAAK,UAAU,EAC/C;MACD,MAAM,IAAIG,KAAK,CAAC,mDAAmD,CAAC;IACrE;IAEA,OAAOF,UAAU,CAACC,WAAW,CAACF,GAAG,CAAC,CAAC;EACpC;EAEOI,UAAUA,CAACC,EAAc,EAAEC,OAAe,EAAe;IAC/D,OAAOL,UAAU,CAACG,UAAU,CAACC,EAAE,EAAEC,OAAO,CAAC;EAC1C;EAEOC,YAAYA,CAACC,MAAmB,EAAQ;IAC9CP,UAAU,CAACM,YAAY,CAACC,MAAkD,CAAC;EAC5E;EAEOC,WAAWA,CAACJ,EAAc,EAAEC,OAAe,EAAe;IAChE,OAAOL,UAAU,CAACQ,WAAW,CAACJ,EAAE,EAAEC,OAAO,CAAC;EAC3C;EAEOI,aAAaA,CAACF,MAAmB,EAAQ;IAC/CP,UAAU,CAACS,aAAa,CACvBF,MACD,CAAC;EACF;AACD","ignoreList":[]}