@rdyl/node-koa-controller 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,4 +1,4 @@
1
- ## 0.1.9 (2025-04-29)
1
+ ## 0.2.1 (2025-08-25)
2
2
 
3
3
 
4
4
 
package/dist/cache.js ADDED
@@ -0,0 +1,179 @@
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 __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ var __generator = (this && this.__generator) || function (thisArg, body) {
45
+ 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);
46
+ return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
47
+ function verb(n) { return function (v) { return step([n, v]); }; }
48
+ function step(op) {
49
+ if (f) throw new TypeError("Generator is already executing.");
50
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
51
+ 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;
52
+ if (y = 0, t) op = [op[0] & 2, t.value];
53
+ switch (op[0]) {
54
+ case 0: case 1: t = op; break;
55
+ case 4: _.label++; return { value: op[1], done: false };
56
+ case 5: _.label++; y = op[1]; op = [0]; continue;
57
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
58
+ default:
59
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
60
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
61
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
62
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
63
+ if (t[2]) _.ops.pop();
64
+ _.trys.pop(); continue;
65
+ }
66
+ op = body.call(thisArg, _);
67
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
68
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
69
+ }
70
+ };
71
+ var __importDefault = (this && this.__importDefault) || function (mod) {
72
+ return (mod && mod.__esModule) ? mod : { "default": mod };
73
+ };
74
+ Object.defineProperty(exports, "__esModule", { value: true });
75
+ var fs_1 = __importDefault(require("fs"));
76
+ var path_1 = require("path");
77
+ var ASTCache = /** @class */ (function () {
78
+ function ASTCache() {
79
+ }
80
+ ASTCache.resolve = function (dir) {
81
+ return __awaiter(this, void 0, void 0, function () {
82
+ var list, _i, list_1, p, url, stat, isDir, sp, ext, _a;
83
+ return __generator(this, function (_b) {
84
+ switch (_b.label) {
85
+ case 0:
86
+ list = fs_1.default.readdirSync(dir);
87
+ _i = 0, list_1 = list;
88
+ _b.label = 1;
89
+ case 1:
90
+ if (!(_i < list_1.length)) return [3 /*break*/, 8];
91
+ p = list_1[_i];
92
+ url = (0, path_1.resolve)(dir, p);
93
+ stat = fs_1.default.statSync(url);
94
+ isDir = stat.isDirectory();
95
+ if (!isDir) return [3 /*break*/, 3];
96
+ // 文件架
97
+ return [4 /*yield*/, ASTCache.resolve(url)];
98
+ case 2:
99
+ // 文件架
100
+ _b.sent();
101
+ return [3 /*break*/, 7];
102
+ case 3:
103
+ _b.trys.push([3, 6, , 7]);
104
+ sp = p.split(".");
105
+ ext = sp[sp.length - 1];
106
+ if (!(ext === "ts" || ext === "js")) return [3 /*break*/, 5];
107
+ // ts | js 文件
108
+ return [4 /*yield*/, Promise.resolve("".concat(url)).then(function (s) { return __importStar(require(s)); })];
109
+ case 4:
110
+ // ts | js 文件
111
+ _b.sent();
112
+ _b.label = 5;
113
+ case 5: return [3 /*break*/, 7];
114
+ case 6:
115
+ _a = _b.sent();
116
+ console.warn("解析出现错误!");
117
+ return [3 /*break*/, 7];
118
+ case 7:
119
+ _i++;
120
+ return [3 /*break*/, 1];
121
+ case 8: return [2 /*return*/];
122
+ }
123
+ });
124
+ });
125
+ };
126
+ ASTCache.register = function (router, useJwt) {
127
+ var _this = this;
128
+ ASTCache.routes.forEach(function (route) {
129
+ var handlers = route.handlers, prefix = route.prefix, Instance = route.Instance;
130
+ handlers.forEach(function (handler) {
131
+ var method = handler.method, url = handler.url, name = handler.name;
132
+ var path = (0, path_1.join)("/" + ASTCache.prefix, prefix, url);
133
+ var isPublic = route.isPublic || handler.isPublic;
134
+ if (isPublic) {
135
+ ASTCache.whitelist.push(path);
136
+ }
137
+ // @ts-ignore
138
+ router[method.toLowerCase()](path, function (_ctx) { return __awaiter(_this, void 0, void 0, function () {
139
+ var instance, _a, stat, value, token, _b;
140
+ return __generator(this, function (_c) {
141
+ switch (_c.label) {
142
+ case 0:
143
+ instance = new Instance(_ctx);
144
+ _c.label = 1;
145
+ case 1:
146
+ _c.trys.push([1, 5, , 6]);
147
+ if (!useJwt) return [3 /*break*/, 3];
148
+ return [4 /*yield*/, useJwt.use(_ctx)];
149
+ case 2:
150
+ _a = _c.sent(), stat = _a.stat, value = _a.value, token = _a.token;
151
+ if (stat === "none" || stat === "expired") {
152
+ return [2 /*return*/, instance.status.unauthorized()];
153
+ }
154
+ instance.jwt = {
155
+ token: token,
156
+ value: value,
157
+ };
158
+ _c.label = 3;
159
+ case 3: return [4 /*yield*/, Promise.resolve(instance[name]())];
160
+ case 4:
161
+ _c.sent();
162
+ return [3 /*break*/, 6];
163
+ case 5:
164
+ _b = _c.sent();
165
+ instance.status.exception();
166
+ return [3 /*break*/, 6];
167
+ case 6: return [2 /*return*/];
168
+ }
169
+ });
170
+ }); });
171
+ });
172
+ });
173
+ };
174
+ ASTCache.prefix = "";
175
+ ASTCache.routes = [];
176
+ ASTCache.whitelist = [];
177
+ return ASTCache;
178
+ }());
179
+ 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
- __exportStar(require("./controller"), exports);
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);
@@ -93,6 +93,7 @@ var JwtTokens = /** @class */ (function () {
93
93
  if (!result) {
94
94
  return [2 /*return*/, {
95
95
  stat: "none",
96
+ token: token,
96
97
  value: null,
97
98
  }];
98
99
  }
@@ -102,11 +103,13 @@ var JwtTokens = /** @class */ (function () {
102
103
  this.removeBy(token);
103
104
  return [2 /*return*/, {
104
105
  stat: "expired",
106
+ token: token,
105
107
  value: result.data,
106
108
  }];
107
109
  }
108
110
  return [2 /*return*/, {
109
111
  stat: "ok",
112
+ token: token,
110
113
  value: result.data,
111
114
  }];
112
115
  }
@@ -140,12 +143,14 @@ var JwtSecretGateway = /** @class */ (function () {
140
143
  return __generator(this, function (_a) {
141
144
  switch (_a.label) {
142
145
  case 0:
143
- token = ctx.request.headers[this.headerName.toLowerCase()] || "";
146
+ token = (ctx.request.headers[this.headerName.toLowerCase()] ||
147
+ "");
144
148
  if (!(typeof token === "string")) return [3 /*break*/, 2];
145
149
  return [4 /*yield*/, this._jwtToken.get(token)];
146
150
  case 1: return [2 /*return*/, _a.sent()];
147
151
  case 2: return [2 /*return*/, {
148
152
  stat: "none",
153
+ token: token,
149
154
  value: null,
150
155
  }];
151
156
  }
@@ -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 index_1 = require("./index");
44
+ var cache_1 = __importDefault(require("./cache"));
42
45
  var HttpMethod;
43
46
  (function (HttpMethod) {
44
47
  HttpMethod["GET"] = "GET";
@@ -50,7 +53,10 @@ var HttpMethod;
50
53
  var BaseController = /** @class */ (function () {
51
54
  function BaseController(_ctx) {
52
55
  this._ctx = _ctx;
53
- this.jwt = {};
56
+ this.jwt = {
57
+ token: "",
58
+ value: {},
59
+ };
54
60
  }
55
61
  Object.defineProperty(BaseController.prototype, "pathname", {
56
62
  get: function () {
@@ -66,11 +72,11 @@ var BaseController = /** @class */ (function () {
66
72
  values: values,
67
73
  getPaged: function (def) {
68
74
  if (def === void 0) { def = {}; }
69
- var p = Number(values.page);
75
+ var p = Number(values.current);
70
76
  var s = Number(values.pageSize);
71
- var _a = def.page, dPage = _a === void 0 ? 1 : _a, _b = def.pageSize, dPageSize = _b === void 0 ? 20 : _b;
77
+ var _a = def.current, dPage = _a === void 0 ? 1 : _a, _b = def.pageSize, dPageSize = _b === void 0 ? 20 : _b;
72
78
  return {
73
- page: isNaN(p) ? dPage : p,
79
+ current: isNaN(p) ? dPage : p,
74
80
  pageSize: isNaN(s) ? dPageSize : s,
75
81
  };
76
82
  },
@@ -197,7 +203,7 @@ function Controller(prefix, isPublic) {
197
203
  handlers: ((_a = target.prototype) === null || _a === void 0 ? void 0 : _a.routes) || [],
198
204
  isPublic: isPublic,
199
205
  };
200
- index_1.ASTCache.routes.push(route);
206
+ cache_1.default.routes.push(route);
201
207
  };
202
208
  }
203
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rdyl/node-koa-controller",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "license": "MIT",
5
5
  "main": "dist/index.js",
6
6
  "types": "types/index.d.ts",
@@ -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
@@ -1 +1,5 @@
1
- export * from "./controller";
1
+ import Koa from "koa";
2
+ import { SyncUseValue, UseProps } from "./meta";
3
+ export declare function useApiController(app: Koa, opts: UseProps): Promise<SyncUseValue>;
4
+ export * from "./meta";
5
+ export * from "./jwt";
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 "./gateway";
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",
@@ -12,16 +12,16 @@ export declare enum HttpMethod {
12
12
  }
13
13
  export declare class BaseController {
14
14
  _ctx: KoaCtx;
15
- jwt: UseJwtValue;
15
+ jwt: UseJwtCtx;
16
16
  constructor(_ctx: KoaCtx);
17
17
  get pathname(): string;
18
18
  get query(): {
19
19
  values: import("querystring").ParsedUrlQuery;
20
20
  getPaged(def?: Partial<{
21
- page: number;
21
+ current: number;
22
22
  pageSize: number;
23
23
  }>): {
24
- page: number;
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<U extends object> {
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<U>;
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
- }
package/types/type.d.ts CHANGED
@@ -1 +1,6 @@
1
+ type UseJwtCtx = {
2
+ token: string;
3
+ value: UseJwtValue;
4
+ };
5
+
1
6
  type UseJwtValue = Record<string, unknown>;
@@ -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 RunningLogs(config: {
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;
@@ -1,271 +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, _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;
117
- if (stat === "none" || stat === "expired") {
118
- return [2 /*return*/, instance.status.unauthorized()];
119
- }
120
- instance.jwt = value;
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
- function useController(app, opts) {
138
- return __awaiter(this, void 0, void 0, function () {
139
- var root, _a, prefix, _b, port, _c, logs, formidable, jwt, router, rootDir, initAST, ip;
140
- var _this = this;
141
- return __generator(this, function (_d) {
142
- switch (_d.label) {
143
- case 0:
144
- 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;
145
- exports.ASTCache.prefix = prefix;
146
- router = new koa_router_1.default();
147
- rootDir = (0, path_1.resolve)(process.cwd(), root);
148
- initAST = function (dir) { return __awaiter(_this, void 0, void 0, function () {
149
- var list, _i, list_1, p, url, stat, isDir, sp, ext, _a;
150
- return __generator(this, function (_b) {
151
- switch (_b.label) {
152
- case 0:
153
- list = fs_1.default.readdirSync(dir);
154
- _i = 0, list_1 = list;
155
- _b.label = 1;
156
- case 1:
157
- if (!(_i < list_1.length)) return [3 /*break*/, 8];
158
- p = list_1[_i];
159
- url = (0, path_1.resolve)(dir, p);
160
- stat = fs_1.default.statSync(url);
161
- isDir = stat.isDirectory();
162
- if (!isDir) return [3 /*break*/, 3];
163
- // 文件架
164
- return [4 /*yield*/, initAST(url)];
165
- case 2:
166
- // 文件架
167
- _b.sent();
168
- return [3 /*break*/, 7];
169
- case 3:
170
- _b.trys.push([3, 6, , 7]);
171
- sp = p.split(".");
172
- ext = sp[sp.length - 1];
173
- if (!(ext === "ts" || ext === "js")) return [3 /*break*/, 5];
174
- // ts | js 文件
175
- return [4 /*yield*/, Promise.resolve("".concat(url)).then(function (s) { return __importStar(require(s)); })];
176
- case 4:
177
- // ts | js 文件
178
- _b.sent();
179
- _b.label = 5;
180
- case 5: return [3 /*break*/, 7];
181
- case 6:
182
- _a = _b.sent();
183
- console.warn("解析出现错误!");
184
- return [3 /*break*/, 7];
185
- case 7:
186
- _i++;
187
- return [3 /*break*/, 1];
188
- case 8: return [2 /*return*/];
189
- }
190
- });
191
- }); };
192
- return [4 /*yield*/, initAST(rootDir)];
193
- case 1:
194
- _d.sent();
195
- // 注册路由
196
- RegisterASTCacheRoutes(router, jwt);
197
- if (opts.static) {
198
- app.use((0, koa_static_1.default)(process.cwd(), {
199
- root: opts.static,
200
- }));
201
- exports.ASTCache.whitelist.unshift(new RegExp("/".concat(opts.static)));
202
- }
203
- app.use((0, koa_body_1.koaBody)({
204
- multipart: true,
205
- formidable: formidable,
206
- }));
207
- if (logs) {
208
- app.use(function (ctx, next) { return __awaiter(_this, void 0, void 0, function () {
209
- var start, duration, status_1, method, statusColor, dateTime, dText;
210
- return __generator(this, function (_a) {
211
- switch (_a.label) {
212
- case 0:
213
- start = Date.now();
214
- _a.label = 1;
215
- case 1:
216
- _a.trys.push([1, , 3, 4]);
217
- return [4 /*yield*/, next()];
218
- case 2:
219
- _a.sent();
220
- return [3 /*break*/, 4];
221
- case 3:
222
- duration = Date.now() - start;
223
- status_1 = ctx.status;
224
- method = ctx.method;
225
- statusColor = void 0;
226
- if (status_1 >= 500)
227
- statusColor = chalk_1.default.red;
228
- else if (status_1 >= 400)
229
- statusColor = chalk_1.default.yellow;
230
- else if (status_1 >= 300)
231
- statusColor = chalk_1.default.cyan;
232
- else if (status_1 >= 200)
233
- statusColor = chalk_1.default.green;
234
- else
235
- statusColor = chalk_1.default.gray;
236
- dateTime = (0, utils_1.formatDateTime)();
237
- dText = chalk_1.default.gray("".concat(duration, "ms"));
238
- if (duration > 5000) {
239
- dText = chalk_1.default.red("".concat(duration, "ms"));
240
- }
241
- else if (duration > 1000) {
242
- dText = chalk_1.default.yellow("".concat(duration, "ms"));
243
- }
244
- console.log("- [".concat(dateTime, " | ").concat(dText, "] ").concat(chalk_1.default.magenta(method), " ").concat(ctx.url, " ").concat(statusColor(status_1)));
245
- return [7 /*endfinally*/];
246
- case 4: return [2 /*return*/];
247
- }
248
- });
249
- }); });
250
- }
251
- app.use(router.routes()).use(router.allowedMethods());
252
- ip = (0, utils_1.getIPAdress)();
253
- return [2 /*return*/, {
254
- whitelist: exports.ASTCache.whitelist,
255
- port: port,
256
- prefix: prefix,
257
- ip: ip,
258
- running: function () {
259
- return (0, utils_1.RunningLogs)({
260
- ip: ip,
261
- port: port,
262
- prefix: prefix,
263
- });
264
- },
265
- }];
266
- }
267
- });
268
- });
269
- }
270
- __exportStar(require("./meta"), exports);
271
- __exportStar(require("./gateway"), exports);
@@ -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,36 +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
- value: T;
35
- };
36
- 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";