feat: define clean architecture layers and ports

This commit is contained in:
donghyeon-ka
2026-07-25 20:39:59 +09:00
parent 24d7072d66
commit 49b20bd557
11 changed files with 227 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
/**
* @typedef {{
* now(): number,
* sleep(milliseconds: number, signal?: AbortSignal): Promise<void>
* }} ClockPort
*/
export const systemClock = Object.freeze({
now: () => Date.now(),
sleep(milliseconds, signal) {
return new Promise((resolve, reject) => {
if (signal?.aborted) {
reject(signal.reason);
return;
}
const timer = setTimeout(resolve, milliseconds);
signal?.addEventListener(
"abort",
() => {
clearTimeout(timer);
reject(signal.reason);
},
{ once: true },
);
});
},
});