@pangza/schedule 0.0.0-stage → 1.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.
- package/README.md +2 -2
- package/dist/ScheduleManager.d.ts +36 -0
- package/dist/ScheduleManager.d.ts.map +1 -0
- package/dist/ScheduleManager.js +135 -0
- package/dist/ScheduleManager.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -0
- package/package.json +36 -4
package/README.md
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @pangza/schedule
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
定时任务
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export interface ScheduleJobEntity {
|
|
2
|
+
id: string;
|
|
3
|
+
title?: string;
|
|
4
|
+
cron: string;
|
|
5
|
+
beanName: string;
|
|
6
|
+
status?: number | null;
|
|
7
|
+
}
|
|
8
|
+
/** 业务侧注入:加载启用中的定时任务列表 */
|
|
9
|
+
export type ScheduleJobLoader = () => ScheduleJobEntity[] | Promise<ScheduleJobEntity[]>;
|
|
10
|
+
export interface ScheduleModuleOptions {
|
|
11
|
+
loadJobs?: ScheduleJobLoader;
|
|
12
|
+
}
|
|
13
|
+
export declare function configureSchedule(options?: ScheduleModuleOptions): void;
|
|
14
|
+
/**
|
|
15
|
+
* Quartz 风格 Cron → node-cron:
|
|
16
|
+
* - 将 `?` 替换为 `*`
|
|
17
|
+
* - 6 段(含秒)原样交给 node-cron
|
|
18
|
+
*/
|
|
19
|
+
export declare function convertQuartzCron(cronExpr: string): string;
|
|
20
|
+
export declare function validateCron(cronExpr: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* 定时任务调度管理(node-cron)。
|
|
23
|
+
* 任务列表由业务通过 loadJobs 注入,framework 不依赖 business Service。
|
|
24
|
+
*/
|
|
25
|
+
declare class ScheduleManagerImpl {
|
|
26
|
+
private readonly jobs;
|
|
27
|
+
scheduleJob(entity: ScheduleJobEntity): void;
|
|
28
|
+
unschedule(id: string): void;
|
|
29
|
+
runOnce(beanName: string): Promise<void>;
|
|
30
|
+
loadEnabled(): Promise<void>;
|
|
31
|
+
}
|
|
32
|
+
export declare const ScheduleManager: ScheduleManagerImpl;
|
|
33
|
+
/** 启动后加载启用中的定时任务 */
|
|
34
|
+
export declare function initScheduleJobs(options?: ScheduleModuleOptions): Promise<void>;
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=ScheduleManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScheduleManager.d.ts","sourceRoot":"","sources":["../src/ScheduleManager.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,yBAAyB;AACzB,MAAM,MAAM,iBAAiB,GAAG,MAC5B,iBAAiB,EAAE,GACnB,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAEjC,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;CAC9B;AAID,wBAAgB,iBAAiB,CAAC,OAAO,GAAE,qBAA0B,GAAG,IAAI,CAI3E;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAS1D;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMrD;AAqBD;;;GAGG;AACH,cAAM,mBAAmB;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAoC;IAEzD,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAkC5C,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQtB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxC,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;CA0BnC;AAED,eAAO,MAAM,eAAe,qBAA4B,CAAC;AAEzD,oBAAoB;AACpB,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,qBAA0B,GAClC,OAAO,CAAC,IAAI,CAAC,CAKf"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ScheduleManager = void 0;
|
|
7
|
+
exports.configureSchedule = configureSchedule;
|
|
8
|
+
exports.convertQuartzCron = convertQuartzCron;
|
|
9
|
+
exports.validateCron = validateCron;
|
|
10
|
+
exports.initScheduleJobs = initScheduleJobs;
|
|
11
|
+
const node_cron_1 = __importDefault(require("node-cron"));
|
|
12
|
+
const Service_1 = require("@pangza/core/Service");
|
|
13
|
+
const orm_1 = require("@pangza/orm");
|
|
14
|
+
let jobLoader = null;
|
|
15
|
+
function configureSchedule(options = {}) {
|
|
16
|
+
if (options.loadJobs) {
|
|
17
|
+
jobLoader = options.loadJobs;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Quartz 风格 Cron → node-cron:
|
|
22
|
+
* - 将 `?` 替换为 `*`
|
|
23
|
+
* - 6 段(含秒)原样交给 node-cron
|
|
24
|
+
*/
|
|
25
|
+
function convertQuartzCron(cronExpr) {
|
|
26
|
+
const raw = String(cronExpr ?? "").trim();
|
|
27
|
+
if (!raw)
|
|
28
|
+
throw new orm_1.OrmError("Cron 表达式不能为空");
|
|
29
|
+
const converted = raw.replace(/\?/g, "*");
|
|
30
|
+
const parts = converted.split(/\s+/).filter(Boolean);
|
|
31
|
+
if (parts.length !== 5 && parts.length !== 6) {
|
|
32
|
+
throw new orm_1.OrmError(`Cron 表达式不合法:${cronExpr}`);
|
|
33
|
+
}
|
|
34
|
+
return parts.join(" ");
|
|
35
|
+
}
|
|
36
|
+
function validateCron(cronExpr) {
|
|
37
|
+
const expr = convertQuartzCron(cronExpr);
|
|
38
|
+
if (!node_cron_1.default.validate(expr)) {
|
|
39
|
+
throw new orm_1.OrmError(`Cron 表达式不合法:${cronExpr}`);
|
|
40
|
+
}
|
|
41
|
+
return expr;
|
|
42
|
+
}
|
|
43
|
+
async function invokeBean(beanName) {
|
|
44
|
+
if (!beanName?.trim()) {
|
|
45
|
+
throw new orm_1.OrmError("执行类(Bean 名称)不能为空");
|
|
46
|
+
}
|
|
47
|
+
if (!Service_1.Container.has(beanName)) {
|
|
48
|
+
throw new orm_1.OrmError(`未找到 Bean:${beanName}`);
|
|
49
|
+
}
|
|
50
|
+
const bean = Service_1.Container.get(beanName);
|
|
51
|
+
if (typeof bean?.execute === "function") {
|
|
52
|
+
await bean.execute();
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (typeof bean?.run === "function") {
|
|
56
|
+
await bean.run();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
throw new orm_1.OrmError(`Bean [${beanName}] 需实现 execute() 或 run()`);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 定时任务调度管理(node-cron)。
|
|
63
|
+
* 任务列表由业务通过 loadJobs 注入,framework 不依赖 business Service。
|
|
64
|
+
*/
|
|
65
|
+
class ScheduleManagerImpl {
|
|
66
|
+
constructor() {
|
|
67
|
+
this.jobs = new Map();
|
|
68
|
+
}
|
|
69
|
+
scheduleJob(entity) {
|
|
70
|
+
const id = String(entity.id);
|
|
71
|
+
this.unschedule(id);
|
|
72
|
+
if (entity.status == null || Number(entity.status) === 0) {
|
|
73
|
+
console.log(`[Schedule] 任务已停用,已从调度器移除 id=${id}`);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
const expr = validateCron(entity.cron);
|
|
77
|
+
const beanName = entity.beanName;
|
|
78
|
+
if (!Service_1.Container.has(beanName)) {
|
|
79
|
+
throw new orm_1.OrmError(`未找到 Bean:${beanName}`);
|
|
80
|
+
}
|
|
81
|
+
const task = node_cron_1.default.schedule(expr, () => {
|
|
82
|
+
void (async () => {
|
|
83
|
+
try {
|
|
84
|
+
console.log(`[Schedule] 触发任务 id=${id}, title=${entity.title ?? ""}, bean=${beanName}`);
|
|
85
|
+
await invokeBean(beanName);
|
|
86
|
+
}
|
|
87
|
+
catch (e) {
|
|
88
|
+
console.error(`[Schedule] 任务执行失败 id=${id}:`, e instanceof Error ? e.message : e);
|
|
89
|
+
}
|
|
90
|
+
})();
|
|
91
|
+
});
|
|
92
|
+
this.jobs.set(id, task);
|
|
93
|
+
console.log(`[Schedule] 已注册任务 id=${id}, cron=${expr}`);
|
|
94
|
+
}
|
|
95
|
+
unschedule(id) {
|
|
96
|
+
const task = this.jobs.get(String(id));
|
|
97
|
+
if (task) {
|
|
98
|
+
task.stop();
|
|
99
|
+
this.jobs.delete(String(id));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
async runOnce(beanName) {
|
|
103
|
+
await invokeBean(beanName);
|
|
104
|
+
}
|
|
105
|
+
async loadEnabled() {
|
|
106
|
+
if (!jobLoader) {
|
|
107
|
+
console.warn("[Schedule] 未配置 loadJobs,跳过初始化");
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
const list = await jobLoader();
|
|
112
|
+
for (const row of list) {
|
|
113
|
+
try {
|
|
114
|
+
this.scheduleJob(row);
|
|
115
|
+
}
|
|
116
|
+
catch (e) {
|
|
117
|
+
console.error(`[Schedule] 启动加载失败 id=${row.id}:`, e instanceof Error ? e.message : e);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
console.log(`[Schedule] 初始化完成,已加载 ${list.length} 个启用任务`);
|
|
121
|
+
}
|
|
122
|
+
catch (e) {
|
|
123
|
+
console.warn("[Schedule] 初始化跳过:", e instanceof Error ? e.message : e);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
exports.ScheduleManager = new ScheduleManagerImpl();
|
|
128
|
+
/** 启动后加载启用中的定时任务 */
|
|
129
|
+
async function initScheduleJobs(options = {}) {
|
|
130
|
+
if (options.loadJobs) {
|
|
131
|
+
configureSchedule(options);
|
|
132
|
+
}
|
|
133
|
+
await exports.ScheduleManager.loadEnabled();
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=ScheduleManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScheduleManager.js","sourceRoot":"","sources":["../src/ScheduleManager.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./ScheduleManager"), exports);
|
|
18
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,38 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pangza/schedule",
|
|
3
|
-
"version": "
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "定时任务",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"types": "./dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"require": "./dist/index.js",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./package.json": "./package.json",
|
|
14
|
+
"./*": {
|
|
15
|
+
"types": "./dist/*.d.ts",
|
|
16
|
+
"require": "./dist/*.js",
|
|
17
|
+
"default": "./dist/*.js"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist",
|
|
22
|
+
"README.md"
|
|
23
|
+
],
|
|
24
|
+
"scripts": {
|
|
25
|
+
"build": "tsc -p tsconfig.json",
|
|
26
|
+
"clean": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\""
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@pangza/core": "^1.0.1",
|
|
30
|
+
"node-cron": "^4.6.0"
|
|
31
|
+
},
|
|
32
|
+
"publishConfig": {
|
|
33
|
+
"access": "public"
|
|
34
|
+
},
|
|
35
|
+
"engines": {
|
|
36
|
+
"node": ">=18"
|
|
37
|
+
}
|
|
38
|
+
}
|