@rdyl/node-koa-controller 0.2.1 → 0.2.3
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/CHANGELOG.md +1 -1
- package/dist/cache.js +142 -0
- package/dist/index.js +95 -1
- package/dist/{controller/meta.js → meta.js} +8 -5
- package/dist/utils.js +141 -0
- package/package.json +1 -1
- package/types/cache.d.ts +10 -0
- package/types/index.d.ts +5 -1
- package/types/jwt.d.ts +37 -0
- package/types/{controller/meta.d.ts → meta.d.ts} +5 -10
- package/types/{controller/utils.d.ts → utils.d.ts} +3 -1
- package/dist/controller/index.js +0 -274
- package/dist/controller/utils.js +0 -60
- package/types/controller/gateway.d.ts +0 -37
- package/types/controller/index.d.ts +0 -6
- /package/dist/{controller/gateway.js → jwt.js} +0 -0
package/CHANGELOG.md
CHANGED
package/dist/cache.js
ADDED
|
@@ -0,0 +1,142 @@
|
|
|
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 __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
var fs_1 = __importDefault(require("fs"));
|
|
43
|
+
var path_1 = require("path");
|
|
44
|
+
var ASTCache = /** @class */ (function () {
|
|
45
|
+
function ASTCache() {
|
|
46
|
+
}
|
|
47
|
+
ASTCache.resolve = function (dir) {
|
|
48
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
49
|
+
var list, _i, list_1, p, url, stat, isDir, sp, ext;
|
|
50
|
+
return __generator(this, function (_a) {
|
|
51
|
+
switch (_a.label) {
|
|
52
|
+
case 0:
|
|
53
|
+
list = fs_1.default.readdirSync(dir);
|
|
54
|
+
_i = 0, list_1 = list;
|
|
55
|
+
_a.label = 1;
|
|
56
|
+
case 1:
|
|
57
|
+
if (!(_i < list_1.length)) return [3 /*break*/, 5];
|
|
58
|
+
p = list_1[_i];
|
|
59
|
+
url = (0, path_1.resolve)(dir, p);
|
|
60
|
+
stat = fs_1.default.statSync(url);
|
|
61
|
+
isDir = stat.isDirectory();
|
|
62
|
+
if (!isDir) return [3 /*break*/, 3];
|
|
63
|
+
// 文件架
|
|
64
|
+
return [4 /*yield*/, ASTCache.resolve(url)];
|
|
65
|
+
case 2:
|
|
66
|
+
// 文件架
|
|
67
|
+
_a.sent();
|
|
68
|
+
return [3 /*break*/, 4];
|
|
69
|
+
case 3:
|
|
70
|
+
try {
|
|
71
|
+
sp = p.split(".");
|
|
72
|
+
ext = sp[sp.length - 1];
|
|
73
|
+
if (ext === "ts" || ext === "js") {
|
|
74
|
+
require(url);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (_b) {
|
|
78
|
+
console.warn("解析出现错误!");
|
|
79
|
+
}
|
|
80
|
+
_a.label = 4;
|
|
81
|
+
case 4:
|
|
82
|
+
_i++;
|
|
83
|
+
return [3 /*break*/, 1];
|
|
84
|
+
case 5: return [2 /*return*/];
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
});
|
|
88
|
+
};
|
|
89
|
+
ASTCache.register = function (router, useJwt) {
|
|
90
|
+
var _this = this;
|
|
91
|
+
ASTCache.routes.forEach(function (route) {
|
|
92
|
+
var handlers = route.handlers, prefix = route.prefix, Instance = route.Instance;
|
|
93
|
+
handlers.forEach(function (handler) {
|
|
94
|
+
var method = handler.method, url = handler.url, name = handler.name;
|
|
95
|
+
var path = (0, path_1.join)("/" + ASTCache.prefix, prefix, url);
|
|
96
|
+
var isPublic = route.isPublic || handler.isPublic;
|
|
97
|
+
if (isPublic) {
|
|
98
|
+
ASTCache.whitelist.push(path);
|
|
99
|
+
}
|
|
100
|
+
// @ts-ignore
|
|
101
|
+
router[method.toLowerCase()](path, function (_ctx) { return __awaiter(_this, void 0, void 0, function () {
|
|
102
|
+
var instance, _a, stat, value, token, _b;
|
|
103
|
+
return __generator(this, function (_c) {
|
|
104
|
+
switch (_c.label) {
|
|
105
|
+
case 0:
|
|
106
|
+
instance = new Instance(_ctx);
|
|
107
|
+
_c.label = 1;
|
|
108
|
+
case 1:
|
|
109
|
+
_c.trys.push([1, 5, , 6]);
|
|
110
|
+
if (!useJwt) return [3 /*break*/, 3];
|
|
111
|
+
return [4 /*yield*/, useJwt.use(_ctx)];
|
|
112
|
+
case 2:
|
|
113
|
+
_a = _c.sent(), stat = _a.stat, value = _a.value, token = _a.token;
|
|
114
|
+
if (stat === "none" || stat === "expired") {
|
|
115
|
+
return [2 /*return*/, instance.status.unauthorized()];
|
|
116
|
+
}
|
|
117
|
+
instance.jwt = {
|
|
118
|
+
token: token,
|
|
119
|
+
value: value,
|
|
120
|
+
};
|
|
121
|
+
_c.label = 3;
|
|
122
|
+
case 3: return [4 /*yield*/, Promise.resolve(instance[name]())];
|
|
123
|
+
case 4:
|
|
124
|
+
_c.sent();
|
|
125
|
+
return [3 /*break*/, 6];
|
|
126
|
+
case 5:
|
|
127
|
+
_b = _c.sent();
|
|
128
|
+
instance.status.exception();
|
|
129
|
+
return [3 /*break*/, 6];
|
|
130
|
+
case 6: return [2 /*return*/];
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}); });
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
};
|
|
137
|
+
ASTCache.prefix = "";
|
|
138
|
+
ASTCache.routes = [];
|
|
139
|
+
ASTCache.whitelist = [];
|
|
140
|
+
return ASTCache;
|
|
141
|
+
}());
|
|
142
|
+
exports.default = ASTCache;
|
package/dist/index.js
CHANGED
|
@@ -13,5 +13,99 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
|
|
|
13
13
|
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
17
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
18
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
19
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
20
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
21
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
22
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
26
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
27
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
28
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
29
|
+
function step(op) {
|
|
30
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
31
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
32
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
33
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
34
|
+
switch (op[0]) {
|
|
35
|
+
case 0: case 1: t = op; break;
|
|
36
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
37
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
38
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
39
|
+
default:
|
|
40
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
41
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
42
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
43
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
44
|
+
if (t[2]) _.ops.pop();
|
|
45
|
+
_.trys.pop(); continue;
|
|
46
|
+
}
|
|
47
|
+
op = body.call(thisArg, _);
|
|
48
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
49
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
53
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
54
|
+
};
|
|
16
55
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
|
|
56
|
+
exports.useApiController = useApiController;
|
|
57
|
+
var koa_router_1 = __importDefault(require("koa-router"));
|
|
58
|
+
var koa_static_1 = __importDefault(require("koa-static"));
|
|
59
|
+
var koa_body_1 = require("koa-body");
|
|
60
|
+
var path_1 = require("path");
|
|
61
|
+
var utils_1 = require("./utils");
|
|
62
|
+
var cache_1 = __importDefault(require("./cache"));
|
|
63
|
+
function useApiController(app, opts) {
|
|
64
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
65
|
+
var root, _a, prefix, _b, port, _c, logs, formidable, jwt, router, rootDir, ip;
|
|
66
|
+
return __generator(this, function (_d) {
|
|
67
|
+
switch (_d.label) {
|
|
68
|
+
case 0:
|
|
69
|
+
root = opts.root, _a = opts.prefix, prefix = _a === void 0 ? "" : _a, _b = opts.port, port = _b === void 0 ? 8080 : _b, _c = opts.logs, logs = _c === void 0 ? true : _c, formidable = opts.formidable, jwt = opts.jwt;
|
|
70
|
+
cache_1.default.prefix = prefix;
|
|
71
|
+
router = new koa_router_1.default();
|
|
72
|
+
rootDir = (0, path_1.resolve)(process.cwd(), root);
|
|
73
|
+
return [4 /*yield*/, cache_1.default.resolve(rootDir)];
|
|
74
|
+
case 1:
|
|
75
|
+
_d.sent();
|
|
76
|
+
// 注册路由
|
|
77
|
+
cache_1.default.register(router, jwt);
|
|
78
|
+
if (opts.static) {
|
|
79
|
+
app.use((0, koa_static_1.default)(process.cwd(), {
|
|
80
|
+
root: opts.static,
|
|
81
|
+
}));
|
|
82
|
+
cache_1.default.whitelist.unshift(new RegExp("/".concat(opts.static)));
|
|
83
|
+
}
|
|
84
|
+
app.use((0, koa_body_1.koaBody)({
|
|
85
|
+
multipart: true,
|
|
86
|
+
formidable: formidable,
|
|
87
|
+
}));
|
|
88
|
+
if (logs) {
|
|
89
|
+
app.use(utils_1.RunningLogsHandler);
|
|
90
|
+
}
|
|
91
|
+
app.use(router.routes()).use(router.allowedMethods());
|
|
92
|
+
ip = (0, utils_1.getIPAdress)();
|
|
93
|
+
return [2 /*return*/, {
|
|
94
|
+
whitelist: cache_1.default.whitelist,
|
|
95
|
+
port: port,
|
|
96
|
+
prefix: prefix,
|
|
97
|
+
ip: ip,
|
|
98
|
+
running: function () {
|
|
99
|
+
(0, utils_1.ServerLaunchLogs)({
|
|
100
|
+
ip: ip,
|
|
101
|
+
port: port,
|
|
102
|
+
prefix: prefix,
|
|
103
|
+
});
|
|
104
|
+
},
|
|
105
|
+
}];
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
__exportStar(require("./meta"), exports);
|
|
111
|
+
__exportStar(require("./jwt"), exports);
|
|
@@ -35,10 +35,13 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
|
35
35
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
36
|
}
|
|
37
37
|
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
38
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
42
|
exports.Patch = exports.Put = exports.Delete = exports.Post = exports.Get = exports.BaseController = exports.HttpMethod = void 0;
|
|
40
43
|
exports.Controller = Controller;
|
|
41
|
-
var
|
|
44
|
+
var cache_1 = __importDefault(require("./cache"));
|
|
42
45
|
var HttpMethod;
|
|
43
46
|
(function (HttpMethod) {
|
|
44
47
|
HttpMethod["GET"] = "GET";
|
|
@@ -69,11 +72,11 @@ var BaseController = /** @class */ (function () {
|
|
|
69
72
|
values: values,
|
|
70
73
|
getPaged: function (def) {
|
|
71
74
|
if (def === void 0) { def = {}; }
|
|
72
|
-
var p = Number(values.
|
|
75
|
+
var p = Number(values.current);
|
|
73
76
|
var s = Number(values.pageSize);
|
|
74
|
-
var _a = def.
|
|
77
|
+
var _a = def.current, dPage = _a === void 0 ? 1 : _a, _b = def.pageSize, dPageSize = _b === void 0 ? 20 : _b;
|
|
75
78
|
return {
|
|
76
|
-
|
|
79
|
+
current: isNaN(p) ? dPage : p,
|
|
77
80
|
pageSize: isNaN(s) ? dPageSize : s,
|
|
78
81
|
};
|
|
79
82
|
},
|
|
@@ -200,7 +203,7 @@ function Controller(prefix, isPublic) {
|
|
|
200
203
|
handlers: ((_a = target.prototype) === null || _a === void 0 ? void 0 : _a.routes) || [],
|
|
201
204
|
isPublic: isPublic,
|
|
202
205
|
};
|
|
203
|
-
|
|
206
|
+
cache_1.default.routes.push(route);
|
|
204
207
|
};
|
|
205
208
|
}
|
|
206
209
|
exports.Get = MethodFactory(HttpMethod.GET);
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,141 @@
|
|
|
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 __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.formatDateTime = formatDateTime;
|
|
43
|
+
exports.getIPAdress = getIPAdress;
|
|
44
|
+
exports.RunningLogsHandler = RunningLogsHandler;
|
|
45
|
+
exports.ServerLaunchLogs = ServerLaunchLogs;
|
|
46
|
+
var os_1 = __importDefault(require("os"));
|
|
47
|
+
var path_1 = require("path");
|
|
48
|
+
var boxen_1 = __importDefault(require("boxen"));
|
|
49
|
+
var chalk_1 = __importDefault(require("chalk"));
|
|
50
|
+
function formatDateTime(date, format) {
|
|
51
|
+
if (date === void 0) { date = new Date(); }
|
|
52
|
+
if (format === void 0) { format = "YYYY-MM-DD HH:mm:ss"; }
|
|
53
|
+
var pad = function (num) { return num.toString().padStart(2, "0"); };
|
|
54
|
+
var year = date.getFullYear();
|
|
55
|
+
var month = pad(date.getMonth() + 1);
|
|
56
|
+
var day = pad(date.getDate());
|
|
57
|
+
var hours = pad(date.getHours());
|
|
58
|
+
var minutes = pad(date.getMinutes());
|
|
59
|
+
var seconds = pad(date.getSeconds());
|
|
60
|
+
return format
|
|
61
|
+
.replace("YYYY", year.toString())
|
|
62
|
+
.replace("MM", month)
|
|
63
|
+
.replace("DD", day)
|
|
64
|
+
.replace("HH", hours)
|
|
65
|
+
.replace("mm", minutes)
|
|
66
|
+
.replace("ss", seconds);
|
|
67
|
+
}
|
|
68
|
+
function getIPAdress() {
|
|
69
|
+
var interfaces = os_1.default.networkInterfaces();
|
|
70
|
+
for (var key in interfaces) {
|
|
71
|
+
var iface = interfaces[key];
|
|
72
|
+
if (iface) {
|
|
73
|
+
for (var i = 0; i < iface.length; i++) {
|
|
74
|
+
var alias = iface[i];
|
|
75
|
+
if (alias.family === "IPv4" &&
|
|
76
|
+
alias.address !== "127.0.0.1" &&
|
|
77
|
+
!alias.internal) {
|
|
78
|
+
return alias.address;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return "127.0.0.1";
|
|
84
|
+
}
|
|
85
|
+
function RunningLogsHandler(ctx, next) {
|
|
86
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
87
|
+
var start, duration, status_1, method, statusColor, dateTime, dText;
|
|
88
|
+
return __generator(this, function (_a) {
|
|
89
|
+
switch (_a.label) {
|
|
90
|
+
case 0:
|
|
91
|
+
start = Date.now();
|
|
92
|
+
_a.label = 1;
|
|
93
|
+
case 1:
|
|
94
|
+
_a.trys.push([1, , 3, 4]);
|
|
95
|
+
return [4 /*yield*/, next()];
|
|
96
|
+
case 2:
|
|
97
|
+
_a.sent();
|
|
98
|
+
return [3 /*break*/, 4];
|
|
99
|
+
case 3:
|
|
100
|
+
duration = Date.now() - start;
|
|
101
|
+
status_1 = ctx.status;
|
|
102
|
+
method = ctx.method;
|
|
103
|
+
statusColor = void 0;
|
|
104
|
+
if (status_1 >= 500)
|
|
105
|
+
statusColor = chalk_1.default.red;
|
|
106
|
+
else if (status_1 >= 400)
|
|
107
|
+
statusColor = chalk_1.default.yellow;
|
|
108
|
+
else if (status_1 >= 300)
|
|
109
|
+
statusColor = chalk_1.default.cyan;
|
|
110
|
+
else if (status_1 >= 200)
|
|
111
|
+
statusColor = chalk_1.default.green;
|
|
112
|
+
else
|
|
113
|
+
statusColor = chalk_1.default.gray;
|
|
114
|
+
dateTime = formatDateTime();
|
|
115
|
+
dText = chalk_1.default.gray("".concat(duration, "ms"));
|
|
116
|
+
if (duration > 5000) {
|
|
117
|
+
dText = chalk_1.default.red("".concat(duration, "ms"));
|
|
118
|
+
}
|
|
119
|
+
else if (duration > 1000) {
|
|
120
|
+
dText = chalk_1.default.yellow("".concat(duration, "ms"));
|
|
121
|
+
}
|
|
122
|
+
console.log("- [".concat(dateTime, " | ").concat(dText, "] ").concat(chalk_1.default.magenta(method), " ").concat(ctx.url, " ").concat(statusColor(status_1)));
|
|
123
|
+
return [7 /*endfinally*/];
|
|
124
|
+
case 4: return [2 /*return*/];
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
function ServerLaunchLogs(config) {
|
|
130
|
+
var port = config.port, prefix = config.prefix, ip = config.ip;
|
|
131
|
+
var suffix = (0, path_1.join)(port.toString(), prefix);
|
|
132
|
+
var env = process.env.NODE_ENV || "development";
|
|
133
|
+
var messages = (0, boxen_1.default)(chalk_1.default.hex("#83FFE6")("\n ".concat(chalk_1.default.bold.hex("#FFA500")("🚀 Server started successfully!"), "\n\n ").concat(chalk_1.default.bold("Env:"), " ").concat(chalk_1.default.white(" " + env + " "), "\n\n ").concat(chalk_1.default.bold("Local:"), " ").concat(chalk_1.default.green("http://localhost:".concat(suffix)), "\n ").concat(chalk_1.default.bold("Network:"), " ").concat(chalk_1.default.green("http://".concat(ip, ":").concat(suffix)), "\n")), {
|
|
134
|
+
padding: 0.5,
|
|
135
|
+
margin: 0.5,
|
|
136
|
+
borderStyle: "round",
|
|
137
|
+
borderColor: "#5ED7FF",
|
|
138
|
+
});
|
|
139
|
+
console.clear();
|
|
140
|
+
console.log(messages);
|
|
141
|
+
}
|
package/package.json
CHANGED
package/types/cache.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import Router from "koa-router";
|
|
2
|
+
import { ASTCacheRoute } from "./meta";
|
|
3
|
+
import { JwtSecretGateway } from "./jwt";
|
|
4
|
+
export default class ASTCache {
|
|
5
|
+
static prefix: string;
|
|
6
|
+
static routes: ASTCacheRoute[];
|
|
7
|
+
static whitelist: (string | RegExp)[];
|
|
8
|
+
static resolve(dir: string): Promise<void>;
|
|
9
|
+
static register(router: Router, useJwt?: JwtSecretGateway): void;
|
|
10
|
+
}
|
package/types/index.d.ts
CHANGED
package/types/jwt.d.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { KoaCtx } from "./meta";
|
|
2
|
+
declare class JwtTokens {
|
|
3
|
+
KEY: string;
|
|
4
|
+
duration: number;
|
|
5
|
+
records: JwtTokenItem[];
|
|
6
|
+
constructor(KEY: string, duration: number);
|
|
7
|
+
encode(payload: UseJwtValue): string;
|
|
8
|
+
decode(value: string): UseJwtValue | null;
|
|
9
|
+
removeBy(t: string): void;
|
|
10
|
+
find(t: string): JwtTokenItem | null;
|
|
11
|
+
get(token: string): Promise<JwtResData>;
|
|
12
|
+
create(data: UseJwtValue): string;
|
|
13
|
+
}
|
|
14
|
+
export declare class JwtSecretGateway {
|
|
15
|
+
headerName: string;
|
|
16
|
+
_jwtToken: JwtTokens;
|
|
17
|
+
constructor(headerName: string, opts: {
|
|
18
|
+
KEY: string;
|
|
19
|
+
duration?: number;
|
|
20
|
+
});
|
|
21
|
+
use(ctx: KoaCtx): Promise<JwtResData>;
|
|
22
|
+
authorize(data: UseJwtValue): string;
|
|
23
|
+
remove(t: string): void;
|
|
24
|
+
}
|
|
25
|
+
export interface JwtTokenItem {
|
|
26
|
+
token: string;
|
|
27
|
+
data: UseJwtValue;
|
|
28
|
+
expired: number;
|
|
29
|
+
created: number;
|
|
30
|
+
}
|
|
31
|
+
export type JwtStat = "ok" | "expired" | "none";
|
|
32
|
+
export type JwtResData = {
|
|
33
|
+
stat: JwtStat;
|
|
34
|
+
token: string;
|
|
35
|
+
value: UseJwtValue | null;
|
|
36
|
+
};
|
|
37
|
+
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ParameterizedContext } from "koa";
|
|
2
2
|
import { IRouterParamContext } from "koa-router";
|
|
3
3
|
import { ExtendedFormidableOptions } from "koa-body";
|
|
4
|
-
import { JwtSecretGateway } from "./
|
|
4
|
+
import { JwtSecretGateway } from "./jwt";
|
|
5
5
|
export type KoaCtx = ParameterizedContext<any, IRouterParamContext<any, {}>, any>;
|
|
6
6
|
export declare enum HttpMethod {
|
|
7
7
|
GET = "GET",
|
|
@@ -18,10 +18,10 @@ export declare class BaseController {
|
|
|
18
18
|
get query(): {
|
|
19
19
|
values: import("querystring").ParsedUrlQuery;
|
|
20
20
|
getPaged(def?: Partial<{
|
|
21
|
-
|
|
21
|
+
current: number;
|
|
22
22
|
pageSize: number;
|
|
23
23
|
}>): {
|
|
24
|
-
|
|
24
|
+
current: number;
|
|
25
25
|
pageSize: number;
|
|
26
26
|
};
|
|
27
27
|
getNumber(k: string): number | null;
|
|
@@ -52,14 +52,14 @@ export interface ResData<T> {
|
|
|
52
52
|
msg: string;
|
|
53
53
|
data?: T | null;
|
|
54
54
|
}
|
|
55
|
-
export interface UseProps
|
|
55
|
+
export interface UseProps {
|
|
56
56
|
port: number;
|
|
57
57
|
root: string;
|
|
58
58
|
prefix?: string;
|
|
59
59
|
static?: string;
|
|
60
60
|
logs?: boolean;
|
|
61
61
|
formidable?: ExtendedFormidableOptions;
|
|
62
|
-
jwt?: JwtSecretGateway
|
|
62
|
+
jwt?: JwtSecretGateway;
|
|
63
63
|
}
|
|
64
64
|
export interface SyncUseValue {
|
|
65
65
|
port: number;
|
|
@@ -80,8 +80,3 @@ export interface ASTCacheRoute {
|
|
|
80
80
|
prefix: string;
|
|
81
81
|
handlers: ASTCacheHandler[];
|
|
82
82
|
}
|
|
83
|
-
export interface ASTCacheProp {
|
|
84
|
-
prefix: string;
|
|
85
|
-
routes: ASTCacheRoute[];
|
|
86
|
-
whitelist: (string | RegExp)[];
|
|
87
|
-
}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
+
import { KoaCtx } from "./meta";
|
|
1
2
|
export declare function formatDateTime(date?: Date, format?: string): string;
|
|
2
3
|
export declare function getIPAdress(): string;
|
|
3
|
-
export declare function
|
|
4
|
+
export declare function RunningLogsHandler(ctx: KoaCtx, next: Function): Promise<void>;
|
|
5
|
+
export declare function ServerLaunchLogs(config: {
|
|
4
6
|
port: number;
|
|
5
7
|
prefix: string;
|
|
6
8
|
ip: string;
|
package/dist/controller/index.js
DELETED
|
@@ -1,274 +0,0 @@
|
|
|
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 () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
36
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
37
|
-
};
|
|
38
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
39
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
40
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
41
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
42
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
43
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
44
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
45
|
-
});
|
|
46
|
-
};
|
|
47
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
48
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
49
|
-
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
50
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
51
|
-
function step(op) {
|
|
52
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
53
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
54
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
55
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
56
|
-
switch (op[0]) {
|
|
57
|
-
case 0: case 1: t = op; break;
|
|
58
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
59
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
60
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
61
|
-
default:
|
|
62
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
63
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
64
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
65
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
66
|
-
if (t[2]) _.ops.pop();
|
|
67
|
-
_.trys.pop(); continue;
|
|
68
|
-
}
|
|
69
|
-
op = body.call(thisArg, _);
|
|
70
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
71
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
75
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
76
|
-
};
|
|
77
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
78
|
-
exports.ASTCache = void 0;
|
|
79
|
-
exports.useController = useController;
|
|
80
|
-
var koa_router_1 = __importDefault(require("koa-router"));
|
|
81
|
-
var koa_static_1 = __importDefault(require("koa-static"));
|
|
82
|
-
var koa_body_1 = require("koa-body");
|
|
83
|
-
var fs_1 = __importDefault(require("fs"));
|
|
84
|
-
var chalk_1 = __importDefault(require("chalk"));
|
|
85
|
-
var path_1 = require("path");
|
|
86
|
-
var utils_1 = require("./utils");
|
|
87
|
-
exports.ASTCache = {
|
|
88
|
-
prefix: "",
|
|
89
|
-
routes: [],
|
|
90
|
-
whitelist: [],
|
|
91
|
-
};
|
|
92
|
-
function RegisterASTCacheRoutes(router, useJwt) {
|
|
93
|
-
var _this = this;
|
|
94
|
-
exports.ASTCache.routes.forEach(function (route) {
|
|
95
|
-
var handlers = route.handlers, prefix = route.prefix, Instance = route.Instance;
|
|
96
|
-
handlers.forEach(function (handler) {
|
|
97
|
-
var method = handler.method, url = handler.url, name = handler.name;
|
|
98
|
-
var path = (0, path_1.join)("/" + exports.ASTCache.prefix, prefix, url);
|
|
99
|
-
var isPublic = route.isPublic || handler.isPublic;
|
|
100
|
-
if (isPublic) {
|
|
101
|
-
exports.ASTCache.whitelist.push(path);
|
|
102
|
-
}
|
|
103
|
-
// @ts-ignore
|
|
104
|
-
router[method.toLowerCase()](path, function (_ctx) { return __awaiter(_this, void 0, void 0, function () {
|
|
105
|
-
var instance, _a, stat, value, token, _b;
|
|
106
|
-
return __generator(this, function (_c) {
|
|
107
|
-
switch (_c.label) {
|
|
108
|
-
case 0:
|
|
109
|
-
instance = new Instance(_ctx);
|
|
110
|
-
_c.label = 1;
|
|
111
|
-
case 1:
|
|
112
|
-
_c.trys.push([1, 5, , 6]);
|
|
113
|
-
if (!useJwt) return [3 /*break*/, 3];
|
|
114
|
-
return [4 /*yield*/, useJwt.use(_ctx)];
|
|
115
|
-
case 2:
|
|
116
|
-
_a = _c.sent(), stat = _a.stat, value = _a.value, token = _a.token;
|
|
117
|
-
if (stat === "none" || stat === "expired") {
|
|
118
|
-
return [2 /*return*/, instance.status.unauthorized()];
|
|
119
|
-
}
|
|
120
|
-
instance.jwt = {
|
|
121
|
-
token: token,
|
|
122
|
-
value: value,
|
|
123
|
-
};
|
|
124
|
-
_c.label = 3;
|
|
125
|
-
case 3: return [4 /*yield*/, Promise.resolve(instance[name]())];
|
|
126
|
-
case 4:
|
|
127
|
-
_c.sent();
|
|
128
|
-
return [3 /*break*/, 6];
|
|
129
|
-
case 5:
|
|
130
|
-
_b = _c.sent();
|
|
131
|
-
instance.status.exception();
|
|
132
|
-
return [3 /*break*/, 6];
|
|
133
|
-
case 6: return [2 /*return*/];
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
}); });
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
function useController(app, opts) {
|
|
141
|
-
return __awaiter(this, void 0, void 0, function () {
|
|
142
|
-
var root, _a, prefix, _b, port, _c, logs, formidable, jwt, router, rootDir, initAST, ip;
|
|
143
|
-
var _this = this;
|
|
144
|
-
return __generator(this, function (_d) {
|
|
145
|
-
switch (_d.label) {
|
|
146
|
-
case 0:
|
|
147
|
-
root = opts.root, _a = opts.prefix, prefix = _a === void 0 ? "" : _a, _b = opts.port, port = _b === void 0 ? 8080 : _b, _c = opts.logs, logs = _c === void 0 ? true : _c, formidable = opts.formidable, jwt = opts.jwt;
|
|
148
|
-
exports.ASTCache.prefix = prefix;
|
|
149
|
-
router = new koa_router_1.default();
|
|
150
|
-
rootDir = (0, path_1.resolve)(process.cwd(), root);
|
|
151
|
-
initAST = function (dir) { return __awaiter(_this, void 0, void 0, function () {
|
|
152
|
-
var list, _i, list_1, p, url, stat, isDir, sp, ext, _a;
|
|
153
|
-
return __generator(this, function (_b) {
|
|
154
|
-
switch (_b.label) {
|
|
155
|
-
case 0:
|
|
156
|
-
list = fs_1.default.readdirSync(dir);
|
|
157
|
-
_i = 0, list_1 = list;
|
|
158
|
-
_b.label = 1;
|
|
159
|
-
case 1:
|
|
160
|
-
if (!(_i < list_1.length)) return [3 /*break*/, 8];
|
|
161
|
-
p = list_1[_i];
|
|
162
|
-
url = (0, path_1.resolve)(dir, p);
|
|
163
|
-
stat = fs_1.default.statSync(url);
|
|
164
|
-
isDir = stat.isDirectory();
|
|
165
|
-
if (!isDir) return [3 /*break*/, 3];
|
|
166
|
-
// 文件架
|
|
167
|
-
return [4 /*yield*/, initAST(url)];
|
|
168
|
-
case 2:
|
|
169
|
-
// 文件架
|
|
170
|
-
_b.sent();
|
|
171
|
-
return [3 /*break*/, 7];
|
|
172
|
-
case 3:
|
|
173
|
-
_b.trys.push([3, 6, , 7]);
|
|
174
|
-
sp = p.split(".");
|
|
175
|
-
ext = sp[sp.length - 1];
|
|
176
|
-
if (!(ext === "ts" || ext === "js")) return [3 /*break*/, 5];
|
|
177
|
-
// ts | js 文件
|
|
178
|
-
return [4 /*yield*/, Promise.resolve("".concat(url)).then(function (s) { return __importStar(require(s)); })];
|
|
179
|
-
case 4:
|
|
180
|
-
// ts | js 文件
|
|
181
|
-
_b.sent();
|
|
182
|
-
_b.label = 5;
|
|
183
|
-
case 5: return [3 /*break*/, 7];
|
|
184
|
-
case 6:
|
|
185
|
-
_a = _b.sent();
|
|
186
|
-
console.warn("解析出现错误!");
|
|
187
|
-
return [3 /*break*/, 7];
|
|
188
|
-
case 7:
|
|
189
|
-
_i++;
|
|
190
|
-
return [3 /*break*/, 1];
|
|
191
|
-
case 8: return [2 /*return*/];
|
|
192
|
-
}
|
|
193
|
-
});
|
|
194
|
-
}); };
|
|
195
|
-
return [4 /*yield*/, initAST(rootDir)];
|
|
196
|
-
case 1:
|
|
197
|
-
_d.sent();
|
|
198
|
-
// 注册路由
|
|
199
|
-
RegisterASTCacheRoutes(router, jwt);
|
|
200
|
-
if (opts.static) {
|
|
201
|
-
app.use((0, koa_static_1.default)(process.cwd(), {
|
|
202
|
-
root: opts.static,
|
|
203
|
-
}));
|
|
204
|
-
exports.ASTCache.whitelist.unshift(new RegExp("/".concat(opts.static)));
|
|
205
|
-
}
|
|
206
|
-
app.use((0, koa_body_1.koaBody)({
|
|
207
|
-
multipart: true,
|
|
208
|
-
formidable: formidable,
|
|
209
|
-
}));
|
|
210
|
-
if (logs) {
|
|
211
|
-
app.use(function (ctx, next) { return __awaiter(_this, void 0, void 0, function () {
|
|
212
|
-
var start, duration, status_1, method, statusColor, dateTime, dText;
|
|
213
|
-
return __generator(this, function (_a) {
|
|
214
|
-
switch (_a.label) {
|
|
215
|
-
case 0:
|
|
216
|
-
start = Date.now();
|
|
217
|
-
_a.label = 1;
|
|
218
|
-
case 1:
|
|
219
|
-
_a.trys.push([1, , 3, 4]);
|
|
220
|
-
return [4 /*yield*/, next()];
|
|
221
|
-
case 2:
|
|
222
|
-
_a.sent();
|
|
223
|
-
return [3 /*break*/, 4];
|
|
224
|
-
case 3:
|
|
225
|
-
duration = Date.now() - start;
|
|
226
|
-
status_1 = ctx.status;
|
|
227
|
-
method = ctx.method;
|
|
228
|
-
statusColor = void 0;
|
|
229
|
-
if (status_1 >= 500)
|
|
230
|
-
statusColor = chalk_1.default.red;
|
|
231
|
-
else if (status_1 >= 400)
|
|
232
|
-
statusColor = chalk_1.default.yellow;
|
|
233
|
-
else if (status_1 >= 300)
|
|
234
|
-
statusColor = chalk_1.default.cyan;
|
|
235
|
-
else if (status_1 >= 200)
|
|
236
|
-
statusColor = chalk_1.default.green;
|
|
237
|
-
else
|
|
238
|
-
statusColor = chalk_1.default.gray;
|
|
239
|
-
dateTime = (0, utils_1.formatDateTime)();
|
|
240
|
-
dText = chalk_1.default.gray("".concat(duration, "ms"));
|
|
241
|
-
if (duration > 5000) {
|
|
242
|
-
dText = chalk_1.default.red("".concat(duration, "ms"));
|
|
243
|
-
}
|
|
244
|
-
else if (duration > 1000) {
|
|
245
|
-
dText = chalk_1.default.yellow("".concat(duration, "ms"));
|
|
246
|
-
}
|
|
247
|
-
console.log("- [".concat(dateTime, " | ").concat(dText, "] ").concat(chalk_1.default.magenta(method), " ").concat(ctx.url, " ").concat(statusColor(status_1)));
|
|
248
|
-
return [7 /*endfinally*/];
|
|
249
|
-
case 4: return [2 /*return*/];
|
|
250
|
-
}
|
|
251
|
-
});
|
|
252
|
-
}); });
|
|
253
|
-
}
|
|
254
|
-
app.use(router.routes()).use(router.allowedMethods());
|
|
255
|
-
ip = (0, utils_1.getIPAdress)();
|
|
256
|
-
return [2 /*return*/, {
|
|
257
|
-
whitelist: exports.ASTCache.whitelist,
|
|
258
|
-
port: port,
|
|
259
|
-
prefix: prefix,
|
|
260
|
-
ip: ip,
|
|
261
|
-
running: function () {
|
|
262
|
-
return (0, utils_1.RunningLogs)({
|
|
263
|
-
ip: ip,
|
|
264
|
-
port: port,
|
|
265
|
-
prefix: prefix,
|
|
266
|
-
});
|
|
267
|
-
},
|
|
268
|
-
}];
|
|
269
|
-
}
|
|
270
|
-
});
|
|
271
|
-
});
|
|
272
|
-
}
|
|
273
|
-
__exportStar(require("./meta"), exports);
|
|
274
|
-
__exportStar(require("./gateway"), exports);
|
package/dist/controller/utils.js
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
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
|
-
exports.formatDateTime = formatDateTime;
|
|
7
|
-
exports.getIPAdress = getIPAdress;
|
|
8
|
-
exports.RunningLogs = RunningLogs;
|
|
9
|
-
var os_1 = __importDefault(require("os"));
|
|
10
|
-
var path_1 = require("path");
|
|
11
|
-
var boxen_1 = __importDefault(require("boxen"));
|
|
12
|
-
var chalk_1 = __importDefault(require("chalk"));
|
|
13
|
-
function formatDateTime(date, format) {
|
|
14
|
-
if (date === void 0) { date = new Date(); }
|
|
15
|
-
if (format === void 0) { format = "YYYY-MM-DD HH:mm:ss"; }
|
|
16
|
-
var pad = function (num) { return num.toString().padStart(2, "0"); };
|
|
17
|
-
var year = date.getFullYear();
|
|
18
|
-
var month = pad(date.getMonth() + 1);
|
|
19
|
-
var day = pad(date.getDate());
|
|
20
|
-
var hours = pad(date.getHours());
|
|
21
|
-
var minutes = pad(date.getMinutes());
|
|
22
|
-
var seconds = pad(date.getSeconds());
|
|
23
|
-
return format
|
|
24
|
-
.replace("YYYY", year.toString())
|
|
25
|
-
.replace("MM", month)
|
|
26
|
-
.replace("DD", day)
|
|
27
|
-
.replace("HH", hours)
|
|
28
|
-
.replace("mm", minutes)
|
|
29
|
-
.replace("ss", seconds);
|
|
30
|
-
}
|
|
31
|
-
function getIPAdress() {
|
|
32
|
-
var interfaces = os_1.default.networkInterfaces();
|
|
33
|
-
for (var key in interfaces) {
|
|
34
|
-
var iface = interfaces[key];
|
|
35
|
-
if (iface) {
|
|
36
|
-
for (var i = 0; i < iface.length; i++) {
|
|
37
|
-
var alias = iface[i];
|
|
38
|
-
if (alias.family === "IPv4" &&
|
|
39
|
-
alias.address !== "127.0.0.1" &&
|
|
40
|
-
!alias.internal) {
|
|
41
|
-
return alias.address;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
return "127.0.0.1";
|
|
47
|
-
}
|
|
48
|
-
function RunningLogs(config) {
|
|
49
|
-
var port = config.port, prefix = config.prefix, ip = config.ip;
|
|
50
|
-
var suffix = (0, path_1.join)(port.toString(), prefix);
|
|
51
|
-
var env = process.env.NODE_ENV || "development";
|
|
52
|
-
var messages = (0, boxen_1.default)(chalk_1.default.hex("#83FFE6")("\n ".concat(chalk_1.default.bold.hex("#FFA500")("🚀 Server started successfully!"), "\n\n ").concat(chalk_1.default.bold("Env:"), " ").concat(chalk_1.default.white(" " + env + " "), "\n\n ").concat(chalk_1.default.bold("Local:"), " ").concat(chalk_1.default.green("http://localhost:".concat(suffix)), "\n ").concat(chalk_1.default.bold("Network:"), " ").concat(chalk_1.default.green("http://".concat(ip, ":").concat(suffix)), "\n")), {
|
|
53
|
-
padding: 0.5,
|
|
54
|
-
margin: 0.5,
|
|
55
|
-
borderStyle: "round",
|
|
56
|
-
borderColor: "#5ED7FF",
|
|
57
|
-
});
|
|
58
|
-
console.clear();
|
|
59
|
-
console.log(messages);
|
|
60
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { KoaCtx } from "./meta";
|
|
2
|
-
declare class JwtTokens<T> {
|
|
3
|
-
KEY: string;
|
|
4
|
-
duration: number;
|
|
5
|
-
records: JwtTokenItem<T>[];
|
|
6
|
-
constructor(KEY: string, duration: number);
|
|
7
|
-
encode(payload: T): string;
|
|
8
|
-
decode(value: string): T | null;
|
|
9
|
-
removeBy(t: string): void;
|
|
10
|
-
find(t: string): JwtTokenItem<T> | null;
|
|
11
|
-
get(token: string): Promise<JwtResData<T>>;
|
|
12
|
-
create(data: T): string;
|
|
13
|
-
}
|
|
14
|
-
export declare class JwtSecretGateway<T extends object> {
|
|
15
|
-
headerName: string;
|
|
16
|
-
_jwtToken: JwtTokens<T>;
|
|
17
|
-
constructor(headerName: string, opts: {
|
|
18
|
-
KEY: string;
|
|
19
|
-
duration?: number;
|
|
20
|
-
});
|
|
21
|
-
use(ctx: KoaCtx): Promise<JwtResData<T>>;
|
|
22
|
-
authorize(data: T): string;
|
|
23
|
-
remove(t: string): void;
|
|
24
|
-
}
|
|
25
|
-
export interface JwtTokenItem<T> {
|
|
26
|
-
token: string;
|
|
27
|
-
data: T;
|
|
28
|
-
expired: number;
|
|
29
|
-
created: number;
|
|
30
|
-
}
|
|
31
|
-
export type JwtStat = "ok" | "expired" | "none";
|
|
32
|
-
export type JwtResData<T> = {
|
|
33
|
-
stat: JwtStat;
|
|
34
|
-
token: string;
|
|
35
|
-
value: T;
|
|
36
|
-
};
|
|
37
|
-
export {};
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import Koa from "koa";
|
|
2
|
-
import { ASTCacheProp, SyncUseValue, UseProps } from "./meta";
|
|
3
|
-
export declare const ASTCache: ASTCacheProp;
|
|
4
|
-
export declare function useController<U extends object = object>(app: Koa, opts: UseProps<U>): Promise<SyncUseValue>;
|
|
5
|
-
export * from "./meta";
|
|
6
|
-
export * from "./gateway";
|
|
File without changes
|