@x-9lab/xlab 1.0.0-alpha.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/LICENSE +21 -0
- package/README.md +182 -0
- package/dist/@config/config.dev.js +13 -0
- package/dist/@config/config.js +25 -0
- package/dist/@config/config.sand.js +10 -0
- package/dist/bin/watch.js +145 -0
- package/dist/bin/xlab +49 -0
- package/dist/business/utils/cookie/1.1.0/clean/index.js +35 -0
- package/dist/business/utils/cookie/1.1.0/clean/js/@tpls/js.tpl +32 -0
- package/dist/business/utils/cookie/1.1.0/clean/js/index.js +30 -0
- package/dist/cluster.js +120 -0
- package/dist/components/assets/index.js +31 -0
- package/dist/components/cache/index.js +9 -0
- package/dist/components/cache/lru.js +75 -0
- package/dist/components/cluster/index.js +40 -0
- package/dist/components/combo/index.js +170 -0
- package/dist/components/common.js +324 -0
- package/dist/components/cron.js +117 -0
- package/dist/components/header/index.js +74 -0
- package/dist/components/header/time.js +37 -0
- package/dist/components/html-processor/index.js +95 -0
- package/dist/components/injection/index.js +83 -0
- package/dist/components/js-processor/index.js +65 -0
- package/dist/components/log.js +112 -0
- package/dist/components/md5/index.js +19 -0
- package/dist/components/mime/index.js +18 -0
- package/dist/components/platform/index.js +103 -0
- package/dist/components/proxy/index.js +62 -0
- package/dist/components/querystring/index.js +60 -0
- package/dist/components/redirect/index.js +79 -0
- package/dist/components/return-code.js +117 -0
- package/dist/components/uuid/index.js +33 -0
- package/dist/components/version/index.js +96 -0
- package/dist/config/getEnv.js +61 -0
- package/dist/config/index.js +137 -0
- package/dist/config/process-custom-config-files.js +67 -0
- package/dist/config/process-def-config-file.js +29 -0
- package/dist/custom.js +44 -0
- package/dist/global.js +67 -0
- package/dist/middleware/@bin/html-filter.js +94 -0
- package/dist/middleware/bad-request.js +36 -0
- package/dist/middleware/combo.js +13 -0
- package/dist/middleware/compress.js +36 -0
- package/dist/middleware/cors.js +66 -0
- package/dist/middleware/fresh-filter.js +63 -0
- package/dist/middleware/handle-pre-dir.js +25 -0
- package/dist/middleware/request-filter.js +144 -0
- package/dist/middleware/service-mark.js +30 -0
- package/dist/middlewares.js +40 -0
- package/dist/package.json +61 -0
- package/dist/router.js +101 -0
- package/dist/server.js +132 -0
- package/package.json +59 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "check", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: ()=>check
|
|
8
|
+
});
|
|
9
|
+
const REGEXP = {
|
|
10
|
+
"wechat": /MicroMessenger\/([\d\.]+)/,
|
|
11
|
+
"alipay": /AlipayClient\/([\d\.]+)/,
|
|
12
|
+
"weibo": /(__weibo__|weibo\/)([\d\.]+)/i,
|
|
13
|
+
"android": /Android[\s]?([\d+\.]+)/i,
|
|
14
|
+
"ios": /iPad|iPhone/i
|
|
15
|
+
};
|
|
16
|
+
const COMMON_OS_REGEXP = /\([^\)]*\)/;
|
|
17
|
+
// window 平台内部版本与发行版的映射关系
|
|
18
|
+
const windowVersionMap = {
|
|
19
|
+
"5.0": "Windows 2000",
|
|
20
|
+
"5.1": "Windows XP",
|
|
21
|
+
"6.0": "Windows Vista",
|
|
22
|
+
"6.1": "Windows 7",
|
|
23
|
+
"6.2": "Windows 8",
|
|
24
|
+
"6.3": "Windows 8.1",
|
|
25
|
+
"10": "Windows 10",
|
|
26
|
+
"10.0": "Windows 10"
|
|
27
|
+
};
|
|
28
|
+
const unknownStr = "Unknown";
|
|
29
|
+
function check(ua) {
|
|
30
|
+
ua = String(ua);
|
|
31
|
+
const plat = {
|
|
32
|
+
"is": ""
|
|
33
|
+
};
|
|
34
|
+
for(var n in REGEXP){
|
|
35
|
+
plat[n] = ua.match(REGEXP[n]);
|
|
36
|
+
if (plat[n]) {
|
|
37
|
+
switch(true){
|
|
38
|
+
case n === "ios":
|
|
39
|
+
plat.is = "mobile";
|
|
40
|
+
const iosVer = ua.match(/Version\/([\d+\.]+)/i);
|
|
41
|
+
plat[n] = iosVer ? iosVer[1] || "Unknonw" : "Unknonw";
|
|
42
|
+
break;
|
|
43
|
+
case n === "android":
|
|
44
|
+
if (!plat.wechat && !plat.alipay && !plat.weibo) {
|
|
45
|
+
plat.is = "mobile";
|
|
46
|
+
}
|
|
47
|
+
plat[n] = plat[n][1];
|
|
48
|
+
break;
|
|
49
|
+
default:
|
|
50
|
+
plat[n] = plat[n][1];
|
|
51
|
+
plat.is = n;
|
|
52
|
+
}
|
|
53
|
+
} else {
|
|
54
|
+
plat[n] = false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
if (plat.is === "") {
|
|
58
|
+
let deviceArr = ua.match(COMMON_OS_REGEXP);
|
|
59
|
+
let device = deviceArr && deviceArr[0];
|
|
60
|
+
deviceArr = null;
|
|
61
|
+
let osInfo;
|
|
62
|
+
let osVInfo;
|
|
63
|
+
if (device) {
|
|
64
|
+
osInfo = device.replace(/[\(|\)]+/, "").split(/;[\s]?/);
|
|
65
|
+
if (osInfo[1] === "U") {
|
|
66
|
+
osInfo.splice(1, 1);
|
|
67
|
+
}
|
|
68
|
+
switch(true){
|
|
69
|
+
case device.indexOf("Win") !== -1:
|
|
70
|
+
plat.os = "Windows";
|
|
71
|
+
var winOs = "";
|
|
72
|
+
while(osInfo.length){
|
|
73
|
+
winOs = osInfo.shift();
|
|
74
|
+
if (winOs.indexOf("Win") !== -1) {
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (winOs) {
|
|
79
|
+
osVInfo = winOs.match(/[\d\.]+/);
|
|
80
|
+
osVInfo = osVInfo && osVInfo[0] ? windowVersionMap[osVInfo[0]] || unknownStr : unknownStr;
|
|
81
|
+
} else {
|
|
82
|
+
osVInfo = unknownStr;
|
|
83
|
+
}
|
|
84
|
+
plat.win = osVInfo;
|
|
85
|
+
plat.is = "desktop";
|
|
86
|
+
break;
|
|
87
|
+
case device.indexOf("Mac OS") !== -1:
|
|
88
|
+
osVInfo = device.match(/[\d_]+/);
|
|
89
|
+
osVInfo = osVInfo && osVInfo[0] || unknownStr;
|
|
90
|
+
osVInfo = osVInfo.replace(/_/g, ".");
|
|
91
|
+
plat.mac = osVInfo;
|
|
92
|
+
plat.is = "desktop";
|
|
93
|
+
break;
|
|
94
|
+
case device.indexOf("Linux") !== -1:
|
|
95
|
+
plat.os = "Linux";
|
|
96
|
+
plat.linux = unknownStr;
|
|
97
|
+
plat.is = "desktop";
|
|
98
|
+
break;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
return plat;
|
|
103
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
set: ()=>set,
|
|
13
|
+
web: ()=>web
|
|
14
|
+
});
|
|
15
|
+
const _httpProxy = /*#__PURE__*/ _interopRequireDefault(require("http-proxy"));
|
|
16
|
+
function _interopRequireDefault(obj) {
|
|
17
|
+
return obj && obj.__esModule ? obj : {
|
|
18
|
+
default: obj
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const proxy = _httpProxy.default.createProxy();
|
|
22
|
+
/**
|
|
23
|
+
* proxy 配置
|
|
24
|
+
*/ const proxyOptions = {};
|
|
25
|
+
/**
|
|
26
|
+
* 设置代理配置
|
|
27
|
+
* @param type 代理配置名称
|
|
28
|
+
* @param options 配置信息
|
|
29
|
+
*/ function set(type, options) {
|
|
30
|
+
if (!proxyOptions[type]) {
|
|
31
|
+
if (typeof options === "string") {
|
|
32
|
+
options = {
|
|
33
|
+
"target": options,
|
|
34
|
+
"host": options.replace("http://", "")
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
proxyOptions[type] = options;
|
|
38
|
+
}
|
|
39
|
+
return proxyOptions[type];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* web 代理
|
|
43
|
+
*/ function web(reqObj, headers) {
|
|
44
|
+
let options = proxyOptions[reqObj.req.proxyType];
|
|
45
|
+
if (options.host) {
|
|
46
|
+
reqObj.req.headers.host = options.host;
|
|
47
|
+
}
|
|
48
|
+
if (headers) {
|
|
49
|
+
reqObj.req.headers = Object.assign(reqObj.req.headers, headers);
|
|
50
|
+
}
|
|
51
|
+
return new Promise(function(resolve, reject) {
|
|
52
|
+
proxy.web(reqObj.req, reqObj.res, options, function(err) {
|
|
53
|
+
if (err) {
|
|
54
|
+
console.log("proxy err ", err);
|
|
55
|
+
err.name = "Proxy";
|
|
56
|
+
reject(err);
|
|
57
|
+
} else {
|
|
58
|
+
resolve(null);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
query2string: ()=>query2string,
|
|
13
|
+
string2query: ()=>string2query
|
|
14
|
+
});
|
|
15
|
+
const _querystring = /*#__PURE__*/ _interopRequireDefault(require("querystring"));
|
|
16
|
+
function _interopRequireDefault(obj) {
|
|
17
|
+
return obj && obj.__esModule ? obj : {
|
|
18
|
+
default: obj
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* 将 URL 参数转换为字符串
|
|
23
|
+
* @example
|
|
24
|
+
* ```ts
|
|
25
|
+
* query2string({"pf":"145","ss":"320x240"});
|
|
26
|
+
* query2string({"pf":"145","ss":"320x240"},["pf"]);
|
|
27
|
+
* query2string({"pf":"145","ss":"320x240"},{"fr":"android"});
|
|
28
|
+
* query2string({"pf":"145","ss":"320x240"},{"fr":"android"},["fr"]);
|
|
29
|
+
* ```
|
|
30
|
+
*/ function query2string(...args) {
|
|
31
|
+
var withouts;
|
|
32
|
+
const lastIndex = args.length - 1;
|
|
33
|
+
// 检测是否有排除参数
|
|
34
|
+
if (Array.isArray(args[lastIndex])) {
|
|
35
|
+
withouts = args[lastIndex];
|
|
36
|
+
args.pop();
|
|
37
|
+
}
|
|
38
|
+
// 需要生成的参数对象
|
|
39
|
+
var qsObj = {};
|
|
40
|
+
args.forEach(function(item) {
|
|
41
|
+
Object.keys(item).forEach(function(key) {
|
|
42
|
+
// 原有的逻辑不是相同的key替换,而是后面的key跟现有的有冲突时会被忽略掉
|
|
43
|
+
if (!qsObj[key] && (!withouts || withouts.indexOf(key) === -1)) {
|
|
44
|
+
qsObj[key] = encodeURIComponent(item[key]);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
return _querystring.default.stringify(qsObj);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 字符串转成参数对象
|
|
52
|
+
* @param qString 参数字符串
|
|
53
|
+
* @return 处理完的对象
|
|
54
|
+
* @example
|
|
55
|
+
* ```ts
|
|
56
|
+
* string2query("pf=145&ss=320x240");
|
|
57
|
+
* ```
|
|
58
|
+
*/ function string2query(qString) {
|
|
59
|
+
return _querystring.default.parse(qString);
|
|
60
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
by302: ()=>by302,
|
|
13
|
+
byJS: ()=>byJS,
|
|
14
|
+
byMeta: ()=>byMeta,
|
|
15
|
+
makeRedirectUrl: ()=>makeRedirectUrl
|
|
16
|
+
});
|
|
17
|
+
const _querystring = require("../querystring");
|
|
18
|
+
// 302 重定向
|
|
19
|
+
// 将用户访问302重定向到新的页面中去
|
|
20
|
+
function by302(context, url) {
|
|
21
|
+
var newUrl = makeRedirectUrl(context.query, url);
|
|
22
|
+
// 重定向到处理后的地址
|
|
23
|
+
context.redirect(newUrl);
|
|
24
|
+
}
|
|
25
|
+
// 添加公参重定向
|
|
26
|
+
// 由于直接 302 重定向各版本的客户端都可能存在兼容性的问题
|
|
27
|
+
// 所以利用页面 meta 或者 location.href 进行重定向
|
|
28
|
+
function byJS(context, url, msg, origin) {
|
|
29
|
+
msg = msg || "正在为您跳转...";
|
|
30
|
+
var newUrl = origin ? url : makeRedirectUrl(context.query, url);
|
|
31
|
+
// 返回重定向页面
|
|
32
|
+
context.body = `<html><head><title>跳转</title><noscript><meta http-equiv="refresh" content="0; url=${newUrl}"></noscript><script>window.location.href = "${newUrl}";</script></head><body>${msg}</body></html>`;
|
|
33
|
+
}
|
|
34
|
+
function byMeta(context, url) {
|
|
35
|
+
var newUrl = makeRedirectUrl(context.query, url);
|
|
36
|
+
// 返回重定向页面
|
|
37
|
+
context.body = '<html><head><title>跳转</title><noscript><meta http-equiv="refresh" content="0; url=' + newUrl + '"></noscript><script>window.location.href = "' + newUrl + '";</script></head><body>正在为您跳转...</body></html>';
|
|
38
|
+
}
|
|
39
|
+
// 重新整理重定向链接
|
|
40
|
+
function makeRedirectUrl(query, url) {
|
|
41
|
+
var withouts = [];
|
|
42
|
+
var queryString = "?";
|
|
43
|
+
const hashIndex = url.indexOf("#");
|
|
44
|
+
const urlpath = hashIndex > -1 ? url.substring(0, hashIndex) : url;
|
|
45
|
+
const queryIndex = urlpath.indexOf('?');
|
|
46
|
+
// 查找参数在新地址中是否已存在,存在则从原地址中转移到新地址
|
|
47
|
+
for(var name in query){
|
|
48
|
+
if (url.indexOf(name + '=') > 0) {
|
|
49
|
+
withouts.push(name);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// 拼接 URL 参数
|
|
53
|
+
queryString += (0, _querystring.query2string)(query, withouts);
|
|
54
|
+
// 已经有参数,插入原参数位置
|
|
55
|
+
if (queryIndex > 0) {
|
|
56
|
+
// 如果已有参数则需要在替换字符串最后加上 &
|
|
57
|
+
// /detail/?id=1
|
|
58
|
+
// /detail/?id=1#123
|
|
59
|
+
if (queryIndex < url.length - 1 && (hashIndex < 0 || hashIndex - queryIndex > 1)) {
|
|
60
|
+
queryString += '&';
|
|
61
|
+
}
|
|
62
|
+
url = url.replace('?', queryString);
|
|
63
|
+
// 还没有参数,自己找位置合适的位置
|
|
64
|
+
} else {
|
|
65
|
+
// if (queryString === "?") {
|
|
66
|
+
// queryString = "";
|
|
67
|
+
// }
|
|
68
|
+
// 有 # ,将参数放在 # 前
|
|
69
|
+
if (hashIndex > 0) {
|
|
70
|
+
var arr = url.split("#");
|
|
71
|
+
arr.splice(1, 0, queryString, "#");
|
|
72
|
+
url = arr.join("");
|
|
73
|
+
// 无 # ,直接将参数拼接在最后
|
|
74
|
+
} else {
|
|
75
|
+
url += queryString;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return url;
|
|
79
|
+
}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
getReturnCode: ()=>getReturnCode,
|
|
13
|
+
getCodeDetail: ()=>getCodeDetail,
|
|
14
|
+
set: ()=>set,
|
|
15
|
+
ErrorTypes: ()=>ErrorTypes
|
|
16
|
+
});
|
|
17
|
+
const _utils = require("@x-drive/utils");
|
|
18
|
+
/**
|
|
19
|
+
* 状态详细信息
|
|
20
|
+
*/ const CODE_DETAIL = {
|
|
21
|
+
"FAIL": {
|
|
22
|
+
"errorcode": -1,
|
|
23
|
+
"msg": "系统繁忙,请稍候再试"
|
|
24
|
+
},
|
|
25
|
+
"SUCCESS": {
|
|
26
|
+
"errorcode": 0,
|
|
27
|
+
"msg": "请求成功"
|
|
28
|
+
},
|
|
29
|
+
"BUSY": {
|
|
30
|
+
"errorcode": 1001,
|
|
31
|
+
"msg": "系统繁忙,请稍候再试"
|
|
32
|
+
},
|
|
33
|
+
"WRONG_PARAMETER": {
|
|
34
|
+
"errorcode": 400,
|
|
35
|
+
"msg": "参数错误"
|
|
36
|
+
},
|
|
37
|
+
"NOT_FOUND": {
|
|
38
|
+
"errorcode": 404,
|
|
39
|
+
"msg": "数据不存在"
|
|
40
|
+
},
|
|
41
|
+
"PERMISSION_DENIED": {
|
|
42
|
+
"errorcode": 403,
|
|
43
|
+
"msg": "没有权限"
|
|
44
|
+
},
|
|
45
|
+
"SERVER_BUSY": {
|
|
46
|
+
"errorcode": 503,
|
|
47
|
+
"msg": "系统繁忙,请稍候再试"
|
|
48
|
+
},
|
|
49
|
+
"SERVER_TIMEOUT": {
|
|
50
|
+
"errorcode": 504,
|
|
51
|
+
"msg": "系统繁忙,请稍候再试"
|
|
52
|
+
},
|
|
53
|
+
"UNCHECK_ERROR": {
|
|
54
|
+
"errorcode": 9999999,
|
|
55
|
+
"msg": "系统进入了异次元..."
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* 状态码 - 状态名称 映射对象
|
|
60
|
+
*/ const CODE_MAP = {};
|
|
61
|
+
function buildCodeMap() {
|
|
62
|
+
Object.keys(CODE_DETAIL).forEach(function(key) {
|
|
63
|
+
CODE_MAP[CODE_DETAIL[key].errorcode] = key;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
buildCodeMap();
|
|
67
|
+
/**
|
|
68
|
+
* 根据状态码或状态名称获取错误定义信息
|
|
69
|
+
* @param code 状态码(Int) 或 状态名称(String)
|
|
70
|
+
* @param msg 返回信息<可选>
|
|
71
|
+
* @return 状态对象
|
|
72
|
+
*/ function getReturnCode(code, msg) {
|
|
73
|
+
if ((0, _utils.isBoolean)(code)) {
|
|
74
|
+
code = code ? 0 : -1;
|
|
75
|
+
}
|
|
76
|
+
var re;
|
|
77
|
+
switch(true){
|
|
78
|
+
case (0, _utils.isString)(code):
|
|
79
|
+
re = CODE_DETAIL[code];
|
|
80
|
+
break;
|
|
81
|
+
case (0, _utils.isNumber)(code):
|
|
82
|
+
re = CODE_DETAIL[CODE_MAP[code]] || CODE_DETAIL.UNCHECK_ERROR;
|
|
83
|
+
break;
|
|
84
|
+
default:
|
|
85
|
+
re = CODE_DETAIL.UNCHECK_ERROR;
|
|
86
|
+
}
|
|
87
|
+
if (msg) {
|
|
88
|
+
re.msg = msg;
|
|
89
|
+
}
|
|
90
|
+
return re;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 获取错误代码
|
|
94
|
+
* @return 错误代码
|
|
95
|
+
*/ function getCodeDetail() {
|
|
96
|
+
return CODE_DETAIL;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* 设置新的错误代码
|
|
100
|
+
* @param data 新的错误代码数据
|
|
101
|
+
*/ function set(data) {
|
|
102
|
+
if (data && typeof data === "object") {
|
|
103
|
+
Object.keys(data).forEach(function(key) {
|
|
104
|
+
CODE_DETAIL[key] = data[key];
|
|
105
|
+
});
|
|
106
|
+
buildCodeMap();
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**错误类型对象 */ const ErrorTypes = new Proxy(CODE_DETAIL, {
|
|
110
|
+
get (_, prop) {
|
|
111
|
+
const code = CODE_DETAIL[prop];
|
|
112
|
+
if (code) {
|
|
113
|
+
return code.errorcode;
|
|
114
|
+
}
|
|
115
|
+
return code;
|
|
116
|
+
}
|
|
117
|
+
});
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "uuid", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: ()=>uuid
|
|
8
|
+
});
|
|
9
|
+
const _utils = require("@x-drive/utils");
|
|
10
|
+
const _os = require("os");
|
|
11
|
+
const _md5 = require("../md5");
|
|
12
|
+
var netInterfaces = (0, _os.networkInterfaces)();
|
|
13
|
+
const MAC = ((netInterfaces && netInterfaces.en0 || []).find((en)=>en.mac !== "00:00:00:00:00:00") || {
|
|
14
|
+
"mac": "99:00:99:00:99:00"
|
|
15
|
+
}).mac;
|
|
16
|
+
netInterfaces = null;
|
|
17
|
+
/**
|
|
18
|
+
* 生成一个 uuid
|
|
19
|
+
* @param one 第一节数据
|
|
20
|
+
* @param tow 第二节数据
|
|
21
|
+
*/ function uuid(one, tow) {
|
|
22
|
+
var r = (0, _utils.random)(2333333, 23333).toString(16);
|
|
23
|
+
r = r.length < 6 ? r += "0" : r;
|
|
24
|
+
return [
|
|
25
|
+
(0, _md5.md5)([
|
|
26
|
+
one,
|
|
27
|
+
MAC,
|
|
28
|
+
tow
|
|
29
|
+
].join("&")),
|
|
30
|
+
Date.now().toString(16),
|
|
31
|
+
r
|
|
32
|
+
].join("-");
|
|
33
|
+
}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: all[name]
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
compareVersion: ()=>compareVersion,
|
|
13
|
+
matchRange: ()=>matchRange,
|
|
14
|
+
matchAny: ()=>matchAny
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* 比较版本
|
|
18
|
+
* @param v1 样本版本
|
|
19
|
+
* @param v2 对比版本
|
|
20
|
+
* @returns 对比结果:
|
|
21
|
+
* - 1 样本大于对比
|
|
22
|
+
* - 0 两者相等
|
|
23
|
+
* - -1 对比大于样本
|
|
24
|
+
*/ function compareVersion(v1, v2) {
|
|
25
|
+
if (!v1 || !v2) {
|
|
26
|
+
return 0;
|
|
27
|
+
}
|
|
28
|
+
const v1s = v1.split(".");
|
|
29
|
+
const v2s = v2.split(".");
|
|
30
|
+
const v1l = v1s.length;
|
|
31
|
+
const v2l = v2s.length;
|
|
32
|
+
const len = v1l > v2l ? v1l : v2l;
|
|
33
|
+
for(let i = 0; i < len; i++){
|
|
34
|
+
var b1 = i < v1l ? Number(v1s[i]) : 0, b2 = i < v2l ? Number(v2s[i]) : 0;
|
|
35
|
+
if (b1 > b2) {
|
|
36
|
+
return 1;
|
|
37
|
+
} else if (b2 > b1) {
|
|
38
|
+
return -1;
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return 0;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 匹配范围
|
|
45
|
+
* @param range 版本范围
|
|
46
|
+
* @param v 对比版本
|
|
47
|
+
*/ function matchRange(range, v) {
|
|
48
|
+
if (!range || !v) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
const ranges = range.split("~");
|
|
52
|
+
const v1 = ranges[0];
|
|
53
|
+
const v2 = ranges[1];
|
|
54
|
+
return (v1 === "" || compareVersion(v1, v) <= 0) && (v2 === "" || compareVersion(v2, v) > 0);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* 匹配任意
|
|
58
|
+
* @param range 范围
|
|
59
|
+
* @param v 对比
|
|
60
|
+
* @param ignoreCase 忽略大小写
|
|
61
|
+
*/ function matchAny(range, v, ignoreCase) {
|
|
62
|
+
if (!range || !v) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
var ranges = range.split("|");
|
|
66
|
+
const len = ranges.length;
|
|
67
|
+
if (ignoreCase) {
|
|
68
|
+
if (Array.isArray(v)) {
|
|
69
|
+
v = v.map(function(v) {
|
|
70
|
+
return v.toLowerCase();
|
|
71
|
+
});
|
|
72
|
+
} else {
|
|
73
|
+
v = v.toLowerCase();
|
|
74
|
+
}
|
|
75
|
+
ranges = ranges.map(function(r) {
|
|
76
|
+
return r.toLowerCase();
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
for(var i = 0; i < len; i++){
|
|
80
|
+
var r = ranges[i];
|
|
81
|
+
if (Array.isArray(v)) {
|
|
82
|
+
var result = false;
|
|
83
|
+
v.forEach(function(v) {
|
|
84
|
+
if (!result && r === v) {
|
|
85
|
+
result = true;
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
if (result) {
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
} else if (r === v) {
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "default", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: ()=>_default
|
|
8
|
+
});
|
|
9
|
+
const _path = /*#__PURE__*/ _interopRequireDefault(require("path"));
|
|
10
|
+
function _interopRequireDefault(obj) {
|
|
11
|
+
return obj && obj.__esModule ? obj : {
|
|
12
|
+
default: obj
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
/**环境名称 */ var env;
|
|
16
|
+
/**是否为生产环境 */ var isProd;
|
|
17
|
+
/**环境配置文件地址 */ var envAddConfPath;
|
|
18
|
+
function getEnv(argv) {
|
|
19
|
+
return argv.ENV !== undefined ? argv.ENV : process.env && process.env.NODE_ENV && process.env.NODE_ENV.toLowerCase() || "development";
|
|
20
|
+
}
|
|
21
|
+
const _default = (argv)=>{
|
|
22
|
+
switch(getEnv(argv)){
|
|
23
|
+
case "0":
|
|
24
|
+
env = "DEVELOPMENT";
|
|
25
|
+
isProd = false;
|
|
26
|
+
envAddConfPath = _path.default.join("@config", "config.dev");
|
|
27
|
+
break;
|
|
28
|
+
case "1":
|
|
29
|
+
env = "PRODUCTION";
|
|
30
|
+
isProd = true;
|
|
31
|
+
break;
|
|
32
|
+
case "2":
|
|
33
|
+
env = "SANDBOX";
|
|
34
|
+
isProd = false;
|
|
35
|
+
envAddConfPath = _path.default.join("@config", "config.sand");
|
|
36
|
+
break;
|
|
37
|
+
case "development":
|
|
38
|
+
env = "DEVELOPMENT";
|
|
39
|
+
isProd = false;
|
|
40
|
+
envAddConfPath = _path.default.join("@config", "config.dev");
|
|
41
|
+
break;
|
|
42
|
+
case "sandbox":
|
|
43
|
+
env = "SANDBOX";
|
|
44
|
+
isProd = false;
|
|
45
|
+
envAddConfPath = _path.default.join("@config", "config.sand");
|
|
46
|
+
break;
|
|
47
|
+
case "production":
|
|
48
|
+
env = "PRODUCTION";
|
|
49
|
+
isProd = true;
|
|
50
|
+
break;
|
|
51
|
+
default:
|
|
52
|
+
env = "DEVELOPMENT";
|
|
53
|
+
isProd = false;
|
|
54
|
+
envAddConfPath = _path.default.join("@config", "config.dev");
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
env,
|
|
58
|
+
isProd,
|
|
59
|
+
envAddConfPath
|
|
60
|
+
};
|
|
61
|
+
};
|