@dangao/bun-server 0.1.3 → 0.1.5

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 (85) hide show
  1. package/dist/auth/controller.d.ts +35 -0
  2. package/dist/auth/controller.d.ts.map +1 -0
  3. package/dist/auth/decorators.d.ts +38 -0
  4. package/dist/auth/decorators.d.ts.map +1 -0
  5. package/dist/auth/index.d.ts +6 -0
  6. package/dist/auth/index.d.ts.map +1 -0
  7. package/dist/auth/jwt.d.ts +43 -0
  8. package/dist/auth/jwt.d.ts.map +1 -0
  9. package/dist/auth/oauth2.d.ts +45 -0
  10. package/dist/auth/oauth2.d.ts.map +1 -0
  11. package/dist/auth/types.d.ts +238 -0
  12. package/dist/auth/types.d.ts.map +1 -0
  13. package/dist/config/config-module.d.ts +14 -0
  14. package/dist/config/config-module.d.ts.map +1 -0
  15. package/dist/config/index.d.ts +4 -0
  16. package/dist/config/index.d.ts.map +1 -0
  17. package/dist/config/service.d.ts +32 -0
  18. package/dist/config/service.d.ts.map +1 -0
  19. package/dist/config/types.d.ts +22 -0
  20. package/dist/config/types.d.ts.map +1 -0
  21. package/dist/controller/controller.d.ts +5 -0
  22. package/dist/controller/controller.d.ts.map +1 -1
  23. package/dist/core/application.d.ts.map +1 -1
  24. package/dist/core/context.d.ts.map +1 -1
  25. package/dist/di/module-registry.d.ts +14 -2
  26. package/dist/di/module-registry.d.ts.map +1 -1
  27. package/dist/di/module.d.ts +12 -1
  28. package/dist/di/module.d.ts.map +1 -1
  29. package/dist/extensions/index.d.ts +1 -0
  30. package/dist/extensions/index.d.ts.map +1 -1
  31. package/dist/extensions/logger-module.d.ts +30 -0
  32. package/dist/extensions/logger-module.d.ts.map +1 -0
  33. package/dist/health/controller.d.ts +27 -0
  34. package/dist/health/controller.d.ts.map +1 -0
  35. package/dist/health/health-module.d.ts +9 -0
  36. package/dist/health/health-module.d.ts.map +1 -0
  37. package/dist/health/index.d.ts +4 -0
  38. package/dist/health/index.d.ts.map +1 -0
  39. package/dist/health/types.d.ts +22 -0
  40. package/dist/health/types.d.ts.map +1 -0
  41. package/dist/index.d.ts +6 -1
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +1388 -13
  44. package/dist/router/registry.d.ts +4 -1
  45. package/dist/router/registry.d.ts.map +1 -1
  46. package/dist/router/route.d.ts +9 -1
  47. package/dist/router/route.d.ts.map +1 -1
  48. package/dist/router/router.d.ts +14 -2
  49. package/dist/router/router.d.ts.map +1 -1
  50. package/dist/security/access-decision-manager.d.ts +14 -0
  51. package/dist/security/access-decision-manager.d.ts.map +1 -0
  52. package/dist/security/authentication-manager.d.ts +22 -0
  53. package/dist/security/authentication-manager.d.ts.map +1 -0
  54. package/dist/security/context.d.ts +51 -0
  55. package/dist/security/context.d.ts.map +1 -0
  56. package/dist/security/filter.d.ts +27 -0
  57. package/dist/security/filter.d.ts.map +1 -0
  58. package/dist/security/index.d.ts +8 -0
  59. package/dist/security/index.d.ts.map +1 -0
  60. package/dist/security/providers/index.d.ts +3 -0
  61. package/dist/security/providers/index.d.ts.map +1 -0
  62. package/dist/security/providers/jwt-provider.d.ts +19 -0
  63. package/dist/security/providers/jwt-provider.d.ts.map +1 -0
  64. package/dist/security/providers/oauth2-provider.d.ts +19 -0
  65. package/dist/security/providers/oauth2-provider.d.ts.map +1 -0
  66. package/dist/security/security-module.d.ts +50 -0
  67. package/dist/security/security-module.d.ts.map +1 -0
  68. package/dist/security/types.d.ts +152 -0
  69. package/dist/security/types.d.ts.map +1 -0
  70. package/dist/swagger/decorators.d.ts +56 -0
  71. package/dist/swagger/decorators.d.ts.map +1 -0
  72. package/dist/swagger/generator.d.ts +17 -0
  73. package/dist/swagger/generator.d.ts.map +1 -0
  74. package/dist/swagger/index.d.ts +7 -0
  75. package/dist/swagger/index.d.ts.map +1 -0
  76. package/dist/swagger/swagger-extension.d.ts +25 -0
  77. package/dist/swagger/swagger-extension.d.ts.map +1 -0
  78. package/dist/swagger/swagger-module.d.ts +37 -0
  79. package/dist/swagger/swagger-module.d.ts.map +1 -0
  80. package/dist/swagger/types.d.ts +176 -0
  81. package/dist/swagger/types.d.ts.map +1 -0
  82. package/dist/swagger/ui.d.ts +13 -0
  83. package/dist/swagger/ui.d.ts.map +1 -0
  84. package/package.json +1 -1
  85. package/readme.md +14 -10
@@ -0,0 +1,37 @@
1
+ import type { SwaggerOptions } from './types';
2
+ /**
3
+ * Swagger 模块配置
4
+ */
5
+ export interface SwaggerModuleOptions extends SwaggerOptions {
6
+ /**
7
+ * Swagger UI 路径
8
+ * @default '/swagger'
9
+ */
10
+ uiPath?: string;
11
+ /**
12
+ * Swagger JSON 路径
13
+ * @default '/swagger.json'
14
+ */
15
+ jsonPath?: string;
16
+ /**
17
+ * Swagger UI 标题
18
+ */
19
+ uiTitle?: string;
20
+ /**
21
+ * 是否启用 Swagger UI
22
+ * @default true
23
+ */
24
+ enableUI?: boolean;
25
+ }
26
+ /**
27
+ * Swagger 模块
28
+ * 提供 API 文档生成和 Swagger UI
29
+ */
30
+ export declare class SwaggerModule {
31
+ /**
32
+ * 创建 Swagger 模块
33
+ * @param options - 模块配置
34
+ */
35
+ static forRoot(options: SwaggerModuleOptions): typeof SwaggerModule;
36
+ }
37
+ //# sourceMappingURL=swagger-module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"swagger-module.d.ts","sourceRoot":"","sources":["../../src/swagger/swagger-module.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,qBAQa,aAAa;IACxB;;;OAGG;WACW,OAAO,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,aAAa;CAkC3E"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * Swagger/OpenAPI 类型定义
3
+ */
4
+ /**
5
+ * Swagger 信息配置
6
+ */
7
+ export interface SwaggerInfo {
8
+ title: string;
9
+ version: string;
10
+ description?: string;
11
+ contact?: {
12
+ name?: string;
13
+ email?: string;
14
+ url?: string;
15
+ };
16
+ license?: {
17
+ name: string;
18
+ url?: string;
19
+ };
20
+ }
21
+ /**
22
+ * Swagger 配置
23
+ */
24
+ export interface SwaggerOptions {
25
+ info: SwaggerInfo;
26
+ servers?: Array<{
27
+ url: string;
28
+ description?: string;
29
+ }>;
30
+ basePath?: string;
31
+ tags?: Array<{
32
+ name: string;
33
+ description?: string;
34
+ }>;
35
+ }
36
+ /**
37
+ * API 操作元数据
38
+ */
39
+ export interface ApiOperationMetadata {
40
+ summary?: string;
41
+ description?: string;
42
+ operationId?: string;
43
+ tags?: string[];
44
+ deprecated?: boolean;
45
+ }
46
+ /**
47
+ * API 参数元数据
48
+ */
49
+ export interface ApiParamMetadata {
50
+ name: string;
51
+ description?: string;
52
+ required?: boolean;
53
+ schema?: {
54
+ type?: string;
55
+ format?: string;
56
+ enum?: unknown[];
57
+ default?: unknown;
58
+ };
59
+ in: 'query' | 'path' | 'header' | 'cookie';
60
+ }
61
+ /**
62
+ * API 请求体元数据
63
+ */
64
+ export interface ApiBodyMetadata {
65
+ description?: string;
66
+ required?: boolean;
67
+ schema?: {
68
+ type?: string;
69
+ properties?: Record<string, unknown>;
70
+ required?: string[];
71
+ };
72
+ examples?: Record<string, unknown>;
73
+ }
74
+ /**
75
+ * API 响应元数据
76
+ */
77
+ export interface ApiResponseMetadata {
78
+ status: number;
79
+ description?: string;
80
+ schema?: {
81
+ type?: string;
82
+ properties?: Record<string, unknown>;
83
+ };
84
+ examples?: Record<string, unknown>;
85
+ }
86
+ /**
87
+ * API 标签元数据
88
+ */
89
+ export interface ApiTagMetadata {
90
+ name: string;
91
+ description?: string;
92
+ }
93
+ /**
94
+ * Swagger 路径项
95
+ */
96
+ export interface SwaggerPathItem {
97
+ summary?: string;
98
+ description?: string;
99
+ operationId?: string;
100
+ tags?: string[];
101
+ parameters?: Array<{
102
+ name: string;
103
+ in: 'query' | 'path' | 'header' | 'cookie';
104
+ description?: string;
105
+ required?: boolean;
106
+ schema?: {
107
+ type?: string;
108
+ format?: string;
109
+ enum?: unknown[];
110
+ default?: unknown;
111
+ };
112
+ }>;
113
+ requestBody?: {
114
+ description?: string;
115
+ required?: boolean;
116
+ content?: {
117
+ 'application/json'?: {
118
+ schema?: {
119
+ type?: string;
120
+ properties?: Record<string, unknown>;
121
+ required?: string[];
122
+ };
123
+ examples?: Record<string, unknown>;
124
+ };
125
+ };
126
+ };
127
+ responses?: Record<string, {
128
+ description?: string;
129
+ content?: {
130
+ 'application/json'?: {
131
+ schema?: {
132
+ type?: string;
133
+ properties?: Record<string, unknown>;
134
+ };
135
+ examples?: Record<string, unknown>;
136
+ };
137
+ };
138
+ }>;
139
+ deprecated?: boolean;
140
+ }
141
+ /**
142
+ * Swagger 文档结构
143
+ */
144
+ export interface SwaggerDocument {
145
+ openapi: string;
146
+ info: {
147
+ title: string;
148
+ version: string;
149
+ description?: string;
150
+ contact?: {
151
+ name?: string;
152
+ email?: string;
153
+ url?: string;
154
+ };
155
+ license?: {
156
+ name: string;
157
+ url?: string;
158
+ };
159
+ };
160
+ servers?: Array<{
161
+ url: string;
162
+ description?: string;
163
+ }>;
164
+ tags?: Array<{
165
+ name: string;
166
+ description?: string;
167
+ }>;
168
+ paths: Record<string, {
169
+ get?: SwaggerPathItem;
170
+ post?: SwaggerPathItem;
171
+ put?: SwaggerPathItem;
172
+ delete?: SwaggerPathItem;
173
+ patch?: SwaggerPathItem;
174
+ }>;
175
+ }
176
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/swagger/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { Middleware } from '../middleware';
2
+ import { SwaggerExtension } from './swagger-extension';
3
+ /**
4
+ * 创建 Swagger UI 中间件
5
+ * @param extension - Swagger 扩展实例
6
+ * @param options - 配置选项
7
+ */
8
+ export declare function createSwaggerUIMiddleware(extension: SwaggerExtension, options?: {
9
+ uiPath?: string;
10
+ jsonPath?: string;
11
+ title?: string;
12
+ }): Middleware;
13
+ //# sourceMappingURL=ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/swagger/ui.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAgB,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAmDvD;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,SAAS,EAAE,gBAAgB,EAC3B,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CACX,GACL,UAAU,CA+BZ"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dangao/bun-server",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
package/readme.md CHANGED
@@ -31,7 +31,7 @@
31
31
  可扩展**:松耦合的模块系统、扩展系统与日志框架,既可以快速起步,也能按需裁剪。
32
32
  - **Monorepo 友好**:原生支持 Bun workspaces,使用 `workspace:*`
33
33
  协议管理内部依赖,配合 catalog 统一版本,完美适配多包协作场景。
34
- - **完整测试矩阵**:内置单元/集成测试、压力与基准测试用例,便于持续优化。
34
+ - **完整测试矩阵**:内置单元/集成测试、压力与基准测试用例,Security 和 Swagger 模块测试覆盖完整,便于持续优化。
35
35
 
36
36
  ## 核心特性
37
37
 
@@ -43,6 +43,8 @@
43
43
  **中间件管道**:支持全局/控制器/方法级中间件,内置日志、错误处理、CORS、文件上传、静态资源等。
44
44
  - ✅ **输入校验**:声明式验证装饰器,直连 `ValidationError` 与异常过滤器。
45
45
  - 📡 **WebSocket**:`@WebSocketGateway`、`@OnMessage` 等装饰器级开发体验。
46
+ - 📖 **Swagger/OpenAPI**:内置 Swagger 插件,支持 `@ApiTags`、`@ApiOperation`、`@ApiParam`、`@ApiBody`、`@ApiResponse` 等装饰器,自动生成 API 文档和 Swagger UI。
47
+ - 🔐 **安全认证**:内置 SecurityModule,支持 JWT 和 OAuth2 认证,提供 `@Auth()` 装饰器进行角色权限控制。
46
48
  - 📚 **示例与文档**:多语言文档、基础/完整示例、基准脚本与最佳实践。
47
49
 
48
50
  ## 架构总览
@@ -126,11 +128,12 @@ bun --cwd=benchmark run bench:di # 仅运行 DI 基准
126
128
 
127
129
  ## 示例与扩展
128
130
 
129
- - `examples/basic-app.ts`:最小可运行示例,覆盖 DI + Logger + Middleware。
130
- - `examples/full-app.ts`:包含验证、文件上传、WebSocket、复杂控制器。
131
- - `examples/multi-module-app.ts`:多模块示例,展示模块间的依赖关系和服务共享。
132
- - `packages/@dangao/bun-server/src/extensions/`:官方扩展(如
133
- LoggerExtension),可用于注册第三方能力。
131
+ - `examples/basic-app.ts`:最小可运行示例,覆盖 DI + Logger + Middleware + Swagger + ConfigModule
132
+ - `examples/full-app.ts`:包含验证、文件上传、WebSocket、复杂控制器,使用 ConfigModule 管理端口与中间件配置。
133
+ - `examples/multi-module-app.ts`:多模块示例,展示模块间的依赖关系和服务共享,使用 ConfigModule 统一管理应用配置。
134
+ - `examples/auth-app.ts`:完整的认证演示,包含 JWT + OAuth2 认证流程、前端演示页面,并通过 ConfigModule 管理应用标题和端口。
135
+ - `packages/bun-server/src/extensions/`:官方扩展(如
136
+ LoggerExtension、SwaggerExtension),可用于注册第三方能力。
134
137
 
135
138
  ## 性能与 Benchmark
136
139
 
@@ -153,10 +156,11 @@ bun benchmark/di.bench.ts
153
156
  ## 文档与多语言支持
154
157
 
155
158
  - 中文默认文档位于 `docs/`
156
- - `docs/api.md`
157
- - `docs/guide.md`
158
- - `docs/best-practices.md`
159
- - `docs/migration.md`
159
+ - `docs/api.md` - API 参考文档
160
+ - `docs/guide.md` - 使用指南
161
+ - `docs/extensions.md` - 扩展系统说明(中间件、扩展、模块等)
162
+ - `docs/best-practices.md` - 最佳实践
163
+ - `docs/migration.md` - 迁移指南
160
164
  - 英文草稿位于
161
165
  `docs/en/`,与中文文件结构一致;如果缺失内容,请优先参考中文版本。
162
166