콘텐츠로 이동

JobClock — @gj-kit/nest-operations-jobs

@gj-kit/nest-operations-jobs/core에서 공개하는 interface입니다. package version 0.1.1의 release declaration을 그대로 표시합니다.

import { JobClock } from '@gj-kit/nest-operations-jobs/core';
/**
* Injected time source. Every runner decision that depends on time — the
* deadline, the heartbeat cadence, how long a failing heartbeat is tolerated,
* and `durationMs` — reads this and nothing else. `now()` is epoch milliseconds
* because that is what the store port carries, so no date object is ever
* constructed outside this module. Staleness is not on this list: the cutoff
* belongs to the store's clock, not the runner's (obligation S6).
*
* This is the only module in the package allowed to touch ambient time or timers.
*/
interface JobClock {
/** Epoch milliseconds. */
now(): number;
/** Fires once after `delayMs`. */
after(delayMs: number, handler: () => void): JobTimerCancel;
/** Fires repeatedly every `intervalMs`. */
every(intervalMs: number, handler: () => void): JobTimerCancel;
}

이 선언은 매개변수, optionality, 제네릭, 반환값, 공개 union/type 계약의 정본입니다. 호출 전 필요한 환경·권한·오류 경계는 패키지 Golden path와 이 subpath의 import 조건을 함께 확인하세요.

  • 패키지: @gj-kit/nest-operations-jobs
  • 버전: 0.1.1
  • 공개 entry: ./core
  • 소스: GitHub

Injected time source. Every runner decision that depends on time — the deadline, the heartbeat cadence, how long a failing heartbeat is tolerated, and durationMs — reads this and nothing else. now() is epoch milliseconds because that is what the store port carries, so no date object is ever constructed outside this module. Staleness is not on this list: the cutoff belongs to the store’s clock, not the runner’s (obligation S6).

This is the only module in the package allowed to touch ambient time or timers.