@dangao/bun-server 0.1.0

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 (120) hide show
  1. package/dist/controller/controller.d.ts +63 -0
  2. package/dist/controller/controller.d.ts.map +1 -0
  3. package/dist/controller/decorators.d.ts +46 -0
  4. package/dist/controller/decorators.d.ts.map +1 -0
  5. package/dist/controller/index.d.ts +7 -0
  6. package/dist/controller/index.d.ts.map +1 -0
  7. package/dist/controller/metadata.d.ts +17 -0
  8. package/dist/controller/metadata.d.ts.map +1 -0
  9. package/dist/controller/param-binder.d.ts +51 -0
  10. package/dist/controller/param-binder.d.ts.map +1 -0
  11. package/dist/core/application.d.ts +80 -0
  12. package/dist/core/application.d.ts.map +1 -0
  13. package/dist/core/context.d.ts +117 -0
  14. package/dist/core/context.d.ts.map +1 -0
  15. package/dist/core/index.d.ts +4 -0
  16. package/dist/core/index.d.ts.map +1 -0
  17. package/dist/core/server.d.ts +53 -0
  18. package/dist/core/server.d.ts.map +1 -0
  19. package/dist/core/types.d.ts +2 -0
  20. package/dist/core/types.d.ts.map +1 -0
  21. package/dist/di/container.d.ts +80 -0
  22. package/dist/di/container.d.ts.map +1 -0
  23. package/dist/di/decorators.d.ts +43 -0
  24. package/dist/di/decorators.d.ts.map +1 -0
  25. package/dist/di/index.d.ts +4 -0
  26. package/dist/di/index.d.ts.map +1 -0
  27. package/dist/di/module-registry.d.ts +27 -0
  28. package/dist/di/module-registry.d.ts.map +1 -0
  29. package/dist/di/module.d.ts +30 -0
  30. package/dist/di/module.d.ts.map +1 -0
  31. package/dist/di/types.d.ts +57 -0
  32. package/dist/di/types.d.ts.map +1 -0
  33. package/dist/error/filter.d.ts +18 -0
  34. package/dist/error/filter.d.ts.map +1 -0
  35. package/dist/error/handler.d.ts +6 -0
  36. package/dist/error/handler.d.ts.map +1 -0
  37. package/dist/error/http-exception.d.ts +24 -0
  38. package/dist/error/http-exception.d.ts.map +1 -0
  39. package/dist/error/index.d.ts +5 -0
  40. package/dist/error/index.d.ts.map +1 -0
  41. package/dist/extensions/index.d.ts +5 -0
  42. package/dist/extensions/index.d.ts.map +1 -0
  43. package/dist/extensions/logger-extension.d.ts +13 -0
  44. package/dist/extensions/logger-extension.d.ts.map +1 -0
  45. package/dist/extensions/types.d.ts +12 -0
  46. package/dist/extensions/types.d.ts.map +1 -0
  47. package/dist/files/index.d.ts +5 -0
  48. package/dist/files/index.d.ts.map +1 -0
  49. package/dist/files/static-middleware.d.ts +8 -0
  50. package/dist/files/static-middleware.d.ts.map +1 -0
  51. package/dist/files/storage.d.ts +10 -0
  52. package/dist/files/storage.d.ts.map +1 -0
  53. package/dist/files/types.d.ts +27 -0
  54. package/dist/files/types.d.ts.map +1 -0
  55. package/dist/files/upload-middleware.d.ts +7 -0
  56. package/dist/files/upload-middleware.d.ts.map +1 -0
  57. package/dist/index.d.ts +23 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +2118 -0
  60. package/dist/middleware/builtin/cors.d.ts +14 -0
  61. package/dist/middleware/builtin/cors.d.ts.map +1 -0
  62. package/dist/middleware/builtin/error-handler.d.ts +23 -0
  63. package/dist/middleware/builtin/error-handler.d.ts.map +1 -0
  64. package/dist/middleware/builtin/file-upload.d.ts +9 -0
  65. package/dist/middleware/builtin/file-upload.d.ts.map +1 -0
  66. package/dist/middleware/builtin/index.d.ts +6 -0
  67. package/dist/middleware/builtin/index.d.ts.map +1 -0
  68. package/dist/middleware/builtin/logger.d.ts +26 -0
  69. package/dist/middleware/builtin/logger.d.ts.map +1 -0
  70. package/dist/middleware/builtin/static-file.d.ts +14 -0
  71. package/dist/middleware/builtin/static-file.d.ts.map +1 -0
  72. package/dist/middleware/decorators.d.ts +22 -0
  73. package/dist/middleware/decorators.d.ts.map +1 -0
  74. package/dist/middleware/index.d.ts +5 -0
  75. package/dist/middleware/index.d.ts.map +1 -0
  76. package/dist/middleware/middleware.d.ts +10 -0
  77. package/dist/middleware/middleware.d.ts.map +1 -0
  78. package/dist/middleware/pipeline.d.ts +38 -0
  79. package/dist/middleware/pipeline.d.ts.map +1 -0
  80. package/dist/request/body-parser.d.ts +37 -0
  81. package/dist/request/body-parser.d.ts.map +1 -0
  82. package/dist/request/file-handler.d.ts +13 -0
  83. package/dist/request/file-handler.d.ts.map +1 -0
  84. package/dist/request/index.d.ts +5 -0
  85. package/dist/request/index.d.ts.map +1 -0
  86. package/dist/request/request.d.ts +67 -0
  87. package/dist/request/request.d.ts.map +1 -0
  88. package/dist/request/response.d.ts +65 -0
  89. package/dist/request/response.d.ts.map +1 -0
  90. package/dist/router/decorators.d.ts +45 -0
  91. package/dist/router/decorators.d.ts.map +1 -0
  92. package/dist/router/index.d.ts +6 -0
  93. package/dist/router/index.d.ts.map +1 -0
  94. package/dist/router/registry.d.ts +54 -0
  95. package/dist/router/registry.d.ts.map +1 -0
  96. package/dist/router/route.d.ts +57 -0
  97. package/dist/router/route.d.ts.map +1 -0
  98. package/dist/router/router.d.ts +76 -0
  99. package/dist/router/router.d.ts.map +1 -0
  100. package/dist/router/types.d.ts +23 -0
  101. package/dist/router/types.d.ts.map +1 -0
  102. package/dist/testing/harness.d.ts +26 -0
  103. package/dist/testing/harness.d.ts.map +1 -0
  104. package/dist/validation/decorators.d.ts +20 -0
  105. package/dist/validation/decorators.d.ts.map +1 -0
  106. package/dist/validation/errors.d.ts +19 -0
  107. package/dist/validation/errors.d.ts.map +1 -0
  108. package/dist/validation/index.d.ts +5 -0
  109. package/dist/validation/index.d.ts.map +1 -0
  110. package/dist/validation/types.d.ts +29 -0
  111. package/dist/validation/types.d.ts.map +1 -0
  112. package/dist/validation/validator.d.ts +8 -0
  113. package/dist/validation/validator.d.ts.map +1 -0
  114. package/dist/websocket/decorators.d.ts +16 -0
  115. package/dist/websocket/decorators.d.ts.map +1 -0
  116. package/dist/websocket/index.d.ts +4 -0
  117. package/dist/websocket/index.d.ts.map +1 -0
  118. package/dist/websocket/registry.d.ts +22 -0
  119. package/dist/websocket/registry.d.ts.map +1 -0
  120. package/package.json +56 -0
@@ -0,0 +1,63 @@
1
+ import 'reflect-metadata';
2
+ import { Container } from '../di/container';
3
+ import type { Constructor } from '@/core/types';
4
+ /**
5
+ * 控制器元数据键
6
+ */
7
+ export declare const CONTROLLER_METADATA_KEY: unique symbol;
8
+ /**
9
+ * 控制器元数据
10
+ */
11
+ export interface ControllerMetadata {
12
+ /**
13
+ * 基础路径
14
+ */
15
+ path: string;
16
+ /**
17
+ * 控制器类
18
+ */
19
+ target: new (...args: unknown[]) => unknown;
20
+ }
21
+ /**
22
+ * Controller 装饰器
23
+ * 标记类为控制器,并指定基础路径
24
+ * @param path - 控制器基础路径
25
+ */
26
+ export declare function Controller(path?: string): (target: Constructor<unknown>) => void;
27
+ /**
28
+ * 控制器注册表
29
+ * 管理所有控制器及其路由
30
+ */
31
+ export declare class ControllerRegistry {
32
+ private static instance;
33
+ private readonly container;
34
+ private readonly controllers;
35
+ private readonly controllerContainers;
36
+ private constructor();
37
+ /**
38
+ * 获取单例实例
39
+ */
40
+ static getInstance(): ControllerRegistry;
41
+ /**
42
+ * 注册控制器
43
+ * @param controllerClass - 控制器类
44
+ */
45
+ register(controllerClass: Constructor<unknown>, container?: Container): void;
46
+ /**
47
+ * 组合路径
48
+ * @param basePath - 基础路径
49
+ * @param methodPath - 方法路径
50
+ * @returns 组合后的路径
51
+ */
52
+ private combinePaths;
53
+ /**
54
+ * 获取 DI 容器
55
+ * @returns DI 容器
56
+ */
57
+ getContainer(): Container;
58
+ /**
59
+ * 清除所有控制器注册和容器状态(主要用于测试)
60
+ */
61
+ clear(): void;
62
+ }
63
+ //# sourceMappingURL=controller.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/controller/controller.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAS5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C;;GAEG;AACH,eAAO,MAAM,uBAAuB,eAAuB,CAAC;AAE5D;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IAEb;;OAEG;IACH,MAAM,EAAE,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC;CAC7C;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,GAAE,MAAW,IACzB,QAAQ,WAAW,CAAC,OAAO,CAAC,UAI9C;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqB;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2D;IACvF,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA8C;IAEnF,OAAO;IAIP;;OAEG;WACW,WAAW,IAAI,kBAAkB;IAO/C;;;OAGG;IACI,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI;IA4HnF;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IAepB;;;OAGG;IACI,YAAY,IAAI,SAAS;IAIhC;;OAEG;IACI,KAAK,IAAI,IAAI;CAKrB"}
@@ -0,0 +1,46 @@
1
+ import 'reflect-metadata';
2
+ /**
3
+ * 参数类型枚举
4
+ */
5
+ export declare enum ParamType {
6
+ BODY = "body",
7
+ QUERY = "query",
8
+ PARAM = "param",
9
+ HEADER = "header"
10
+ }
11
+ /**
12
+ * 参数元数据
13
+ */
14
+ export interface ParamMetadata {
15
+ type: ParamType;
16
+ key?: string;
17
+ index: number;
18
+ }
19
+ /**
20
+ * Body 参数装饰器
21
+ * @param key - 参数键(可选,用于提取对象中的特定字段)
22
+ */
23
+ export declare function Body(key?: string): (target: any, propertyKey: string | symbol | undefined, parameterIndex: number) => void;
24
+ /**
25
+ * Query 参数装饰器
26
+ * @param key - 查询参数键
27
+ */
28
+ export declare function Query(key: string): (target: any, propertyKey: string | symbol | undefined, parameterIndex: number) => void;
29
+ /**
30
+ * Param 参数装饰器(路径参数)
31
+ * @param key - 路径参数键
32
+ */
33
+ export declare function Param(key: string): (target: any, propertyKey: string | symbol | undefined, parameterIndex: number) => void;
34
+ /**
35
+ * Header 参数装饰器
36
+ * @param key - 请求头键
37
+ */
38
+ export declare function Header(key: string): (target: any, propertyKey: string | symbol | undefined, parameterIndex: number) => void;
39
+ /**
40
+ * 获取参数元数据
41
+ * @param target - 目标对象
42
+ * @param propertyKey - 属性键
43
+ * @returns 参数元数据列表
44
+ */
45
+ export declare function getParamMetadata(target: any, propertyKey: string): ParamMetadata[];
46
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/controller/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAO1B;;GAEG;AACH,oBAAY,SAAS;IACnB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAiBD;;;GAGG;AACH,wBAAgB,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,YAZN,GAAG,eAAe,MAAM,GAAG,MAAM,GAAG,SAAS,kBAAkB,MAAM,UAc/F;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,YApBN,GAAG,eAAe,MAAM,GAAG,MAAM,GAAG,SAAS,kBAAkB,MAAM,UAsB/F;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,YA5BN,GAAG,eAAe,MAAM,GAAG,MAAM,GAAG,SAAS,kBAAkB,MAAM,UA8B/F;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,YApCP,GAAG,eAAe,MAAM,GAAG,MAAM,GAAG,SAAS,kBAAkB,MAAM,UAsC/F;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,GAAG,aAAa,EAAE,CAElF"}
@@ -0,0 +1,7 @@
1
+ export { Body, Query, Param, Header, getParamMetadata, ParamType } from './decorators';
2
+ export type { ParamMetadata } from './decorators';
3
+ export { ParamBinder } from './param-binder';
4
+ export { Controller, ControllerRegistry } from './controller';
5
+ export type { ControllerMetadata } from './controller';
6
+ export { getControllerMetadata, getRouteMetadata } from './metadata';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/controller/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACvF,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAC9D,YAAY,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,17 @@
1
+ import 'reflect-metadata';
2
+ import type { ControllerMetadata } from './controller';
3
+ import type { RouteMetadata } from '../router/decorators';
4
+ import type { Constructor } from '@/core/types';
5
+ /**
6
+ * 获取控制器元数据
7
+ * @param target - 控制器类
8
+ * @returns 控制器元数据
9
+ */
10
+ export declare function getControllerMetadata(target: Constructor<unknown>): ControllerMetadata | undefined;
11
+ /**
12
+ * 获取路由元数据
13
+ * @param target - 控制器原型
14
+ * @returns 路由元数据列表
15
+ */
16
+ export declare function getRouteMetadata(target: unknown): RouteMetadata[];
17
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/controller/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAE/C;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAC3B,kBAAkB,GAAG,SAAS,CAEhC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,OAAO,GAAG,aAAa,EAAE,CAEjE"}
@@ -0,0 +1,51 @@
1
+ import type { Context } from '../core/context';
2
+ /**
3
+ * 参数绑定器
4
+ * 根据装饰器元数据绑定参数
5
+ */
6
+ export declare class ParamBinder {
7
+ /**
8
+ * 绑定参数
9
+ * @param target - 目标对象
10
+ * @param propertyKey - 属性键
11
+ * @param context - 请求上下文
12
+ * @returns 参数数组
13
+ */
14
+ static bind(target: any, propertyKey: string, context: Context): Promise<unknown[]>;
15
+ /**
16
+ * 获取参数值
17
+ * @param meta - 参数元数据
18
+ * @param context - 请求上下文
19
+ * @returns 参数值
20
+ */
21
+ private static getValue;
22
+ /**
23
+ * 获取 Body 值
24
+ * @param key - 键(可选)
25
+ * @param context - 请求上下文
26
+ * @returns Body 值
27
+ */
28
+ private static getBodyValue;
29
+ /**
30
+ * 获取 Query 值
31
+ * @param key - 键
32
+ * @param context - 请求上下文
33
+ * @returns Query 值
34
+ */
35
+ private static getQueryValue;
36
+ /**
37
+ * 获取 Param 值
38
+ * @param key - 键
39
+ * @param context - 请求上下文
40
+ * @returns Param 值
41
+ */
42
+ private static getParamValue;
43
+ /**
44
+ * 获取 Header 值
45
+ * @param key - 键
46
+ * @param context - 请求上下文
47
+ * @returns Header 值
48
+ */
49
+ private static getHeaderValue;
50
+ }
51
+ //# sourceMappingURL=param-binder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"param-binder.d.ts","sourceRoot":"","sources":["../../src/controller/param-binder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAG/C;;;GAGG;AACH,qBAAa,WAAW;IACtB;;;;;;OAMG;WACiB,IAAI,CACtB,MAAM,EAAE,GAAG,EACX,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,OAAO,EAAE,CAAC;IAyBrB;;;;;OAKG;mBACkB,QAAQ;IA2B7B;;;;;OAKG;mBACkB,YAAY;IAWjC;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAI5B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa;IAI5B;;;;;OAKG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;CAG9B"}
@@ -0,0 +1,80 @@
1
+ import { BunServer } from './server';
2
+ import type { Middleware } from '../middleware';
3
+ import type { ApplicationExtension } from '../extensions/types';
4
+ import type { ModuleClass } from '../di/module';
5
+ import type { Constructor } from './types';
6
+ /**
7
+ * 应用配置选项
8
+ */
9
+ export interface ApplicationOptions {
10
+ /**
11
+ * 端口号
12
+ */
13
+ port?: number;
14
+ /**
15
+ * 主机名
16
+ */
17
+ hostname?: string;
18
+ }
19
+ /**
20
+ * 应用主类
21
+ * 负责初始化和启动应用
22
+ */
23
+ export declare class Application {
24
+ private server?;
25
+ private readonly options;
26
+ private readonly middlewarePipeline;
27
+ private readonly websocketRegistry;
28
+ private readonly extensions;
29
+ constructor(options?: ApplicationOptions);
30
+ /**
31
+ * 注册全局中间件
32
+ * @param middleware - 中间件函数
33
+ */
34
+ use(middleware: Middleware): void;
35
+ /**
36
+ * 启动应用
37
+ */
38
+ listen(port?: number, hostname?: string): void;
39
+ /**
40
+ * 停止应用
41
+ */
42
+ stop(): void;
43
+ /**
44
+ * 处理请求
45
+ * @param context - 请求上下文
46
+ * @returns 响应对象
47
+ */
48
+ private handleRequest;
49
+ /**
50
+ * 注册控制器
51
+ * @param controllerClass - 控制器类
52
+ */
53
+ registerController(controllerClass: Constructor<unknown>): void;
54
+ /**
55
+ * 注册模块
56
+ * @param moduleClass - 模块类
57
+ */
58
+ registerModule(moduleClass: ModuleClass): void;
59
+ /**
60
+ * 注册 WebSocket 网关
61
+ * @param gatewayClass - WebSocket 网关类
62
+ */
63
+ registerWebSocketGateway(gatewayClass: Constructor<unknown>): void;
64
+ /**
65
+ * 注册扩展
66
+ * @param extension - 应用扩展
67
+ */
68
+ registerExtension(extension: ApplicationExtension): void;
69
+ /**
70
+ * 获取服务器实例
71
+ * @returns Bun Server 实例
72
+ */
73
+ getServer(): BunServer | undefined;
74
+ /**
75
+ * 获取 DI 容器(用于注册服务)
76
+ * @returns DI 容器
77
+ */
78
+ getContainer(): import("..").Container;
79
+ }
80
+ //# sourceMappingURL=application.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application.d.ts","sourceRoot":"","sources":["../../src/core/application.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAsB,MAAM,UAAU,CAAC;AAKzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAE1C;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,CAAY;IAC3B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;IAC7C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAqB;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA2B;IAC7D,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;gBAEtC,OAAO,GAAE,kBAAuB;IAanD;;;OAGG;IACI,GAAG,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI;IAIxC;;OAEG;IACI,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAgBrD;;OAEG;IACI,IAAI,IAAI,IAAI;IAInB;;;;OAIG;YACW,aAAa;IAsB3B;;;OAGG;IACI,kBAAkB,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAKtE;;;OAGG;IACI,cAAc,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI;IAKrD;;;OAGG;IACI,wBAAwB,CAAC,YAAY,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,IAAI;IAIzE;;;OAGG;IACI,iBAAiB,CAAC,SAAS,EAAE,oBAAoB,GAAG,IAAI;IAK/D;;;OAGG;IACI,SAAS,IAAI,SAAS,GAAG,SAAS;IAIzC;;;OAGG;IACI,YAAY;CAGpB"}
@@ -0,0 +1,117 @@
1
+ import type { UploadedFileInfo } from '../files';
2
+ /**
3
+ * 请求上下文
4
+ * 封装 Request 和 Response,提供便捷的访问方法
5
+ */
6
+ export declare class Context {
7
+ /**
8
+ * 原始请求对象
9
+ */
10
+ readonly request: Request;
11
+ /**
12
+ * 响应对象(可选,由框架创建)
13
+ */
14
+ response?: Response;
15
+ /**
16
+ * 请求 URL
17
+ */
18
+ readonly url: URL;
19
+ /**
20
+ * 请求方法
21
+ */
22
+ readonly method: string;
23
+ /**
24
+ * 请求路径
25
+ */
26
+ readonly path: string;
27
+ /**
28
+ * 查询参数
29
+ */
30
+ readonly query: URLSearchParams;
31
+ /**
32
+ * 路径参数(由路由匹配后填充)
33
+ */
34
+ params: Record<string, string>;
35
+ /**
36
+ * 请求头
37
+ */
38
+ readonly headers: Headers;
39
+ /**
40
+ * 响应头
41
+ */
42
+ responseHeaders: Headers;
43
+ /**
44
+ * 状态码
45
+ */
46
+ statusCode: number;
47
+ /**
48
+ * 上传文件信息
49
+ */
50
+ files: UploadedFileInfo[];
51
+ /**
52
+ * 请求体(解析后的)
53
+ */
54
+ private _body?;
55
+ /**
56
+ * 是否已解析请求体
57
+ */
58
+ private _bodyParsed;
59
+ constructor(request: Request);
60
+ /**
61
+ * 获取请求体(自动解析)
62
+ * @returns 解析后的请求体
63
+ */
64
+ getBody(): Promise<unknown>;
65
+ /**
66
+ * 获取请求体(已解析的,如果未解析则返回 undefined)
67
+ * @returns 请求体或 undefined
68
+ */
69
+ get body(): unknown;
70
+ /**
71
+ * 设置请求体
72
+ * @param body - 请求体
73
+ */
74
+ set body(body: unknown);
75
+ /**
76
+ * 获取查询参数
77
+ * @param key - 参数名
78
+ * @returns 参数值
79
+ */
80
+ getQuery(key: string): string | null;
81
+ /**
82
+ * 获取所有查询参数
83
+ * @returns 查询参数对象
84
+ */
85
+ getQueryAll(): Record<string, string>;
86
+ /**
87
+ * 获取路径参数
88
+ * @param key - 参数名
89
+ * @returns 参数值
90
+ */
91
+ getParam(key: string): string | undefined;
92
+ /**
93
+ * 获取请求头
94
+ * @param key - 头名称
95
+ * @returns 头值
96
+ */
97
+ getHeader(key: string): string | null;
98
+ /**
99
+ * 设置响应头
100
+ * @param key - 头名称
101
+ * @param value - 头值
102
+ */
103
+ setHeader(key: string, value: string): void;
104
+ /**
105
+ * 设置状态码
106
+ * @param code - HTTP 状态码
107
+ */
108
+ setStatus(code: number): void;
109
+ /**
110
+ * 创建响应
111
+ * @param body - 响应体
112
+ * @param init - 响应初始化选项
113
+ * @returns Response 对象
114
+ */
115
+ createResponse(body?: unknown, init?: ResponseInit): Response;
116
+ }
117
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +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;AAGjD;;;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,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;CAsBrE"}
@@ -0,0 +1,4 @@
1
+ export { Application, type ApplicationOptions } from './application';
2
+ export { BunServer, type ServerOptions } from './server';
3
+ export { Context } from './context';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,KAAK,aAAa,EAAE,MAAM,UAAU,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,53 @@
1
+ import type { Server } from "bun";
2
+ import { Context } from "./context";
3
+ import type { WebSocketGatewayRegistry } from "../websocket/registry";
4
+ import type { WebSocketConnectionData } from "../websocket/registry";
5
+ /**
6
+ * 服务器配置选项
7
+ */
8
+ export interface ServerOptions {
9
+ /**
10
+ * 端口号
11
+ */
12
+ port?: number;
13
+ /**
14
+ * 主机名
15
+ */
16
+ hostname?: string;
17
+ /**
18
+ * 请求处理函数
19
+ */
20
+ fetch: (context: Context) => Response | Promise<Response>;
21
+ /**
22
+ * WebSocket 网关注册表
23
+ */
24
+ websocketRegistry?: WebSocketGatewayRegistry;
25
+ }
26
+ /**
27
+ * 服务器封装类
28
+ * 基于 Bun.serve() 构建
29
+ */
30
+ export declare class BunServer {
31
+ private server?;
32
+ private readonly options;
33
+ constructor(options: ServerOptions);
34
+ /**
35
+ * 启动服务器
36
+ */
37
+ start(): void;
38
+ /**
39
+ * 停止服务器
40
+ */
41
+ stop(): void;
42
+ /**
43
+ * 获取服务器实例
44
+ * @returns Bun Server 实例
45
+ */
46
+ getServer(): Server<WebSocketConnectionData> | undefined;
47
+ /**
48
+ * 检查服务器是否运行中
49
+ * @returns 是否运行中
50
+ */
51
+ isRunning(): boolean;
52
+ }
53
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/core/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,KAAK,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;OAEG;IACH,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE1D;;OAEG;IACH,iBAAiB,CAAC,EAAE,wBAAwB,CAAC;CAC9C;AAED;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAC,CAAkC;IACjD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;gBAErB,OAAO,EAAE,aAAa;IAIzC;;OAEG;IACI,KAAK,IAAI,IAAI;IAsDpB;;OAEG;IACI,IAAI,IAAI,IAAI;IASnB;;;OAGG;IACI,SAAS,IAAI,MAAM,CAAC,uBAAuB,CAAC,GAAG,SAAS;IAI/D;;;OAGG;IACI,SAAS,IAAI,OAAO;CAG5B"}
@@ -0,0 +1,2 @@
1
+ export type Constructor<T> = new (...args: any[]) => T;
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,WAAW,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC"}
@@ -0,0 +1,80 @@
1
+ import "reflect-metadata";
2
+ import { type ProviderConfig } from "./types";
3
+ import type { Constructor } from "@/core/types";
4
+ /**
5
+ * 依赖注入容器
6
+ * 管理依赖的注册、解析和生命周期
7
+ */
8
+ interface ContainerOptions {
9
+ parent?: Container;
10
+ }
11
+ export declare class Container {
12
+ private readonly parent?;
13
+ constructor(options?: ContainerOptions);
14
+ /**
15
+ * 注册的提供者
16
+ */
17
+ private readonly providers;
18
+ /**
19
+ * 单例实例缓存
20
+ */
21
+ private readonly singletons;
22
+ /**
23
+ * 类型到 token 的映射(用于接口注入)
24
+ */
25
+ private readonly typeToToken;
26
+ /**
27
+ * 依赖计划缓存,避免重复解析反射元数据
28
+ */
29
+ private readonly dependencyPlans;
30
+ /**
31
+ * 注册提供者
32
+ * @param token - 提供者标识符(类构造函数或 token)
33
+ * @param config - 提供者配置
34
+ */
35
+ register<T>(token: Constructor<T> | string | symbol, config?: ProviderConfig): void;
36
+ /**
37
+ * 注册单例
38
+ * @param token - 提供者标识符
39
+ * @param instance - 实例对象
40
+ */
41
+ registerInstance<T>(token: Constructor<T> | string | symbol, instance: T): void;
42
+ /**
43
+ * 解析依赖
44
+ * @param token - 提供者标识符
45
+ * @returns 解析后的实例
46
+ */
47
+ resolve<T>(token: Constructor<T> | string | symbol): T;
48
+ /**
49
+ * 解析依赖(内部方法,支持 string | symbol token)
50
+ * @param token - 提供者标识符
51
+ * @returns 解析后的实例
52
+ */
53
+ private resolveInternal;
54
+ /**
55
+ * 实例化类(自动注入依赖)
56
+ * @param constructor - 构造函数
57
+ * @returns 实例
58
+ */
59
+ private instantiate;
60
+ /**
61
+ * 获取 token 键
62
+ * @param token - 提供者标识符
63
+ * @returns token 键
64
+ */
65
+ private getTokenKey;
66
+ /**
67
+ * 清除所有注册(主要用于测试)
68
+ */
69
+ clear(): void;
70
+ /**
71
+ * 检查是否已注册
72
+ * @param token - 提供者标识符
73
+ * @returns 是否已注册
74
+ */
75
+ isRegistered(token: Constructor<unknown> | string | symbol): boolean;
76
+ private getDependencyPlan;
77
+ private resolveFromPlan;
78
+ }
79
+ export {};
80
+ //# sourceMappingURL=container.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.d.ts","sourceRoot":"","sources":["../../src/di/container.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,SAAS,CAAC;AAOjB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD;;;GAGG;AACH,UAAU,gBAAgB;IACxB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAY;gBAEjB,OAAO,GAAE,gBAAqB;IAGjD;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8C;IAExE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuC;IAElE;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,WAAW,CAGxB;IAEJ;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG5B;IAEJ;;;;OAIG;IACI,QAAQ,CAAC,CAAC,EACf,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,EACvC,MAAM,CAAC,EAAE,cAAc,GACtB,IAAI;IA6BP;;;;OAIG;IACI,gBAAgB,CAAC,CAAC,EACvB,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,EACvC,QAAQ,EAAE,CAAC,GACV,IAAI;IAQP;;;;OAIG;IACI,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,CAAC;IA4D7D;;;;OAIG;IACH,OAAO,CAAC,eAAe;IA2EvB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAenB;;;;OAIG;IACH,OAAO,CAAC,WAAW;IASnB;;OAEG;IACI,KAAK,IAAI,IAAI;IAOpB;;;;OAIG;IACI,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO;IAK3E,OAAO,CAAC,iBAAiB;IAuDzB,OAAO,CAAC,eAAe;CA6BxB"}
@@ -0,0 +1,43 @@
1
+ import "reflect-metadata";
2
+ import { type DependencyMetadata, Lifecycle } from "./types";
3
+ import type { Constructor } from "@/core/types";
4
+ /**
5
+ * Injectable 装饰器
6
+ * 标记类为可注入的
7
+ * @param config - 提供者配置
8
+ */
9
+ export declare function Injectable(config?: {
10
+ lifecycle?: Lifecycle;
11
+ }): (target: Constructor<unknown>) => void;
12
+ /**
13
+ * Inject 装饰器
14
+ * 标记需要注入的依赖
15
+ * @param token - 依赖标识符(可选,默认使用参数类型)
16
+ */
17
+ export declare function Inject(token?: Constructor<unknown> | string | symbol): ParameterDecorator;
18
+ /**
19
+ * 获取依赖元数据
20
+ * @param target - 目标类或原型
21
+ * @returns 依赖元数据数组
22
+ */
23
+ export declare function getDependencyMetadata(target: unknown): DependencyMetadata[];
24
+ /**
25
+ * 检查类是否可注入
26
+ * @param target - 目标类
27
+ * @returns 是否可注入
28
+ */
29
+ export declare function isInjectable(target: Constructor<unknown>): boolean;
30
+ /**
31
+ * 获取类的生命周期配置
32
+ * @param target - 目标类
33
+ * @returns 生命周期
34
+ */
35
+ export declare function getLifecycle(target: Constructor<unknown>): Lifecycle | undefined;
36
+ /**
37
+ * 获取类型引用(从 WeakMap)
38
+ * @param constructor - 构造函数
39
+ * @param parameterIndex - 参数索引
40
+ * @returns 类型引用
41
+ */
42
+ export declare function getTypeReference(constructor: Constructor<unknown>, parameterIndex: number): Constructor<unknown> | undefined;
43
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../src/di/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,kBAAkB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAgBhD;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,MAAM,CAAC,EAAE;IAAE,SAAS,CAAC,EAAE,SAAS,CAAA;CAAE,GACjC,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,IAAI,CASxC;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CACpB,KAAK,CAAC,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,MAAM,GAAG,MAAM,GAC7C,kBAAkB,CAoGpB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,OAAO,GAAG,kBAAkB,EAAE,CAuC3E;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAAG,OAAO,CAElE;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,GAC3B,SAAS,GAAG,SAAS,CAEvB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,WAAW,CAAC,OAAO,CAAC,EACjC,cAAc,EAAE,MAAM,GACrB,WAAW,CAAC,OAAO,CAAC,GAAG,SAAS,CAMlC"}
@@ -0,0 +1,4 @@
1
+ export { Container } from './container';
2
+ export { Injectable, Inject, getDependencyMetadata, isInjectable, getLifecycle } from './decorators';
3
+ export { Lifecycle, type ProviderConfig, type DependencyMetadata } from './types';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/di/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,qBAAqB,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACrG,OAAO,EAAE,SAAS,EAAE,KAAK,cAAc,EAAE,KAAK,kBAAkB,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { Container } from './container';
2
+ import { type ModuleClass, type ModuleMetadata } from './module';
3
+ interface ModuleRef {
4
+ moduleClass: ModuleClass;
5
+ metadata: Required<ModuleMetadata>;
6
+ container: Container;
7
+ controllersRegistered: boolean;
8
+ attachedParents: Set<Container>;
9
+ }
10
+ export declare class ModuleRegistry {
11
+ private static instance;
12
+ private readonly moduleRefs;
13
+ private readonly processing;
14
+ private rootContainer?;
15
+ static getInstance(): ModuleRegistry;
16
+ register(moduleClass: ModuleClass, parentContainer: Container): ModuleRef;
17
+ getModuleRef(moduleClass: ModuleClass): ModuleRef | undefined;
18
+ clear(): void;
19
+ private processModule;
20
+ private getOrCreateModuleRef;
21
+ private registerProviders;
22
+ private registerControllers;
23
+ private attachModuleToParent;
24
+ private registerExport;
25
+ }
26
+ export {};
27
+ //# sourceMappingURL=module-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-registry.d.ts","sourceRoot":"","sources":["../../src/di/module-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,cAAc,EAA2C,MAAM,UAAU,CAAC;AAG7H,UAAU,SAAS;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC,cAAc,CAAC,CAAC;IACnC,SAAS,EAAE,SAAS,CAAC;IACrB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,eAAe,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;CACjC;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAqC;IAChE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IACrD,OAAO,CAAC,aAAa,CAAC,CAAY;WAEpB,WAAW,IAAI,cAAc;IAOpC,QAAQ,CAAC,WAAW,EAAE,WAAW,EAAE,eAAe,EAAE,SAAS,GAAG,SAAS;IAOzE,YAAY,CAAC,WAAW,EAAE,WAAW,GAAG,SAAS,GAAG,SAAS;IAI7D,KAAK,IAAI,IAAI;IAMpB,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,oBAAoB;IAuB5B,OAAO,CAAC,iBAAiB;IAgCzB,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,cAAc;CAgBvB"}