Files
tech-log-frontend/src/adapters/platform/system-clock.ts
T

25 lines
690 B
TypeScript

import type { ClockPort } from "../../application/ports/clock-port.ts";
export const systemClock: ClockPort = Object.freeze({
now: () => Date.now(),
sleep(milliseconds, signal) {
return new Promise((resolve, reject) => {
if (signal?.aborted) {
reject(signal.reason);
return;
}
const timer = setTimeout(() => {
signal?.removeEventListener("abort", onAbort);
resolve();
}, milliseconds);
const onAbort = () => {
clearTimeout(timer);
signal?.removeEventListener("abort", onAbort);
reject(signal?.reason);
};
signal?.addEventListener("abort", onAbort, { once: true });
});
},
});