@warlock.js/scheduler 4.0.174 → 4.1.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 (69) hide show
  1. package/README.md +60 -1
  2. package/cjs/index.cjs +1132 -0
  3. package/cjs/index.cjs.map +1 -0
  4. package/esm/cron-parser.d.mts +129 -0
  5. package/esm/cron-parser.d.mts.map +1 -0
  6. package/esm/cron-parser.mjs +210 -0
  7. package/esm/cron-parser.mjs.map +1 -0
  8. package/esm/index.d.mts +5 -0
  9. package/esm/index.mjs +5 -0
  10. package/esm/job.d.mts +386 -0
  11. package/esm/job.d.mts.map +1 -0
  12. package/esm/job.mjs +633 -0
  13. package/esm/job.mjs.map +1 -0
  14. package/esm/scheduler.d.mts +193 -0
  15. package/esm/scheduler.d.mts.map +1 -0
  16. package/esm/scheduler.mjs +261 -0
  17. package/esm/scheduler.mjs.map +1 -0
  18. package/esm/types.d.mts +70 -0
  19. package/esm/types.d.mts.map +1 -0
  20. package/llms-full.txt +888 -0
  21. package/llms.txt +15 -0
  22. package/package.json +40 -28
  23. package/skills/configure-retry-and-overlap/SKILL.md +137 -0
  24. package/skills/observe-scheduler/SKILL.md +153 -0
  25. package/skills/overview/SKILL.md +92 -0
  26. package/skills/pin-schedule-timezone/SKILL.md +114 -0
  27. package/skills/schedule-fluently/SKILL.md +141 -0
  28. package/skills/schedule-with-cron/SKILL.md +123 -0
  29. package/skills/scheduler-basics/SKILL.md +94 -0
  30. package/cjs/cron-parser.d.ts +0 -98
  31. package/cjs/cron-parser.d.ts.map +0 -1
  32. package/cjs/cron-parser.js +0 -193
  33. package/cjs/cron-parser.js.map +0 -1
  34. package/cjs/index.d.ts +0 -44
  35. package/cjs/index.d.ts.map +0 -1
  36. package/cjs/index.js +0 -1
  37. package/cjs/index.js.map +0 -1
  38. package/cjs/job.d.ts +0 -332
  39. package/cjs/job.d.ts.map +0 -1
  40. package/cjs/job.js +0 -616
  41. package/cjs/job.js.map +0 -1
  42. package/cjs/scheduler.d.ts +0 -182
  43. package/cjs/scheduler.d.ts.map +0 -1
  44. package/cjs/scheduler.js +0 -316
  45. package/cjs/scheduler.js.map +0 -1
  46. package/cjs/types.d.ts +0 -63
  47. package/cjs/types.d.ts.map +0 -1
  48. package/cjs/utils.d.ts +0 -3
  49. package/cjs/utils.d.ts.map +0 -1
  50. package/esm/cron-parser.d.ts +0 -98
  51. package/esm/cron-parser.d.ts.map +0 -1
  52. package/esm/cron-parser.js +0 -193
  53. package/esm/cron-parser.js.map +0 -1
  54. package/esm/index.d.ts +0 -44
  55. package/esm/index.d.ts.map +0 -1
  56. package/esm/index.js +0 -1
  57. package/esm/index.js.map +0 -1
  58. package/esm/job.d.ts +0 -332
  59. package/esm/job.d.ts.map +0 -1
  60. package/esm/job.js +0 -616
  61. package/esm/job.js.map +0 -1
  62. package/esm/scheduler.d.ts +0 -182
  63. package/esm/scheduler.d.ts.map +0 -1
  64. package/esm/scheduler.js +0 -316
  65. package/esm/scheduler.js.map +0 -1
  66. package/esm/types.d.ts +0 -63
  67. package/esm/types.d.ts.map +0 -1
  68. package/esm/utils.d.ts +0 -3
  69. package/esm/utils.d.ts.map +0 -1
package/README.md CHANGED
@@ -1 +1,60 @@
1
- # Scheduler
1
+ # @warlock.js/scheduler
2
+
3
+ In-process recurring job scheduler. Fluent and cron-style scheduling, typed events, per-job timezones, retry with optional exponential backoff, and graceful shutdown.
4
+
5
+ ```bash
6
+ npm install @warlock.js/scheduler
7
+ ```
8
+
9
+ ## What it gives you
10
+
11
+ - **Fluent API** — `daily()`, `weekly()`, `monthly()`, `at()`, `on()`, `beginOf()`, `endOf()`, `every(N, unit)`
12
+ - **Cron expressions** — standard 5-field syntax, Vixie OR semantics for day-of-month + day-of-week
13
+ - **Retry** — fixed delay or exponential backoff, per-attempt count surfaced in `JobResult`
14
+ - **Overlap prevention** — skip a tick if the job is already running (defensive for jobs with external invocation paths)
15
+ - **Per-job timezone** — pin a job to an IANA timezone; DST handled automatically
16
+ - **Typed events** — `job:start` / `job:complete` / `job:error` / `job:skip` / `scheduler:tick` / `scheduler:started` / `scheduler:stopped`
17
+ - **Graceful shutdown** — wait for in-flight jobs with a configurable timeout
18
+ - **Drift-compensated ticks** — the cadence between tick *starts* stays close to the configured interval, not `interval + work-time`
19
+
20
+ ## 30-line example
21
+
22
+ ```ts
23
+ import { scheduler, job } from "@warlock.js/scheduler";
24
+
25
+ scheduler.on("job:complete", (name, result) => {
26
+ console.log(`${name} finished in ${result.duration}ms`);
27
+ });
28
+
29
+ scheduler.on("job:error", (name, error) => {
30
+ console.error(`${name} failed permanently`, error);
31
+ });
32
+
33
+ scheduler.addJob(
34
+ job("nightly-cleanup", async () => {
35
+ await db.deleteExpiredTokens();
36
+ })
37
+ .daily()
38
+ .at("03:00")
39
+ .inTimezone("America/New_York")
40
+ .preventOverlap()
41
+ .retry(3, 1000),
42
+ );
43
+
44
+ scheduler.addJob(
45
+ job("heartbeat", pingExternalService).everyMinutes(5),
46
+ );
47
+
48
+ scheduler.start();
49
+
50
+ process.on("SIGTERM", async () => {
51
+ await scheduler.shutdown(30_000);
52
+ process.exit(0);
53
+ });
54
+ ```
55
+
56
+ ## Documentation
57
+
58
+ - **User docs** — [`domains/scheduler/docs/`](../../domains/scheduler/docs/) — concepts, recipes, full API reference
59
+ - **Backlog** — [`domains/scheduler/backlog.md`](../../domains/scheduler/backlog.md) — what's planned next (distributed locking, per-job timeout, `runAt`, jitter, cron shortcuts, …)
60
+ - **Assistant skill** — [`skills/SKILL.md`](./skills/SKILL.md) — loaded by Claude Code when it sees imports from this package