@cogitator-ai/workflows 0.1.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 +21 -0
- package/README.md +97 -0
- package/dist/builder.d.ts +39 -0
- package/dist/builder.d.ts.map +1 -0
- package/dist/builder.js +224 -0
- package/dist/builder.js.map +1 -0
- package/dist/checkpoint.d.ts +33 -0
- package/dist/checkpoint.d.ts.map +1 -0
- package/dist/checkpoint.js +108 -0
- package/dist/checkpoint.js.map +1 -0
- package/dist/executor.d.ts +24 -0
- package/dist/executor.d.ts.map +1 -0
- package/dist/executor.js +207 -0
- package/dist/executor.js.map +1 -0
- package/dist/human/approval-store.d.ts +95 -0
- package/dist/human/approval-store.d.ts.map +1 -0
- package/dist/human/approval-store.js +377 -0
- package/dist/human/approval-store.js.map +1 -0
- package/dist/human/human-node.d.ts +104 -0
- package/dist/human/human-node.d.ts.map +1 -0
- package/dist/human/human-node.js +342 -0
- package/dist/human/human-node.js.map +1 -0
- package/dist/human/index.d.ts +17 -0
- package/dist/human/index.d.ts.map +1 -0
- package/dist/human/index.js +17 -0
- package/dist/human/index.js.map +1 -0
- package/dist/human/notifiers.d.ts +85 -0
- package/dist/human/notifiers.d.ts.map +1 -0
- package/dist/human/notifiers.js +289 -0
- package/dist/human/notifiers.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/manager/index.d.ts +19 -0
- package/dist/manager/index.d.ts.map +1 -0
- package/dist/manager/index.js +17 -0
- package/dist/manager/index.js.map +1 -0
- package/dist/manager/run-store.d.ts +78 -0
- package/dist/manager/run-store.d.ts.map +1 -0
- package/dist/manager/run-store.js +390 -0
- package/dist/manager/run-store.js.map +1 -0
- package/dist/manager/scheduler.d.ts +159 -0
- package/dist/manager/scheduler.d.ts.map +1 -0
- package/dist/manager/scheduler.js +355 -0
- package/dist/manager/scheduler.js.map +1 -0
- package/dist/manager/workflow-manager.d.ts +114 -0
- package/dist/manager/workflow-manager.d.ts.map +1 -0
- package/dist/manager/workflow-manager.js +460 -0
- package/dist/manager/workflow-manager.js.map +1 -0
- package/dist/nodes/agent.d.ts +24 -0
- package/dist/nodes/agent.d.ts.map +1 -0
- package/dist/nodes/agent.js +37 -0
- package/dist/nodes/agent.js.map +1 -0
- package/dist/nodes/base.d.ts +12 -0
- package/dist/nodes/base.d.ts.map +1 -0
- package/dist/nodes/base.js +5 -0
- package/dist/nodes/base.js.map +1 -0
- package/dist/nodes/function.d.ts +27 -0
- package/dist/nodes/function.d.ts.map +1 -0
- package/dist/nodes/function.js +29 -0
- package/dist/nodes/function.js.map +1 -0
- package/dist/nodes/index.d.ts +8 -0
- package/dist/nodes/index.d.ts.map +1 -0
- package/dist/nodes/index.js +8 -0
- package/dist/nodes/index.js.map +1 -0
- package/dist/nodes/tool.d.ts +19 -0
- package/dist/nodes/tool.d.ts.map +1 -0
- package/dist/nodes/tool.js +26 -0
- package/dist/nodes/tool.js.map +1 -0
- package/dist/observability/exporters.d.ts +93 -0
- package/dist/observability/exporters.d.ts.map +1 -0
- package/dist/observability/exporters.js +330 -0
- package/dist/observability/exporters.js.map +1 -0
- package/dist/observability/index.d.ts +17 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +17 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/metrics.d.ts +114 -0
- package/dist/observability/metrics.d.ts.map +1 -0
- package/dist/observability/metrics.js +435 -0
- package/dist/observability/metrics.js.map +1 -0
- package/dist/observability/span-attributes.d.ts +95 -0
- package/dist/observability/span-attributes.d.ts.map +1 -0
- package/dist/observability/span-attributes.js +142 -0
- package/dist/observability/span-attributes.js.map +1 -0
- package/dist/observability/tracer.d.ts +110 -0
- package/dist/observability/tracer.d.ts.map +1 -0
- package/dist/observability/tracer.js +409 -0
- package/dist/observability/tracer.js.map +1 -0
- package/dist/patterns/index.d.ts +15 -0
- package/dist/patterns/index.d.ts.map +1 -0
- package/dist/patterns/index.js +15 -0
- package/dist/patterns/index.js.map +1 -0
- package/dist/patterns/map-reduce.d.ts +223 -0
- package/dist/patterns/map-reduce.d.ts.map +1 -0
- package/dist/patterns/map-reduce.js +378 -0
- package/dist/patterns/map-reduce.js.map +1 -0
- package/dist/saga/circuit-breaker.d.ts +153 -0
- package/dist/saga/circuit-breaker.d.ts.map +1 -0
- package/dist/saga/circuit-breaker.js +306 -0
- package/dist/saga/circuit-breaker.js.map +1 -0
- package/dist/saga/compensation.d.ts +134 -0
- package/dist/saga/compensation.d.ts.map +1 -0
- package/dist/saga/compensation.js +240 -0
- package/dist/saga/compensation.js.map +1 -0
- package/dist/saga/dead-letter.d.ts +113 -0
- package/dist/saga/dead-letter.d.ts.map +1 -0
- package/dist/saga/dead-letter.js +307 -0
- package/dist/saga/dead-letter.js.map +1 -0
- package/dist/saga/idempotency.d.ts +95 -0
- package/dist/saga/idempotency.d.ts.map +1 -0
- package/dist/saga/idempotency.js +266 -0
- package/dist/saga/idempotency.js.map +1 -0
- package/dist/saga/index.d.ts +16 -0
- package/dist/saga/index.d.ts.map +1 -0
- package/dist/saga/index.js +16 -0
- package/dist/saga/index.js.map +1 -0
- package/dist/saga/retry.d.ts +59 -0
- package/dist/saga/retry.d.ts.map +1 -0
- package/dist/saga/retry.js +222 -0
- package/dist/saga/retry.js.map +1 -0
- package/dist/scheduler.d.ts +37 -0
- package/dist/scheduler.d.ts.map +1 -0
- package/dist/scheduler.js +151 -0
- package/dist/scheduler.js.map +1 -0
- package/dist/subworkflows/index.d.ts +16 -0
- package/dist/subworkflows/index.d.ts.map +1 -0
- package/dist/subworkflows/index.js +16 -0
- package/dist/subworkflows/index.js.map +1 -0
- package/dist/subworkflows/parallel-subworkflows.d.ts +139 -0
- package/dist/subworkflows/parallel-subworkflows.d.ts.map +1 -0
- package/dist/subworkflows/parallel-subworkflows.js +270 -0
- package/dist/subworkflows/parallel-subworkflows.js.map +1 -0
- package/dist/subworkflows/subworkflow-node.d.ts +136 -0
- package/dist/subworkflows/subworkflow-node.d.ts.map +1 -0
- package/dist/subworkflows/subworkflow-node.js +164 -0
- package/dist/subworkflows/subworkflow-node.js.map +1 -0
- package/dist/timers/cron-parser.d.ts +110 -0
- package/dist/timers/cron-parser.d.ts.map +1 -0
- package/dist/timers/cron-parser.js +412 -0
- package/dist/timers/cron-parser.js.map +1 -0
- package/dist/timers/index.d.ts +18 -0
- package/dist/timers/index.d.ts.map +1 -0
- package/dist/timers/index.js +18 -0
- package/dist/timers/index.js.map +1 -0
- package/dist/timers/timer-manager.d.ts +219 -0
- package/dist/timers/timer-manager.d.ts.map +1 -0
- package/dist/timers/timer-manager.js +351 -0
- package/dist/timers/timer-manager.js.map +1 -0
- package/dist/timers/timer-node.d.ts +144 -0
- package/dist/timers/timer-node.d.ts.map +1 -0
- package/dist/timers/timer-node.js +246 -0
- package/dist/timers/timer-node.js.map +1 -0
- package/dist/timers/timer-store.d.ts +90 -0
- package/dist/timers/timer-store.d.ts.map +1 -0
- package/dist/timers/timer-store.js +357 -0
- package/dist/timers/timer-store.js.map +1 -0
- package/dist/triggers/cron-trigger.d.ts +102 -0
- package/dist/triggers/cron-trigger.d.ts.map +1 -0
- package/dist/triggers/cron-trigger.js +309 -0
- package/dist/triggers/cron-trigger.js.map +1 -0
- package/dist/triggers/index.d.ts +14 -0
- package/dist/triggers/index.d.ts.map +1 -0
- package/dist/triggers/index.js +10 -0
- package/dist/triggers/index.js.map +1 -0
- package/dist/triggers/rate-limiter.d.ts +130 -0
- package/dist/triggers/rate-limiter.d.ts.map +1 -0
- package/dist/triggers/rate-limiter.js +294 -0
- package/dist/triggers/rate-limiter.js.map +1 -0
- package/dist/triggers/trigger-manager.d.ts +166 -0
- package/dist/triggers/trigger-manager.d.ts.map +1 -0
- package/dist/triggers/trigger-manager.js +436 -0
- package/dist/triggers/trigger-manager.js.map +1 -0
- package/dist/triggers/webhook-trigger.d.ts +150 -0
- package/dist/triggers/webhook-trigger.d.ts.map +1 -0
- package/dist/triggers/webhook-trigger.js +452 -0
- package/dist/triggers/webhook-trigger.js.map +1 -0
- package/package.json +44 -0
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cron expression parser with timezone support
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Standard cron expression parsing (5 or 6 fields)
|
|
6
|
+
* - Timezone-aware scheduling
|
|
7
|
+
* - Human-readable descriptions
|
|
8
|
+
* - Next/previous occurrence calculation
|
|
9
|
+
* - Validation and error reporting
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Cron field descriptor
|
|
13
|
+
*/
|
|
14
|
+
interface CronField {
|
|
15
|
+
name: string;
|
|
16
|
+
min: number;
|
|
17
|
+
max: number;
|
|
18
|
+
aliases?: Record<string, number>;
|
|
19
|
+
}
|
|
20
|
+
declare const CRON_FIELDS: CronField[];
|
|
21
|
+
/**
|
|
22
|
+
* Common cron presets
|
|
23
|
+
*/
|
|
24
|
+
export declare const CRON_PRESETS: Record<string, string>;
|
|
25
|
+
/**
|
|
26
|
+
* Parsed cron expression result
|
|
27
|
+
*/
|
|
28
|
+
export interface ParsedCron {
|
|
29
|
+
expression: string;
|
|
30
|
+
fields: {
|
|
31
|
+
second?: number[];
|
|
32
|
+
minute: number[];
|
|
33
|
+
hour: number[];
|
|
34
|
+
dayOfMonth: number[];
|
|
35
|
+
month: number[];
|
|
36
|
+
dayOfWeek: number[];
|
|
37
|
+
};
|
|
38
|
+
hasSeconds: boolean;
|
|
39
|
+
timezone?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Cron iterator options
|
|
43
|
+
*/
|
|
44
|
+
export interface CronIteratorOptions {
|
|
45
|
+
currentDate?: Date;
|
|
46
|
+
startDate?: Date;
|
|
47
|
+
endDate?: Date;
|
|
48
|
+
timezone?: string;
|
|
49
|
+
iterator?: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Validate a cron expression
|
|
53
|
+
*/
|
|
54
|
+
export declare function validateCronExpression(expression: string): {
|
|
55
|
+
valid: boolean;
|
|
56
|
+
error?: string;
|
|
57
|
+
normalized?: string;
|
|
58
|
+
};
|
|
59
|
+
/**
|
|
60
|
+
* Parse a cron expression
|
|
61
|
+
*/
|
|
62
|
+
export declare function parseCronExpression(expression: string, timezone?: string): ParsedCron;
|
|
63
|
+
/**
|
|
64
|
+
* Get the next occurrence of a cron expression
|
|
65
|
+
*/
|
|
66
|
+
export declare function getNextCronOccurrence(expression: string, options?: CronIteratorOptions): Date;
|
|
67
|
+
/**
|
|
68
|
+
* Get the previous occurrence of a cron expression
|
|
69
|
+
*/
|
|
70
|
+
export declare function getPreviousCronOccurrence(expression: string, options?: CronIteratorOptions): Date;
|
|
71
|
+
/**
|
|
72
|
+
* Get next N occurrences of a cron expression
|
|
73
|
+
*/
|
|
74
|
+
export declare function getNextCronOccurrences(expression: string, count: number, options?: CronIteratorOptions): Date[];
|
|
75
|
+
/**
|
|
76
|
+
* Check if a cron expression matches a given date
|
|
77
|
+
*/
|
|
78
|
+
export declare function cronMatchesDate(expression: string, date: Date, timezone?: string): boolean;
|
|
79
|
+
/**
|
|
80
|
+
* Calculate milliseconds until next occurrence
|
|
81
|
+
*/
|
|
82
|
+
export declare function msUntilNextCronOccurrence(expression: string, options?: CronIteratorOptions): number;
|
|
83
|
+
/**
|
|
84
|
+
* Get human-readable description of a cron expression
|
|
85
|
+
*/
|
|
86
|
+
export declare function describeCronExpression(expression: string): string;
|
|
87
|
+
/**
|
|
88
|
+
* Create a cron iterator
|
|
89
|
+
*/
|
|
90
|
+
export declare function createCronIterator(expression: string, options?: CronIteratorOptions): {
|
|
91
|
+
next: () => Date | null;
|
|
92
|
+
prev: () => Date | null;
|
|
93
|
+
hasNext: () => boolean;
|
|
94
|
+
hasPrev: () => boolean;
|
|
95
|
+
reset: (date?: Date) => void;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Check if cron expression is valid
|
|
99
|
+
*/
|
|
100
|
+
export declare function isValidCronExpression(expression: string): boolean;
|
|
101
|
+
/**
|
|
102
|
+
* Get all supported timezones
|
|
103
|
+
*/
|
|
104
|
+
export declare function getSupportedTimezones(): string[];
|
|
105
|
+
/**
|
|
106
|
+
* Check if timezone is valid
|
|
107
|
+
*/
|
|
108
|
+
export declare function isValidTimezone(timezone: string): boolean;
|
|
109
|
+
export { CRON_FIELDS };
|
|
110
|
+
//# sourceMappingURL=cron-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-parser.d.ts","sourceRoot":"","sources":["../../src/timers/cron-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cron expression parser with timezone support
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Standard cron expression parsing (5 or 6 fields)
|
|
6
|
+
* - Timezone-aware scheduling
|
|
7
|
+
* - Human-readable descriptions
|
|
8
|
+
* - Next/previous occurrence calculation
|
|
9
|
+
* - Validation and error reporting
|
|
10
|
+
*/
|
|
11
|
+
import parser from 'cron-parser';
|
|
12
|
+
const CRON_FIELDS = [
|
|
13
|
+
{ name: 'second', min: 0, max: 59 },
|
|
14
|
+
{ name: 'minute', min: 0, max: 59 },
|
|
15
|
+
{ name: 'hour', min: 0, max: 23 },
|
|
16
|
+
{ name: 'day', min: 1, max: 31 },
|
|
17
|
+
{
|
|
18
|
+
name: 'month',
|
|
19
|
+
min: 1,
|
|
20
|
+
max: 12,
|
|
21
|
+
aliases: {
|
|
22
|
+
jan: 1,
|
|
23
|
+
feb: 2,
|
|
24
|
+
mar: 3,
|
|
25
|
+
apr: 4,
|
|
26
|
+
may: 5,
|
|
27
|
+
jun: 6,
|
|
28
|
+
jul: 7,
|
|
29
|
+
aug: 8,
|
|
30
|
+
sep: 9,
|
|
31
|
+
oct: 10,
|
|
32
|
+
nov: 11,
|
|
33
|
+
dec: 12,
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'dayOfWeek',
|
|
38
|
+
min: 0,
|
|
39
|
+
max: 7,
|
|
40
|
+
aliases: {
|
|
41
|
+
sun: 0,
|
|
42
|
+
mon: 1,
|
|
43
|
+
tue: 2,
|
|
44
|
+
wed: 3,
|
|
45
|
+
thu: 4,
|
|
46
|
+
fri: 5,
|
|
47
|
+
sat: 6,
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
];
|
|
51
|
+
/**
|
|
52
|
+
* Common cron presets
|
|
53
|
+
*/
|
|
54
|
+
export const CRON_PRESETS = {
|
|
55
|
+
'@yearly': '0 0 1 1 *',
|
|
56
|
+
'@annually': '0 0 1 1 *',
|
|
57
|
+
'@monthly': '0 0 1 * *',
|
|
58
|
+
'@weekly': '0 0 * * 0',
|
|
59
|
+
'@daily': '0 0 * * *',
|
|
60
|
+
'@midnight': '0 0 * * *',
|
|
61
|
+
'@hourly': '0 * * * *',
|
|
62
|
+
'@every_minute': '* * * * *',
|
|
63
|
+
'@every_5_minutes': '*/5 * * * *',
|
|
64
|
+
'@every_15_minutes': '*/15 * * * *',
|
|
65
|
+
'@every_30_minutes': '*/30 * * * *',
|
|
66
|
+
'@weekdays': '0 0 * * 1-5',
|
|
67
|
+
'@weekends': '0 0 * * 0,6',
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Validate a cron expression
|
|
71
|
+
*/
|
|
72
|
+
export function validateCronExpression(expression) {
|
|
73
|
+
const normalized = CRON_PRESETS[expression.toLowerCase()] ?? expression;
|
|
74
|
+
try {
|
|
75
|
+
parser.parseExpression(normalized);
|
|
76
|
+
return { valid: true, normalized };
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
return {
|
|
80
|
+
valid: false,
|
|
81
|
+
error: error instanceof Error ? error.message : 'Invalid cron expression',
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Parse a cron expression
|
|
87
|
+
*/
|
|
88
|
+
export function parseCronExpression(expression, timezone) {
|
|
89
|
+
const normalized = CRON_PRESETS[expression.toLowerCase()] ?? expression;
|
|
90
|
+
const parts = normalized.trim().split(/\s+/);
|
|
91
|
+
const hasSeconds = parts.length === 6;
|
|
92
|
+
const options = {};
|
|
93
|
+
if (timezone) {
|
|
94
|
+
options.timezone = timezone;
|
|
95
|
+
}
|
|
96
|
+
const interval = parser.parseExpression(normalized, options);
|
|
97
|
+
const fields = interval.fields;
|
|
98
|
+
return {
|
|
99
|
+
expression: normalized,
|
|
100
|
+
fields: {
|
|
101
|
+
second: hasSeconds ? Array.from(fields.second) : undefined,
|
|
102
|
+
minute: Array.from(fields.minute),
|
|
103
|
+
hour: Array.from(fields.hour),
|
|
104
|
+
dayOfMonth: Array.from(fields.dayOfMonth),
|
|
105
|
+
month: Array.from(fields.month),
|
|
106
|
+
dayOfWeek: Array.from(fields.dayOfWeek),
|
|
107
|
+
},
|
|
108
|
+
hasSeconds,
|
|
109
|
+
timezone,
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Get the next occurrence of a cron expression
|
|
114
|
+
*/
|
|
115
|
+
export function getNextCronOccurrence(expression, options = {}) {
|
|
116
|
+
const normalized = CRON_PRESETS[expression.toLowerCase()] ?? expression;
|
|
117
|
+
const interval = parser.parseExpression(normalized, {
|
|
118
|
+
currentDate: options.currentDate ?? new Date(),
|
|
119
|
+
startDate: options.startDate,
|
|
120
|
+
endDate: options.endDate,
|
|
121
|
+
tz: options.timezone,
|
|
122
|
+
});
|
|
123
|
+
return interval.next().toDate();
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get the previous occurrence of a cron expression
|
|
127
|
+
*/
|
|
128
|
+
export function getPreviousCronOccurrence(expression, options = {}) {
|
|
129
|
+
const normalized = CRON_PRESETS[expression.toLowerCase()] ?? expression;
|
|
130
|
+
const interval = parser.parseExpression(normalized, {
|
|
131
|
+
currentDate: options.currentDate ?? new Date(),
|
|
132
|
+
startDate: options.startDate,
|
|
133
|
+
endDate: options.endDate,
|
|
134
|
+
tz: options.timezone,
|
|
135
|
+
});
|
|
136
|
+
return interval.prev().toDate();
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get next N occurrences of a cron expression
|
|
140
|
+
*/
|
|
141
|
+
export function getNextCronOccurrences(expression, count, options = {}) {
|
|
142
|
+
const normalized = CRON_PRESETS[expression.toLowerCase()] ?? expression;
|
|
143
|
+
const occurrences = [];
|
|
144
|
+
const interval = parser.parseExpression(normalized, {
|
|
145
|
+
currentDate: options.currentDate ?? new Date(),
|
|
146
|
+
startDate: options.startDate,
|
|
147
|
+
endDate: options.endDate,
|
|
148
|
+
tz: options.timezone,
|
|
149
|
+
});
|
|
150
|
+
for (let i = 0; i < count; i++) {
|
|
151
|
+
try {
|
|
152
|
+
occurrences.push(interval.next().toDate());
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
break;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return occurrences;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Check if a cron expression matches a given date
|
|
162
|
+
*/
|
|
163
|
+
export function cronMatchesDate(expression, date, timezone) {
|
|
164
|
+
const normalized = CRON_PRESETS[expression.toLowerCase()] ?? expression;
|
|
165
|
+
let checkDate = date;
|
|
166
|
+
if (timezone) {
|
|
167
|
+
const formatter = new Intl.DateTimeFormat('en-US', {
|
|
168
|
+
timeZone: timezone,
|
|
169
|
+
year: 'numeric',
|
|
170
|
+
month: '2-digit',
|
|
171
|
+
day: '2-digit',
|
|
172
|
+
hour: '2-digit',
|
|
173
|
+
minute: '2-digit',
|
|
174
|
+
second: '2-digit',
|
|
175
|
+
hour12: false,
|
|
176
|
+
});
|
|
177
|
+
const parts = formatter.formatToParts(date);
|
|
178
|
+
const get = (type) => parseInt(parts.find((p) => p.type === type)?.value ?? '0');
|
|
179
|
+
checkDate = new Date(get('year'), get('month') - 1, get('day'), get('hour'), get('minute'), get('second'));
|
|
180
|
+
}
|
|
181
|
+
const parsed = parseCronExpression(normalized, timezone);
|
|
182
|
+
const minute = checkDate.getMinutes();
|
|
183
|
+
const hour = checkDate.getHours();
|
|
184
|
+
const dayOfMonth = checkDate.getDate();
|
|
185
|
+
const month = checkDate.getMonth() + 1;
|
|
186
|
+
const dayOfWeek = checkDate.getDay();
|
|
187
|
+
if (!parsed.fields.minute.includes(minute))
|
|
188
|
+
return false;
|
|
189
|
+
if (!parsed.fields.hour.includes(hour))
|
|
190
|
+
return false;
|
|
191
|
+
if (!parsed.fields.month.includes(month))
|
|
192
|
+
return false;
|
|
193
|
+
const dayOfMonthSpecified = parsed.fields.dayOfMonth.length < 31;
|
|
194
|
+
const dayOfWeekSpecified = parsed.fields.dayOfWeek.length < 8;
|
|
195
|
+
if (dayOfMonthSpecified && dayOfWeekSpecified) {
|
|
196
|
+
if (!parsed.fields.dayOfMonth.includes(dayOfMonth) &&
|
|
197
|
+
!parsed.fields.dayOfWeek.includes(dayOfWeek)) {
|
|
198
|
+
return false;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
else if (dayOfMonthSpecified) {
|
|
202
|
+
if (!parsed.fields.dayOfMonth.includes(dayOfMonth))
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
205
|
+
else if (dayOfWeekSpecified) {
|
|
206
|
+
if (!parsed.fields.dayOfWeek.includes(dayOfWeek))
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
if (parsed.hasSeconds && parsed.fields.second) {
|
|
210
|
+
const second = checkDate.getSeconds();
|
|
211
|
+
if (!parsed.fields.second.includes(second))
|
|
212
|
+
return false;
|
|
213
|
+
}
|
|
214
|
+
return true;
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Calculate milliseconds until next occurrence
|
|
218
|
+
*/
|
|
219
|
+
export function msUntilNextCronOccurrence(expression, options = {}) {
|
|
220
|
+
const now = options.currentDate ?? new Date();
|
|
221
|
+
const next = getNextCronOccurrence(expression, options);
|
|
222
|
+
return next.getTime() - now.getTime();
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get human-readable description of a cron expression
|
|
226
|
+
*/
|
|
227
|
+
export function describeCronExpression(expression) {
|
|
228
|
+
const normalized = CRON_PRESETS[expression.toLowerCase()] ?? expression;
|
|
229
|
+
const parts = normalized.trim().split(/\s+/);
|
|
230
|
+
const presetDescriptions = {
|
|
231
|
+
'0 0 1 1 *': 'At midnight on January 1st',
|
|
232
|
+
'0 0 1 * *': 'At midnight on the first day of each month',
|
|
233
|
+
'0 0 * * 0': 'At midnight every Sunday',
|
|
234
|
+
'0 0 * * *': 'At midnight every day',
|
|
235
|
+
'0 * * * *': 'At the start of every hour',
|
|
236
|
+
'* * * * *': 'Every minute',
|
|
237
|
+
'*/5 * * * *': 'Every 5 minutes',
|
|
238
|
+
'*/15 * * * *': 'Every 15 minutes',
|
|
239
|
+
'*/30 * * * *': 'Every 30 minutes',
|
|
240
|
+
'0 0 * * 1-5': 'At midnight on weekdays',
|
|
241
|
+
'0 0 * * 0,6': 'At midnight on weekends',
|
|
242
|
+
};
|
|
243
|
+
if (presetDescriptions[normalized]) {
|
|
244
|
+
return presetDescriptions[normalized];
|
|
245
|
+
}
|
|
246
|
+
const hasSeconds = parts.length === 6;
|
|
247
|
+
const offset = hasSeconds ? 1 : 0;
|
|
248
|
+
const minute = parts[0 + offset];
|
|
249
|
+
const hour = parts[1 + offset];
|
|
250
|
+
const dayOfMonth = parts[2 + offset];
|
|
251
|
+
const month = parts[3 + offset];
|
|
252
|
+
const dayOfWeek = parts[4 + offset];
|
|
253
|
+
const descriptions = [];
|
|
254
|
+
if (minute === '*' && hour === '*') {
|
|
255
|
+
descriptions.push('Every minute');
|
|
256
|
+
}
|
|
257
|
+
else if (minute.startsWith('*/')) {
|
|
258
|
+
const interval = minute.slice(2);
|
|
259
|
+
descriptions.push(`Every ${interval} minutes`);
|
|
260
|
+
}
|
|
261
|
+
else if (hour === '*') {
|
|
262
|
+
descriptions.push(`At minute ${minute} of every hour`);
|
|
263
|
+
}
|
|
264
|
+
else if (minute === '0') {
|
|
265
|
+
if (hour === '*') {
|
|
266
|
+
descriptions.push('At the start of every hour');
|
|
267
|
+
}
|
|
268
|
+
else if (hour.includes(',')) {
|
|
269
|
+
descriptions.push(`At ${hour.split(',').join(', ')}:00`);
|
|
270
|
+
}
|
|
271
|
+
else if (hour.includes('-')) {
|
|
272
|
+
const [start, end] = hour.split('-');
|
|
273
|
+
descriptions.push(`Every hour from ${start}:00 to ${end}:00`);
|
|
274
|
+
}
|
|
275
|
+
else {
|
|
276
|
+
descriptions.push(`At ${hour}:00`);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
else {
|
|
280
|
+
descriptions.push(`At ${hour}:${minute.padStart(2, '0')}`);
|
|
281
|
+
}
|
|
282
|
+
if (dayOfMonth !== '*' || dayOfWeek !== '*') {
|
|
283
|
+
if (dayOfWeek !== '*') {
|
|
284
|
+
const dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
|
285
|
+
if (dayOfWeek.includes(',')) {
|
|
286
|
+
const days = dayOfWeek.split(',').map((d) => dayNames[parseInt(d)] || d);
|
|
287
|
+
descriptions.push(`on ${days.join(', ')}`);
|
|
288
|
+
}
|
|
289
|
+
else if (dayOfWeek.includes('-')) {
|
|
290
|
+
const [start, end] = dayOfWeek.split('-');
|
|
291
|
+
descriptions.push(`${dayNames[parseInt(start)]} through ${dayNames[parseInt(end)]}`);
|
|
292
|
+
}
|
|
293
|
+
else if (dayOfWeek !== '*') {
|
|
294
|
+
descriptions.push(`on ${dayNames[parseInt(dayOfWeek)]}`);
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
if (dayOfMonth !== '*') {
|
|
298
|
+
if (dayOfMonth.includes(',')) {
|
|
299
|
+
descriptions.push(`on days ${dayOfMonth}`);
|
|
300
|
+
}
|
|
301
|
+
else if (dayOfMonth.includes('-')) {
|
|
302
|
+
const [start, end] = dayOfMonth.split('-');
|
|
303
|
+
descriptions.push(`on days ${start} through ${end}`);
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
const suffix = dayOfMonth === '1' || dayOfMonth === '21' || dayOfMonth === '31'
|
|
307
|
+
? 'st'
|
|
308
|
+
: dayOfMonth === '2' || dayOfMonth === '22'
|
|
309
|
+
? 'nd'
|
|
310
|
+
: dayOfMonth === '3' || dayOfMonth === '23'
|
|
311
|
+
? 'rd'
|
|
312
|
+
: 'th';
|
|
313
|
+
descriptions.push(`on the ${dayOfMonth}${suffix}`);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
if (month !== '*') {
|
|
318
|
+
const monthNames = [
|
|
319
|
+
'',
|
|
320
|
+
'January',
|
|
321
|
+
'February',
|
|
322
|
+
'March',
|
|
323
|
+
'April',
|
|
324
|
+
'May',
|
|
325
|
+
'June',
|
|
326
|
+
'July',
|
|
327
|
+
'August',
|
|
328
|
+
'September',
|
|
329
|
+
'October',
|
|
330
|
+
'November',
|
|
331
|
+
'December',
|
|
332
|
+
];
|
|
333
|
+
if (month.includes(',')) {
|
|
334
|
+
const months = month.split(',').map((m) => monthNames[parseInt(m)] || m);
|
|
335
|
+
descriptions.push(`in ${months.join(', ')}`);
|
|
336
|
+
}
|
|
337
|
+
else if (month.includes('-')) {
|
|
338
|
+
const [start, end] = month.split('-');
|
|
339
|
+
descriptions.push(`from ${monthNames[parseInt(start)]} to ${monthNames[parseInt(end)]}`);
|
|
340
|
+
}
|
|
341
|
+
else {
|
|
342
|
+
descriptions.push(`in ${monthNames[parseInt(month)]}`);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return descriptions.join(' ');
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Create a cron iterator
|
|
349
|
+
*/
|
|
350
|
+
export function createCronIterator(expression, options = {}) {
|
|
351
|
+
const normalized = CRON_PRESETS[expression.toLowerCase()] ?? expression;
|
|
352
|
+
let interval = parser.parseExpression(normalized, {
|
|
353
|
+
currentDate: options.currentDate ?? new Date(),
|
|
354
|
+
startDate: options.startDate,
|
|
355
|
+
endDate: options.endDate,
|
|
356
|
+
tz: options.timezone,
|
|
357
|
+
});
|
|
358
|
+
return {
|
|
359
|
+
next: () => {
|
|
360
|
+
try {
|
|
361
|
+
return interval.next().toDate();
|
|
362
|
+
}
|
|
363
|
+
catch {
|
|
364
|
+
return null;
|
|
365
|
+
}
|
|
366
|
+
},
|
|
367
|
+
prev: () => {
|
|
368
|
+
try {
|
|
369
|
+
return interval.prev().toDate();
|
|
370
|
+
}
|
|
371
|
+
catch {
|
|
372
|
+
return null;
|
|
373
|
+
}
|
|
374
|
+
},
|
|
375
|
+
hasNext: () => interval.hasNext(),
|
|
376
|
+
hasPrev: () => interval.hasPrev(),
|
|
377
|
+
reset: (date) => {
|
|
378
|
+
interval = parser.parseExpression(normalized, {
|
|
379
|
+
currentDate: date ?? new Date(),
|
|
380
|
+
startDate: options.startDate,
|
|
381
|
+
endDate: options.endDate,
|
|
382
|
+
tz: options.timezone,
|
|
383
|
+
});
|
|
384
|
+
},
|
|
385
|
+
};
|
|
386
|
+
}
|
|
387
|
+
/**
|
|
388
|
+
* Check if cron expression is valid
|
|
389
|
+
*/
|
|
390
|
+
export function isValidCronExpression(expression) {
|
|
391
|
+
return validateCronExpression(expression).valid;
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Get all supported timezones
|
|
395
|
+
*/
|
|
396
|
+
export function getSupportedTimezones() {
|
|
397
|
+
return Intl.supportedValuesOf('timeZone');
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Check if timezone is valid
|
|
401
|
+
*/
|
|
402
|
+
export function isValidTimezone(timezone) {
|
|
403
|
+
try {
|
|
404
|
+
Intl.DateTimeFormat(undefined, { timeZone: timezone });
|
|
405
|
+
return true;
|
|
406
|
+
}
|
|
407
|
+
catch {
|
|
408
|
+
return false;
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
export { CRON_FIELDS };
|
|
412
|
+
//# sourceMappingURL=cron-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cron-parser.js","sourceRoot":"","sources":["../../src/timers/cron-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @cogitator-ai/workflows - Timer module
|
|
3
|
+
*
|
|
4
|
+
* Provides timer and scheduling capabilities for workflow execution.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Fixed and dynamic delay nodes
|
|
8
|
+
* - Cron-based scheduling with timezone support
|
|
9
|
+
* - Timer persistence across restarts
|
|
10
|
+
* - Background timer processing
|
|
11
|
+
* - Automatic recovery of missed timers
|
|
12
|
+
* - Cleanup of old timers
|
|
13
|
+
*/
|
|
14
|
+
export { type TimerQueryOptions, InMemoryTimerStore, FileTimerStore, createInMemoryTimerStore, createFileTimerStore, } from './timer-store';
|
|
15
|
+
export { type ParsedCron, type CronIteratorOptions, CRON_PRESETS, CRON_FIELDS, validateCronExpression, parseCronExpression, getNextCronOccurrence, getPreviousCronOccurrence, getNextCronOccurrences, cronMatchesDate, msUntilNextCronOccurrence, describeCronExpression, createCronIterator, isValidCronExpression, getSupportedTimezones, isValidTimezone, } from './cron-parser';
|
|
16
|
+
export { type TimerNodeType, type TimerNodeConfig, type FixedDelayConfig, type DynamicDelayConfig, type CronWaitConfig, type UntilDateConfig, type AnyTimerNodeConfig, type TimerNodeResult, type TimerExecutionContext, delayNode, dynamicDelayNode, cronWaitNode, untilNode, calculateTimerDelay, executeTimerNode, createTimerNodeHelpers, AbortError, Duration, parseDuration, formatDuration, } from './timer-node';
|
|
17
|
+
export { type TimerHandler, type TimerManagerConfig, type TimerManagerStats, TimerManager, createTimerManager, RecurringTimerScheduler, createRecurringScheduler, } from './timer-manager';
|
|
18
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/timers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EACL,KAAK,iBAAiB,EACtB,kBAAkB,EAClB,cAAc,EACd,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,KAAK,UAAU,EACf,KAAK,mBAAmB,EACxB,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,eAAe,EACf,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,EACV,QAAQ,EACR,aAAa,EACb,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @cogitator-ai/workflows - Timer module
|
|
3
|
+
*
|
|
4
|
+
* Provides timer and scheduling capabilities for workflow execution.
|
|
5
|
+
*
|
|
6
|
+
* Features:
|
|
7
|
+
* - Fixed and dynamic delay nodes
|
|
8
|
+
* - Cron-based scheduling with timezone support
|
|
9
|
+
* - Timer persistence across restarts
|
|
10
|
+
* - Background timer processing
|
|
11
|
+
* - Automatic recovery of missed timers
|
|
12
|
+
* - Cleanup of old timers
|
|
13
|
+
*/
|
|
14
|
+
export { InMemoryTimerStore, FileTimerStore, createInMemoryTimerStore, createFileTimerStore, } from './timer-store';
|
|
15
|
+
export { CRON_PRESETS, CRON_FIELDS, validateCronExpression, parseCronExpression, getNextCronOccurrence, getPreviousCronOccurrence, getNextCronOccurrences, cronMatchesDate, msUntilNextCronOccurrence, describeCronExpression, createCronIterator, isValidCronExpression, getSupportedTimezones, isValidTimezone, } from './cron-parser';
|
|
16
|
+
export { delayNode, dynamicDelayNode, cronWaitNode, untilNode, calculateTimerDelay, executeTimerNode, createTimerNodeHelpers, AbortError, Duration, parseDuration, formatDuration, } from './timer-node';
|
|
17
|
+
export { TimerManager, createTimerManager, RecurringTimerScheduler, createRecurringScheduler, } from './timer-manager';
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/timers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAEL,kBAAkB,EAClB,cAAc,EACd,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAGL,YAAY,EACZ,WAAW,EACX,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,eAAe,EACf,yBAAyB,EACzB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,qBAAqB,EACrB,eAAe,GAChB,MAAM,eAAe,CAAC;AAEvB,OAAO,EAUL,SAAS,EACT,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,UAAU,EACV,QAAQ,EACR,aAAa,EACb,cAAc,GACf,MAAM,cAAc,CAAC;AAEtB,OAAO,EAIL,YAAY,EACZ,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC"}
|