26 lines
628 B
TypeScript
26 lines
628 B
TypeScript
export type ReleaseClockSource = 'system';
|
|
|
|
export type ReleaseClock = {
|
|
source: ReleaseClockSource;
|
|
now: () => number;
|
|
};
|
|
|
|
type ReleaseClockOptions = {
|
|
wallNow?: () => number;
|
|
};
|
|
|
|
function systemClock(wallNow: () => number): ReleaseClock {
|
|
return { source: 'system', now: wallNow };
|
|
}
|
|
|
|
export function createInitialReleaseClock(
|
|
_serverNow: unknown,
|
|
options: ReleaseClockOptions = {}
|
|
): ReleaseClock {
|
|
return systemClock(options.wallNow ?? Date.now);
|
|
}
|
|
|
|
export async function synchronizeReleaseClock(options: ReleaseClockOptions = {}): Promise<ReleaseClock> {
|
|
return systemClock(options.wallNow ?? Date.now);
|
|
}
|