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,117 @@
1
+ import { Plugin } from '../core/plugin';
2
+ import { VeloceTS } from '../core/application';
3
+ /**
4
+ * Transaction plugin configuration
5
+ */
6
+ export interface TransactionPluginConfig {
7
+ enableLogging?: boolean;
8
+ enableMetrics?: boolean;
9
+ defaultIsolation?: 'READ_UNCOMMITTED' | 'READ_COMMITTED' | 'REPEATABLE_READ' | 'SERIALIZABLE';
10
+ defaultTimeout?: number;
11
+ customTransactionManager?: any;
12
+ }
13
+ /**
14
+ * Transaction management plugin for FastAPI-TS
15
+ */
16
+ export declare class TransactionPlugin implements Plugin {
17
+ name: string;
18
+ version: string;
19
+ private config;
20
+ private metricsListener?;
21
+ constructor(config?: TransactionPluginConfig);
22
+ install(app: VeloceTS): Promise<void>;
23
+ /**
24
+ * Set up transaction manager
25
+ */
26
+ private setupTransactionManager;
27
+ /**
28
+ * Set up event listeners
29
+ */
30
+ private setupEventListeners;
31
+ /**
32
+ * Register transaction utilities in DI container
33
+ */
34
+ private registerTransactionUtilities;
35
+ /**
36
+ * Get transaction metrics
37
+ */
38
+ getMetrics(): {
39
+ totalTransactions: number;
40
+ committedTransactions: number;
41
+ rolledBackTransactions: number;
42
+ averageDuration: number;
43
+ totalDuration: number;
44
+ } | undefined;
45
+ /**
46
+ * Reset transaction metrics
47
+ */
48
+ resetMetrics(): void;
49
+ /**
50
+ * Add custom event listener
51
+ */
52
+ addEventListener(listener: any): void;
53
+ /**
54
+ * Remove event listener
55
+ */
56
+ removeEventListener(listener: any): void;
57
+ }
58
+ /**
59
+ * Helper function to create transaction plugin
60
+ */
61
+ export declare function createTransactionPlugin(config?: TransactionPluginConfig): TransactionPlugin;
62
+ /**
63
+ * Transaction service for manual transaction management
64
+ */
65
+ export declare class TransactionService {
66
+ private transactionManager;
67
+ constructor(transactionManager: any);
68
+ /**
69
+ * Execute callback in transaction
70
+ */
71
+ executeInTransaction<T>(callback: () => Promise<T>): Promise<T>;
72
+ /**
73
+ * Create savepoint
74
+ */
75
+ createSavepoint(name: string): Promise<void>;
76
+ /**
77
+ * Rollback to savepoint
78
+ */
79
+ rollbackToSavepoint(name: string): Promise<void>;
80
+ /**
81
+ * Mark current transaction for rollback only
82
+ */
83
+ setRollbackOnly(): void;
84
+ /**
85
+ * Check if currently in transaction
86
+ */
87
+ isInTransaction(): boolean;
88
+ }
89
+ /**
90
+ * Transaction template for programmatic transaction management
91
+ */
92
+ export declare class TransactionTemplate {
93
+ private transactionManager;
94
+ private defaultOptions?;
95
+ constructor(transactionManager: any, defaultOptions?: {
96
+ isolation?: string;
97
+ timeout?: number;
98
+ readOnly?: boolean;
99
+ } | undefined);
100
+ /**
101
+ * Execute callback with transaction template
102
+ */
103
+ execute<T>(callback: () => Promise<T>, options?: {
104
+ isolation?: string;
105
+ timeout?: number;
106
+ readOnly?: boolean;
107
+ }): Promise<T>;
108
+ /**
109
+ * Execute callback with read-only transaction
110
+ */
111
+ executeReadOnly<T>(callback: () => Promise<T>): Promise<T>;
112
+ /**
113
+ * Execute callback with specific isolation level
114
+ */
115
+ executeWithIsolation<T>(callback: () => Promise<T>, isolation: string): Promise<T>;
116
+ }
117
+ //# sourceMappingURL=transaction-plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-plugin.d.ts","sourceRoot":"","sources":["../../../src/orm/transaction-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAK/C;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gBAAgB,CAAC,EAAE,kBAAkB,GAAG,gBAAgB,GAAG,iBAAiB,GAAG,cAAc,CAAC;IAC9F,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wBAAwB,CAAC,EAAE,GAAG,CAAC;CAChC;AAED;;GAEG;AACH,qBAAa,iBAAkB,YAAW,MAAM;IAC9C,IAAI,SAAiB;IACrB,OAAO,SAAW;IAElB,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,eAAe,CAAC,CAA6B;gBAEzC,MAAM,CAAC,EAAE,uBAAuB;IAUtC,OAAO,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB3C;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAY3B;;OAEG;IACH,OAAO,CAAC,4BAA4B;IA4DpC;;OAEG;IACH,UAAU;;;;;;;IAIV;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI;IAIrC;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,GAAG,GAAG,IAAI;CAGzC;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE,uBAAuB,GAAG,iBAAiB,CAE3F;AAED;;GAEG;AACH,qBAAa,kBAAkB;IACjB,OAAO,CAAC,kBAAkB;gBAAlB,kBAAkB,EAAE,GAAG;IAE3C;;OAEG;IACG,oBAAoB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAmBrE;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKlD;;OAEG;IACG,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKtD;;OAEG;IACH,eAAe,IAAI,IAAI;IAKvB;;OAEG;IACH,eAAe,IAAI,OAAO;CAK3B;AAED;;GAEG;AACH,qBAAa,mBAAmB;IAE5B,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,cAAc,CAAC;gBADf,kBAAkB,EAAE,GAAG,EACvB,cAAc,CAAC,EAAE;QACvB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,YAAA;IAGH;;OAEG;IACG,OAAO,CAAC,CAAC,EACb,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,GACA,OAAO,CAAC,CAAC,CAAC;IAoBb;;OAEG;IACG,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIhE;;OAEG;IACG,oBAAoB,CAAC,CAAC,EAC1B,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,CAAC,CAAC;CAGd"}
@@ -0,0 +1,49 @@
1
+ import { TransactionContext, TransactionMetadata } from './transaction-manager';
2
+ export declare enum TransactionPropagation {
3
+ REQUIRED = "REQUIRED",// Join existing transaction or create new one
4
+ REQUIRES_NEW = "REQUIRES_NEW",// Always create new transaction
5
+ SUPPORTS = "SUPPORTS",// Join existing transaction if available, otherwise execute without transaction
6
+ NOT_SUPPORTED = "NOT_SUPPORTED",// Execute without transaction, suspend existing if present
7
+ MANDATORY = "MANDATORY",// Must have existing transaction, throw error if none
8
+ NEVER = "NEVER"
9
+ }
10
+ export interface EnhancedTransactionMetadata extends TransactionMetadata {
11
+ propagation?: TransactionPropagation;
12
+ rollbackFor?: (new (...args: any[]) => Error)[];
13
+ noRollbackFor?: (new (...args: any[]) => Error)[];
14
+ }
15
+ /**
16
+ * Transaction propagation manager
17
+ */
18
+ export declare class TransactionPropagationManager {
19
+ /**
20
+ * Determine if a new transaction should be started based on propagation
21
+ */
22
+ shouldStartNewTransaction(propagation: TransactionPropagation, existingTransaction?: TransactionContext): boolean;
23
+ /**
24
+ * Determine if existing transaction should be suspended
25
+ */
26
+ shouldSuspendTransaction(propagation: TransactionPropagation, existingTransaction?: TransactionContext): boolean;
27
+ /**
28
+ * Determine if method should execute within transaction
29
+ */
30
+ shouldExecuteInTransaction(propagation: TransactionPropagation, existingTransaction?: TransactionContext): boolean;
31
+ /**
32
+ * Determine if error should cause rollback
33
+ */
34
+ shouldRollbackForError(error: Error, metadata: EnhancedTransactionMetadata): boolean;
35
+ }
36
+ /**
37
+ * Enhanced @Transactional decorator with propagation support
38
+ */
39
+ export declare function TransactionalWithPropagation(options?: EnhancedTransactionMetadata): MethodDecorator;
40
+ /**
41
+ * Specific propagation decorators for convenience
42
+ */
43
+ export declare function Required(options?: Omit<EnhancedTransactionMetadata, 'propagation'>): MethodDecorator;
44
+ export declare function RequiresNew(options?: Omit<EnhancedTransactionMetadata, 'propagation'>): MethodDecorator;
45
+ export declare function Supports(options?: Omit<EnhancedTransactionMetadata, 'propagation'>): MethodDecorator;
46
+ export declare function NotSupported(options?: Omit<EnhancedTransactionMetadata, 'propagation'>): MethodDecorator;
47
+ export declare function Mandatory(options?: Omit<EnhancedTransactionMetadata, 'propagation'>): MethodDecorator;
48
+ export declare function Never(options?: Omit<EnhancedTransactionMetadata, 'propagation'>): MethodDecorator;
49
+ //# sourceMappingURL=transaction-propagation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-propagation.d.ts","sourceRoot":"","sources":["../../../src/orm/transaction-propagation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAGhF,oBAAY,sBAAsB;IAChC,QAAQ,aAAa,CAAY,8CAA8C;IAC/E,YAAY,iBAAiB,CAAI,gCAAgC;IACjE,QAAQ,aAAa,CAAY,gFAAgF;IACjH,aAAa,kBAAkB,CAAE,2DAA2D;IAC5F,SAAS,cAAc,CAAU,sDAAsD;IACvF,KAAK,UAAU;CAChB;AAGD,MAAM,WAAW,2BAA4B,SAAQ,mBAAmB;IACtE,WAAW,CAAC,EAAE,sBAAsB,CAAC;IACrC,WAAW,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;IAChD,aAAa,CAAC,EAAE,CAAC,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC;CACnD;AAED;;GAEG;AACH,qBAAa,6BAA6B;IACxC;;OAEG;IACH,yBAAyB,CACvB,WAAW,EAAE,sBAAsB,EACnC,mBAAmB,CAAC,EAAE,kBAAkB,GACvC,OAAO;IA+BV;;OAEG;IACH,wBAAwB,CACtB,WAAW,EAAE,sBAAsB,EACnC,mBAAmB,CAAC,EAAE,kBAAkB,GACvC,OAAO;IAIV;;OAEG;IACH,0BAA0B,CACxB,WAAW,EAAE,sBAAsB,EACnC,mBAAmB,CAAC,EAAE,kBAAkB,GACvC,OAAO;IAmBV;;OAEG;IACH,sBAAsB,CACpB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,2BAA2B,GACpC,OAAO;CAwBX;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,CAAC,EAAE,2BAA2B,GAAG,eAAe,CAgCnG;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,aAAa,CAAC,GAAG,eAAe,CAEpG;AAED,wBAAgB,WAAW,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,aAAa,CAAC,GAAG,eAAe,CAEvG;AAED,wBAAgB,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,aAAa,CAAC,GAAG,eAAe,CAEpG;AAED,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,aAAa,CAAC,GAAG,eAAe,CAExG;AAED,wBAAgB,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,aAAa,CAAC,GAAG,eAAe,CAErG;AAED,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,2BAA2B,EAAE,aAAa,CAAC,GAAG,eAAe,CAEjG"}
@@ -0,0 +1,40 @@
1
+ import 'reflect-metadata';
2
+ /**
3
+ * TypeORM-specific decorators for FastAPI-TS integration
4
+ */
5
+ export interface TypeORMEntityMetadata {
6
+ name?: string;
7
+ tableName?: string;
8
+ schema?: string;
9
+ database?: string;
10
+ synchronize?: boolean;
11
+ }
12
+ export interface TypeORMRepositoryMetadata {
13
+ entity: any;
14
+ dataSource?: string;
15
+ }
16
+ /**
17
+ * Enhanced Entity decorator for TypeORM integration
18
+ */
19
+ export declare function TypeORMEntity(options?: TypeORMEntityMetadata): ClassDecorator;
20
+ /**
21
+ * TypeORM Repository decorator for dependency injection
22
+ */
23
+ export declare function TypeORMRepository(entity: any, dataSource?: string): PropertyDecorator;
24
+ /**
25
+ * InjectDataSource decorator for injecting TypeORM DataSource
26
+ */
27
+ export declare function InjectDataSource(name?: string): PropertyDecorator;
28
+ /**
29
+ * InjectEntityManager decorator for injecting TypeORM EntityManager
30
+ */
31
+ export declare function InjectEntityManager(dataSource?: string): PropertyDecorator;
32
+ /**
33
+ * Migration decorator for marking classes as migrations
34
+ */
35
+ export declare function Migration(timestamp: number): ClassDecorator;
36
+ /**
37
+ * Subscriber decorator for marking classes as entity subscribers
38
+ */
39
+ export declare function Subscriber(): ClassDecorator;
40
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../../src/orm/typeorm/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B;;GAEG;AAGH,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAGD,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,GAAG,CAAC;IACZ,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,cAAc,CAY7E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,iBAAiB,CASrF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,iBAAiB,CASjE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAS1E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAS3D;AAED;;GAEG;AACH,wBAAgB,UAAU,IAAI,cAAc,CAQ3C"}
@@ -0,0 +1,6 @@
1
+ export { TypeORMPlugin, createTypeORMPlugin, Migration } from './plugin';
2
+ export { TypeORMRepository } from './repository';
3
+ export { TypeORMTransactionManager } from './transaction-manager';
4
+ export { TypeORMEntity } from './decorators';
5
+ export type { TypeORMConfig, TypeORMEntityMetadata, TypeORMColumnMetadata, TypeORMRelationMetadata, TypeORMRepositoryOptions } from './types';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/orm/typeorm/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EACV,aAAa,EACb,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,SAAS,CAAC"}
@@ -0,0 +1,100 @@
1
+ import { Plugin } from '../../core/plugin';
2
+ import { VeloceTS } from '../../core/application';
3
+ import { TypeORMConfig, DataSourceLike, TypeORMEntityMetadata } from './types';
4
+ import { TypeORMRepository } from './repository';
5
+ import { TypeORMTransactionManager } from './transaction-manager';
6
+ /**
7
+ * TypeORM integration plugin for FastAPI-TS
8
+ */
9
+ export declare class TypeORMPlugin implements Plugin {
10
+ name: string;
11
+ version: string;
12
+ private dataSource;
13
+ private config;
14
+ private transactionManager;
15
+ private entities;
16
+ constructor(dataSource: DataSourceLike, config?: Partial<TypeORMConfig>);
17
+ install(app: VeloceTS): Promise<void>;
18
+ /**
19
+ * Extract metadata from TypeORM entities
20
+ */
21
+ private extractEntityMetadata;
22
+ /**
23
+ * Register repository factory in DI container
24
+ */
25
+ private registerRepositoryFactory;
26
+ /**
27
+ * Register migration and seeding utilities
28
+ */
29
+ private registerMigrationUtilities;
30
+ /**
31
+ * Register shutdown hook to close data source
32
+ */
33
+ private registerShutdownHook;
34
+ /**
35
+ * Get entity metadata
36
+ */
37
+ getEntity(name: string): TypeORMEntityMetadata | undefined;
38
+ /**
39
+ * Get all entities
40
+ */
41
+ getEntities(): Map<string, TypeORMEntityMetadata>;
42
+ /**
43
+ * Create a repository for a specific entity
44
+ */
45
+ createRepository<T>(entity: any, zodSchema?: any): TypeORMRepository<T>;
46
+ /**
47
+ * Get the TypeORM data source
48
+ */
49
+ getDataSource(): DataSourceLike;
50
+ /**
51
+ * Get the transaction manager
52
+ */
53
+ getTransactionManager(): TypeORMTransactionManager;
54
+ /**
55
+ * Run migrations
56
+ */
57
+ runMigrations(): Promise<void>;
58
+ /**
59
+ * Revert last migration
60
+ */
61
+ revertMigration(): Promise<void>;
62
+ /**
63
+ * Synchronize database schema (use with caution in production)
64
+ */
65
+ synchronize(): Promise<void>;
66
+ /**
67
+ * Drop database schema (use with extreme caution)
68
+ */
69
+ dropSchema(): Promise<void>;
70
+ }
71
+ /**
72
+ * Helper function to create TypeORM plugin
73
+ */
74
+ export declare function createTypeORMPlugin(dataSource: DataSourceLike, config?: Partial<TypeORMConfig>): TypeORMPlugin;
75
+ /**
76
+ * Migration base class
77
+ */
78
+ export declare abstract class Migration {
79
+ abstract up(queryRunner: any): Promise<void>;
80
+ abstract down(queryRunner: any): Promise<void>;
81
+ }
82
+ /**
83
+ * Seeder base class
84
+ */
85
+ export declare abstract class Seeder {
86
+ abstract run(dataSource: DataSourceLike): Promise<void>;
87
+ }
88
+ /**
89
+ * Entity subscriber base class
90
+ */
91
+ export declare abstract class EntitySubscriber {
92
+ abstract listenTo(): any;
93
+ beforeInsert?(event: any): Promise<void> | void;
94
+ afterInsert?(event: any): Promise<void> | void;
95
+ beforeUpdate?(event: any): Promise<void> | void;
96
+ afterUpdate?(event: any): Promise<void> | void;
97
+ beforeRemove?(event: any): Promise<void> | void;
98
+ afterRemove?(event: any): Promise<void> | void;
99
+ }
100
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../../../src/orm/typeorm/plugin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { BaseRepository, FindOptions, FilterOptions, SortOptions, PaginationOptions, PaginatedResult } from '../base-repository';
2
+ import { TypeORMRepositoryOptions, DataSourceLike, RepositoryLike } from './types';
3
+ /**
4
+ * TypeORM-specific repository implementation
5
+ */
6
+ export declare class TypeORMRepository<T, ID = string | number> extends BaseRepository<T, ID> {
7
+ protected dataSource: DataSourceLike;
8
+ protected repository: RepositoryLike<T>;
9
+ protected entity: any;
10
+ constructor(options: TypeORMRepositoryOptions<T>);
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 buildTypeORMFindOptions;
27
+ protected buildWhereClause(where: FilterOptions): any;
28
+ protected buildOrderByClause(orderBy: SortOptions | SortOptions[]): any;
29
+ /**
30
+ * Create a query builder for complex queries
31
+ */
32
+ createQueryBuilder(alias?: string): import("./types").QueryBuilderLike<T>;
33
+ /**
34
+ * Execute raw SQL query
35
+ */
36
+ query(sql: string, parameters?: any[]): Promise<any>;
37
+ /**
38
+ * Soft delete (if entity supports it)
39
+ */
40
+ softDelete(id: ID): Promise<boolean>;
41
+ /**
42
+ * Restore soft deleted entity
43
+ */
44
+ restore(id: ID): Promise<boolean>;
45
+ /**
46
+ * Find with relations
47
+ */
48
+ findWithRelations(id: ID, relations: string[]): Promise<T | null>;
49
+ /**
50
+ * Bulk insert with better performance
51
+ */
52
+ bulkInsert(data: Partial<T>[]): Promise<void>;
53
+ /**
54
+ * Upsert operation (insert or update)
55
+ */
56
+ upsert(data: Partial<T>, conflictColumns: string[]): Promise<T>;
57
+ }
58
+ //# sourceMappingURL=repository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.d.ts","sourceRoot":"","sources":["../../../../src/orm/typeorm/repository.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import { BaseTransactionManager, TransactionContext, TransactionMetadata } from '../transaction-manager';
2
+ import { DataSourceLike, EntityManagerLike, QueryRunnerLike } from './types';
3
+ /**
4
+ * TypeORM-specific transaction manager
5
+ */
6
+ export declare class TypeORMTransactionManager extends BaseTransactionManager {
7
+ private dataSource;
8
+ private activeQueryRunners;
9
+ constructor(dataSource: DataSourceLike);
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 TypeORM transaction
17
+ */
18
+ executeInTransaction<T>(callback: (manager: EntityManagerLike) => Promise<T>, options?: TransactionMetadata): Promise<T>;
19
+ /**
20
+ * Enhanced transaction handler that integrates with TypeORM's transaction system
21
+ */
22
+ handleTransactional<T>(target: any, propertyKey: string, args: any[], originalMethod: Function, context?: any): Promise<T>;
23
+ /**
24
+ * Handle nested transactions using savepoints
25
+ */
26
+ protected handleNestedTransaction<T>(parentTransaction: TransactionContext, target: any, args: any[], originalMethod: Function): Promise<T>;
27
+ /**
28
+ * Inject transaction manager into repositories
29
+ */
30
+ private injectTransactionManager;
31
+ /**
32
+ * Create a repository with transaction support
33
+ */
34
+ createTransactionalRepository<T>(repositoryClass: new (...args: any[]) => T, options: any): T;
35
+ /**
36
+ * Get query runner for a transaction context
37
+ */
38
+ getQueryRunner(context: TransactionContext): QueryRunnerLike | undefined;
39
+ /**
40
+ * Check if a transaction is active
41
+ */
42
+ isTransactionActive(context: TransactionContext): boolean;
43
+ /**
44
+ * Get the data source
45
+ */
46
+ getDataSource(): DataSourceLike;
47
+ }
48
+ //# sourceMappingURL=transaction-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-manager.d.ts","sourceRoot":"","sources":["../../../../src/orm/typeorm/transaction-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AACzG,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE7E;;GAEG;AACH,qBAAa,yBAA0B,SAAQ,sBAAsB;IACnE,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,kBAAkB,CAAsC;gBAEpD,UAAU,EAAE,cAAc;IAKhC,KAAK,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAajE,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBlD,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBpD,SAAS,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWnE,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBnF;;OAEG;IACG,oBAAoB,CAAC,CAAC,EAC1B,QAAQ,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,EACpD,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;IA+Cb;;OAEG;cACa,uBAAuB,CAAC,CAAC,EACvC,iBAAiB,EAAE,kBAAkB,EACrC,MAAM,EAAE,GAAG,EACX,IAAI,EAAE,GAAG,EAAE,EACX,cAAc,EAAE,QAAQ,GACvB,OAAO,CAAC,CAAC,CAAC;IAcb;;OAEG;YACW,wBAAwB;IAwCtC;;OAEG;IACH,6BAA6B,CAAC,CAAC,EAC7B,eAAe,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAC1C,OAAO,EAAE,GAAG,GACX,CAAC;IA0BJ;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,kBAAkB,GAAG,eAAe,GAAG,SAAS;IAIxE;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO;IAKzD;;OAEG;IACH,aAAa,IAAI,cAAc;CAGhC"}
@@ -0,0 +1,139 @@
1
+ import { z } from 'zod';
2
+ export interface TypeORMConfig {
3
+ type: 'mysql' | 'postgres' | 'sqlite' | 'mariadb' | 'mssql' | 'oracle' | 'mongodb';
4
+ host?: string;
5
+ port?: number;
6
+ username?: string;
7
+ password?: string;
8
+ database?: string;
9
+ url?: string;
10
+ synchronize?: boolean;
11
+ logging?: boolean | 'all' | ('query' | 'error' | 'schema' | 'warn' | 'info' | 'log')[];
12
+ entities?: string[] | Function[];
13
+ migrations?: string[];
14
+ subscribers?: string[];
15
+ migrationsRun?: boolean;
16
+ dropSchema?: boolean;
17
+ cache?: boolean;
18
+ ssl?: boolean | any;
19
+ extra?: any;
20
+ }
21
+ export interface TypeORMEntityMetadata {
22
+ name: string;
23
+ tableName: string;
24
+ columns: TypeORMColumnMetadata[];
25
+ relations: TypeORMRelationMetadata[];
26
+ zodSchema?: z.ZodSchema;
27
+ }
28
+ export interface TypeORMColumnMetadata {
29
+ propertyName: string;
30
+ type: string;
31
+ isPrimary: boolean;
32
+ isGenerated: boolean;
33
+ isNullable: boolean;
34
+ isUnique: boolean;
35
+ length?: number;
36
+ default?: any;
37
+ }
38
+ export interface TypeORMRelationMetadata {
39
+ propertyName: string;
40
+ type: 'one-to-one' | 'one-to-many' | 'many-to-one' | 'many-to-many';
41
+ target: string;
42
+ inverseSide?: string;
43
+ joinColumn?: string;
44
+ joinTable?: string;
45
+ }
46
+ export interface DataSourceLike {
47
+ initialize(): Promise<void>;
48
+ destroy(): Promise<void>;
49
+ isInitialized: boolean;
50
+ manager: EntityManagerLike;
51
+ transaction<T>(runInTransaction: (manager: EntityManagerLike) => Promise<T>): Promise<T>;
52
+ createQueryRunner(): QueryRunnerLike;
53
+ getRepository<T>(target: any): RepositoryLike<T>;
54
+ getMetadata(target: any): any;
55
+ runMigrations?(): Promise<void>;
56
+ undoLastMigration?(): Promise<void>;
57
+ synchronize?(): Promise<void>;
58
+ dropDatabase?(): Promise<void>;
59
+ entityMetadatas?: any[];
60
+ }
61
+ export interface EntityManagerLike {
62
+ save<T>(entity: T): Promise<T>;
63
+ save<T>(entities: T[]): Promise<T[]>;
64
+ remove<T>(entity: T): Promise<T>;
65
+ remove<T>(entities: T[]): Promise<T[]>;
66
+ find<T>(entityClass: any, options?: any): Promise<T[]>;
67
+ findOne<T>(entityClass: any, options?: any): Promise<T | null>;
68
+ findOneBy<T>(entityClass: any, where: any): Promise<T | null>;
69
+ count<T>(entityClass: any, options?: any): Promise<number>;
70
+ create<T>(entityClass: any, entityLike?: any): T;
71
+ merge<T>(entityClass: any, mergeIntoEntity: T, ...entityLikes: any[]): T;
72
+ query(query: string, parameters?: any[]): Promise<any>;
73
+ transaction<T>(runInTransaction: (manager: EntityManagerLike) => Promise<T>): Promise<T>;
74
+ getRepository<T>(target: any): RepositoryLike<T>;
75
+ connection?: {
76
+ entityMetadatas?: any[];
77
+ };
78
+ }
79
+ export interface RepositoryLike<T> {
80
+ save(entity: T): Promise<T>;
81
+ save(entities: T[]): Promise<T[]>;
82
+ remove(entity: T): Promise<T>;
83
+ remove(entities: T[]): Promise<T[]>;
84
+ find(options?: any): Promise<T[]>;
85
+ findOne(options?: any): Promise<T | null>;
86
+ findOneBy(where: any): Promise<T | null>;
87
+ count(options?: any): Promise<number>;
88
+ create(entityLike?: any): T;
89
+ merge(mergeIntoEntity: T, ...entityLikes: any[]): T;
90
+ createQueryBuilder(alias?: string): QueryBuilderLike<T>;
91
+ delete(criteria: any): Promise<{
92
+ affected?: number;
93
+ }>;
94
+ update(criteria: any, partialEntity: any): Promise<{
95
+ affected?: number;
96
+ }>;
97
+ }
98
+ export interface QueryBuilderLike<T> {
99
+ select(selection?: string | string[]): this;
100
+ where(where: string, parameters?: any): this;
101
+ andWhere(where: string, parameters?: any): this;
102
+ orWhere(where: string, parameters?: any): this;
103
+ orderBy(sort: string, order?: 'ASC' | 'DESC'): this;
104
+ addOrderBy(sort: string, order?: 'ASC' | 'DESC'): this;
105
+ groupBy(groupBy: string): this;
106
+ having(having: string, parameters?: any): this;
107
+ limit(limit: number): this;
108
+ offset(offset: number): this;
109
+ skip(skip: number): this;
110
+ take(take: number): this;
111
+ leftJoin(property: string, alias: string, condition?: string): this;
112
+ innerJoin(property: string, alias: string, condition?: string): this;
113
+ insert(): InsertQueryBuilderLike<T>;
114
+ getMany(): Promise<T[]>;
115
+ getOne(): Promise<T | null>;
116
+ getCount(): Promise<number>;
117
+ getManyAndCount(): Promise<[T[], number]>;
118
+ }
119
+ export interface InsertQueryBuilderLike<T> {
120
+ into(target: any): this;
121
+ values(values: any | any[]): this;
122
+ execute(): Promise<any>;
123
+ }
124
+ export interface QueryRunnerLike {
125
+ connect(): Promise<void>;
126
+ release(): Promise<void>;
127
+ startTransaction(): Promise<void>;
128
+ commitTransaction(): Promise<void>;
129
+ rollbackTransaction(): Promise<void>;
130
+ isTransactionActive: boolean;
131
+ manager: EntityManagerLike;
132
+ }
133
+ export interface TypeORMRepositoryOptions<T> {
134
+ entity: any;
135
+ dataSource: DataSourceLike;
136
+ repository: RepositoryLike<T>;
137
+ zodSchema?: z.ZodSchema<T>;
138
+ }
139
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/orm/typeorm/types.ts"],"names":[],"mappings":"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"}