@jiangnian520/midway-response 1.0.0 → 1.0.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.
@@ -47,27 +47,33 @@ let ResponseMiddleware = class ResponseMiddleware {
47
47
  resolve() {
48
48
  return async (ctx, next) => {
49
49
  const start = Date.now();
50
- const stTime = new Date().toISOString(); // 也可以换成你之前的格式化工具
51
- // 将开始时间挂载到 ctx 上,给异常过滤器用
50
+ const stTime = new Date().toISOString();
52
51
  ctx.state.__req_start_time__ = stTime;
53
52
  ctx.state.__req_start_ms__ = start;
54
53
  await next();
55
- // 1. 如果是文件流、Buffer、或者没返回值,直接跳过不包装
54
+ const end = Date.now();
55
+ const edTime = new Date().toISOString();
56
+ const waste = `${end - start}ms`;
57
+ // 1. 如果是文件流或 Buffer,不处理
56
58
  if (ctx.body === undefined ||
57
59
  ctx.body === null ||
58
60
  ctx.body instanceof stream.Stream ||
59
61
  Buffer.isBuffer(ctx.body)) {
60
62
  return;
61
63
  }
62
- // 2. 如果业务代码已经手动返回了 AjaxResult,则补充耗时信息即可
63
- const end = Date.now();
64
- const edTime = new Date().toISOString();
65
- const waste = `${end - start}ms`;
64
+ // ========================================================
65
+ // ✅ 核心兜底:如果是被其他组件拦截的纯文本响应(如限流)
66
+ // ========================================================
67
+ if (ctx.status >= 400 && typeof ctx.body === 'string') {
68
+ ctx.body = ajax_result_1.AjaxResult.error(ctx.status, ctx.body).withMeta(stTime, edTime, waste);
69
+ return;
70
+ }
71
+ // 2. 如果业务代码已经手动返回了 AjaxResult
66
72
  if (ctx.body instanceof ajax_result_1.AjaxResult) {
67
73
  ctx.body.withMeta(stTime, edTime, waste);
68
74
  return;
69
75
  }
70
- // 3. 如果返回的是普通对象或数组(且状态码为 2xx),自动包装!
76
+ // 3. 正常成功的返回
71
77
  if (ctx.status >= 200 && ctx.status < 300) {
72
78
  ctx.body = ajax_result_1.AjaxResult.success(ctx.body).withMeta(stTime, edTime, waste);
73
79
  }
@@ -81,4 +87,4 @@ exports.ResponseMiddleware = ResponseMiddleware;
81
87
  exports.ResponseMiddleware = ResponseMiddleware = __decorate([
82
88
  (0, core_1.Middleware)()
83
89
  ], ResponseMiddleware);
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UubWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3Jlc3BvbnNlLm1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQTRDO0FBRzVDLCtDQUEyQztBQUMzQywrQ0FBaUM7QUFHMUIsSUFBTSxrQkFBa0IsR0FBeEIsTUFBTSxrQkFBa0I7SUFDM0IsT0FBTztRQUNILE9BQU8sS0FBSyxFQUFFLEdBQVksRUFBRSxJQUFrQixFQUFFLEVBQUU7WUFDOUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxpQkFBaUI7WUFFMUQseUJBQXlCO1lBQ3pCLEdBQUcsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLEdBQUcsTUFBTSxDQUFDO1lBQ3RDLEdBQUcsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1lBRW5DLE1BQU0sSUFBSSxFQUFFLENBQUM7WUFFYixrQ0FBa0M7WUFDbEMsSUFDSSxHQUFHLENBQUMsSUFBSSxLQUFLLFNBQVM7Z0JBQ3RCLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSTtnQkFDakIsR0FBRyxDQUFDLElBQUksWUFBWSxNQUFNLENBQUMsTUFBTTtnQkFDakMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQzNCLENBQUM7Z0JBQ0MsT0FBTztZQUNYLENBQUM7WUFFRCx3Q0FBd0M7WUFDeEMsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDeEMsTUFBTSxLQUFLLEdBQUcsR0FBRyxHQUFHLEdBQUcsS0FBSyxJQUFJLENBQUM7WUFFakMsSUFBSSxHQUFHLENBQUMsSUFBSSxZQUFZLHdCQUFVLEVBQUUsQ0FBQztnQkFDakMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztnQkFDekMsT0FBTztZQUNYLENBQUM7WUFFRCxvQ0FBb0M7WUFDcEMsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO2dCQUN4QyxHQUFHLENBQUMsSUFBSSxHQUFHLHdCQUFVLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM1RSxDQUFDO1FBQ0wsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELE1BQU0sQ0FBQyxPQUFPO1FBQ1YsT0FBTyxvQkFBb0IsQ0FBQztJQUNoQyxDQUFDO0NBQ0osQ0FBQTtBQTFDWSxnREFBa0I7NkJBQWxCLGtCQUFrQjtJQUQ5QixJQUFBLGlCQUFVLEdBQUU7R0FDQSxrQkFBa0IsQ0EwQzlCIn0=
90
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UubWlkZGxld2FyZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL3Jlc3BvbnNlLm1pZGRsZXdhcmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUNBQTRDO0FBRzVDLCtDQUEyQztBQUMzQywrQ0FBaUM7QUFHMUIsSUFBTSxrQkFBa0IsR0FBeEIsTUFBTSxrQkFBa0I7SUFDM0IsT0FBTztRQUNILE9BQU8sS0FBSyxFQUFFLEdBQVksRUFBRSxJQUFrQixFQUFFLEVBQUU7WUFDOUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFeEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUM7WUFDdEMsR0FBRyxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7WUFFbkMsTUFBTSxJQUFJLEVBQUUsQ0FBQztZQUViLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QixNQUFNLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ3hDLE1BQU0sS0FBSyxHQUFHLEdBQUcsR0FBRyxHQUFHLEtBQUssSUFBSSxDQUFDO1lBRWpDLHdCQUF3QjtZQUN4QixJQUNJLEdBQUcsQ0FBQyxJQUFJLEtBQUssU0FBUztnQkFDdEIsR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJO2dCQUNqQixHQUFHLENBQUMsSUFBSSxZQUFZLE1BQU0sQ0FBQyxNQUFNO2dCQUNqQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFDM0IsQ0FBQztnQkFDQyxPQUFPO1lBQ1gsQ0FBQztZQUVELDJEQUEyRDtZQUMzRCwrQkFBK0I7WUFDL0IsMkRBQTJEO1lBQzNELElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLElBQUksT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO2dCQUNwRCxHQUFHLENBQUMsSUFBSSxHQUFHLHdCQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUNsRixPQUFPO1lBQ1gsQ0FBQztZQUVELDhCQUE4QjtZQUM5QixJQUFJLEdBQUcsQ0FBQyxJQUFJLFlBQVksd0JBQVUsRUFBRSxDQUFDO2dCQUNqQyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO2dCQUN6QyxPQUFPO1lBQ1gsQ0FBQztZQUVELGFBQWE7WUFDYixJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLEdBQUcsR0FBRyxFQUFFLENBQUM7Z0JBQ3hDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsd0JBQVUsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzVFLENBQUM7UUFDTCxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU87UUFDVixPQUFPLG9CQUFvQixDQUFDO0lBQ2hDLENBQUM7Q0FDSixDQUFBO0FBakRZLGdEQUFrQjs2QkFBbEIsa0JBQWtCO0lBRDlCLElBQUEsaUJBQVUsR0FBRTtHQUNBLGtCQUFrQixDQWlEOUIifQ==
package/dist/index.d.ts CHANGED
@@ -2,6 +2,7 @@ export { ResponseConfiguration as Configuration } from './configuration';
2
2
  export { AjaxResult } from './core/ajax-result';
3
3
  export { BaseController } from './core/base-controller';
4
4
  export { GlobalExceptionFilter } from './core/global-exception.filter';
5
+ export { ResponseMiddleware } from './core/response.middleware';
5
6
  export * from './interface';
6
7
  /**
7
8
  * ==========================================
package/dist/index.js CHANGED
@@ -14,7 +14,7 @@ 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
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.GlobalExceptionFilter = exports.BaseController = exports.AjaxResult = exports.Configuration = void 0;
17
+ exports.ResponseMiddleware = exports.GlobalExceptionFilter = exports.BaseController = exports.AjaxResult = exports.Configuration = void 0;
18
18
  var configuration_1 = require("./configuration");
19
19
  Object.defineProperty(exports, "Configuration", { enumerable: true, get: function () { return configuration_1.ResponseConfiguration; } });
20
20
  var ajax_result_1 = require("./core/ajax-result");
@@ -23,6 +23,8 @@ var base_controller_1 = require("./core/base-controller");
23
23
  Object.defineProperty(exports, "BaseController", { enumerable: true, get: function () { return base_controller_1.BaseController; } });
24
24
  var global_exception_filter_1 = require("./core/global-exception.filter");
25
25
  Object.defineProperty(exports, "GlobalExceptionFilter", { enumerable: true, get: function () { return global_exception_filter_1.GlobalExceptionFilter; } });
26
+ var response_middleware_1 = require("./core/response.middleware");
27
+ Object.defineProperty(exports, "ResponseMiddleware", { enumerable: true, get: function () { return response_middleware_1.ResponseMiddleware; } });
26
28
  __exportStar(require("./interface"), exports);
27
29
  /**
28
30
  * ==========================================
@@ -62,4 +64,4 @@ __exportStar(require("./interface"), exports);
62
64
  * // 框架会自动捕获,并返回 { code: 400, msg: '参数错误', data: null }
63
65
  * ```
64
66
  */
65
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBeUU7QUFBaEUsOEdBQUEscUJBQXFCLE9BQWlCO0FBQy9DLGtEQUFnRDtBQUF2Qyx5R0FBQSxVQUFVLE9BQUE7QUFDbkIsMERBQXdEO0FBQS9DLGlIQUFBLGNBQWMsT0FBQTtBQUN2QiwwRUFBdUU7QUFBOUQsZ0lBQUEscUJBQXFCLE9BQUE7QUFDOUIsOENBQTRCO0FBRTVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUNHIn0=
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBeUU7QUFBaEUsOEdBQUEscUJBQXFCLE9BQWlCO0FBQy9DLGtEQUFnRDtBQUF2Qyx5R0FBQSxVQUFVLE9BQUE7QUFDbkIsMERBQXdEO0FBQS9DLGlIQUFBLGNBQWMsT0FBQTtBQUN2QiwwRUFBdUU7QUFBOUQsZ0lBQUEscUJBQXFCLE9BQUE7QUFDOUIsa0VBQWdFO0FBQXZELHlIQUFBLGtCQUFrQixPQUFBO0FBQzNCLDhDQUE0QjtBQUU1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFDRyJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jiangnian520/midway-response",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "专为 Midway 4.0 打造的统一响应与异常格式化组件,支持全自动包装与耗时统计。",
5
5
  "main": "dist/index.js",
6
6
  "typings": "index.d.ts",