mas-server 1.0.3 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.temp/a.ts +4 -0
- package/.temp/as.ts +1 -0
- package/.temp/b.ts +3 -0
- package/{src/index.js → .temp/i.js} +3 -3
- package/.temp/test.ts +2 -0
- package/.temp/validType copy.ts +149 -0
- package/.temp/validType.ts +96 -0
- package/.temp/validTypeOptimize.ts +98 -0
- package/.vscode/settings.json +0 -109
- package/dist/index.js +136 -0
- package/dist/masmysql/checkSqlkey.js +67 -0
- package/dist/masmysql/createSqlForm.js +44 -0
- package/dist/masmysql/esaysql.js +53 -0
- package/dist/masmysql/index.js +111 -0
- package/dist/masmysql/masSql.js +741 -0
- package/dist/masmysql/state.js +5 -0
- package/dist/masmysql/type.js +2 -0
- package/dist/masmysql/utils.js +12 -0
- package/dist/state.js +4 -0
- package/dist/typings/index.js +2 -0
- package/dist/utils/apiDoc.js +18 -0
- package/dist/utils/getLog.js +18 -0
- package/dist/utils/getRouteByApiSrc.js +54 -0
- package/dist/utils/masUtils.js +12 -0
- package/dist/utils/meaToken.js +57 -0
- package/dist/utils/quickSend.js +32 -0
- package/dist/utils/readApi.js +50 -0
- package/dist/utils/validRouteData.js +37 -0
- package/dist/utils/validToken.js +24 -0
- package/dist/utils/validType.js +101 -0
- package/package.json +34 -15
- package/src/apiDoc/assets/empty-907982e4.js +1 -0
- package/src/apiDoc/assets/index-b56e6bc6.js +1414 -0
- package/src/apiDoc/assets/index-bb16d834.css +6 -0
- package/src/{public/doc/img/jsoneditor-icons.256e3abc.svg → apiDoc/assets/jsoneditor-icons-45c98bf0.svg} +213 -357
- package/src/apiDoc/favicon.ico +0 -0
- package/src/apiDoc/index.html +15 -0
- package/src/index.ts +132 -0
- package/src/masmysql/checkSqlkey.ts +55 -0
- package/src/masmysql/createSqlForm.ts +37 -0
- package/src/masmysql/esaysql.ts +44 -0
- package/src/masmysql/index.ts +68 -0
- package/src/masmysql/masSql.ts +736 -0
- package/src/masmysql/state.ts +5 -0
- package/src/masmysql/type.ts +34 -0
- package/src/masmysql/utils.ts +8 -0
- package/src/state.ts +1 -0
- package/src/typings/index.ts +114 -0
- package/src/utils/apiDoc.ts +18 -0
- package/src/utils/getLog.ts +20 -0
- package/src/utils/getRouteByApiSrc.ts +55 -0
- package/src/utils/mas-encrypt.min.js +1 -0
- package/src/utils/masUtils.ts +8 -0
- package/src/utils/meaToken.ts +56 -0
- package/src/utils/quickSend.ts +19 -0
- package/src/utils/readApi.ts +30 -0
- package/src/utils/validRouteData.ts +46 -0
- package/src/utils/validToken.ts +22 -0
- package/src/utils/validType.ts +98 -0
- package/test/apiTemplate/api.temp.ts +6 -0
- package/test/apiTemplate/curd/del.ts +9 -0
- package/test/apiTemplate/curd/get.ts +9 -0
- package/test/apiTemplate/curd/set.ts +9 -0
- package/test/config/api.config.ts +3 -0
- package/test/config/api.key.ts +14 -0
- package/test/config/config.ts +30 -0
- package/test/config/createSqlFormData.ts +14 -0
- package/test/logs/.keep +0 -0
- package/test/main.ts +25 -0
- package/test/scripts/beforeCreated.ts +67 -0
- package/test/scripts/createApiFile.ts +27 -0
- package/test/scripts/createApis.ts +109 -0
- package/test/scripts/createSqlForm.ts +5 -0
- package/test/scripts/getSqlFormType.ts +34 -0
- package/test/scripts/run.ts +4 -0
- package/test/scripts/updateRouter.ts +46 -0
- package/test/src/api/curd/student/del.ts +9 -0
- package/test/src/api/curd/student/get.ts +9 -0
- package/test/src/api/curd/student/set.ts +9 -0
- package/test/src/api/index.ts +4 -0
- package/test/src/api/per.ts +6 -0
- package/test/src/api/person/del.ts +4 -0
- package/test/src/api/person/get.ts +4 -0
- package/test/src/api/person/set.ts +4 -0
- package/test/src/api/test.ts +7 -0
- package/test/src/api/validtest/boolArr.ts +4 -0
- package/test/src/debug.ts +56 -0
- package/test/src/masState.ts +4 -0
- package/test/src/sql/selectStudent.ts +7 -0
- package/test/src/sqlform.json +1 -0
- package/test/test.ts +13 -0
- package/test/typings/.keep +0 -0
- package/test/typings/studentSF.ts +6 -0
- package/test/typings/test11SF.ts +1 -0
- package/test/typings/test22SF.ts +1 -0
- package/test/typings/testformSF.ts +1 -0
- package/test//345/276/205/345/274/200/345/217/221.md +12 -0
- package/tsconfig.json +23 -0
- package/tsconfigschema.json +1263 -0
- package/src/config/api.res.json +0 -1
- package/src/config/api.tree.json +0 -1
- package/src/config/apiModules/del.module +0 -6
- package/src/config/apiModules/get.module +0 -6
- package/src/config/apiModules/set.module +0 -6
- package/src/config/config.schema.js +0 -41
- package/src/public/doc/css/app.722f60c4.css +0 -1
- package/src/public/doc/css/chunk-287b9965.80548a4b.css +0 -1
- package/src/public/doc/css/chunk-vendors.a16c4353.css +0 -1
- package/src/public/doc/favicon.ico +0 -0
- package/src/public/doc/fonts/element-icons.535877f5.woff +0 -0
- package/src/public/doc/fonts/element-icons.732389de.ttf +0 -0
- package/src/public/doc/index.html +0 -1
- package/src/public/doc/js/app.9ce10690.js +0 -2
- package/src/public/doc/js/app.9ce10690.js.map +0 -1
- package/src/public/doc/js/chunk-287b9965.77cfd27f.js +0 -32
- package/src/public/doc/js/chunk-287b9965.77cfd27f.js.map +0 -1
- package/src/public/doc/js/chunk-vendors.7c84e9a7.js +0 -35
- package/src/public/doc/js/chunk-vendors.7c84e9a7.js.map +0 -1
- package/src/public/index.html +0 -15
- package/src/state.js +0 -6
- package/src/utils/DataVerified.js +0 -35
- package/src/utils/beforeCreate.js +0 -19
- package/src/utils/createApi.js +0 -34
- package/src/utils/createApiFile.js +0 -40
- package/src/utils/createSqlForm.js +0 -7
- package/src/utils/encrypt.js +0 -1
- package/src/utils/getDir.js +0 -60
- package/src/utils/logs.js +0 -16
- package/src/utils/masDoc.js +0 -37
- package/src/utils/masRoute.js +0 -29
- package/src/utils/quickSend.js +0 -18
- package/src/utils/token.js +0 -57
- package/test/.utils/api.js +0 -4
- package/test/.utils/apis.js +0 -5
- package/test/.utils/beforeIndex.js +0 -4
- package/test/.utils/createForm.js +0 -4
- package/test/config/api.config.json +0 -7
- package/test/config/api.config.k.json +0 -1
- package/test/config/config.js +0 -22
- package/test/config/sqlform.config.js +0 -23
- package/test/index.js +0 -12
- package/test/public/1.txt +0 -1
- package/test/serverLogs/2022-10-29.log +0 -6
- package/test/serverLogs/2022-10-30.log +0 -58
- package/test/src/$form.js +0 -1
- package/test/src/api/index.js +0 -3
- package/test/src/api/test.js +0 -9
- package/test/src/api/vip/del.js +0 -6
- package/test/src/api/vip/get.js +0 -6
- package/test/src/api/vip/set.js +0 -6
- package/test/src/api/vip666.js +0 -4
- package/test/src/debug.js +0 -2
- /package/{old → .temp/logs/.keep} +0 -0
package/src/public/index.html
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="zh-cn">
|
|
3
|
-
|
|
4
|
-
<head>
|
|
5
|
-
<meta charset="UTF-8">
|
|
6
|
-
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
7
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
8
|
-
<title>mas-server</title>
|
|
9
|
-
</head>
|
|
10
|
-
|
|
11
|
-
<body>
|
|
12
|
-
<h1>hello!mas-server</h1>
|
|
13
|
-
</body>
|
|
14
|
-
|
|
15
|
-
</html>
|
package/src/state.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
const state = require('../state');
|
|
2
|
-
const config = state.config;
|
|
3
|
-
let apiCofig = require(state.dirname + '/config/api.config.json');
|
|
4
|
-
module.exports = (req, res, next) => {
|
|
5
|
-
let checkData = [];
|
|
6
|
-
let bodyArr = [];
|
|
7
|
-
let right = true;
|
|
8
|
-
|
|
9
|
-
if (apiCofig[req.url] && apiCofig[req.url].checkData) {
|
|
10
|
-
checkData = apiCofig[req.url].checkData;
|
|
11
|
-
checkData = checkData.filter((item) =>
|
|
12
|
-
!(item instanceof Object) || (item instanceof Object && !item.optional)
|
|
13
|
-
).map(item =>
|
|
14
|
-
item instanceof Object ? item.name : item
|
|
15
|
-
);
|
|
16
|
-
bodyArr = Object.keys(req.body).filter(item => {
|
|
17
|
-
if (checkData.indexOf(item) == -1) {
|
|
18
|
-
return false;
|
|
19
|
-
} else if ((req.body[item] + '').replace(/\s+/g, "") == "") {
|
|
20
|
-
return false;
|
|
21
|
-
} else return true;
|
|
22
|
-
|
|
23
|
-
});
|
|
24
|
-
|
|
25
|
-
if (bodyArr.length != checkData.length && checkData.length != 0) {
|
|
26
|
-
res.return('请求数据格式错误!', 0, 400);
|
|
27
|
-
right = false;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
req.data = JSON.parse(JSON.stringify(req.body));
|
|
31
|
-
Object.keys(req.data).map(item => {
|
|
32
|
-
if (bodyArr.indexOf(item) == -1) delete req.data[item];
|
|
33
|
-
});
|
|
34
|
-
if (right) next();
|
|
35
|
-
};
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
const state = require('../state');
|
|
2
|
-
const masRoute = require('./masRoute');
|
|
3
|
-
const path = require('path');
|
|
4
|
-
const { setSqlConfig, sqlInit } = require('masmysql');
|
|
5
|
-
module.exports = (dirname) => {
|
|
6
|
-
const config = require(path.join(dirname, "/config", "config.js"));
|
|
7
|
-
state.config = config;
|
|
8
|
-
state.dirname = dirname;
|
|
9
|
-
// 写入约定式路由
|
|
10
|
-
masRoute();
|
|
11
|
-
// 写入数据库文件
|
|
12
|
-
if (config.useSql) {
|
|
13
|
-
(async () => {
|
|
14
|
-
setSqlConfig(config.sql);
|
|
15
|
-
await sqlInit();
|
|
16
|
-
})();
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
package/src/utils/createApi.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
const fs = require("fs");
|
|
2
|
-
const { tip: masTip } = require("masutils");
|
|
3
|
-
|
|
4
|
-
module.exports = (dirname) => {
|
|
5
|
-
let srcArr = JSON.parse(JSON.stringify(process.argv)).slice(2);
|
|
6
|
-
for (let v of srcArr) {
|
|
7
|
-
let src = v.split('/');
|
|
8
|
-
const fileModule =
|
|
9
|
-
`module.exports = async (req, res) => {
|
|
10
|
-
res.return('hello,masjs!');
|
|
11
|
-
}`
|
|
12
|
-
;
|
|
13
|
-
if (!src) {
|
|
14
|
-
masTip("请传入正确参数");
|
|
15
|
-
process.exit(1);
|
|
16
|
-
}
|
|
17
|
-
(async () => {
|
|
18
|
-
const file = src.pop().replace(/\s+/g, '');
|
|
19
|
-
src = src.join('/');
|
|
20
|
-
const src1 = src;
|
|
21
|
-
src = dirname + `/src/api/${src}`;
|
|
22
|
-
let isExist = fs.existsSync(src);
|
|
23
|
-
if (!isExist) fs.mkdirSync(src, { recursive: true });
|
|
24
|
-
isExist = fs.existsSync(src + `/${file}.js`);
|
|
25
|
-
if (isExist) {
|
|
26
|
-
masTip("该接口已存在!");
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
const res = fs.writeFileSync(src + `/${file}.js`, fileModule);
|
|
30
|
-
masTip(`创建 ${src1+ `/${file}`}`,1);
|
|
31
|
-
})();
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
};
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
const fs = require("fs");
|
|
2
|
-
|
|
3
|
-
const { tip: masTip } = require("masutils");
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
module.exports = (dirname) => {
|
|
7
|
-
let srcArr = JSON.parse(JSON.stringify(process.argv)).slice(2);
|
|
8
|
-
let src = srcArr[0];
|
|
9
|
-
function copyFile(arr, dir) {
|
|
10
|
-
const file =
|
|
11
|
-
fs.readFileSync(__dirname + `/../config/apiModules/${arr}.module`)
|
|
12
|
-
.toString().replace("@@form@@", srcArr[1]);
|
|
13
|
-
fs.writeFileSync(dir, file);
|
|
14
|
-
}
|
|
15
|
-
if (!srcArr[1]) {
|
|
16
|
-
masTip("请传入表名");
|
|
17
|
-
process.exit(1);
|
|
18
|
-
}
|
|
19
|
-
if (!src) {
|
|
20
|
-
masTip("请传入正确参数");
|
|
21
|
-
process.exit(1);
|
|
22
|
-
}
|
|
23
|
-
(async () => {
|
|
24
|
-
src = dirname + `/src/api/${src}`;
|
|
25
|
-
let isExist = fs.existsSync(src);
|
|
26
|
-
if (!isExist) fs.mkdirSync(src, { recursive: true });
|
|
27
|
-
let status = 1;
|
|
28
|
-
for (let v of ["get", "set", "del"]) {
|
|
29
|
-
if (fs.existsSync(src + `/${v}.js`)) {
|
|
30
|
-
status = 0;
|
|
31
|
-
masTip(`${v}接口已存在无法创建`);
|
|
32
|
-
} else {
|
|
33
|
-
copyFile(v, src + `/${v}.js`);
|
|
34
|
-
masTip(`${v}接口创建成功`, 1);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
status && masTip(`创建 ${srcArr[0]}接口完成`, 1);
|
|
38
|
-
})();
|
|
39
|
-
|
|
40
|
-
};
|
package/src/utils/encrypt.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const a6_0x20213c=a6_0x53f3;(function(_0x18fab2,_0x11632b){const _0x31751d=a6_0x53f3,_0x3aba8c=_0x18fab2();while(!![]){try{const _0x452989=-parseInt(_0x31751d(0xea))/0x1+-parseInt(_0x31751d(0xef))/0x2*(-parseInt(_0x31751d(0x107))/0x3)+-parseInt(_0x31751d(0x115))/0x4+-parseInt(_0x31751d(0xf2))/0x5+-parseInt(_0x31751d(0x108))/0x6*(parseInt(_0x31751d(0xfa))/0x7)+parseInt(_0x31751d(0x114))/0x8+-parseInt(_0x31751d(0x110))/0x9*(-parseInt(_0x31751d(0xfb))/0xa);if(_0x452989===_0x11632b)break;else _0x3aba8c['push'](_0x3aba8c['shift']());}catch(_0x3674b8){_0x3aba8c['push'](_0x3aba8c['shift']());}}}(a6_0x4dbf,0x5b7ec));const crypto=require('crypto'),Mtime=require(a6_0x20213c(0x10c));Mtime[a6_0x20213c(0xf1)](a6_0x20213c(0xf6));const algorithm=[a6_0x20213c(0xf0),a6_0x20213c(0x106),a6_0x20213c(0xeb),'aes-128-cfb8',a6_0x20213c(0xff)],_keyStr=a6_0x20213c(0xec);function isJSON(_0x3aa645){const _0x58d407=a6_0x20213c;if(typeof _0x3aa645=='string')try{return JSON[_0x58d407(0x112)](_0x3aa645),!![];}catch(_0x92ab15){return![];}else return![];}function a6_0x4dbf(){const _0x42031c=['indexOf','5414MncdJZ','aes-128-cbc','locale','3491075EEWInr','\x1b[31m%s\x1b[0m','_utf8_decode','update','zh-cn','utf8','setHours','replace','3650458dEzQBP','20jNEJie','createDecipheriv','charCodeAt','exports','aes-128-ctr','hex','final','getTimezoneOffset','decode','charAt','createCipheriv','aes-128-cfb','33iKRgCW','6IXynxU','encode','length','getTime','moment','\x1b[32m%s\x1b[0m','toFixed','fromCharCode','8223147hkNbEC','info','parse','getHours','4891248jDEIIP','2491748gymogE','random','251139dmjAGE','aes-128-cfb1','ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=','slice'];a6_0x4dbf=function(){return _0x42031c;};return a6_0x4dbf();}function a6_0x53f3(_0x2827dc,_0x350d7d){const _0x4dbf99=a6_0x4dbf();return a6_0x53f3=function(_0x53f34c,_0x13a7fa){_0x53f34c=_0x53f34c-0xea;let _0x108cc6=_0x4dbf99[_0x53f34c];return _0x108cc6;},a6_0x53f3(_0x2827dc,_0x350d7d);}const randomInt=(_0x58d52c,_0x443f29)=>parseInt(Math[a6_0x20213c(0x116)]()*(_0x443f29-_0x58d52c+0x1)+_0x58d52c),randomStr=_0x39e991=>{let _0x2fdc52='';for(let _0x2b2ff5=0x0;_0x2b2ff5<_0x39e991;_0x2b2ff5++){_0x2fdc52+=_keyStr[randomInt(0x0,0x40)];}return _0x2fdc52;},randomstr=_0x1e245d=>{let _0x4f7c67='';for(let _0x1c868a=0x0;_0x1c868a<_0x1e245d;_0x1c868a++){_0x4f7c67+=_keyStr[randomInt(0x0,0x3d)];}return _0x4f7c67;};function masTip(_0x50293f,_0x4ebf2b=0x0){const _0x449139=a6_0x20213c;console[_0x449139(0x111)](!_0x4ebf2b?_0x449139(0xf3):_0x449139(0x10d),_0x50293f);}const base={'_utf8_encode'(_0x5d1822){const _0x1badb9=a6_0x20213c;_0x5d1822=_0x5d1822[_0x1badb9(0xf9)](/\r\n/g,'\x0a');var _0x3d3211='';for(var _0x1cc0c8=0x0;_0x1cc0c8<_0x5d1822[_0x1badb9(0x10a)];_0x1cc0c8++){var _0x5ec275=_0x5d1822['charCodeAt'](_0x1cc0c8);if(_0x5ec275<0x80)_0x3d3211+=String[_0x1badb9(0x10f)](_0x5ec275);else _0x5ec275>0x7f&&_0x5ec275<0x800?(_0x3d3211+=String[_0x1badb9(0x10f)](_0x5ec275>>0x6|0xc0),_0x3d3211+=String[_0x1badb9(0x10f)](_0x5ec275&0x3f|0x80)):(_0x3d3211+=String[_0x1badb9(0x10f)](_0x5ec275>>0xc|0xe0),_0x3d3211+=String[_0x1badb9(0x10f)](_0x5ec275>>0x6&0x3f|0x80),_0x3d3211+=String[_0x1badb9(0x10f)](_0x5ec275&0x3f|0x80));}return _0x3d3211;},'_utf8_decode'(_0x1e1626){const _0x46f7c1=a6_0x20213c;var _0x57d990='',_0x859373=0x0,_0x1472cf=c1=c2=0x0;while(_0x859373<_0x1e1626[_0x46f7c1(0x10a)]){_0x1472cf=_0x1e1626[_0x46f7c1(0xfd)](_0x859373);if(_0x1472cf<0x80)_0x57d990+=String[_0x46f7c1(0x10f)](_0x1472cf),_0x859373++;else _0x1472cf>0xbf&&_0x1472cf<0xe0?(c2=_0x1e1626['charCodeAt'](_0x859373+0x1),_0x57d990+=String[_0x46f7c1(0x10f)]((_0x1472cf&0x1f)<<0x6|c2&0x3f),_0x859373+=0x2):(c2=_0x1e1626[_0x46f7c1(0xfd)](_0x859373+0x1),c3=_0x1e1626[_0x46f7c1(0xfd)](_0x859373+0x2),_0x57d990+=String[_0x46f7c1(0x10f)]((_0x1472cf&0xf)<<0xc|(c2&0x3f)<<0x6|c3&0x3f),_0x859373+=0x3);}return _0x57d990;},'encode'(_0x225db8){const _0x1ab469=a6_0x20213c;var _0x5a75bf='',_0xe8eb78,_0x2e5dc1,_0xae61ea,_0x1f7b8d,_0x5b4ff2,_0x307a15,_0x278b53,_0x33139c=0x0;_0x225db8=this['_utf8_encode'](_0x225db8);while(_0x33139c<_0x225db8['length']){_0xe8eb78=_0x225db8[_0x1ab469(0xfd)](_0x33139c++),_0x2e5dc1=_0x225db8[_0x1ab469(0xfd)](_0x33139c++),_0xae61ea=_0x225db8[_0x1ab469(0xfd)](_0x33139c++),_0x1f7b8d=_0xe8eb78>>0x2,_0x5b4ff2=(_0xe8eb78&0x3)<<0x4|_0x2e5dc1>>0x4,_0x307a15=(_0x2e5dc1&0xf)<<0x2|_0xae61ea>>0x6,_0x278b53=_0xae61ea&0x3f;if(isNaN(_0x2e5dc1))_0x307a15=_0x278b53=0x40;else isNaN(_0xae61ea)&&(_0x278b53=0x40);_0x5a75bf=_0x5a75bf+_keyStr['charAt'](_0x1f7b8d)+_keyStr[_0x1ab469(0x104)](_0x5b4ff2)+_keyStr[_0x1ab469(0x104)](_0x307a15)+_keyStr['charAt'](_0x278b53);}return _0x5a75bf;},'decode'(_0x4a6d74){const _0xb7f8ed=a6_0x20213c;var _0x4dcb49='',_0x2829a3,_0x5d8dd5,_0x52996c,_0x19319f,_0xb1fb7e,_0x2eb581,_0x280e70,_0x432786=0x0;_0x4a6d74=_0x4a6d74[_0xb7f8ed(0xf9)](/[^A-Za-z0-9\+\/\=]/g,'');while(_0x432786<_0x4a6d74[_0xb7f8ed(0x10a)]){_0x19319f=_keyStr[_0xb7f8ed(0xee)](_0x4a6d74['charAt'](_0x432786++)),_0xb1fb7e=_keyStr[_0xb7f8ed(0xee)](_0x4a6d74[_0xb7f8ed(0x104)](_0x432786++)),_0x2eb581=_keyStr[_0xb7f8ed(0xee)](_0x4a6d74['charAt'](_0x432786++)),_0x280e70=_keyStr[_0xb7f8ed(0xee)](_0x4a6d74[_0xb7f8ed(0x104)](_0x432786++)),_0x2829a3=_0x19319f<<0x2|_0xb1fb7e>>0x4,_0x5d8dd5=(_0xb1fb7e&0xf)<<0x4|_0x2eb581>>0x2,_0x52996c=(_0x2eb581&0x3)<<0x6|_0x280e70,_0x4dcb49=_0x4dcb49+String[_0xb7f8ed(0x10f)](_0x2829a3),_0x2eb581!=0x40&&(_0x4dcb49=_0x4dcb49+String['fromCharCode'](_0x5d8dd5)),_0x280e70!=0x40&&(_0x4dcb49=_0x4dcb49+String[_0xb7f8ed(0x10f)](_0x52996c));}return _0x4dcb49=this[_0xb7f8ed(0xf4)](_0x4dcb49),_0x4dcb49;}};function cipher(_0x16acbe,_0x3350c2,_0x350d68){const _0xda86f9=a6_0x20213c,_0x2cbe99=randomStr(0x8),_0x4612e1=randomStr(0x8);try{const _0x39ce98=crypto[_0xda86f9(0x105)](algorithm[_0x350d68],_0x3350c2,_0x2cbe99+_0x4612e1);return _0x2cbe99+_0x39ce98[_0xda86f9(0xf5)](_0x16acbe,_0xda86f9(0xf7),_0xda86f9(0x100))+_0x39ce98['final'](_0xda86f9(0x100))+_0x4612e1;}catch(_0x365c43){return undefined;}}function decipher(_0x1f9a0a,_0x4251cb,_0x40de0c){const _0x51019d=a6_0x20213c,_0x2b5521=_0x1f9a0a[_0x51019d(0xed)](0x0,0x8),_0x3bffc7=_0x1f9a0a[_0x51019d(0xed)](_0x1f9a0a[_0x51019d(0x10a)]-0x8,_0x1f9a0a[_0x51019d(0x10a)]);_0x1f9a0a=_0x1f9a0a['slice'](0x8,_0x1f9a0a[_0x51019d(0x10a)]-0x8);try{const _0x2d1d9e=crypto[_0x51019d(0xfc)](algorithm[_0x40de0c],_0x4251cb,_0x2b5521+_0x3bffc7);return _0x2d1d9e[_0x51019d(0xf5)](_0x1f9a0a,'hex',_0x51019d(0xf7))+_0x2d1d9e[_0x51019d(0x101)](_0x51019d(0xf7));}catch(_0x1cba73){return undefined;}}function getTimestamp(){const _0x287d26=a6_0x20213c;return(new Date()[_0x287d26(0x10b)]()/0x3e8)[_0x287d26(0x10e)](0x0)*0x3e8;}function getTime(){const _0x292c2f=a6_0x20213c;var _0x317da3=new Date();return _0x317da3[_0x292c2f(0xf8)](_0x317da3[_0x292c2f(0x113)]()-_0x317da3[_0x292c2f(0x102)]()/0x3c),_0x317da3['toJSON']()['slice'](0x0,0x13)['replace']('T','\x20');}const encode=function(_0x2a5170,_0x4eb10f,_0x5b8d75=0x0,_0x503e0b=0x0){const _0xfa531d=a6_0x20213c;if(_0x503e0b<0x0||_0x503e0b>0x4)return undefined;_0x2a5170 instanceof Object&&(_0x2a5170=JSON['stringify'](_0x2a5170));while(_0x4eb10f[_0xfa531d(0x10a)]<0x10){_0x4eb10f+='0';}return _0x2a5170=base[_0xfa531d(0x109)](cipher(_0x2a5170,_0x4eb10f,_0x503e0b)),_0x5b8d75&&(_0x2a5170=base[_0xfa531d(0x109)](_0x2a5170),_0x2a5170=base[_0xfa531d(0x109)](_0x2a5170),_0x2a5170=base[_0xfa531d(0x109)](_0x2a5170),_0x2a5170=base[_0xfa531d(0x109)](_0x2a5170),_0x2a5170=base['encode'](_0x2a5170)),_0x2a5170;},decode=function(_0x1424b,_0xcc4acf,_0x4e1d20=0x0,_0x3e9c83=0x0){const _0x177629=a6_0x20213c;if(_0x3e9c83<0x0||_0x3e9c83>0x4)return undefined;while(_0xcc4acf['length']<0x10){_0xcc4acf+='0';}return _0x1424b=base[_0x177629(0x103)](_0x1424b),_0x4e1d20&&(_0x1424b=base['decode'](_0x1424b),_0x1424b=base[_0x177629(0x103)](_0x1424b),_0x1424b=base[_0x177629(0x103)](_0x1424b),_0x1424b=base['decode'](_0x1424b),_0x1424b=base['decode'](_0x1424b)),_0x1424b=decipher(_0x1424b,_0xcc4acf,_0x3e9c83),isJSON(_0x1424b)&&(_0x1424b=JSON[_0x177629(0x112)](_0x1424b)),_0x1424b;};module[a6_0x20213c(0xfe)]={'encode':encode,'getTime':getTime,'decode':decode,'isJSON':isJSON,'randomInt':randomInt,'randomStr':randomStr,'randomstr':randomstr,'masTip':masTip,'getTimestamp':getTimestamp,'Mtime':Mtime};
|
package/src/utils/getDir.js
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
const fs = require('fs');
|
|
2
|
-
const state = require('../state');
|
|
3
|
-
|
|
4
|
-
module.exports = (root) => {
|
|
5
|
-
let endDir = [];
|
|
6
|
-
let DirChinese = require(state.dirname + '/config/api.config.k.json');
|
|
7
|
-
function getFiles(dir) {
|
|
8
|
-
dirArr = fs.readdirSync(state.dirname + `/src${dir}`);
|
|
9
|
-
for (let v of dirArr) {
|
|
10
|
-
let vArr = v.split('.');
|
|
11
|
-
{
|
|
12
|
-
if (!DirChinese[vArr[0]]) {
|
|
13
|
-
DirChinese[vArr[0]] = '';
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
if (vArr[vArr.length - 1] == 'js' && vArr.length >= 2) {
|
|
17
|
-
endDir.push(`${dir}/${v.replace('.js', '')}`);
|
|
18
|
-
} else {
|
|
19
|
-
getFiles(`${dir}/${v}`);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
}
|
|
25
|
-
let dirTree = {};
|
|
26
|
-
const sign = 'api';
|
|
27
|
-
function getTree(item) {
|
|
28
|
-
if (item.length == 2) {
|
|
29
|
-
if (!dirTree[item[0]]) dirTree[item[0]] = {};
|
|
30
|
-
dirTree[item[0]][item[1]] = sign;
|
|
31
|
-
}
|
|
32
|
-
if (item.length == 3) {
|
|
33
|
-
if (!dirTree[item[0]]) dirTree[item[0]] = {};
|
|
34
|
-
if (!dirTree[item[0]][item[1]]) dirTree[item[0]][item[1]] = {};
|
|
35
|
-
dirTree[item[0]][item[1]][item[2]] = sign;
|
|
36
|
-
}
|
|
37
|
-
if (item.length == 4) {
|
|
38
|
-
if (!dirTree[item[0]]) dirTree[item[0]] = {};
|
|
39
|
-
if (!dirTree[item[0]][item[1]]) dirTree[item[0]][item[1]] = {};
|
|
40
|
-
if (!dirTree[item[0]][item[1]][item[2]]) dirTree[item[0]][item[1]][item[2]] = {};
|
|
41
|
-
dirTree[item[0]][item[1]][item[2]][item[3]] = sign;
|
|
42
|
-
}
|
|
43
|
-
if (item.length == 5) {
|
|
44
|
-
if (!dirTree[item[0]]) dirTree[item[0]] = {};
|
|
45
|
-
if (!dirTree[item[0]][item[1]]) dirTree[item[0]][item[1]] = {};
|
|
46
|
-
if (!dirTree[item[0]][item[1]][item[2]]) dirTree[item[0]][item[1]][item[2]] = {};
|
|
47
|
-
if (!dirTree[item[0]][item[1]][item[2]][item[3]]) dirTree[item[0]][item[1]][item[2][item[3]]] = {};
|
|
48
|
-
dirTree[item[0]][item[1]][item[2]][item[3][item[4]]] = sign;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
getFiles(root);
|
|
52
|
-
for (let item of endDir) {
|
|
53
|
-
getTree(item.slice(1).split('/'));
|
|
54
|
-
}
|
|
55
|
-
DirChinese.api = '接口';
|
|
56
|
-
|
|
57
|
-
fs.writeFileSync(__dirname + '/../config/api.tree.json', JSON.stringify(dirTree));
|
|
58
|
-
fs.writeFileSync(state.dirname + '/config/api.config.k.json', JSON.stringify(DirChinese));
|
|
59
|
-
return endDir;
|
|
60
|
-
};
|
package/src/utils/logs.js
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
const state = require('../state');
|
|
2
|
-
const config = state.config;
|
|
3
|
-
const fs = require('fs');
|
|
4
|
-
module.exports = (req, res, next) => {
|
|
5
|
-
let date = null;
|
|
6
|
-
date = new Date();
|
|
7
|
-
let data = `${date.toString().slice(16, 24)} ${req.method} ${req.ipInfo.ip} ${req.url} ${req.body ? JSON.stringify(req.body) : ''}\n`;
|
|
8
|
-
fs.appendFileSync(
|
|
9
|
-
state.dirname + `/serverLogs/${date.toLocaleDateString().split('/').map(item => { (item.length < 2 && (item = '0' + item)); return item; }).join('-')}.log`,
|
|
10
|
-
data
|
|
11
|
-
);
|
|
12
|
-
if (config.logs.debug) {
|
|
13
|
-
console.log(data);
|
|
14
|
-
}
|
|
15
|
-
next();
|
|
16
|
-
};
|
package/src/utils/masDoc.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
module.exports = (app, config) => {
|
|
3
|
-
const state = require('../state');
|
|
4
|
-
const dirname = state.dirname;
|
|
5
|
-
if (config.apidoc) {
|
|
6
|
-
app.post('/doc/get', (req, res) => {
|
|
7
|
-
res.return({
|
|
8
|
-
config: require(dirname + '/config/api.config.json'),
|
|
9
|
-
tree: require('../config/api.tree.json'),
|
|
10
|
-
k: require(dirname + '/config/api.config.k.json'),
|
|
11
|
-
res: require('../config/api.res.json'),
|
|
12
|
-
proName: config.projectName
|
|
13
|
-
});
|
|
14
|
-
});
|
|
15
|
-
app.post('/doc/setBody', (req, res) => {
|
|
16
|
-
let apiRes = require('../config/api.res.json');
|
|
17
|
-
if (req.body.name) {
|
|
18
|
-
apiRes[req.body.name] = req.body.data;
|
|
19
|
-
fs.writeFileSync(__dirname + '/../config/api.res.json', JSON.stringify(apiRes));
|
|
20
|
-
res.return(1);
|
|
21
|
-
} else {
|
|
22
|
-
res.return(0, 0);
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
app.post('/doc/getBody', (req, res) => {
|
|
26
|
-
let apiRes = require('../config/api.res.json');
|
|
27
|
-
if (req.body.name && apiRes[req.body.name]) {
|
|
28
|
-
res.return(apiRes[req.body.name]);
|
|
29
|
-
} else {
|
|
30
|
-
res.return(0, 0);
|
|
31
|
-
}
|
|
32
|
-
});
|
|
33
|
-
app.get('/doc', (req, res) => {
|
|
34
|
-
res.redirect('/masPublic/doc/index.html');
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
};
|
package/src/utils/masRoute.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
const state = require('../state');
|
|
2
|
-
const getDir = require("./getDir");
|
|
3
|
-
const fs = require("fs");
|
|
4
|
-
|
|
5
|
-
module.exports = () => {
|
|
6
|
-
const route = require(state.dirname + "/config/api.config.json");
|
|
7
|
-
let isWrite = 0;
|
|
8
|
-
let routeArr = Object.keys(route);
|
|
9
|
-
// 获得新配置
|
|
10
|
-
let newRoute = getDir('/api').map(item => {
|
|
11
|
-
// 如果旧配置里面没有就创建
|
|
12
|
-
if (routeArr.indexOf(item) == -1) {
|
|
13
|
-
route[item] = {};
|
|
14
|
-
isWrite = 1;
|
|
15
|
-
}
|
|
16
|
-
return item;
|
|
17
|
-
});
|
|
18
|
-
// 如果多了就删除
|
|
19
|
-
routeArr.map(item => {
|
|
20
|
-
if (newRoute.indexOf(item) == -1) {
|
|
21
|
-
delete route[item];
|
|
22
|
-
isWrite = 1;
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
|
-
// 配置更改重新写入
|
|
26
|
-
if (isWrite) {
|
|
27
|
-
fs.writeFileSync(state.dirname + "/config/api.config.json", JSON.stringify(route));
|
|
28
|
-
}
|
|
29
|
-
};
|
package/src/utils/quickSend.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
module.exports = (req, res, next) => {
|
|
2
|
-
req.body = req.fields;
|
|
3
|
-
let right = true;
|
|
4
|
-
res.return = async (data, status = 1, code = 200) => {
|
|
5
|
-
if (!right) return;
|
|
6
|
-
right = false;
|
|
7
|
-
if (!data) {
|
|
8
|
-
status = 0;
|
|
9
|
-
}
|
|
10
|
-
if (Number.isInteger(data)) data = data + '';
|
|
11
|
-
if (data instanceof Promise) data = await data;
|
|
12
|
-
res.status(code).send({
|
|
13
|
-
status: status >= 1 ? 1 : 0,
|
|
14
|
-
data: data ? data : null
|
|
15
|
-
});
|
|
16
|
-
};
|
|
17
|
-
next();
|
|
18
|
-
};
|
package/src/utils/token.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
const { decode, isJSON, encode, masTip, getTimestamp } = require('./encrypt');
|
|
2
|
-
const state = require('../state');
|
|
3
|
-
config = state.config;
|
|
4
|
-
_main = (req, res, next) => {
|
|
5
|
-
let apiCofig = require(state.dirname + '/config/api.config.json');
|
|
6
|
-
if (apiCofig[req.url] && apiCofig[req.url].token) {
|
|
7
|
-
if (!req.headers.token) {
|
|
8
|
-
return res.return('缺少重要参数', 0, 400);
|
|
9
|
-
}
|
|
10
|
-
const tokenInfo = decode(req.headers.token, config.token.pwd, true);
|
|
11
|
-
if (!tokenInfo) {
|
|
12
|
-
right = false;
|
|
13
|
-
return res.return('未知的参数 ', 0, 400);
|
|
14
|
-
} else if (apiCofig[req.url].permission instanceof Array) {
|
|
15
|
-
let right = false;
|
|
16
|
-
if (tokenInfo instanceof Object) apiCofig[req.url].permission.forEach(item => {
|
|
17
|
-
|
|
18
|
-
if (item == tokenInfo?._permission) {
|
|
19
|
-
right = true;
|
|
20
|
-
}
|
|
21
|
-
});
|
|
22
|
-
if (!right) return res.return('权限不足!', 0, 400);
|
|
23
|
-
}
|
|
24
|
-
if (tokenInfo instanceof String && isJSON(tokenInfo)) {
|
|
25
|
-
tokenInfo = JSON.parse(tokenInfo);
|
|
26
|
-
}
|
|
27
|
-
if (tokenInfo._masTime) {
|
|
28
|
-
if (getTimestamp() > tokenInfo._masTime) return res.return('token已过期!', 0);
|
|
29
|
-
delete tokenInfo._masTime;
|
|
30
|
-
}
|
|
31
|
-
req.tokenInfo = tokenInfo;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
next();
|
|
35
|
-
|
|
36
|
-
};
|
|
37
|
-
/**
|
|
38
|
-
* @desc: 生成token
|
|
39
|
-
* @param {*} data 要放入token的数据
|
|
40
|
-
* @param {number} time token过期时间,设置此项传入数据必须为json数据,单位为s,默认为0,不过期
|
|
41
|
-
* @param {string} permission 角色权限
|
|
42
|
-
* @return {*}
|
|
43
|
-
*/
|
|
44
|
-
function createToken(data, time = 0, permission,config) {
|
|
45
|
-
if (!isJSON(data) && !(data instanceof Object)) {
|
|
46
|
-
masTip('生成token失败!');
|
|
47
|
-
return undefined;
|
|
48
|
-
}
|
|
49
|
-
if (permission) {
|
|
50
|
-
data._permission = permission;
|
|
51
|
-
}
|
|
52
|
-
if (time) {
|
|
53
|
-
data._masTime = time * 1000 + getTimestamp();
|
|
54
|
-
}
|
|
55
|
-
return encode(data, config.token.pwd, true);
|
|
56
|
-
}
|
|
57
|
-
module.exports = { _main, createToken };
|
package/test/.utils/api.js
DELETED
package/test/.utils/apis.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"index":"","test":"","api":"接口","user":"","get":""}
|
package/test/config/config.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
const { configSchema } = require('../../src/index');
|
|
2
|
-
module.exports = configSchema({
|
|
3
|
-
projectName: "masjs",
|
|
4
|
-
port: 8087,
|
|
5
|
-
apidoc: true,
|
|
6
|
-
cors: true,
|
|
7
|
-
logs: {
|
|
8
|
-
open: true,
|
|
9
|
-
debug: false
|
|
10
|
-
},
|
|
11
|
-
token: {
|
|
12
|
-
open: true,
|
|
13
|
-
pwd: "test"
|
|
14
|
-
},
|
|
15
|
-
useSql: true,
|
|
16
|
-
sql: {
|
|
17
|
-
host: '127.0.0.1',
|
|
18
|
-
user: 'root',
|
|
19
|
-
password: '123456',
|
|
20
|
-
database: 'school'
|
|
21
|
-
}
|
|
22
|
-
});
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
const { $sqlForm } = require('../../src/index');
|
|
2
|
-
module.exports = {
|
|
3
|
-
"test": $sqlForm([
|
|
4
|
-
{
|
|
5
|
-
"key": "name",
|
|
6
|
-
"type": "str",
|
|
7
|
-
},
|
|
8
|
-
{
|
|
9
|
-
"key": "age",
|
|
10
|
-
"type": "int"
|
|
11
|
-
}
|
|
12
|
-
]),
|
|
13
|
-
"test22": $sqlForm([
|
|
14
|
-
{
|
|
15
|
-
"key": "name",
|
|
16
|
-
"type": "str"
|
|
17
|
-
},
|
|
18
|
-
{
|
|
19
|
-
"key": "test1",
|
|
20
|
-
"type": "int",
|
|
21
|
-
},
|
|
22
|
-
])
|
|
23
|
-
};
|
package/test/index.js
DELETED
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
const { getApp, sqlForm } = require('../src/index');
|
|
2
|
-
const config = require('./config/config');
|
|
3
|
-
const app = getApp(__dirname);
|
|
4
|
-
app.listen(config.port, () => {
|
|
5
|
-
console.log('服务器启动');
|
|
6
|
-
console.log(`http://localhost:${config.port}`);
|
|
7
|
-
if (config.apidoc) {
|
|
8
|
-
console.log('接口文档开启');
|
|
9
|
-
console.log(`http://localhost:${config.port}/doc`);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
});
|
package/test/public/1.txt
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
sdsd
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
16:58:58 GET ::1 /doc {}
|
|
2
|
-
16:58:58 POST ::1 /doc/get {}
|
|
3
|
-
16:59:14 POST ::1 /doc/getBody {"name":"/api/test"}
|
|
4
|
-
16:59:15 POST ::1 /api/test {}
|
|
5
|
-
17:02:52 POST ::1 /api/test {}
|
|
6
|
-
17:03:00 POST ::1 /api/test {}
|
|
7
|
-
17:05:42 POST ::1 /doc/get {}
|
|
8
|
-
17:06:56 POST ::1 /doc/getBody {"name":"/api/test"}
|
|
9
|
-
17:06:56 POST ::1 /api/test {}
|
|
10
|
-
17:07:06 POST ::1 /api/test {"name":"ss"}
|
|
11
|
-
17:07:14 POST ::1 /doc/get {}
|
|
12
|
-
17:08:08 POST ::1 /doc/get {}
|
|
13
|
-
17:09:30 POST ::1 /doc/getBody {"name":"/api/test"}
|
|
14
|
-
17:09:45 POST ::1 /api/test {"test":"ss"}
|
|
15
|
-
17:12:38 POST ::1 /api/test {"test":"ss"}
|
|
16
|
-
19:45:35 GET ::1 /doc {}
|
|
17
|
-
19:45:35 GET ::1 /favicon.ico {}
|
|
18
|
-
19:46:04 GET ::1 /doc {}
|
|
19
|
-
19:46:05 GET ::1 /doc {}
|
|
20
|
-
19:46:51 GET ::1 /doc {}
|
|
21
|
-
19:46:51 GET ::1 /favicon.ico {}
|
|
22
|
-
19:46:52 GET ::1 /doc {}
|
|
23
|
-
19:46:52 GET ::1 /favicon.ico {}
|
|
24
|
-
19:47:01 GET ::1 /doc {}
|
|
25
|
-
19:47:03 GET ::1 /doc {}
|
|
26
|
-
19:47:13 GET ::1 /doc {}
|
|
27
|
-
19:47:13 GET ::1 /doc {}
|
|
28
|
-
19:47:21 GET ::1 /doc {}
|
|
29
|
-
19:47:23 GET ::1 /doc {}
|
|
30
|
-
19:47:23 GET ::1 /doc {}
|
|
31
|
-
19:47:34 GET ::1 /doc {}
|
|
32
|
-
19:47:36 GET ::1 /doc {}
|
|
33
|
-
19:48:10 GET ::1 /doc {}
|
|
34
|
-
19:48:10 POST ::ffff:127.0.0.1 /doc/get {}
|
|
35
|
-
19:48:17 POST ::1 /doc/getBody {"name":"/api/test"}
|
|
36
|
-
19:48:18 POST ::1 /api/test {}
|
|
37
|
-
19:49:57 POST ::1 /api/test {}
|
|
38
|
-
19:50:50 POST ::1 /api/test {}
|
|
39
|
-
19:52:09 POST ::1 /api/test {}
|
|
40
|
-
19:57:47 GET ::1 / {}
|
|
41
|
-
19:59:07 POST ::1 /api/test {}
|
|
42
|
-
20:02:44 POST ::1 /api/test {}
|
|
43
|
-
20:03:13 POST ::1 /api/test {}
|
|
44
|
-
20:03:28 POST ::1 /api/test {}
|
|
45
|
-
20:03:37 POST ::1 /api/test {}
|
|
46
|
-
20:04:14 POST ::1 /api/test {}
|
|
47
|
-
20:26:27 POST ::1 /api/test {}
|
|
48
|
-
20:27:09 POST ::1 /api/test {}
|
|
49
|
-
20:27:11 POST ::1 /api/test {}
|
|
50
|
-
20:28:00 POST ::1 /api/test {}
|
|
51
|
-
20:28:49 POST ::1 /api/test {}
|
|
52
|
-
20:29:05 POST ::1 /api/test {}
|
|
53
|
-
20:29:09 POST ::1 /api/test {}
|
|
54
|
-
20:29:11 POST ::1 /api/test {}
|
|
55
|
-
20:29:12 POST ::1 /api/test {}
|
|
56
|
-
20:29:13 POST ::1 /api/test {}
|
|
57
|
-
20:29:15 POST ::1 /api/test {}
|
|
58
|
-
20:29:16 POST ::1 /api/test {}
|
package/test/src/$form.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
module.exports = {"manager":{"manager":"@manager","id":"id","password":"password","user":"user"},"school":{"school":"@school","id":"id","name":"name"},"student":{"student":"@student","age":"age","id":"id","name":"name"},"teacher":{"teacher":"@teacher","ID":"ID","姓名":"姓名","年龄":"年龄","性别":"性别"},"test":{"test":"@test","age":"age","id":"id","name":"name"},"test22":{"test22":"@test22","id":"id","name":"name","test1":"test1"}}
|
package/test/src/api/index.js
DELETED
package/test/src/api/test.js
DELETED
package/test/src/api/vip/del.js
DELETED
package/test/src/api/vip/get.js
DELETED
package/test/src/api/vip/set.js
DELETED
package/test/src/api/vip666.js
DELETED
package/test/src/debug.js
DELETED
|
File without changes
|