mas-server 2.0.3 → 2.0.5

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.
Files changed (119) hide show
  1. package/.temp/merge/validType.ts +98 -0
  2. package/dist/index.js +8 -47
  3. package/dist/src/index.js +100 -0
  4. package/dist/src/state.js +4 -0
  5. package/dist/src/typings/index.js +2 -0
  6. package/dist/src/utils/apiDoc.js +33 -0
  7. package/dist/src/utils/createRouter.js +51 -0
  8. package/dist/src/utils/getLog.js +18 -0
  9. package/dist/src/utils/getRouterInfo.js +34 -0
  10. package/dist/src/utils/masUtils.js +12 -0
  11. package/dist/src/utils/meaToken.js +57 -0
  12. package/dist/src/utils/quickSend.js +32 -0
  13. package/dist/src/utils/readApi.js +50 -0
  14. package/dist/src/utils/validRouteData.js +37 -0
  15. package/dist/src/utils/validToken.js +24 -0
  16. package/dist/src/utils/validType.js +84 -0
  17. package/dist/test/apiTemplate/api.temp.js +24 -0
  18. package/dist/test/apiTemplate/curd/del.js +21 -0
  19. package/dist/test/apiTemplate/curd/get.js +21 -0
  20. package/dist/test/apiTemplate/curd/set.js +21 -0
  21. package/dist/test/config/config.js +31 -0
  22. package/dist/test/config/createSqlFormData.js +15 -0
  23. package/dist/test/config/defaultApiConfig.js +7 -0
  24. package/dist/test/config/docNav.js +0 -0
  25. package/dist/test/main.js +31 -0
  26. package/dist/test/scripts/beforeCreated.js +62 -0
  27. package/dist/test/scripts/createApiFile.js +52 -0
  28. package/dist/test/scripts/createApis.js +81 -0
  29. package/dist/test/scripts/createSqlForm.js +10 -0
  30. package/dist/test/scripts/getSqlFormType.js +56 -0
  31. package/dist/test/scripts/run.js +6 -0
  32. package/dist/test/src/api/example/ArrValid.js +21 -0
  33. package/dist/test/src/api/example/per.js +37 -0
  34. package/dist/test/src/api/example/tip.js +22 -0
  35. package/dist/test/src/api/example/validReqData.js +98 -0
  36. package/dist/test/src/api/index.js +24 -0
  37. package/dist/test/src/debug.js +10 -0
  38. package/dist/test/src/masState.js +4 -0
  39. package/dist/test/src/sql/selectStudent.js +10 -0
  40. package/dist/test/src/sqlform.json +1 -0
  41. package/dist/test/test.js +3 -0
  42. package/dist/utils/apiDoc.js +17 -2
  43. package/dist/utils/createRouter.js +51 -0
  44. package/dist/utils/getRouterInfo.js +34 -0
  45. package/dist/utils/validRouteData.js +1 -1
  46. package/dist/utils/validToken.js +1 -1
  47. package/dist/utils/validType.js +0 -17
  48. package/package.json +5 -5
  49. package/{dist/apiDoc/assets/empty-907982e4.js → src/apiDoc/assets/empty-a6de4920.js} +1 -1
  50. package/src/apiDoc/assets/index-be53fe8f.css +6 -0
  51. package/src/apiDoc/assets/index-f9ab4187.js +1427 -0
  52. package/src/apiDoc/assets/jsoneditor-icons-45c98bf0.svg +749 -749
  53. package/src/apiDoc/index.html +2 -2
  54. package/src/index.ts +20 -24
  55. package/src/typings/index.ts +5 -5
  56. package/src/utils/apiDoc.ts +18 -2
  57. package/src/utils/createRouter.ts +22 -0
  58. package/src/utils/getRouterInfo.ts +28 -0
  59. package/src/utils/readApi.ts +0 -2
  60. package/src/utils/validRouteData.ts +1 -2
  61. package/src/utils/validToken.ts +1 -1
  62. package/src/utils/validType.ts +0 -17
  63. package/test/apiTemplate/api.temp.ts +8 -3
  64. package/test/config/config.ts +1 -1
  65. package/test/config/defaultApiConfig.ts +7 -0
  66. package/test/config/docNav.ts +0 -0
  67. package/test/main.ts +1 -0
  68. package/test/scripts/beforeCreated.ts +2 -41
  69. package/test/scripts/createApiFile.ts +0 -1
  70. package/test/scripts/createApis.ts +0 -48
  71. package/test/scripts/getSqlFormType.ts +2 -13
  72. package/test/src/api/example/ArrValid.ts +11 -0
  73. package/test/src/api/example/per.ts +34 -0
  74. package/test/src/api/example/tip.ts +9 -0
  75. package/test/src/api/example/validReqData.ts +85 -0
  76. package/test/src/api/index.ts +8 -1
  77. package/test/src/debug.ts +3 -50
  78. package/test/src/sqlform.json +1 -12
  79. package/test/test.ts +0 -12
  80. package/test//345/276/205/345/274/200/345/217/221.md +12 -6
  81. package/tsconfig-build.json +20 -0
  82. package/tsconfig.json +1 -3
  83. package/.temp/validType.ts +0 -96
  84. package/dist/apiDoc/assets/index-b56e6bc6.js +0 -1414
  85. package/dist/apiDoc/assets/index-bb16d834.css +0 -6
  86. package/dist/apiDoc/assets/jsoneditor-icons-45c98bf0.svg +0 -749
  87. package/dist/apiDoc/favicon.ico +0 -0
  88. package/dist/apiDoc/index.html +0 -15
  89. package/dist/utils/getRouteByApiSrc.js +0 -54
  90. package/dist/utils/mas-encrypt.min.js +0 -3072
  91. package/src/apiDoc/assets/empty-907982e4.js +0 -1
  92. package/src/apiDoc/assets/index-b56e6bc6.js +0 -1414
  93. package/src/apiDoc/assets/index-bb16d834.css +0 -6
  94. package/test/config/api.config.ts +0 -3
  95. package/test/config/api.key.ts +0 -14
  96. package/test/src/api/curd/student/del.ts +0 -9
  97. package/test/src/api/curd/student/get.ts +0 -9
  98. package/test/src/api/curd/student/set.ts +0 -9
  99. package/test/src/api/per.ts +0 -6
  100. package/test/src/api/person/del.ts +0 -4
  101. package/test/src/api/person/get.ts +0 -4
  102. package/test/src/api/person/set.ts +0 -4
  103. package/test/src/api/test.ts +0 -7
  104. package/test/src/api/validtest/boolArr.ts +0 -4
  105. package/test/typings/studentSF.ts +0 -6
  106. package/test/typings/test11SF.ts +0 -1
  107. package/test/typings/test22SF.ts +0 -1
  108. package/test/typings/testformSF.ts +0 -1
  109. /package/.temp/{logs/.keep → .keep} +0 -0
  110. /package/{src/utils → .temp}/getRouteByApiSrc.ts +0 -0
  111. /package/.temp/{a.ts → merge/a.ts} +0 -0
  112. /package/.temp/{as.ts → merge/as.ts} +0 -0
  113. /package/.temp/{b.ts → merge/b.ts} +0 -0
  114. /package/.temp/{i.js → merge/i.js} +0 -0
  115. /package/{test/typings → .temp/merge/logs}/.keep +0 -0
  116. /package/.temp/{test.ts → merge/test.ts} +0 -0
  117. /package/.temp/{validType copy.ts → merge/validType copy.ts} +0 -0
  118. /package/.temp/{validTypeOptimize.ts → merge/validTypeOptimize.ts} +0 -0
  119. /package/{test/scripts → .temp}/updateRouter.ts +0 -0
@@ -0,0 +1,98 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.config = void 0;
16
+ const masState_1 = __importDefault(require("@@/test/src/masState"));
17
+ exports.config = {
18
+ name: "数据效验及响应示例接口",
19
+ methods: "post",
20
+ validFormat: {
21
+ name: String,
22
+ age: Number,
23
+ grade: [{ name: String, score: Number }],
24
+ desc: String,
25
+ family: {
26
+ mother: {
27
+ name: String,
28
+ age: Number,
29
+ },
30
+ fahter: {
31
+ name: String,
32
+ age: Number,
33
+ },
34
+ },
35
+ },
36
+ // 效验严格模式,默认不开启,开启则不能携带额外参数
37
+ validFormatStrict: false,
38
+ // 接口文档的请求示例
39
+ example: {
40
+ extra: "这是一个额外参数,如果开启严格模式且带上这个参数将会不通过效验",
41
+ name: "小蔡",
42
+ age: 18,
43
+ grade: [{ name: "篮球", score: 99 }],
44
+ desc: "两年半",
45
+ family: {
46
+ mother: {
47
+ name: "母坤",
48
+ age: 40,
49
+ },
50
+ fahter: {
51
+ name: "公坤",
52
+ age: 40,
53
+ },
54
+ },
55
+ },
56
+ // 响应示例
57
+ resExample: {
58
+ msg: "",
59
+ status: 1,
60
+ data: "hello!练习两年半的程序员",
61
+ },
62
+ validFormatDes: [
63
+ {
64
+ name: "extra",
65
+ des: "额外的参数",
66
+ type: String,
67
+ },
68
+ {
69
+ name: "name",
70
+ des: "姓名",
71
+ },
72
+ {
73
+ name: "age",
74
+ des: "年龄",
75
+ },
76
+ {
77
+ name: "grade",
78
+ des: "成绩",
79
+ },
80
+ {
81
+ name: "family",
82
+ des: "家庭情况",
83
+ },
84
+ ],
85
+ des: "详细数据效验及响应示例接口",
86
+ header: [
87
+ {
88
+ name: "boom",
89
+ type: String,
90
+ des: "一个可不传的请求头参数",
91
+ optional: true,
92
+ },
93
+ ],
94
+ };
95
+ exports.default = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
96
+ const { sql } = masState_1.default;
97
+ res.return("hello!练习两年半的程序员");
98
+ });
@@ -0,0 +1,24 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.config = void 0;
16
+ const masState_1 = __importDefault(require("../masState"));
17
+ exports.config = {
18
+ name: "默认接口",
19
+ methods: "all",
20
+ };
21
+ exports.default = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
22
+ const { sql } = masState_1.default;
23
+ res.return("hello mas-server!");
24
+ });
@@ -0,0 +1,10 @@
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 masState_1 = __importDefault(require("./masState"));
7
+ const { sql } = masState_1.default;
8
+ if (sql && Number.isInteger(sql.debugMode)) {
9
+ sql.debugMode = 2;
10
+ }
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const masState = {};
4
+ exports.default = masState;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.selectStudent = void 0;
4
+ const index_1 = require("@/index");
5
+ const selectStudent = (id) => {
6
+ const Tof = index_1.massql.escapeId;
7
+ const Tok = index_1.massql.escape;
8
+ return `SELECT * FROM ${Tof("student")} where id = ${Tok(id)}`;
9
+ };
10
+ exports.selectStudent = selectStudent;
@@ -0,0 +1 @@
1
+ { "student": ["age", "create_time", "des", "id", "is_delete", "name", "update_time", "@!student"], "teacher": ["age", "create_time", "id", "is_delete", "name", "sex", "update_time", "@!teacher"] }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ require("module-alias/register");
@@ -8,9 +8,24 @@ exports.default = (app) => {
8
8
  }
9
9
  return value;
10
10
  });
11
- // console.log(state);
11
+ const newRouter = JSON.parse(router);
12
+ // 有的描述没有类型,尝试从validFormat里取
13
+ for (const key in newRouter) {
14
+ const item = newRouter[key];
15
+ if (item.validFormat && item.validFormatDes) {
16
+ for (const validFormatDesItem of item.validFormatDes) {
17
+ if (!validFormatDesItem.type &&
18
+ item.validFormat[validFormatDesItem.name]) {
19
+ validFormatDesItem.type = item.validFormat[validFormatDesItem.name];
20
+ }
21
+ else if (!validFormatDesItem.type) {
22
+ validFormatDesItem.type = "String";
23
+ }
24
+ }
25
+ }
26
+ }
12
27
  app.post("/apidoc/router", (req, res) => {
13
- res.return(JSON.parse(router));
28
+ res.return(newRouter);
14
29
  });
15
30
  app.post("/apidoc/cn", (req, res) => {
16
31
  res.return(state_1.state.apiCN);
@@ -0,0 +1,51 @@
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
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const state_1 = require("@/state");
30
+ const path_1 = __importDefault(require("path"));
31
+ const fs = __importStar(require("fs"));
32
+ const ansi_colors_1 = __importDefault(require("ansi-colors"));
33
+ function createRouter(app) {
34
+ const { Router, DIRNAME } = state_1.state;
35
+ // 遍历api路由
36
+ for (const item in Router) {
37
+ let isExist = fs.existsSync(path_1.default.join(DIRNAME, "src", item) + ".ts");
38
+ if (!isExist) {
39
+ console.info(ansi_colors_1.default.red(`${item} not found`));
40
+ continue;
41
+ }
42
+ const apiFunc = require(path_1.default.join(DIRNAME, "src", item)).default;
43
+ if (!apiFunc) {
44
+ console.info(ansi_colors_1.default.yellow(`${item} 没有导出函数,已跳过..`));
45
+ }
46
+ else {
47
+ apiFunc && app[Router[item].methods](item, apiFunc);
48
+ }
49
+ }
50
+ }
51
+ exports.default = createRouter;
@@ -0,0 +1,34 @@
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 readApi_1 = __importDefault(require("./readApi"));
8
+ const path_1 = __importDefault(require("path"));
9
+ const fs_1 = __importDefault(require("fs"));
10
+ const ansi_colors_1 = __importDefault(require("ansi-colors"));
11
+ function getRouterInfo(apiDir, defaullConfigDir) {
12
+ const apiConfig = {};
13
+ const { DIRNAME } = state_1.state;
14
+ const routerDir = (0, readApi_1.default)(apiDir, "api");
15
+ const defaullConfig = require(defaullConfigDir).default;
16
+ // 遍历api路由
17
+ for (const item of routerDir) {
18
+ let isExist = fs_1.default.existsSync(path_1.default.join(DIRNAME, "src", item) + ".ts");
19
+ if (!isExist) {
20
+ console.info(ansi_colors_1.default.red(`${item} not found`));
21
+ continue;
22
+ }
23
+ const apiItemConfig = require(path_1.default.join(DIRNAME, "src", item)).config;
24
+ apiConfig[item] = apiItemConfig || defaullConfig;
25
+ // if (!apiFunc) {
26
+ // console.info(c.yellow(`${item} 没有导出函数,已跳过..`));
27
+ // } else {
28
+ // apiFunc && app[Router[item].methods](item, apiFunc);
29
+ // }
30
+ }
31
+ state_1.state.Router = apiConfig;
32
+ return apiConfig;
33
+ }
34
+ exports.default = getRouterInfo;
@@ -16,7 +16,7 @@ exports.default = (req, res, next) => {
16
16
  if (routerObj.header && routerObj.header.length != 0) {
17
17
  const headerObj = {};
18
18
  routerObj.header.forEach((item) => {
19
- headerObj[item.name] = item.type;
19
+ !item.optional && (headerObj[item.name] = item.type);
20
20
  });
21
21
  if (!(0, validType_1.default)(req.headers, headerObj)) {
22
22
  return res.return("error headers format!", 0, 400);
@@ -9,7 +9,7 @@ exports.default = (req, res, next) => {
9
9
  if ((0, masUtils_1.getType)(r === null || r === void 0 ? void 0 : r.permission) == "array") {
10
10
  const token = req.headers[tokenConfig.headerParams];
11
11
  if (!token) {
12
- return res.return("缺少重要参数", 0);
12
+ return res.return("缺少重要参数", 0, 400);
13
13
  }
14
14
  let vt = (0, __1.validToken)({ token, permission: r.permission }, tokenConfig.pwd);
15
15
  if (vt.status === 0) {
@@ -82,20 +82,3 @@ function validType(obj, typeMapping, strict = false) {
82
82
  : validTypeObj(obj, typeMapping);
83
83
  }
84
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"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mas-server",
3
- "version": "2.0.3",
3
+ "version": "2.0.5",
4
4
  "description": "一款基于express面向中小型项目的后端框架",
5
5
  "main": "dist/index.js",
6
6
  "typings": "src/index.ts",
@@ -14,8 +14,8 @@
14
14
  "createApis": "npx ts-node ./test/scripts/createApis.ts",
15
15
  "init": "npx nodemon ./test/scripts/beforeCreated.ts -end",
16
16
  "gsft": "npx nodemon ./test/scripts/getSqlFormType.ts",
17
- "build":"tsc",
18
- "publish": "tsc && npm publish && cnpm sync cnpmcore"
17
+ "build": "tsc --project ./tsconfig-build.json",
18
+ "sync": "npm run build && npm publish && cnpm sync mas-server && explorer \"https://npmmirror.com/package/mas-server\""
19
19
  },
20
20
  "keywords": [],
21
21
  "author": "tingxi8087",
@@ -30,7 +30,7 @@
30
30
  "fs-extra": "^11.1.1",
31
31
  "glob": "^10.3.1",
32
32
  "mas-encrypt": "^1.0.0",
33
- "masmysql": "^2.0.4",
33
+ "masmysql": "^2.0.53",
34
34
  "module-alias": "^2.2.2",
35
35
  "moment": "^2.29.4",
36
36
  "mysql": "^2.18.1",
@@ -48,4 +48,4 @@
48
48
  "@types/express": "^4.17.17",
49
49
  "@types/moment": "^2.13.0"
50
50
  }
51
- }
51
+ }
@@ -1 +1 @@
1
- import{_ as e}from"./index-b56e6bc6.js";const r={};function t(c,n){return null}const o=e(r,[["render",t]]);export{o as default};
1
+ import{_ as e}from"./index-f9ab4187.js";const r={};function t(c,n){return null}const o=e(r,[["render",t]]);export{o as default};