@k8ts/instruments
Version:
A collection of utilities and core components for k8ts.
57 lines • 3.37 kB
TypeScript
export type _SetObjectKey<Obj extends object, K extends keyof Obj, V> = {
[P in keyof Obj]: P extends K ? V : Obj[P];
};
declare const CRON_STRING: unique symbol;
export declare class CronStanza<R extends Cron.Record> {
private readonly record;
constructor(record: R);
get tuple(): Cron.ToTuple<R>;
get string(): Cron.String;
minute<Minute extends Cron.Element>(minute: Minute): CronStanza<_SetObjectKey<R, "minute", Minute>>;
hour<Hour extends Cron.Element>(hour: Hour): CronStanza<_SetObjectKey<R, "hour", Hour>>;
dayOfMonth<DayOfMonth extends Cron.Element>(dayOfMonth: DayOfMonth): CronStanza<_SetObjectKey<R, "dayOfMonth", DayOfMonth>>;
month<Month extends Cron.Element>(month: Month): CronStanza<_SetObjectKey<R, "month", Month>>;
dayOfWeek<DayOfWeek extends Cron.Element>(dayOfWeek: DayOfWeek): CronStanza<_SetObjectKey<R, "dayOfWeek", DayOfWeek>>;
}
export declare namespace Cron {
export type String = string & {
[CRON_STRING]: true;
};
export type _CronDivisor = number;
export type _CronBaseElement = `${number}` | `*`;
export type _CronStep = `${_CronBaseElement}/${number}`;
type _RangeElement = _CronBaseElement | _CronStep;
export type _CronRange = `${_RangeElement}-${string}` & `${string}-${_RangeElement}`;
type _ListElement = _CronBaseElement | _CronStep | _CronRange;
export type List<Es extends _ListElement[] = _ListElement[]> = Es extends [] ? "" : Es extends [infer E extends _ListElement, ...infer Rest extends _ListElement[]] ? `${E},${List<Rest>}` : never;
export type Element = _CronBaseElement | _CronStep | _CronRange | List | true | number | false;
export type Tuple<Minute extends Element = Element, Hour extends Element = Element, DayOfMonth extends Element = Element, Month extends Element = Element, DayOfWeek extends Element = Element> = [minute: Minute, hour: Hour, dayOfMonth: DayOfMonth, month: Month, dayOfWeek: DayOfWeek];
export type Record<Minute extends Element = Element, Hour extends Element = Element, DayOfMonth extends Element = Element, Month extends Element = Element, DayOfWeek extends Element = Element> = {
minute: Minute;
hour: Hour;
dayOfMonth: DayOfMonth;
month: Month;
dayOfWeek: DayOfWeek;
};
export type ToTuple<T extends Record> = Tuple<T["minute"], T["hour"], T["dayOfMonth"], T["month"], T["dayOfWeek"]>;
export type FromTuple<T extends Tuple> = {
minute: T[0];
hour: T[1];
dayOfMonth: T[2];
month: T[3];
dayOfWeek: T[4];
};
export function of<Tpl extends Tuple>(...items: Tpl): CronStanza<FromTuple<Tpl>>;
export function from<R extends Record>(record: R): CronStanza<R>;
export const minutely: CronStanza<FromTuple<[true, true, true, true, true]>>;
export const hourly: CronStanza<FromTuple<[0, true, true, true, true]>>;
export const daily: CronStanza<FromTuple<[0, 0, true, true, true]>>;
export const weekly: CronStanza<FromTuple<[0, 0, true, true, 0]>>;
export const monthly: CronStanza<FromTuple<[0, 0, 1, true, true]>>;
export const yearly: CronStanza<FromTuple<[0, 0, 1, 1, true]>>;
export function parse(cron: string): CronStanza<Record>;
export function record<R extends Record>(record: R): CronStanza<R>;
export {};
}
export {};
//# sourceMappingURL=index.d.ts.map