UNPKG

@k8ts/instruments

Version:

A collection of utilities and core components for k8ts.

57 lines 3.37 kB
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