@zudojs/scheduler 0.0.1

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.
Files changed (128) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +41 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/index.d.ts +40 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +49 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/scheduler/clock/index.d.ts +3 -0
  9. package/dist/scheduler/clock/index.d.ts.map +1 -0
  10. package/dist/scheduler/clock/index.js +2 -0
  11. package/dist/scheduler/clock/index.js.map +1 -0
  12. package/dist/scheduler/clock/schedulerClock.type.d.ts +21 -0
  13. package/dist/scheduler/clock/schedulerClock.type.d.ts.map +1 -0
  14. package/dist/scheduler/clock/schedulerClock.type.js +18 -0
  15. package/dist/scheduler/clock/schedulerClock.type.js.map +1 -0
  16. package/dist/scheduler/constants/index.d.ts +2 -0
  17. package/dist/scheduler/constants/index.d.ts.map +1 -0
  18. package/dist/scheduler/constants/index.js +2 -0
  19. package/dist/scheduler/constants/index.js.map +1 -0
  20. package/dist/scheduler/constants/schedulerConstants.core.d.ts +52 -0
  21. package/dist/scheduler/constants/schedulerConstants.core.d.ts.map +1 -0
  22. package/dist/scheduler/constants/schedulerConstants.core.js +50 -0
  23. package/dist/scheduler/constants/schedulerConstants.core.js.map +1 -0
  24. package/dist/scheduler/duration/duration.parser.d.ts +11 -0
  25. package/dist/scheduler/duration/duration.parser.d.ts.map +1 -0
  26. package/dist/scheduler/duration/duration.parser.js +31 -0
  27. package/dist/scheduler/duration/duration.parser.js.map +1 -0
  28. package/dist/scheduler/duration/index.d.ts +2 -0
  29. package/dist/scheduler/duration/index.d.ts.map +1 -0
  30. package/dist/scheduler/duration/index.js +2 -0
  31. package/dist/scheduler/duration/index.js.map +1 -0
  32. package/dist/scheduler/errors/index.d.ts +3 -0
  33. package/dist/scheduler/errors/index.d.ts.map +1 -0
  34. package/dist/scheduler/errors/index.js +2 -0
  35. package/dist/scheduler/errors/index.js.map +1 -0
  36. package/dist/scheduler/errors/scheduler.errors.d.ts +10 -0
  37. package/dist/scheduler/errors/scheduler.errors.d.ts.map +1 -0
  38. package/dist/scheduler/errors/scheduler.errors.js +9 -0
  39. package/dist/scheduler/errors/scheduler.errors.js.map +1 -0
  40. package/dist/scheduler/executor/index.d.ts +2 -0
  41. package/dist/scheduler/executor/index.d.ts.map +1 -0
  42. package/dist/scheduler/executor/index.js +2 -0
  43. package/dist/scheduler/executor/index.js.map +1 -0
  44. package/dist/scheduler/executor/jobExecutor.core.d.ts +19 -0
  45. package/dist/scheduler/executor/jobExecutor.core.d.ts.map +1 -0
  46. package/dist/scheduler/executor/jobExecutor.core.js +50 -0
  47. package/dist/scheduler/executor/jobExecutor.core.js.map +1 -0
  48. package/dist/scheduler/job/index.d.ts +7 -0
  49. package/dist/scheduler/job/index.d.ts.map +1 -0
  50. package/dist/scheduler/job/index.js +3 -0
  51. package/dist/scheduler/job/index.js.map +1 -0
  52. package/dist/scheduler/job/jobContext.type.d.ts +17 -0
  53. package/dist/scheduler/job/jobContext.type.d.ts.map +1 -0
  54. package/dist/scheduler/job/jobContext.type.js +15 -0
  55. package/dist/scheduler/job/jobContext.type.js.map +1 -0
  56. package/dist/scheduler/job/jobDefinition.type.d.ts +16 -0
  57. package/dist/scheduler/job/jobDefinition.type.d.ts.map +1 -0
  58. package/dist/scheduler/job/jobDefinition.type.js +12 -0
  59. package/dist/scheduler/job/jobDefinition.type.js.map +1 -0
  60. package/dist/scheduler/job/jobHandler.type.d.ts +6 -0
  61. package/dist/scheduler/job/jobHandler.type.d.ts.map +1 -0
  62. package/dist/scheduler/job/jobHandler.type.js +2 -0
  63. package/dist/scheduler/job/jobHandler.type.js.map +1 -0
  64. package/dist/scheduler/job/jobOptions.type.d.ts +25 -0
  65. package/dist/scheduler/job/jobOptions.type.d.ts.map +1 -0
  66. package/dist/scheduler/job/jobOptions.type.js +2 -0
  67. package/dist/scheduler/job/jobOptions.type.js.map +1 -0
  68. package/dist/scheduler/priorityQueue/index.d.ts +2 -0
  69. package/dist/scheduler/priorityQueue/index.d.ts.map +1 -0
  70. package/dist/scheduler/priorityQueue/index.js +2 -0
  71. package/dist/scheduler/priorityQueue/index.js.map +1 -0
  72. package/dist/scheduler/priorityQueue/schedulerPriorityQueue.core.d.ts +46 -0
  73. package/dist/scheduler/priorityQueue/schedulerPriorityQueue.core.d.ts.map +1 -0
  74. package/dist/scheduler/priorityQueue/schedulerPriorityQueue.core.js +121 -0
  75. package/dist/scheduler/priorityQueue/schedulerPriorityQueue.core.js.map +1 -0
  76. package/dist/scheduler/registry/index.d.ts +2 -0
  77. package/dist/scheduler/registry/index.d.ts.map +1 -0
  78. package/dist/scheduler/registry/index.js +2 -0
  79. package/dist/scheduler/registry/index.js.map +1 -0
  80. package/dist/scheduler/registry/jobRegistry.core.d.ts +32 -0
  81. package/dist/scheduler/registry/jobRegistry.core.d.ts.map +1 -0
  82. package/dist/scheduler/registry/jobRegistry.core.js +52 -0
  83. package/dist/scheduler/registry/jobRegistry.core.js.map +1 -0
  84. package/dist/scheduler/schedule/index.d.ts +4 -0
  85. package/dist/scheduler/schedule/index.d.ts.map +1 -0
  86. package/dist/scheduler/schedule/index.js +2 -0
  87. package/dist/scheduler/schedule/index.js.map +1 -0
  88. package/dist/scheduler/schedule/schedule.type.d.ts +24 -0
  89. package/dist/scheduler/schedule/schedule.type.d.ts.map +1 -0
  90. package/dist/scheduler/schedule/schedule.type.js +14 -0
  91. package/dist/scheduler/schedule/schedule.type.js.map +1 -0
  92. package/dist/scheduler/schedule/scheduleOptions.type.d.ts +10 -0
  93. package/dist/scheduler/schedule/scheduleOptions.type.d.ts.map +1 -0
  94. package/dist/scheduler/schedule/scheduleOptions.type.js +2 -0
  95. package/dist/scheduler/schedule/scheduleOptions.type.js.map +1 -0
  96. package/dist/scheduler/scheduleHandle/index.d.ts +3 -0
  97. package/dist/scheduler/scheduleHandle/index.d.ts.map +1 -0
  98. package/dist/scheduler/scheduleHandle/index.js +2 -0
  99. package/dist/scheduler/scheduleHandle/index.js.map +1 -0
  100. package/dist/scheduler/scheduleHandle/scheduleHandle.type.d.ts +26 -0
  101. package/dist/scheduler/scheduleHandle/scheduleHandle.type.d.ts.map +1 -0
  102. package/dist/scheduler/scheduleHandle/scheduleHandle.type.js +29 -0
  103. package/dist/scheduler/scheduleHandle/scheduleHandle.type.js.map +1 -0
  104. package/dist/scheduler/scheduler.core.d.ts +64 -0
  105. package/dist/scheduler/scheduler.core.d.ts.map +1 -0
  106. package/dist/scheduler/scheduler.core.js +164 -0
  107. package/dist/scheduler/scheduler.core.js.map +1 -0
  108. package/dist/scheduler/trigger/index.d.ts +3 -0
  109. package/dist/scheduler/trigger/index.d.ts.map +1 -0
  110. package/dist/scheduler/trigger/index.js +2 -0
  111. package/dist/scheduler/trigger/index.js.map +1 -0
  112. package/dist/scheduler/trigger/schedulerTrigger.core.d.ts +35 -0
  113. package/dist/scheduler/trigger/schedulerTrigger.core.d.ts.map +1 -0
  114. package/dist/scheduler/trigger/schedulerTrigger.core.js +54 -0
  115. package/dist/scheduler/trigger/schedulerTrigger.core.js.map +1 -0
  116. package/dist/scheduler/trigger/trigger.type.d.ts +12 -0
  117. package/dist/scheduler/trigger/trigger.type.d.ts.map +1 -0
  118. package/dist/scheduler/trigger/trigger.type.js +7 -0
  119. package/dist/scheduler/trigger/trigger.type.js.map +1 -0
  120. package/dist/scheduler/types/index.d.ts +2 -0
  121. package/dist/scheduler/types/index.d.ts.map +1 -0
  122. package/dist/scheduler/types/index.js +2 -0
  123. package/dist/scheduler/types/index.js.map +1 -0
  124. package/dist/scheduler/types/schedulerTypes.core.d.ts +146 -0
  125. package/dist/scheduler/types/schedulerTypes.core.d.ts.map +1 -0
  126. package/dist/scheduler/types/schedulerTypes.core.js +7 -0
  127. package/dist/scheduler/types/schedulerTypes.core.js.map +1 -0
  128. package/package.json +52 -0
@@ -0,0 +1,3 @@
1
+ export type { Trigger } from "./trigger.type.js";
2
+ export { DateTrigger, DelayTrigger, IntervalTrigger, CronTrigger, } from "./schedulerTrigger.core.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scheduler/trigger/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD,OAAO,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,WAAW,GACZ,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { DateTrigger, DelayTrigger, IntervalTrigger, CronTrigger, } from "./schedulerTrigger.core.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scheduler/trigger/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,WAAW,EACX,YAAY,EACZ,eAAe,EACf,WAAW,GACZ,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { Trigger } from "./trigger.type.js";
2
+ /**
3
+ * Trigger that fires once at a specific date.
4
+ */
5
+ export declare class DateTrigger implements Trigger {
6
+ private readonly date;
7
+ constructor(date: Date);
8
+ next(after: Date): Date | null;
9
+ }
10
+ /**
11
+ * Trigger that fires after a fixed delay from the given date.
12
+ */
13
+ export declare class DelayTrigger implements Trigger {
14
+ private readonly delayMs;
15
+ constructor(delayMs: number);
16
+ next(after: Date): Date;
17
+ }
18
+ /**
19
+ * Trigger that fires at fixed intervals.
20
+ */
21
+ export declare class IntervalTrigger implements Trigger {
22
+ private readonly intervalMs;
23
+ constructor(intervalMs: number);
24
+ next(after: Date): Date;
25
+ }
26
+ /**
27
+ * Trigger that fires according to a cron expression.
28
+ */
29
+ export declare class CronTrigger implements Trigger {
30
+ private readonly expression;
31
+ private readonly timezone?;
32
+ constructor(expression: string, timezone?: string);
33
+ next(after: Date): Date | null;
34
+ }
35
+ //# sourceMappingURL=schedulerTrigger.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedulerTrigger.core.d.ts","sourceRoot":"","sources":["../../../src/scheduler/trigger/schedulerTrigger.core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEjD;;GAEG;AACH,qBAAa,WAAY,YAAW,OAAO;IACzC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAO;IAE5B,YAAY,IAAI,EAAE,IAAI,EAErB;IAED,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAK7B;CACF;AAED;;GAEG;AACH,qBAAa,YAAa,YAAW,OAAO;IAC1C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IAEjC,YAAY,OAAO,EAAE,MAAM,EAE1B;IAED,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAEtB;CACF;AAED;;GAEG;AACH,qBAAa,eAAgB,YAAW,OAAO;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,YAAY,UAAU,EAAE,MAAM,EAE7B;IAED,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAEtB;CACF;AAED;;GAEG;AACH,qBAAa,WAAY,YAAW,OAAO;IACzC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IAEpC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;IAEnC,YAAY,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAGhD;IAED,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAE7B;CACF"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Trigger that fires once at a specific date.
3
+ */
4
+ export class DateTrigger {
5
+ date;
6
+ constructor(date) {
7
+ this.date = date;
8
+ }
9
+ next(after) {
10
+ if (after >= this.date) {
11
+ return null;
12
+ }
13
+ return this.date;
14
+ }
15
+ }
16
+ /**
17
+ * Trigger that fires after a fixed delay from the given date.
18
+ */
19
+ export class DelayTrigger {
20
+ delayMs;
21
+ constructor(delayMs) {
22
+ this.delayMs = delayMs;
23
+ }
24
+ next(after) {
25
+ return new Date(after.getTime() + this.delayMs);
26
+ }
27
+ }
28
+ /**
29
+ * Trigger that fires at fixed intervals.
30
+ */
31
+ export class IntervalTrigger {
32
+ intervalMs;
33
+ constructor(intervalMs) {
34
+ this.intervalMs = intervalMs;
35
+ }
36
+ next(after) {
37
+ return new Date(after.getTime() + this.intervalMs);
38
+ }
39
+ }
40
+ /**
41
+ * Trigger that fires according to a cron expression.
42
+ */
43
+ export class CronTrigger {
44
+ expression;
45
+ timezone;
46
+ constructor(expression, timezone) {
47
+ this.expression = expression;
48
+ this.timezone = timezone;
49
+ }
50
+ next(after) {
51
+ return new Date(after.getTime() + 60_000);
52
+ }
53
+ }
54
+ //# sourceMappingURL=schedulerTrigger.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedulerTrigger.core.js","sourceRoot":"","sources":["../../../src/scheduler/trigger/schedulerTrigger.core.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,WAAW;IACL,IAAI,CAAO;IAE5B,YAAY,IAAU;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,CAAC,KAAW;QACd,IAAI,KAAK,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,YAAY;IACN,OAAO,CAAS;IAEjC,YAAY,OAAe;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,IAAI,CAAC,KAAW;QACd,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAClD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAe;IACT,UAAU,CAAS;IAEpC,YAAY,UAAkB;QAC5B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,IAAI,CAAC,KAAW;QACd,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,WAAW;IACL,UAAU,CAAS;IAEnB,QAAQ,CAAU;IAEnC,YAAY,UAAkB,EAAE,QAAiB;QAC/C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,IAAI,CAAC,KAAW;QACd,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,CAAC;IAC5C,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @zudojs/scheduler/trigger
3
+ *
4
+ * Trigger types for the scheduler package.
5
+ */
6
+ /**
7
+ * Trigger interface for calculating next execution time.
8
+ */
9
+ export interface Trigger {
10
+ next(after: Date): Date | null;
11
+ }
12
+ //# sourceMappingURL=trigger.type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger.type.d.ts","sourceRoot":"","sources":["../../../src/scheduler/trigger/trigger.type.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,CAAC,KAAK,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAChC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/scheduler/trigger
3
+ *
4
+ * Trigger types for the scheduler package.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=trigger.type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"trigger.type.js","sourceRoot":"","sources":["../../../src/scheduler/trigger/trigger.type.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,2 @@
1
+ export type { SchedulerJobId, ScheduleId, ExecutionId, ScheduleType, ScheduleState, JobState, OverlapPolicy, MisfirePolicy, RetryStrategy, RetryPolicy, JobOptions, JobDefinition, JobHandler, JobContext, JobExecution, JobExecutionResult, Schedule, ScheduleOptions, ScheduleHandle, Trigger, } from "./schedulerTypes.core.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/scheduler/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,UAAU,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,QAAQ,EACR,aAAa,EACb,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACV,aAAa,EACb,UAAU,EACV,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,QAAQ,EACR,eAAe,EACf,cAAc,EACd,OAAO,GACR,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/scheduler/types/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,146 @@
1
+ /**
2
+ * @zudojs/scheduler/types
3
+ *
4
+ * Core types for the Zudojs scheduler package.
5
+ */
6
+ /**
7
+ * Unique identifier for a scheduled job.
8
+ */
9
+ export type SchedulerJobId = string;
10
+ /**
11
+ * Unique identifier for a schedule.
12
+ */
13
+ export type ScheduleId = string;
14
+ /**
15
+ * Unique identifier for a job execution.
16
+ */
17
+ export type ExecutionId = string;
18
+ /**
19
+ * Type of schedule.
20
+ */
21
+ export type ScheduleType = "once" | "delay" | "interval" | "cron";
22
+ /**
23
+ * State of a schedule.
24
+ */
25
+ export type ScheduleState = "active" | "paused" | "cancelled" | "completed";
26
+ /**
27
+ * State of a job execution.
28
+ */
29
+ export type JobState = "pending" | "running" | "completed" | "failed" | "cancelled" | "timed_out";
30
+ /**
31
+ * Policy for handling overlapping executions.
32
+ */
33
+ export type OverlapPolicy = "allow" | "skip" | "queue" | "replace";
34
+ /**
35
+ * Policy for handling missed executions.
36
+ */
37
+ export type MisfirePolicy = "skip" | "run-once" | "catch-up";
38
+ /**
39
+ * Retry strategy.
40
+ */
41
+ export type RetryStrategy = "fixed" | "linear" | "exponential";
42
+ /**
43
+ * Retry policy for job executions.
44
+ */
45
+ export interface RetryPolicy {
46
+ readonly attempts: number;
47
+ readonly strategy: RetryStrategy;
48
+ readonly delay: number;
49
+ readonly maxDelay?: number;
50
+ readonly jitter?: boolean;
51
+ }
52
+ /**
53
+ * Options for a scheduled job.
54
+ */
55
+ export interface JobOptions {
56
+ readonly timeout?: number;
57
+ readonly retry?: RetryPolicy;
58
+ readonly concurrency?: number;
59
+ readonly overlap?: OverlapPolicy;
60
+ }
61
+ /**
62
+ * Definition of a scheduled job.
63
+ */
64
+ export interface JobDefinition {
65
+ readonly id: SchedulerJobId;
66
+ readonly name: string;
67
+ readonly handler: JobHandler;
68
+ readonly options?: JobOptions;
69
+ }
70
+ /**
71
+ * Handler for a scheduled job.
72
+ */
73
+ export type JobHandler<T = unknown> = (context: JobContext<T>) => Promise<void> | void;
74
+ /**
75
+ * Context passed to a job handler during execution.
76
+ */
77
+ export interface JobContext<T = unknown> {
78
+ readonly jobId: SchedulerJobId;
79
+ readonly executionId: ExecutionId;
80
+ readonly scheduledAt: Date;
81
+ readonly startedAt: Date;
82
+ readonly attempt: number;
83
+ readonly data: T;
84
+ readonly signal: AbortSignal;
85
+ }
86
+ /**
87
+ * Record of a job execution.
88
+ */
89
+ export interface JobExecution {
90
+ readonly id: ExecutionId;
91
+ readonly jobId: SchedulerJobId;
92
+ readonly scheduleId: ScheduleId;
93
+ readonly status: JobState;
94
+ readonly scheduledAt: Date;
95
+ readonly startedAt?: Date;
96
+ readonly completedAt?: Date;
97
+ readonly duration?: number;
98
+ readonly attempt: number;
99
+ readonly error?: unknown;
100
+ }
101
+ /**
102
+ * Result of a job execution.
103
+ */
104
+ export interface JobExecutionResult {
105
+ readonly success: boolean;
106
+ readonly error?: unknown;
107
+ }
108
+ /**
109
+ * Schedule definition.
110
+ */
111
+ export interface Schedule {
112
+ readonly id: ScheduleId;
113
+ readonly jobId: SchedulerJobId;
114
+ readonly type: ScheduleType;
115
+ readonly expression?: string;
116
+ readonly nextRunAt: Date;
117
+ readonly lastRunAt?: Date;
118
+ readonly state: ScheduleState;
119
+ readonly options?: ScheduleOptions;
120
+ }
121
+ /**
122
+ * Options for a schedule.
123
+ */
124
+ export interface ScheduleOptions {
125
+ readonly timezone?: string;
126
+ readonly misfire?: MisfirePolicy;
127
+ readonly priority?: number;
128
+ }
129
+ /**
130
+ * Handle for controlling a schedule.
131
+ */
132
+ export interface ScheduleHandle {
133
+ readonly id: ScheduleId;
134
+ readonly state: ScheduleState;
135
+ pause(): Promise<void>;
136
+ resume(): Promise<void>;
137
+ cancel(): Promise<void>;
138
+ nextRun(): Date | undefined;
139
+ }
140
+ /**
141
+ * Trigger interface for calculating next execution time.
142
+ */
143
+ export interface Trigger {
144
+ next(after: Date): Date | null;
145
+ }
146
+ //# sourceMappingURL=schedulerTypes.core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedulerTypes.core.d.ts","sourceRoot":"","sources":["../../../src/scheduler/types/schedulerTypes.core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @zudojs/scheduler/types
3
+ *
4
+ * Core types for the Zudojs scheduler package.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=schedulerTypes.core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schedulerTypes.core.js","sourceRoot":"","sources":["../../../src/scheduler/types/schedulerTypes.core.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
package/package.json ADDED
@@ -0,0 +1,52 @@
1
+ {
2
+ "name": "@zudojs/scheduler",
3
+ "version": "0.0.1",
4
+ "description": "Scheduled task and job infrastructure with cron-like scheduling, persistence, and worker management.",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "main": "./dist/index.js",
8
+ "module": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "engines": {
20
+ "node": ">=24.0.0"
21
+ },
22
+ "dependencies": {
23
+ "@zudojs/errors": "0.0.1",
24
+ "@zudojs/constants": "0.0.1",
25
+ "@zudojs/types": "0.0.1"
26
+ },
27
+ "devDependencies": {
28
+ "typescript": "^7.0.2",
29
+ "vitest": "^4.1.11"
30
+ },
31
+ "publishConfig": {
32
+ "access": "public"
33
+ },
34
+ "keywords": [
35
+ "zudojs",
36
+ "scheduler",
37
+ "cron",
38
+ "jobs"
39
+ ],
40
+ "homepage": "https://github.com/oyinlola-tech/zudo#readme",
41
+ "repository": {
42
+ "type": "git",
43
+ "url": "https://github.com/oyinlola-tech/zudo"
44
+ },
45
+ "scripts": {
46
+ "build": "tsc -p tsconfig.json",
47
+ "typecheck": "tsc -p tsconfig.json --noEmit",
48
+ "clean": "rm -rf dist",
49
+ "test": "vitest run",
50
+ "test:watch": "vitest"
51
+ }
52
+ }