@commandkit/tasks 1.2.0-rc.8 → 1.2.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 CHANGED
@@ -1,11 +1,21 @@
1
- Copyright 2025 Avraj Sahota
1
+ MIT License
2
2
 
3
- Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
4
- documentation files (the “Software”), to deal in the Software without restriction, including without limitation the
5
- rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
6
- persons to whom the Software is furnished to do so.
3
+ Copyright (c) Neplex
7
4
 
8
- THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
9
- WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
10
- COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
11
- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -174,7 +174,3 @@ setDriver(new BullMQDriver({
174
174
  port: 6379,
175
175
  }));
176
176
  ```
177
-
178
- ## License
179
-
180
- MIT
@@ -66,9 +66,8 @@ class BullMQDriver {
66
66
  * @returns A unique job identifier
67
67
  */
68
68
  async create(task) {
69
- const jobId = crypto.randomUUID();
69
+ const taskId = `${task.name}-${typeof task.schedule === 'string' ? 'scheduled' : crypto.randomUUID()}`;
70
70
  const job = await this.queue.add(task.name, task.data, {
71
- jobId,
72
71
  ...(typeof task.schedule === 'string'
73
72
  ? {
74
73
  repeat: {
@@ -82,8 +81,11 @@ class BullMQDriver {
82
81
  ? task.schedule.getTime()
83
82
  : task.schedule) - Date.now(),
84
83
  }),
84
+ jobId: taskId,
85
+ removeOnComplete: true,
86
+ removeOnFail: true,
85
87
  });
86
- return job.id ?? jobId;
88
+ return job.id ?? taskId;
87
89
  }
88
90
  /**
89
91
  * Deletes a scheduled task from BullMQ.
@@ -107,4 +109,4 @@ class BullMQDriver {
107
109
  }
108
110
  }
109
111
  exports.BullMQDriver = BullMQDriver;
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsbG1xLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RyaXZlcnMvYnVsbG1xLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLG1DQUEwRDtBQUcxRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQ0c7QUFDSCxNQUFhLFlBQVk7SUFTdkI7Ozs7O09BS0c7SUFDSCxZQUNFLFVBQTZCLEVBQ1osWUFBb0Isa0JBQWtCO1FBQXRDLGNBQVMsR0FBVCxTQUFTLENBQTZCO1FBaEJqRCxXQUFNLEdBQXNCLElBQUksQ0FBQztRQWtCdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGNBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBTSxDQUN0QixJQUFJLENBQUMsU0FBUyxFQUNkLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFFbEUsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNoQixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7Z0JBQ2QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO2dCQUNkLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUzthQUN6QixDQUFDLENBQUM7UUFDTCxDQUFDLEVBQ0QsRUFBRSxVQUFVLEVBQUUsQ0FDZixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFjO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNsQyxNQUFNLEdBQUcsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNyRCxLQUFLO1lBQ0wsR0FBRyxDQUFDLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRO2dCQUNuQyxDQUFDLENBQUM7b0JBQ0UsTUFBTSxFQUFFO3dCQUNOLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUTt3QkFDdEIsRUFBRSxFQUFFLElBQUksQ0FBQyxRQUFRO3dCQUNqQixXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTO3FCQUM5QjtpQkFDRjtnQkFDSCxDQUFDLENBQUM7b0JBQ0UsS0FBSyxFQUNILENBQUMsSUFBSSxDQUFDLFFBQVEsWUFBWSxJQUFJO3dCQUM1QixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUU7d0JBQ3pCLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRTtpQkFDbEMsQ0FBQztTQUNQLENBQUMsQ0FBQztRQUVILE9BQU8sR0FBRyxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUM7SUFDekIsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxNQUFNLENBQUMsVUFBa0I7UUFDcEMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFrQjtRQUMzQyxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0NBQ0Y7QUF4RkQsb0NBd0ZDIn0=
112
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsbG1xLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RyaXZlcnMvYnVsbG1xLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLG1DQUEwRDtBQUcxRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQ0c7QUFDSCxNQUFhLFlBQVk7SUFTdkI7Ozs7O09BS0c7SUFDSCxZQUNFLFVBQTZCLEVBQ1osWUFBb0Isa0JBQWtCO1FBQXRDLGNBQVMsR0FBVCxTQUFTLENBQTZCO1FBaEJqRCxXQUFNLEdBQXNCLElBQUksQ0FBQztRQWtCdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGNBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBTSxDQUN0QixJQUFJLENBQUMsU0FBUyxFQUNkLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFFbEUsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNoQixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7Z0JBQ2QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO2dCQUNkLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUzthQUN6QixDQUFDLENBQUM7UUFDTCxDQUFDLEVBQ0QsRUFBRSxVQUFVLEVBQUUsQ0FDZixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFjO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1FBQ3ZHLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3JELEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUTtnQkFDbkMsQ0FBQyxDQUFDO29CQUNFLE1BQU0sRUFBRTt3QkFDTixPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVE7d0JBQ3RCLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUTt3QkFDakIsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUztxQkFDOUI7aUJBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDO29CQUNFLEtBQUssRUFDSCxDQUFDLElBQUksQ0FBQyxRQUFRLFlBQVksSUFBSTt3QkFDNUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO3dCQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUU7aUJBQ2xDLENBQUM7WUFDTixLQUFLLEVBQUUsTUFBTTtZQUNiLGdCQUFnQixFQUFFLElBQUk7WUFDdEIsWUFBWSxFQUFFLElBQUk7U0FDbkIsQ0FBQyxDQUFDO1FBRUgsT0FBTyxHQUFHLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFrQjtRQUNwQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQWtCO1FBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQTFGRCxvQ0EwRkMifQ==
@@ -15,6 +15,7 @@ import { TaskData } from '../types';
15
15
  * setDriver(driver);
16
16
  */
17
17
  export declare class SQLiteDriver implements TaskDriver {
18
+ private pollingInterval;
18
19
  private runner;
19
20
  private db;
20
21
  private interval;
@@ -22,8 +23,19 @@ export declare class SQLiteDriver implements TaskDriver {
22
23
  /**
23
24
  * Create a new SQLiteDriver instance.
24
25
  * @param dbPath Path to the SQLite database file (default: './commandkit-tasks.db'). Use `:memory:` for an in-memory database.
26
+ * @param pollingInterval The interval in milliseconds to poll for jobs (default: 5_000).
25
27
  */
26
- constructor(dbPath?: string);
28
+ constructor(dbPath?: string, pollingInterval?: number);
29
+ /**
30
+ * Get the polling interval.
31
+ * @returns The polling interval in milliseconds.
32
+ */
33
+ getPollingInterval(): number;
34
+ /**
35
+ * Set the polling interval.
36
+ * @param pollingInterval The interval in milliseconds to poll for jobs.
37
+ */
38
+ setPollingInterval(pollingInterval: number): void;
27
39
  /**
28
40
  * Destroy the SQLite driver and stop the polling loop.
29
41
  */
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.SQLiteDriver = void 0;
7
7
  const node_sqlite_1 = require("node:sqlite");
8
8
  const cron_parser_1 = __importDefault(require("cron-parser"));
9
+ const commandkit_1 = require("commandkit");
9
10
  /**
10
11
  * SQLite-based persistent job queue manager for CommandKit tasks.
11
12
  *
@@ -24,13 +25,29 @@ class SQLiteDriver {
24
25
  /**
25
26
  * Create a new SQLiteDriver instance.
26
27
  * @param dbPath Path to the SQLite database file (default: './commandkit-tasks.db'). Use `:memory:` for an in-memory database.
28
+ * @param pollingInterval The interval in milliseconds to poll for jobs (default: 5_000).
27
29
  */
28
- constructor(dbPath = './commandkit-tasks.db') {
30
+ constructor(dbPath = './commandkit-tasks.db', pollingInterval = 5000) {
31
+ this.pollingInterval = pollingInterval;
29
32
  this.runner = null;
30
33
  this.interval = null;
31
34
  this.db = new node_sqlite_1.DatabaseSync(dbPath, { open: true });
32
35
  this.init();
33
36
  }
37
+ /**
38
+ * Get the polling interval.
39
+ * @returns The polling interval in milliseconds.
40
+ */
41
+ getPollingInterval() {
42
+ return this.pollingInterval;
43
+ }
44
+ /**
45
+ * Set the polling interval.
46
+ * @param pollingInterval The interval in milliseconds to poll for jobs.
47
+ */
48
+ setPollingInterval(pollingInterval) {
49
+ this.pollingInterval = pollingInterval;
50
+ }
34
51
  /**
35
52
  * Destroy the SQLite driver and stop the polling loop.
36
53
  */
@@ -66,6 +83,10 @@ class SQLiteDriver {
66
83
  /* sql */ `UPDATE jobs SET next_run = ?, last_run = ? WHERE id = ?`),
67
84
  updateCompleted: this.db.prepare(
68
85
  /* sql */ `UPDATE jobs SET status = 'completed', last_run = ? WHERE id = ?`),
86
+ findCronByName: this.db.prepare(
87
+ /* sql */ `SELECT id FROM jobs WHERE name = ? AND schedule_type = 'cron' AND status = 'pending'`),
88
+ deleteByName: this.db.prepare(
89
+ /* sql */ `DELETE FROM jobs WHERE name = ? AND schedule_type = 'cron'`),
69
90
  };
70
91
  this.startPolling();
71
92
  }
@@ -82,7 +103,7 @@ class SQLiteDriver {
82
103
  if (typeof schedule === 'string') {
83
104
  scheduleType = 'cron';
84
105
  scheduleValue = schedule;
85
- const interval = cron_parser_1.default.parseExpression(schedule, {
106
+ const interval = cron_parser_1.default.parse(schedule, {
86
107
  tz: timezone,
87
108
  });
88
109
  nextRun = interval.next().getTime();
@@ -92,12 +113,20 @@ class SQLiteDriver {
92
113
  scheduleValue = String(schedule);
93
114
  nextRun = typeof schedule === 'number' ? schedule : schedule.getTime();
94
115
  }
116
+ if (scheduleType === 'cron') {
117
+ const existingTask = this.statements.findCronByName.get(name);
118
+ if (existingTask) {
119
+ this.statements.deleteByName.run(name);
120
+ }
121
+ }
95
122
  const result = this.statements.insert.run(name, JSON.stringify(data ?? {}), scheduleType, scheduleValue, timezone ?? null, nextRun, Date.now());
96
- if (task.immediate) {
97
- await this.runner?.({
98
- name,
99
- data,
100
- timestamp: Date.now(),
123
+ if (task.immediate && scheduleType === 'cron') {
124
+ (0, commandkit_1.defer)(() => {
125
+ return this.runner?.({
126
+ name,
127
+ data,
128
+ timestamp: Date.now(),
129
+ });
101
130
  });
102
131
  }
103
132
  return result.lastInsertRowid.toString();
@@ -123,7 +152,7 @@ class SQLiteDriver {
123
152
  startPolling() {
124
153
  if (this.interval)
125
154
  clearInterval(this.interval);
126
- this.interval = setInterval(() => this.pollJobs(), 1000).unref();
155
+ this.interval = setInterval(() => this.pollJobs(), this.pollingInterval).unref();
127
156
  // Run immediately on startup
128
157
  this.pollJobs();
129
158
  }
@@ -162,7 +191,7 @@ class SQLiteDriver {
162
191
  if (job.schedule_type === 'cron') {
163
192
  let nextRun = null;
164
193
  try {
165
- const interval = cron_parser_1.default.parseExpression(job.schedule_value, {
194
+ const interval = cron_parser_1.default.parse(job.schedule_value, {
166
195
  tz: job.timezone || undefined,
167
196
  });
168
197
  // Find the next run after now
@@ -190,4 +219,4 @@ class SQLiteDriver {
190
219
  }
191
220
  }
192
221
  exports.SQLiteDriver = SQLiteDriver;
193
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsaXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RyaXZlcnMvc3FsaXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLDZDQUEwRDtBQUMxRCw4REFBcUM7QUFFckM7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQWEsWUFBWTtJQWF2Qjs7O09BR0c7SUFDSCxZQUFZLE1BQU0sR0FBRyx1QkFBdUI7UUFoQnBDLFdBQU0sR0FBc0IsSUFBSSxDQUFDO1FBRWpDLGFBQVEsR0FBMEIsSUFBSSxDQUFDO1FBZTdDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSwwQkFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNJLE9BQU87UUFDWixJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hCLElBQUksQ0FBQyxRQUFRLElBQUksYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxJQUFJO1FBQ1YsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDOzs7Ozs7Ozs7OztNQVdyQixDQUFDLENBQUM7UUFFSixJQUFJLENBQUMsVUFBVSxHQUFHO1lBQ2hCLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU87WUFDcEIsU0FBUyxDQUFDLCtFQUErRSxDQUMxRjtZQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU87WUFDckIsU0FBUyxDQUFDLHNHQUFzRyxDQUNqSDtZQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU87WUFDckIsU0FBUyxDQUFDLDhJQUE4SSxDQUN6SjtZQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9B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
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsaXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RyaXZlcnMvc3FsaXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLDZDQUEwRDtBQUMxRCw4REFBcUM7QUFDckMsMkNBQW1DO0FBRW5DOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFhLFlBQVk7SUFldkI7Ozs7T0FJRztJQUNILFlBQ0UsTUFBTSxHQUFHLHVCQUF1QixFQUN4QixrQkFBa0IsSUFBSztRQUF2QixvQkFBZSxHQUFmLGVBQWUsQ0FBUTtRQXJCekIsV0FBTSxHQUFzQixJQUFJLENBQUM7UUFFakMsYUFBUSxHQUEwQixJQUFJLENBQUM7UUFxQjdDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSwwQkFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxrQkFBa0IsQ0FBQyxlQUF1QjtRQUMvQyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1osSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssSUFBSTtRQUNWLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzs7Ozs7Ozs7Ozs7TUFXckIsQ0FBQyxDQUFDO1FBRUosSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPO1lBQ3BCLFNBQVMsQ0FBQywrRUFBK0UsQ0FDMUY7WUFDRCxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPO1lBQ3JCLFNBQVMsQ0FBQyxzR0FBc0csQ0FDakg7WUFDRCxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPO1lBQ3JCLFNBQVMsQ0FBQyw4SUFBOEksQ0FDeko7WUFDRCxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLCtCQUErQixDQUFDO1lBQ2xFLGFBQWEsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU87WUFDNUIsU0FBUyxDQUFDLHlEQUF5RCxDQUNwRTtZQUNELGVBQWUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU87WUFDOUIsU0FBUyxDQUFDLGlFQUFpRSxDQUM1RTtZQUNELGNBQWMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU87WUFDN0IsU0FBUyxDQUFDLHNGQUFzRixDQUNqRztZQUNELFlBQVksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU87WUFDM0IsU0FBUyxDQUFDLDREQUE0RCxDQUN2RTtTQUNGLENBQUM7UUFFRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLElBQWM7UUFDekIsTUFBTSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQztRQUNoRCxJQUFJLE9BQWUsQ0FBQztRQUNwQixJQUFJLFlBQW9CLENBQUM7UUFDekIsSUFBSSxhQUFxQixDQUFDO1FBRTFCLElBQUksT0FBTyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDakMsWUFBWSxHQUFHLE1BQU0sQ0FBQztZQUN0QixhQUFhLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLE1BQU0sUUFBUSxHQUFHLHFCQUFVLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRTtnQkFDMUMsRUFBRSxFQUFFLFFBQVE7YUFDYixDQUFDLENBQUM7WUFDSCxPQUFPLEdBQUcsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3RDLENBQUM7YUFBTSxDQUFDO1lBQ04sWUFBWSxHQUFHLE1BQU0sQ0FBQztZQUN0QixhQUFhLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2pDLE9BQU8sR0FBRyxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ3pFLENBQUM7UUFFRCxJQUFJLFlBQVksS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUM1QixNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUUvQyxDQUFDO1lBQ2QsSUFBSSxZQUFZLEVBQUUsQ0FBQztnQkFDakIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pDLENBQUM7UUFDSCxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUN2QyxJQUFJLEVBQ0osSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEVBQzFCLFlBQVksRUFDWixhQUFhLEVBQ2IsUUFBUSxJQUFJLElBQUksRUFDaEIsT0FBTyxFQUNQLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FDWCxDQUFDO1FBRUYsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLFlBQVksS0FBSyxNQUFNLEVBQUUsQ0FBQztZQUM5QyxJQUFBLGtCQUFLLEVBQUMsR0FBRyxFQUFFO2dCQUNULE9BQU8sSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO29CQUNuQixJQUFJO29CQUNKLElBQUk7b0JBQ0osU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7aUJBQ3RCLENBQUMsQ0FBQztZQUNMLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFrQjtRQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxhQUFhLENBQUMsTUFBa0I7UUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFlBQVk7UUFDbEIsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUFFLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsSUFBSSxDQUFDLFFBQVEsR0FBRyxXQUFXLENBQ3pCLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFDckIsSUFBSSxDQUFDLGVBQWUsQ0FDckIsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNWLDZCQUE2QjtRQUM3QixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssUUFBUTtRQUNkLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUFFLE9BQU87UUFDekIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVyQixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFzQixDQUFDO1FBQ3hFLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUM7UUFFcEMsSUFBSSxTQUFTLEtBQUssQ0FBQztZQUFFLE9BQU87UUFFNUIsS0FBSyxJQUFJLE1BQU0sR0FBRyxDQUFDLEVBQUUsTUFBTSxHQUFHLFNBQVMsRUFBRSxNQUFNLElBQUksU0FBUyxFQUFFLENBQUM7WUFDN0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQVc1RCxDQUFDO1lBRUgsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDdkIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FXeEI7UUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPO1FBQ3pCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztRQUMxQyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUM7WUFDaEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO1lBQ2QsSUFBSTtZQUNKLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFO1NBQ3RCLENBQUMsQ0FBQztRQUNILE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QixJQUFJLEdBQUcsQ0FBQyxhQUFhLEtBQUssTUFBTSxFQUFFLENBQUM7WUFDakMsSUFBSSxPQUFPLEdBQWtCLElBQUksQ0FBQztZQUNsQyxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxRQUFRLEdBQUcscUJBQVUsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLGNBQWMsRUFBRTtvQkFDcEQsRUFBRSxFQUFFLEdBQUcsQ0FBQyxRQUFRLElBQUksU0FBUztpQkFDOUIsQ0FBQyxDQUFDO2dCQUNILDhCQUE4QjtnQkFDOUIsT0FBTyxJQUFJLEVBQUUsQ0FBQztvQkFDWixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUM7b0JBQzVDLElBQUksU0FBUyxHQUFHLEdBQUcsRUFBRSxDQUFDO3dCQUNwQixPQUFPLEdBQUcsU0FBUyxDQUFDO3dCQUNwQixNQUFNO29CQUNSLENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNqQixDQUFDO1lBQ0QsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDWixJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDMUQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxVQUFVLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUF6UUQsb0NBeVFDIn0=
package/dist/plugin.d.ts CHANGED
@@ -16,6 +16,18 @@ export interface TasksPluginOptions {
16
16
  * @default true
17
17
  */
18
18
  initializeDefaultDriver?: boolean;
19
+ /**
20
+ * The polling interval for the default sqlite driver.
21
+ * Default is 5_000.
22
+ * @default 5_000
23
+ */
24
+ sqliteDriverPollingInterval?: number;
25
+ /**
26
+ * The path to the sqlite database file for the default sqlite driver.
27
+ * Default is './commandkit-tasks.db' but `:memory:` can be used for an in-memory database.
28
+ * @default './commandkit-tasks.db'
29
+ */
30
+ sqliteDriverDatabasePath?: string;
19
31
  }
20
32
  /**
21
33
  * CommandKit plugin that provides task management capabilities.
package/dist/plugin.js CHANGED
@@ -82,7 +82,7 @@ class TasksPlugin extends commandkit_1.RuntimePlugin {
82
82
  if (this.options.initializeDefaultDriver && !driver_manager_1.taskDriverManager.driver) {
83
83
  try {
84
84
  const { SQLiteDriver } = require('./drivers/sqlite');
85
- driver_manager_1.taskDriverManager.setDriver(new SQLiteDriver());
85
+ driver_manager_1.taskDriverManager.setDriver(new SQLiteDriver(this.options.sqliteDriverDatabasePath ?? './commandkit-tasks.db', this.options.sqliteDriverPollingInterval ?? 5000));
86
86
  }
87
87
  catch (e) {
88
88
  commandkit_1.Logger.error(`Failed to initialize the default driver for tasks plugin: ${e?.stack || e}`);
@@ -171,6 +171,8 @@ class TasksPlugin extends commandkit_1.RuntimePlugin {
171
171
  name: task.name,
172
172
  data: {},
173
173
  schedule: task.schedule,
174
+ immediate: task.immediate,
175
+ timezone: task.timezone,
174
176
  });
175
177
  }
176
178
  this.tasks.set(task.name, task);
@@ -204,14 +206,23 @@ class TasksPlugin extends commandkit_1.RuntimePlugin {
204
206
  if (!taskData || !(taskData instanceof task_1.Task))
205
207
  return;
206
208
  if (this.tasks.has(taskData.name)) {
207
- commandkit_1.Logger.info(`Reloading task: ${taskData.name}`);
208
- await driver_manager_1.taskDriverManager.deleteTask(taskData.name);
209
+ if (taskData.isCron()) {
210
+ commandkit_1.Logger.info(`Replacing cron task: ${taskData.name}`);
211
+ // For cron tasks, the SQLiteDriver.create() method will handle the replacement
212
+ // No need to manually delete the existing task
213
+ }
214
+ else {
215
+ commandkit_1.Logger.info(`Reloading task: ${taskData.name}`);
216
+ await driver_manager_1.taskDriverManager.deleteTask(taskData.name);
217
+ }
209
218
  this.tasks.set(taskData.name, taskData);
210
219
  if (taskData.schedule) {
211
220
  await driver_manager_1.taskDriverManager.createTask({
212
221
  name: taskData.name,
213
222
  data: {},
214
223
  schedule: taskData.schedule,
224
+ immediate: taskData.immediate,
225
+ timezone: taskData.timezone,
215
226
  });
216
227
  }
217
228
  }
@@ -223,10 +234,12 @@ class TasksPlugin extends commandkit_1.RuntimePlugin {
223
234
  name: taskData.name,
224
235
  data: {},
225
236
  schedule: taskData.schedule,
237
+ immediate: taskData.immediate,
238
+ timezone: taskData.timezone,
226
239
  });
227
240
  }
228
241
  }
229
242
  }
230
243
  }
231
244
  exports.TasksPlugin = TasksPlugin;
232
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FRb0I7QUFDcEIsK0NBQTJDO0FBQzNDLHVEQUF1QztBQUN2QyxpQ0FBOEI7QUFDOUIsK0NBQW1DO0FBQ25DLHFEQUFxRDtBQUNyRCx1Q0FBd0M7QUFDeEMscUNBQXFDO0FBb0JyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFhLFdBQVksU0FBUSwwQkFBaUM7SUFBbEU7O1FBQ0UsaUNBQWlDO1FBQ2pCLFNBQUksR0FBRyxPQUFPLENBQUM7UUFFL0IsK0RBQStEO1FBQy9DLFVBQUssR0FBRyxJQUFJLHVCQUFVLEVBQWdCLENBQUM7SUErTHpELENBQUM7SUE3TEM7Ozs7Ozs7OztPQVNHO0lBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUE0QjtRQUNoRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLElBQUksQ0FBQyxrQ0FBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0RSxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUNwQixPQUFPLENBQUMsa0JBQWtCLENBQXNDLENBQUM7Z0JBRW5FLGtDQUFpQixDQUFDLFNBQVMsQ0FBQyxJQUFJLFlBQVksRUFBRSxDQUFDLENBQUM7WUFDbEQsQ0FBQztZQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7Z0JBQ2hCLG1CQUFNLENBQUMsS0FBSyxDQUNWLDZEQUE2RCxDQUFDLEVBQUUsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUM3RSxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFFRCxrQ0FBaUIsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFO1lBQzdDLElBQUksQ0FBQztnQkFDSCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFD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
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3BsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FRb0I7QUFDcEIsK0NBQTJDO0FBQzNDLHVEQUF1QztBQUN2QyxpQ0FBOEI7QUFDOUIsK0NBQW1DO0FBQ25DLHFEQUFxRDtBQUNyRCx1Q0FBd0M7QUFDeEMscUNBQXFDO0FBZ0NyQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFhLFdBQVksU0FBUSwwQkFBaUM7SUFBbEU7O1FBQ0UsaUNBQWlDO1FBQ2pCLFNBQUksR0FBRyxPQUFPLENBQUM7UUFFL0IsK0RBQStEO1FBQy9DLFVBQUssR0FBRyxJQUFJLHVCQUFVLEVBQWdCLENBQUM7SUFnTnpELENBQUM7SUE5TUM7Ozs7Ozs7OztPQVNHO0lBQ0ksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUE0QjtRQUNoRCxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsdUJBQXVCLElBQUksQ0FBQyxrQ0FBaUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0RSxJQUFJLENBQUM7Z0JBQ0gsTUFBTSxFQUFFLFlBQVksRUFBRSxHQUNwQixPQUFPLENBQUMsa0JBQWtCLENBQXNDLENBQUM7Z0JBRW5FLGtDQUFpQixDQUFDLFNBQVMsQ0FDekIsSUFBSSxZQUFZLENBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsSUFBSSx1QkFBdUIsRUFDaEUsSUFBSSxDQUFDLE9BQU8sQ0FBQywyQkFBMkIsSUFBSSxJQUFLLENBQ2xELENBQ0YsQ0FBQztZQUNKLENBQUM7WUFBQyxPQUFPLENBQU0sRUFBRSxDQUFDO2dCQUNoQixtQkFBTSxDQUFDLEtBQUssQ0FDViw2REFBNkQsQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FDN0UsQ0FBQztZQUNKLENBQUM7UUFDSCxDQUFDO1FBRUQsa0NBQWlCLENBQUMsYUFB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
package/dist/task.d.ts CHANGED
@@ -13,7 +13,7 @@ import { TaskDefinition, TaskSchedule } from './types';
13
13
  *
14
14
  * export default task({
15
15
  * name: 'cleanup-old-data',
16
- * schedule: { type: 'cron', value: '0 2 * * *' }, // Daily at 2 AM
16
+ * schedule: '0 2 * * *', // Daily at 2 AM
17
17
  * async prepare(ctx) {
18
18
  * // Only run if there's old data to clean
19
19
  * return await hasOldData();
@@ -100,7 +100,7 @@ export declare class Task<T extends Record<string, any> = Record<string, any>> {
100
100
  * // Simple scheduled task
101
101
  * export default task({
102
102
  * name: 'daily-backup',
103
- * schedule: { type: 'cron', value: '0 0 * * *' },
103
+ * schedule: '0 0 * * *',
104
104
  * async execute(ctx) {
105
105
  * await performBackup();
106
106
  * },
package/dist/task.js CHANGED
@@ -15,7 +15,7 @@ exports.task = task;
15
15
  *
16
16
  * export default task({
17
17
  * name: 'cleanup-old-data',
18
- * schedule: { type: 'cron', value: '0 2 * * *' }, // Daily at 2 AM
18
+ * schedule: '0 2 * * *', // Daily at 2 AM
19
19
  * async prepare(ctx) {
20
20
  * // Only run if there's old data to clean
21
21
  * return await hasOldData();
@@ -42,7 +42,9 @@ class Task {
42
42
  * Only applicable to cron tasks, defaults to false.
43
43
  */
44
44
  get immediate() {
45
- return this.data.immediate ?? false;
45
+ if (this.isCron())
46
+ return !!this.data.immediate;
47
+ return false;
46
48
  }
47
49
  /**
48
50
  * The unique identifier for this task.
@@ -122,7 +124,7 @@ exports.Task = Task;
122
124
  * // Simple scheduled task
123
125
  * export default task({
124
126
  * name: 'daily-backup',
125
- * schedule: { type: 'cron', value: '0 0 * * *' },
127
+ * schedule: '0 0 * * *',
126
128
  * async execute(ctx) {
127
129
  * await performBackup();
128
130
  * },
@@ -135,4 +137,4 @@ exports.Task = Task;
135
137
  function task(data) {
136
138
  return new Task(data);
137
139
  }
138
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90YXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTBJQSxvQkFJQztBQTNJRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQWEsSUFBSTtJQUNmOzs7O09BSUc7SUFDSCxZQUEyQixJQUF1QjtRQUF2QixTQUFJLEdBQUosSUFBSSxDQUFtQjtJQUFHLENBQUM7SUFFdEQ7OztPQUdHO0lBQ0gsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQVcsSUFBSTtRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQztJQUNwQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU07UUFDWCxPQUFPLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxNQUFNO1FBQ1gsSUFBSSxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUk7WUFBRSxPQUFPLEtBQUssQ0FBQztRQUN4QyxPQUFPLElBQUksQ0FBQyxRQUFRLFlBQVksSUFBSSxJQUFJLE9BQU8sSUFBSSxDQUFDLFFBQVEsS0FBSyxRQUFRLENBQUM7SUFDNUUsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxJQUFJLFNBQVMsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQW1CO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFtQjtRQUN0QyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQy9CLENBQUM7Q0FDRjtBQW5GRCxvQkFtRkM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0F1Qkc7QUFDSCxTQUFnQixJQUFJLENBQ2xCLElBQXVCO0lBRXZCLE9BQU8sSUFBSSxJQUFJLENBQUksSUFBSSxDQUFDLENBQUM7QUFDM0IsQ0FBQyJ9
140
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFzay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy90YXNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTJJQSxvQkFJQztBQTVJRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXlCRztBQUNILE1BQWEsSUFBSTtJQUNmOzs7O09BSUc7SUFDSCxZQUEyQixJQUF1QjtRQUF2QixTQUFJLEdBQUosSUFBSSxDQUFtQjtJQUFHLENBQUM7SUFFdEQ7OztPQUdHO0lBQ0gsSUFBVyxTQUFTO1FBQ2xCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ2hELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUN4QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTTtRQUNYLE9BQU8sT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU07UUFDWCxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSTtZQUFFLE9BQU8sS0FBSyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLFFBQVEsWUFBWSxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQztJQUM1RSxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLElBQUksU0FBUyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBbUI7UUFDdEMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQW1CO1FBQ3RDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBcEZELG9CQW9GQztBQUVEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXVCRztBQUNILFNBQWdCLElBQUksQ0FDbEIsSUFBdUI7SUFFdkIsT0FBTyxJQUFJLElBQUksQ0FBSSxJQUFJLENBQUMsQ0FBQztBQUMzQixDQUFDIn0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@commandkit/tasks",
3
- "version": "1.2.0-rc.8",
3
+ "version": "1.2.0",
4
4
  "description": "Task management plugin for CommandKit",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -26,7 +26,7 @@
26
26
  ],
27
27
  "repository": {
28
28
  "type": "git",
29
- "url": "git+https://github.com/underctrl-io/commandkit.git",
29
+ "url": "git+https://github.com/neplextech/commandkit.git",
30
30
  "directory": "packages/tasks"
31
31
  },
32
32
  "keywords": [
@@ -39,17 +39,17 @@
39
39
  ],
40
40
  "license": "MIT",
41
41
  "bugs": {
42
- "url": "https://github.com/underctrl-io/commandkit/issues"
42
+ "url": "https://github.com/neplextech/commandkit/issues"
43
43
  },
44
- "homepage": "https://github.com/underctrl-io/commandkit#readme",
44
+ "homepage": "https://commandkit.dev",
45
45
  "devDependencies": {
46
- "bullmq": "^5.56.5",
47
- "typescript": "^5.8.3",
48
- "commandkit": "1.2.0-rc.8",
49
- "tsconfig": "0.0.0-rc.8"
46
+ "bullmq": "^5.70.1",
47
+ "typescript": "^5.9.3",
48
+ "commandkit": "1.2.0",
49
+ "tsconfig": "1.2.0"
50
50
  },
51
51
  "dependencies": {
52
- "cron-parser": "^4.9.0"
52
+ "cron-parser": "^5.5.0"
53
53
  },
54
54
  "scripts": {
55
55
  "check-types": "tsc --noEmit",