@commandkit/tasks 1.2.0-rc.11 → 1.2.0-rc.13
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/{COPYING.md → LICENSE.md} +3 -3
- package/dist/drivers/bullmq.js +8 -4
- package/dist/drivers/sqlite.d.ts +13 -1
- package/dist/drivers/sqlite.js +37 -8
- package/dist/plugin.d.ts +12 -0
- package/dist/plugin.js +17 -4
- package/dist/task.d.ts +2 -2
- package/dist/task.js +6 -4
- package/package.json +7 -7
|
@@ -639,8 +639,8 @@ attach them to the start of each source file to most effectively state
|
|
|
639
639
|
the exclusion of warranty; and each file should have at least the
|
|
640
640
|
"copyright" line and a pointer to where the full notice is found.
|
|
641
641
|
|
|
642
|
-
|
|
643
|
-
Copyright (C)
|
|
642
|
+
CommandKit is a discord.js metaframework
|
|
643
|
+
Copyright (C) 2026 Neplex
|
|
644
644
|
|
|
645
645
|
This program is free software: you can redistribute it and/or modify
|
|
646
646
|
it under the terms of the GNU General Public License as published by
|
|
@@ -661,7 +661,7 @@ mail.
|
|
|
661
661
|
If the program does terminal interaction, make it output a short
|
|
662
662
|
notice like this when it starts in an interactive mode:
|
|
663
663
|
|
|
664
|
-
|
|
664
|
+
CommandKit Copyright (C) 2026 Neplex
|
|
665
665
|
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
|
666
666
|
This is free software, and you are welcome to redistribute it
|
|
667
667
|
under certain conditions; type `show c' for details.
|
package/dist/drivers/bullmq.js
CHANGED
|
@@ -66,9 +66,8 @@ class BullMQDriver {
|
|
|
66
66
|
* @returns A unique job identifier
|
|
67
67
|
*/
|
|
68
68
|
async create(task) {
|
|
69
|
-
const
|
|
69
|
+
const taskId = `${task.name}-${typeof task.schedule === 'string' ? 'scheduled' : 'delayed'}`;
|
|
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,13 @@ class BullMQDriver {
|
|
|
82
81
|
? task.schedule.getTime()
|
|
83
82
|
: task.schedule) - Date.now(),
|
|
84
83
|
}),
|
|
84
|
+
jobId: taskId,
|
|
85
|
+
deduplication: {
|
|
86
|
+
id: taskId,
|
|
87
|
+
replace: true,
|
|
88
|
+
},
|
|
85
89
|
});
|
|
86
|
-
return job.id ??
|
|
90
|
+
return job.id ?? taskId;
|
|
87
91
|
}
|
|
88
92
|
/**
|
|
89
93
|
* Deletes a scheduled task from BullMQ.
|
|
@@ -107,4 +111,4 @@ class BullMQDriver {
|
|
|
107
111
|
}
|
|
108
112
|
}
|
|
109
113
|
exports.BullMQDriver = BullMQDriver;
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
114
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVsbG1xLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RyaXZlcnMvYnVsbG1xLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLG1DQUEwRDtBQUcxRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FnQ0c7QUFDSCxNQUFhLFlBQVk7SUFTdkI7Ozs7O09BS0c7SUFDSCxZQUNFLFVBQTZCLEVBQ1osWUFBb0Isa0JBQWtCO1FBQXRDLGNBQVMsR0FBVCxTQUFTLENBQTZCO1FBaEJqRCxXQUFNLEdBQXNCLElBQUksQ0FBQztRQWtCdkMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLGNBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUN2RCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksZUFBTSxDQUN0QixJQUFJLENBQUMsU0FBUyxFQUNkLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTTtnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLDhCQUE4QixDQUFDLENBQUM7WUFFbEUsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDO2dCQUNoQixJQUFJLEVBQUUsR0FBRyxDQUFDLElBQUk7Z0JBQ2QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO2dCQUNkLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUzthQUN6QixDQUFDLENBQUM7UUFDTCxDQUFDLEVBQ0QsRUFBRSxVQUFVLEVBQUUsQ0FDZixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7OztPQVFHO0lBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFjO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQzdGLE1BQU0sR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3JELEdBQUcsQ0FBQyxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssUUFBUTtnQkFDbkMsQ0FBQyxDQUFDO29CQUNFLE1BQU0sRUFBRTt3QkFDTixPQUFPLEVBQUUsSUFBSSxDQUFDLFFBQVE7d0JBQ3RCLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUTt3QkFDakIsV0FBVyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUztxQkFDOUI7aUJBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDO29CQUNFLEtBQUssRUFDSCxDQUFDLElBQUksQ0FBQyxRQUFRLFlBQVksSUFBSTt3QkFDNUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFO3dCQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUU7aUJBQ2xDLENBQUM7WUFDTixLQUFLLEVBQUUsTUFBTTtZQUNiLGFBQWEsRUFBRTtnQkFDYixFQUFFLEVBQUUsTUFBTTtnQkFDVixPQUFPLEVBQUUsSUFBSTthQUNkO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsT0FBTyxHQUFHLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksS0FBSyxDQUFDLE1BQU0sQ0FBQyxVQUFrQjtRQUNwQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFVBQVUsRUFBRSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQWtCO1FBQzNDLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQTVGRCxvQ0E0RkMifQ==
|
package/dist/drivers/sqlite.d.ts
CHANGED
|
@@ -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
|
*/
|
package/dist/drivers/sqlite.js
CHANGED
|
@@ -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
|
}
|
|
@@ -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
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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(),
|
|
155
|
+
this.interval = setInterval(() => this.pollJobs(), this.pollingInterval).unref();
|
|
127
156
|
// Run immediately on startup
|
|
128
157
|
this.pollJobs();
|
|
129
158
|
}
|
|
@@ -190,4 +219,4 @@ class SQLiteDriver {
|
|
|
190
219
|
}
|
|
191
220
|
}
|
|
192
221
|
exports.SQLiteDriver = SQLiteDriver;
|
|
193
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
222
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FsaXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2RyaXZlcnMvc3FsaXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLDZDQUEwRDtBQUMxRCw4REFBcUM7QUFDckMsMkNBQW1DO0FBRW5DOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFhLFlBQVk7SUFldkI7Ozs7T0FJRztJQUNILFlBQ0UsTUFBTSxHQUFHLHVCQUF1QixFQUN4QixrQkFBa0IsSUFBSztRQUF2QixvQkFBZSxHQUFmLGVBQWUsQ0FBUTtRQXJCekIsV0FBTSxHQUFzQixJQUFJLENBQUM7UUFFakMsYUFBUSxHQUEwQixJQUFJLENBQUM7UUFxQjdDLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSwwQkFBWSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ25ELElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFRDs7O09BR0c7SUFDSSxrQkFBa0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzlCLENBQUM7SUFFRDs7O09BR0c7SUFDSSxrQkFBa0IsQ0FBQyxlQUF1QjtRQUMvQyxJQUFJLENBQUMsZUFBZSxHQUFHLGVBQWUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxPQUFPO1FBQ1osSUFBSSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNoQixJQUFJLENBQUMsUUFBUSxJQUFJLGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssSUFBSTtRQUNWLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzs7Ozs7Ozs7Ozs7TUFXckIsQ0FBQyxDQUFDO1FBRUosSUFBSSxDQUFDLFVBQVUsR0FBRztZQUNoQixLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxP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
|
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
|
-
|
|
208
|
-
|
|
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,
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
-
|
|
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:
|
|
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,
|
|
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.
|
|
3
|
+
"version": "1.2.0-rc.13",
|
|
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/
|
|
29
|
+
"url": "git+https://github.com/neplextech/commandkit.git",
|
|
30
30
|
"directory": "packages/tasks"
|
|
31
31
|
},
|
|
32
32
|
"keywords": [
|
|
@@ -39,14 +39,14 @@
|
|
|
39
39
|
],
|
|
40
40
|
"license": "GPL-3.0-only",
|
|
41
41
|
"bugs": {
|
|
42
|
-
"url": "https://github.com/
|
|
42
|
+
"url": "https://github.com/neplextech/commandkit/issues"
|
|
43
43
|
},
|
|
44
|
-
"homepage": "https://github.com/
|
|
44
|
+
"homepage": "https://github.com/neplextech/commandkit#readme",
|
|
45
45
|
"devDependencies": {
|
|
46
46
|
"bullmq": "^5.56.5",
|
|
47
|
-
"typescript": "^5.
|
|
48
|
-
"
|
|
49
|
-
"
|
|
47
|
+
"typescript": "^5.9.3",
|
|
48
|
+
"tsconfig": "0.0.0-rc.13",
|
|
49
|
+
"commandkit": "1.2.0-rc.13"
|
|
50
50
|
},
|
|
51
51
|
"dependencies": {
|
|
52
52
|
"cron-parser": "^4.9.0"
|