@x-9lab/xlab 1.6.1 → 2.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/@types/cluster.d.ts +15 -3
- package/@types/components/common/index.d.ts +1 -2
- package/@types/components/cron/index.d.ts +4 -4
- package/@types/components/log/index.d.ts +37 -2
- package/@types/config/index.d.ts +9 -5
- package/@types/custom.d.ts +25 -3
- package/@types/dot-file.d.ts +6 -0
- package/@types/global.d.ts +44 -56
- package/@types/index.d.ts +18 -0
- package/@types/init-env.d.ts +3 -1
- package/@types/middleware/handle-pre-dir.d.ts +1 -5
- package/@types/middleware/request-filter.d.ts +0 -1
- package/@types/middleware/service-mark.d.ts +1 -6
- package/@types/router.d.ts +25 -0
- package/@types/server.d.ts +28 -6
- package/MIGRATION.md +182 -0
- package/README.md +105 -86
- package/dist/@config/config.dev.js +7 -3
- package/dist/@config/config.js +7 -4
- package/dist/@config/config.sand.js +7 -3
- package/dist/bin/watch.js +36 -16
- package/dist/cluster.js +121 -44
- package/dist/components/assets/index.js +9 -5
- package/dist/components/cluster/index.js +17 -4
- package/dist/components/common/index.js +65 -45
- package/dist/components/cron/index.js +50 -27
- package/dist/components/header/index.js +32 -17
- package/dist/components/header/time.js +6 -2
- package/dist/components/index.js +1 -1
- package/dist/components/log/index.js +91 -87
- package/dist/components/mime/index.js +6 -2
- package/dist/components/return-code/index.js +33 -18
- package/dist/components/uuid/index.js +22 -13
- package/dist/config/getEnv.js +9 -5
- package/dist/config/index.js +98 -66
- package/dist/config/process-custom-config-files.js +26 -22
- package/dist/config/process-def-config-file.js +15 -11
- package/dist/custom.js +77 -28
- package/dist/default-x-config.js +9 -5
- package/dist/dot-file.js +42 -17
- package/dist/global.js +37 -31
- package/dist/index.js +100 -0
- package/dist/init-env.js +17 -9
- package/dist/middleware/@bin/html-filter.js +19 -7
- package/dist/middleware/bad-request.js +12 -8
- package/dist/middleware/compress.js +11 -7
- package/dist/middleware/cors.js +20 -7
- package/dist/middleware/fresh-filter.js +13 -7
- package/dist/middleware/handle-pre-dir.js +22 -17
- package/dist/middleware/request-filter.js +39 -25
- package/dist/middleware/service-mark.js +22 -25
- package/dist/middlewares.js +22 -20
- package/dist/router.js +174 -141
- package/dist/server.js +202 -93
- package/package.json +25 -29
- package/@types/business/utils/cookie/1.1.0/clean/index.d.ts +0 -3
- package/@types/business/utils/cookie/1.1.0/clean/js/index.d.ts +0 -2
- package/@types/components/cache/index.d.ts +0 -2
- package/@types/components/cache/lru.d.ts +0 -21
- package/@types/components/html-processor/index.d.ts +0 -9
- package/@types/components/injection/index.d.ts +0 -25
- package/@types/components/js-processor/index.d.ts +0 -5
- package/@types/components/md5/index.d.ts +0 -2
- package/@types/components/platform/index.d.ts +0 -21
- package/@types/components/proxy/index.d.ts +0 -26
- package/@types/components/querystring/index.d.ts +0 -25
- package/@types/components/redirect/index.d.ts +0 -11
- package/@types/components/request/helper.d.ts +0 -3
- package/@types/components/request/index.d.ts +0 -51
- package/@types/components/request/resolve-uri.d.ts +0 -6
- package/@types/components/version/index.d.ts +0 -26
- package/@types/env.d.ts +0 -1
|
@@ -2,10 +2,15 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
Object.defineProperty(exports, "get", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return get;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
12
|
+
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
13
|
+
function _interop_require_default(obj) {
|
|
9
14
|
return obj && obj.__esModule ? obj : {
|
|
10
15
|
default: obj
|
|
11
16
|
};
|
|
@@ -26,4 +31,3 @@ try {
|
|
|
26
31
|
*/ function get(name) {
|
|
27
32
|
return ASSETS[name] || null;
|
|
28
33
|
}
|
|
29
|
-
exports.get = get;
|
|
@@ -2,7 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get add () {
|
|
13
|
+
return add;
|
|
14
|
+
},
|
|
15
|
+
get del () {
|
|
16
|
+
return del;
|
|
17
|
+
},
|
|
18
|
+
get get () {
|
|
19
|
+
return get;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
6
22
|
/**
|
|
7
23
|
* 消息注册存储对象
|
|
8
24
|
*/ const MSG_HANDLERS = {};
|
|
@@ -28,6 +44,3 @@ exports.del = exports.add = exports.get = void 0;
|
|
|
28
44
|
*/ function del(cmd) {
|
|
29
45
|
delete MSG_HANDLERS[cmd];
|
|
30
46
|
}
|
|
31
|
-
exports.get = get;
|
|
32
|
-
exports.add = add;
|
|
33
|
-
exports.del = del;
|
|
@@ -2,38 +2,70 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get asciiTobase64 () {
|
|
13
|
+
return asciiTobase64;
|
|
14
|
+
},
|
|
15
|
+
get base64Toascii () {
|
|
16
|
+
return base64Toascii;
|
|
17
|
+
},
|
|
18
|
+
get checkFileStat () {
|
|
19
|
+
return checkFileStat;
|
|
20
|
+
},
|
|
21
|
+
get fix0 () {
|
|
20
22
|
return _utils.fix0;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
get
|
|
23
|
+
},
|
|
24
|
+
get formatJson () {
|
|
25
|
+
return formatJson;
|
|
26
|
+
},
|
|
27
|
+
get getMD5 () {
|
|
28
|
+
return getMD5;
|
|
29
|
+
},
|
|
30
|
+
get getRealDefaultMod () {
|
|
31
|
+
return getRealDefaultMod;
|
|
32
|
+
},
|
|
33
|
+
get labelReplace () {
|
|
34
|
+
return _utils.labelReplace;
|
|
35
|
+
},
|
|
36
|
+
get md5 () {
|
|
37
|
+
return md5;
|
|
38
|
+
},
|
|
39
|
+
get numberFormat () {
|
|
26
40
|
return _utils.numberFormat;
|
|
41
|
+
},
|
|
42
|
+
get object2Array () {
|
|
43
|
+
return object2Array;
|
|
44
|
+
},
|
|
45
|
+
get params () {
|
|
46
|
+
return params;
|
|
47
|
+
},
|
|
48
|
+
get responseResult () {
|
|
49
|
+
return responseResult;
|
|
50
|
+
},
|
|
51
|
+
get sleep () {
|
|
52
|
+
return _utils.sleep;
|
|
53
|
+
},
|
|
54
|
+
get toJsonp () {
|
|
55
|
+
return toJsonp;
|
|
56
|
+
},
|
|
57
|
+
get walk () {
|
|
58
|
+
return walk;
|
|
27
59
|
}
|
|
28
60
|
});
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
function
|
|
61
|
+
const _utils = require("@x-drive/utils");
|
|
62
|
+
const _returncode = require("../return-code");
|
|
63
|
+
const _log = require("../log");
|
|
64
|
+
const _querystring = /*#__PURE__*/ _interop_require_default(require("querystring"));
|
|
65
|
+
const _crypto = /*#__PURE__*/ _interop_require_default(require("crypto"));
|
|
66
|
+
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
67
|
+
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
68
|
+
function _interop_require_default(obj) {
|
|
37
69
|
return obj && obj.__esModule ? obj : {
|
|
38
70
|
default: obj
|
|
39
71
|
};
|
|
@@ -41,7 +73,7 @@ function _interopRequireDefault(obj) {
|
|
|
41
73
|
var logger;
|
|
42
74
|
function checkLogger() {
|
|
43
75
|
if (!logger) {
|
|
44
|
-
logger =
|
|
76
|
+
logger = _log.globalLog.getLogger("common");
|
|
45
77
|
}
|
|
46
78
|
return logger;
|
|
47
79
|
}
|
|
@@ -84,7 +116,7 @@ function checkLogger() {
|
|
|
84
116
|
* @param msg 返回的提示性信息
|
|
85
117
|
* @return 数据对象
|
|
86
118
|
*/ function responseResult(status, result, msg) {
|
|
87
|
-
var code = (0, _utils
|
|
119
|
+
var code = (0, _utils.isObject)(status) ? status : (0, _returncode.getReturnCode)(status);
|
|
88
120
|
var dat = {
|
|
89
121
|
"success": code.errorcode === 0,
|
|
90
122
|
"code": code.errorcode,
|
|
@@ -103,9 +135,9 @@ function checkLogger() {
|
|
|
103
135
|
return _crypto.default.createHash("md5").update(JSON.stringify(conditions), "utf8").digest("hex");
|
|
104
136
|
}
|
|
105
137
|
/**将一个输入字符串转为 md5 */ function md5(str) {
|
|
106
|
-
var
|
|
107
|
-
|
|
108
|
-
return
|
|
138
|
+
var md5 = _crypto.default.createHash("md5");
|
|
139
|
+
md5.update(str);
|
|
140
|
+
return md5.digest("hex");
|
|
109
141
|
}
|
|
110
142
|
/**
|
|
111
143
|
* 对象值转化为数组
|
|
@@ -186,15 +218,3 @@ function checkLogger() {
|
|
|
186
218
|
}
|
|
187
219
|
return mod;
|
|
188
220
|
}
|
|
189
|
-
exports.asciiTobase64 = asciiTobase64;
|
|
190
|
-
exports.base64Toascii = base64Toascii;
|
|
191
|
-
exports.params = params;
|
|
192
|
-
exports.responseResult = responseResult;
|
|
193
|
-
exports.getMD5 = getMD5;
|
|
194
|
-
exports.md5 = md5;
|
|
195
|
-
exports.object2Array = object2Array;
|
|
196
|
-
exports.formatJson = formatJson;
|
|
197
|
-
exports.toJsonp = toJsonp;
|
|
198
|
-
exports.walk = walk;
|
|
199
|
-
exports.checkFileStat = checkFileStat;
|
|
200
|
-
exports.getRealDefaultMod = getRealDefaultMod;
|
|
@@ -2,27 +2,58 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get kill () {
|
|
13
|
+
return kill;
|
|
14
|
+
},
|
|
15
|
+
get on () {
|
|
16
|
+
return on;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _utils = require("@x-drive/utils");
|
|
20
|
+
const _log = require("../log");
|
|
21
|
+
const _config = require("../../config");
|
|
22
|
+
const _util = require("util");
|
|
23
|
+
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
24
|
+
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
25
|
+
function _interop_require_default(obj) {
|
|
11
26
|
return obj && obj.__esModule ? obj : {
|
|
12
27
|
default: obj
|
|
13
28
|
};
|
|
14
29
|
}
|
|
15
|
-
const logger =
|
|
16
|
-
const config = getSysConfig("cron") || {
|
|
17
|
-
"def": 60
|
|
18
|
-
};
|
|
19
|
-
/**
|
|
20
|
-
* 默认间隔时间
|
|
21
|
-
*/ const DEF_TIME = config.def * 1000;
|
|
30
|
+
const logger = _log.globalLog.getLogger("cron");
|
|
22
31
|
/**
|
|
23
32
|
* 计时器对象
|
|
24
33
|
*/ var CRON_TIMERS = {};
|
|
25
34
|
/**任务执行状态, 确保同时只会有一个定时任务在执行 */ const JOB_STATUS = {};
|
|
35
|
+
/**获取任务间隔时间(毫秒): 系统配置 crons[name].delay(秒) > 模块 getDelay()(毫秒) > cron.def(秒) */ function getJobDelay(mod, name) {
|
|
36
|
+
const sysConf = (0, _config.get)();
|
|
37
|
+
const jobConf = (sysConf.crons || {})[name] || {};
|
|
38
|
+
const defTime = (sysConf.cron && sysConf.cron.def || 60) * 1000;
|
|
39
|
+
if ((0, _utils.isNumber)(jobConf.delay) && jobConf.delay > 0) {
|
|
40
|
+
return jobConf.delay * 1000;
|
|
41
|
+
}
|
|
42
|
+
var time = (0, _utils.isExecutable)(mod.getDelay) ? mod.getDelay() : defTime;
|
|
43
|
+
// 非法或非正数的间隔一律回退默认值, 防止 0 间隔空转
|
|
44
|
+
if (isNaN(time) || time <= 0) {
|
|
45
|
+
logger.warn("[ %s ] Time Invalid.", name);
|
|
46
|
+
time = defTime;
|
|
47
|
+
}
|
|
48
|
+
return time;
|
|
49
|
+
}
|
|
50
|
+
/**获取任务启用状态: 系统配置 crons[name].enable > 模块 enable() */ function isJobEnabled(mod, name) {
|
|
51
|
+
const jobConf = ((0, _config.get)().crons || {})[name] || {};
|
|
52
|
+
if ((0, _utils.isBoolean)(jobConf.enable)) {
|
|
53
|
+
return jobConf.enable;
|
|
54
|
+
}
|
|
55
|
+
return (0, _utils.isExecutable)(mod.enable) ? mod.enable() === true : true;
|
|
56
|
+
}
|
|
26
57
|
/**
|
|
27
58
|
* 定时刷新函数
|
|
28
59
|
* @param mod 模块对象
|
|
@@ -33,25 +64,20 @@ const config = getSysConfig("cron") || {
|
|
|
33
64
|
if (JOB_STATUS[name] === true) {
|
|
34
65
|
return;
|
|
35
66
|
}
|
|
36
|
-
|
|
37
|
-
if (
|
|
38
|
-
logger.warn("[ %s ] Time Invalid.", name);
|
|
39
|
-
time = DEF_TIME;
|
|
40
|
-
}
|
|
41
|
-
const enable = (0, _utils).isExecutable(mod.enable) ? mod.enable() === true : true;
|
|
42
|
-
if (!enable) {
|
|
67
|
+
const time = getJobDelay(mod, name);
|
|
68
|
+
if (!isJobEnabled(mod, name)) {
|
|
43
69
|
return null;
|
|
44
70
|
}
|
|
45
71
|
if (!dont) {
|
|
46
72
|
JOB_STATUS[name] = true;
|
|
47
73
|
try {
|
|
48
|
-
if ((0, _utils
|
|
74
|
+
if ((0, _utils.isExecutable)(mod)) {
|
|
49
75
|
mod();
|
|
50
|
-
} else if (
|
|
76
|
+
} else if ((0, _utils.isExecutable)(mod.default)) {
|
|
51
77
|
mod.default();
|
|
52
78
|
}
|
|
53
79
|
} catch (e) {
|
|
54
|
-
logger.error((0, _util
|
|
80
|
+
logger.error((0, _util.inspect)(e));
|
|
55
81
|
}
|
|
56
82
|
JOB_STATUS[name] = false;
|
|
57
83
|
}
|
|
@@ -81,7 +107,6 @@ const config = getSysConfig("cron") || {
|
|
|
81
107
|
dirStat = _fs.default.accessSync(cronPath, _fs.default.constants.F_OK);
|
|
82
108
|
} catch (e) {
|
|
83
109
|
dirStat = true;
|
|
84
|
-
logger.warn((0, _util).inspect(e));
|
|
85
110
|
}
|
|
86
111
|
// accessSync 在文件不存在的时候才会返回内容
|
|
87
112
|
if (dirStat) {
|
|
@@ -103,7 +128,7 @@ const config = getSysConfig("cron") || {
|
|
|
103
128
|
}
|
|
104
129
|
}
|
|
105
130
|
} catch (err) {
|
|
106
|
-
logger.error((0, _util
|
|
131
|
+
logger.error((0, _util.inspect)(err));
|
|
107
132
|
}
|
|
108
133
|
console.log("");
|
|
109
134
|
}
|
|
@@ -121,5 +146,3 @@ const config = getSysConfig("cron") || {
|
|
|
121
146
|
});
|
|
122
147
|
}
|
|
123
148
|
}
|
|
124
|
-
exports.on = on;
|
|
125
|
-
exports.kill = kill;
|
|
@@ -2,23 +2,42 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get cacheControl () {
|
|
13
|
+
return cacheControl;
|
|
14
|
+
},
|
|
15
|
+
get contentType () {
|
|
16
|
+
return contentType;
|
|
17
|
+
},
|
|
18
|
+
get expire () {
|
|
19
|
+
return expire;
|
|
20
|
+
},
|
|
21
|
+
get lastModified () {
|
|
22
|
+
return lastModified;
|
|
23
|
+
}
|
|
24
|
+
});
|
|
25
|
+
const _utils = require("@x-drive/utils");
|
|
26
|
+
const _time = require("./time");
|
|
27
|
+
const _mime = require("../mime");
|
|
9
28
|
/**
|
|
10
29
|
* 设置 Cache-Control
|
|
11
30
|
* @param options max-age 缓存时间
|
|
12
31
|
* @param res 请求上下文
|
|
13
32
|
*/ function cacheControl(options, res) {
|
|
14
33
|
var age;
|
|
15
|
-
if ((0, _utils
|
|
34
|
+
if ((0, _utils.isString)(options)) {
|
|
16
35
|
if (options.indexOf("max-age") === -1) {
|
|
17
36
|
age = options;
|
|
18
37
|
} else {
|
|
19
|
-
age = "max-age=" + (0, _time
|
|
38
|
+
age = "max-age=" + (0, _time.string2seconds)(options);
|
|
20
39
|
}
|
|
21
|
-
} else if ((0, _utils
|
|
40
|
+
} else if ((0, _utils.isNumber)(options)) {
|
|
22
41
|
age = "max-age=" + options;
|
|
23
42
|
}
|
|
24
43
|
if (age) {
|
|
@@ -31,9 +50,9 @@ var _mime = require("../mime");
|
|
|
31
50
|
* @param res 请求上下文
|
|
32
51
|
*/ function expire(options, res) {
|
|
33
52
|
var exp;
|
|
34
|
-
if ((0, _utils
|
|
35
|
-
exp = new Date(Date.now() + (0, _time
|
|
36
|
-
} else if ((0, _utils
|
|
53
|
+
if ((0, _utils.isString)(options)) {
|
|
54
|
+
exp = new Date(Date.now() + (0, _time.string2seconds)(options) * 1000);
|
|
55
|
+
} else if ((0, _utils.isNumber)(options)) {
|
|
37
56
|
exp = new Date(Date.now() + options * 1000);
|
|
38
57
|
}
|
|
39
58
|
if (exp) {
|
|
@@ -46,7 +65,7 @@ var _mime = require("../mime");
|
|
|
46
65
|
* @param res 请求上下文
|
|
47
66
|
*/ function contentType(options, res) {
|
|
48
67
|
var type;
|
|
49
|
-
if ((0, _utils
|
|
68
|
+
if ((0, _utils.isString)(options)) {
|
|
50
69
|
type = _mime.MIME[options];
|
|
51
70
|
}
|
|
52
71
|
if (type) {
|
|
@@ -58,10 +77,6 @@ var _mime = require("../mime");
|
|
|
58
77
|
* @param options 最后更新时间,传入非 String 类型时会使用当前时间
|
|
59
78
|
* @param res 请求上下文
|
|
60
79
|
*/ function lastModified(options, res) {
|
|
61
|
-
var time = (0, _utils
|
|
62
|
-
res.set(
|
|
80
|
+
var time = (0, _utils.isString)(options) ? options : new Date().toUTCString();
|
|
81
|
+
res.set('Last-Modified', time);
|
|
63
82
|
}
|
|
64
|
-
exports.cacheControl = cacheControl;
|
|
65
|
-
exports.expire = expire;
|
|
66
|
-
exports.contentType = contentType;
|
|
67
|
-
exports.lastModified = lastModified;
|
|
@@ -2,7 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports
|
|
5
|
+
Object.defineProperty(exports, "string2seconds", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return string2seconds;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
6
11
|
/**一年的秒数 */ const YEAR_SEC = 365 * 24 * 60 * 60;
|
|
7
12
|
/**一月的秒数 */ const MONTH_SEC = 30 * 24 * 60 * 60;
|
|
8
13
|
/**一天的秒数 */ const DAY_SEC = 24 * 60 * 60;
|
|
@@ -32,4 +37,3 @@ exports.string2seconds = void 0;
|
|
|
32
37
|
}
|
|
33
38
|
return sec;
|
|
34
39
|
}
|
|
35
|
-
exports.string2seconds = string2seconds;
|
package/dist/components/index.js
CHANGED
|
@@ -2,104 +2,108 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
var
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get Log () {
|
|
13
|
+
return Log;
|
|
14
|
+
},
|
|
15
|
+
get getLogger () {
|
|
16
|
+
return getLogger;
|
|
17
|
+
},
|
|
18
|
+
get globalLog () {
|
|
19
|
+
return globalLog;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
const _log4js = /*#__PURE__*/ _interop_require_default(require("log4js"));
|
|
23
|
+
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
|
24
|
+
const _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
|
|
25
|
+
function _interop_require_default(obj) {
|
|
10
26
|
return obj && obj.__esModule ? obj : {
|
|
11
27
|
default: obj
|
|
12
28
|
};
|
|
13
29
|
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
/**默认配置 */ const DEF_CONFIG = {
|
|
31
|
+
"name": "app",
|
|
32
|
+
"level": "warn",
|
|
33
|
+
"dir": _path.default.join("private", "log"),
|
|
34
|
+
"fileLog": false
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* v1 风格的时间戳格式
|
|
38
|
+
|
|
39
|
+
* log4js 6 默认 layout 的时间戳为 ISO 格式(日期与时间之间是 T),
|
|
40
|
+
* 显式指定 pattern 保持与 v1 一致的空格分隔, 避免影响日志采集
|
|
41
|
+
*/ const DATE_PATTERN = "yyyy-MM-dd hh:mm:ss.SSS";
|
|
42
|
+
/**终端输出默认 layout(按日志等级着色) */ const STDOUT_LAYOUT = {
|
|
43
|
+
"type": "pattern",
|
|
44
|
+
"pattern": `%[[%d{${DATE_PATTERN}}] [%p] %c -%] %m`
|
|
45
|
+
};
|
|
46
|
+
/**文件输出默认 layout */ const FILE_LAYOUT = {
|
|
47
|
+
"type": "pattern",
|
|
48
|
+
"pattern": `[%d{${DATE_PATTERN}}] [%p] %c - %m`
|
|
49
|
+
};
|
|
50
|
+
/**日志模块 */ let Log = class Log {
|
|
51
|
+
/**当前实例配置 */ config;
|
|
52
|
+
/**日志实例缓存 */ loggers = {};
|
|
53
|
+
constructor(config){
|
|
54
|
+
this.config = Object.assign({}, DEF_CONFIG, config);
|
|
55
|
+
const appenders = {
|
|
56
|
+
"stdout": {
|
|
57
|
+
"type": "stdout",
|
|
58
|
+
"layout": this.config.layout || STDOUT_LAYOUT
|
|
31
59
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
60
|
+
};
|
|
61
|
+
if (this.config.fileLog) {
|
|
62
|
+
_fs.default.mkdirSync(this.config.dir, {
|
|
63
|
+
"recursive": true
|
|
64
|
+
});
|
|
65
|
+
appenders.file = {
|
|
66
|
+
"type": "dateFile",
|
|
67
|
+
"filename": _path.default.join(this.config.dir, this.config.name),
|
|
68
|
+
"pattern": ".yyyyMMddhh.log",
|
|
69
|
+
"alwaysIncludePattern": true,
|
|
70
|
+
"layout": this.config.layout || FILE_LAYOUT
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
// log4js 的配置是进程级的,多次实例化以最后一次为准(与 v1 共享 appender 的行为一致)
|
|
74
|
+
_log4js.default.configure({
|
|
75
|
+
"appenders": appenders,
|
|
76
|
+
"categories": {
|
|
77
|
+
"default": {
|
|
78
|
+
"appenders": Object.keys(appenders),
|
|
79
|
+
"level": this.config.level
|
|
36
80
|
}
|
|
37
|
-
} else if (status === null) {
|
|
38
|
-
_fs.default.mkdirSync(dirPath);
|
|
39
81
|
}
|
|
40
|
-
}
|
|
41
|
-
level = null;
|
|
82
|
+
});
|
|
42
83
|
}
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}
|
|
56
|
-
if (this.config.fileLog) {
|
|
57
|
-
let tmp = _path.default.join(this.config.dir);
|
|
58
|
-
mkdir(tmp);
|
|
59
|
-
tmp = null;
|
|
60
|
-
}
|
|
61
|
-
_log4Js.default.clearAppenders();
|
|
62
|
-
}
|
|
63
|
-
var LP = Log.prototype;
|
|
64
|
-
/**
|
|
65
|
-
* 获取统计实例
|
|
66
|
-
* @param {String} cat 实例分类名称
|
|
67
|
-
* @return {Object} 统计实例对象
|
|
68
|
-
*/ LP.getLogger = function(cat) {
|
|
69
|
-
var conf = this.config;
|
|
70
|
-
cat = "[" + cat + "]";
|
|
71
|
-
var logger = LOGERS[cat];
|
|
72
|
-
if (logger) {
|
|
73
|
-
return logger;
|
|
74
|
-
}
|
|
75
|
-
var dateFileConf = {
|
|
76
|
-
"filename": conf.name,
|
|
77
|
-
"pattern": ".yyyyMMddhh.log",
|
|
78
|
-
"alwaysIncludePattern": true
|
|
79
|
-
};
|
|
80
|
-
var stdoutConf = {};
|
|
81
|
-
if (conf.layout) {
|
|
82
|
-
dateFileConf.layout = conf.layout;
|
|
83
|
-
stdoutConf.layout = conf.layout;
|
|
84
|
-
}
|
|
85
|
-
if (this.config.fileLog) {
|
|
86
|
-
_log4Js.default.loadAppender("dateFile");
|
|
87
|
-
_log4Js.default.addAppender(_log4Js.default.appenderMakers.dateFile(dateFileConf, {
|
|
88
|
-
"cwd": conf.dir
|
|
89
|
-
}), cat);
|
|
84
|
+
/**
|
|
85
|
+
* 获取分类日志实例
|
|
86
|
+
* @param cat 实例分类名称
|
|
87
|
+
* @return 日志实例对象
|
|
88
|
+
*/ getLogger(cat) {
|
|
89
|
+
cat = `[${cat}]`;
|
|
90
|
+
if (!this.loggers[cat]) {
|
|
91
|
+
const logger = _log4js.default.getLogger(cat);
|
|
92
|
+
logger.level = this.config.level;
|
|
93
|
+
this.loggers[cat] = logger;
|
|
94
|
+
}
|
|
95
|
+
return this.loggers[cat];
|
|
90
96
|
}
|
|
91
|
-
_log4Js.default.addAppender(_log4Js.default.appenderMakers.stdout(stdoutConf), cat);
|
|
92
|
-
logger = _log4Js.default.getLogger(cat);
|
|
93
|
-
logger.setLevel(conf.level);
|
|
94
|
-
LOGERS[cat] = logger;
|
|
95
|
-
return logger;
|
|
96
97
|
};
|
|
97
98
|
var meta = require(_path.default.resolve(process.cwd(), "package.json"));
|
|
98
|
-
const globalLog = new Log({
|
|
99
|
+
/**框架全局日志实例 */ const globalLog = new Log({
|
|
99
100
|
"name": meta.name,
|
|
100
101
|
"level": "all"
|
|
101
102
|
});
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
103
|
+
/**
|
|
104
|
+
* 获取分类日志实例
|
|
105
|
+
* @param cat 实例分类名称
|
|
106
|
+
* @return 日志实例对象
|
|
107
|
+
*/ function getLogger(cat) {
|
|
108
|
+
return globalLog.getLogger(cat);
|
|
109
|
+
}
|
|
@@ -2,7 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
exports
|
|
5
|
+
Object.defineProperty(exports, "MIME", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return MIME;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
6
11
|
const MIME = {
|
|
7
12
|
"html": "text/html",
|
|
8
13
|
"css": "text/css",
|
|
@@ -13,4 +18,3 @@ const MIME = {
|
|
|
13
18
|
"xml": "application/xml",
|
|
14
19
|
"json": "application/json"
|
|
15
20
|
};
|
|
16
|
-
exports.MIME = MIME;
|