@warlock.js/scheduler 4.0.48 → 4.0.57

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.
@@ -0,0 +1,98 @@
1
+ import { type Dayjs } from "dayjs";
2
+ /**
3
+ * Parsed cron expression fields
4
+ */
5
+ export type CronFields = {
6
+ /** Minutes (0-59) */
7
+ minutes: number[];
8
+ /** Hours (0-23) */
9
+ hours: number[];
10
+ /** Days of month (1-31) */
11
+ daysOfMonth: number[];
12
+ /** Months (1-12) */
13
+ months: number[];
14
+ /** Days of week (0-6, Sunday = 0) */
15
+ daysOfWeek: number[];
16
+ };
17
+ /**
18
+ * Cron expression parser
19
+ *
20
+ * Supports standard 5-field cron expressions:
21
+ * ```
22
+ * ┌───────────── minute (0-59)
23
+ * │ ┌───────────── hour (0-23)
24
+ * │ │ ┌───────────── day of month (1-31)
25
+ * │ │ │ ┌───────────── month (1-12)
26
+ * │ │ │ │ ┌───────────── day of week (0-6, Sunday = 0)
27
+ * │ │ │ │ │
28
+ * * * * * *
29
+ * ```
30
+ *
31
+ * Supports:
32
+ * - `*` - any value
33
+ * - `5` - specific value
34
+ * - `1,3,5` - list of values
35
+ * - `1-5` - range of values
36
+ * - `* /5` - step values (every 5)
37
+ * - `1-10/2` - range with step
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * const parser = new CronParser("0 9 * * 1-5"); // 9 AM weekdays
42
+ * const nextRun = parser.nextRun();
43
+ * ```
44
+ */
45
+ export declare class CronParser {
46
+ private readonly _expression;
47
+ private readonly _fields;
48
+ /**
49
+ * Creates a new CronParser instance
50
+ *
51
+ * @param expression - Standard 5-field cron expression
52
+ * @throws Error if expression is invalid
53
+ */
54
+ constructor(_expression: string);
55
+ /**
56
+ * Get the parsed cron fields
57
+ */
58
+ get fields(): Readonly<CronFields>;
59
+ /**
60
+ * Get the original expression
61
+ */
62
+ get expression(): string;
63
+ /**
64
+ * Calculate the next run time from a given date
65
+ *
66
+ * @param from - Starting date (defaults to now)
67
+ * @returns Next run time as Dayjs
68
+ */
69
+ nextRun(from?: Dayjs): Dayjs;
70
+ /**
71
+ * Check if a given date matches the cron expression
72
+ *
73
+ * @param date - Date to check
74
+ * @returns true if the date matches
75
+ */
76
+ matches(date: Dayjs): boolean;
77
+ /**
78
+ * Parse a cron expression into fields
79
+ */
80
+ private _parse;
81
+ /**
82
+ * Parse a single cron field
83
+ *
84
+ * @param field - Field value (e.g., "*", "5", "1-5", "* /2", "1,3,5")
85
+ * @param min - Minimum allowed value
86
+ * @param max - Maximum allowed value
87
+ * @returns Array of matching values
88
+ */
89
+ private _parseField;
90
+ }
91
+ /**
92
+ * Parse a cron expression string
93
+ *
94
+ * @param expression - Cron expression (5 fields)
95
+ * @returns CronParser instance
96
+ */
97
+ export declare function parseCron(expression: string): CronParser;
98
+ //# sourceMappingURL=cron-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-parser.d.ts","sourceRoot":"","sources":["../src/cron-parser.ts"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,KAAK,EAAE,MAAM,OAAO,CAAC;AAE1C;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,qBAAqB;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,mBAAmB;IACnB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,2BAA2B;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,oBAAoB;IACpB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,qCAAqC;IACrC,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,UAAU;IASF,OAAO,CAAC,QAAQ,CAAC,WAAW;IAR/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAa;IAErC;;;;;OAKG;gBACiC,WAAW,EAAE,MAAM;IAIvD;;OAEG;IACH,IAAW,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC,CAExC;IAED;;OAEG;IACH,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED;;;;;OAKG;IACI,OAAO,CAAC,IAAI,GAAE,KAAe,GAAG,KAAK;IA+C5C;;;;;OAKG;IACI,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,OAAO;IAUpC;;OAEG;IACH,OAAO,CAAC,MAAM;IAoBd;;;;;;;OAOG;IACH,OAAO,CAAC,WAAW;CA2DpB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,UAAU,EAAE,MAAM,GAAG,UAAU,CAExD"}
@@ -0,0 +1,193 @@
1
+ 'use strict';var dayjs=require('dayjs');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var dayjs__default=/*#__PURE__*/_interopDefault(dayjs);/**
2
+ * Cron expression parser
3
+ *
4
+ * Supports standard 5-field cron expressions:
5
+ * ```
6
+ * ┌───────────── minute (0-59)
7
+ * │ ┌───────────── hour (0-23)
8
+ * │ │ ┌───────────── day of month (1-31)
9
+ * │ │ │ ┌───────────── month (1-12)
10
+ * │ │ │ │ ┌───────────── day of week (0-6, Sunday = 0)
11
+ * │ │ │ │ │
12
+ * * * * * *
13
+ * ```
14
+ *
15
+ * Supports:
16
+ * - `*` - any value
17
+ * - `5` - specific value
18
+ * - `1,3,5` - list of values
19
+ * - `1-5` - range of values
20
+ * - `* /5` - step values (every 5)
21
+ * - `1-10/2` - range with step
22
+ *
23
+ * @example
24
+ * ```typescript
25
+ * const parser = new CronParser("0 9 * * 1-5"); // 9 AM weekdays
26
+ * const nextRun = parser.nextRun();
27
+ * ```
28
+ */
29
+ class CronParser {
30
+ _expression;
31
+ _fields;
32
+ /**
33
+ * Creates a new CronParser instance
34
+ *
35
+ * @param expression - Standard 5-field cron expression
36
+ * @throws Error if expression is invalid
37
+ */
38
+ constructor(_expression) {
39
+ this._expression = _expression;
40
+ this._fields = this._parse(_expression);
41
+ }
42
+ /**
43
+ * Get the parsed cron fields
44
+ */
45
+ get fields() {
46
+ return this._fields;
47
+ }
48
+ /**
49
+ * Get the original expression
50
+ */
51
+ get expression() {
52
+ return this._expression;
53
+ }
54
+ /**
55
+ * Calculate the next run time from a given date
56
+ *
57
+ * @param from - Starting date (defaults to now)
58
+ * @returns Next run time as Dayjs
59
+ */
60
+ nextRun(from = dayjs__default.default()) {
61
+ let date = from.add(1, "minute").second(0).millisecond(0);
62
+ // Maximum iterations to prevent infinite loops
63
+ const maxIterations = 366 * 24 * 60; // 1 year of minutes
64
+ let iterations = 0;
65
+ while (iterations < maxIterations) {
66
+ iterations++;
67
+ // Check month
68
+ if (!this._fields.months.includes(date.month() + 1)) {
69
+ date = date.add(1, "month").date(1).hour(0).minute(0);
70
+ continue;
71
+ }
72
+ // Check day of month
73
+ if (!this._fields.daysOfMonth.includes(date.date())) {
74
+ date = date.add(1, "day").hour(0).minute(0);
75
+ continue;
76
+ }
77
+ // Check day of week
78
+ if (!this._fields.daysOfWeek.includes(date.day())) {
79
+ date = date.add(1, "day").hour(0).minute(0);
80
+ continue;
81
+ }
82
+ // Check hour
83
+ if (!this._fields.hours.includes(date.hour())) {
84
+ date = date.add(1, "hour").minute(0);
85
+ continue;
86
+ }
87
+ // Check minute
88
+ if (!this._fields.minutes.includes(date.minute())) {
89
+ date = date.add(1, "minute");
90
+ continue;
91
+ }
92
+ // All fields match!
93
+ return date;
94
+ }
95
+ throw new Error(`Could not find next run time for cron expression: ${this._expression}`);
96
+ }
97
+ /**
98
+ * Check if a given date matches the cron expression
99
+ *
100
+ * @param date - Date to check
101
+ * @returns true if the date matches
102
+ */
103
+ matches(date) {
104
+ return (this._fields.minutes.includes(date.minute()) &&
105
+ this._fields.hours.includes(date.hour()) &&
106
+ this._fields.daysOfMonth.includes(date.date()) &&
107
+ this._fields.months.includes(date.month() + 1) &&
108
+ this._fields.daysOfWeek.includes(date.day()));
109
+ }
110
+ /**
111
+ * Parse a cron expression into fields
112
+ */
113
+ _parse(expression) {
114
+ const parts = expression.trim().split(/\s+/);
115
+ if (parts.length !== 5) {
116
+ throw new Error(`Invalid cron expression: "${expression}". Expected 5 fields (minute hour day month weekday).`);
117
+ }
118
+ const [minute, hour, dayOfMonth, month, dayOfWeek] = parts;
119
+ return {
120
+ minutes: this._parseField(minute, 0, 59),
121
+ hours: this._parseField(hour, 0, 23),
122
+ daysOfMonth: this._parseField(dayOfMonth, 1, 31),
123
+ months: this._parseField(month, 1, 12),
124
+ daysOfWeek: this._parseField(dayOfWeek, 0, 6),
125
+ };
126
+ }
127
+ /**
128
+ * Parse a single cron field
129
+ *
130
+ * @param field - Field value (e.g., "*", "5", "1-5", "* /2", "1,3,5")
131
+ * @param min - Minimum allowed value
132
+ * @param max - Maximum allowed value
133
+ * @returns Array of matching values
134
+ */
135
+ _parseField(field, min, max) {
136
+ const values = new Set();
137
+ // Handle lists (e.g., "1,3,5")
138
+ const parts = field.split(",");
139
+ for (const part of parts) {
140
+ // Handle step values (e.g., "*/5" or "1-10/2")
141
+ const [range, stepStr] = part.split("/");
142
+ const step = stepStr ? parseInt(stepStr, 10) : 1;
143
+ if (isNaN(step) || step < 1) {
144
+ throw new Error(`Invalid step value in cron field: "${field}"`);
145
+ }
146
+ let rangeStart;
147
+ let rangeEnd;
148
+ if (range === "*") {
149
+ // Wildcard - all values
150
+ rangeStart = min;
151
+ rangeEnd = max;
152
+ }
153
+ else if (range.includes("-")) {
154
+ // Range (e.g., "1-5")
155
+ const [startStr, endStr] = range.split("-");
156
+ rangeStart = parseInt(startStr, 10);
157
+ rangeEnd = parseInt(endStr, 10);
158
+ if (isNaN(rangeStart) || isNaN(rangeEnd)) {
159
+ throw new Error(`Invalid range in cron field: "${field}"`);
160
+ }
161
+ if (rangeStart < min || rangeEnd > max || rangeStart > rangeEnd) {
162
+ throw new Error(`Range out of bounds in cron field: "${field}" (valid: ${min}-${max})`);
163
+ }
164
+ }
165
+ else {
166
+ // Single value
167
+ const value = parseInt(range, 10);
168
+ if (isNaN(value)) {
169
+ throw new Error(`Invalid value in cron field: "${field}"`);
170
+ }
171
+ if (value < min || value > max) {
172
+ throw new Error(`Value out of bounds in cron field: "${field}" (valid: ${min}-${max})`);
173
+ }
174
+ rangeStart = value;
175
+ rangeEnd = value;
176
+ }
177
+ // Add values with step
178
+ for (let i = rangeStart; i <= rangeEnd; i += step) {
179
+ values.add(i);
180
+ }
181
+ }
182
+ return Array.from(values).sort((a, b) => a - b);
183
+ }
184
+ }
185
+ /**
186
+ * Parse a cron expression string
187
+ *
188
+ * @param expression - Cron expression (5 fields)
189
+ * @returns CronParser instance
190
+ */
191
+ function parseCron(expression) {
192
+ return new CronParser(expression);
193
+ }exports.CronParser=CronParser;exports.parseCron=parseCron;//# sourceMappingURL=cron-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cron-parser.js","sources":["../src/cron-parser.ts"],"sourcesContent":[null],"names":["dayjs"],"mappings":"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"}
package/cjs/index.d.ts ADDED
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @warlock.js/scheduler
3
+ *
4
+ * A production-ready job scheduler with cron-like functionality.
5
+ *
6
+ * @example
7
+ * ```typescript
8
+ * import { Scheduler, job } from "@warlock.js/scheduler";
9
+ *
10
+ * const scheduler = new Scheduler();
11
+ *
12
+ * // Add observability
13
+ * scheduler.on('job:error', (name, error) => console.error(`${name} failed:`, error));
14
+ *
15
+ * // Schedule jobs with fluent API
16
+ * scheduler.addJob(
17
+ * job("cleanup", async () => {
18
+ * await cleanupExpiredTokens();
19
+ * })
20
+ * .daily()
21
+ * .at("03:00")
22
+ * .inTimezone("America/New_York")
23
+ * .preventOverlap()
24
+ * .retry(3, 1000)
25
+ * );
26
+ *
27
+ * // Or use cron expressions
28
+ * scheduler.addJob(
29
+ * job("reports", sendReports).cron("0 9 * * 1-5") // 9 AM weekdays
30
+ * );
31
+ *
32
+ * // Start and handle graceful shutdown
33
+ * scheduler.start();
34
+ * process.on('SIGTERM', () => scheduler.shutdown());
35
+ * ```
36
+ *
37
+ * @packageDocumentation
38
+ */
39
+ export { CronParser, parseCron } from "./cron-parser";
40
+ export { Job, job } from "./job";
41
+ export { Scheduler, scheduler } from "./scheduler";
42
+ export type { CronFields } from "./cron-parser";
43
+ export type { Day, JobIntervals, JobResult, JobStatus, RetryConfig, SchedulerEvents, TimeType, } from "./types";
44
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGnD,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,YAAY,EACV,GAAG,EACH,YAAY,EACZ,SAAS,EACT,SAAS,EACT,WAAW,EACX,eAAe,EACf,QAAQ,GACT,MAAM,SAAS,CAAC"}
package/cjs/index.js CHANGED
@@ -1,34 +1 @@
1
- 'use strict';
2
-
3
- var cronParser = require('./cron-parser');
4
- var job = require('./job');
5
- var scheduler = require('./scheduler');
6
-
7
-
8
-
9
- Object.defineProperty(exports, "CronParser", {
10
- enumerable: true,
11
- get: function () { return cronParser.CronParser; }
12
- });
13
- Object.defineProperty(exports, "parseCron", {
14
- enumerable: true,
15
- get: function () { return cronParser.parseCron; }
16
- });
17
- Object.defineProperty(exports, "Job", {
18
- enumerable: true,
19
- get: function () { return job.Job; }
20
- });
21
- Object.defineProperty(exports, "job", {
22
- enumerable: true,
23
- get: function () { return job.job; }
24
- });
25
- Object.defineProperty(exports, "Scheduler", {
26
- enumerable: true,
27
- get: function () { return scheduler.Scheduler; }
28
- });
29
- Object.defineProperty(exports, "scheduler", {
30
- enumerable: true,
31
- get: function () { return scheduler.scheduler; }
32
- });
33
- //# sourceMappingURL=index.js.map
34
- //# sourceMappingURL=index.js.map
1
+ 'use strict';var cronParser=require('./cron-parser.js'),job=require('./job.js'),scheduler=require('./scheduler.js');exports.CronParser=cronParser.CronParser;exports.parseCron=cronParser.parseCron;exports.Job=job.Job;exports.job=job.job;exports.Scheduler=scheduler.Scheduler;exports.scheduler=scheduler.scheduler;//# sourceMappingURL=index.js.map
package/cjs/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js","sourcesContent":[]}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":""}