@lark-apaas/devtool-kits 1.2.17-alpha.4 → 1.2.17-alpha.6

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 CHANGED
@@ -92,17 +92,6 @@ import {
92
92
  } from '@apaas/fullstack-toolkits';
93
93
  ```
94
94
 
95
- ### 兼容工具函数 (Compat)
96
- ```typescript
97
- import {
98
- sendJson, // 发送 JSON 响应(兼容 Express/Connect)
99
- sendError, // 发送错误响应
100
- sendSuccess, // 发送成功响应
101
- getQuery, // 获取所有查询参数
102
- getQueryParam, // 获取单个查询参数
103
- } from '@apaas/fullstack-toolkits';
104
- ```
105
-
106
95
  ### 类型定义 (Types)
107
96
  ```typescript
108
97
  import type {
@@ -182,38 +171,6 @@ export default {
182
171
  - 全局中间件应放在路由中间件之前
183
172
  - 路由中间件仅处理匹配其挂载路径的请求
184
173
 
185
- ### Vite/Connect 兼容性
186
-
187
- 本工具包原生支持 Vite 开发服务器。`registerMiddlewares` 会自动检测 Vite/Connect 环境,并添加必要的 Express API 兼容层:
188
-
189
- - `res.status()` - 设置响应状态码
190
- - `res.json()` - 发送 JSON 响应
191
- - `res.send()` - 发送响应
192
- - `req.query` - 解析后的查询参数
193
-
194
- 这意味着您可以直接在 Vite 中使用本工具包,无需额外配置。
195
-
196
- **兼容工具函数(可选):**
197
-
198
- 如果您正在编写自定义中间件并希望同时支持 Express 和 Vite,可以使用导出的兼容工具函数:
199
-
200
- ```typescript
201
- import { sendJson, sendError, sendSuccess, getQuery, getQueryParam } from '@lark-apaas/devtool-kits';
202
-
203
- // 发送 JSON 响应(自动检测 Express/Connect)
204
- sendJson(res, { data: 'value' }, 200);
205
-
206
- // 发送错误响应
207
- sendError(res, 'Not found', error, 404);
208
-
209
- // 发送成功响应
210
- sendSuccess(res, { id: 123 });
211
-
212
- // 获取查询参数(自动解析 URL 或使用 req.query)
213
- const query = getQuery(req);
214
- const page = getQueryParam(req, 'page');
215
- ```
216
-
217
174
  ## 中间件详细说明
218
175
  ### Dev Logs 中间件
219
176
 
package/dist/index.cjs CHANGED
@@ -34,16 +34,11 @@ __export(index_exports, {
34
34
  createCollectLogsMiddleware: () => createCollectLogsMiddleware,
35
35
  createDevLogsMiddleware: () => createDevLogsMiddleware,
36
36
  createOpenapiMiddleware: () => createOpenapiMiddleware,
37
- getQuery: () => getQuery,
38
- getQueryParam: () => getQueryParam,
39
37
  handleDevProxyError: () => handleDevProxyError,
40
38
  normalizeBasePath: () => normalizeBasePath,
41
39
  parseAndGenerateNestResourceTemplate: () => parseAndGenerateNestResourceTemplate,
42
40
  postprocessDrizzleSchema: () => postprocessDrizzleSchema,
43
- registerMiddlewares: () => registerMiddlewares,
44
- sendError: () => sendError,
45
- sendJson: () => sendJson,
46
- sendSuccess: () => sendSuccess
41
+ registerMiddlewares: () => registerMiddlewares
47
42
  });
48
43
  module.exports = __toCommonJS(index_exports);
49
44
 
@@ -1940,8 +1935,10 @@ function parsePinoLog(line, source) {
1940
1935
  statusCode: pinoLog.status_code,
1941
1936
  durationMs: pinoLog.duration_ms,
1942
1937
  ip: pinoLog.ip,
1938
+ referer: pinoLog.referer,
1943
1939
  requestBody: pinoLog.request_body,
1944
- responseBody: pinoLog.response_body
1940
+ responseBody: pinoLog.response_body,
1941
+ queryParams: pinoLog.query_params
1945
1942
  },
1946
1943
  tags: [
1947
1944
  source
@@ -2846,7 +2843,8 @@ function parsePinoLog2(line, source) {
2846
2843
  durationMs: pinoLog.duration_ms,
2847
2844
  ip: pinoLog.ip,
2848
2845
  requestBody: pinoLog.request_body,
2849
- responseBody: pinoLog.response_body
2846
+ responseBody: pinoLog.response_body,
2847
+ queryParams: pinoLog.query_params
2850
2848
  },
2851
2849
  tags: [
2852
2850
  source
@@ -3495,100 +3493,7 @@ function createCollectLogsMiddleware(options = {}) {
3495
3493
  }
3496
3494
  __name(createCollectLogsMiddleware, "createCollectLogsMiddleware");
3497
3495
 
3498
- // src/middlewares/compat.ts
3499
- function sendJson(res, data, statusCode = 200) {
3500
- const statusFn = res.status;
3501
- const jsonFn = res.json;
3502
- if (typeof statusFn === "function" && typeof jsonFn === "function") {
3503
- statusFn.call(res, statusCode);
3504
- jsonFn.call(res, data);
3505
- } else {
3506
- res.statusCode = statusCode;
3507
- res.setHeader("Content-Type", "application/json");
3508
- res.end(JSON.stringify(data));
3509
- }
3510
- }
3511
- __name(sendJson, "sendJson");
3512
- function sendError(res, message, error, statusCode = 500) {
3513
- const errorData = {
3514
- message,
3515
- ...error ? {
3516
- error: serializeError3(error)
3517
- } : {}
3518
- };
3519
- sendJson(res, errorData, statusCode);
3520
- }
3521
- __name(sendError, "sendError");
3522
- function sendSuccess(res, data) {
3523
- sendJson(res, {
3524
- success: true,
3525
- ...data
3526
- }, 200);
3527
- }
3528
- __name(sendSuccess, "sendSuccess");
3529
- function getQuery(req) {
3530
- if (req.query) {
3531
- return req.query;
3532
- }
3533
- const url = new URL(req.url || "", `http://${req.headers.host}`);
3534
- return Object.fromEntries(url.searchParams.entries());
3535
- }
3536
- __name(getQuery, "getQuery");
3537
- function getQueryParam(req, key) {
3538
- const query = getQuery(req);
3539
- return query[key];
3540
- }
3541
- __name(getQueryParam, "getQueryParam");
3542
- function serializeError3(error) {
3543
- if (error instanceof Error) {
3544
- return {
3545
- name: error.name,
3546
- message: error.message,
3547
- stack: error.stack
3548
- };
3549
- }
3550
- return {
3551
- message: String(error)
3552
- };
3553
- }
3554
- __name(serializeError3, "serializeError");
3555
-
3556
3496
  // src/middlewares/index.ts
3557
- function enhanceForCompat(req, res) {
3558
- if (!res.status) {
3559
- res.status = function(code) {
3560
- res.statusCode = code;
3561
- return res;
3562
- };
3563
- }
3564
- if (!res.json) {
3565
- res.json = function(data) {
3566
- res.setHeader("Content-Type", "application/json");
3567
- res.end(JSON.stringify(data));
3568
- return res;
3569
- };
3570
- }
3571
- if (!res.send) {
3572
- res.send = function(data) {
3573
- if (typeof data === "object" && data !== null) {
3574
- res.setHeader("Content-Type", "application/json");
3575
- res.end(JSON.stringify(data));
3576
- } else {
3577
- res.end(String(data));
3578
- }
3579
- return res;
3580
- };
3581
- }
3582
- if (!req.query) {
3583
- const url = new URL(req.url || "", `http://${req.headers.host || "localhost"}`);
3584
- req.query = Object.fromEntries(url.searchParams.entries());
3585
- }
3586
- }
3587
- __name(enhanceForCompat, "enhanceForCompat");
3588
- function isConnectServer(server) {
3589
- return typeof server === "function" && !("set" in server) && !("engine" in server);
3590
- }
3591
- __name(isConnectServer, "isConnectServer");
3592
3497
  function isRouteMiddleware(middleware) {
3593
3498
  return "createRouter" in middleware && middleware.createRouter !== void 0;
3594
3499
  }
@@ -3641,13 +3546,6 @@ async function registerMiddlewares(server, middlewares, options) {
3641
3546
  rootDir: process.cwd(),
3642
3547
  ...options
3643
3548
  };
3644
- if (isConnectServer(server)) {
3645
- server.use((req, res, next) => {
3646
- enhanceForCompat(req, res);
3647
- next();
3648
- });
3649
- console.log("[Middleware] Registered Express compatibility layer for Connect/Vite");
3650
- }
3651
3549
  const allMiddlewares = [
3652
3550
  ...middlewares
3653
3551
  ];
@@ -3679,15 +3577,10 @@ __name(registerMiddlewares, "registerMiddlewares");
3679
3577
  createCollectLogsMiddleware,
3680
3578
  createDevLogsMiddleware,
3681
3579
  createOpenapiMiddleware,
3682
- getQuery,
3683
- getQueryParam,
3684
3580
  handleDevProxyError,
3685
3581
  normalizeBasePath,
3686
3582
  parseAndGenerateNestResourceTemplate,
3687
3583
  postprocessDrizzleSchema,
3688
- registerMiddlewares,
3689
- sendError,
3690
- sendJson,
3691
- sendSuccess
3584
+ registerMiddlewares
3692
3585
  });
3693
3586
  //# sourceMappingURL=index.cjs.map