mas-server 3.0.2 → 3.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.temp/merge/a.ts +4 -4
- package/.temp/merge/b.ts +3 -3
- package/.temp/merge/i.js +102 -102
- package/.temp/merge/test.ts +2 -2
- package/.temp/merge/validType copy.ts +149 -149
- package/.temp/merge/validType.ts +98 -98
- package/.temp/merge/validTypeOptimize.ts +98 -98
- package/.vscode/settings.json +3 -3
- package/dist/utils/createRouter.js +20 -1
- package/package.json +2 -2
- package/src/state.ts +1 -1
- package/src/utils/createRouter.ts +13 -1
- package/src/utils/quickSend.ts +19 -19
- package/src/utils/readApi.ts +28 -28
- package/src/utils/validType.ts +81 -81
- package/test/scripts/createApiFile.ts +26 -26
- package/test/scripts/run.ts +4 -4
- package/test/src/debug.ts +1 -1
- package/test/test.ts +1 -1
- package/tsconfig.json +21 -21
- package/tsconfigschema.json +1263 -1263
package/.temp/merge/validType.ts
CHANGED
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
import { getType } from "../utils/masUtils";
|
|
2
|
-
|
|
3
|
-
type BasicTypeDescriptor =
|
|
4
|
-
| StringConstructor
|
|
5
|
-
| NumberConstructor
|
|
6
|
-
| BooleanConstructor
|
|
7
|
-
| ObjectConstructor;
|
|
8
|
-
type TypeDescriptor = BasicTypeDescriptor | Array<any>;
|
|
9
|
-
|
|
10
|
-
interface TypeMapping {
|
|
11
|
-
[key: string]:
|
|
12
|
-
| TypeDescriptor
|
|
13
|
-
| TypeMapping
|
|
14
|
-
| Array<TypeDescriptor | TypeMapping>;
|
|
15
|
-
}
|
|
16
|
-
const vliadBase = (obj, typeMapping) => {
|
|
17
|
-
return getType(obj) == (typeMapping as any).name.toLowerCase();
|
|
18
|
-
};
|
|
19
|
-
const validTypeObj = (obj: any, typeMapping: TypeMapping | TypeDescriptor) => {
|
|
20
|
-
if (obj === null || obj === undefined) return false;
|
|
21
|
-
let typeT = getType(typeMapping);
|
|
22
|
-
if (typeT == "function") {
|
|
23
|
-
return vliadBase(obj, typeMapping);
|
|
24
|
-
} else if (typeT == "object") {
|
|
25
|
-
if (getType(obj) !== "object") return false;
|
|
26
|
-
for (let k in typeMapping) {
|
|
27
|
-
if (obj[k] === null || obj[k] === undefined) return false;
|
|
28
|
-
if (!validType(obj[k], typeMapping[k])) return false;
|
|
29
|
-
}
|
|
30
|
-
} else if (typeT == "array") {
|
|
31
|
-
if (getType(obj) != "array") return false;
|
|
32
|
-
if (obj.length === 0) return false;
|
|
33
|
-
const typeMappingArrObj = typeMapping[0];
|
|
34
|
-
if (!typeMappingArrObj) {
|
|
35
|
-
throw new Error(`非法的效验格式 ${typeMapping} ${typeMappingArrObj}`);
|
|
36
|
-
}
|
|
37
|
-
if (getType(obj) != "array") return false;
|
|
38
|
-
for (let v of obj) {
|
|
39
|
-
if (!validTypeObj(v, typeMappingArrObj)) return false;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
return true;
|
|
43
|
-
};
|
|
44
|
-
const validTypeObjStrict = (
|
|
45
|
-
obj: any,
|
|
46
|
-
typeMapping: TypeMapping | TypeDescriptor
|
|
47
|
-
) => {
|
|
48
|
-
if (obj === null || obj === undefined) return false;
|
|
49
|
-
let typeT = getType(typeMapping);
|
|
50
|
-
if (typeT == "function") {
|
|
51
|
-
return vliadBase(obj, typeMapping);
|
|
52
|
-
} else if (typeT == "object") {
|
|
53
|
-
if (getType(obj) !== "object") return false;
|
|
54
|
-
if (Object.keys(obj).length != Object.keys(typeT).length) return false;
|
|
55
|
-
for (let k in typeMapping) {
|
|
56
|
-
if (obj[k] === null || obj[k] === undefined) return false;
|
|
57
|
-
if (!validType(obj[k], typeMapping[k])) return false;
|
|
58
|
-
}
|
|
59
|
-
} else if (typeT == "array") {
|
|
60
|
-
if (getType(obj) != "array") return false;
|
|
61
|
-
if (obj.length === 0) return false;
|
|
62
|
-
const typeMappingArrObj = typeMapping[0];
|
|
63
|
-
if (!typeMappingArrObj) {
|
|
64
|
-
throw new Error(`非法的效验格式 ${typeMapping} ${typeMappingArrObj}`);
|
|
65
|
-
}
|
|
66
|
-
if (getType(obj) != "array") return false;
|
|
67
|
-
for (let v of obj) {
|
|
68
|
-
if (!validTypeObj(v, typeMappingArrObj)) return false;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return true;
|
|
72
|
-
};
|
|
73
|
-
export default function validType(
|
|
74
|
-
obj: any,
|
|
75
|
-
typeMapping: TypeMapping | TypeDescriptor,
|
|
76
|
-
strict: boolean = false
|
|
77
|
-
): boolean {
|
|
78
|
-
return strict
|
|
79
|
-
? validTypeObjStrict(obj, typeMapping)
|
|
80
|
-
: validTypeObj(obj, typeMapping);
|
|
81
|
-
}
|
|
82
|
-
// let res = validType(
|
|
83
|
-
// { name: "2", arr: [1] },
|
|
84
|
-
// { name: String, arr: [Number] },
|
|
85
|
-
// true
|
|
86
|
-
// [
|
|
87
|
-
// { name: "s", age: "" },
|
|
88
|
-
// { names: "s", age: "" },
|
|
89
|
-
// ],
|
|
90
|
-
// { name: "11", age: 1, obj: { a: "1", b: 1 } },
|
|
91
|
-
// String,
|
|
92
|
-
// Boolean,
|
|
93
|
-
// { name: String, age: Number, obj: { a: String, b: Number } }
|
|
94
|
-
// [{ name: String }]
|
|
95
|
-
// );
|
|
96
|
-
// console.log(res);
|
|
97
|
-
// console.log(getType(null)); //"null"
|
|
98
|
-
// console.log(getType(undefined)); //"undefined"
|
|
1
|
+
import { getType } from "../utils/masUtils";
|
|
2
|
+
|
|
3
|
+
type BasicTypeDescriptor =
|
|
4
|
+
| StringConstructor
|
|
5
|
+
| NumberConstructor
|
|
6
|
+
| BooleanConstructor
|
|
7
|
+
| ObjectConstructor;
|
|
8
|
+
type TypeDescriptor = BasicTypeDescriptor | Array<any>;
|
|
9
|
+
|
|
10
|
+
interface TypeMapping {
|
|
11
|
+
[key: string]:
|
|
12
|
+
| TypeDescriptor
|
|
13
|
+
| TypeMapping
|
|
14
|
+
| Array<TypeDescriptor | TypeMapping>;
|
|
15
|
+
}
|
|
16
|
+
const vliadBase = (obj, typeMapping) => {
|
|
17
|
+
return getType(obj) == (typeMapping as any).name.toLowerCase();
|
|
18
|
+
};
|
|
19
|
+
const validTypeObj = (obj: any, typeMapping: TypeMapping | TypeDescriptor) => {
|
|
20
|
+
if (obj === null || obj === undefined) return false;
|
|
21
|
+
let typeT = getType(typeMapping);
|
|
22
|
+
if (typeT == "function") {
|
|
23
|
+
return vliadBase(obj, typeMapping);
|
|
24
|
+
} else if (typeT == "object") {
|
|
25
|
+
if (getType(obj) !== "object") return false;
|
|
26
|
+
for (let k in typeMapping) {
|
|
27
|
+
if (obj[k] === null || obj[k] === undefined) return false;
|
|
28
|
+
if (!validType(obj[k], typeMapping[k])) return false;
|
|
29
|
+
}
|
|
30
|
+
} else if (typeT == "array") {
|
|
31
|
+
if (getType(obj) != "array") return false;
|
|
32
|
+
if (obj.length === 0) return false;
|
|
33
|
+
const typeMappingArrObj = typeMapping[0];
|
|
34
|
+
if (!typeMappingArrObj) {
|
|
35
|
+
throw new Error(`非法的效验格式 ${typeMapping} ${typeMappingArrObj}`);
|
|
36
|
+
}
|
|
37
|
+
if (getType(obj) != "array") return false;
|
|
38
|
+
for (let v of obj) {
|
|
39
|
+
if (!validTypeObj(v, typeMappingArrObj)) return false;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return true;
|
|
43
|
+
};
|
|
44
|
+
const validTypeObjStrict = (
|
|
45
|
+
obj: any,
|
|
46
|
+
typeMapping: TypeMapping | TypeDescriptor
|
|
47
|
+
) => {
|
|
48
|
+
if (obj === null || obj === undefined) return false;
|
|
49
|
+
let typeT = getType(typeMapping);
|
|
50
|
+
if (typeT == "function") {
|
|
51
|
+
return vliadBase(obj, typeMapping);
|
|
52
|
+
} else if (typeT == "object") {
|
|
53
|
+
if (getType(obj) !== "object") return false;
|
|
54
|
+
if (Object.keys(obj).length != Object.keys(typeT).length) return false;
|
|
55
|
+
for (let k in typeMapping) {
|
|
56
|
+
if (obj[k] === null || obj[k] === undefined) return false;
|
|
57
|
+
if (!validType(obj[k], typeMapping[k])) return false;
|
|
58
|
+
}
|
|
59
|
+
} else if (typeT == "array") {
|
|
60
|
+
if (getType(obj) != "array") return false;
|
|
61
|
+
if (obj.length === 0) return false;
|
|
62
|
+
const typeMappingArrObj = typeMapping[0];
|
|
63
|
+
if (!typeMappingArrObj) {
|
|
64
|
+
throw new Error(`非法的效验格式 ${typeMapping} ${typeMappingArrObj}`);
|
|
65
|
+
}
|
|
66
|
+
if (getType(obj) != "array") return false;
|
|
67
|
+
for (let v of obj) {
|
|
68
|
+
if (!validTypeObj(v, typeMappingArrObj)) return false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return true;
|
|
72
|
+
};
|
|
73
|
+
export default function validType(
|
|
74
|
+
obj: any,
|
|
75
|
+
typeMapping: TypeMapping | TypeDescriptor,
|
|
76
|
+
strict: boolean = false
|
|
77
|
+
): boolean {
|
|
78
|
+
return strict
|
|
79
|
+
? validTypeObjStrict(obj, typeMapping)
|
|
80
|
+
: validTypeObj(obj, typeMapping);
|
|
81
|
+
}
|
|
82
|
+
// let res = validType(
|
|
83
|
+
// { name: "2", arr: [1] },
|
|
84
|
+
// { name: String, arr: [Number] },
|
|
85
|
+
// true
|
|
86
|
+
// [
|
|
87
|
+
// { name: "s", age: "" },
|
|
88
|
+
// { names: "s", age: "" },
|
|
89
|
+
// ],
|
|
90
|
+
// { name: "11", age: 1, obj: { a: "1", b: 1 } },
|
|
91
|
+
// String,
|
|
92
|
+
// Boolean,
|
|
93
|
+
// { name: String, age: Number, obj: { a: String, b: Number } }
|
|
94
|
+
// [{ name: String }]
|
|
95
|
+
// );
|
|
96
|
+
// console.log(res);
|
|
97
|
+
// console.log(getType(null)); //"null"
|
|
98
|
+
// console.log(getType(undefined)); //"undefined"
|
|
@@ -1,98 +1,98 @@
|
|
|
1
|
-
type BasicTypeDescriptor =
|
|
2
|
-
| typeof String
|
|
3
|
-
| typeof Number
|
|
4
|
-
| typeof Boolean
|
|
5
|
-
| typeof Object;
|
|
6
|
-
type TypeDescriptor = BasicTypeDescriptor | Array<TypeDescriptor>;
|
|
7
|
-
|
|
8
|
-
interface TypeMapping {
|
|
9
|
-
[key: string]: TypeDescriptor | TypeMapping;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
function getTypeName(descriptor: TypeDescriptor): string {
|
|
13
|
-
if (Array.isArray(descriptor)) {
|
|
14
|
-
return "array";
|
|
15
|
-
} else {
|
|
16
|
-
return descriptor.name.toLowerCase();
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
function validType(obj: any, typeMapping: TypeMapping): boolean {
|
|
21
|
-
for (const key in typeMapping) {
|
|
22
|
-
if (!(key in obj)) {
|
|
23
|
-
return false;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
const targetType = typeMapping[key];
|
|
27
|
-
const objValue = obj[key];
|
|
28
|
-
|
|
29
|
-
if (Array.isArray(targetType)) {
|
|
30
|
-
if (!Array.isArray(objValue)) {
|
|
31
|
-
return false;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const arrayElementType = targetType[0];
|
|
35
|
-
|
|
36
|
-
for (const element of objValue) {
|
|
37
|
-
if (typeof arrayElementType === "object") {
|
|
38
|
-
if (
|
|
39
|
-
!validType(element, arrayElementType as unknown as TypeMapping) ||
|
|
40
|
-
Object.keys(element).length !==
|
|
41
|
-
Object.keys(arrayElementType as unknown as TypeMapping).length
|
|
42
|
-
) {
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
} else {
|
|
46
|
-
if (
|
|
47
|
-
typeof element !== getTypeName(arrayElementType as TypeDescriptor)
|
|
48
|
-
) {
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
} else if (typeof targetType === "object") {
|
|
54
|
-
if (
|
|
55
|
-
typeof objValue !== "object" ||
|
|
56
|
-
Array.isArray(objValue) ||
|
|
57
|
-
!validType(objValue, targetType as TypeMapping) ||
|
|
58
|
-
Object.keys(objValue).length !==
|
|
59
|
-
Object.keys(targetType as TypeMapping).length
|
|
60
|
-
) {
|
|
61
|
-
return false;
|
|
62
|
-
}
|
|
63
|
-
} else {
|
|
64
|
-
if (typeof objValue !== getTypeName(targetType as TypeDescriptor)) {
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return true;
|
|
71
|
-
}
|
|
72
|
-
// 检查基本类型
|
|
73
|
-
console.log(
|
|
74
|
-
validType({ name: "Alice", age: 30 }, { name: String, age: Number })
|
|
75
|
-
); // 输出 true
|
|
76
|
-
console.log(
|
|
77
|
-
validType({ name: "Alice", age: 30 }, { name: String, age: String })
|
|
78
|
-
); // 输出 false
|
|
79
|
-
|
|
80
|
-
// 检查数组类型
|
|
81
|
-
console.log(validType({ values: [1, 2, 3] }, { values: [Number] })); // 输出 true
|
|
82
|
-
console.log(validType({ values: [1, "2", 3] }, { values: [Number] })); // 输出 false
|
|
83
|
-
|
|
84
|
-
// 检查嵌套类型
|
|
85
|
-
console.log(
|
|
86
|
-
validType(
|
|
87
|
-
{ person: { name: "Alice", age: 30 } },
|
|
88
|
-
{ person: { name: String, age: Number } }
|
|
89
|
-
)
|
|
90
|
-
); // 输出 true
|
|
91
|
-
console.log(
|
|
92
|
-
validType(
|
|
93
|
-
{ person: { name: "Alice", age: 30 } },
|
|
94
|
-
{ person: { name: String, age: String } }
|
|
95
|
-
)
|
|
96
|
-
); // 输出
|
|
97
|
-
|
|
98
|
-
export {};
|
|
1
|
+
type BasicTypeDescriptor =
|
|
2
|
+
| typeof String
|
|
3
|
+
| typeof Number
|
|
4
|
+
| typeof Boolean
|
|
5
|
+
| typeof Object;
|
|
6
|
+
type TypeDescriptor = BasicTypeDescriptor | Array<TypeDescriptor>;
|
|
7
|
+
|
|
8
|
+
interface TypeMapping {
|
|
9
|
+
[key: string]: TypeDescriptor | TypeMapping;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
function getTypeName(descriptor: TypeDescriptor): string {
|
|
13
|
+
if (Array.isArray(descriptor)) {
|
|
14
|
+
return "array";
|
|
15
|
+
} else {
|
|
16
|
+
return descriptor.name.toLowerCase();
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function validType(obj: any, typeMapping: TypeMapping): boolean {
|
|
21
|
+
for (const key in typeMapping) {
|
|
22
|
+
if (!(key in obj)) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const targetType = typeMapping[key];
|
|
27
|
+
const objValue = obj[key];
|
|
28
|
+
|
|
29
|
+
if (Array.isArray(targetType)) {
|
|
30
|
+
if (!Array.isArray(objValue)) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
const arrayElementType = targetType[0];
|
|
35
|
+
|
|
36
|
+
for (const element of objValue) {
|
|
37
|
+
if (typeof arrayElementType === "object") {
|
|
38
|
+
if (
|
|
39
|
+
!validType(element, arrayElementType as unknown as TypeMapping) ||
|
|
40
|
+
Object.keys(element).length !==
|
|
41
|
+
Object.keys(arrayElementType as unknown as TypeMapping).length
|
|
42
|
+
) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
} else {
|
|
46
|
+
if (
|
|
47
|
+
typeof element !== getTypeName(arrayElementType as TypeDescriptor)
|
|
48
|
+
) {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
} else if (typeof targetType === "object") {
|
|
54
|
+
if (
|
|
55
|
+
typeof objValue !== "object" ||
|
|
56
|
+
Array.isArray(objValue) ||
|
|
57
|
+
!validType(objValue, targetType as TypeMapping) ||
|
|
58
|
+
Object.keys(objValue).length !==
|
|
59
|
+
Object.keys(targetType as TypeMapping).length
|
|
60
|
+
) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
} else {
|
|
64
|
+
if (typeof objValue !== getTypeName(targetType as TypeDescriptor)) {
|
|
65
|
+
return false;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return true;
|
|
71
|
+
}
|
|
72
|
+
// 检查基本类型
|
|
73
|
+
console.log(
|
|
74
|
+
validType({ name: "Alice", age: 30 }, { name: String, age: Number })
|
|
75
|
+
); // 输出 true
|
|
76
|
+
console.log(
|
|
77
|
+
validType({ name: "Alice", age: 30 }, { name: String, age: String })
|
|
78
|
+
); // 输出 false
|
|
79
|
+
|
|
80
|
+
// 检查数组类型
|
|
81
|
+
console.log(validType({ values: [1, 2, 3] }, { values: [Number] })); // 输出 true
|
|
82
|
+
console.log(validType({ values: [1, "2", 3] }, { values: [Number] })); // 输出 false
|
|
83
|
+
|
|
84
|
+
// 检查嵌套类型
|
|
85
|
+
console.log(
|
|
86
|
+
validType(
|
|
87
|
+
{ person: { name: "Alice", age: 30 } },
|
|
88
|
+
{ person: { name: String, age: Number } }
|
|
89
|
+
)
|
|
90
|
+
); // 输出 true
|
|
91
|
+
console.log(
|
|
92
|
+
validType(
|
|
93
|
+
{ person: { name: "Alice", age: 30 } },
|
|
94
|
+
{ person: { name: String, age: String } }
|
|
95
|
+
)
|
|
96
|
+
); // 输出
|
|
97
|
+
|
|
98
|
+
export {};
|
package/.vscode/settings.json
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
{
|
|
2
|
-
"javascript.format.semicolons": "insert"
|
|
3
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"javascript.format.semicolons": "insert"
|
|
3
|
+
}
|
|
@@ -22,6 +22,15 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
22
22
|
__setModuleDefault(result, mod);
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
+
});
|
|
33
|
+
};
|
|
25
34
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
35
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
36
|
};
|
|
@@ -46,7 +55,17 @@ function createRouter(app, apiDir) {
|
|
|
46
55
|
console.info(ansi_colors_1.default.yellow(`${item} 没有导出函数,已跳过..`));
|
|
47
56
|
}
|
|
48
57
|
else {
|
|
49
|
-
apiFunc &&
|
|
58
|
+
apiFunc &&
|
|
59
|
+
app[Router[item].methods](item, (req, res) => __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
var _a;
|
|
61
|
+
try {
|
|
62
|
+
yield apiFunc(req, res);
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
console.log(error, error.toString);
|
|
66
|
+
res.return({ msg: "服务器错误", error: ((_a = error === null || error === void 0 ? void 0 : error.toString) === null || _a === void 0 ? void 0 : _a.call(error)) || null }, 0, 500);
|
|
67
|
+
}
|
|
68
|
+
}));
|
|
50
69
|
}
|
|
51
70
|
}
|
|
52
71
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mas-server",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.04",
|
|
4
4
|
"description": "一款基于express面向中小型项目的后端框架",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"typings": "src/index.ts",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
"init": "npx nodemon ./test/scripts/beforeCreated.ts -end",
|
|
15
15
|
"gsft": "npx nodemon ./test/scripts/getSqlFormType.ts",
|
|
16
16
|
"build": "node ./beforebuild.js && tsc --project ./tsconfig-build.json",
|
|
17
|
-
"sync": "npm run build && npm publish && cnpm sync mas-server && explorer \"https://npmmirror.com/package/mas-server\""
|
|
17
|
+
"sync": "npm run build && npm publish --registry=https://registry.npmjs.org && cnpm sync mas-server && explorer \"https://npmmirror.com/package/mas-server\""
|
|
18
18
|
},
|
|
19
19
|
"keywords": [],
|
|
20
20
|
"author": "tingxi8087",
|
package/src/state.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const state: any = {};
|
|
1
|
+
export const state: any = {};
|
|
@@ -16,7 +16,19 @@ export default function createRouter(app, apiDir: string) {
|
|
|
16
16
|
if (!apiFunc) {
|
|
17
17
|
console.info(c.yellow(`${item} 没有导出函数,已跳过..`));
|
|
18
18
|
} else {
|
|
19
|
-
apiFunc &&
|
|
19
|
+
apiFunc &&
|
|
20
|
+
app[Router[item].methods](item, async (req, res) => {
|
|
21
|
+
try {
|
|
22
|
+
await apiFunc(req, res);
|
|
23
|
+
} catch (error) {
|
|
24
|
+
console.log(error, error.toString);
|
|
25
|
+
res.return(
|
|
26
|
+
{ msg: "服务器错误", error: error?.toString?.() || null },
|
|
27
|
+
0,
|
|
28
|
+
500
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
});
|
|
20
32
|
}
|
|
21
33
|
}
|
|
22
34
|
}
|
package/src/utils/quickSend.ts
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
export default (req, res, next) => {
|
|
2
|
-
// req.fields && (req.body = req.fields);
|
|
3
|
-
let right = true;
|
|
4
|
-
res.return = async (data, status = 1, code = 200, msg = "") => {
|
|
5
|
-
if (!right) return;
|
|
6
|
-
right = false;
|
|
7
|
-
if (data === null || data === undefined) {
|
|
8
|
-
status = 0;
|
|
9
|
-
}
|
|
10
|
-
if (data instanceof Promise) data = await data;
|
|
11
|
-
// if (typeof data != "string") data = JSON.stringify(data);
|
|
12
|
-
res.status(code).send({
|
|
13
|
-
msg,
|
|
14
|
-
status: !!status ? 1 : 0,
|
|
15
|
-
data: data === null || data === undefined ? null : data,
|
|
16
|
-
});
|
|
17
|
-
};
|
|
18
|
-
next();
|
|
19
|
-
};
|
|
1
|
+
export default (req, res, next) => {
|
|
2
|
+
// req.fields && (req.body = req.fields);
|
|
3
|
+
let right = true;
|
|
4
|
+
res.return = async (data, status = 1, code = 200, msg = "") => {
|
|
5
|
+
if (!right) return;
|
|
6
|
+
right = false;
|
|
7
|
+
if (data === null || data === undefined) {
|
|
8
|
+
status = 0;
|
|
9
|
+
}
|
|
10
|
+
if (data instanceof Promise) data = await data;
|
|
11
|
+
// if (typeof data != "string") data = JSON.stringify(data);
|
|
12
|
+
res.status(code).send({
|
|
13
|
+
msg,
|
|
14
|
+
status: !!status ? 1 : 0,
|
|
15
|
+
data: data === null || data === undefined ? null : data,
|
|
16
|
+
});
|
|
17
|
+
};
|
|
18
|
+
next();
|
|
19
|
+
};
|
package/src/utils/readApi.ts
CHANGED
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
import * as fs from "fs";
|
|
2
|
-
import * as path from "path";
|
|
3
|
-
|
|
4
|
-
export default function readFilesRecursively(
|
|
5
|
-
folderPath: string,
|
|
6
|
-
routerPrefix: string = ""
|
|
7
|
-
): string[] {
|
|
8
|
-
const files: string[] = [];
|
|
9
|
-
fs.readdirSync(folderPath).forEach((fileName) => {
|
|
10
|
-
const filePath = path.join(folderPath, fileName);
|
|
11
|
-
const stat = fs.statSync(filePath);
|
|
12
|
-
if (stat.isDirectory()) {
|
|
13
|
-
const directoryPrefix = routerPrefix
|
|
14
|
-
? `${routerPrefix}/${fileName}`
|
|
15
|
-
: fileName;
|
|
16
|
-
const directoryFiles = readFilesRecursively(filePath, directoryPrefix);
|
|
17
|
-
files.push(...directoryFiles);
|
|
18
|
-
} else {
|
|
19
|
-
const filePrefix = routerPrefix
|
|
20
|
-
? `${routerPrefix}/${fileName}`
|
|
21
|
-
: fileName;
|
|
22
|
-
const fileRoute = `/${filePrefix.replace(/\.[^/.]+$/, "")}`;
|
|
23
|
-
files.push(fileRoute);
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
return files;
|
|
28
|
-
}
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
|
|
4
|
+
export default function readFilesRecursively(
|
|
5
|
+
folderPath: string,
|
|
6
|
+
routerPrefix: string = ""
|
|
7
|
+
): string[] {
|
|
8
|
+
const files: string[] = [];
|
|
9
|
+
fs.readdirSync(folderPath).forEach((fileName) => {
|
|
10
|
+
const filePath = path.join(folderPath, fileName);
|
|
11
|
+
const stat = fs.statSync(filePath);
|
|
12
|
+
if (stat.isDirectory()) {
|
|
13
|
+
const directoryPrefix = routerPrefix
|
|
14
|
+
? `${routerPrefix}/${fileName}`
|
|
15
|
+
: fileName;
|
|
16
|
+
const directoryFiles = readFilesRecursively(filePath, directoryPrefix);
|
|
17
|
+
files.push(...directoryFiles);
|
|
18
|
+
} else {
|
|
19
|
+
const filePrefix = routerPrefix
|
|
20
|
+
? `${routerPrefix}/${fileName}`
|
|
21
|
+
: fileName;
|
|
22
|
+
const fileRoute = `/${filePrefix.replace(/\.[^/.]+$/, "")}`;
|
|
23
|
+
files.push(fileRoute);
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
|
|
27
|
+
return files;
|
|
28
|
+
}
|