@lssm/lib.jobs 0.0.0-canary-20251217052941 → 0.0.0-canary-20251217060433

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,92 @@
1
+ import { types_d_exports } from "../queue/types.js";
2
+
3
+ //#region src/scheduler/index.d.ts
4
+
5
+ /**
6
+ * Scheduled job configuration.
7
+ */
8
+ interface ScheduledJobConfig {
9
+ /** Unique name for the schedule */
10
+ name: string;
11
+ /** Cron expression (e.g., '0 0 * * *' for daily at midnight) */
12
+ cronExpression: string;
13
+ /** Job type to enqueue */
14
+ jobType: string;
15
+ /** Job payload (can be a function for dynamic payloads) */
16
+ payload?: unknown | (() => unknown | Promise<unknown>);
17
+ /** Enqueue options */
18
+ options?: types_d_exports.EnqueueOptions;
19
+ /** Timezone for cron evaluation (default: UTC) */
20
+ timezone?: string;
21
+ /** Whether the schedule is enabled */
22
+ enabled?: boolean;
23
+ /** Description */
24
+ description?: string;
25
+ }
26
+ /**
27
+ * Active scheduled job with next run time.
28
+ */
29
+ interface ActiveSchedule extends ScheduledJobConfig {
30
+ nextRun: Date | null;
31
+ lastRun: Date | null;
32
+ }
33
+ /**
34
+ * Job scheduler for recurring jobs.
35
+ */
36
+ declare class JobScheduler {
37
+ private readonly queue;
38
+ private readonly schedules;
39
+ private timer?;
40
+ private readonly checkIntervalMs;
41
+ constructor(queue: types_d_exports.JobQueue, options?: {
42
+ checkIntervalMs?: number;
43
+ });
44
+ /**
45
+ * Add a scheduled job.
46
+ */
47
+ schedule(config: ScheduledJobConfig): void;
48
+ /**
49
+ * Remove a scheduled job.
50
+ */
51
+ unschedule(name: string): boolean;
52
+ /**
53
+ * Enable a scheduled job.
54
+ */
55
+ enable(name: string): boolean;
56
+ /**
57
+ * Disable a scheduled job.
58
+ */
59
+ disable(name: string): boolean;
60
+ /**
61
+ * Get all schedules.
62
+ */
63
+ getSchedules(): ActiveSchedule[];
64
+ /**
65
+ * Get a specific schedule.
66
+ */
67
+ getSchedule(name: string): ActiveSchedule | undefined;
68
+ /**
69
+ * Start the scheduler.
70
+ */
71
+ start(): void;
72
+ /**
73
+ * Stop the scheduler.
74
+ */
75
+ stop(): void;
76
+ /**
77
+ * Check and enqueue due schedules.
78
+ */
79
+ private checkSchedules;
80
+ }
81
+ /**
82
+ * Create a job scheduler instance.
83
+ */
84
+ declare function createScheduler(queue: types_d_exports.JobQueue, options?: {
85
+ checkIntervalMs?: number;
86
+ }): JobScheduler;
87
+ /**
88
+ * Helper to define a scheduled job configuration.
89
+ */
90
+ declare function defineSchedule(config: ScheduledJobConfig): ScheduledJobConfig;
91
+ //#endregion
92
+ export { ActiveSchedule, JobScheduler, ScheduledJobConfig, createScheduler, defineSchedule };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lssm/lib.jobs",
3
- "version": "0.0.0-canary-20251217052941",
3
+ "version": "0.0.0-canary-20251217060433",
4
4
  "description": "Background jobs and scheduler module for ContractSpec applications",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -18,36 +18,36 @@
18
18
  "lint:check": "eslint src"
19
19
  },
20
20
  "dependencies": {
21
- "@lssm/lib.schema": "0.0.0-canary-20251217052941",
22
- "@lssm/lib.contracts": "0.0.0-canary-20251217052941",
23
- "@lssm/lib.logger": "0.0.0-canary-20251217052941",
21
+ "@lssm/lib.schema": "0.0.0-canary-20251217060433",
22
+ "@lssm/lib.contracts": "0.0.0-canary-20251217060433",
23
+ "@lssm/lib.logger": "0.0.0-canary-20251217060433",
24
24
  "@aws-sdk/client-sqs": "^3.948.0",
25
25
  "zod": "^4.1.13",
26
26
  "cron-parser": "^5.4.0"
27
27
  },
28
28
  "devDependencies": {
29
- "@lssm/tool.typescript": "0.0.0-canary-20251217052941",
30
- "@lssm/tool.tsdown": "0.0.0-canary-20251217052941",
29
+ "@lssm/tool.typescript": "0.0.0-canary-20251217060433",
30
+ "@lssm/tool.tsdown": "0.0.0-canary-20251217060433",
31
31
  "typescript": "^5.9.3"
32
32
  },
33
33
  "exports": {
34
- ".": "./src/index.ts",
35
- "./contracts": "./src/contracts/index.ts",
36
- "./entities": "./src/entities/index.ts",
37
- "./events": "./src/events.ts",
38
- "./handlers": "./src/handlers/index.ts",
39
- "./handlers/gmail-sync-handler": "./src/handlers/gmail-sync-handler.ts",
40
- "./handlers/ping-job": "./src/handlers/ping-job.ts",
41
- "./handlers/storage-document-handler": "./src/handlers/storage-document-handler.ts",
42
- "./jobs.feature": "./src/jobs.feature.ts",
43
- "./queue": "./src/queue/index.ts",
44
- "./queue/gcp-cloud-tasks": "./src/queue/gcp-cloud-tasks.ts",
45
- "./queue/gcp-pubsub": "./src/queue/gcp-pubsub.ts",
46
- "./queue/memory-queue": "./src/queue/memory-queue.ts",
47
- "./queue/register-defined-job": "./src/queue/register-defined-job.ts",
48
- "./queue/scaleway-sqs-queue": "./src/queue/scaleway-sqs-queue.ts",
49
- "./queue/types": "./src/queue/types.ts",
50
- "./scheduler": "./src/scheduler/index.ts",
34
+ ".": "./dist/index.js",
35
+ "./contracts": "./dist/contracts/index.js",
36
+ "./entities": "./dist/entities/index.js",
37
+ "./events": "./dist/events.js",
38
+ "./handlers": "./dist/handlers/index.js",
39
+ "./handlers/gmail-sync-handler": "./dist/handlers/gmail-sync-handler.js",
40
+ "./handlers/ping-job": "./dist/handlers/ping-job.js",
41
+ "./handlers/storage-document-handler": "./dist/handlers/storage-document-handler.js",
42
+ "./jobs.feature": "./dist/jobs.feature.js",
43
+ "./queue": "./dist/queue/index.js",
44
+ "./queue/gcp-cloud-tasks": "./dist/queue/gcp-cloud-tasks.js",
45
+ "./queue/gcp-pubsub": "./dist/queue/gcp-pubsub.js",
46
+ "./queue/memory-queue": "./dist/queue/memory-queue.js",
47
+ "./queue/register-defined-job": "./dist/queue/register-defined-job.js",
48
+ "./queue/scaleway-sqs-queue": "./dist/queue/scaleway-sqs-queue.js",
49
+ "./queue/types": "./dist/queue/types.js",
50
+ "./scheduler": "./dist/scheduler/index.js",
51
51
  "./*": "./*"
52
52
  },
53
53
  "module": "./dist/index.js",