@x-9lab/xlab 1.5.2 → 1.5.4
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/@types/components/cron/index.d.ts +23 -0
- package/@types/global.d.ts +2 -0
- package/dist/@config/config.js +1 -0
- package/dist/components/cron/index.js +9 -6
- package/dist/dot-file.js +2 -1
- package/dist/router.js +25 -22
- package/dist/server.js +6 -4
- package/package.json +2 -2
|
@@ -1,7 +1,30 @@
|
|
|
1
|
+
declare global {
|
|
2
|
+
namespace XLab {
|
|
3
|
+
/**定时任务配置对象 */
|
|
4
|
+
interface IConfigCronItem {
|
|
5
|
+
/**定时任务执行间隔 */
|
|
6
|
+
delay?: number;
|
|
7
|
+
/**是否启用 */
|
|
8
|
+
enable?: boolean;
|
|
9
|
+
}
|
|
10
|
+
interface IConfig {
|
|
11
|
+
/**
|
|
12
|
+
* 定时任务配置
|
|
13
|
+
* @see `@components/cron`
|
|
14
|
+
*/
|
|
15
|
+
crons?: {
|
|
16
|
+
/**定时任务配置 */
|
|
17
|
+
[name: string]: IConfigCronItem;
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
1
22
|
/**定时任务模块 */
|
|
2
23
|
interface ICronJob {
|
|
3
24
|
/**定时任务 */
|
|
4
25
|
(): void;
|
|
26
|
+
/**定时任务 */
|
|
27
|
+
default?: () => void;
|
|
5
28
|
/**获取定时任务间隔时间 */
|
|
6
29
|
getDelay?: () => number;
|
|
7
30
|
/**获取定时任务开启状态 */
|
package/@types/global.d.ts
CHANGED
package/dist/@config/config.js
CHANGED
|
@@ -12,7 +12,6 @@ _export(exports, {
|
|
|
12
12
|
on: ()=>on,
|
|
13
13
|
kill: ()=>kill
|
|
14
14
|
});
|
|
15
|
-
const _common = require("../common");
|
|
16
15
|
const _utils = require("@x-drive/utils");
|
|
17
16
|
const _util = require("util");
|
|
18
17
|
const _path = /*#__PURE__*/ _interopRequireDefault(require("path"));
|
|
@@ -43,19 +42,23 @@ const config = getSysConfig("cron") || {
|
|
|
43
42
|
if (JOB_STATUS[name] === true) {
|
|
44
43
|
return;
|
|
45
44
|
}
|
|
46
|
-
var time = (0, _utils.
|
|
45
|
+
var time = (0, _utils.isExecutable)(mod.getDelay) ? mod.getDelay() : DEF_TIME;
|
|
47
46
|
if (isNaN(time)) {
|
|
48
47
|
logger.warn("[ %s ] Time Invalid.", name);
|
|
49
48
|
time = DEF_TIME;
|
|
50
49
|
}
|
|
51
|
-
|
|
50
|
+
const enable = (0, _utils.isExecutable)(mod.enable) ? mod.enable() === true : true;
|
|
52
51
|
if (!enable) {
|
|
53
52
|
return null;
|
|
54
53
|
}
|
|
55
54
|
if (!dont) {
|
|
56
55
|
JOB_STATUS[name] = true;
|
|
57
56
|
try {
|
|
58
|
-
|
|
57
|
+
if ((0, _utils.isExecutable)(mod)) {
|
|
58
|
+
mod();
|
|
59
|
+
} else if (mod.default && (0, _utils.isExecutable)(mod.default())) {
|
|
60
|
+
mod.default();
|
|
61
|
+
}
|
|
59
62
|
} catch (e) {
|
|
60
63
|
logger.error((0, _util.inspect)(e));
|
|
61
64
|
}
|
|
@@ -103,8 +106,8 @@ const config = getSysConfig("cron") || {
|
|
|
103
106
|
var stats = _fs.default.statSync(tmpPath);
|
|
104
107
|
if (stats.isFile()) {
|
|
105
108
|
var name = cron.replace(".js", "");
|
|
106
|
-
CRON_TIMERS[name] = fetch(
|
|
107
|
-
logger.info("
|
|
109
|
+
CRON_TIMERS[name] = fetch(require(_path.default.resolve(tmpPath)), name);
|
|
110
|
+
logger.info("[ %s ] %s.", name, CRON_TIMERS[name] ? "running" : "disabled");
|
|
108
111
|
}
|
|
109
112
|
}
|
|
110
113
|
}
|
package/dist/dot-file.js
CHANGED
|
@@ -7,6 +7,7 @@ Object.defineProperty(exports, "processDotFile", {
|
|
|
7
7
|
get: ()=>processDotFile
|
|
8
8
|
});
|
|
9
9
|
const _utils = require("@x-drive/utils");
|
|
10
|
+
const _nodeUtil = require("node:util");
|
|
10
11
|
const _path = /*#__PURE__*/ _interopRequireDefault(require("path"));
|
|
11
12
|
const _fs = /*#__PURE__*/ _interopRequireDefault(require("fs"));
|
|
12
13
|
function _interopRequireDefault(obj) {
|
|
@@ -35,7 +36,7 @@ function _interopRequireDefault(obj) {
|
|
|
35
36
|
}
|
|
36
37
|
} catch (e) {
|
|
37
38
|
if (e.code !== "ENOENT") {
|
|
38
|
-
logger.error(e);
|
|
39
|
+
logger.error((0, _nodeUtil.inspect)(e));
|
|
39
40
|
}
|
|
40
41
|
}
|
|
41
42
|
}
|
package/dist/router.js
CHANGED
|
@@ -91,28 +91,31 @@ function _interopRequireDefault(obj) {
|
|
|
91
91
|
api = buildApi(api.join("/"));
|
|
92
92
|
}
|
|
93
93
|
// 是对象则取对应的字段
|
|
94
|
-
if ((0, _utils.isObject)(mod)
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
apiPart.
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
mod
|
|
115
|
-
|
|
94
|
+
if ((0, _utils.isObject)(mod)) {
|
|
95
|
+
const subjectMod = mod;
|
|
96
|
+
if ((0, _utils.isFunction)(subjectMod.handler) || (0, _utils.isAsyncFunction)(subjectMod.handler)) {
|
|
97
|
+
modName = subjectMod.method || "get";
|
|
98
|
+
api = subjectMod.api || api;
|
|
99
|
+
apiPart = api.split("/");
|
|
100
|
+
if (apiPart[0] !== "") {
|
|
101
|
+
apiPart.unshift("");
|
|
102
|
+
}
|
|
103
|
+
// 如果没有声明忽略检测则保证接口一定是以 api 开头的
|
|
104
|
+
if (!subjectMod.ignoreApiNameCheck && !IS_API_REGEXP.test(api)) {
|
|
105
|
+
api = buildApi(api);
|
|
106
|
+
}
|
|
107
|
+
if ((0, _utils.isArray)(subjectMod.middleware)) {
|
|
108
|
+
mod = [
|
|
109
|
+
api,
|
|
110
|
+
...subjectMod.middleware,
|
|
111
|
+
subjectMod.handler
|
|
112
|
+
];
|
|
113
|
+
} else {
|
|
114
|
+
mod = [
|
|
115
|
+
api,
|
|
116
|
+
subjectMod.handler
|
|
117
|
+
];
|
|
118
|
+
}
|
|
116
119
|
}
|
|
117
120
|
}
|
|
118
121
|
var dirMws = [];
|
package/dist/server.js
CHANGED
|
@@ -121,15 +121,17 @@ app.use((0, _koaStatic.default)(_path.default.resolve(process.cwd(), _config.def
|
|
|
121
121
|
// 异常状态处理中间件
|
|
122
122
|
app.use(_badRequest.default);
|
|
123
123
|
if (_config.default.enableCron) {
|
|
124
|
-
|
|
125
|
-
|
|
124
|
+
if (_config.default.isMaster || _config.default.enableWorkerCron) {
|
|
125
|
+
// 定时任务
|
|
126
|
+
(0, _cron.on)(_path.default.resolve(process.cwd(), _defaultXConfig.default.businessDir, "cron"));
|
|
127
|
+
}
|
|
126
128
|
}
|
|
127
129
|
/**启动服务 */ function boot() {
|
|
128
130
|
(0, _cluster.default)();
|
|
129
131
|
process.on("uncaughtException", (err)=>{
|
|
130
|
-
logger.error(
|
|
132
|
+
logger.error(`uncaughtException:${err.message}\n`, err.stack);
|
|
131
133
|
}).on("unhandledRejection", (err)=>{
|
|
132
|
-
logger.error(
|
|
134
|
+
logger.error(`unhandledRejection:${err.message}\n`, err.stack);
|
|
133
135
|
});
|
|
134
136
|
}
|
|
135
137
|
/**退出服务 */ function exit() {
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@x-9lab/xlab",
|
|
3
|
-
"version": "1.5.
|
|
3
|
+
"version": "1.5.4",
|
|
4
4
|
"description": "9lab 服务端模块",
|
|
5
|
-
"versionDesc": "
|
|
5
|
+
"versionDesc": "日志信息输出优化",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"dev": "swc src -D ./src/bin --config-file .swcrc -d dist -w",
|
|
8
8
|
"compile": "swc src -D ./src/bin --config-file .swcrc -d dist",
|