@dangao/bun-server 2.0.3 → 2.0.8

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 (53) hide show
  1. package/dist/config/config-module.d.ts +3 -0
  2. package/dist/config/config-module.d.ts.map +1 -1
  3. package/dist/core/context.d.ts +10 -0
  4. package/dist/core/context.d.ts.map +1 -1
  5. package/dist/database/service.d.ts +4 -4
  6. package/dist/database/service.d.ts.map +1 -1
  7. package/dist/index.js +232 -93
  8. package/dist/validation/decorators.d.ts.map +1 -1
  9. package/package.json +5 -4
  10. package/src/ai/providers/anthropic-provider.ts +1 -1
  11. package/src/ai/providers/google-provider.ts +1 -1
  12. package/src/ai/providers/ollama-provider.ts +1 -1
  13. package/src/ai/providers/openai-provider.ts +2 -2
  14. package/src/auth/jwt.ts +1 -1
  15. package/src/cache/interceptors.ts +3 -3
  16. package/src/cache/types.ts +10 -10
  17. package/src/client/runtime.ts +1 -1
  18. package/src/config/config-module.ts +46 -14
  19. package/src/config/service.ts +2 -2
  20. package/src/controller/param-binder.ts +1 -1
  21. package/src/conversation/service.ts +1 -1
  22. package/src/core/application.ts +1 -1
  23. package/src/core/cluster.ts +4 -4
  24. package/src/core/context.ts +71 -0
  25. package/src/dashboard/controller.ts +2 -2
  26. package/src/database/connection-manager.ts +4 -4
  27. package/src/database/service.ts +25 -28
  28. package/src/debug/middleware.ts +2 -2
  29. package/src/di/module-registry.ts +1 -1
  30. package/src/error/handler.ts +3 -3
  31. package/src/events/event-module.ts +4 -4
  32. package/src/files/static-middleware.ts +2 -2
  33. package/src/files/storage.ts +1 -1
  34. package/src/interceptor/builtin/log-interceptor.ts +1 -1
  35. package/src/mcp/server.ts +1 -1
  36. package/src/middleware/builtin/error-handler.ts +2 -2
  37. package/src/middleware/builtin/file-upload.ts +1 -1
  38. package/src/middleware/builtin/rate-limit.ts +1 -1
  39. package/src/middleware/builtin/static-file.ts +2 -2
  40. package/src/prompt/stores/file-store.ts +4 -4
  41. package/src/request/body-parser.ts +3 -3
  42. package/src/security/filter.ts +1 -1
  43. package/src/security/guards/guard-registry.ts +1 -1
  44. package/src/session/middleware.ts +1 -1
  45. package/src/session/types.ts +5 -5
  46. package/src/testing/test-client.ts +1 -1
  47. package/src/validation/decorators.ts +70 -2
  48. package/src/validation/rules/common.ts +2 -2
  49. package/tests/config/config-module-extended.test.ts +24 -0
  50. package/tests/core/context.test.ts +52 -0
  51. package/tests/database/database-module.test.ts +87 -0
  52. package/tests/error/error-handler.test.ts +24 -0
  53. package/tests/validation/validation.test.ts +18 -0
@@ -2,6 +2,9 @@ import { type AsyncModuleOptions } from '../di/async-module';
2
2
  import { ConfigService } from './service';
3
3
  import { type ConfigModuleOptions } from './types';
4
4
  export declare class ConfigModule {
5
+ private static readonly DANGEROUS_PATH_SEGMENTS;
6
+ private static isPlainObject;
7
+ private static createSafeContainer;
5
8
  /**
6
9
  * 创建配置模块
7
10
  * @param options - 模块配置
@@ -1 +1 @@
1
- {"version":3,"file":"config-module.d.ts","sourceRoot":"","sources":["../../src/config/config-module.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,kBAAkB,EAA0B,MAAM,oBAAoB,CAAC;AAErF,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEzE,qBAGa,YAAY;IACvB;;;OAGG;WACW,OAAO,CACnB,OAAO,GAAE,mBAAwB,GAChC,OAAO,YAAY;IAsDtB;;;;OAIG;WACW,YAAY,CACxB,YAAY,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,GACpD,OAAO,YAAY;IAkCtB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAQ1B;;OAEG;WACiB,sBAAsB,CACxC,OAAO,EAAE,aAAa,EACtB,mBAAmB,EAAE,WAAW,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,GACpE,OAAO,CAAC,IAAI,CAAC;IA+BhB;;OAEG;mBACkB,sBAAsB;IAuE3C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAwDvC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAwB9B"}
1
+ {"version":3,"file":"config-module.d.ts","sourceRoot":"","sources":["../../src/config/config-module.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,kBAAkB,EAA0B,MAAM,oBAAoB,CAAC;AAErF,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEzE,qBAGa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAI5C;IAEH,OAAO,CAAC,MAAM,CAAC,aAAa;IAQ5B,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAGlC;;;OAGG;WACW,OAAO,CACnB,OAAO,GAAE,mBAAwB,GAChC,OAAO,YAAY;IAsDtB;;;;OAIG;WACW,YAAY,CACxB,YAAY,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,GACpD,OAAO,YAAY;IAkCtB;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;IAQ1B;;OAEG;WACiB,sBAAsB,CACxC,OAAO,EAAE,aAAa,EACtB,mBAAmB,EAAE,WAAW,CAAC,mBAAmB,CAAC,cAAc,CAAC,CAAC,GACpE,OAAO,CAAC,IAAI,CAAC;IA+BhB;;OAEG;mBACkB,sBAAsB;IAuE3C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAwDvC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAuC9B"}
@@ -5,6 +5,7 @@ import { type URLSearchParams, URL } from 'url';
5
5
  * 封装 Request 和 Response,提供便捷的访问方法
6
6
  */
7
7
  export declare class Context {
8
+ private static readonly ERROR_REDACTED_KEYS;
8
9
  /**
9
10
  * 原始请求对象
10
11
  */
@@ -120,5 +121,14 @@ export declare class Context {
120
121
  * @returns Response 对象
121
122
  */
122
123
  createResponse(body?: unknown, init?: ResponseInit): Response;
124
+ /**
125
+ * 创建错误响应(自动过滤敏感字段)
126
+ * @param body - 错误响应体
127
+ * @param init - 响应初始化选项
128
+ * @returns Response 对象
129
+ */
130
+ createErrorResponse(body?: unknown, init?: ResponseInit): Response;
131
+ private sanitizeErrorPayload;
132
+ private sanitizeValue;
123
133
  }
124
134
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAAE,KAAK,eAAe,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAEhD;;;GAGG;AACH,qBAAa,OAAO;IAClB;;OAEG;IACH,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACI,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAE3B;;OAEG;IACH,SAAgB,GAAG,EAAE,GAAG,CAAC;IAEzB;;OAEG;IACH,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,SAAgB,KAAK,EAAE,eAAe,CAAC;IAEvC;;OAEG;IACI,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAE3C;;OAEG;IACH,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACI,eAAe,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACI,UAAU,EAAE,MAAM,CAAO;IAEhC;;OAEG;IACI,KAAK,EAAE,gBAAgB,EAAE,CAAM;IAEtC;;OAEG;IACH,OAAO,CAAC,KAAK,CAAC,CAAU;IAExB;;OAEG;IACH,OAAO,CAAC,WAAW,CAAkB;gBAElB,OAAO,EAAE,OAAO;IAUnC;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAQxC;;;OAGG;IACH,IAAW,IAAI,IAAI,OAAO,CAEzB;IAED;;;OAGG;IACH,IAAW,IAAI,CAAC,IAAI,EAAE,OAAO,EAG5B;IAED;;;;OAIG;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI3C;;;OAGG;IACI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ5C;;;;OAIG;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIhD;;;;OAIG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI5C;;;;OAIG;IACI,WAAW,IAAI,MAAM;IAmB5B;;;;OAIG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIlD;;;OAGG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIpC;;;;;OAKG;IACI,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ;CA2BrE"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEjD,OAAO,EAAE,KAAK,eAAe,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAEhD;;;GAGG;AACH,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAwC;IACnF;;OAEG;IACH,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACI,QAAQ,CAAC,EAAE,QAAQ,CAAC;IAE3B;;OAEG;IACH,SAAgB,GAAG,EAAE,GAAG,CAAC;IAEzB;;OAEG;IACH,SAAgB,MAAM,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,SAAgB,KAAK,EAAE,eAAe,CAAC;IAEvC;;OAEG;IACI,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM;IAE3C;;OAEG;IACH,SAAgB,OAAO,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACI,eAAe,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACI,UAAU,EAAE,MAAM,CAAO;IAEhC;;OAEG;IACI,KAAK,EAAE,gBAAgB,EAAE,CAAM;IAEtC;;OAEG;IACH,OAAO,CAAC,KAAK,CAAC,CAAU;IAExB;;OAEG;IACH,OAAO,CAAC,WAAW,CAAkB;gBAElB,OAAO,EAAE,OAAO;IAUnC;;;OAGG;IACU,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAQxC;;;OAGG;IACH,IAAW,IAAI,IAAI,OAAO,CAEzB;IAED;;;OAGG;IACH,IAAW,IAAI,CAAC,IAAI,EAAE,OAAO,EAG5B;IAED;;;;OAIG;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI3C;;;OAGG;IACI,WAAW,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAQ5C;;;;OAIG;IACI,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIhD;;;;OAIG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI5C;;;;OAIG;IACI,WAAW,IAAI,MAAM;IAmB5B;;;;OAIG;IACI,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAIlD;;;OAGG;IACI,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAIpC;;;;;OAKG;IACI,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ;IA4BpE;;;;;OAKG;IACI,mBAAmB,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ;IAWzE,OAAO,CAAC,oBAAoB;IAe5B,OAAO,CAAC,aAAa;CAqCtB"}
@@ -59,13 +59,13 @@ export declare class DatabaseService {
59
59
  private querySqlite;
60
60
  /**
61
61
  * Bun.SQL 查询实现(PostgreSQL/MySQL)
62
- * 注意:Bun.SQL 主要使用模板字符串,但为了兼容性,我们尝试支持参数化查询
62
+ * 通过模板字符串调用 Bun.SQL,确保参数走 Bun.SQL 转义逻辑
63
63
  */
64
64
  private queryBunSQL;
65
65
  /**
66
- * 将参数插入到 SQL 中(用于 Bun.SQL 模板字符串)
67
- * 注意:这只是临时方案,Bun.SQL 的模板字符串会自动处理 SQL 注入防护
66
+ * SQL ? 占位符参数转换为模板字符串片段
67
+ * 让参数通过 Bun.SQL values 通道注入,避免手工拼接 SQL
68
68
  */
69
- private interpolateParams;
69
+ private buildTemplateFromSql;
70
70
  }
71
71
  //# sourceMappingURL=service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/database/service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBACa,eAAe;IAC1B,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,OAAO,CAAwB;gBAEpB,OAAO,EAAE,qBAAqB;IAQjD;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;OAEG;IACU,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvC;;OAEG;IACI,YAAY;;;;;;IAInB;;OAEG;IACI,aAAa,IAAI,OAAO;IAI/B;;OAEG;IACH,IAAW,MAAM,IAAI,qBAAqB,CAEzC;IAED;;OAEG;IACI,eAAe,IAAI,cAAc,CAAC,MAAM,CAAC;IAIhD;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ5C;;OAEG;IACI,iBAAiB,IAAI,cAAc;IAI1C;;;OAGG;IACI,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAgB9E;;OAEG;IACH,OAAO,CAAC,WAAW;IA6BnB;;;OAGG;YACW,WAAW;IAiDzB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;CAkB1B"}
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/database/service.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,cAAc,EACd,cAAc,EACd,qBAAqB,EACtB,MAAM,SAAS,CAAC;AAEjB;;;GAGG;AACH,qBACa,eAAe;IAC1B,OAAO,CAAC,iBAAiB,CAA4B;IACrD,OAAO,CAAC,OAAO,CAAwB;gBAEpB,OAAO,EAAE,qBAAqB;IAQjD;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxC;;OAEG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC;;OAEG;IACU,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvC;;OAEG;IACI,YAAY;;;;;;IAInB;;OAEG;IACI,aAAa,IAAI,OAAO;IAI/B;;OAEG;IACH,IAAW,MAAM,IAAI,qBAAqB,CAEzC;IAED;;OAEG;IACI,eAAe,IAAI,cAAc,CAAC,MAAM,CAAC;IAIhD;;OAEG;IACU,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAQ5C;;OAEG;IACI,iBAAiB,IAAI,cAAc;IAI1C;;;OAGG;IACI,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAgB9E;;OAEG;IACH,OAAO,CAAC,WAAW;IA6BnB;;;OAGG;YACW,WAAW;IA+CzB;;;OAGG;IACH,OAAO,CAAC,oBAAoB;CAiB7B"}