feat: initial commit at project root

This commit is contained in:
Hamza-Ayed
2026-05-28 15:10:16 +03:00
commit 5a57b03efd
22 changed files with 1709 additions and 0 deletions

32
internal/timer/timer.js Normal file
View File

@@ -0,0 +1,32 @@
/**
* CallTimer wraps Node's setTimeout/clearTimeout to allow session cancellations.
*/
export class CallTimer {
/**
* @param {number} durationMs
* @param {function} onExpiry
*/
constructor(durationMs, onExpiry) {
this.timer = setTimeout(onExpiry, durationMs);
}
/**
* Cancels the active timer.
*/
stop() {
if (this.timer) {
clearTimeout(this.timer);
this.timer = null;
}
}
}
/**
* Starts a session timeout timer.
* @param {number} durationMs
* @param {function} onExpiry
* @returns {CallTimer}
*/
export function startTimer(durationMs, onExpiry) {
return new CallTimer(durationMs, onExpiry);
}