@enonic-types/lib-scheduler
Version:
Type definitions for lib-scheduler.
114 lines (113 loc) • 3.86 kB
TypeScript
/**
* Scheduler functions.
*
* @example
* var schedulerLib = require('/lib/xp/scheduler');
*
* @module scheduler
*/
declare global {
interface XpLibraries {
'/lib/xp/scheduler': typeof import('./scheduler');
}
}
import type { UserKey } from '@enonic-types/core';
export type { PrincipalKey, UserKey, GroupKey, RoleKey, ScriptValue } from '@enonic-types/core';
export declare type EditorFn<T> = (value: T) => T;
export interface CreateScheduledJobParams<Config extends Record<string, unknown>> {
name: string;
description?: string;
descriptor: string;
config?: Config;
schedule: OneTimeSchedule | CronSchedule;
user?: UserKey;
enabled: boolean;
}
export interface OneTimeSchedule {
type: 'ONE_TIME';
value: string;
}
export interface CronSchedule {
type: 'CRON';
value: string;
timeZone: string;
}
export interface ScheduledJob<Config extends Record<string, unknown> = Record<string, unknown>> {
name: string;
descriptor: string;
description?: string | null;
enabled: boolean;
config?: Config | null;
user?: UserKey | null;
creator: UserKey;
modifier: UserKey;
createdTime: string;
modifiedTime: string;
lastRun?: string | null;
lastTaskId?: string | null;
schedule: OneTimeSchedule | CronSchedule;
}
/**
* Creates a job to be scheduled.
*
* @example-ref examples/scheduler/create.js
*
* @param {object} params JSON with the parameters.
* @param {string} params.name unique job name.
* @param {string} [params.description] job description.
* @param {string} params.descriptor descriptor of the task to be scheduled.
* @param {object} [params.config] config of the task to be scheduled.
* @param {object} params.schedule task time run config.
* @param {string} params.schedule.value schedule value according to its type.
* @param {string} params.schedule.type schedule type (CRON | ONE_TIME).
* @param {string} params.schedule.timezone time zone of cron scheduling.
* @param {string} [params.user] key of the user that submitted the task.
* @param {boolean} params.enabled job is active or not.
*/
export declare function create<Config extends Record<string, unknown> = Record<string, unknown>>(params: CreateScheduledJobParams<Config>): ScheduledJob<Config>;
export interface ModifyScheduledJobParams<Config extends Record<string, unknown>> {
name: string;
editor: EditorFn<ScheduledJob<Config>>;
}
/**
* Modifies scheduled job.
*
* @example-ref examples/scheduler/modify.js
*
* @param {object} params JSON with the parameters.
* @param {string} params.name unique job name.
* @param {function} params.editor editor callback function, has editable existing job as a param.
*/
export declare function modify<Config extends Record<string, unknown> = Record<string, unknown>>(params: ModifyScheduledJobParams<Config>): ScheduledJob<Config>;
export interface DeleteScheduledJobParams {
name: string;
}
/**
* Removes scheduled job.
*
* @example-ref examples/scheduler/delete.js
*
* @param {object} params JSON with the parameters.
* @param {string} params.name job to be deleted name.
*/
declare function _delete(params: DeleteScheduledJobParams): boolean;
export { _delete as delete, };
export interface GetScheduledJobParams {
name: string;
}
/**
* Fetches scheduled job.
*
* @example-ref examples/scheduler/get.js
*
* @param {object} params JSON with the parameters.
* @param {string} params.name job to be fetched name.
*/
export declare function get<Config extends Record<string, unknown> = Record<string, unknown>>(params: GetScheduledJobParams): ScheduledJob<Config> | null;
/**
* Lists scheduled jobs.
*
* @example-ref examples/scheduler/list.js
*
*/
export declare function list<Config extends Record<string, unknown> = Record<string, unknown>>(): ScheduledJob<Config>[];