mas-server 2.0.0 → 2.0.2
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/dist/index.js +138 -136
- package/dist/state.js +4 -4
- package/dist/typings/index.js +2 -2
- package/dist/utils/apiDoc.js +18 -18
- package/dist/utils/getLog.js +18 -18
- package/dist/utils/getRouteByApiSrc.js +54 -54
- package/dist/utils/mas-encrypt.min.js +3072 -0
- package/dist/utils/masUtils.js +12 -12
- package/dist/utils/meaToken.js +57 -57
- package/dist/utils/quickSend.js +32 -32
- package/dist/utils/readApi.js +50 -50
- package/dist/utils/validRouteData.js +37 -37
- package/dist/utils/validToken.js +24 -24
- package/dist/utils/validType.js +101 -101
- package/package.json +49 -46
- package/src/index.ts +10 -8
- package/src/utils/apiDoc.ts +1 -1
- package/src/utils/getLog.ts +1 -1
- package/src/utils/getRouteByApiSrc.ts +1 -1
- package/src/utils/meaToken.ts +1 -1
- package/src/utils/validRouteData.ts +1 -1
- package/src/utils/validToken.ts +1 -1
- package/src/utils/validType.ts +1 -1
- package/test/config/api.config.ts +2 -2
- package/test/config/config.ts +1 -1
- package/test/src/sqlform.json +12 -1
- package/test//345/276/205/345/274/200/345/217/221.md +3 -1
- package/tsconfig.json +1 -1
- package/dist/masmysql/checkSqlkey.js +0 -67
- package/dist/masmysql/createSqlForm.js +0 -44
- package/dist/masmysql/esaysql.js +0 -53
- package/dist/masmysql/index.js +0 -111
- package/dist/masmysql/masSql.js +0 -741
- package/dist/masmysql/state.js +0 -5
- package/dist/masmysql/type.js +0 -2
- package/dist/masmysql/utils.js +0 -12
- package/src/masmysql/checkSqlkey.ts +0 -55
- package/src/masmysql/createSqlForm.ts +0 -37
- package/src/masmysql/esaysql.ts +0 -44
- package/src/masmysql/index.ts +0 -68
- package/src/masmysql/masSql.ts +0 -736
- package/src/masmysql/state.ts +0 -5
- package/src/masmysql/type.ts +0 -34
- package/src/masmysql/utils.ts +0 -8
package/dist/utils/masUtils.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getType = void 0;
|
|
4
|
-
function getType(obj) {
|
|
5
|
-
// "".toLocaleLowerCase
|
|
6
|
-
return Object.prototype.toString
|
|
7
|
-
.call(obj)
|
|
8
|
-
.slice(8)
|
|
9
|
-
.replace("]", "")
|
|
10
|
-
.toLocaleLowerCase();
|
|
11
|
-
}
|
|
12
|
-
exports.getType = getType;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getType = void 0;
|
|
4
|
+
function getType(obj) {
|
|
5
|
+
// "".toLocaleLowerCase
|
|
6
|
+
return Object.prototype.toString
|
|
7
|
+
.call(obj)
|
|
8
|
+
.slice(8)
|
|
9
|
+
.replace("]", "")
|
|
10
|
+
.toLocaleLowerCase();
|
|
11
|
+
}
|
|
12
|
+
exports.getType = getType;
|
package/dist/utils/meaToken.js
CHANGED
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createToken = exports.validToken = void 0;
|
|
4
|
-
const { decode, isJSON, encode } = require("./mas-encrypt.min");
|
|
5
|
-
const getTimestamp = () => new Date().getTime();
|
|
6
|
-
/**
|
|
7
|
-
*
|
|
8
|
-
* @param param0 token:解密的token,permission:效验的权限,只要有其中一个就可
|
|
9
|
-
* @param key 解密密钥
|
|
10
|
-
* @returns
|
|
11
|
-
*/
|
|
12
|
-
const validToken = ({ token, permission = [] }, key = "8087") => {
|
|
13
|
-
if (!token)
|
|
14
|
-
return { msg: "没有传入token数据", errorCode: 0, status: 0, token };
|
|
15
|
-
token = decode(token, key, 1);
|
|
16
|
-
if (!token)
|
|
17
|
-
return { msg: "token数据错误", errorCode: 1, status: 0, token };
|
|
18
|
-
// 鉴权
|
|
19
|
-
if (permission.length != 0) {
|
|
20
|
-
const tPermission = token._permission;
|
|
21
|
-
if (!tPermission) {
|
|
22
|
-
return { msg: "权限错误", errorCode: 2, status: 0, token };
|
|
23
|
-
}
|
|
24
|
-
if (tPermission.filter((value) => permission.includes(value)).length == 0) {
|
|
25
|
-
return { msg: "权限错误", errorCode: 2, status: 0, token };
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
// 过期时间
|
|
29
|
-
if (token._masTime !== 0) {
|
|
30
|
-
if (getTimestamp() > token._masTime)
|
|
31
|
-
return { msg: "token过期", errorCode: 3, status: 0, token };
|
|
32
|
-
}
|
|
33
|
-
return Object.assign(Object.assign({}, token), { status: 1 });
|
|
34
|
-
};
|
|
35
|
-
exports.validToken = validToken;
|
|
36
|
-
const getErrorInfo = () => {
|
|
37
|
-
return [
|
|
38
|
-
{ msg: "没有传入token数据", errorCode: 0, status: 0 },
|
|
39
|
-
{ msg: "token数据错误", errorCode: 1, status: 0 },
|
|
40
|
-
{ msg: "权限错误", errorCode: 2, status: 0 },
|
|
41
|
-
{ msg: "token过期", errorCode: 3, status: 0 },
|
|
42
|
-
];
|
|
43
|
-
};
|
|
44
|
-
/**
|
|
45
|
-
*
|
|
46
|
-
* @param param0 data:加密的数据,time:过期时间/s(为零则不会过期),permission:权限设置
|
|
47
|
-
* @param key 加密密钥
|
|
48
|
-
* @returns
|
|
49
|
-
*/
|
|
50
|
-
function createToken({ data = null, time = 0, permission = [] } = {}, key = "8087") {
|
|
51
|
-
const token = {};
|
|
52
|
-
token.data = data;
|
|
53
|
-
permission.length != 0 && (token._permission = permission);
|
|
54
|
-
time !== 0 && (token._masTime = time * 1000 + getTimestamp());
|
|
55
|
-
return encode(token, key, 1);
|
|
56
|
-
}
|
|
57
|
-
exports.createToken = createToken;
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createToken = exports.validToken = void 0;
|
|
4
|
+
const { decode, isJSON, encode } = require("./mas-encrypt.min.js");
|
|
5
|
+
const getTimestamp = () => new Date().getTime();
|
|
6
|
+
/**
|
|
7
|
+
*
|
|
8
|
+
* @param param0 token:解密的token,permission:效验的权限,只要有其中一个就可
|
|
9
|
+
* @param key 解密密钥
|
|
10
|
+
* @returns
|
|
11
|
+
*/
|
|
12
|
+
const validToken = ({ token, permission = [] }, key = "8087") => {
|
|
13
|
+
if (!token)
|
|
14
|
+
return { msg: "没有传入token数据", errorCode: 0, status: 0, token };
|
|
15
|
+
token = decode(token, key, 1);
|
|
16
|
+
if (!token)
|
|
17
|
+
return { msg: "token数据错误", errorCode: 1, status: 0, token };
|
|
18
|
+
// 鉴权
|
|
19
|
+
if (permission.length != 0) {
|
|
20
|
+
const tPermission = token._permission;
|
|
21
|
+
if (!tPermission) {
|
|
22
|
+
return { msg: "权限错误", errorCode: 2, status: 0, token };
|
|
23
|
+
}
|
|
24
|
+
if (tPermission.filter((value) => permission.includes(value)).length == 0) {
|
|
25
|
+
return { msg: "权限错误", errorCode: 2, status: 0, token };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// 过期时间
|
|
29
|
+
if (token._masTime !== 0) {
|
|
30
|
+
if (getTimestamp() > token._masTime)
|
|
31
|
+
return { msg: "token过期", errorCode: 3, status: 0, token };
|
|
32
|
+
}
|
|
33
|
+
return Object.assign(Object.assign({}, token), { status: 1 });
|
|
34
|
+
};
|
|
35
|
+
exports.validToken = validToken;
|
|
36
|
+
const getErrorInfo = () => {
|
|
37
|
+
return [
|
|
38
|
+
{ msg: "没有传入token数据", errorCode: 0, status: 0 },
|
|
39
|
+
{ msg: "token数据错误", errorCode: 1, status: 0 },
|
|
40
|
+
{ msg: "权限错误", errorCode: 2, status: 0 },
|
|
41
|
+
{ msg: "token过期", errorCode: 3, status: 0 },
|
|
42
|
+
];
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
*
|
|
46
|
+
* @param param0 data:加密的数据,time:过期时间/s(为零则不会过期),permission:权限设置
|
|
47
|
+
* @param key 加密密钥
|
|
48
|
+
* @returns
|
|
49
|
+
*/
|
|
50
|
+
function createToken({ data = null, time = 0, permission = [] } = {}, key = "8087") {
|
|
51
|
+
const token = {};
|
|
52
|
+
token.data = data;
|
|
53
|
+
permission.length != 0 && (token._permission = permission);
|
|
54
|
+
time !== 0 && (token._masTime = time * 1000 + getTimestamp());
|
|
55
|
+
return encode(token, key, 1);
|
|
56
|
+
}
|
|
57
|
+
exports.createToken = createToken;
|
package/dist/utils/quickSend.js
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.default = (req, res, next) => {
|
|
13
|
-
// req.fields && (req.body = req.fields);
|
|
14
|
-
let right = true;
|
|
15
|
-
res.return = (data, status = 1, code = 200, msg = "") => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
-
if (!right)
|
|
17
|
-
return;
|
|
18
|
-
right = false;
|
|
19
|
-
if (data === null || data === undefined) {
|
|
20
|
-
status = 0;
|
|
21
|
-
}
|
|
22
|
-
if (data instanceof Promise)
|
|
23
|
-
data = yield data;
|
|
24
|
-
// if (typeof data != "string") data = JSON.stringify(data);
|
|
25
|
-
res.status(code).send({
|
|
26
|
-
msg,
|
|
27
|
-
status: !!status ? 1 : 0,
|
|
28
|
-
data: data === null || data === undefined ? null : data,
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
next();
|
|
32
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.default = (req, res, next) => {
|
|
13
|
+
// req.fields && (req.body = req.fields);
|
|
14
|
+
let right = true;
|
|
15
|
+
res.return = (data, status = 1, code = 200, msg = "") => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
+
if (!right)
|
|
17
|
+
return;
|
|
18
|
+
right = false;
|
|
19
|
+
if (data === null || data === undefined) {
|
|
20
|
+
status = 0;
|
|
21
|
+
}
|
|
22
|
+
if (data instanceof Promise)
|
|
23
|
+
data = yield data;
|
|
24
|
+
// if (typeof data != "string") data = JSON.stringify(data);
|
|
25
|
+
res.status(code).send({
|
|
26
|
+
msg,
|
|
27
|
+
status: !!status ? 1 : 0,
|
|
28
|
+
data: data === null || data === undefined ? null : data,
|
|
29
|
+
});
|
|
30
|
+
});
|
|
31
|
+
next();
|
|
32
|
+
};
|
package/dist/utils/readApi.js
CHANGED
|
@@ -1,50 +1,50 @@
|
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
const fs = __importStar(require("fs"));
|
|
27
|
-
const path = __importStar(require("path"));
|
|
28
|
-
function readFilesRecursively(folderPath, routerPrefix = "") {
|
|
29
|
-
const files = [];
|
|
30
|
-
fs.readdirSync(folderPath).forEach((fileName) => {
|
|
31
|
-
const filePath = path.join(folderPath, fileName);
|
|
32
|
-
const stat = fs.statSync(filePath);
|
|
33
|
-
if (stat.isDirectory()) {
|
|
34
|
-
const directoryPrefix = routerPrefix
|
|
35
|
-
? `${routerPrefix}/${fileName}`
|
|
36
|
-
: fileName;
|
|
37
|
-
const directoryFiles = readFilesRecursively(filePath, directoryPrefix);
|
|
38
|
-
files.push(...directoryFiles);
|
|
39
|
-
}
|
|
40
|
-
else {
|
|
41
|
-
const filePrefix = routerPrefix
|
|
42
|
-
? `${routerPrefix}/${fileName}`
|
|
43
|
-
: fileName;
|
|
44
|
-
const fileRoute = `/${filePrefix.replace(/\.[^/.]+$/, "")}`;
|
|
45
|
-
files.push(fileRoute);
|
|
46
|
-
}
|
|
47
|
-
});
|
|
48
|
-
return files;
|
|
49
|
-
}
|
|
50
|
-
exports.default = readFilesRecursively;
|
|
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
const fs = __importStar(require("fs"));
|
|
27
|
+
const path = __importStar(require("path"));
|
|
28
|
+
function readFilesRecursively(folderPath, routerPrefix = "") {
|
|
29
|
+
const files = [];
|
|
30
|
+
fs.readdirSync(folderPath).forEach((fileName) => {
|
|
31
|
+
const filePath = path.join(folderPath, fileName);
|
|
32
|
+
const stat = fs.statSync(filePath);
|
|
33
|
+
if (stat.isDirectory()) {
|
|
34
|
+
const directoryPrefix = routerPrefix
|
|
35
|
+
? `${routerPrefix}/${fileName}`
|
|
36
|
+
: fileName;
|
|
37
|
+
const directoryFiles = readFilesRecursively(filePath, directoryPrefix);
|
|
38
|
+
files.push(...directoryFiles);
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
const filePrefix = routerPrefix
|
|
42
|
+
? `${routerPrefix}/${fileName}`
|
|
43
|
+
: fileName;
|
|
44
|
+
const fileRoute = `/${filePrefix.replace(/\.[^/.]+$/, "")}`;
|
|
45
|
+
files.push(fileRoute);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
return files;
|
|
49
|
+
}
|
|
50
|
+
exports.default = readFilesRecursively;
|
|
@@ -1,37 +1,37 @@
|
|
|
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
|
-
const state_1 = require("
|
|
7
|
-
const validType_1 = __importDefault(require("./validType"));
|
|
8
|
-
exports.default = (req, res, next) => {
|
|
9
|
-
const Router = state_1.state.Router;
|
|
10
|
-
const routerObj = Router[req.path];
|
|
11
|
-
if (routerObj) {
|
|
12
|
-
if (routerObj.methods != "all" &&
|
|
13
|
-
routerObj.methods != req.method.toLowerCase()) {
|
|
14
|
-
return res.return("error method!", 0, 400);
|
|
15
|
-
}
|
|
16
|
-
if (routerObj.header && routerObj.header.length != 0) {
|
|
17
|
-
const headerObj = {};
|
|
18
|
-
routerObj.header.forEach((item) => {
|
|
19
|
-
headerObj[item.name] = item.type;
|
|
20
|
-
});
|
|
21
|
-
if (!(0, validType_1.default)(req.headers, headerObj)) {
|
|
22
|
-
return res.return("error headers format!", 0, 400);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
if (req.method == "GET" &&
|
|
26
|
-
routerObj.validFormat &&
|
|
27
|
-
!(0, validType_1.default)(req.query, routerObj.validFormat, !!routerObj.validFormatStrict)) {
|
|
28
|
-
return res.return("error data format!", 0, 400);
|
|
29
|
-
}
|
|
30
|
-
if (req.method == "POST" &&
|
|
31
|
-
routerObj.validFormat &&
|
|
32
|
-
!(0, validType_1.default)(req.body, routerObj.validFormat, !!routerObj.validFormatStrict)) {
|
|
33
|
-
return res.return("error data format!", 0, 400);
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
next();
|
|
37
|
-
};
|
|
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
|
+
const state_1 = require("../state");
|
|
7
|
+
const validType_1 = __importDefault(require("./validType"));
|
|
8
|
+
exports.default = (req, res, next) => {
|
|
9
|
+
const Router = state_1.state.Router;
|
|
10
|
+
const routerObj = Router[req.path];
|
|
11
|
+
if (routerObj) {
|
|
12
|
+
if (routerObj.methods != "all" &&
|
|
13
|
+
routerObj.methods != req.method.toLowerCase()) {
|
|
14
|
+
return res.return("error method!", 0, 400);
|
|
15
|
+
}
|
|
16
|
+
if (routerObj.header && routerObj.header.length != 0) {
|
|
17
|
+
const headerObj = {};
|
|
18
|
+
routerObj.header.forEach((item) => {
|
|
19
|
+
headerObj[item.name] = item.type;
|
|
20
|
+
});
|
|
21
|
+
if (!(0, validType_1.default)(req.headers, headerObj)) {
|
|
22
|
+
return res.return("error headers format!", 0, 400);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (req.method == "GET" &&
|
|
26
|
+
routerObj.validFormat &&
|
|
27
|
+
!(0, validType_1.default)(req.query, routerObj.validFormat, !!routerObj.validFormatStrict)) {
|
|
28
|
+
return res.return("error data format!", 0, 400);
|
|
29
|
+
}
|
|
30
|
+
if (req.method == "POST" &&
|
|
31
|
+
routerObj.validFormat &&
|
|
32
|
+
!(0, validType_1.default)(req.body, routerObj.validFormat, !!routerObj.validFormatStrict)) {
|
|
33
|
+
return res.return("error data format!", 0, 400);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
next();
|
|
37
|
+
};
|
package/dist/utils/validToken.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const state_1 = require("
|
|
4
|
-
const __1 = require("..");
|
|
5
|
-
const masUtils_1 = require("./masUtils");
|
|
6
|
-
exports.default = (req, res, next) => {
|
|
7
|
-
const r = state_1.state.Router[req.path];
|
|
8
|
-
const tokenConfig = state_1.state.config.token;
|
|
9
|
-
if ((0, masUtils_1.getType)(r === null || r === void 0 ? void 0 : r.permission) == "array") {
|
|
10
|
-
const token = req.headers[tokenConfig.headerParams];
|
|
11
|
-
if (!token) {
|
|
12
|
-
return res.return("缺少重要参数", 0);
|
|
13
|
-
}
|
|
14
|
-
let vt = (0, __1.validToken)({ token, permission: r.permission }, tokenConfig.pwd);
|
|
15
|
-
if (vt.status === 0) {
|
|
16
|
-
return res.return(vt.msg, 0, 200, vt.errorCode);
|
|
17
|
-
}
|
|
18
|
-
res.token = vt;
|
|
19
|
-
next();
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
next();
|
|
23
|
-
}
|
|
24
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const state_1 = require("../state");
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
const masUtils_1 = require("./masUtils");
|
|
6
|
+
exports.default = (req, res, next) => {
|
|
7
|
+
const r = state_1.state.Router[req.path];
|
|
8
|
+
const tokenConfig = state_1.state.config.token;
|
|
9
|
+
if ((0, masUtils_1.getType)(r === null || r === void 0 ? void 0 : r.permission) == "array") {
|
|
10
|
+
const token = req.headers[tokenConfig.headerParams];
|
|
11
|
+
if (!token) {
|
|
12
|
+
return res.return("缺少重要参数", 0);
|
|
13
|
+
}
|
|
14
|
+
let vt = (0, __1.validToken)({ token, permission: r.permission }, tokenConfig.pwd);
|
|
15
|
+
if (vt.status === 0) {
|
|
16
|
+
return res.return(vt.msg, 0, 200, vt.errorCode);
|
|
17
|
+
}
|
|
18
|
+
res.token = vt;
|
|
19
|
+
next();
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
next();
|
|
23
|
+
}
|
|
24
|
+
};
|
package/dist/utils/validType.js
CHANGED
|
@@ -1,101 +1,101 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const masUtils_1 = require("
|
|
4
|
-
const vliadBase = (obj, typeMapping) => {
|
|
5
|
-
return (0, masUtils_1.getType)(obj) == typeMapping.name.toLowerCase();
|
|
6
|
-
};
|
|
7
|
-
const validTypeObj = (obj, typeMapping) => {
|
|
8
|
-
if (obj === null || obj === undefined)
|
|
9
|
-
return false;
|
|
10
|
-
let typeT = (0, masUtils_1.getType)(typeMapping);
|
|
11
|
-
if (typeT == "function") {
|
|
12
|
-
return vliadBase(obj, typeMapping);
|
|
13
|
-
}
|
|
14
|
-
else if (typeT == "object") {
|
|
15
|
-
if ((0, masUtils_1.getType)(obj) !== "object")
|
|
16
|
-
return false;
|
|
17
|
-
for (let k in typeMapping) {
|
|
18
|
-
if (obj[k] === null || obj[k] === undefined)
|
|
19
|
-
return false;
|
|
20
|
-
if (!validType(obj[k], typeMapping[k]))
|
|
21
|
-
return false;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
else if (typeT == "array") {
|
|
25
|
-
if ((0, masUtils_1.getType)(obj) != "array")
|
|
26
|
-
return false;
|
|
27
|
-
if (obj.length === 0)
|
|
28
|
-
return false;
|
|
29
|
-
const typeMappingArrObj = typeMapping[0];
|
|
30
|
-
if (!typeMappingArrObj) {
|
|
31
|
-
throw new Error(`非法的效验格式 ${typeMapping} ${typeMappingArrObj}`);
|
|
32
|
-
}
|
|
33
|
-
if ((0, masUtils_1.getType)(obj) != "array")
|
|
34
|
-
return false;
|
|
35
|
-
for (let v of obj) {
|
|
36
|
-
if (!validTypeObj(v, typeMappingArrObj))
|
|
37
|
-
return false;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
return true;
|
|
41
|
-
};
|
|
42
|
-
const validTypeObjStrict = (obj, typeMapping) => {
|
|
43
|
-
if (obj === null || obj === undefined)
|
|
44
|
-
return false;
|
|
45
|
-
let typeT = (0, masUtils_1.getType)(typeMapping);
|
|
46
|
-
if (typeT == "function") {
|
|
47
|
-
return vliadBase(obj, typeMapping);
|
|
48
|
-
}
|
|
49
|
-
else if (typeT == "object") {
|
|
50
|
-
if ((0, masUtils_1.getType)(obj) !== "object")
|
|
51
|
-
return false;
|
|
52
|
-
if (Object.keys(obj).length != Object.keys(typeT).length)
|
|
53
|
-
return false;
|
|
54
|
-
for (let k in typeMapping) {
|
|
55
|
-
if (obj[k] === null || obj[k] === undefined)
|
|
56
|
-
return false;
|
|
57
|
-
if (!validType(obj[k], typeMapping[k]))
|
|
58
|
-
return false;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
else if (typeT == "array") {
|
|
62
|
-
if ((0, masUtils_1.getType)(obj) != "array")
|
|
63
|
-
return false;
|
|
64
|
-
if (obj.length === 0)
|
|
65
|
-
return false;
|
|
66
|
-
const typeMappingArrObj = typeMapping[0];
|
|
67
|
-
if (!typeMappingArrObj) {
|
|
68
|
-
throw new Error(`非法的效验格式 ${typeMapping} ${typeMappingArrObj}`);
|
|
69
|
-
}
|
|
70
|
-
if ((0, masUtils_1.getType)(obj) != "array")
|
|
71
|
-
return false;
|
|
72
|
-
for (let v of obj) {
|
|
73
|
-
if (!validTypeObj(v, typeMappingArrObj))
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
return true;
|
|
78
|
-
};
|
|
79
|
-
function validType(obj, typeMapping, strict = false) {
|
|
80
|
-
return strict
|
|
81
|
-
? validTypeObjStrict(obj, typeMapping)
|
|
82
|
-
: validTypeObj(obj, typeMapping);
|
|
83
|
-
}
|
|
84
|
-
exports.default = validType;
|
|
85
|
-
// let res = validType(
|
|
86
|
-
// { name: "2", arr: [1] },
|
|
87
|
-
// { name: String, arr: [Number] },
|
|
88
|
-
// true
|
|
89
|
-
// [
|
|
90
|
-
// { name: "s", age: "" },
|
|
91
|
-
// { names: "s", age: "" },
|
|
92
|
-
// ],
|
|
93
|
-
// { name: "11", age: 1, obj: { a: "1", b: 1 } },
|
|
94
|
-
// String,
|
|
95
|
-
// Boolean,
|
|
96
|
-
// { name: String, age: Number, obj: { a: String, b: Number } }
|
|
97
|
-
// [{ name: String }]
|
|
98
|
-
// );
|
|
99
|
-
// console.log(res);
|
|
100
|
-
// console.log(getType(null)); //"null"
|
|
101
|
-
// console.log(getType(undefined)); //"undefined"
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const masUtils_1 = require("../utils/masUtils");
|
|
4
|
+
const vliadBase = (obj, typeMapping) => {
|
|
5
|
+
return (0, masUtils_1.getType)(obj) == typeMapping.name.toLowerCase();
|
|
6
|
+
};
|
|
7
|
+
const validTypeObj = (obj, typeMapping) => {
|
|
8
|
+
if (obj === null || obj === undefined)
|
|
9
|
+
return false;
|
|
10
|
+
let typeT = (0, masUtils_1.getType)(typeMapping);
|
|
11
|
+
if (typeT == "function") {
|
|
12
|
+
return vliadBase(obj, typeMapping);
|
|
13
|
+
}
|
|
14
|
+
else if (typeT == "object") {
|
|
15
|
+
if ((0, masUtils_1.getType)(obj) !== "object")
|
|
16
|
+
return false;
|
|
17
|
+
for (let k in typeMapping) {
|
|
18
|
+
if (obj[k] === null || obj[k] === undefined)
|
|
19
|
+
return false;
|
|
20
|
+
if (!validType(obj[k], typeMapping[k]))
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
else if (typeT == "array") {
|
|
25
|
+
if ((0, masUtils_1.getType)(obj) != "array")
|
|
26
|
+
return false;
|
|
27
|
+
if (obj.length === 0)
|
|
28
|
+
return false;
|
|
29
|
+
const typeMappingArrObj = typeMapping[0];
|
|
30
|
+
if (!typeMappingArrObj) {
|
|
31
|
+
throw new Error(`非法的效验格式 ${typeMapping} ${typeMappingArrObj}`);
|
|
32
|
+
}
|
|
33
|
+
if ((0, masUtils_1.getType)(obj) != "array")
|
|
34
|
+
return false;
|
|
35
|
+
for (let v of obj) {
|
|
36
|
+
if (!validTypeObj(v, typeMappingArrObj))
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return true;
|
|
41
|
+
};
|
|
42
|
+
const validTypeObjStrict = (obj, typeMapping) => {
|
|
43
|
+
if (obj === null || obj === undefined)
|
|
44
|
+
return false;
|
|
45
|
+
let typeT = (0, masUtils_1.getType)(typeMapping);
|
|
46
|
+
if (typeT == "function") {
|
|
47
|
+
return vliadBase(obj, typeMapping);
|
|
48
|
+
}
|
|
49
|
+
else if (typeT == "object") {
|
|
50
|
+
if ((0, masUtils_1.getType)(obj) !== "object")
|
|
51
|
+
return false;
|
|
52
|
+
if (Object.keys(obj).length != Object.keys(typeT).length)
|
|
53
|
+
return false;
|
|
54
|
+
for (let k in typeMapping) {
|
|
55
|
+
if (obj[k] === null || obj[k] === undefined)
|
|
56
|
+
return false;
|
|
57
|
+
if (!validType(obj[k], typeMapping[k]))
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else if (typeT == "array") {
|
|
62
|
+
if ((0, masUtils_1.getType)(obj) != "array")
|
|
63
|
+
return false;
|
|
64
|
+
if (obj.length === 0)
|
|
65
|
+
return false;
|
|
66
|
+
const typeMappingArrObj = typeMapping[0];
|
|
67
|
+
if (!typeMappingArrObj) {
|
|
68
|
+
throw new Error(`非法的效验格式 ${typeMapping} ${typeMappingArrObj}`);
|
|
69
|
+
}
|
|
70
|
+
if ((0, masUtils_1.getType)(obj) != "array")
|
|
71
|
+
return false;
|
|
72
|
+
for (let v of obj) {
|
|
73
|
+
if (!validTypeObj(v, typeMappingArrObj))
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return true;
|
|
78
|
+
};
|
|
79
|
+
function validType(obj, typeMapping, strict = false) {
|
|
80
|
+
return strict
|
|
81
|
+
? validTypeObjStrict(obj, typeMapping)
|
|
82
|
+
: validTypeObj(obj, typeMapping);
|
|
83
|
+
}
|
|
84
|
+
exports.default = validType;
|
|
85
|
+
// let res = validType(
|
|
86
|
+
// { name: "2", arr: [1] },
|
|
87
|
+
// { name: String, arr: [Number] },
|
|
88
|
+
// true
|
|
89
|
+
// [
|
|
90
|
+
// { name: "s", age: "" },
|
|
91
|
+
// { names: "s", age: "" },
|
|
92
|
+
// ],
|
|
93
|
+
// { name: "11", age: 1, obj: { a: "1", b: 1 } },
|
|
94
|
+
// String,
|
|
95
|
+
// Boolean,
|
|
96
|
+
// { name: String, age: Number, obj: { a: String, b: Number } }
|
|
97
|
+
// [{ name: String }]
|
|
98
|
+
// );
|
|
99
|
+
// console.log(res);
|
|
100
|
+
// console.log(getType(null)); //"null"
|
|
101
|
+
// console.log(getType(undefined)); //"undefined"
|