@cicctencent/midwayjs-base 1.0.35 → 1.0.36
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/README.md +347 -1
- package/dist/types/config/config.default.d.ts +3 -0
- package/dist/types/config/config.default.js +171 -0
- package/dist/types/config/env.js +52 -0
- package/dist/{configuration.js → types/configuration.js} +44 -20
- package/dist/{filter → types/filter}/default.filter.js +1 -2
- package/dist/{filter → types/filter}/notfound.filter.js +1 -3
- package/dist/{guard → types/guard}/api.d.ts +0 -3
- package/dist/types/guard/api.js +77 -0
- package/dist/{guard → types/guard}/auth.d.ts +0 -3
- package/dist/types/guard/auth.js +182 -0
- package/dist/{index.js → types/index.js} +27 -6
- package/dist/types/lib/decorator.d.ts +6 -0
- package/dist/types/lib/decorator.js +48 -0
- package/dist/types/lib/jwt.d.ts +34 -0
- package/dist/types/lib/jwt.js +59 -0
- package/dist/{lib → types/lib}/request.d.ts +0 -5
- package/dist/{lib → types/lib}/request.js +1 -1
- package/dist/{lib → types/lib}/utils.d.ts +1 -7
- package/dist/types/lib/utils.js +78 -0
- package/dist/types/middleware/apiResultFormatter.d.ts +7 -0
- package/dist/types/middleware/apiResultFormatter.js +83 -0
- package/dist/types/middleware/detect.middleware.d.ts +4 -0
- package/dist/types/middleware/detect.middleware.js +58 -0
- package/dist/types/middleware/requestInit.d.ts +7 -0
- package/dist/types/middleware/requestInit.js +139 -0
- package/dist/types/service/session.service.d.ts +9 -0
- package/dist/types/service/session.service.js +56 -0
- package/dist/types/service/tencent.service.d.ts +37 -0
- package/dist/types/service/tencent.service.js +132 -0
- package/dist/types/{base.controller.js → types/base.controller.js} +1 -4
- package/dist/types/{base.model.service.d.ts → types/base.model.service.d.ts} +1 -9
- package/dist/types/types/base.model.service.js +76 -0
- package/dist/types/{base.service.d.ts → types/base.service.d.ts} +1 -10
- package/dist/types/types/base.service.js +70 -0
- package/dist/types/{session.service.interface.d.ts → types/session.service.interface.d.ts} +1 -15
- package/dist/types/{session.service.interface.js → types/session.service.interface.js} +1 -5
- package/package.json +4 -1
- package/dist/config/config.default.d.ts +0 -3
- package/dist/config/config.default.js +0 -160
- package/dist/config/env.js +0 -19
- package/dist/guard/api.js +0 -88
- package/dist/guard/auth.js +0 -202
- package/dist/lib/decorator.d.ts +0 -36
- package/dist/lib/decorator.js +0 -79
- package/dist/lib/jwt.d.ts +0 -135
- package/dist/lib/jwt.js +0 -38
- package/dist/lib/utils.js +0 -89
- package/dist/middleware/apiResultFormatter.d.ts +0 -8
- package/dist/middleware/apiResultFormatter.js +0 -84
- package/dist/middleware/detect.middleware.d.ts +0 -5
- package/dist/middleware/detect.middleware.js +0 -61
- package/dist/middleware/requestInit.d.ts +0 -8
- package/dist/middleware/requestInit.js +0 -100
- package/dist/service/session.service.d.ts +0 -33
- package/dist/service/session.service.js +0 -81
- package/dist/service/tencent.service.d.ts +0 -45
- package/dist/service/tencent.service.js +0 -105
- package/dist/types/base.model.service.js +0 -86
- package/dist/types/base.service.js +0 -86
- /package/dist/{config → types/config}/env.d.ts +0 -0
- /package/dist/{configuration.d.ts → types/configuration.d.ts} +0 -0
- /package/dist/{filter → types/filter}/default.filter.d.ts +0 -0
- /package/dist/{filter → types/filter}/notfound.filter.d.ts +0 -0
- /package/dist/{index.d.ts → types/index.d.ts} +0 -0
- /package/dist/types/{base.controller.d.ts → types/base.controller.d.ts} +0 -0
package/README.md
CHANGED
|
@@ -1 +1,347 @@
|
|
|
1
|
-
midwayjs
|
|
1
|
+
# @cicctencent/midwayjs-base
|
|
2
|
+
|
|
3
|
+
MidwayJS 基础组件 - 集成公司基础服务能力
|
|
4
|
+
|
|
5
|
+
## 简介
|
|
6
|
+
|
|
7
|
+
`@cicctencent/midwayjs-base` 是一个基于 MidwayJS 框架的企业级基础组件,集成了公司常用的基础服务能力,包括认证授权、文件存储、API 网关、会话管理等功能。
|
|
8
|
+
|
|
9
|
+
## 功能特性
|
|
10
|
+
|
|
11
|
+
### 🔐 认证授权
|
|
12
|
+
- JWT Token 认证
|
|
13
|
+
- 单点登录 (SSO) 集成
|
|
14
|
+
- 接口权限守卫
|
|
15
|
+
- 管理员账号验证
|
|
16
|
+
|
|
17
|
+
### 📁 文件存储
|
|
18
|
+
- 腾讯云 COS 文件上传/下载
|
|
19
|
+
- 文件访问 URL 生成(带临时签名)
|
|
20
|
+
- 多存储桶配置支持
|
|
21
|
+
|
|
22
|
+
### 🔌 API 网关
|
|
23
|
+
- 统一 API 响应格式
|
|
24
|
+
- 请求参数校验
|
|
25
|
+
- IP 白名单控制
|
|
26
|
+
- API Token 验证
|
|
27
|
+
|
|
28
|
+
### 💾 会话管理
|
|
29
|
+
- 分布式会话存储
|
|
30
|
+
- 会话超时配置
|
|
31
|
+
- 自定义会话服务接口
|
|
32
|
+
|
|
33
|
+
### 🛡️ 安全防护
|
|
34
|
+
- 请求检测中间件
|
|
35
|
+
- 异常过滤器
|
|
36
|
+
- 404 处理
|
|
37
|
+
- 统一错误处理
|
|
38
|
+
|
|
39
|
+
## 快速开始
|
|
40
|
+
|
|
41
|
+
### 安装
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npm install @cicctencent/midwayjs-base
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### 配置
|
|
48
|
+
|
|
49
|
+
在 `src/configuration.ts` 中引入配置:
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
import { Configuration } from '@midwayjs/core';
|
|
53
|
+
import * as base from '@cicctencent/midwayjs-base';
|
|
54
|
+
|
|
55
|
+
@Configuration({
|
|
56
|
+
imports: [
|
|
57
|
+
base
|
|
58
|
+
],
|
|
59
|
+
importConfigs: [
|
|
60
|
+
// 你的配置
|
|
61
|
+
]
|
|
62
|
+
})
|
|
63
|
+
export class MainConfiguration {
|
|
64
|
+
// 配置
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 环境变量配置
|
|
69
|
+
|
|
70
|
+
创建 `.env` 文件:
|
|
71
|
+
|
|
72
|
+
```env
|
|
73
|
+
# 应用配置
|
|
74
|
+
APP_ID=1001
|
|
75
|
+
SERVICE_NAME=your-service-name
|
|
76
|
+
|
|
77
|
+
# API 配置
|
|
78
|
+
API_KEY=your-api-key
|
|
79
|
+
|
|
80
|
+
# SSO 配置
|
|
81
|
+
SSO_URL=https://sso.example.com
|
|
82
|
+
|
|
83
|
+
# 腾讯云配置
|
|
84
|
+
TENCENT_CREDENTIAL_SECRETID=your-secret-id
|
|
85
|
+
TENCENT_CREDENTIAL_SECRETKEY=your-secret-key
|
|
86
|
+
|
|
87
|
+
# 会话配置
|
|
88
|
+
SESSION_TIMEOUT=1200000
|
|
89
|
+
|
|
90
|
+
# 日志配置
|
|
91
|
+
LOG_LEVEL=info
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## 核心功能使用
|
|
95
|
+
|
|
96
|
+
### 基础服务类
|
|
97
|
+
|
|
98
|
+
继承 `BaseService` 获取基础能力:
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
import { Provide } from '@midwayjs/core';
|
|
102
|
+
import { BaseService } from '@cicctencent/midwayjs-base';
|
|
103
|
+
import { GetUserInfoReq, GetUserInfoRes } from '@fefeding/common/dist/models/user/request';
|
|
104
|
+
|
|
105
|
+
@Provide()
|
|
106
|
+
export class UserService extends BaseService {
|
|
107
|
+
async getUserInfo(userId: number) {
|
|
108
|
+
// 检查是否为管理员
|
|
109
|
+
const isManager = await this.checkManager();
|
|
110
|
+
|
|
111
|
+
// 方式1:使用请求对象
|
|
112
|
+
const req = new GetUserInfoReq();
|
|
113
|
+
req.userId = userId;
|
|
114
|
+
const result = await this.requestBaseApi<GetUserInfoRes>(req);
|
|
115
|
+
|
|
116
|
+
// 方式2:使用 URL 路径
|
|
117
|
+
// const result = await this.requestBaseApi('/api/user/getInfo', {
|
|
118
|
+
// data: { userId }
|
|
119
|
+
// });
|
|
120
|
+
|
|
121
|
+
return result?.data || null;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### 会话服务类
|
|
127
|
+
|
|
128
|
+
继承 `ISessionService` 实现会话管理:
|
|
129
|
+
|
|
130
|
+
```typescript
|
|
131
|
+
import { Provide, Scope, ScopeEnum, Config, Inject } from '@midwayjs/core';
|
|
132
|
+
import { ISessionService, TencentService } from '@cicctencent/midwayjs-base';
|
|
133
|
+
import { Session, GetLoginSessionReq } from '@fefeding/common/dist/models/account/session';
|
|
134
|
+
|
|
135
|
+
@Provide('session:service')
|
|
136
|
+
@Scope(ScopeEnum.Request, { allowDowngrade: true })
|
|
137
|
+
export class SessionService extends ISessionService {
|
|
138
|
+
@Config('loginOption')
|
|
139
|
+
loginOption: any;
|
|
140
|
+
|
|
141
|
+
@Inject()
|
|
142
|
+
tencentService: TencentService;
|
|
143
|
+
|
|
144
|
+
async getLoginSession(id: string): Promise<Session> {
|
|
145
|
+
const req = new GetLoginSessionReq();
|
|
146
|
+
req.id = id;
|
|
147
|
+
const res = await this.requestBaseApi(req);
|
|
148
|
+
return res?.data || null;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
async logout(id: string): Promise<any> {
|
|
152
|
+
// 实现登出逻辑
|
|
153
|
+
this.ctx.currentSession = null;
|
|
154
|
+
return { success: true };
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
async loginByCode(code: string): Promise<Session> {
|
|
158
|
+
const res = await this.requestBaseApi('/api/session/loginByAuthCode', {
|
|
159
|
+
data: { code }
|
|
160
|
+
});
|
|
161
|
+
return res?.data || null;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
### 控制器基类
|
|
167
|
+
|
|
168
|
+
继承 `BaseController`:
|
|
169
|
+
|
|
170
|
+
```typescript
|
|
171
|
+
import { Controller, Get } from '@midwayjs/core';
|
|
172
|
+
import { BaseController, CheckLogin } from '@cicctencent/midwayjs-base';
|
|
173
|
+
|
|
174
|
+
@Controller('/api/user')
|
|
175
|
+
export class UserController extends BaseController {
|
|
176
|
+
|
|
177
|
+
@Get('/info')
|
|
178
|
+
@CheckLogin() // 需要登录态
|
|
179
|
+
async getUserInfo() {
|
|
180
|
+
// 获取当前会话信息
|
|
181
|
+
const session = this.ctx.currentSession;
|
|
182
|
+
|
|
183
|
+
return this.success({
|
|
184
|
+
userId: session.userId,
|
|
185
|
+
account: session.account
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### 腾讯云 COS 服务
|
|
192
|
+
|
|
193
|
+
使用 `TencentService` 进行文件操作:
|
|
194
|
+
|
|
195
|
+
```typescript
|
|
196
|
+
import { Provide, Inject } from '@midwayjs/core';
|
|
197
|
+
import { TencentService } from '@cicctencent/midwayjs-base';
|
|
198
|
+
|
|
199
|
+
@Provide()
|
|
200
|
+
export class FileService {
|
|
201
|
+
|
|
202
|
+
@Inject()
|
|
203
|
+
tencentService: TencentService;
|
|
204
|
+
|
|
205
|
+
async uploadFile(filePath: string, key: string) {
|
|
206
|
+
// 上传文件到 COS
|
|
207
|
+
const result = await this.tencentService.uploadCosFile(key, filePath);
|
|
208
|
+
|
|
209
|
+
// 获取文件访问 URL
|
|
210
|
+
const fileUrl = await this.tencentService.getCosFileUrl(key);
|
|
211
|
+
|
|
212
|
+
return {
|
|
213
|
+
...result,
|
|
214
|
+
url: fileUrl
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
### 工具函数
|
|
221
|
+
|
|
222
|
+
```typescript
|
|
223
|
+
import { utils, jwt } from '@cicctencent/midwayjs-base';
|
|
224
|
+
|
|
225
|
+
// 生成 JWT Token
|
|
226
|
+
const token = jwt.encodeJWT({ userId: 123 }, 'secret-key');
|
|
227
|
+
|
|
228
|
+
// 解码 JWT Token
|
|
229
|
+
const payload = jwt.decodeJWT(token, 'secret-key');
|
|
230
|
+
|
|
231
|
+
// 常用工具函数
|
|
232
|
+
const isEmail = utils.isEmail('test@example.com');
|
|
233
|
+
const timestamp = utils.getTimestamp();
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
## 配置说明
|
|
237
|
+
|
|
238
|
+
### 主要配置项
|
|
239
|
+
|
|
240
|
+
```typescript
|
|
241
|
+
// config/config.default.ts
|
|
242
|
+
export default {
|
|
243
|
+
// API 配置
|
|
244
|
+
apiOption: {
|
|
245
|
+
key: 'your-api-key',
|
|
246
|
+
reg: /^\/([^/]+\/)?api\//i,
|
|
247
|
+
ignore: ['/']
|
|
248
|
+
},
|
|
249
|
+
|
|
250
|
+
// IP 白名单
|
|
251
|
+
ipOption: {
|
|
252
|
+
whiteList: ['127.0.0.1', '::1']
|
|
253
|
+
},
|
|
254
|
+
|
|
255
|
+
// 会话配置
|
|
256
|
+
session: {
|
|
257
|
+
timeout: 1200000,
|
|
258
|
+
secretKey: 'your-secret-key'
|
|
259
|
+
},
|
|
260
|
+
|
|
261
|
+
// 认证配置
|
|
262
|
+
auth: {
|
|
263
|
+
ignores: ['/api/test/']
|
|
264
|
+
},
|
|
265
|
+
|
|
266
|
+
// 基础服务配置
|
|
267
|
+
baseService: {
|
|
268
|
+
manager: ['admin'],
|
|
269
|
+
appId: 1001,
|
|
270
|
+
url: 'https://base-service.example.com'
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
## 中间件说明
|
|
276
|
+
|
|
277
|
+
### 内置中间件
|
|
278
|
+
|
|
279
|
+
1. **RequestInitMiddleware**: 请求初始化,设置请求 ID 等
|
|
280
|
+
2. **DetectMiddleware**: 请求检测,获取客户端信息
|
|
281
|
+
3. **ApiResultFormatterMiddleware**: 统一 API 响应格式
|
|
282
|
+
|
|
283
|
+
### 守卫器
|
|
284
|
+
|
|
285
|
+
1. **ApiGuard**: API 接口守卫,验证 API Token
|
|
286
|
+
2. **AuthGuard**: 认证守卫,验证登录态
|
|
287
|
+
|
|
288
|
+
## 开发指南
|
|
289
|
+
|
|
290
|
+
### 自定义会话服务
|
|
291
|
+
|
|
292
|
+
实现 `ISessionService` 接口来自定义会话管理:
|
|
293
|
+
|
|
294
|
+
```typescript
|
|
295
|
+
import { Provide } from '@midwayjs/core';
|
|
296
|
+
import { ISessionService } from '@cicctencent/midwayjs-base';
|
|
297
|
+
|
|
298
|
+
@Provide()
|
|
299
|
+
export class CustomSessionService implements ISessionService {
|
|
300
|
+
async getLoginSession(token: string) {
|
|
301
|
+
// 自定义会话获取逻辑
|
|
302
|
+
return session;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
async loginByCode(authCode: string) {
|
|
306
|
+
// 自定义登录逻辑
|
|
307
|
+
return session;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### 异常处理
|
|
313
|
+
|
|
314
|
+
组件内置了统一的异常过滤器,支持自定义错误处理。
|
|
315
|
+
|
|
316
|
+
## 部署说明
|
|
317
|
+
|
|
318
|
+
### 构建
|
|
319
|
+
|
|
320
|
+
```bash
|
|
321
|
+
npm run build
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### 测试
|
|
325
|
+
|
|
326
|
+
```bash
|
|
327
|
+
npm test
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
### 代码检查
|
|
331
|
+
|
|
332
|
+
```bash
|
|
333
|
+
npm run lint
|
|
334
|
+
npm run lint:fix
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
## 版本信息
|
|
338
|
+
|
|
339
|
+
当前版本: `1.0.35`
|
|
340
|
+
|
|
341
|
+
## 技术支持
|
|
342
|
+
|
|
343
|
+
如有问题或建议,请联系开发团队。
|
|
344
|
+
|
|
345
|
+
## 许可证
|
|
346
|
+
|
|
347
|
+
MIT License
|
|
@@ -0,0 +1,171 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const path = __importStar(require("path"));
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
exports.default = (appInfo) => {
|
|
39
|
+
appInfo.appId = Number(process.env.APP_ID) || 0;
|
|
40
|
+
const appRoot = appInfo.appDir || appInfo.root;
|
|
41
|
+
appInfo.dist = path.join(appRoot, 'dist');
|
|
42
|
+
appInfo.webDist = path.join(appInfo.dist, 'web');
|
|
43
|
+
appInfo.webPublic = path.join(appInfo.webDist, 'public');
|
|
44
|
+
if (!fs.existsSync(appInfo.webPublic)) {
|
|
45
|
+
fs.mkdirSync(appInfo.webPublic, {
|
|
46
|
+
recursive: true,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
const config = {
|
|
50
|
+
keys: appInfo.name + '_1641910879296_0612',
|
|
51
|
+
cookies: {
|
|
52
|
+
secret: '',
|
|
53
|
+
},
|
|
54
|
+
view: {
|
|
55
|
+
defaultViewEngine: 'nunjucks',
|
|
56
|
+
rootDir: {
|
|
57
|
+
default: path.join(appInfo.webDist, 'view/'),
|
|
58
|
+
},
|
|
59
|
+
mapping: {
|
|
60
|
+
'.html': 'nunjucks',
|
|
61
|
+
},
|
|
62
|
+
},
|
|
63
|
+
upload: {
|
|
64
|
+
mode: 'file',
|
|
65
|
+
fileSize: '10mb',
|
|
66
|
+
whitelist: [
|
|
67
|
+
'.jpg',
|
|
68
|
+
'.jpeg',
|
|
69
|
+
'.png',
|
|
70
|
+
'.gif',
|
|
71
|
+
'.webp',
|
|
72
|
+
'.pdf',
|
|
73
|
+
'.doc',
|
|
74
|
+
'.docx',
|
|
75
|
+
'.xls',
|
|
76
|
+
'.xlsx',
|
|
77
|
+
'.ppt',
|
|
78
|
+
'.pptx',
|
|
79
|
+
],
|
|
80
|
+
},
|
|
81
|
+
staticFile: {
|
|
82
|
+
dirs: {
|
|
83
|
+
default: {
|
|
84
|
+
dir: appInfo.webPublic,
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
},
|
|
88
|
+
apiOption: {
|
|
89
|
+
key: process.env.API_KEY || '2024@fefeding#',
|
|
90
|
+
reg: /^\/([^/]+\/)?api\//i,
|
|
91
|
+
ignore: ['/', /^\/([^/]+\/)?api\/cos\/get/i],
|
|
92
|
+
},
|
|
93
|
+
ipOption: {
|
|
94
|
+
whiteList: [
|
|
95
|
+
'127.0.0.1',
|
|
96
|
+
'::1',
|
|
97
|
+
'0.0.0.0',
|
|
98
|
+
'::',
|
|
99
|
+
'localhost',
|
|
100
|
+
...(process.env.IP_WHITE_LIST?.split(',') || []),
|
|
101
|
+
],
|
|
102
|
+
},
|
|
103
|
+
info: {
|
|
104
|
+
infoPath: '/_sys_info',
|
|
105
|
+
},
|
|
106
|
+
axios: {
|
|
107
|
+
default: {},
|
|
108
|
+
clients: {
|
|
109
|
+
default: {
|
|
110
|
+
headers: {
|
|
111
|
+
'X-Requested-With': 'XMLHttpRequest',
|
|
112
|
+
},
|
|
113
|
+
timeout: 1000,
|
|
114
|
+
withCredentials: false,
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
},
|
|
118
|
+
baseService: {
|
|
119
|
+
manager: ['admin'],
|
|
120
|
+
appId: appInfo.appId,
|
|
121
|
+
url: process.env.BASE_SERVER_URL || '',
|
|
122
|
+
},
|
|
123
|
+
session: {
|
|
124
|
+
timeout: Number(process.env.SESSION_TIMEOUT) || 20 * 60 * 1000,
|
|
125
|
+
secretKey: 'fjjiowhb@#$^111)*&',
|
|
126
|
+
},
|
|
127
|
+
auth: {
|
|
128
|
+
ignores: [/\/api\/test\//i, '/api/test/action'],
|
|
129
|
+
},
|
|
130
|
+
sso: {
|
|
131
|
+
baseUrl: process.env.SSO_URL || '',
|
|
132
|
+
appId: appInfo.appId,
|
|
133
|
+
},
|
|
134
|
+
tencentCredential: {
|
|
135
|
+
secretId: process.env.TENCENT_CREDENTIAL_SECRETID || '',
|
|
136
|
+
secretKey: process.env.TENCENT_CREDENTIAL_SECRETKEY || '',
|
|
137
|
+
},
|
|
138
|
+
busboy: {
|
|
139
|
+
mode: 'file',
|
|
140
|
+
},
|
|
141
|
+
bodyParser: {
|
|
142
|
+
formLimit: '30mb',
|
|
143
|
+
jsonLimit: '30mb',
|
|
144
|
+
},
|
|
145
|
+
cacheManager: {
|
|
146
|
+
clients: {
|
|
147
|
+
default: {
|
|
148
|
+
store: 'memory',
|
|
149
|
+
options: {
|
|
150
|
+
max: 10000,
|
|
151
|
+
ttl: 600000,
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
},
|
|
155
|
+
session: {
|
|
156
|
+
store: 'memory',
|
|
157
|
+
options: {
|
|
158
|
+
max: 10000,
|
|
159
|
+
ttl: 600000,
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
logger: {
|
|
164
|
+
level: process.env.LOG_LEVEL || 'info',
|
|
165
|
+
consoleLevel: process.env.LOG_LEVEL || 'info',
|
|
166
|
+
remoteUrl: process.env.REMOTE_LOGGER_URL || '',
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
return config;
|
|
170
|
+
};
|
|
171
|
+
//# sourceMappingURL=config.default.js.map
|
|
@@ -0,0 +1,52 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.loadEnv = loadEnv;
|
|
37
|
+
const dotenv = __importStar(require("dotenv"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
function loadEnv(envPath) {
|
|
41
|
+
envPath = envPath || path.join(process.cwd(), '.env');
|
|
42
|
+
console.log('env path', envPath);
|
|
43
|
+
if (fs.existsSync(envPath)) {
|
|
44
|
+
const env = dotenv.config({
|
|
45
|
+
path: envPath,
|
|
46
|
+
encoding: 'utf-8',
|
|
47
|
+
});
|
|
48
|
+
console.log(env);
|
|
49
|
+
}
|
|
50
|
+
return process.env;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -1,47 +1,71 @@
|
|
|
1
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
|
+
});
|
|
2
18
|
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
19
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
20
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
21
|
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
22
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
23
|
};
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
8
41
|
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
42
|
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
43
|
};
|
|
11
44
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
45
|
exports.BaseConfiguration = void 0;
|
|
13
|
-
// @ts-ignore
|
|
14
46
|
const core_1 = require("@midwayjs/core");
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
// @ts-ignore
|
|
19
|
-
const axios = require("@midwayjs/axios");
|
|
47
|
+
const koa = __importStar(require("@midwayjs/koa"));
|
|
48
|
+
const info = __importStar(require("@midwayjs/info"));
|
|
49
|
+
const axios = __importStar(require("@midwayjs/axios"));
|
|
20
50
|
const apiResultFormatter_1 = require("./middleware/apiResultFormatter");
|
|
21
51
|
const requestInit_1 = require("./middleware/requestInit");
|
|
22
52
|
const detect_middleware_1 = require("./middleware/detect.middleware");
|
|
23
|
-
const view = require("@midwayjs/view-nunjucks");
|
|
24
|
-
const staticFile = require("@midwayjs/static-file");
|
|
25
|
-
const cacheManager = require("@midwayjs/cache-manager");
|
|
26
|
-
const DefaultConfig = require("./config/config.default");
|
|
53
|
+
const view = __importStar(require("@midwayjs/view-nunjucks"));
|
|
54
|
+
const staticFile = __importStar(require("@midwayjs/static-file"));
|
|
55
|
+
const cacheManager = __importStar(require("@midwayjs/cache-manager"));
|
|
56
|
+
const DefaultConfig = __importStar(require("./config/config.default"));
|
|
27
57
|
const api_1 = require("./guard/api");
|
|
28
58
|
const auth_1 = require("./guard/auth");
|
|
29
|
-
// load .env file in process.cwd
|
|
30
59
|
const env_1 = require("./config/env");
|
|
31
60
|
(0, env_1.loadEnv)();
|
|
32
61
|
let BaseConfiguration = class BaseConfiguration {
|
|
33
|
-
app;
|
|
34
62
|
async onReady() {
|
|
35
63
|
if (process.env.FEFE_MIDWAYJS_BASE_READY === 'true') {
|
|
36
64
|
return;
|
|
37
65
|
}
|
|
38
|
-
process.env.SERVICE_NAME =
|
|
39
|
-
|
|
40
|
-
this.app.useGuard([
|
|
41
|
-
api_1.ApiGuard,
|
|
42
|
-
auth_1.AuthGuard
|
|
43
|
-
]);
|
|
44
|
-
// add middleware
|
|
66
|
+
process.env.SERVICE_NAME =
|
|
67
|
+
process.env.SERVICE_NAME || this.app.getProjectName();
|
|
68
|
+
this.app.useGuard([api_1.ApiGuard, auth_1.AuthGuard]);
|
|
45
69
|
this.app.useMiddleware([
|
|
46
70
|
requestInit_1.RequestInitMiddleware,
|
|
47
71
|
detect_middleware_1.DetectMiddleware,
|
|
@@ -76,4 +100,4 @@ exports.BaseConfiguration = BaseConfiguration = __decorate([
|
|
|
76
100
|
],
|
|
77
101
|
})
|
|
78
102
|
], BaseConfiguration);
|
|
79
|
-
//# sourceMappingURL=
|
|
103
|
+
//# sourceMappingURL=configuration.js.map
|
|
@@ -10,7 +10,6 @@ exports.DefaultErrorFilter = void 0;
|
|
|
10
10
|
const core_1 = require("@midwayjs/core");
|
|
11
11
|
let DefaultErrorFilter = class DefaultErrorFilter {
|
|
12
12
|
async catch(err, ctx) {
|
|
13
|
-
// 所有的未分类错误会到这里
|
|
14
13
|
return {
|
|
15
14
|
success: false,
|
|
16
15
|
message: err.message,
|
|
@@ -21,4 +20,4 @@ exports.DefaultErrorFilter = DefaultErrorFilter;
|
|
|
21
20
|
exports.DefaultErrorFilter = DefaultErrorFilter = __decorate([
|
|
22
21
|
(0, core_1.Catch)()
|
|
23
22
|
], DefaultErrorFilter);
|
|
24
|
-
//# sourceMappingURL=
|
|
23
|
+
//# sourceMappingURL=default.filter.js.map
|