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,58 @@
1
+ import { BaseTransactionManager, TransactionContext, TransactionMetadata } from '../transaction-manager';
2
+ import { DrizzleDatabase } from './types';
3
+ /**
4
+ * Drizzle-specific transaction manager
5
+ */
6
+ export declare class DrizzleTransactionManager extends BaseTransactionManager {
7
+ private database;
8
+ private drizzleTransactions;
9
+ constructor(database: DrizzleDatabase);
10
+ begin(options?: TransactionMetadata): Promise<TransactionContext>;
11
+ commit(context: TransactionContext): Promise<void>;
12
+ rollback(context: TransactionContext): Promise<void>;
13
+ savepoint(context: TransactionContext, name: string): Promise<void>;
14
+ rollbackToSavepoint(context: TransactionContext, name: string): Promise<void>;
15
+ /**
16
+ * Execute a function within a Drizzle transaction
17
+ */
18
+ executeInTransaction<T>(callback: (db: DrizzleDatabase) => Promise<T>, options?: TransactionMetadata): Promise<T>;
19
+ /**
20
+ * Enhanced transaction handler that integrates with Drizzle's transaction system
21
+ */
22
+ handleTransactional<T>(target: any, propertyKey: string, args: any[], originalMethod: Function, context?: any): Promise<T>;
23
+ /**
24
+ * Inject transaction database into repositories
25
+ */
26
+ private injectTransactionDatabase;
27
+ /**
28
+ * Create a repository with transaction support
29
+ */
30
+ createTransactionalRepository<T>(repositoryClass: new (...args: any[]) => T, options: any): T;
31
+ /**
32
+ * Execute multiple operations in a single transaction
33
+ */
34
+ batch<T extends readonly unknown[]>(operations: readonly [...{
35
+ [K in keyof T]: () => Promise<T[K]>;
36
+ }]): Promise<T>;
37
+ /**
38
+ * Execute operations with retry logic
39
+ */
40
+ executeWithRetry<T>(operation: (db: DrizzleDatabase) => Promise<T>, options?: {
41
+ maxRetries?: number;
42
+ retryDelay?: number;
43
+ retryCondition?: (error: any) => boolean;
44
+ }): Promise<T>;
45
+ /**
46
+ * Get the database instance
47
+ */
48
+ getDatabase(): DrizzleDatabase;
49
+ /**
50
+ * Check if currently in a transaction
51
+ */
52
+ isInTransaction(): boolean;
53
+ /**
54
+ * Get active transaction count
55
+ */
56
+ getActiveTransactionCount(): number;
57
+ }
58
+ //# sourceMappingURL=transaction-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-manager.d.ts","sourceRoot":"","sources":["../../../../src/orm/drizzle/transaction-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACzG,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE1C;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,sBAAsB;IACnE,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,mBAAmB,CAA0B;gBAEzC,QAAQ,EAAE,eAAe;IAK/B,KAAK,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAajE,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlD,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD,SAAS,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnE,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBnF;;OAEG;IACG,oBAAoB,CAAC,CAAC,EAC1B,QAAQ,EAAE,CAAC,EAAE,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,EAC7C,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,CAAC,CAAC;IAMb;;OAEG;IACG,mBAAmB,CAAC,CAAC,EACzB,MAAM,EAAE,GAAG,EACX,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,GAAG,EAAE,EACX,cAAc,EAAE,QAAQ,EACxB,OAAO,CAAC,EAAE,GAAG,GACZ,OAAO,CAAC,CAAC,CAAC;IA8Cb;;OAEG;YACW,yBAAyB;IAoCvC;;OAEG;IACH,6BAA6B,CAAC,CAAC,EAC7B,eAAe,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAC1C,OAAO,EAAE,GAAG,GACX,CAAC;IAuBJ;;OAEG;IACG,KAAK,CAAC,CAAC,SAAS,SAAS,OAAO,EAAE,EACtC,UAAU,EAAE,SAAS,CAAC,GAAG;SAAG,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAAE,CAAC,GAChE,OAAO,CAAC,CAAC,CAAC;IAab;;OAEG;IACG,gBAAgB,CAAC,CAAC,EACtB,SAAS,EAAE,CAAC,EAAE,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,EAC9C,OAAO,GAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC;KACrC,GACL,OAAO,CAAC,CAAC,CAAC;IA2Bb;;OAEG;IACH,WAAW,IAAI,eAAe;IAI9B;;OAEG;IACH,eAAe,IAAI,OAAO;IAI1B;;OAEG;IACH,yBAAyB,IAAI,MAAM;CAGpC"}
@@ -0,0 +1,121 @@
1
+ import { z } from 'zod';
2
+ export interface DrizzleConfig {
3
+ logger?: boolean;
4
+ schema?: Record<string, any>;
5
+ mode?: 'default' | 'planetscale';
6
+ }
7
+ export interface DrizzleTableMetadata {
8
+ name: string;
9
+ schema?: string;
10
+ columns: DrizzleColumnMetadata[];
11
+ relations: DrizzleRelationMetadata[];
12
+ zodSchema?: z.ZodSchema;
13
+ }
14
+ export interface DrizzleColumnMetadata {
15
+ name: string;
16
+ dataType: string;
17
+ isPrimaryKey: boolean;
18
+ isNotNull: boolean;
19
+ hasDefault: boolean;
20
+ isUnique: boolean;
21
+ isAutoIncrement: boolean;
22
+ enumValues?: string[];
23
+ }
24
+ export interface DrizzleRelationMetadata {
25
+ name: string;
26
+ type: 'one' | 'many';
27
+ referencedTable: string;
28
+ referencedColumn?: string;
29
+ relationName?: string;
30
+ }
31
+ export interface DrizzleDatabase {
32
+ select(fields?: any): DrizzleSelectBuilder;
33
+ insert(table: any): DrizzleInsertBuilder;
34
+ update(table: any): DrizzleUpdateBuilder;
35
+ delete(table: any): DrizzleDeleteBuilder;
36
+ transaction<T>(callback: (tx: DrizzleDatabase) => Promise<T>): Promise<T>;
37
+ execute(query: any): Promise<any>;
38
+ $with(alias: string): any;
39
+ }
40
+ export interface DrizzleSelectBuilder {
41
+ from(table: any): DrizzleSelectBuilder;
42
+ where(condition: any): DrizzleSelectBuilder;
43
+ orderBy(...columns: any[]): DrizzleSelectBuilder;
44
+ groupBy(...columns: any[]): DrizzleSelectBuilder;
45
+ having(condition: any): DrizzleSelectBuilder;
46
+ limit(count: number): DrizzleSelectBuilder;
47
+ offset(count: number): DrizzleSelectBuilder;
48
+ leftJoin(table: any, condition: any): DrizzleSelectBuilder;
49
+ rightJoin(table: any, condition: any): DrizzleSelectBuilder;
50
+ innerJoin(table: any, condition: any): DrizzleSelectBuilder;
51
+ fullJoin(table: any, condition: any): DrizzleSelectBuilder;
52
+ execute(): Promise<any[]>;
53
+ then(onfulfilled?: any, onrejected?: any): Promise<any[]>;
54
+ }
55
+ export interface DrizzleInsertBuilder {
56
+ values(values: any | any[]): DrizzleInsertBuilder;
57
+ onConflictDoNothing(): DrizzleInsertBuilder;
58
+ onConflictDoUpdate(config: any): DrizzleInsertBuilder;
59
+ returning(fields?: any): DrizzleInsertBuilder;
60
+ execute(): Promise<any>;
61
+ then(onfulfilled?: any, onrejected?: any): Promise<any>;
62
+ }
63
+ export interface DrizzleUpdateBuilder {
64
+ set(values: any): DrizzleUpdateBuilder;
65
+ where(condition: any): DrizzleUpdateBuilder;
66
+ returning(fields?: any): DrizzleUpdateBuilder;
67
+ execute(): Promise<any>;
68
+ then(onfulfilled?: any, onrejected?: any): Promise<any>;
69
+ }
70
+ export interface DrizzleDeleteBuilder {
71
+ where(condition: any): DrizzleDeleteBuilder;
72
+ returning(fields?: any): DrizzleDeleteBuilder;
73
+ execute(): Promise<any>;
74
+ then(onfulfilled?: any, onrejected?: any): Promise<any>;
75
+ }
76
+ export interface DrizzleTable {
77
+ _: {
78
+ name: string;
79
+ schema?: string;
80
+ columns: Record<string, DrizzleColumn>;
81
+ primaryKey?: any;
82
+ foreignKeys?: any[];
83
+ indexes?: any[];
84
+ };
85
+ }
86
+ export interface DrizzleColumn {
87
+ _: {
88
+ name: string;
89
+ dataType: string;
90
+ columnType: string;
91
+ notNull: boolean;
92
+ hasDefault: boolean;
93
+ isPrimaryKey: boolean;
94
+ isUnique: boolean;
95
+ enumValues?: string[];
96
+ };
97
+ }
98
+ export interface DrizzleRepositoryOptions<T> {
99
+ table: DrizzleTable;
100
+ database: DrizzleDatabase;
101
+ zodSchema?: z.ZodSchema<T>;
102
+ }
103
+ export interface DrizzleOperators {
104
+ eq: (column: any, value: any) => any;
105
+ ne: (column: any, value: any) => any;
106
+ gt: (column: any, value: any) => any;
107
+ gte: (column: any, value: any) => any;
108
+ lt: (column: any, value: any) => any;
109
+ lte: (column: any, value: any) => any;
110
+ like: (column: any, value: string) => any;
111
+ ilike: (column: any, value: string) => any;
112
+ inArray: (column: any, values: any[]) => any;
113
+ notInArray: (column: any, values: any[]) => any;
114
+ isNull: (column: any) => any;
115
+ isNotNull: (column: any) => any;
116
+ between: (column: any, min: any, max: any) => any;
117
+ and: (...conditions: any[]) => any;
118
+ or: (...conditions: any[]) => any;
119
+ not: (condition: any) => any;
120
+ }
121
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/orm/drizzle/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export * from './base-repository';
2
+ export * from './repository-factory';
3
+ export * from './query-builder';
4
+ export * from './pagination';
5
+ export type { TransactionContext, ITransactionManager } from './transaction-manager';
6
+ export { BaseTransactionManager, InMemoryTransactionManager, getGlobalTransactionManager, setGlobalTransactionManager } from './transaction-manager';
7
+ export type { TransactionMetadata, RepositoryMetadata } from './decorators';
8
+ export { Repository, Transactional, Entity, Column } from './decorators';
9
+ export * from './transaction-interceptor';
10
+ export * from './transaction-propagation';
11
+ export * from './transaction-events';
12
+ export * from './transaction-plugin';
13
+ export * from './prisma';
14
+ export * from './typeorm';
15
+ export * from './drizzle';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/orm/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAG7B,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,sBAAsB,EACtB,0BAA0B,EAC1B,2BAA2B,EAC3B,2BAA2B,EAC5B,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,UAAU,EACV,aAAa,EACb,MAAM,EACN,MAAM,EACP,MAAM,cAAc,CAAC;AAEtB,cAAc,2BAA2B,CAAC;AAC1C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,147 @@
1
+ import { PaginationOptions, PaginatedResult, FindOptions } from './base-repository';
2
+ export interface CursorPaginationOptions {
3
+ cursor?: string;
4
+ limit: number;
5
+ direction?: 'forward' | 'backward';
6
+ }
7
+ export interface CursorPaginatedResult<T> {
8
+ data: T[];
9
+ nextCursor?: string;
10
+ prevCursor?: string;
11
+ hasNext: boolean;
12
+ hasPrev: boolean;
13
+ limit: number;
14
+ }
15
+ export interface OffsetPaginationOptions extends PaginationOptions {
16
+ page: number;
17
+ limit: number;
18
+ }
19
+ export interface PaginationMeta {
20
+ total: number;
21
+ page: number;
22
+ limit: number;
23
+ totalPages: number;
24
+ hasNext: boolean;
25
+ hasPrev: boolean;
26
+ firstPage: number;
27
+ lastPage: number;
28
+ }
29
+ /**
30
+ * Pagination utility class
31
+ */
32
+ export declare class PaginationHelper {
33
+ /**
34
+ * Calculate pagination metadata
35
+ */
36
+ static calculateMeta(total: number, page: number, limit: number): PaginationMeta;
37
+ /**
38
+ * Calculate offset from page and limit
39
+ */
40
+ static calculateOffset(page: number, limit: number): number;
41
+ /**
42
+ * Calculate page from offset and limit
43
+ */
44
+ static calculatePage(offset: number, limit: number): number;
45
+ /**
46
+ * Validate pagination parameters
47
+ */
48
+ static validatePagination(page: number, limit: number): void;
49
+ /**
50
+ * Create paginated result
51
+ */
52
+ static createPaginatedResult<T>(data: T[], total: number, page: number, limit: number): PaginatedResult<T>;
53
+ /**
54
+ * Extract pagination options from query parameters
55
+ */
56
+ static extractPaginationFromQuery(query: any): OffsetPaginationOptions;
57
+ }
58
+ /**
59
+ * Cursor-based pagination helper
60
+ */
61
+ export declare class CursorPaginationHelper {
62
+ /**
63
+ * Encode cursor from object
64
+ */
65
+ static encodeCursor(data: any): string;
66
+ /**
67
+ * Decode cursor to object
68
+ */
69
+ static decodeCursor(cursor: string): any;
70
+ /**
71
+ * Create cursor from entity
72
+ */
73
+ static createCursor(entity: any, cursorField?: string): string;
74
+ /**
75
+ * Extract cursor value
76
+ */
77
+ static extractCursorValue(cursor: string, cursorField?: string): any;
78
+ /**
79
+ * Create cursor paginated result
80
+ */
81
+ static createCursorPaginatedResult<T>(data: T[], limit: number, cursorField?: string): CursorPaginatedResult<T>;
82
+ }
83
+ /**
84
+ * Advanced pagination builder
85
+ */
86
+ export declare class PaginationBuilder<T> {
87
+ private baseQuery;
88
+ private options;
89
+ constructor(baseQuery?: FindOptions);
90
+ /**
91
+ * Set offset-based pagination
92
+ */
93
+ offset(page: number, limit: number): this;
94
+ /**
95
+ * Set cursor-based pagination
96
+ */
97
+ cursor(cursor: string, limit: number, cursorField?: string): this;
98
+ /**
99
+ * Set sorting
100
+ */
101
+ orderBy(field: keyof T, direction?: 'asc' | 'desc'): this;
102
+ /**
103
+ * Add multiple sorting
104
+ */
105
+ orderByMultiple(sorts: Array<{
106
+ field: keyof T;
107
+ direction: 'asc' | 'desc';
108
+ }>): this;
109
+ /**
110
+ * Add where conditions
111
+ */
112
+ where(conditions: Partial<T>): this;
113
+ /**
114
+ * Add select fields
115
+ */
116
+ select(fields: (keyof T)[]): this;
117
+ /**
118
+ * Add include relations
119
+ */
120
+ include(relations: string[]): this;
121
+ /**
122
+ * Build the final query options
123
+ */
124
+ build(): FindOptions;
125
+ /**
126
+ * Reset the builder
127
+ */
128
+ reset(): this;
129
+ }
130
+ /**
131
+ * Pagination decorator for automatic pagination handling
132
+ */
133
+ export declare function Paginated(defaultLimit?: number, maxLimit?: number): (target: any, propertyKey: string, descriptor: PropertyDescriptor) => PropertyDescriptor;
134
+ /**
135
+ * Pagination response transformer
136
+ */
137
+ export declare class PaginationTransformer {
138
+ /**
139
+ * Transform paginated result to API response format
140
+ */
141
+ static toApiResponse<T>(result: PaginatedResult<T>, baseUrl?: string): any;
142
+ /**
143
+ * Transform cursor paginated result to API response format
144
+ */
145
+ static toCursorApiResponse<T>(result: CursorPaginatedResult<T>, baseUrl?: string): any;
146
+ }
147
+ //# sourceMappingURL=pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/orm/pagination.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { PrismaPlugin, createPrismaPlugin } from './plugin';
2
+ export { PrismaRepository } from './repository';
3
+ export { PrismaTransactionManager } from './transaction-manager';
4
+ export { PrismaZodSchemaGenerator } from './schema-generator';
5
+ export * from './types';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/orm/prisma/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,cAAc,SAAS,CAAC"}
@@ -0,0 +1,68 @@
1
+ import { Plugin } from '../../core/plugin';
2
+ import { VeloceTS } from '../../core/application';
3
+ import { PrismaConfig, PrismaClientLike, PrismaModelMetadata } from './types';
4
+ import { PrismaRepository as PrismaRepositoryClass } from './repository';
5
+ import { PrismaTransactionManager } from './transaction-manager';
6
+ /**
7
+ * Prisma integration plugin for FastAPI-TS
8
+ */
9
+ export declare class PrismaPlugin implements Plugin {
10
+ name: string;
11
+ version: string;
12
+ private client;
13
+ private config;
14
+ private schemaGenerator;
15
+ private transactionManager;
16
+ private models;
17
+ constructor(client: PrismaClientLike, config?: PrismaConfig);
18
+ install(app: VeloceTS): Promise<void>;
19
+ /**
20
+ * Parse Prisma schema and generate Zod schemas
21
+ */
22
+ private parseAndGenerateSchemas;
23
+ /**
24
+ * Generate TypeScript file with Zod schemas
25
+ */
26
+ private generateZodSchemaFile;
27
+ /**
28
+ * Convert Zod schema to string representation (simplified)
29
+ */
30
+ private zodSchemaToString;
31
+ /**
32
+ * Register repository factory in DI container
33
+ */
34
+ private registerRepositoryFactory;
35
+ /**
36
+ * Register shutdown hook to disconnect from database
37
+ */
38
+ private registerShutdownHook;
39
+ /**
40
+ * Get model metadata
41
+ */
42
+ getModel(name: string): PrismaModelMetadata | undefined;
43
+ /**
44
+ * Get all models
45
+ */
46
+ getModels(): Map<string, PrismaModelMetadata>;
47
+ /**
48
+ * Create a repository for a specific model
49
+ */
50
+ createRepository<T>(modelName: string, zodSchema?: any): PrismaRepositoryClass<T>;
51
+ /**
52
+ * Get the Prisma client
53
+ */
54
+ getClient(): PrismaClientLike;
55
+ /**
56
+ * Get the transaction manager
57
+ */
58
+ getTransactionManager(): PrismaTransactionManager;
59
+ }
60
+ /**
61
+ * Helper function to create Prisma plugin
62
+ */
63
+ export declare function createPrismaPlugin(client: PrismaClientLike, config?: PrismaConfig): PrismaPlugin;
64
+ /**
65
+ * Decorator to automatically inject Prisma repository
66
+ */
67
+ export declare function PrismaRepository(modelName: string, zodSchema?: any): PropertyDecorator;
68
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/orm/prisma/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9E,OAAO,EAAE,gBAAgB,IAAI,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAMjE;;GAEG;AACH,qBAAa,YAAa,YAAW,MAAM;IACzC,IAAI,SAAY;IAChB,OAAO,SAAW;IAElB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,MAAM,CAA+C;gBAEjD,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,YAAY;IAYrD,OAAO,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB3C;;OAEG;YACW,uBAAuB;IA8BrC;;OAEG;YACW,qBAAqB;IA8BnC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAkCjC;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAe5B;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,GAAG,SAAS;IAIvD;;OAEG;IACH,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC;IAI7C;;OAEG;IACH,gBAAgB,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAcjF;;OAEG;IACH,SAAS,IAAI,gBAAgB;IAI7B;;OAEG;IACH,qBAAqB,IAAI,wBAAwB;CAGlD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,YAAY,GAAG,YAAY,CAEhG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,GAAG,iBAAiB,CAWtF"}
@@ -0,0 +1,70 @@
1
+ import { BaseRepository, FindOptions, FilterOptions, SortOptions, PaginationOptions, PaginatedResult } from '../base-repository';
2
+ import { PrismaRepositoryOptions, PrismaDelegate, PrismaClientLike } from './types';
3
+ /**
4
+ * Prisma-specific repository implementation
5
+ */
6
+ export declare class PrismaRepository<T, ID = string | number> extends BaseRepository<T, ID> {
7
+ protected client: PrismaClientLike;
8
+ protected delegate: PrismaDelegate;
9
+ protected modelName: string;
10
+ constructor(options: PrismaRepositoryOptions);
11
+ create(data: Partial<T>): Promise<T>;
12
+ findById(id: ID): Promise<T | null>;
13
+ findOne(options: FindOptions): Promise<T | null>;
14
+ findMany(options?: FindOptions): Promise<T[]>;
15
+ update(id: ID, data: Partial<T>): Promise<T>;
16
+ delete(id: ID): Promise<boolean>;
17
+ createMany(data: Partial<T>[]): Promise<T[]>;
18
+ updateMany(where: FilterOptions, data: Partial<T>): Promise<number>;
19
+ deleteMany(where: FilterOptions): Promise<number>;
20
+ count(where?: FilterOptions): Promise<number>;
21
+ exists(where: FilterOptions): Promise<boolean>;
22
+ findPaginated(options: FindOptions & {
23
+ pagination: Required<PaginationOptions>;
24
+ }): Promise<PaginatedResult<T>>;
25
+ withTransaction<R>(callback: (repo: this) => Promise<R>): Promise<R>;
26
+ private buildPrismaFindOptions;
27
+ protected buildWhereClause(where: FilterOptions): any;
28
+ protected buildOrderByClause(orderBy: SortOptions | SortOptions[]): any;
29
+ protected buildPaginationClause(pagination: PaginationOptions): any;
30
+ aggregate(options: {
31
+ where?: FilterOptions;
32
+ _count?: boolean | {
33
+ [key: string]: boolean;
34
+ };
35
+ _avg?: {
36
+ [key: string]: boolean;
37
+ };
38
+ _sum?: {
39
+ [key: string]: boolean;
40
+ };
41
+ _min?: {
42
+ [key: string]: boolean;
43
+ };
44
+ _max?: {
45
+ [key: string]: boolean;
46
+ };
47
+ }): Promise<any>;
48
+ groupBy(options: {
49
+ by: string[];
50
+ where?: FilterOptions;
51
+ having?: FilterOptions;
52
+ orderBy?: SortOptions | SortOptions[];
53
+ _count?: boolean | {
54
+ [key: string]: boolean;
55
+ };
56
+ _avg?: {
57
+ [key: string]: boolean;
58
+ };
59
+ _sum?: {
60
+ [key: string]: boolean;
61
+ };
62
+ _min?: {
63
+ [key: string]: boolean;
64
+ };
65
+ _max?: {
66
+ [key: string]: boolean;
67
+ };
68
+ }): Promise<any[]>;
69
+ }
70
+ //# sourceMappingURL=repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../src/orm/prisma/repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { z } from 'zod';
2
+ import { PrismaModelMetadata } from './types';
3
+ /**
4
+ * Generates Zod schemas from Prisma schema metadata
5
+ */
6
+ export declare class PrismaZodSchemaGenerator {
7
+ private modelSchemas;
8
+ /**
9
+ * Generate Zod schema for a Prisma model
10
+ */
11
+ generateModelSchema(model: PrismaModelMetadata): z.ZodSchema;
12
+ /**
13
+ * Generate Zod schema for a Prisma field
14
+ */
15
+ private generateFieldSchema;
16
+ /**
17
+ * Get base Zod schema for Prisma field type
18
+ */
19
+ private getBaseSchema;
20
+ /**
21
+ * Generate create schema (without auto-generated fields)
22
+ */
23
+ generateCreateSchema(model: PrismaModelMetadata): z.ZodSchema;
24
+ /**
25
+ * Generate update schema (all fields optional)
26
+ */
27
+ generateUpdateSchema(model: PrismaModelMetadata): z.ZodSchema;
28
+ /**
29
+ * Parse Prisma schema file and extract model metadata
30
+ */
31
+ static parsePrismaSchema(schemaContent: string): PrismaModelMetadata[];
32
+ /**
33
+ * Parse a Prisma field definition
34
+ */
35
+ private static parseField;
36
+ /**
37
+ * Generate all schemas for a model (base, create, update)
38
+ */
39
+ generateAllSchemas(model: PrismaModelMetadata): {
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
+ //# sourceMappingURL=schema-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema-generator.d.ts","sourceRoot":"","sources":["../../../../src/orm/prisma/schema-generator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAuB,MAAM,SAAS,CAAC;AAEnE;;GAEG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,YAAY,CAAkC;IAEtD;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,CAAC,CAAC,SAAS;IAiB5D;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAuB3B;;OAEG;IACH,OAAO,CAAC,aAAa;IA4BrB;;OAEG;IACH,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,CAAC,CAAC,SAAS;IAmB7D;;OAEG;IACH,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,CAAC,CAAC,SAAS;IA2B7D;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,mBAAmB,EAAE;IA0CtE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,UAAU;IA8BzB;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,mBAAmB;;;;;CAO9C"}
@@ -0,0 +1,32 @@
1
+ import { BaseTransactionManager, TransactionContext, TransactionMetadata } from '../transaction-manager';
2
+ import { PrismaClientLike } from './types';
3
+ /**
4
+ * Prisma-specific transaction manager
5
+ */
6
+ export declare class PrismaTransactionManager extends BaseTransactionManager {
7
+ private client;
8
+ private prismaTransactions;
9
+ constructor(client: PrismaClientLike);
10
+ begin(options?: TransactionMetadata): Promise<TransactionContext>;
11
+ commit(context: TransactionContext): Promise<void>;
12
+ rollback(context: TransactionContext): Promise<void>;
13
+ savepoint(context: TransactionContext, name: string): Promise<void>;
14
+ rollbackToSavepoint(context: TransactionContext, name: string): Promise<void>;
15
+ /**
16
+ * Execute a function within a Prisma transaction
17
+ */
18
+ executeInTransaction<T>(callback: (client: PrismaClientLike) => Promise<T>, options?: TransactionMetadata): Promise<T>;
19
+ /**
20
+ * Enhanced transaction handler that integrates with Prisma's transaction system
21
+ */
22
+ handleTransactional<T>(target: any, propertyKey: string, args: any[], originalMethod: Function, context?: any): Promise<T>;
23
+ /**
24
+ * Inject transaction client into repositories
25
+ */
26
+ private injectTransactionClient;
27
+ /**
28
+ * Create a repository with transaction support
29
+ */
30
+ createTransactionalRepository<T>(repositoryClass: new (...args: any[]) => T, options: any): T;
31
+ }
32
+ //# sourceMappingURL=transaction-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-manager.d.ts","sourceRoot":"","sources":["../../../../src/orm/prisma/transaction-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACzG,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,sBAAsB;IAClE,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,kBAAkB,CAA0B;gBAExC,MAAM,EAAE,gBAAgB;IAK9B,KAAK,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAcjE,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlD,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOpD,SAAS,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAYnE,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBnF;;OAEG;IACG,oBAAoB,CAAC,CAAC,EAC1B,QAAQ,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,EAClD,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,CAAC,CAAC;IAqBb;;OAEG;IACG,mBAAmB,CAAC,CAAC,EACzB,MAAM,EAAE,GAAG,EACX,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,GAAG,EAAE,EACX,cAAc,EAAE,QAAQ,EACxB,OAAO,CAAC,EAAE,GAAG,GACZ,OAAO,CAAC,CAAC,CAAC;IA8Cb;;OAEG;YACW,uBAAuB;IAkCrC;;OAEG;IACH,6BAA6B,CAAC,CAAC,EAC7B,eAAe,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAC1C,OAAO,EAAE,GAAG,GACX,CAAC;CAuBL"}