@x-9lab/xlab 1.5.4 → 1.6.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/@types/env.d.ts +1 -0
- package/@types/init-env.d.ts +1 -0
- package/@types/middleware/compress.d.ts +2 -1
- package/@types/server.d.ts +2 -0
- package/dist/@config/config.dev.js +3 -5
- package/dist/@config/config.js +3 -5
- package/dist/@config/config.sand.js +3 -5
- package/dist/bin/watch.js +5 -5
- package/dist/cluster.js +33 -53
- package/dist/components/assets/index.js +4 -6
- package/dist/components/cluster/index.js +4 -11
- package/dist/components/common/index.js +46 -33
- package/dist/components/cron/index.js +14 -21
- package/dist/components/header/index.js +17 -24
- package/dist/components/header/time.js +2 -4
- package/dist/components/log/index.js +6 -13
- package/dist/components/mime/index.js +2 -4
- package/dist/components/return-code/index.js +18 -25
- package/dist/components/uuid/index.js +11 -17
- package/dist/config/getEnv.js +4 -6
- package/dist/config/index.js +20 -27
- package/dist/config/process-custom-config-files.js +20 -22
- package/dist/config/process-def-config-file.js +9 -11
- package/dist/custom.js +17 -19
- package/dist/default-x-config.js +5 -7
- package/dist/dot-file.js +8 -10
- package/dist/global.js +5 -8
- package/dist/init-env.js +19 -0
- package/dist/middleware/@bin/html-filter.js +6 -13
- package/dist/middleware/bad-request.js +8 -10
- package/dist/middleware/compress.js +6 -8
- package/dist/middleware/cors.js +5 -8
- package/dist/middleware/fresh-filter.js +7 -10
- package/dist/middleware/handle-pre-dir.js +3 -5
- package/dist/middleware/request-filter.js +22 -43
- package/dist/middleware/service-mark.js +3 -6
- package/dist/middlewares.js +16 -16
- package/dist/router.js +18 -19
- package/dist/server.js +45 -67
- package/package.json +8 -8
package/dist/middleware/cors.js
CHANGED
|
@@ -2,11 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
get: ()=>_default
|
|
8
|
-
});
|
|
9
|
-
const _utils = require("@x-drive/utils");
|
|
5
|
+
exports.default = _default;
|
|
6
|
+
var _utils = require("@x-drive/utils");
|
|
10
7
|
/**
|
|
11
8
|
一些本地的域名或 ip
|
|
12
9
|
|
|
@@ -18,7 +15,7 @@ const _utils = require("@x-drive/utils");
|
|
|
18
15
|
/**根域获取正则 */ const ROOT_NAME_REGEXP = /[\w-]*\.(?:com|lo|cc|cn|asia|biz|coop|edu|gov|int|info|jobs|mobi|name|net|org|pro|tel|trave)(\.[a-z]{2})?/im;
|
|
19
16
|
/**获取域名根域 */ function getRootName(host) {
|
|
20
17
|
const match = host.match(ROOT_NAME_REGEXP);
|
|
21
|
-
if (match && (0, _utils.isString
|
|
18
|
+
if (match && (0, _utils).isString(match[0])) {
|
|
22
19
|
return match[0];
|
|
23
20
|
}
|
|
24
21
|
return null;
|
|
@@ -28,9 +25,9 @@ const _utils = require("@x-drive/utils");
|
|
|
28
25
|
if (config && config.enable === false) {
|
|
29
26
|
return false;
|
|
30
27
|
}
|
|
31
|
-
if ((0, _utils.isFunction
|
|
28
|
+
if ((0, _utils).isFunction(config.check)) {
|
|
32
29
|
return config.check(origin, url);
|
|
33
|
-
} else if ((0, _utils.isString
|
|
30
|
+
} else if ((0, _utils).isString(config.type)) {
|
|
34
31
|
if (config.type === "all") {
|
|
35
32
|
return true;
|
|
36
33
|
} else if (config.type === "sameroot") {
|
|
@@ -2,11 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
get: ()=>_default
|
|
8
|
-
});
|
|
9
|
-
const _header = require("../components/header");
|
|
5
|
+
exports.default = _default;
|
|
6
|
+
var _header = require("../components/header");
|
|
10
7
|
const conf = getSysConfig();
|
|
11
8
|
async function handle(ctx, next) {
|
|
12
9
|
// 头部字段
|
|
@@ -25,7 +22,7 @@ async function handle(ctx, next) {
|
|
|
25
22
|
// 没有最后修改时间,附加上当前时间并继续
|
|
26
23
|
// 或者有nocache参数的话,也直接响应 200 操作
|
|
27
24
|
if (!conf["304"] || !!queryMap.no_cache || !modifiedSince) {
|
|
28
|
-
(0, _header.lastModified
|
|
25
|
+
(0, _header).lastModified(nowDateString, ctx);
|
|
29
26
|
await next();
|
|
30
27
|
// 发现有修改时间,直接返回304头
|
|
31
28
|
} else {
|
|
@@ -38,8 +35,8 @@ async function handle(ctx, next) {
|
|
|
38
35
|
ctx.status = 304;
|
|
39
36
|
ctx.body = "";
|
|
40
37
|
} else {
|
|
41
|
-
(0, _header.lastModified
|
|
42
|
-
next();
|
|
38
|
+
(0, _header).lastModified(nowDateString, ctx);
|
|
39
|
+
await next();
|
|
43
40
|
}
|
|
44
41
|
// 其他的js/css/image静态资源设置两周的缓存时间(可配置)
|
|
45
42
|
} else if (ctx.state.srcType.js || ctx.state.srcType.css || ctx.state.srcType.img || ctx.state.srcType.tpl || ctx.state.srcType.font) {
|
|
@@ -48,12 +45,12 @@ async function handle(ctx, next) {
|
|
|
48
45
|
ctx.status = 304;
|
|
49
46
|
ctx.body = "";
|
|
50
47
|
} else {
|
|
51
|
-
(0, _header.lastModified
|
|
48
|
+
(0, _header).lastModified(nowDateString, ctx);
|
|
52
49
|
await next();
|
|
53
50
|
}
|
|
54
51
|
//其他类型的请求,比如Server API等等
|
|
55
52
|
} else {
|
|
56
|
-
(0, _header.lastModified
|
|
53
|
+
(0, _header).lastModified(nowDateString, ctx);
|
|
57
54
|
await next();
|
|
58
55
|
}
|
|
59
56
|
}
|
|
@@ -2,10 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
enumerable: true,
|
|
7
|
-
get: ()=>_default
|
|
8
|
-
});
|
|
5
|
+
exports.default = void 0;
|
|
9
6
|
var conf = getSysConfig();
|
|
10
7
|
/**
|
|
11
8
|
* 路径处理匹配正则
|
|
@@ -22,4 +19,5 @@ var conf = getSysConfig();
|
|
|
22
19
|
}
|
|
23
20
|
await next();
|
|
24
21
|
}
|
|
25
|
-
|
|
22
|
+
var _default = handlPreDir;
|
|
23
|
+
exports.default = _default;
|
|
@@ -2,55 +2,34 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
});
|
|
9
|
-
const _htmlFilter = /*#__PURE__*/ _interopRequireWildcard(require("./@bin/html-filter"));
|
|
10
|
-
const _url = /*#__PURE__*/ _interopRequireDefault(require("url"));
|
|
5
|
+
exports.default = _default;
|
|
6
|
+
var _htmlFilter = _interopRequireWildcard(require("./@bin/html-filter"));
|
|
7
|
+
var _url = _interopRequireDefault(require("url"));
|
|
11
8
|
function _interopRequireDefault(obj) {
|
|
12
9
|
return obj && obj.__esModule ? obj : {
|
|
13
10
|
default: obj
|
|
14
11
|
};
|
|
15
12
|
}
|
|
16
|
-
function
|
|
17
|
-
if (
|
|
18
|
-
var cacheBabelInterop = new WeakMap();
|
|
19
|
-
var cacheNodeInterop = new WeakMap();
|
|
20
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
21
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
22
|
-
})(nodeInterop);
|
|
23
|
-
}
|
|
24
|
-
function _interopRequireWildcard(obj, nodeInterop) {
|
|
25
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
|
13
|
+
function _interopRequireWildcard(obj) {
|
|
14
|
+
if (obj && obj.__esModule) {
|
|
26
15
|
return obj;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
for(var key in obj){
|
|
40
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
41
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
42
|
-
if (desc && (desc.get || desc.set)) {
|
|
43
|
-
Object.defineProperty(newObj, key, desc);
|
|
44
|
-
} else {
|
|
45
|
-
newObj[key] = obj[key];
|
|
16
|
+
} else {
|
|
17
|
+
var newObj = {};
|
|
18
|
+
if (obj != null) {
|
|
19
|
+
for(var key in obj){
|
|
20
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
21
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
22
|
+
if (desc.get || desc.set) {
|
|
23
|
+
Object.defineProperty(newObj, key, desc);
|
|
24
|
+
} else {
|
|
25
|
+
newObj[key] = obj[key];
|
|
26
|
+
}
|
|
27
|
+
}
|
|
46
28
|
}
|
|
47
29
|
}
|
|
30
|
+
newObj.default = obj;
|
|
31
|
+
return newObj;
|
|
48
32
|
}
|
|
49
|
-
newObj.default = obj;
|
|
50
|
-
if (cache) {
|
|
51
|
-
cache.set(obj, newObj);
|
|
52
|
-
}
|
|
53
|
-
return newObj;
|
|
54
33
|
}
|
|
55
34
|
const IS_STATIC_RE = /^\/.*\.(ttf|woff|eot|html|css|js|json|png|jpeg|jpg|gif|bmp|handlebars|mp3|mp4|m3u8|avi|mpg|mpeg|xml|json|tpl)$/i;
|
|
56
35
|
const IS_IMG_RE = /\.(jpg|jpeg|png|gif)$/i;
|
|
@@ -115,13 +94,13 @@ async function filter(ctx, next) {
|
|
|
115
94
|
// 提取页面必要的信息
|
|
116
95
|
// 由于 dir 也可能直接返回 HTML 页面
|
|
117
96
|
// 所以这里也需要经过 HTML 的过滤器处理
|
|
118
|
-
ctx.state.ver = (0, _htmlFilter.filter
|
|
97
|
+
ctx.state.ver = (0, _htmlFilter).filter(ctx.url);
|
|
119
98
|
} else if (isStatic(pathname)) {
|
|
120
99
|
srcType.static = true;
|
|
121
100
|
if (isHtml(pathname)) {
|
|
122
101
|
srcType.html = true;
|
|
123
102
|
// 提取页面必要的信息
|
|
124
|
-
ctx.state.ver = (0, _htmlFilter.filter
|
|
103
|
+
ctx.state.ver = (0, _htmlFilter).filter(ctx.url);
|
|
125
104
|
} else if (isJS(pathname)) {
|
|
126
105
|
srcType.js = true;
|
|
127
106
|
} else if (isImg(pathname)) {
|
|
@@ -138,6 +117,6 @@ async function filter(ctx, next) {
|
|
|
138
117
|
await next();
|
|
139
118
|
}
|
|
140
119
|
function _default() {
|
|
141
|
-
(0, _htmlFilter.default
|
|
120
|
+
(0, _htmlFilter).default();
|
|
142
121
|
return filter;
|
|
143
122
|
}
|
|
@@ -2,11 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
get: ()=>_default
|
|
8
|
-
});
|
|
9
|
-
const _utils = require("@x-drive/utils");
|
|
5
|
+
exports.default = _default;
|
|
6
|
+
var _utils = require("@x-drive/utils");
|
|
10
7
|
const serverPackge = require("../../package.json");
|
|
11
8
|
var info = {};
|
|
12
9
|
// 业务名称
|
|
@@ -18,7 +15,7 @@ info.serverVer = serverPackge.version;
|
|
|
18
15
|
info.serverName = serverPackge.name;
|
|
19
16
|
// 业务启动时间
|
|
20
17
|
// FIX ME : 服务器不是北京时间的时候这个数据跟实际启动的时间存在时差
|
|
21
|
-
info.date = (0, _utils.date
|
|
18
|
+
info.date = (0, _utils).date(new Date(), "Y-m-d H:i:s");
|
|
22
19
|
// 模块版本信息
|
|
23
20
|
const CLIENT_MARK = `${info.mark}@${info.version}`;
|
|
24
21
|
const SERVER_MARK = `${info.serverName}@${info.serverVer}`;
|
package/dist/middlewares.js
CHANGED
|
@@ -2,13 +2,10 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
const _utils = require("@x-drive/utils");
|
|
10
|
-
const _common = require("./components/common");
|
|
11
|
-
const _defaultXConfig = /*#__PURE__*/ _interopRequireDefault(require("./default-x-config"));
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _utils = require("@x-drive/utils");
|
|
7
|
+
var _common = require("./components/common");
|
|
8
|
+
var _defaultXConfig = _interopRequireDefault(require("./default-x-config"));
|
|
12
9
|
function _interopRequireDefault(obj) {
|
|
13
10
|
return obj && obj.__esModule ? obj : {
|
|
14
11
|
default: obj
|
|
@@ -34,34 +31,37 @@ const cwd = process.cwd();
|
|
|
34
31
|
mConfig = null;
|
|
35
32
|
}
|
|
36
33
|
if (mConfig) {
|
|
37
|
-
return Object.keys(mConfig).filter((key)=>(0, _utils.isBoolean
|
|
38
|
-
|
|
34
|
+
return Object.keys(mConfig).filter((key)=>(0, _utils).isBoolean(mConfig[key]) ? mConfig[key] : true
|
|
35
|
+
).map((key, index)=>{
|
|
36
|
+
if ((0, _utils).isBoolean(mConfig[key])) {
|
|
39
37
|
mConfig[key] = {};
|
|
40
38
|
}
|
|
41
|
-
if (!(0, _utils.isString
|
|
39
|
+
if (!(0, _utils).isString(mConfig[key].name)) {
|
|
42
40
|
mConfig[key].name = key;
|
|
43
41
|
}
|
|
44
|
-
if (!(0, _utils.isNumber
|
|
42
|
+
if (!(0, _utils).isNumber(mConfig[key].index)) {
|
|
45
43
|
mConfig[key].index = index;
|
|
46
44
|
}
|
|
47
45
|
return mConfig[key];
|
|
48
|
-
}).sort((now, next)=>now.index - next.index
|
|
46
|
+
}).sort((now, next)=>now.index - next.index
|
|
47
|
+
);
|
|
49
48
|
}
|
|
50
49
|
return [];
|
|
51
50
|
}
|
|
52
51
|
// [最后3个中间件固定是 系统路由,静态文件服务,错误请求处理模块]
|
|
53
52
|
/**加载中间件 */ function loadMiddleware(app) {
|
|
54
53
|
const list = getExeList();
|
|
55
|
-
if ((0, _utils.isArray
|
|
54
|
+
if ((0, _utils).isArray(list) && list.length) {
|
|
56
55
|
list.forEach((item)=>{
|
|
57
56
|
if (INTERNAL_MIDDLEWARE[item.name]) {
|
|
58
|
-
app.use((0, _common.getRealDefaultMod
|
|
57
|
+
app.use((0, _common).getRealDefaultMod(require(`./middleware/${item.name}`))(item.config));
|
|
59
58
|
} else {
|
|
60
|
-
app.use((0, _common.getRealDefaultMod
|
|
59
|
+
app.use((0, _common).getRealDefaultMod(require(`${cwd}/${_defaultXConfig.default.businessDir}/middleware/${item.name}`))(item.config));
|
|
61
60
|
}
|
|
62
61
|
masterLog(`MIDDLEWARE >>> [${item.name}] launch`);
|
|
63
62
|
});
|
|
64
63
|
console.log("");
|
|
65
64
|
}
|
|
66
65
|
}
|
|
67
|
-
|
|
66
|
+
var _default = loadMiddleware;
|
|
67
|
+
exports.default = _default;
|
package/dist/router.js
CHANGED
|
@@ -2,15 +2,12 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const _defaultXConfig = /*#__PURE__*/ _interopRequireDefault(require("./default-x-config"));
|
|
12
|
-
const _path = /*#__PURE__*/ _interopRequireDefault(require("path"));
|
|
13
|
-
const _fs = /*#__PURE__*/ _interopRequireDefault(require("fs"));
|
|
5
|
+
exports.default = void 0;
|
|
6
|
+
var _utils = require("@x-drive/utils");
|
|
7
|
+
var _common = require("./components/common");
|
|
8
|
+
var _defaultXConfig = _interopRequireDefault(require("./default-x-config"));
|
|
9
|
+
var _path = _interopRequireDefault(require("path"));
|
|
10
|
+
var _fs = _interopRequireDefault(require("fs"));
|
|
14
11
|
function _interopRequireDefault(obj) {
|
|
15
12
|
return obj && obj.__esModule ? obj : {
|
|
16
13
|
default: obj
|
|
@@ -63,7 +60,7 @@ function _interopRequireDefault(obj) {
|
|
|
63
60
|
var processBusiness = function(modPath, item, middlewares) {
|
|
64
61
|
var mod = require(_path.default.resolve(modPath));
|
|
65
62
|
if (mod) {
|
|
66
|
-
mod = (0, _common.getRealDefaultMod
|
|
63
|
+
mod = (0, _common).getRealDefaultMod(mod);
|
|
67
64
|
let api_path = modPath.split(API_BUSINESS_DIR);
|
|
68
65
|
let api;
|
|
69
66
|
let apiPart;
|
|
@@ -78,7 +75,7 @@ function _interopRequireDefault(obj) {
|
|
|
78
75
|
api.pop();
|
|
79
76
|
}
|
|
80
77
|
// 如果模块返回的是数组,则使用文件名做为方法名,并在 api 上去掉文件名
|
|
81
|
-
if ((0, _utils.isArray
|
|
78
|
+
if ((0, _utils).isArray(mod)) {
|
|
82
79
|
if (!lastIsIndex) {
|
|
83
80
|
api.pop();
|
|
84
81
|
}
|
|
@@ -91,9 +88,9 @@ function _interopRequireDefault(obj) {
|
|
|
91
88
|
api = buildApi(api.join("/"));
|
|
92
89
|
}
|
|
93
90
|
// 是对象则取对应的字段
|
|
94
|
-
if ((0, _utils.isObject
|
|
91
|
+
if ((0, _utils).isObject(mod)) {
|
|
95
92
|
const subjectMod = mod;
|
|
96
|
-
if ((0, _utils.isFunction
|
|
93
|
+
if ((0, _utils).isFunction(subjectMod.handler) || (0, _utils).isAsyncFunction(subjectMod.handler)) {
|
|
97
94
|
modName = subjectMod.method || "get";
|
|
98
95
|
api = subjectMod.api || api;
|
|
99
96
|
apiPart = api.split("/");
|
|
@@ -104,7 +101,7 @@ function _interopRequireDefault(obj) {
|
|
|
104
101
|
if (!subjectMod.ignoreApiNameCheck && !IS_API_REGEXP.test(api)) {
|
|
105
102
|
api = buildApi(api);
|
|
106
103
|
}
|
|
107
|
-
if ((0, _utils.isArray
|
|
104
|
+
if ((0, _utils).isArray(subjectMod.middleware)) {
|
|
108
105
|
mod = [
|
|
109
106
|
api,
|
|
110
107
|
...subjectMod.middleware,
|
|
@@ -131,7 +128,7 @@ function _interopRequireDefault(obj) {
|
|
|
131
128
|
prevPart = part;
|
|
132
129
|
}
|
|
133
130
|
// 直接返回函数则直接绑定
|
|
134
|
-
if ((0, _utils.isFunction
|
|
131
|
+
if ((0, _utils).isFunction(mod) || (0, _utils).isAsyncFunction(mod)) {
|
|
135
132
|
mod = [
|
|
136
133
|
api,
|
|
137
134
|
mod
|
|
@@ -144,7 +141,8 @@ function _interopRequireDefault(obj) {
|
|
|
144
141
|
}
|
|
145
142
|
}
|
|
146
143
|
if (dirMws && dirMws.length) {
|
|
147
|
-
let mws = dirMws.map((name)=>(0, _common.getRealDefaultMod
|
|
144
|
+
let mws = dirMws.map((name)=>(0, _common).getRealDefaultMod(require(name))
|
|
145
|
+
);
|
|
148
146
|
mod.splice.apply(mod, [
|
|
149
147
|
1,
|
|
150
148
|
0,
|
|
@@ -158,15 +156,16 @@ function _interopRequireDefault(obj) {
|
|
|
158
156
|
};
|
|
159
157
|
// 业务基本目录
|
|
160
158
|
var _p = _path.default.resolve(__dirname, API_BUSINESS_DIR);
|
|
161
|
-
if ((0, _common.checkFileStat
|
|
159
|
+
if ((0, _common).checkFileStat(_p)) {
|
|
162
160
|
walk(_p, {}, processBusiness);
|
|
163
161
|
}
|
|
164
162
|
// 支持自定义 api
|
|
165
163
|
_p = _path.default.resolve(process.cwd(), _defaultXConfig.default.businessDir, API_BUSINESS_DIR);
|
|
166
|
-
if (process.cwd() !== __dirname && (0, _common.checkFileStat
|
|
164
|
+
if (process.cwd() !== __dirname && (0, _common).checkFileStat(_p)) {
|
|
167
165
|
walk(_p, {}, processBusiness);
|
|
168
166
|
}
|
|
169
167
|
processBusiness = null;
|
|
170
168
|
console.log("");
|
|
171
169
|
}
|
|
172
|
-
|
|
170
|
+
var _default = appRouter;
|
|
171
|
+
exports.default = _default;
|
package/dist/server.js
CHANGED
|
@@ -2,85 +2,59 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", {
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
|
-
|
|
6
|
-
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
-
enumerable: true,
|
|
8
|
-
get: all[name]
|
|
9
|
-
});
|
|
10
|
-
}
|
|
11
|
-
_export(exports, {
|
|
12
|
-
boot: ()=>boot,
|
|
13
|
-
exit: ()=>exit,
|
|
14
|
-
default: ()=>_default
|
|
15
|
-
});
|
|
5
|
+
exports.default = exports.exit = exports.boot = exports.app = void 0;
|
|
16
6
|
require("./global");
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
7
|
+
require("./init-env");
|
|
8
|
+
var _log = require("./components/log");
|
|
9
|
+
var _cron = require("./components/cron");
|
|
10
|
+
var _defaultXConfig = _interopRequireDefault(require("./default-x-config"));
|
|
11
|
+
var _dotFile = require("./dot-file");
|
|
12
|
+
var _koaStatic = _interopRequireDefault(require("koa-static"));
|
|
13
|
+
var _koaRouter = _interopRequireDefault(require("koa-router"));
|
|
14
|
+
var _path = _interopRequireDefault(require("path"));
|
|
15
|
+
var _koa = _interopRequireDefault(require("koa"));
|
|
16
|
+
var _config = _interopRequireWildcard(require("./config"));
|
|
17
|
+
var _custom = _interopRequireDefault(require("./custom"));
|
|
18
|
+
var _router = _interopRequireDefault(require("./router"));
|
|
19
|
+
var _cluster = _interopRequireDefault(require("./cluster"));
|
|
20
|
+
var _middlewares = _interopRequireDefault(require("./middlewares"));
|
|
21
|
+
var _badRequest = _interopRequireDefault(require("./middleware/bad-request"));
|
|
31
22
|
function _interopRequireDefault(obj) {
|
|
32
23
|
return obj && obj.__esModule ? obj : {
|
|
33
24
|
default: obj
|
|
34
25
|
};
|
|
35
26
|
}
|
|
36
|
-
function
|
|
37
|
-
if (
|
|
38
|
-
var cacheBabelInterop = new WeakMap();
|
|
39
|
-
var cacheNodeInterop = new WeakMap();
|
|
40
|
-
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
41
|
-
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
42
|
-
})(nodeInterop);
|
|
43
|
-
}
|
|
44
|
-
function _interopRequireWildcard(obj, nodeInterop) {
|
|
45
|
-
if (!nodeInterop && obj && obj.__esModule) {
|
|
27
|
+
function _interopRequireWildcard(obj) {
|
|
28
|
+
if (obj && obj.__esModule) {
|
|
46
29
|
return obj;
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
for(var key in obj){
|
|
60
|
-
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
61
|
-
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
62
|
-
if (desc && (desc.get || desc.set)) {
|
|
63
|
-
Object.defineProperty(newObj, key, desc);
|
|
64
|
-
} else {
|
|
65
|
-
newObj[key] = obj[key];
|
|
30
|
+
} else {
|
|
31
|
+
var newObj = {};
|
|
32
|
+
if (obj != null) {
|
|
33
|
+
for(var key in obj){
|
|
34
|
+
if (Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
35
|
+
var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {};
|
|
36
|
+
if (desc.get || desc.set) {
|
|
37
|
+
Object.defineProperty(newObj, key, desc);
|
|
38
|
+
} else {
|
|
39
|
+
newObj[key] = obj[key];
|
|
40
|
+
}
|
|
41
|
+
}
|
|
66
42
|
}
|
|
67
43
|
}
|
|
44
|
+
newObj.default = obj;
|
|
45
|
+
return newObj;
|
|
68
46
|
}
|
|
69
|
-
newObj.default = obj;
|
|
70
|
-
if (cache) {
|
|
71
|
-
cache.set(obj, newObj);
|
|
72
|
-
}
|
|
73
|
-
return newObj;
|
|
74
47
|
}
|
|
75
48
|
process.env.TZ = _config.default.timezone;
|
|
76
49
|
const logger = _log.globalLog.getLogger("system");
|
|
77
|
-
(0, _dotFile.processDotFile
|
|
50
|
+
(0, _dotFile).processDotFile(_config.default.env, logger);
|
|
78
51
|
// 只在 master 上输出的日志
|
|
79
52
|
global.masterLog = _config.log;
|
|
80
53
|
// 服务实例
|
|
81
54
|
const app = new _koa.default();
|
|
82
55
|
/**
|
|
83
56
|
* 获取应用实例对象
|
|
57
|
+
* @deprecated v1.7.0 后将弃用,请直接从模块中引用
|
|
84
58
|
* @return 实例对象
|
|
85
59
|
*/ global.getApp = function() {
|
|
86
60
|
return app;
|
|
@@ -90,15 +64,15 @@ const app = new _koa.default();
|
|
|
90
64
|
app.poweredBy = false;
|
|
91
65
|
if (_config.default.custom) {
|
|
92
66
|
// 自定义初始化业务
|
|
93
|
-
(0, _custom.default
|
|
67
|
+
(0, _custom).default();
|
|
94
68
|
}
|
|
95
69
|
// 加载中间件
|
|
96
|
-
(0, _middlewares.default
|
|
70
|
+
(0, _middlewares).default(app);
|
|
97
71
|
const koaRouter = new _koaRouter.default();
|
|
98
72
|
// 路由中间件
|
|
99
73
|
app.use(koaRouter.routes());
|
|
100
74
|
// 具体路由
|
|
101
|
-
(0, _router.default
|
|
75
|
+
(0, _router).default(koaRouter);
|
|
102
76
|
// 静态文件服务
|
|
103
77
|
var staticServeOpts = {};
|
|
104
78
|
if (_config.default.isProd) {
|
|
@@ -117,17 +91,17 @@ staticServeOpts.setHeaders = function(res, path) {
|
|
|
117
91
|
}
|
|
118
92
|
}
|
|
119
93
|
};
|
|
120
|
-
app.use((0, _koaStatic.default
|
|
94
|
+
app.use((0, _koaStatic).default(_path.default.resolve(process.cwd(), _config.default.root), staticServeOpts));
|
|
121
95
|
// 异常状态处理中间件
|
|
122
96
|
app.use(_badRequest.default);
|
|
123
97
|
if (_config.default.enableCron) {
|
|
124
98
|
if (_config.default.isMaster || _config.default.enableWorkerCron) {
|
|
125
99
|
// 定时任务
|
|
126
|
-
(0, _cron.on
|
|
100
|
+
(0, _cron).on(_path.default.resolve(process.cwd(), _defaultXConfig.default.businessDir, "cron"));
|
|
127
101
|
}
|
|
128
102
|
}
|
|
129
103
|
/**启动服务 */ function boot() {
|
|
130
|
-
(0, _cluster.default
|
|
104
|
+
(0, _cluster).default();
|
|
131
105
|
process.on("uncaughtException", (err)=>{
|
|
132
106
|
logger.error(`uncaughtException:${err.message}\n`, err.stack);
|
|
133
107
|
}).on("unhandledRejection", (err)=>{
|
|
@@ -137,7 +111,11 @@ if (_config.default.enableCron) {
|
|
|
137
111
|
/**退出服务 */ function exit() {
|
|
138
112
|
process.exit();
|
|
139
113
|
}
|
|
140
|
-
|
|
114
|
+
var _default = app;
|
|
115
|
+
exports.default = _default;
|
|
141
116
|
if (require.main === module) {
|
|
142
117
|
boot();
|
|
143
118
|
}
|
|
119
|
+
exports.app = app;
|
|
120
|
+
exports.boot = boot;
|
|
121
|
+
exports.exit = exit;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@x-9lab/xlab",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.6.0",
|
|
4
4
|
"description": "9lab 服务端模块",
|
|
5
5
|
"versionDesc": "日志信息输出优化",
|
|
6
6
|
"scripts": {
|
|
@@ -20,15 +20,15 @@
|
|
|
20
20
|
"@types"
|
|
21
21
|
],
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"koa": "
|
|
23
|
+
"koa": "3.1.2",
|
|
24
24
|
"cron": "1.8.2",
|
|
25
25
|
"log4js": "^1.1.1",
|
|
26
26
|
"liftoff": "4.0.0",
|
|
27
27
|
"minimist": "1.2.6",
|
|
28
28
|
"koa-static": "5.0.0",
|
|
29
|
-
"koa-router": "
|
|
30
|
-
"koa-compress": "5.1
|
|
31
|
-
"@x-drive/utils": "1.1.
|
|
29
|
+
"koa-router": "14.0.0",
|
|
30
|
+
"koa-compress": "5.2.1",
|
|
31
|
+
"@x-drive/utils": "1.1.32"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"tslib": "2.3.0",
|
|
@@ -38,11 +38,11 @@
|
|
|
38
38
|
"chokidar": "3.5.3",
|
|
39
39
|
"@swc/cli": "0.1.57",
|
|
40
40
|
"typescript": "4.3.4",
|
|
41
|
-
"@swc/core": "1.2.
|
|
41
|
+
"@swc/core": "1.2.171",
|
|
42
42
|
"@types/log4js": "2.3.5",
|
|
43
43
|
"@types/node": "16.11.40",
|
|
44
|
-
"@types/koa-static": "4.0.
|
|
45
|
-
"@types/koa-router": "7.4.
|
|
44
|
+
"@types/koa-static": "4.0.4",
|
|
45
|
+
"@types/koa-router": "7.4.9",
|
|
46
46
|
"@x-drive/changelog": "1.1.6"
|
|
47
47
|
},
|
|
48
48
|
"bin": {
|