@azlib/scheduler 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +108 -0
- package/dist/index.cjs +645 -0
- package/dist/index.d.cts +172 -0
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +172 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +642 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +45 -0
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
//#region src/contracts/scheduler-types.d.ts
|
|
2
|
+
type SchedulerMode = "standalone" | "embedded";
|
|
3
|
+
type ScheduleType = "once" | "cron";
|
|
4
|
+
type SchedulerOverlapPolicy = "skip" | "enqueue" | "coalesce";
|
|
5
|
+
type SchedulerMissedRunPolicy = "run-immediately" | "skip-missed";
|
|
6
|
+
interface SchedulerScheduleConfig {
|
|
7
|
+
scheduleType: ScheduleType;
|
|
8
|
+
expression: string;
|
|
9
|
+
timezone: string;
|
|
10
|
+
overlapPolicy?: SchedulerOverlapPolicy;
|
|
11
|
+
missedRunPolicy?: SchedulerMissedRunPolicy;
|
|
12
|
+
}
|
|
13
|
+
interface SchedulerJobDefinition<TConfig = unknown> {
|
|
14
|
+
name: string;
|
|
15
|
+
handlerKey: string;
|
|
16
|
+
schedule: SchedulerScheduleConfig;
|
|
17
|
+
config: TConfig;
|
|
18
|
+
enabled?: boolean;
|
|
19
|
+
}
|
|
20
|
+
interface SchedulerJobRecord<TConfig = unknown> extends SchedulerJobDefinition<TConfig> {
|
|
21
|
+
jobId: string;
|
|
22
|
+
enabled: boolean;
|
|
23
|
+
createdAt: string;
|
|
24
|
+
updatedAt: string;
|
|
25
|
+
}
|
|
26
|
+
interface SchedulerExecutionRecord {
|
|
27
|
+
executionId: string;
|
|
28
|
+
jobId: string;
|
|
29
|
+
scheduledFor: string;
|
|
30
|
+
triggeredAt: string;
|
|
31
|
+
status: "queued" | "running" | "succeeded" | "failed" | "dead-letter";
|
|
32
|
+
queueTaskId?: string;
|
|
33
|
+
attemptCount: number;
|
|
34
|
+
lastError?: string;
|
|
35
|
+
}
|
|
36
|
+
interface SchedulerJobListItem {
|
|
37
|
+
jobId: string;
|
|
38
|
+
name: string;
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
nextRunAt?: string;
|
|
41
|
+
timezone: string;
|
|
42
|
+
}
|
|
43
|
+
interface SchedulerExecutionQuery {
|
|
44
|
+
jobId?: string;
|
|
45
|
+
status?: SchedulerExecutionRecord["status"];
|
|
46
|
+
from?: string;
|
|
47
|
+
to?: string;
|
|
48
|
+
limit?: number;
|
|
49
|
+
}
|
|
50
|
+
interface SchedulerService {
|
|
51
|
+
registerJob<TConfig>(job: SchedulerJobDefinition<TConfig>): Promise<{
|
|
52
|
+
jobId: string;
|
|
53
|
+
}>;
|
|
54
|
+
updateJob<TConfig>(jobId: string, patch: Partial<SchedulerJobDefinition<TConfig>>): Promise<void>;
|
|
55
|
+
pauseJob(jobId: string): Promise<void>;
|
|
56
|
+
resumeJob(jobId: string): Promise<void>;
|
|
57
|
+
deleteJob(jobId: string): Promise<void>;
|
|
58
|
+
listJobs(): Promise<SchedulerJobListItem[]>;
|
|
59
|
+
listExecutions(query?: SchedulerExecutionQuery): Promise<SchedulerExecutionRecord[]>;
|
|
60
|
+
retryFailedExecution(executionId: string): Promise<void>;
|
|
61
|
+
start(): Promise<void>;
|
|
62
|
+
stop(): Promise<void>;
|
|
63
|
+
}
|
|
64
|
+
interface SchedulerServiceOptions {
|
|
65
|
+
mode: SchedulerMode;
|
|
66
|
+
queueName?: string;
|
|
67
|
+
queueService?: import("@azlib/queue").QueueService;
|
|
68
|
+
cache?: import("@azlib/cache").Cache<string>;
|
|
69
|
+
logger?: {
|
|
70
|
+
debug(message: string, meta?: Record<string, unknown>): void;
|
|
71
|
+
info(message: string, meta?: Record<string, unknown>): void;
|
|
72
|
+
warn(message: string, meta?: Record<string, unknown>): void;
|
|
73
|
+
error(message: string, meta?: Record<string, unknown>): void;
|
|
74
|
+
};
|
|
75
|
+
tickIntervalMs?: number;
|
|
76
|
+
maxDueJobsPerTick?: number;
|
|
77
|
+
}
|
|
78
|
+
interface SchedulerHandlerRegistry {
|
|
79
|
+
register<TConfig>(handlerKey: string, handler: (input: TConfig) => Promise<void>): void;
|
|
80
|
+
resolve(handlerKey: string): ((input: unknown) => Promise<void>) | null;
|
|
81
|
+
has(handlerKey: string): boolean;
|
|
82
|
+
}
|
|
83
|
+
//#endregion
|
|
84
|
+
//#region src/contracts/scheduler-host.d.ts
|
|
85
|
+
interface SchedulerHostAdapter {
|
|
86
|
+
onStart(listener: () => Promise<void> | void): void;
|
|
87
|
+
onStop(listener: () => Promise<void> | void): void;
|
|
88
|
+
}
|
|
89
|
+
//#endregion
|
|
90
|
+
//#region src/core/scheduler-host-binding.d.ts
|
|
91
|
+
declare function bindSchedulerToHost(scheduler: SchedulerService, host: SchedulerHostAdapter): void;
|
|
92
|
+
//#endregion
|
|
93
|
+
//#region src/core/cron-expression-builder.d.ts
|
|
94
|
+
declare const CronWeekday: {
|
|
95
|
+
readonly Sunday: 0;
|
|
96
|
+
readonly Monday: 1;
|
|
97
|
+
readonly Tuesday: 2;
|
|
98
|
+
readonly Wednesday: 3;
|
|
99
|
+
readonly Thursday: 4;
|
|
100
|
+
readonly Friday: 5;
|
|
101
|
+
readonly Saturday: 6;
|
|
102
|
+
};
|
|
103
|
+
type CronWeekdayValue = (typeof CronWeekday)[keyof typeof CronWeekday];
|
|
104
|
+
declare class CronExpressionBuilder {
|
|
105
|
+
private minute;
|
|
106
|
+
private hour;
|
|
107
|
+
private dayOfMonth;
|
|
108
|
+
private month;
|
|
109
|
+
private dayOfWeek;
|
|
110
|
+
everyMinute(): this;
|
|
111
|
+
everyNMinutes(interval: number): this;
|
|
112
|
+
atMinute(minute: number): this;
|
|
113
|
+
atMinutes(minutes: number[]): this;
|
|
114
|
+
everyHour(): this;
|
|
115
|
+
everyNHours(interval: number): this;
|
|
116
|
+
atHour(hour: number): this;
|
|
117
|
+
atHours(hours: number[]): this;
|
|
118
|
+
onDayOfMonth(day: number): this;
|
|
119
|
+
onDaysOfMonth(days: number[]): this;
|
|
120
|
+
everyNDaysOfMonth(interval: number): this;
|
|
121
|
+
everyMonth(): this;
|
|
122
|
+
onMonth(month: number): this;
|
|
123
|
+
onMonths(months: number[]): this;
|
|
124
|
+
everyNMonths(interval: number): this;
|
|
125
|
+
onWeekday(weekday: CronWeekdayValue): this;
|
|
126
|
+
onWeekdays(weekdays: CronWeekdayValue[]): this;
|
|
127
|
+
everyNWeekdays(interval: number): this;
|
|
128
|
+
weekdays(): this;
|
|
129
|
+
weekends(): this;
|
|
130
|
+
dailyAt(hour: number, minute?: number): this;
|
|
131
|
+
weeklyOn(weekday: CronWeekdayValue, hour?: number, minute?: number): this;
|
|
132
|
+
monthlyOn(dayOfMonth: number, hour?: number, minute?: number): this;
|
|
133
|
+
build(): string;
|
|
134
|
+
toString(): string;
|
|
135
|
+
}
|
|
136
|
+
declare function createCronExpression(): CronExpressionBuilder;
|
|
137
|
+
//#endregion
|
|
138
|
+
//#region src/dashboard/queue-queries.d.ts
|
|
139
|
+
interface SchedulerDashboardHealth {
|
|
140
|
+
totalJobs: number;
|
|
141
|
+
enabledJobs: number;
|
|
142
|
+
pausedJobs: number;
|
|
143
|
+
failedExecutions: number;
|
|
144
|
+
}
|
|
145
|
+
declare function querySchedulerHealth(scheduler: SchedulerService): Promise<SchedulerDashboardHealth>;
|
|
146
|
+
declare function querySchedulerItems(scheduler: SchedulerService): Promise<{
|
|
147
|
+
executions: SchedulerExecutionRecord[];
|
|
148
|
+
jobId: string;
|
|
149
|
+
name: string;
|
|
150
|
+
enabled: boolean;
|
|
151
|
+
nextRunAt?: string;
|
|
152
|
+
timezone: string;
|
|
153
|
+
}[]>;
|
|
154
|
+
//#endregion
|
|
155
|
+
//#region src/dashboard/queue-dashboard-service.d.ts
|
|
156
|
+
interface SchedulerDashboardService {
|
|
157
|
+
getHealth(): ReturnType<typeof querySchedulerHealth>;
|
|
158
|
+
listItems(): ReturnType<typeof querySchedulerItems>;
|
|
159
|
+
pauseJob(jobId: string): Promise<void>;
|
|
160
|
+
resumeJob(jobId: string): Promise<void>;
|
|
161
|
+
retryExecution(executionId: string): Promise<void>;
|
|
162
|
+
}
|
|
163
|
+
declare function createSchedulerDashboardService(scheduler: SchedulerService): SchedulerDashboardService;
|
|
164
|
+
//#endregion
|
|
165
|
+
//#region index.d.ts
|
|
166
|
+
declare function createSchedulerService(options: SchedulerServiceOptions): {
|
|
167
|
+
service: SchedulerService;
|
|
168
|
+
handlers: SchedulerHandlerRegistry;
|
|
169
|
+
};
|
|
170
|
+
//#endregion
|
|
171
|
+
export { CronWeekday, type CronWeekdayValue, type SchedulerHandlerRegistry, type SchedulerHostAdapter, type SchedulerJobDefinition, type SchedulerJobRecord, type SchedulerMissedRunPolicy, type SchedulerMode, type SchedulerOverlapPolicy, type SchedulerScheduleConfig, type SchedulerService, type SchedulerServiceOptions, bindSchedulerToHost, createCronExpression, createSchedulerDashboardService, createSchedulerService };
|
|
172
|
+
//# sourceMappingURL=index.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/contracts/scheduler-types.ts","../src/contracts/scheduler-host.ts","../src/core/scheduler-host-binding.ts","../src/core/cron-expression-builder.ts","../src/dashboard/queue-queries.ts","../src/dashboard/queue-dashboard-service.ts","../index.ts"],"mappings":"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"}
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
//#region src/contracts/scheduler-types.d.ts
|
|
2
|
+
type SchedulerMode = "standalone" | "embedded";
|
|
3
|
+
type ScheduleType = "once" | "cron";
|
|
4
|
+
type SchedulerOverlapPolicy = "skip" | "enqueue" | "coalesce";
|
|
5
|
+
type SchedulerMissedRunPolicy = "run-immediately" | "skip-missed";
|
|
6
|
+
interface SchedulerScheduleConfig {
|
|
7
|
+
scheduleType: ScheduleType;
|
|
8
|
+
expression: string;
|
|
9
|
+
timezone: string;
|
|
10
|
+
overlapPolicy?: SchedulerOverlapPolicy;
|
|
11
|
+
missedRunPolicy?: SchedulerMissedRunPolicy;
|
|
12
|
+
}
|
|
13
|
+
interface SchedulerJobDefinition<TConfig = unknown> {
|
|
14
|
+
name: string;
|
|
15
|
+
handlerKey: string;
|
|
16
|
+
schedule: SchedulerScheduleConfig;
|
|
17
|
+
config: TConfig;
|
|
18
|
+
enabled?: boolean;
|
|
19
|
+
}
|
|
20
|
+
interface SchedulerJobRecord<TConfig = unknown> extends SchedulerJobDefinition<TConfig> {
|
|
21
|
+
jobId: string;
|
|
22
|
+
enabled: boolean;
|
|
23
|
+
createdAt: string;
|
|
24
|
+
updatedAt: string;
|
|
25
|
+
}
|
|
26
|
+
interface SchedulerExecutionRecord {
|
|
27
|
+
executionId: string;
|
|
28
|
+
jobId: string;
|
|
29
|
+
scheduledFor: string;
|
|
30
|
+
triggeredAt: string;
|
|
31
|
+
status: "queued" | "running" | "succeeded" | "failed" | "dead-letter";
|
|
32
|
+
queueTaskId?: string;
|
|
33
|
+
attemptCount: number;
|
|
34
|
+
lastError?: string;
|
|
35
|
+
}
|
|
36
|
+
interface SchedulerJobListItem {
|
|
37
|
+
jobId: string;
|
|
38
|
+
name: string;
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
nextRunAt?: string;
|
|
41
|
+
timezone: string;
|
|
42
|
+
}
|
|
43
|
+
interface SchedulerExecutionQuery {
|
|
44
|
+
jobId?: string;
|
|
45
|
+
status?: SchedulerExecutionRecord["status"];
|
|
46
|
+
from?: string;
|
|
47
|
+
to?: string;
|
|
48
|
+
limit?: number;
|
|
49
|
+
}
|
|
50
|
+
interface SchedulerService {
|
|
51
|
+
registerJob<TConfig>(job: SchedulerJobDefinition<TConfig>): Promise<{
|
|
52
|
+
jobId: string;
|
|
53
|
+
}>;
|
|
54
|
+
updateJob<TConfig>(jobId: string, patch: Partial<SchedulerJobDefinition<TConfig>>): Promise<void>;
|
|
55
|
+
pauseJob(jobId: string): Promise<void>;
|
|
56
|
+
resumeJob(jobId: string): Promise<void>;
|
|
57
|
+
deleteJob(jobId: string): Promise<void>;
|
|
58
|
+
listJobs(): Promise<SchedulerJobListItem[]>;
|
|
59
|
+
listExecutions(query?: SchedulerExecutionQuery): Promise<SchedulerExecutionRecord[]>;
|
|
60
|
+
retryFailedExecution(executionId: string): Promise<void>;
|
|
61
|
+
start(): Promise<void>;
|
|
62
|
+
stop(): Promise<void>;
|
|
63
|
+
}
|
|
64
|
+
interface SchedulerServiceOptions {
|
|
65
|
+
mode: SchedulerMode;
|
|
66
|
+
queueName?: string;
|
|
67
|
+
queueService?: import("@azlib/queue").QueueService;
|
|
68
|
+
cache?: import("@azlib/cache").Cache<string>;
|
|
69
|
+
logger?: {
|
|
70
|
+
debug(message: string, meta?: Record<string, unknown>): void;
|
|
71
|
+
info(message: string, meta?: Record<string, unknown>): void;
|
|
72
|
+
warn(message: string, meta?: Record<string, unknown>): void;
|
|
73
|
+
error(message: string, meta?: Record<string, unknown>): void;
|
|
74
|
+
};
|
|
75
|
+
tickIntervalMs?: number;
|
|
76
|
+
maxDueJobsPerTick?: number;
|
|
77
|
+
}
|
|
78
|
+
interface SchedulerHandlerRegistry {
|
|
79
|
+
register<TConfig>(handlerKey: string, handler: (input: TConfig) => Promise<void>): void;
|
|
80
|
+
resolve(handlerKey: string): ((input: unknown) => Promise<void>) | null;
|
|
81
|
+
has(handlerKey: string): boolean;
|
|
82
|
+
}
|
|
83
|
+
//#endregion
|
|
84
|
+
//#region src/contracts/scheduler-host.d.ts
|
|
85
|
+
interface SchedulerHostAdapter {
|
|
86
|
+
onStart(listener: () => Promise<void> | void): void;
|
|
87
|
+
onStop(listener: () => Promise<void> | void): void;
|
|
88
|
+
}
|
|
89
|
+
//#endregion
|
|
90
|
+
//#region src/core/scheduler-host-binding.d.ts
|
|
91
|
+
declare function bindSchedulerToHost(scheduler: SchedulerService, host: SchedulerHostAdapter): void;
|
|
92
|
+
//#endregion
|
|
93
|
+
//#region src/core/cron-expression-builder.d.ts
|
|
94
|
+
declare const CronWeekday: {
|
|
95
|
+
readonly Sunday: 0;
|
|
96
|
+
readonly Monday: 1;
|
|
97
|
+
readonly Tuesday: 2;
|
|
98
|
+
readonly Wednesday: 3;
|
|
99
|
+
readonly Thursday: 4;
|
|
100
|
+
readonly Friday: 5;
|
|
101
|
+
readonly Saturday: 6;
|
|
102
|
+
};
|
|
103
|
+
type CronWeekdayValue = (typeof CronWeekday)[keyof typeof CronWeekday];
|
|
104
|
+
declare class CronExpressionBuilder {
|
|
105
|
+
private minute;
|
|
106
|
+
private hour;
|
|
107
|
+
private dayOfMonth;
|
|
108
|
+
private month;
|
|
109
|
+
private dayOfWeek;
|
|
110
|
+
everyMinute(): this;
|
|
111
|
+
everyNMinutes(interval: number): this;
|
|
112
|
+
atMinute(minute: number): this;
|
|
113
|
+
atMinutes(minutes: number[]): this;
|
|
114
|
+
everyHour(): this;
|
|
115
|
+
everyNHours(interval: number): this;
|
|
116
|
+
atHour(hour: number): this;
|
|
117
|
+
atHours(hours: number[]): this;
|
|
118
|
+
onDayOfMonth(day: number): this;
|
|
119
|
+
onDaysOfMonth(days: number[]): this;
|
|
120
|
+
everyNDaysOfMonth(interval: number): this;
|
|
121
|
+
everyMonth(): this;
|
|
122
|
+
onMonth(month: number): this;
|
|
123
|
+
onMonths(months: number[]): this;
|
|
124
|
+
everyNMonths(interval: number): this;
|
|
125
|
+
onWeekday(weekday: CronWeekdayValue): this;
|
|
126
|
+
onWeekdays(weekdays: CronWeekdayValue[]): this;
|
|
127
|
+
everyNWeekdays(interval: number): this;
|
|
128
|
+
weekdays(): this;
|
|
129
|
+
weekends(): this;
|
|
130
|
+
dailyAt(hour: number, minute?: number): this;
|
|
131
|
+
weeklyOn(weekday: CronWeekdayValue, hour?: number, minute?: number): this;
|
|
132
|
+
monthlyOn(dayOfMonth: number, hour?: number, minute?: number): this;
|
|
133
|
+
build(): string;
|
|
134
|
+
toString(): string;
|
|
135
|
+
}
|
|
136
|
+
declare function createCronExpression(): CronExpressionBuilder;
|
|
137
|
+
//#endregion
|
|
138
|
+
//#region src/dashboard/queue-queries.d.ts
|
|
139
|
+
interface SchedulerDashboardHealth {
|
|
140
|
+
totalJobs: number;
|
|
141
|
+
enabledJobs: number;
|
|
142
|
+
pausedJobs: number;
|
|
143
|
+
failedExecutions: number;
|
|
144
|
+
}
|
|
145
|
+
declare function querySchedulerHealth(scheduler: SchedulerService): Promise<SchedulerDashboardHealth>;
|
|
146
|
+
declare function querySchedulerItems(scheduler: SchedulerService): Promise<{
|
|
147
|
+
executions: SchedulerExecutionRecord[];
|
|
148
|
+
jobId: string;
|
|
149
|
+
name: string;
|
|
150
|
+
enabled: boolean;
|
|
151
|
+
nextRunAt?: string;
|
|
152
|
+
timezone: string;
|
|
153
|
+
}[]>;
|
|
154
|
+
//#endregion
|
|
155
|
+
//#region src/dashboard/queue-dashboard-service.d.ts
|
|
156
|
+
interface SchedulerDashboardService {
|
|
157
|
+
getHealth(): ReturnType<typeof querySchedulerHealth>;
|
|
158
|
+
listItems(): ReturnType<typeof querySchedulerItems>;
|
|
159
|
+
pauseJob(jobId: string): Promise<void>;
|
|
160
|
+
resumeJob(jobId: string): Promise<void>;
|
|
161
|
+
retryExecution(executionId: string): Promise<void>;
|
|
162
|
+
}
|
|
163
|
+
declare function createSchedulerDashboardService(scheduler: SchedulerService): SchedulerDashboardService;
|
|
164
|
+
//#endregion
|
|
165
|
+
//#region index.d.ts
|
|
166
|
+
declare function createSchedulerService(options: SchedulerServiceOptions): {
|
|
167
|
+
service: SchedulerService;
|
|
168
|
+
handlers: SchedulerHandlerRegistry;
|
|
169
|
+
};
|
|
170
|
+
//#endregion
|
|
171
|
+
export { CronWeekday, type CronWeekdayValue, type SchedulerHandlerRegistry, type SchedulerHostAdapter, type SchedulerJobDefinition, type SchedulerJobRecord, type SchedulerMissedRunPolicy, type SchedulerMode, type SchedulerOverlapPolicy, type SchedulerScheduleConfig, type SchedulerService, type SchedulerServiceOptions, bindSchedulerToHost, createCronExpression, createSchedulerDashboardService, createSchedulerService };
|
|
172
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/contracts/scheduler-types.ts","../src/contracts/scheduler-host.ts","../src/core/scheduler-host-binding.ts","../src/core/cron-expression-builder.ts","../src/dashboard/queue-queries.ts","../src/dashboard/queue-dashboard-service.ts","../index.ts"],"mappings":"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"}
|