@cicctencent/midwayjs-base 1.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.
Files changed (40) hide show
  1. package/dist/base/base.controller.d.ts +5 -0
  2. package/dist/base/base.controller.js +27 -0
  3. package/dist/base/base.model.service.d.ts +29 -0
  4. package/dist/base/base.model.service.js +86 -0
  5. package/dist/base/base.service.d.ts +28 -0
  6. package/dist/base/base.service.js +85 -0
  7. package/dist/config/config.default.d.ts +3 -0
  8. package/dist/config/config.default.js +139 -0
  9. package/dist/config/env.d.ts +1 -0
  10. package/dist/config/env.js +15 -0
  11. package/dist/configuration.d.ts +7 -0
  12. package/dist/configuration.js +79 -0
  13. package/dist/filter/default.filter.d.ts +7 -0
  14. package/dist/filter/default.filter.js +24 -0
  15. package/dist/filter/notfound.filter.d.ts +5 -0
  16. package/dist/filter/notfound.filter.js +22 -0
  17. package/dist/guard/api.d.ts +16 -0
  18. package/dist/guard/api.js +88 -0
  19. package/dist/guard/auth.d.ts +14 -0
  20. package/dist/guard/auth.js +143 -0
  21. package/dist/index.d.ts +10 -0
  22. package/dist/index.js +29 -0
  23. package/dist/lib/decorator.d.ts +36 -0
  24. package/dist/lib/decorator.js +79 -0
  25. package/dist/lib/request.d.ts +7 -0
  26. package/dist/lib/request.js +7 -0
  27. package/dist/lib/utils.d.ts +11 -0
  28. package/dist/lib/utils.js +65 -0
  29. package/dist/middleware/apiResultFormatter.d.ts +7 -0
  30. package/dist/middleware/apiResultFormatter.js +78 -0
  31. package/dist/middleware/detect.middleware.d.ts +5 -0
  32. package/dist/middleware/detect.middleware.js +61 -0
  33. package/dist/middleware/requestInit.d.ts +8 -0
  34. package/dist/middleware/requestInit.js +100 -0
  35. package/dist/service/session.service.d.ts +35 -0
  36. package/dist/service/session.service.js +88 -0
  37. package/dist/service/tencent.service.d.ts +38 -0
  38. package/dist/service/tencent.service.js +87 -0
  39. package/index.d.ts +46 -0
  40. package/package.json +67 -0
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ApiGuard = void 0;
13
+ // @ts-ignore
14
+ const core_1 = require("@midwayjs/core");
15
+ const decorator_1 = require("../lib/decorator");
16
+ const api_1 = require("@fefeding/common/dist/utils/api");
17
+ /**
18
+ * 对于需要token的接口,从query或body或cookie中取token,是否跟本服务的一致
19
+ */
20
+ let ApiGuard = class ApiGuard {
21
+ // 登陆态验证配置
22
+ apiOption;
23
+ ipOption;
24
+ async canActivate(context, supplierClz, methodName) {
25
+ // 检查是否有IP白名单限制
26
+ const needIP = (0, decorator_1.getCheckIP)(supplierClz, methodName);
27
+ if (needIP) {
28
+ //console.log('check ip ', needIP);
29
+ this.checkIPInWhiteList(context);
30
+ }
31
+ // 获取是否需要检查token
32
+ const needToken = (0, decorator_1.getApiToken)(supplierClz, methodName);
33
+ if (needToken) {
34
+ await this.checkApiToken(context);
35
+ }
36
+ return true;
37
+ }
38
+ // 校验是否有带api token
39
+ async checkApiToken(context) {
40
+ const body = (context.request.body || {});
41
+ const reqToken = context.URL.searchParams.get('api_token') ||
42
+ context.request.header['x-api-token'] ||
43
+ body.api_token ||
44
+ context.cookies.get('api_token');
45
+ const timestamp = Number(context.URL.searchParams.get('timestamp') ||
46
+ context.request.header['x-api-timestamp'] ||
47
+ body.timestamp ||
48
+ context.cookies.get('timestamp'));
49
+ if (!reqToken || !timestamp) {
50
+ context.logger.error(`token为空,非法请求, token: ${reqToken}, timestamp: ${timestamp}`);
51
+ throw Error('token为空,非法请求');
52
+ }
53
+ //const time = new Date(timestamp);
54
+ console.log('token time', reqToken, timestamp);
55
+ // 如果超过一定时间,则失效
56
+ if (timestamp < Date.now() - 5 * 60 * 1000) {
57
+ throw Error('timestamp已超过有效时间');
58
+ }
59
+ const thisToken = api_1.default.createApiToken(this.apiOption.key, timestamp);
60
+ if (reqToken !== thisToken.sign) {
61
+ context.logger.error(`输入token:${reqToken} 本地: ${thisToken.sign} 不一致`);
62
+ throw Error('token输入错误');
63
+ }
64
+ }
65
+ // 检查IP白名单
66
+ checkIPInWhiteList(context) {
67
+ const requestIp = context.detect?.REQUESTIP;
68
+ if (this.ipOption?.whiteList && !this.ipOption.whiteList.includes('*')) {
69
+ if (!this.ipOption.whiteList.includes(requestIp)) {
70
+ context.logger.error(`IP:${requestIp} 不在白名单内`);
71
+ throw Error(`IP:${requestIp} 不在白名单内`);
72
+ }
73
+ }
74
+ }
75
+ };
76
+ exports.ApiGuard = ApiGuard;
77
+ __decorate([
78
+ (0, core_1.Config)('apiOption'),
79
+ __metadata("design:type", Object)
80
+ ], ApiGuard.prototype, "apiOption", void 0);
81
+ __decorate([
82
+ (0, core_1.Config)('ipOption'),
83
+ __metadata("design:type", Object)
84
+ ], ApiGuard.prototype, "ipOption", void 0);
85
+ exports.ApiGuard = ApiGuard = __decorate([
86
+ (0, core_1.Guard)()
87
+ ], ApiGuard);
88
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2d1YXJkL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSxhQUFhO0FBQ2IseUNBQXVEO0FBRXZELGdEQUEyRDtBQUMzRCx5REFBa0Q7QUFFbEQ7O0dBRUc7QUFFSSxJQUFNLFFBQVEsR0FBZCxNQUFNLFFBQVE7SUFDakIsVUFBVTtJQUVWLFNBQVMsQ0FFUDtJQUdGLFFBQVEsQ0FFTjtJQUVGLEtBQUssQ0FBQyxXQUFXLENBQ2IsT0FBZ0IsRUFDaEIsV0FBZ0IsRUFDaEIsVUFBa0I7UUFFbEIsZUFBZTtRQUNmLE1BQU0sTUFBTSxHQUFHLElBQUEsc0JBQVUsRUFBQyxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDbkQsSUFBRyxNQUFNLEVBQUUsQ0FBQztZQUNSLG1DQUFtQztZQUNuQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsQ0FBQztRQUNELGdCQUFnQjtRQUNoQixNQUFNLFNBQVMsR0FBRyxJQUFBLHVCQUFXLEVBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXZELElBQUksU0FBUyxFQUFFLENBQUM7WUFDWixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsS0FBSyxDQUFDLGFBQWEsQ0FBQyxPQUFnQjtRQUNoQyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBUSxDQUFDO1FBQ2pELE1BQU0sUUFBUSxHQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUM7WUFDekMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxTQUFTO1lBQ2QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDckMsTUFBTSxTQUFTLEdBQUcsTUFBTSxDQUNwQixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO1lBQ3pDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDO1lBQ3JDLElBQUksQ0FBQyxTQUFTO1lBQ2QsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQ3ZDLENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDMUIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQ2hCLHdCQUF3QixRQUFRLGdCQUFnQixTQUFTLEVBQUUsQ0FDOUQsQ0FBQztZQUNGLE1BQU0sS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2hDLENBQUM7UUFFRCxtQ0FBbUM7UUFDbkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQy9DLGVBQWU7UUFDZixJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQztZQUN6QyxNQUFNLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFFRCxNQUFNLFNBQVMsR0FBRyxhQUFHLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBRXBFLElBQUksUUFBUSxLQUFLLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUM5QixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDaEIsV0FBVyxRQUFRLFNBQVMsU0FBUyxDQUFDLElBQUksTUFBTSxDQUNuRCxDQUFDO1lBQ0YsTUFBTSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDN0IsQ0FBQztJQUNMLENBQUM7SUFFRCxVQUFVO0lBQ1Ysa0JBQWtCLENBQUMsT0FBZ0I7UUFDL0IsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUM7UUFDNUMsSUFBRyxJQUFJLENBQUMsUUFBUSxFQUFFLFNBQVMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BFLElBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDOUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxTQUFTLFNBQVMsQ0FBQyxDQUFDO2dCQUMvQyxNQUFNLEtBQUssQ0FBQyxNQUFNLFNBQVMsU0FBUyxDQUFDLENBQUM7WUFDMUMsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0NBQ0osQ0FBQTtBQWhGWSw0QkFBUTtBQUdqQjtJQURDLElBQUEsYUFBTSxFQUFDLFdBQVcsQ0FBQzs7MkNBR2xCO0FBR0Y7SUFEQyxJQUFBLGFBQU0sRUFBQyxVQUFVLENBQUM7OzBDQUdqQjttQkFWTyxRQUFRO0lBRHBCLElBQUEsWUFBSyxHQUFFO0dBQ0ssUUFBUSxDQWdGcEIifQ==
@@ -0,0 +1,14 @@
1
+ import { IGuard } from '@midwayjs/core';
2
+ import { Context } from '@midwayjs/koa';
3
+ import { SessionService } from '../service/session.service';
4
+ /**
5
+ * 校验请求的登陆态
6
+ */
7
+ export declare class AuthGuard implements IGuard<Context> {
8
+ sessionService: SessionService;
9
+ ssoOption: any;
10
+ koa: any;
11
+ canActivate(context: Context, supplierClz: any, methodName: string): Promise<boolean>;
12
+ checkAuth(context: Context, token: string, needAuth?: boolean): Promise<boolean>;
13
+ authError(context: Context, error?: any): void;
14
+ }
@@ -0,0 +1,143 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AuthGuard = void 0;
13
+ // @ts-ignore
14
+ const core_1 = require("@midwayjs/core");
15
+ const session_service_1 = require("../service/session.service");
16
+ const decorator_1 = require("../lib/decorator");
17
+ const utils_1 = require("../lib/utils");
18
+ // 校验api路径规则的
19
+ const apiReg = /^\/([^/]+\/)?api\//i;
20
+ /**
21
+ * 校验请求的登陆态
22
+ */
23
+ let AuthGuard = class AuthGuard {
24
+ sessionService;
25
+ ssoOption;
26
+ koa;
27
+ async canActivate(context, supplierClz, methodName) {
28
+ // 获取是否需要检查登陆态
29
+ const needAuth = (0, decorator_1.getCheckLogin)(supplierClz, methodName);
30
+ const token = (0, utils_1.getAuthToken)(context);
31
+ if (token)
32
+ context.auth_token = token;
33
+ const ret = await this.checkAuth(context, token, needAuth);
34
+ return ret;
35
+ }
36
+ // 校验是否有带api token
37
+ async checkAuth(context, token, needAuth) {
38
+ this.sessionService.ctx = context;
39
+ const authRet = 50001;
40
+ console.log('check auth', token, needAuth);
41
+ let errRes = null;
42
+ try {
43
+ let session = null;
44
+ // 如果是从登陆回来,则验证监时码
45
+ const authCode = context.URL.searchParams.get('auth_code');
46
+ if (authCode) {
47
+ const res = await this.sessionService.loginByCode(authCode);
48
+ if (res.ret === 0) {
49
+ session = res.data;
50
+ // 登陆写入cookie
51
+ (0, utils_1.setAuthToken)(context, session.id);
52
+ }
53
+ context.URL.searchParams.delete('auth_code'); // 移除auth_code参数
54
+ context.URL.hostname = context.detect?.HOSTNAME || context.hostname;
55
+ const url = context.URL.toString();
56
+ context.redirect(url);
57
+ return true;
58
+ }
59
+ if (token && !errRes && !session) {
60
+ session = await this.sessionService.getLoginSession(token);
61
+ if (!session || !session.id) {
62
+ (0, utils_1.setAuthToken)(context, '');
63
+ //context.status = 403;
64
+ errRes = {
65
+ ret: authRet,
66
+ msg: 'token不存在或已过期',
67
+ };
68
+ }
69
+ }
70
+ if (!session) {
71
+ errRes = {
72
+ ret: authRet,
73
+ msg: '需要登陆态',
74
+ };
75
+ }
76
+ // 登陆态挂载到当前上下文
77
+ context.currentSession = session;
78
+ // @ts-ignore 登陆态挂载到logger
79
+ if (session && context.logger?.setOptions) {
80
+ // @ts-ignore
81
+ context.logger.setOptions({
82
+ loginId: session?.loginId || '',
83
+ userId: (session?.userId || '').toString(),
84
+ });
85
+ }
86
+ if (errRes && needAuth) {
87
+ this.authError(context, errRes);
88
+ }
89
+ }
90
+ catch (e) {
91
+ console.error(e);
92
+ errRes = {
93
+ ret: authRet,
94
+ msg: e.message || 'auth error',
95
+ };
96
+ if (needAuth)
97
+ this.authError(context, errRes);
98
+ }
99
+ return true;
100
+ }
101
+ // 异常处理
102
+ authError(context, error) {
103
+ if (apiReg.test(context.path)) {
104
+ context.status = 200;
105
+ context.res.write('', 'utf8');
106
+ throw error;
107
+ }
108
+ else {
109
+ const loginUrl = `${this.ssoOption?.baseUrl || this.koa?.globalPrefix || ''}/login`;
110
+ // 如果本来就以/login结尾,则直跳
111
+ if (!/\/login\/?(\?|$|#)/.test(context.URL.pathname)) {
112
+ const URL = context.URL;
113
+ if (context.detect?.HOSTNAME && URL.hostname !== context.detect?.HOSTNAME)
114
+ URL.hostname = context.detect.HOSTNAME;
115
+ URL.searchParams.delete('jv_auth_code');
116
+ URL.searchParams.delete('token');
117
+ URL.searchParams.delete('auth_code'); // 移除auth_code参数
118
+ const redirectUrl = context.URL.toString();
119
+ context.redirect(`${loginUrl}?url=${encodeURIComponent(redirectUrl)}&appid=${this.ssoOption?.appId || 0}`);
120
+ }
121
+ else {
122
+ context.redirect(loginUrl);
123
+ }
124
+ }
125
+ }
126
+ };
127
+ exports.AuthGuard = AuthGuard;
128
+ __decorate([
129
+ (0, core_1.Inject)(),
130
+ __metadata("design:type", session_service_1.SessionService)
131
+ ], AuthGuard.prototype, "sessionService", void 0);
132
+ __decorate([
133
+ (0, core_1.Config)('sso'),
134
+ __metadata("design:type", Object)
135
+ ], AuthGuard.prototype, "ssoOption", void 0);
136
+ __decorate([
137
+ (0, core_1.Config)('koa'),
138
+ __metadata("design:type", Object)
139
+ ], AuthGuard.prototype, "koa", void 0);
140
+ exports.AuthGuard = AuthGuard = __decorate([
141
+ (0, core_1.Guard)()
142
+ ], AuthGuard);
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ndWFyZC9hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLGFBQWE7QUFDYix5Q0FBK0Q7QUFFL0QsZ0VBQTREO0FBQzVELGdEQUFpRDtBQUNqRCx3Q0FBMEQ7QUFFMUQsYUFBYTtBQUNiLE1BQU0sTUFBTSxHQUFHLHFCQUFxQixDQUFDO0FBRXJDOztHQUVHO0FBRUksSUFBTSxTQUFTLEdBQWYsTUFBTSxTQUFTO0lBRWxCLGNBQWMsQ0FBaUI7SUFHL0IsU0FBUyxDQUFNO0lBR2YsR0FBRyxDQUFNO0lBRVQsS0FBSyxDQUFDLFdBQVcsQ0FDYixPQUFnQixFQUNoQixXQUFnQixFQUNoQixVQUFrQjtRQUVsQixjQUFjO1FBQ2QsTUFBTSxRQUFRLEdBQUcsSUFBQSx5QkFBYSxFQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUN4RCxNQUFNLEtBQUssR0FBRyxJQUFBLG9CQUFZLEVBQUMsT0FBTyxDQUFDLENBQUM7UUFDcEMsSUFBRyxLQUFLO1lBQUUsT0FBTyxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7UUFFckMsTUFBTSxHQUFHLEdBQUcsTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDM0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBZ0IsRUFBRSxLQUFhLEVBQUUsUUFBa0I7UUFDL0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLEdBQUcsT0FBTyxDQUFDO1FBQ2xDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQztRQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFM0MsSUFBSSxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUks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
@@ -0,0 +1,10 @@
1
+ export { BaseConfiguration as Configuration } from './configuration';
2
+ export * as utils from './lib/utils';
3
+ export * as decorators from './lib/decorator';
4
+ export * from './guard/api';
5
+ export * from './guard/auth';
6
+ export * from './base/base.service';
7
+ export * from './base/base.model.service';
8
+ export * from './service/session.service';
9
+ export * from './service/tencent.service';
10
+ export * from './base/base.controller';
package/dist/index.js ADDED
@@ -0,0 +1,29 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.decorators = exports.utils = exports.Configuration = void 0;
18
+ var configuration_1 = require("./configuration");
19
+ Object.defineProperty(exports, "Configuration", { enumerable: true, get: function () { return configuration_1.BaseConfiguration; } });
20
+ exports.utils = require("./lib/utils");
21
+ exports.decorators = require("./lib/decorator");
22
+ __exportStar(require("./guard/api"), exports);
23
+ __exportStar(require("./guard/auth"), exports);
24
+ __exportStar(require("./base/base.service"), exports);
25
+ __exportStar(require("./base/base.model.service"), exports);
26
+ __exportStar(require("./service/session.service"), exports);
27
+ __exportStar(require("./service/tencent.service"), exports);
28
+ __exportStar(require("./base/base.controller"), exports);
29
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBcUU7QUFBNUQsOEdBQUEsaUJBQWlCLE9BQWlCO0FBRTNDLHVDQUFxQztBQUNyQyxnREFBOEM7QUFFOUMsOENBQTRCO0FBQzVCLCtDQUE2QjtBQUU3QixzREFBb0M7QUFDcEMsNERBQTBDO0FBQzFDLDREQUEwQztBQUMxQyw0REFBMEM7QUFFMUMseURBQXVDIn0=
@@ -0,0 +1,36 @@
1
+ /**
2
+ * 判断是否校验token的api装饰器
3
+ * @param need 是否要
4
+ * @returns
5
+ */
6
+ export declare function checkApiToken(need?: boolean): MethodDecorator;
7
+ /**
8
+ * 获取装饰的是否需要toke验证
9
+ * @param target 对象
10
+ * @param propertyKey 属性或方法名
11
+ */
12
+ export declare function getApiToken(target: any, propertyKey: any): any;
13
+ /**
14
+ * 判断是否校验登陆态
15
+ * @param need 是否要
16
+ * @returns
17
+ */
18
+ export declare function checkLogin(need?: boolean): MethodDecorator;
19
+ /**
20
+ * 获取装饰的是否需要校验登陆态
21
+ * @param target 对象
22
+ * @param propertyKey 属性或方法名
23
+ */
24
+ export declare function getCheckLogin(target: any, propertyKey: any): any;
25
+ /**
26
+ * 判断是否校验在IP白名单内
27
+ * @param need 是否要
28
+ * @returns
29
+ */
30
+ export declare function checkIP(need?: boolean): MethodDecorator;
31
+ /**
32
+ * 获取装饰的是否需要校验IP白名单
33
+ * @param target 对象
34
+ * @param propertyKey 属性或方法名
35
+ */
36
+ export declare function getCheckIP(target: any, propertyKey: any): any;
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkApiToken = checkApiToken;
4
+ exports.getApiToken = getApiToken;
5
+ exports.checkLogin = checkLogin;
6
+ exports.getCheckLogin = getCheckLogin;
7
+ exports.checkIP = checkIP;
8
+ exports.getCheckIP = getCheckIP;
9
+ // @ts-ignore
10
+ const core_1 = require("@midwayjs/core");
11
+ const decorator_1 = require("@fefeding/common/dist/utils/decorator");
12
+ const CheckIPKey = 'decorator:CheckIPKey';
13
+ /**
14
+ * 判断是否校验token的api装饰器
15
+ * @param need 是否要
16
+ * @returns
17
+ */
18
+ function checkApiToken(need = true) {
19
+ return (target, propertyKey) => {
20
+ // 只保存元数据
21
+ (0, core_1.savePropertyMetadata)(decorator_1.default.apiTokenMetadataKey, need, target, propertyKey);
22
+ };
23
+ }
24
+ /**
25
+ * 获取装饰的是否需要toke验证
26
+ * @param target 对象
27
+ * @param propertyKey 属性或方法名
28
+ */
29
+ function getApiToken(target, propertyKey) {
30
+ try {
31
+ const value = (0, core_1.getPropertyMetadata)(decorator_1.default.apiTokenMetadataKey, target, propertyKey);
32
+ return value;
33
+ }
34
+ catch (e) {
35
+ console.log(e);
36
+ return false;
37
+ }
38
+ }
39
+ /**
40
+ * 判断是否校验登陆态
41
+ * @param need 是否要
42
+ * @returns
43
+ */
44
+ function checkLogin(need = true) {
45
+ return (target, propertyKey) => {
46
+ // 只保存元数据
47
+ (0, core_1.savePropertyMetadata)(decorator_1.default.apiAuthMetadataKey, need, target, propertyKey);
48
+ };
49
+ }
50
+ /**
51
+ * 获取装饰的是否需要校验登陆态
52
+ * @param target 对象
53
+ * @param propertyKey 属性或方法名
54
+ */
55
+ function getCheckLogin(target, propertyKey) {
56
+ const value = (0, core_1.getPropertyMetadata)(decorator_1.default.apiAuthMetadataKey, target, propertyKey);
57
+ return value;
58
+ }
59
+ /**
60
+ * 判断是否校验在IP白名单内
61
+ * @param need 是否要
62
+ * @returns
63
+ */
64
+ function checkIP(need = true) {
65
+ return (target, propertyKey) => {
66
+ // 只保存元数据
67
+ (0, core_1.savePropertyMetadata)(CheckIPKey, need, target, propertyKey);
68
+ };
69
+ }
70
+ /**
71
+ * 获取装饰的是否需要校验IP白名单
72
+ * @param target 对象
73
+ * @param propertyKey 属性或方法名
74
+ */
75
+ function getCheckIP(target, propertyKey) {
76
+ const value = (0, core_1.getPropertyMetadata)(CheckIPKey, target, propertyKey);
77
+ return value;
78
+ }
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjb3JhdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9kZWNvcmF0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFXQSxzQ0FVQztBQU9ELGtDQWFDO0FBT0QsZ0NBVUM7QUFPRCxzQ0FPQztBQVNELDBCQVVDO0FBT0QsZ0NBT0M7QUF6R0QsYUFBYTtBQUNiLHlDQUEyRTtBQUMzRSxxRUFBK0Q7QUFFL0QsTUFBTSxVQUFVLEdBQUcsc0JBQXNCLENBQUM7QUFFMUM7Ozs7R0FJRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxJQUFJLEdBQUcsSUFBSTtJQUNyQyxPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFO1FBQzNCLFNBQVM7UUFDVCxJQUFBLDJCQUFvQixFQUNoQixtQkFBVSxDQUFDLG1CQUFtQixFQUM5QixJQUFJLEVBQ0osTUFBTSxFQUNOLFdBQVcsQ0FDZCxDQUFDO0lBQ04sQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixXQUFXLENBQUMsTUFBTSxFQUFFLFdBQVc7SUFDM0MsSUFBSSxDQUFDO1FBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBQSwwQkFBbUIsRUFDN0IsbUJBQVUsQ0FBQyxtQkFBbUIsRUFDOUIsTUFBTSxFQUNOLFdBQVcsQ0FDZCxDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUNELE9BQU0sQ0FBQyxFQUFFLENBQUM7UUFDTixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2YsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztBQUNMLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLElBQUksR0FBRyxJQUFJO0lBQ2xDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsV0FBVyxFQUFFLEVBQUU7UUFDM0IsU0FBUztRQUNULElBQUEsMkJBQW9CLEVBQ2hCLG1CQUFVLENBQUMsa0JBQWtCLEVBQzdCLElBQUksRUFDSixNQUFNLEVBQ04sV0FBVyxDQUNkLENBQUM7SUFDTixDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGFBQWEsQ0FBQyxNQUFNLEVBQUUsV0FBVztJQUM3QyxNQUFNLEtBQUssR0FBRyxJQUFBLDBCQUFtQixFQUM3QixtQkFBVSxDQUFDLGtCQUFrQixFQUM3QixNQUFNLEVBQ04sV0FBVyxDQUNkLENBQUM7SUFDRixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDO0FBSUQ7Ozs7R0FJRztBQUNILFNBQWdCLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSTtJQUMvQixPQUFPLENBQUMsTUFBTSxFQUFFLFdBQVcsRUFBRSxFQUFFO1FBQzNCLFNBQVM7UUFDVCxJQUFBLDJCQUFvQixFQUNoQixVQUFVLEVBQ1YsSUFBSSxFQUNKLE1BQU0sRUFDTixXQUFXLENBQ2QsQ0FBQztJQUNOLENBQUMsQ0FBQztBQUNOLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsVUFBVSxDQUFDLE1BQU0sRUFBRSxXQUFXO0lBQzFDLE1BQU0sS0FBSyxHQUFHLElBQUEsMEJBQW1CLEVBQzdCLFVBQVUsRUFDVixNQUFNLEVBQ04sV0FBVyxDQUNkLENBQUM7SUFDRixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDIn0=
@@ -0,0 +1,7 @@
1
+ import { requestApi, requestServer } from '@fefeding/common/dist/utils/axios';
2
+ /**
3
+ * 请求远程API
4
+ * @param req 请求对象
5
+ * @returns
6
+ */
7
+ export { requestApi, requestServer };
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.requestServer = exports.requestApi = void 0;
4
+ const axios_1 = require("@fefeding/common/dist/utils/axios");
5
+ Object.defineProperty(exports, "requestApi", { enumerable: true, get: function () { return axios_1.requestApi; } });
6
+ Object.defineProperty(exports, "requestServer", { enumerable: true, get: function () { return axios_1.requestServer; } });
7
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcmVxdWVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2REFBOEU7QUFPckUsMkZBUEEsa0JBQVUsT0FPQTtBQUFFLDhGQVBBLHFCQUFhLE9BT0EifQ==
@@ -0,0 +1,11 @@
1
+ import { Context } from '@midwayjs/koa';
2
+ export declare function checkUrlHost(url: string, host: string | Array<string>): boolean;
3
+ /**
4
+ * render模板
5
+ * @param ctx
6
+ * @param file
7
+ * @returns
8
+ */
9
+ export declare function getDefaultTemplate(ctx: Context, file?: string, data?: any): Promise<string>;
10
+ export declare function getAuthToken(ctx: Context): any;
11
+ export declare function setAuthToken(ctx: Context, token: string): void;
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkUrlHost = checkUrlHost;
4
+ exports.getDefaultTemplate = getDefaultTemplate;
5
+ exports.getAuthToken = getAuthToken;
6
+ exports.setAuthToken = setAuthToken;
7
+ //判断url是否是对应的域名
8
+ function checkUrlHost(url, host) {
9
+ if (/^\/[^\/]{1,}/.test(url))
10
+ return true;
11
+ if (Array.isArray(host)) {
12
+ for (const h of host) {
13
+ if (checkUrlHost(url, h))
14
+ return true;
15
+ }
16
+ return false;
17
+ }
18
+ const reg = new RegExp('^(http(s)?:)?//' + host);
19
+ return reg.test(url);
20
+ }
21
+ /**
22
+ * render模板
23
+ * @param ctx
24
+ * @param file
25
+ * @returns
26
+ */
27
+ function getDefaultTemplate(ctx, file = 'index.html', data = {}) {
28
+ // 前端端口,如果为空,说明就是开发环境了
29
+ const viteTarget = process.env.VITE_PORT;
30
+ const config = ctx.app.getConfig();
31
+ const prefix = config.koa.globalPrefix;
32
+ const option = {
33
+ data: {
34
+ config: {
35
+ prefix,
36
+ },
37
+ session: ctx.currentSession || null,
38
+ ...data
39
+ },
40
+ description: process.env.DESCRIPTION || '',
41
+ env: process.env,
42
+ viteTarget: viteTarget ? `//${ctx.hostname}:${viteTarget}` : '',
43
+ };
44
+ //console.log(file, data);
45
+ return ctx.render(file, option);
46
+ }
47
+ // 从当前请求中获取登陆态token
48
+ function getAuthToken(ctx) {
49
+ const body = (ctx.request.body || {});
50
+ const token = ctx.URL.searchParams.get('token') ||
51
+ ctx.request.header['x-auth-token'] ||
52
+ ctx.cookies.get('token', {
53
+ signed: false,
54
+ }) ||
55
+ body.token;
56
+ return token;
57
+ }
58
+ // 种登陆态token
59
+ function setAuthToken(ctx, token) {
60
+ ctx.cookies.set('token', token, {
61
+ httpOnly: true,
62
+ maxAge: 1000 * 60 * 60 * 24 * 30,
63
+ });
64
+ }
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBSUEsb0NBVUM7QUFRRCxnREFtQkM7QUFHRCxvQ0FVQztBQUdELG9DQUtDO0FBM0RELGVBQWU7QUFDZixTQUFnQixZQUFZLENBQUMsR0FBVyxFQUFFLElBQTBCO0lBQ2hFLElBQUcsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFBRSxPQUFPLElBQUksQ0FBQztJQUN6QyxJQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNyQixLQUFJLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ2xCLElBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7Z0JBQUUsT0FBTyxJQUFJLENBQUM7UUFDekMsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7SUFDRCxNQUFNLEdBQUcsR0FBRyxJQUFJLE1BQU0sQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUNqRCxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDekIsQ0FBQztBQUVEOzs7OztPQUtPO0FBQ1AsU0FBZ0Isa0JBQWtCLENBQUMsR0FBWSxFQUFFLElBQUksR0FBQyxZQUFZLEVBQUUsT0FBWSxFQUFFO0lBQzlFLHNCQUFzQjtJQUN0QixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQztJQUN6QyxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25DLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDO0lBQ3ZDLE1BQU0sTUFBTSxHQUFHO1FBQ1gsSUFBSSxFQUFFO1lBQ0YsTUFBTSxFQUFFO2dCQUNKLE1BQU07YUFDVDtZQUNELE9BQU8sRUFBRSxHQUFHLENBQUMsY0FBYyxJQUFFLElBQUk7WUFDakMsR0FBRyxJQUFJO1NBQ1Y7UUFDRCxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxXQUFXLElBQUksRUFBRTtRQUMxQyxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUc7UUFDaEIsVUFBVSxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsUUFBUSxJQUFJLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFO0tBQ2xFLENBQUM7SUFDRiwwQkFBMEI7SUFDMUIsT0FBTyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztBQUNwQyxDQUFDO0FBRUQsbUJBQW1CO0FBQ25CLFNBQWdCLFlBQVksQ0FBQyxHQUFZO0lBQ3JDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFRLENBQUM7SUFDekMsTUFBTSxLQUFLLEdBQ1gsR0FBRyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQztRQUNqQyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUM7UUFDbEMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFO1lBQ3JCLE1BQU0sRUFBRSxLQUFLO1NBQ2hCLENBQUM7UUFDRSxJQUFJLENBQUMsS0FBSyxDQUFFO0lBQ3BCLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUM7QUFFRCxZQUFZO0FBQ1osU0FBZ0IsWUFBWSxDQUFDLEdBQVksRUFBRSxLQUFhO0lBQ3BELEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUU7UUFDNUIsUUFBUSxFQUFFLElBQUk7UUFDZCxNQUFNLEVBQUUsSUFBSSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUU7S0FDbkMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyJ9
@@ -0,0 +1,7 @@
1
+ import { IMiddleware } from '@midwayjs/core';
2
+ import { NextFunction, Context } from '@midwayjs/koa';
3
+ export declare class ApiResultFormatterMiddleware implements IMiddleware<Context, NextFunction> {
4
+ apiOption: any;
5
+ ignore(ctx: Context): boolean;
6
+ resolve(): (ctx: Context, next: NextFunction) => Promise<void>;
7
+ }
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ApiResultFormatterMiddleware = void 0;
13
+ // @ts-ignore
14
+ const core_1 = require("@midwayjs/core");
15
+ let ApiResultFormatterMiddleware = class ApiResultFormatterMiddleware {
16
+ apiOption;
17
+ ignore(ctx) {
18
+ // 下面的路由将忽略此中间件
19
+ if (this.apiOption?.ignore) {
20
+ for (const ig of this.apiOption.ignore) {
21
+ if (typeof ig === 'string' && ctx.path === ig)
22
+ return true;
23
+ if (ig?.test?.(ctx.path))
24
+ return true;
25
+ }
26
+ }
27
+ return false;
28
+ }
29
+ resolve() {
30
+ return async (ctx, next) => {
31
+ const isApi = this.apiOption?.reg?.test(ctx.request.path);
32
+ //console.log(ctx.URL.toString(), isApi);
33
+ if (isApi) {
34
+ try {
35
+ await next();
36
+ const res = ctx.body;
37
+ if (res !== '') {
38
+ ctx.body = Object.assign({
39
+ ret: 0,
40
+ msg: 'success',
41
+ data: null,
42
+ }, typeof res?.ret === 'number' ? res : { data: res });
43
+ //ctx.logger.info(ctx.request.rawBody, ctx.body);
44
+ }
45
+ }
46
+ catch (err) {
47
+ console.error(err);
48
+ if (typeof err.ret === 'number') {
49
+ ctx.body = err;
50
+ }
51
+ else {
52
+ ctx.body = {
53
+ ret: 1001,
54
+ msg: err.message,
55
+ };
56
+ }
57
+ ctx.logger.error(ctx.request.rawBody, ctx.body);
58
+ }
59
+ finally {
60
+ if (ctx.status !== 302)
61
+ ctx.status = 200;
62
+ }
63
+ }
64
+ else {
65
+ await next();
66
+ }
67
+ };
68
+ }
69
+ };
70
+ exports.ApiResultFormatterMiddleware = ApiResultFormatterMiddleware;
71
+ __decorate([
72
+ (0, core_1.Config)('apiOption'),
73
+ __metadata("design:type", Object)
74
+ ], ApiResultFormatterMiddleware.prototype, "apiOption", void 0);
75
+ exports.ApiResultFormatterMiddleware = ApiResultFormatterMiddleware = __decorate([
76
+ (0, core_1.Middleware)()
77
+ ], ApiResultFormatterMiddleware);
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpUmVzdWx0Rm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21pZGRsZXdhcmUvYXBpUmVzdWx0Rm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLGFBQWE7QUFDYix5Q0FBaUU7QUFJMUQsSUFBTSw0QkFBNEIsR0FBbEMsTUFBTSw0QkFBNEI7SUFJckMsU0FBUyxDQUFNO0lBRWYsTUFBTSxDQUFDLEdBQVk7UUFDZixlQUFlO1FBQ2YsSUFBRyxJQUFJLENBQUMsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDO1lBQ3hCLEtBQUksTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDcEMsSUFBRyxPQUFPLEVBQUUsS0FBSyxRQUFRLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxFQUFFO29CQUFFLE9BQU8sSUFBSSxDQUFDO2dCQUMxRCxJQUFHLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDO29CQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ3pDLENBQUM7UUFDTCxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELE9BQU87UUFDSCxPQUFPLEtBQUssRUFBRSxHQUFZLEVBQUUsSUFBa0IsRUFBRSxFQUFFO1lBQzlDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzFELHlDQUF5QztZQUN6QyxJQUFJLEtBQUssRUFBRSxDQUFDO2dCQUNSLElBQUksQ0FBQztvQkFDRCxNQUFNLElBQUksRUFBRSxDQUFDO29CQUNiLE1BQU0sR0FBRyxHQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUM7b0JBQzFCLElBQUcsR0FBRyxLQUFLLEVBQUUsRUFBRSxDQUFDO3dCQUNaLEdBQUcsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDcEI7NEJBQ0ksR0FBRyxFQUFFLENBQUM7NEJBQ04sR0FBRyxFQUFFLFNBQVM7NEJBQ2QsSUFBSSxFQUFFLElBQUk7eUJBQ2IsRUFDRCxPQUFPLEdBQUcsRUFBRSxHQUFHLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUNyRCxDQUFDO3dCQUNGLGlEQUFpRDtvQkFDckQsQ0FBQztnQkFDTCxDQUFDO2dCQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7b0JBQ1gsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDbkIsSUFBSSxPQUFPLEdBQUcsQ0FBQyxHQUFHLEtBQUssUUFBUSxFQUFFLENBQUM7d0JBQzlCLEdBQUcsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO29CQUNuQixDQUFDO3lCQUFNLENBQUM7d0JBQ0osR0FBRyxDQUFDLElBQUksR0FBRzs0QkFDUCxHQUFHLEVBQUUsSUFBSTs0QkFDVCxHQUFHLEVBQUUsR0FBRyxDQUFDLE9BQU87eUJBQ25CLENBQUM7b0JBQ04sQ0FBQztvQkFDRCxHQUFHLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3BELENBQUM7d0JBQ08sQ0FBQztvQkFDTCxJQUFHLEdBQUcsQ0FBQyxNQUFNLEtBQUssR0FBRzt3QkFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsQ0FBQztnQkFDNUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDSixNQUFNLElBQUksRUFBRSxDQUFDO1lBQ2pCLENBQUM7UUFDTCxDQUFDLENBQUM7SUFDTixDQUFDO0NBQ0osQ0FBQTtBQXhEWSxvRUFBNEI7QUFJckM7SUFEQyxJQUFBLGFBQU0sRUFBQyxXQUFXLENBQUM7OytEQUNMO3VDQUpOLDRCQUE0QjtJQUR4QyxJQUFBLGlCQUFVLEdBQUU7R0FDQSw0QkFBNEIsQ0F3RHhDIn0=
@@ -0,0 +1,5 @@
1
+ import { IMiddleware } from '@midwayjs/core';
2
+ import { NextFunction, Context } from '@midwayjs/koa';
3
+ export declare class DetectMiddleware implements IMiddleware<Context, NextFunction> {
4
+ resolve(): (ctx: Context, next: NextFunction) => Promise<any>;
5
+ }