veloce-ts 0.2.6 → 0.3.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.
Files changed (180) hide show
  1. package/CHANGELOG.md +501 -240
  2. package/README.md +141 -1
  3. package/dist/cjs/src/cli/index.js +125 -74
  4. package/dist/cjs/src/cli/index.js.map +4 -4
  5. package/dist/cjs/src/index.js +66 -25
  6. package/dist/cjs/src/index.js.map +112 -10
  7. package/dist/cjs/src/middleware/index.js +28 -2
  8. package/dist/cjs/src/middleware/index.js.map +79 -4
  9. package/dist/cjs/src/plugins/index.js +49 -23
  10. package/dist/cjs/src/plugins/index.js.map +74 -4
  11. package/dist/cjs/src/testing/index.js +30 -4
  12. package/dist/cjs/src/testing/index.js.map +80 -7
  13. package/dist/cjs/src/websocket/index.js +3 -3
  14. package/dist/cjs/src/websocket/index.js.map +1 -1
  15. package/dist/esm/src/cli/index.js +561 -22
  16. package/dist/esm/src/cli/index.js.map +8 -4
  17. package/dist/esm/src/docs/index.js +6 -6
  18. package/dist/esm/src/docs/index.js.map +10 -3
  19. package/dist/esm/src/errors/index.js +3 -2
  20. package/dist/esm/src/errors/index.js.map +7 -3
  21. package/dist/esm/src/graphql/index.js +82 -2
  22. package/dist/esm/src/graphql/index.js.map +18 -3
  23. package/dist/esm/src/index.js +165 -3
  24. package/dist/esm/src/index.js.map +202 -6
  25. package/dist/esm/src/middleware/index.js +28 -2
  26. package/dist/esm/src/middleware/index.js.map +81 -3
  27. package/dist/esm/src/plugins/index.js +113 -3
  28. package/dist/esm/src/plugins/index.js.map +131 -4
  29. package/dist/esm/src/testing/index.js +42 -2
  30. package/dist/esm/src/testing/index.js.map +97 -7
  31. package/dist/esm/src/types/index.js +2 -2
  32. package/dist/esm/src/types/index.js.map +10 -3
  33. package/dist/esm/src/validation/index.js +2 -2
  34. package/dist/esm/src/validation/index.js.map +13 -3
  35. package/dist/esm/src/websocket/index.js +15 -2
  36. package/dist/esm/src/websocket/index.js.map +9 -4
  37. package/dist/types/adapters/base.d.ts +10 -2
  38. package/dist/types/adapters/base.d.ts.map +1 -1
  39. package/dist/types/adapters/hono.d.ts +2 -2
  40. package/dist/types/adapters/hono.d.ts.map +1 -1
  41. package/dist/types/auth/permissions.d.ts +10 -10
  42. package/dist/types/auth/session.d.ts +2 -2
  43. package/dist/types/cache/index.d.ts +9 -0
  44. package/dist/types/cache/index.d.ts.map +1 -0
  45. package/dist/types/cache/manager.d.ts +75 -0
  46. package/dist/types/cache/manager.d.ts.map +1 -0
  47. package/dist/types/cache/memory-store.d.ts +55 -0
  48. package/dist/types/cache/memory-store.d.ts.map +1 -0
  49. package/dist/types/cache/redis-store.d.ts +55 -0
  50. package/dist/types/cache/redis-store.d.ts.map +1 -0
  51. package/dist/types/cache/types.d.ts +92 -0
  52. package/dist/types/cache/types.d.ts.map +1 -0
  53. package/dist/types/cli/commands/new.d.ts.map +1 -1
  54. package/dist/types/context/request-context.d.ts +66 -0
  55. package/dist/types/context/request-context.d.ts.map +1 -0
  56. package/dist/types/core/application.d.ts +11 -0
  57. package/dist/types/core/application.d.ts.map +1 -1
  58. package/dist/types/core/router-compiler.d.ts +1 -1
  59. package/dist/types/core/router-compiler.d.ts.map +1 -1
  60. package/dist/types/decorators/cache.d.ts +56 -0
  61. package/dist/types/decorators/cache.d.ts.map +1 -0
  62. package/dist/types/decorators/params.d.ts +24 -0
  63. package/dist/types/decorators/params.d.ts.map +1 -1
  64. package/dist/types/dependencies/container.d.ts +1 -1
  65. package/dist/types/dependencies/container.d.ts.map +1 -1
  66. package/dist/types/index.d.ts +7 -1
  67. package/dist/types/index.d.ts.map +1 -1
  68. package/dist/types/logging/index.d.ts +10 -0
  69. package/dist/types/logging/index.d.ts.map +1 -0
  70. package/dist/types/logging/logger.d.ts +25 -0
  71. package/dist/types/logging/logger.d.ts.map +1 -0
  72. package/dist/types/logging/middleware.d.ts +15 -0
  73. package/dist/types/logging/middleware.d.ts.map +1 -0
  74. package/dist/types/logging/types.d.ts +22 -0
  75. package/dist/types/logging/types.d.ts.map +1 -0
  76. package/dist/types/middleware/cache.d.ts +54 -0
  77. package/dist/types/middleware/cache.d.ts.map +1 -0
  78. package/dist/types/middleware/index.d.ts +3 -0
  79. package/dist/types/middleware/index.d.ts.map +1 -1
  80. package/dist/types/middleware/request-context.d.ts +55 -0
  81. package/dist/types/middleware/request-context.d.ts.map +1 -0
  82. package/dist/types/orm/base-repository.d.ts +77 -0
  83. package/dist/types/orm/base-repository.d.ts.map +1 -0
  84. package/dist/types/orm/decorators.d.ts +35 -0
  85. package/dist/types/orm/decorators.d.ts.map +1 -0
  86. package/dist/types/orm/drizzle/index.d.ts +6 -0
  87. package/dist/types/orm/drizzle/index.d.ts.map +1 -0
  88. package/dist/types/orm/drizzle/plugin.d.ts +165 -0
  89. package/dist/types/orm/drizzle/plugin.d.ts.map +1 -0
  90. package/dist/types/orm/drizzle/repository.d.ts +61 -0
  91. package/dist/types/orm/drizzle/repository.d.ts.map +1 -0
  92. package/dist/types/orm/drizzle/schema-converter.d.ts +53 -0
  93. package/dist/types/orm/drizzle/schema-converter.d.ts.map +1 -0
  94. package/dist/types/orm/drizzle/transaction-manager.d.ts +58 -0
  95. package/dist/types/orm/drizzle/transaction-manager.d.ts.map +1 -0
  96. package/dist/types/orm/drizzle/types.d.ts +121 -0
  97. package/dist/types/orm/drizzle/types.d.ts.map +1 -0
  98. package/dist/types/orm/index.d.ts +16 -0
  99. package/dist/types/orm/index.d.ts.map +1 -0
  100. package/dist/types/orm/pagination.d.ts +147 -0
  101. package/dist/types/orm/pagination.d.ts.map +1 -0
  102. package/dist/types/orm/prisma/index.d.ts +6 -0
  103. package/dist/types/orm/prisma/index.d.ts.map +1 -0
  104. package/dist/types/orm/prisma/plugin.d.ts +68 -0
  105. package/dist/types/orm/prisma/plugin.d.ts.map +1 -0
  106. package/dist/types/orm/prisma/repository.d.ts +70 -0
  107. package/dist/types/orm/prisma/repository.d.ts.map +1 -0
  108. package/dist/types/orm/prisma/schema-generator.d.ts +45 -0
  109. package/dist/types/orm/prisma/schema-generator.d.ts.map +1 -0
  110. package/dist/types/orm/prisma/transaction-manager.d.ts +32 -0
  111. package/dist/types/orm/prisma/transaction-manager.d.ts.map +1 -0
  112. package/dist/types/orm/prisma/types.d.ts +67 -0
  113. package/dist/types/orm/prisma/types.d.ts.map +1 -0
  114. package/dist/types/orm/query-builder.d.ts +129 -0
  115. package/dist/types/orm/query-builder.d.ts.map +1 -0
  116. package/dist/types/orm/repository-factory.d.ts +130 -0
  117. package/dist/types/orm/repository-factory.d.ts.map +1 -0
  118. package/dist/types/orm/transaction-events.d.ts +122 -0
  119. package/dist/types/orm/transaction-events.d.ts.map +1 -0
  120. package/dist/types/orm/transaction-interceptor.d.ts +30 -0
  121. package/dist/types/orm/transaction-interceptor.d.ts.map +1 -0
  122. package/dist/types/orm/transaction-manager.d.ts +64 -0
  123. package/dist/types/orm/transaction-manager.d.ts.map +1 -0
  124. package/dist/types/orm/transaction-plugin.d.ts +117 -0
  125. package/dist/types/orm/transaction-plugin.d.ts.map +1 -0
  126. package/dist/types/orm/transaction-propagation.d.ts +49 -0
  127. package/dist/types/orm/transaction-propagation.d.ts.map +1 -0
  128. package/dist/types/orm/typeorm/decorators.d.ts +40 -0
  129. package/dist/types/orm/typeorm/decorators.d.ts.map +1 -0
  130. package/dist/types/orm/typeorm/index.d.ts +6 -0
  131. package/dist/types/orm/typeorm/index.d.ts.map +1 -0
  132. package/dist/types/orm/typeorm/plugin.d.ts +100 -0
  133. package/dist/types/orm/typeorm/plugin.d.ts.map +1 -0
  134. package/dist/types/orm/typeorm/repository.d.ts +58 -0
  135. package/dist/types/orm/typeorm/repository.d.ts.map +1 -0
  136. package/dist/types/orm/typeorm/transaction-manager.d.ts +48 -0
  137. package/dist/types/orm/typeorm/transaction-manager.d.ts.map +1 -0
  138. package/dist/types/orm/typeorm/types.d.ts +139 -0
  139. package/dist/types/orm/typeorm/types.d.ts.map +1 -0
  140. package/dist/types/plugins/health.d.ts +75 -0
  141. package/dist/types/plugins/health.d.ts.map +1 -0
  142. package/dist/types/plugins/index.d.ts +2 -0
  143. package/dist/types/plugins/index.d.ts.map +1 -1
  144. package/dist/types/types/index.d.ts +15 -2
  145. package/dist/types/types/index.d.ts.map +1 -1
  146. package/dist/types/websocket/index.d.ts +1 -1
  147. package/dist/types/websocket/index.d.ts.map +1 -1
  148. package/package.json +22 -2
  149. package/dist/esm/chunk-2100y16g.js +0 -5
  150. package/dist/esm/chunk-2100y16g.js.map +0 -10
  151. package/dist/esm/chunk-5q75d71c.js +0 -4
  152. package/dist/esm/chunk-5q75d71c.js.map +0 -16
  153. package/dist/esm/chunk-8dpc6an2.js +0 -7
  154. package/dist/esm/chunk-8dpc6an2.js.map +0 -10
  155. package/dist/esm/chunk-9v7atckx.js +0 -5
  156. package/dist/esm/chunk-9v7atckx.js.map +0 -10
  157. package/dist/esm/chunk-bvstdn0t.js +0 -60
  158. package/dist/esm/chunk-bvstdn0t.js.map +0 -10
  159. package/dist/esm/chunk-ctwpr5gr.js +0 -430
  160. package/dist/esm/chunk-ctwpr5gr.js.map +0 -10
  161. package/dist/esm/chunk-dtw2tbsd.js +0 -5
  162. package/dist/esm/chunk-dtw2tbsd.js.map +0 -12
  163. package/dist/esm/chunk-ef0vfd27.js +0 -72
  164. package/dist/esm/chunk-ef0vfd27.js.map +0 -13
  165. package/dist/esm/chunk-k66rn4fj.js +0 -18
  166. package/dist/esm/chunk-k66rn4fj.js.map +0 -10
  167. package/dist/esm/chunk-mky5qqg0.js +0 -5
  168. package/dist/esm/chunk-mky5qqg0.js.map +0 -10
  169. package/dist/esm/chunk-mznkhz9c.js +0 -5
  170. package/dist/esm/chunk-mznkhz9c.js.map +0 -12
  171. package/dist/esm/chunk-s5z0wb7e.js +0 -5
  172. package/dist/esm/chunk-s5z0wb7e.js.map +0 -10
  173. package/dist/esm/chunk-vh4sxcpe.js +0 -6
  174. package/dist/esm/chunk-vh4sxcpe.js.map +0 -10
  175. package/dist/esm/chunk-xa333k40.js +0 -7
  176. package/dist/esm/chunk-xa333k40.js.map +0 -10
  177. package/dist/esm/chunk-y262e56g.js +0 -5
  178. package/dist/esm/chunk-y262e56g.js.map +0 -9
  179. package/dist/esm/chunk-yq3gf9ts.js +0 -5
  180. package/dist/esm/chunk-yq3gf9ts.js.map +0 -10
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Logger para Veloce-TS usando Pino
3
+ *
4
+ * Pino es el logger más rápido para Node.js con excelente rendimiento
5
+ * y formato JSON estructurado ideal para producción.
6
+ */
7
+ import type { Logger, LoggerConfig, LogContext } from './types';
8
+ /**
9
+ * Create a Pino logger instance
10
+ */
11
+ export declare function createLogger(config?: LoggerConfig): Logger;
12
+ /**
13
+ * Initialize the global logger
14
+ */
15
+ export declare function initializeLogger(config?: LoggerConfig): Logger;
16
+ /**
17
+ * Get the global logger instance
18
+ * Defaults to Pino with pretty printing enabled for development
19
+ */
20
+ export declare function getLogger(): Logger;
21
+ /**
22
+ * Create a child logger with context
23
+ */
24
+ export declare function createChildLogger(context: LogContext): Logger;
25
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/logging/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAoGhE;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAE1D;AAOD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,YAAY,GAAG,MAAM,CAG9D;AAED;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAMlC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAE7D"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Logging middleware para Veloce-TS
3
+ */
4
+ import type { Middleware } from '../types';
5
+ /**
6
+ * Request logging middleware
7
+ * Logs todas las peticiones HTTP con contexto
8
+ */
9
+ export declare function requestLoggingMiddleware(): Middleware;
10
+ /**
11
+ * Error logging middleware
12
+ * Captura y loguea errores no manejados
13
+ */
14
+ export declare function errorLoggingMiddleware(): Middleware;
15
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../../src/logging/middleware.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAW,UAAU,EAAE,MAAM,UAAU,CAAC;AAGpD;;;GAGG;AACH,wBAAgB,wBAAwB,IAAI,UAAU,CAgCrD;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,UAAU,CAiBnD"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Tipos para el sistema de logging con Pino
3
+ */
4
+ export type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error' | 'fatal';
5
+ export interface LogContext {
6
+ [key: string]: any;
7
+ }
8
+ export interface Logger {
9
+ trace(message: string, context?: LogContext): void;
10
+ debug(message: string, context?: LogContext): void;
11
+ info(message: string, context?: LogContext): void;
12
+ warn(message: string, context?: LogContext): void;
13
+ error(message: string, error?: Error, context?: LogContext): void;
14
+ fatal(message: string, error?: Error, context?: LogContext): void;
15
+ child(context: LogContext): Logger;
16
+ }
17
+ export interface LoggerConfig {
18
+ level?: LogLevel;
19
+ pretty?: boolean;
20
+ [key: string]: any;
21
+ }
22
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/logging/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAE/E,MAAM,WAAW,UAAU;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACnD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IACnD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAClD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAClD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAClE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;IAClE,KAAK,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC;CACpC;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Cache middleware for functional API routes
3
+ */
4
+ import type { Middleware } from '../types';
5
+ import type { CacheOptions } from '../cache/types';
6
+ export interface CacheMiddlewareOptions extends CacheOptions {
7
+ /**
8
+ * Whether to cache only successful responses (2xx)
9
+ */
10
+ onlySuccess?: boolean;
11
+ }
12
+ /**
13
+ * Create cache middleware for functional API routes
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * app.get('/products', {
18
+ * middleware: [createCacheMiddleware({ ttl: '5m' })],
19
+ * handler: async () => {
20
+ * return await db.products.findAll();
21
+ * }
22
+ * });
23
+ *
24
+ * // With custom key
25
+ * app.get('/user/:id/posts', {
26
+ * middleware: [createCacheMiddleware({
27
+ * ttl: 300,
28
+ * key: 'user:{id}:posts'
29
+ * })],
30
+ * handler: async (c) => {
31
+ * const id = c.req.param('id');
32
+ * return await db.posts.findByUser(id);
33
+ * }
34
+ * });
35
+ * ```
36
+ */
37
+ export declare function createCacheMiddleware(options: CacheMiddlewareOptions): Middleware;
38
+ /**
39
+ * Create cache invalidation middleware
40
+ * Useful for mutations that should clear related cache
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * app.post('/products', {
45
+ * middleware: [createCacheInvalidationMiddleware('products:*')],
46
+ * handler: async (c) => {
47
+ * const body = await c.req.json();
48
+ * return await db.products.create(body);
49
+ * }
50
+ * });
51
+ * ```
52
+ */
53
+ export declare function createCacheInvalidationMiddleware(pattern: string | string[], store?: import('../cache/types').CacheStore): Middleware;
54
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/middleware/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAW,UAAU,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAInD,MAAM,WAAW,sBAAuB,SAAQ,YAAY;IAC1D;;OAEG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,sBAAsB,GAAG,UAAU,CA8EjF;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,EAC1B,KAAK,CAAC,EAAE,OAAO,gBAAgB,EAAE,UAAU,GAC1C,UAAU,CAwBZ"}
@@ -1,4 +1,7 @@
1
1
  export { createCorsMiddleware } from './cors';
2
2
  export { createRateLimitMiddleware } from './rate-limit';
3
3
  export { createCompressionMiddleware } from './compression';
4
+ export { createRequestContextMiddleware, createSimpleRequestIdMiddleware, type RequestContextMiddlewareOptions } from './request-context';
5
+ export type { CacheMiddlewareOptions } from './cache';
6
+ export { createCacheMiddleware, createCacheInvalidationMiddleware } from './cache';
4
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middleware/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/middleware/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,EACL,8BAA8B,EAC9B,+BAA+B,EAC/B,KAAK,+BAA+B,EACrC,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,iCAAiC,EAAE,MAAM,SAAS,CAAC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Request Context Middleware
3
+ * Automatically initializes request context with UUID and integrates with logging
4
+ */
5
+ import type { Middleware } from '../types';
6
+ export interface RequestContextMiddlewareOptions {
7
+ /**
8
+ * Default timeout for requests in milliseconds
9
+ */
10
+ timeout?: number;
11
+ /**
12
+ * Whether to log request start/end
13
+ */
14
+ logging?: boolean;
15
+ /**
16
+ * Custom request ID generator
17
+ */
18
+ requestIdGenerator?: () => string;
19
+ /**
20
+ * Headers to include in logs
21
+ */
22
+ logHeaders?: string[];
23
+ }
24
+ /**
25
+ * Create request context middleware
26
+ *
27
+ * This middleware:
28
+ * - Generates a unique request ID for each request
29
+ * - Sets up AbortSignal for request cancellation
30
+ * - Optionally configures request timeout
31
+ * - Integrates with logging system
32
+ * - Propagates request ID through all logs
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const app = new VeloceTS();
37
+ *
38
+ * // Basic usage
39
+ * app.use(createRequestContextMiddleware());
40
+ *
41
+ * // With options
42
+ * app.use(createRequestContextMiddleware({
43
+ * timeout: 30000, // 30 seconds
44
+ * logging: true,
45
+ * logHeaders: ['user-agent', 'referer']
46
+ * }));
47
+ * ```
48
+ */
49
+ export declare function createRequestContextMiddleware(options?: RequestContextMiddlewareOptions): Middleware;
50
+ /**
51
+ * Create a simple request ID middleware without logging
52
+ * Useful if you want to manage logging separately
53
+ */
54
+ export declare function createSimpleRequestIdMiddleware(): Middleware;
55
+ //# sourceMappingURL=request-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../../src/middleware/request-context.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAW,UAAU,EAAE,MAAM,UAAU,CAAC;AAIpD,MAAM,WAAW,+BAA+B;IAC9C;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,MAAM,CAAC;IAElC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,8BAA8B,CAC5C,OAAO,GAAE,+BAAoC,GAC5C,UAAU,CA2EZ;AAED;;;GAGG;AACH,wBAAgB,+BAA+B,IAAI,UAAU,CAa5D"}
@@ -0,0 +1,77 @@
1
+ import { z } from 'zod';
2
+ export interface PaginationOptions {
3
+ page?: number;
4
+ limit?: number;
5
+ offset?: number;
6
+ }
7
+ export interface SortOptions {
8
+ field: string;
9
+ direction: 'asc' | 'desc';
10
+ }
11
+ export interface FilterOptions {
12
+ [key: string]: any;
13
+ }
14
+ export interface FindOptions {
15
+ where?: FilterOptions;
16
+ orderBy?: SortOptions | SortOptions[];
17
+ pagination?: PaginationOptions;
18
+ include?: string[];
19
+ select?: string[];
20
+ }
21
+ export interface PaginatedResult<T> {
22
+ data: T[];
23
+ total: number;
24
+ page: number;
25
+ limit: number;
26
+ totalPages: number;
27
+ hasNext: boolean;
28
+ hasPrev: boolean;
29
+ }
30
+ /**
31
+ * Base repository interface with common CRUD operations
32
+ */
33
+ export interface IBaseRepository<T, ID = string | number> {
34
+ create(data: Partial<T>): Promise<T>;
35
+ findById(id: ID): Promise<T | null>;
36
+ findOne(options: FindOptions): Promise<T | null>;
37
+ findMany(options?: FindOptions): Promise<T[]>;
38
+ update(id: ID, data: Partial<T>): Promise<T>;
39
+ delete(id: ID): Promise<boolean>;
40
+ createMany(data: Partial<T>[]): Promise<T[]>;
41
+ updateMany(where: FilterOptions, data: Partial<T>): Promise<number>;
42
+ deleteMany(where: FilterOptions): Promise<number>;
43
+ findPaginated(options: FindOptions & {
44
+ pagination: Required<PaginationOptions>;
45
+ }): Promise<PaginatedResult<T>>;
46
+ count(where?: FilterOptions): Promise<number>;
47
+ exists(where: FilterOptions): Promise<boolean>;
48
+ withTransaction<R>(callback: (repo: this) => Promise<R>): Promise<R>;
49
+ }
50
+ /**
51
+ * Abstract base repository implementation
52
+ */
53
+ export declare abstract class BaseRepository<T, ID = string | number> implements IBaseRepository<T, ID> {
54
+ protected schema?: z.ZodSchema<T>;
55
+ constructor(schema?: z.ZodSchema<T>);
56
+ protected validate(data: any): T;
57
+ protected validatePartial(data: any): Partial<T>;
58
+ abstract create(data: Partial<T>): Promise<T>;
59
+ abstract findById(id: ID): Promise<T | null>;
60
+ abstract findOne(options: FindOptions): Promise<T | null>;
61
+ abstract findMany(options?: FindOptions): Promise<T[]>;
62
+ abstract update(id: ID, data: Partial<T>): Promise<T>;
63
+ abstract delete(id: ID): Promise<boolean>;
64
+ createMany(data: Partial<T>[]): Promise<T[]>;
65
+ updateMany(where: FilterOptions, data: Partial<T>): Promise<number>;
66
+ deleteMany(where: FilterOptions): Promise<number>;
67
+ findPaginated(options: FindOptions & {
68
+ pagination: Required<PaginationOptions>;
69
+ }): Promise<PaginatedResult<T>>;
70
+ count(where?: FilterOptions): Promise<number>;
71
+ exists(where: FilterOptions): Promise<boolean>;
72
+ withTransaction<R>(callback: (repo: this) => Promise<R>): Promise<R>;
73
+ protected buildWhereClause(where?: FilterOptions): any;
74
+ protected buildOrderByClause(orderBy?: SortOptions | SortOptions[]): any;
75
+ protected buildPaginationClause(pagination?: PaginationOptions): any;
76
+ }
77
+ //# sourceMappingURL=base-repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-repository.d.ts","sourceRoot":"","sources":["../../../src/orm/base-repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import 'reflect-metadata';
2
+ export interface RepositoryMetadata {
3
+ entity?: any;
4
+ connection?: string;
5
+ transactional?: boolean;
6
+ }
7
+ export interface TransactionMetadata {
8
+ isolation?: 'READ_UNCOMMITTED' | 'READ_COMMITTED' | 'REPEATABLE_READ' | 'SERIALIZABLE';
9
+ timeout?: number;
10
+ readOnly?: boolean;
11
+ propagation?: 'REQUIRED' | 'REQUIRES_NEW' | 'SUPPORTS' | 'NOT_SUPPORTED' | 'NEVER' | 'MANDATORY';
12
+ }
13
+ /**
14
+ * Repository decorator for marking classes as repositories
15
+ */
16
+ export declare function Repository(entity?: any, connection?: string): ClassDecorator;
17
+ /**
18
+ * Transactional decorator for automatic transaction management
19
+ */
20
+ export declare function Transactional(options?: TransactionMetadata): MethodDecorator;
21
+ /**
22
+ * Entity decorator for marking classes as database entities
23
+ */
24
+ export declare function Entity(tableName?: string): ClassDecorator;
25
+ /**
26
+ * Column decorator for marking properties as database columns
27
+ */
28
+ export declare function Column(options?: {
29
+ name?: string;
30
+ type?: string;
31
+ nullable?: boolean;
32
+ unique?: boolean;
33
+ primary?: boolean;
34
+ }): PropertyDecorator;
35
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../src/orm/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAK1B,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAGD,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,kBAAkB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,cAAc,CAAC;IACvF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,eAAe,GAAG,OAAO,GAAG,WAAW,CAAC;CAClG;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,CAU5E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,eAAe,CA8B5E;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,cAAc,CAQzD;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,GAAG,iBAAiB,CAYpB"}
@@ -0,0 +1,6 @@
1
+ export { DrizzlePlugin } from './plugin';
2
+ export { DrizzleRepository } from './repository';
3
+ export { DrizzleTransactionManager } from './transaction-manager';
4
+ export * from './types';
5
+ export * from './schema-converter';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/orm/drizzle/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC"}
@@ -0,0 +1,165 @@
1
+ import { Plugin } from '../../core/plugin';
2
+ import { VeloceTS } from '../../core/application';
3
+ import { DrizzleConfig, DrizzleDatabase, DrizzleTable, DrizzleTableMetadata } from './types';
4
+ import { DrizzleRepository as DrizzleRepositoryClass } from './repository';
5
+ import { DrizzleTransactionManager } from './transaction-manager';
6
+ import { DrizzleZodSchemaConverter } from './schema-converter';
7
+ export { DrizzleRepository } from './repository';
8
+ /**
9
+ * Drizzle ORM integration plugin for VeloceTS
10
+ *
11
+ * Provides seamless integration with Drizzle ORM, including:
12
+ * - Automatic repository generation from schemas
13
+ * - Transaction management with decorator support
14
+ * - Zod schema conversion and validation
15
+ * - Query builder utilities
16
+ * - Database seeding support
17
+ */
18
+ export declare class DrizzlePlugin implements Plugin {
19
+ name: string;
20
+ version: string;
21
+ private database;
22
+ private config;
23
+ private transactionManager;
24
+ private schemaConverter;
25
+ private tables;
26
+ private tableMetadata;
27
+ private logger;
28
+ constructor(database: DrizzleDatabase, config?: DrizzleConfig);
29
+ install(app: VeloceTS): Promise<void>;
30
+ /**
31
+ * Register Drizzle schema tables
32
+ * @param schema - Object containing Drizzle table definitions
33
+ */
34
+ private registerSchema;
35
+ /**
36
+ * Check if an object is a valid Drizzle table
37
+ * @param obj - Object to validate
38
+ * @returns true if object is a valid Drizzle table
39
+ */
40
+ private isValidDrizzleTable;
41
+ /**
42
+ * Register repository factory in DI container
43
+ * @param app - VeloceTS application instance
44
+ */
45
+ private registerRepositoryFactory;
46
+ /**
47
+ * Register database utilities
48
+ * @param app - VeloceTS application instance
49
+ */
50
+ private registerDatabaseUtilities;
51
+ /**
52
+ * Get table by name
53
+ */
54
+ getTable(name: string): DrizzleTable | undefined;
55
+ /**
56
+ * Get all registered tables
57
+ */
58
+ getTables(): Map<string, DrizzleTable>;
59
+ /**
60
+ * Get table metadata
61
+ */
62
+ getTableMetadata(name: string): DrizzleTableMetadata | undefined;
63
+ /**
64
+ * Get all table metadata
65
+ */
66
+ getAllTableMetadata(): Map<string, DrizzleTableMetadata>;
67
+ /**
68
+ * Create a repository for a specific table
69
+ * @param tableName - Name of the table to create repository for
70
+ * @param zodSchema - Optional Zod schema for validation
71
+ * @returns DrizzleRepository instance
72
+ * @throws Error if table is not found
73
+ */
74
+ createRepository<T>(tableName: string, zodSchema?: any): DrizzleRepositoryClass<T>;
75
+ /**
76
+ * Create a repository from a table instance
77
+ * @param table - Drizzle table instance
78
+ * @param zodSchema - Optional Zod schema for validation
79
+ * @returns DrizzleRepository instance
80
+ */
81
+ createRepositoryFromTable<T>(table: DrizzleTable, zodSchema?: any): DrizzleRepositoryClass<T>;
82
+ /**
83
+ * Get the Drizzle database instance
84
+ */
85
+ getDatabase(): DrizzleDatabase;
86
+ /**
87
+ * Get the transaction manager
88
+ */
89
+ getTransactionManager(): DrizzleTransactionManager;
90
+ /**
91
+ * Get the schema converter
92
+ */
93
+ getSchemaConverter(): DrizzleZodSchemaConverter;
94
+ /**
95
+ * Add a table to the schema dynamically
96
+ * @param name - Table name
97
+ * @param table - Drizzle table instance
98
+ */
99
+ addTable(name: string, table: DrizzleTable): void;
100
+ /**
101
+ * Remove a table from the schema
102
+ * @param name - Table name to remove
103
+ * @returns true if table was removed, false if it didn't exist
104
+ */
105
+ removeTable(name: string): boolean;
106
+ /**
107
+ * Generate Zod schemas for all tables
108
+ */
109
+ generateZodSchemas(): Record<string, any>;
110
+ /**
111
+ * Execute raw SQL query
112
+ * @param sql - Raw SQL query string
113
+ * @param params - Query parameters
114
+ * @returns Query result
115
+ * @warning Use with caution - prefer using the query builder for type safety
116
+ */
117
+ executeRaw(sql: string, params?: any[]): Promise<any>;
118
+ /**
119
+ * Execute multiple queries in a transaction
120
+ * @param callback - Async function that receives transaction database instance
121
+ * @returns Result of the callback
122
+ * @throws Error if transaction fails
123
+ */
124
+ executeInTransaction<T>(callback: (db: DrizzleDatabase) => Promise<T>): Promise<T>;
125
+ }
126
+ /**
127
+ * Helper function to create Drizzle plugin
128
+ */
129
+ export declare function createDrizzlePlugin(database: DrizzleDatabase, config?: DrizzleConfig): DrizzlePlugin;
130
+ /**
131
+ * Decorator to automatically inject Drizzle repository
132
+ * @param tableName - Name of the table to inject repository for
133
+ * @param zodSchema - Optional Zod schema for validation
134
+ * @returns Property decorator
135
+ *
136
+ * @example
137
+ * ```typescript
138
+ * class UserService {
139
+ * @InjectDrizzleRepository('users', UserSchema)
140
+ * private userRepo!: DrizzleRepository<User>;
141
+ * }
142
+ * ```
143
+ *
144
+ * @deprecated This decorator is not yet fully implemented.
145
+ * Use dependency injection or direct instantiation instead:
146
+ * ```typescript
147
+ * const factory = container.resolve('DrizzleRepositoryFactory');
148
+ * const repo = factory.create<User>('users');
149
+ * ```
150
+ */
151
+ export declare function InjectDrizzleRepository(tableName: string, zodSchema?: any): PropertyDecorator;
152
+ /**
153
+ * Seeder base class for Drizzle
154
+ */
155
+ export declare abstract class DrizzleSeeder {
156
+ abstract run(database: DrizzleDatabase): Promise<void>;
157
+ }
158
+ /**
159
+ * Migration base class for Drizzle (placeholder)
160
+ */
161
+ export declare abstract class DrizzleMigration {
162
+ abstract up(database: DrizzleDatabase): Promise<void>;
163
+ abstract down(database: DrizzleDatabase): Promise<void>;
164
+ }
165
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/orm/drizzle/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import { BaseRepository, FindOptions, FilterOptions, SortOptions, PaginationOptions, PaginatedResult } from '../base-repository';
2
+ import { DrizzleRepositoryOptions, DrizzleDatabase, DrizzleTable, DrizzleOperators } from './types';
3
+ /**
4
+ * Drizzle-specific repository implementation
5
+ */
6
+ export declare class DrizzleRepository<T, ID = string | number> extends BaseRepository<T, ID> {
7
+ protected database: DrizzleDatabase;
8
+ protected table: DrizzleTable;
9
+ protected operators: DrizzleOperators;
10
+ constructor(options: DrizzleRepositoryOptions<T>);
11
+ private initializeOperators;
12
+ create(data: Partial<T>): Promise<T>;
13
+ findById(id: ID): Promise<T | null>;
14
+ findOne(options: FindOptions): Promise<T | null>;
15
+ findMany(options?: FindOptions): Promise<T[]>;
16
+ update(id: ID, data: Partial<T>): Promise<T>;
17
+ delete(id: ID): Promise<boolean>;
18
+ createMany(data: Partial<T>[]): Promise<T[]>;
19
+ updateMany(where: FilterOptions, data: Partial<T>): Promise<number>;
20
+ deleteMany(where: FilterOptions): Promise<number>;
21
+ count(where?: FilterOptions): Promise<number>;
22
+ exists(where: FilterOptions): Promise<boolean>;
23
+ findPaginated(options: FindOptions & {
24
+ pagination: Required<PaginationOptions>;
25
+ }): Promise<PaginatedResult<T>>;
26
+ withTransaction<R>(callback: (repo: this) => Promise<R>): Promise<R>;
27
+ protected buildWhereClause(where: FilterOptions): any;
28
+ protected buildOrderByClause(orderBy: SortOptions | SortOptions[]): any[];
29
+ private getPrimaryKeyColumn;
30
+ private getColumn;
31
+ /**
32
+ * Execute raw SQL query
33
+ */
34
+ rawQuery(sql: string, params?: any[]): Promise<any[]>;
35
+ /**
36
+ * Upsert operation (insert or update on conflict)
37
+ */
38
+ upsert(data: Partial<T>, conflictColumns: string[]): Promise<T>;
39
+ /**
40
+ * Bulk upsert operation
41
+ */
42
+ bulkUpsert(data: Partial<T>[], conflictColumns: string[]): Promise<T[]>;
43
+ /**
44
+ * Find with custom select fields
45
+ */
46
+ findWithSelect<K extends keyof T>(options: FindOptions, select: K[]): Promise<Pick<T, K>[]>;
47
+ /**
48
+ * Aggregate operations
49
+ */
50
+ aggregate(options: {
51
+ where?: FilterOptions;
52
+ groupBy?: string[];
53
+ having?: FilterOptions;
54
+ count?: boolean;
55
+ sum?: string[];
56
+ avg?: string[];
57
+ min?: string[];
58
+ max?: string[];
59
+ }): Promise<any[]>;
60
+ }
61
+ //# sourceMappingURL=repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../src/orm/drizzle/repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import { z } from 'zod';
2
+ import { DrizzleTable, DrizzleTableMetadata } from './types';
3
+ /**
4
+ * Converts Drizzle schemas to Zod schemas for validation
5
+ */
6
+ export declare class DrizzleZodSchemaConverter {
7
+ private tableSchemas;
8
+ /**
9
+ * Convert Drizzle table schema to Zod schema
10
+ */
11
+ convertTableToZod(table: DrizzleTable): z.ZodSchema;
12
+ /**
13
+ * Convert Drizzle column to Zod schema
14
+ */
15
+ private convertColumnToZod;
16
+ /**
17
+ * Get base Zod schema for Drizzle column type
18
+ */
19
+ private getBaseZodSchema;
20
+ /**
21
+ * Get base Zod schema by data type
22
+ */
23
+ private getBaseZodSchemaByDataType;
24
+ /**
25
+ * Generate create schema (without auto-generated fields)
26
+ */
27
+ generateCreateSchema(table: DrizzleTable): z.ZodSchema;
28
+ /**
29
+ * Generate update schema (all fields optional)
30
+ */
31
+ generateUpdateSchema(table: DrizzleTable): z.ZodSchema;
32
+ /**
33
+ * Extract table metadata from Drizzle table
34
+ */
35
+ extractTableMetadata(table: DrizzleTable): DrizzleTableMetadata;
36
+ /**
37
+ * Generate all schemas for a table (base, create, update)
38
+ */
39
+ generateAllSchemas(table: DrizzleTable): {
40
+ base: z.ZodType<any, z.ZodTypeDef, any>;
41
+ create: z.ZodType<any, z.ZodTypeDef, any>;
42
+ update: z.ZodType<any, z.ZodTypeDef, any>;
43
+ };
44
+ /**
45
+ * Clear cached schemas
46
+ */
47
+ clearCache(): void;
48
+ /**
49
+ * Get cached schema for a table
50
+ */
51
+ getCachedSchema(tableName: string): z.ZodSchema | undefined;
52
+ }
53
+ //# sourceMappingURL=schema-converter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-converter.d.ts","sourceRoot":"","sources":["../../../../src/orm/drizzle/schema-converter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAiB,oBAAoB,EAAyB,MAAM,SAAS,CAAC;AAEnG;;GAEG;AACH,qBAAa,yBAAyB;IACpC,OAAO,CAAC,YAAY,CAAkC;IAEtD;;OAEG;IACH,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,CAAC,CAAC,SAAS;IAmBnD;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAgB1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAyDxB;;OAEG;IACH,OAAO,CAAC,0BAA0B;IAuBlC;;OAEG;IACH,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,CAAC,CAAC,SAAS;IAoBtD;;OAEG;IACH,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,CAAC,CAAC,SAAS;IAsBtD;;OAEG;IACH,oBAAoB,CAAC,KAAK,EAAE,YAAY,GAAG,oBAAoB;IAyB/D;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,YAAY;;;;;IAQtC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,CAAC,SAAS,GAAG,SAAS;CAG5D"}