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,67 @@
1
+ import { z } from 'zod';
2
+ export interface PrismaConfig {
3
+ datasourceUrl?: string;
4
+ log?: ('query' | 'info' | 'warn' | 'error')[];
5
+ errorFormat?: 'pretty' | 'colorless' | 'minimal';
6
+ generateZodSchemas?: boolean;
7
+ schemaPath?: string;
8
+ outputPath?: string;
9
+ }
10
+ export interface PrismaModelMetadata {
11
+ name: string;
12
+ fields: PrismaFieldMetadata[];
13
+ relations: PrismaRelationMetadata[];
14
+ zodSchema?: z.ZodSchema;
15
+ }
16
+ export interface PrismaFieldMetadata {
17
+ name: string;
18
+ type: string;
19
+ isOptional: boolean;
20
+ isList: boolean;
21
+ isId: boolean;
22
+ isUnique: boolean;
23
+ hasDefaultValue: boolean;
24
+ relationName?: string;
25
+ }
26
+ export interface PrismaRelationMetadata {
27
+ name: string;
28
+ type: 'one-to-one' | 'one-to-many' | 'many-to-many';
29
+ model: string;
30
+ fields?: string[];
31
+ references?: string[];
32
+ }
33
+ export interface PrismaClientLike {
34
+ $connect(): Promise<void>;
35
+ $disconnect(): Promise<void>;
36
+ $transaction<T>(fn: (prisma: this) => Promise<T>, options?: {
37
+ maxWait?: number;
38
+ timeout?: number;
39
+ isolationLevel?: 'ReadUncommitted' | 'ReadCommitted' | 'RepeatableRead' | 'Serializable';
40
+ }): Promise<T>;
41
+ $executeRaw(query: TemplateStringsArray, ...values: any[]): Promise<number>;
42
+ $queryRaw<T = unknown>(query: TemplateStringsArray, ...values: any[]): Promise<T>;
43
+ }
44
+ export interface PrismaDelegate {
45
+ create(args: any): Promise<any>;
46
+ findUnique(args: any): Promise<any>;
47
+ findFirst(args: any): Promise<any>;
48
+ findMany(args: any): Promise<any[]>;
49
+ update(args: any): Promise<any>;
50
+ updateMany(args: any): Promise<{
51
+ count: number;
52
+ }>;
53
+ delete(args: any): Promise<any>;
54
+ deleteMany(args: any): Promise<{
55
+ count: number;
56
+ }>;
57
+ count(args?: any): Promise<number>;
58
+ aggregate(args: any): Promise<any>;
59
+ groupBy(args: any): Promise<any[]>;
60
+ }
61
+ export interface PrismaRepositoryOptions {
62
+ model: string;
63
+ client: PrismaClientLike;
64
+ delegate: PrismaDelegate;
65
+ zodSchema?: z.ZodSchema;
66
+ }
67
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/orm/prisma/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,129 @@
1
+ import { FilterOptions, SortOptions } from './base-repository';
2
+ export interface IQueryBuilder<T> {
3
+ select(fields?: (keyof T)[]): this;
4
+ where(conditions: FilterOptions): this;
5
+ orderBy(sort: SortOptions | SortOptions[]): this;
6
+ limit(count: number): this;
7
+ offset(count: number): this;
8
+ groupBy(fields: (keyof T)[]): this;
9
+ having(conditions: FilterOptions): this;
10
+ join(table: string, condition: string): this;
11
+ leftJoin(table: string, condition: string): this;
12
+ rightJoin(table: string, condition: string): this;
13
+ innerJoin(table: string, condition: string): this;
14
+ execute(): Promise<T[]>;
15
+ first(): Promise<T | null>;
16
+ count(): Promise<number>;
17
+ exists(): Promise<boolean>;
18
+ }
19
+ export interface QueryOperators {
20
+ eq(value: any): FilterCondition;
21
+ ne(value: any): FilterCondition;
22
+ gt(value: any): FilterCondition;
23
+ gte(value: any): FilterCondition;
24
+ lt(value: any): FilterCondition;
25
+ lte(value: any): FilterCondition;
26
+ like(pattern: string): FilterCondition;
27
+ ilike(pattern: string): FilterCondition;
28
+ in(values: any[]): FilterCondition;
29
+ notIn(values: any[]): FilterCondition;
30
+ between(min: any, max: any): FilterCondition;
31
+ isNull(): FilterCondition;
32
+ isNotNull(): FilterCondition;
33
+ and(...conditions: FilterCondition[]): FilterCondition;
34
+ or(...conditions: FilterCondition[]): FilterCondition;
35
+ not(condition: FilterCondition): FilterCondition;
36
+ }
37
+ export interface FilterCondition {
38
+ type: string;
39
+ field?: string;
40
+ value?: any;
41
+ values?: any[];
42
+ min?: any;
43
+ max?: any;
44
+ pattern?: string;
45
+ conditions?: FilterCondition[];
46
+ condition?: FilterCondition;
47
+ }
48
+ /**
49
+ * Generic query builder implementation
50
+ */
51
+ export declare class QueryBuilder<T> implements IQueryBuilder<T> {
52
+ private executor;
53
+ private operators;
54
+ private selectFields?;
55
+ private whereConditions;
56
+ private orderByClause?;
57
+ private limitCount?;
58
+ private offsetCount?;
59
+ private groupByFields?;
60
+ private havingConditions;
61
+ private joins;
62
+ constructor(executor: QueryExecutor<T>, operators?: QueryOperators);
63
+ select(fields?: (keyof T)[]): this;
64
+ where(conditions: FilterOptions): this;
65
+ orderBy(sort: SortOptions | SortOptions[]): this;
66
+ limit(count: number): this;
67
+ offset(count: number): this;
68
+ groupBy(fields: (keyof T)[]): this;
69
+ having(conditions: FilterOptions): this;
70
+ join(table: string, condition: string): this;
71
+ leftJoin(table: string, condition: string): this;
72
+ rightJoin(table: string, condition: string): this;
73
+ innerJoin(table: string, condition: string): this;
74
+ execute(): Promise<T[]>;
75
+ first(): Promise<T | null>;
76
+ count(): Promise<number>;
77
+ exists(): Promise<boolean>;
78
+ private buildFilterCondition;
79
+ private buildQuery;
80
+ private buildCountQuery;
81
+ }
82
+ export interface QueryDefinition {
83
+ select?: (keyof any)[] | string[];
84
+ where?: FilterCondition;
85
+ orderBy?: SortOptions | SortOptions[];
86
+ limit?: number;
87
+ offset?: number;
88
+ groupBy?: (keyof any)[];
89
+ having?: FilterCondition;
90
+ joins?: JoinClause[];
91
+ }
92
+ export interface JoinClause {
93
+ type: 'JOIN' | 'LEFT JOIN' | 'RIGHT JOIN' | 'INNER JOIN';
94
+ table: string;
95
+ condition: string;
96
+ }
97
+ export interface QueryExecutor<T> {
98
+ execute(query: QueryDefinition): Promise<T[]>;
99
+ count(query: QueryDefinition): Promise<number>;
100
+ }
101
+ /**
102
+ * Default query operators implementation
103
+ */
104
+ export declare class DefaultQueryOperators implements QueryOperators {
105
+ eq(value: any): FilterCondition;
106
+ ne(value: any): FilterCondition;
107
+ gt(value: any): FilterCondition;
108
+ gte(value: any): FilterCondition;
109
+ lt(value: any): FilterCondition;
110
+ lte(value: any): FilterCondition;
111
+ like(pattern: string): FilterCondition;
112
+ ilike(pattern: string): FilterCondition;
113
+ in(values: any[]): FilterCondition;
114
+ notIn(values: any[]): FilterCondition;
115
+ between(min: any, max: any): FilterCondition;
116
+ isNull(): FilterCondition;
117
+ isNotNull(): FilterCondition;
118
+ and(...conditions: FilterCondition[]): FilterCondition;
119
+ or(...conditions: FilterCondition[]): FilterCondition;
120
+ not(condition: FilterCondition): FilterCondition;
121
+ }
122
+ /**
123
+ * Query builder factory
124
+ */
125
+ export declare class QueryBuilderFactory {
126
+ static create<T>(executor: QueryExecutor<T>): QueryBuilder<T>;
127
+ static createWithOperators<T>(executor: QueryExecutor<T>, operators: QueryOperators): QueryBuilder<T>;
128
+ }
129
+ //# sourceMappingURL=query-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../../src/orm/query-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ import { z } from 'zod';
2
+ import { IBaseRepository } from './base-repository';
3
+ import { PrismaRepository } from './prisma/repository';
4
+ import { TypeORMRepository } from './typeorm/repository';
5
+ import { DrizzleRepository } from './drizzle/repository';
6
+ export interface IRepositoryFactory {
7
+ createRepository<T, ID = string | number>(type: 'prisma' | 'typeorm' | 'drizzle', options: any): IBaseRepository<T, ID>;
8
+ }
9
+ /**
10
+ * Universal repository factory for creating ORM-specific repositories
11
+ */
12
+ export declare class RepositoryFactory implements IRepositoryFactory {
13
+ private static instance;
14
+ private constructor();
15
+ static getInstance(): RepositoryFactory;
16
+ /**
17
+ * Create a repository based on ORM type
18
+ */
19
+ createRepository<T, ID = string | number>(type: 'prisma' | 'typeorm' | 'drizzle', options: any): IBaseRepository<T, ID>;
20
+ /**
21
+ * Create a Prisma repository
22
+ */
23
+ createPrismaRepository<T, ID = string | number>(options: {
24
+ client: any;
25
+ delegate: any;
26
+ model: string;
27
+ zodSchema?: z.ZodSchema<T>;
28
+ }): PrismaRepository<T, ID>;
29
+ /**
30
+ * Create a TypeORM repository
31
+ */
32
+ createTypeORMRepository<T, ID = string | number>(options: {
33
+ dataSource: any;
34
+ repository: any;
35
+ entity: any;
36
+ zodSchema?: z.ZodSchema<T>;
37
+ }): TypeORMRepository<T, ID>;
38
+ /**
39
+ * Create a Drizzle repository
40
+ */
41
+ createDrizzleRepository<T, ID = string | number>(options: {
42
+ database: any;
43
+ table: any;
44
+ zodSchema?: z.ZodSchema<T>;
45
+ }): DrizzleRepository<T, ID>;
46
+ }
47
+ /**
48
+ * Repository registry for managing multiple repositories
49
+ */
50
+ export declare class RepositoryRegistry {
51
+ private repositories;
52
+ private factory;
53
+ constructor();
54
+ /**
55
+ * Register a repository
56
+ */
57
+ register<T, ID = string | number>(name: string, repository: IBaseRepository<T, ID>): void;
58
+ /**
59
+ * Get a registered repository
60
+ */
61
+ get<T, ID = string | number>(name: string): IBaseRepository<T, ID> | undefined;
62
+ /**
63
+ * Create and register a repository
64
+ */
65
+ createAndRegister<T, ID = string | number>(name: string, type: 'prisma' | 'typeorm' | 'drizzle', options: any): IBaseRepository<T, ID>;
66
+ /**
67
+ * Remove a repository
68
+ */
69
+ remove(name: string): boolean;
70
+ /**
71
+ * Get all registered repository names
72
+ */
73
+ getNames(): string[];
74
+ /**
75
+ * Clear all repositories
76
+ */
77
+ clear(): void;
78
+ /**
79
+ * Get repository count
80
+ */
81
+ size(): number;
82
+ }
83
+ /**
84
+ * Generic repository decorator for automatic repository creation
85
+ */
86
+ export declare function GenericRepository<T>(name: string, type: 'prisma' | 'typeorm' | 'drizzle', options: any): PropertyDecorator;
87
+ /**
88
+ * Repository mixin for adding common repository functionality
89
+ *
90
+ * Note: Members are public because TypeScript doesn't allow exporting
91
+ * anonymous classes with protected/private members (TS4094)
92
+ */
93
+ export declare function withRepositoryMixin<T extends new (...args: any[]) => {}>(Base: T): {
94
+ new (...args: any[]): {
95
+ repositories: RepositoryRegistry;
96
+ /**
97
+ * Get a repository by name
98
+ */
99
+ getRepository<R, ID = string | number>(name: string): IBaseRepository<R, ID> | undefined;
100
+ /**
101
+ * Create and register a repository
102
+ */
103
+ createRepository<R, ID = string | number>(name: string, type: "prisma" | "typeorm" | "drizzle", options: any): IBaseRepository<R, ID>;
104
+ /**
105
+ * Execute operation with multiple repositories in transaction
106
+ */
107
+ withRepositories<R>(repositoryNames: string[], callback: (repos: Map<string, IBaseRepository<any>>) => Promise<R>): Promise<R>;
108
+ };
109
+ } & T;
110
+ /**
111
+ * Repository service base class
112
+ */
113
+ export declare abstract class RepositoryService {
114
+ protected repositories: RepositoryRegistry;
115
+ constructor();
116
+ /**
117
+ * Initialize repositories - to be implemented by subclasses
118
+ */
119
+ protected abstract initializeRepositories(): void;
120
+ /**
121
+ * Get a repository by name
122
+ */
123
+ protected getRepository<T, ID = string | number>(name: string): IBaseRepository<T, ID>;
124
+ /**
125
+ * Execute operation in transaction across multiple repositories
126
+ */
127
+ protected executeInTransaction<T>(repositoryNames: string[], callback: (repos: Map<string, IBaseRepository<any>>) => Promise<T>): Promise<T>;
128
+ }
129
+ export declare const globalRepositoryRegistry: RepositoryRegistry;
130
+ //# sourceMappingURL=repository-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository-factory.d.ts","sourceRoot":"","sources":["../../../src/orm/repository-factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ import { TransactionContext } from './transaction-manager';
2
+ export declare enum TransactionEventType {
3
+ BEFORE_BEGIN = "BEFORE_BEGIN",
4
+ AFTER_BEGIN = "AFTER_BEGIN",
5
+ BEFORE_COMMIT = "BEFORE_COMMIT",
6
+ AFTER_COMMIT = "AFTER_COMMIT",
7
+ BEFORE_ROLLBACK = "BEFORE_ROLLBACK",
8
+ AFTER_ROLLBACK = "AFTER_ROLLBACK",
9
+ BEFORE_SAVEPOINT = "BEFORE_SAVEPOINT",
10
+ AFTER_SAVEPOINT = "AFTER_SAVEPOINT",
11
+ BEFORE_ROLLBACK_TO_SAVEPOINT = "BEFORE_ROLLBACK_TO_SAVEPOINT",
12
+ AFTER_ROLLBACK_TO_SAVEPOINT = "AFTER_ROLLBACK_TO_SAVEPOINT"
13
+ }
14
+ export interface TransactionEvent {
15
+ type: TransactionEventType;
16
+ context: TransactionContext;
17
+ timestamp: Date;
18
+ metadata?: any;
19
+ error?: Error;
20
+ }
21
+ export interface TransactionEventListener {
22
+ onTransactionEvent(event: TransactionEvent): Promise<void> | void;
23
+ }
24
+ export interface TransactionBeginListener {
25
+ onBeforeBegin?(context: TransactionContext): Promise<void> | void;
26
+ onAfterBegin?(context: TransactionContext): Promise<void> | void;
27
+ }
28
+ export interface TransactionCommitListener {
29
+ onBeforeCommit?(context: TransactionContext): Promise<void> | void;
30
+ onAfterCommit?(context: TransactionContext): Promise<void> | void;
31
+ }
32
+ export interface TransactionRollbackListener {
33
+ onBeforeRollback?(context: TransactionContext, error?: Error): Promise<void> | void;
34
+ onAfterRollback?(context: TransactionContext, error?: Error): Promise<void> | void;
35
+ }
36
+ export interface TransactionSavepointListener {
37
+ onBeforeSavepoint?(context: TransactionContext, name: string): Promise<void> | void;
38
+ onAfterSavepoint?(context: TransactionContext, name: string): Promise<void> | void;
39
+ onBeforeRollbackToSavepoint?(context: TransactionContext, name: string): Promise<void> | void;
40
+ onAfterRollbackToSavepoint?(context: TransactionContext, name: string): Promise<void> | void;
41
+ }
42
+ /**
43
+ * Transaction event manager
44
+ */
45
+ export declare class TransactionEventManager {
46
+ private listeners;
47
+ private beginListeners;
48
+ private commitListeners;
49
+ private rollbackListeners;
50
+ private savepointListeners;
51
+ /**
52
+ * Add a general transaction event listener
53
+ */
54
+ addListener(listener: TransactionEventListener): void;
55
+ /**
56
+ * Remove a general transaction event listener
57
+ */
58
+ removeListener(listener: TransactionEventListener): void;
59
+ /**
60
+ * Add a transaction begin listener
61
+ */
62
+ addBeginListener(listener: TransactionBeginListener): void;
63
+ /**
64
+ * Add a transaction commit listener
65
+ */
66
+ addCommitListener(listener: TransactionCommitListener): void;
67
+ /**
68
+ * Add a transaction rollback listener
69
+ */
70
+ addRollbackListener(listener: TransactionRollbackListener): void;
71
+ /**
72
+ * Add a transaction savepoint listener
73
+ */
74
+ addSavepointListener(listener: TransactionSavepointListener): void;
75
+ /**
76
+ * Emit a transaction event
77
+ */
78
+ emitEvent(event: TransactionEvent): Promise<void>;
79
+ /**
80
+ * Emit event to specific listeners
81
+ */
82
+ private emitSpecificEvent;
83
+ /**
84
+ * Clear all listeners
85
+ */
86
+ clearAllListeners(): void;
87
+ }
88
+ /**
89
+ * Transaction event decorators
90
+ */
91
+ export declare function OnTransactionBegin(): MethodDecorator;
92
+ export declare function OnTransactionCommit(): MethodDecorator;
93
+ export declare function OnTransactionRollback(): MethodDecorator;
94
+ /**
95
+ * Built-in transaction event listeners
96
+ */
97
+ /**
98
+ * Transaction logging listener
99
+ */
100
+ export declare class TransactionLoggingListener implements TransactionEventListener {
101
+ private logger;
102
+ constructor(logger?: (message: string, data?: any) => void);
103
+ onTransactionEvent(event: TransactionEvent): Promise<void>;
104
+ }
105
+ /**
106
+ * Transaction metrics listener
107
+ */
108
+ export declare class TransactionMetricsListener implements TransactionEventListener {
109
+ private metrics;
110
+ onTransactionEvent(event: TransactionEvent): Promise<void>;
111
+ private updateDuration;
112
+ getMetrics(): {
113
+ totalTransactions: number;
114
+ committedTransactions: number;
115
+ rolledBackTransactions: number;
116
+ averageDuration: number;
117
+ totalDuration: number;
118
+ };
119
+ resetMetrics(): void;
120
+ }
121
+ export declare const globalTransactionEventManager: TransactionEventManager;
122
+ //# sourceMappingURL=transaction-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-events.d.ts","sourceRoot":"","sources":["../../../src/orm/transaction-events.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import { Context } from 'hono';
2
+ /**
3
+ * Transaction interceptor for automatic transaction handling
4
+ */
5
+ export declare class TransactionInterceptor {
6
+ private static instance;
7
+ private constructor();
8
+ static getInstance(): TransactionInterceptor;
9
+ /**
10
+ * Intercept method calls and handle transactions
11
+ */
12
+ intercept(target: any, propertyKey: string, args: any[], originalMethod: Function, context?: Context): Promise<any>;
13
+ /**
14
+ * Create a transactional proxy for an object
15
+ */
16
+ createTransactionalProxy<T extends object>(target: T, context?: Context): T;
17
+ }
18
+ /**
19
+ * Transaction middleware for Hono
20
+ */
21
+ export declare function transactionMiddleware(): (c: Context, next: () => Promise<void>) => Promise<void>;
22
+ /**
23
+ * Get transaction interceptor from context
24
+ */
25
+ export declare function getTransactionInterceptor(c: Context): TransactionInterceptor;
26
+ /**
27
+ * Create transactional proxy from context
28
+ */
29
+ export declare function createTransactionalProxy<T extends object>(c: Context, target: T): T;
30
+ //# sourceMappingURL=transaction-interceptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-interceptor.d.ts","sourceRoot":"","sources":["../../../src/orm/transaction-interceptor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAG/B;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAyB;IAEhD,OAAO;IAEP,MAAM,CAAC,WAAW,IAAI,sBAAsB;IAO5C;;OAEG;IACG,SAAS,CACb,MAAM,EAAE,GAAG,EACX,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,GAAG,EAAE,EACX,cAAc,EAAE,QAAQ,EACxB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,GAAG,CAAC;IAoBf;;OAEG;IACH,wBAAwB,CAAC,CAAC,SAAS,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,CAAC;CAqB5E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,KACrB,GAAG,OAAO,EAAE,MAAM,MAAM,OAAO,CAAC,IAAI,CAAC,mBASpD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,OAAO,GAAG,sBAAsB,CAE5E;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAGnF"}
@@ -0,0 +1,64 @@
1
+ import { Context } from 'hono';
2
+ export interface TransactionMetadata {
3
+ isolation?: 'READ_UNCOMMITTED' | 'READ_COMMITTED' | 'REPEATABLE_READ' | 'SERIALIZABLE';
4
+ timeout?: number;
5
+ readOnly?: boolean;
6
+ propagation?: 'REQUIRED' | 'REQUIRES_NEW' | 'SUPPORTS' | 'NOT_SUPPORTED' | 'NEVER' | 'MANDATORY';
7
+ }
8
+ export interface TransactionContext {
9
+ id: string;
10
+ startTime: Date;
11
+ isolation?: string;
12
+ timeout?: number;
13
+ readOnly?: boolean;
14
+ savepoints: string[];
15
+ rollbackOnly: boolean;
16
+ }
17
+ export interface ITransactionManager {
18
+ begin(options?: TransactionMetadata): Promise<TransactionContext>;
19
+ commit(context: TransactionContext): Promise<void>;
20
+ rollback(context: TransactionContext): Promise<void>;
21
+ savepoint(context: TransactionContext, name: string): Promise<void>;
22
+ rollbackToSavepoint(context: TransactionContext, name: string): Promise<void>;
23
+ isActive(context: TransactionContext): boolean;
24
+ setRollbackOnly(context: TransactionContext): void;
25
+ handleTransactional<T>(target: any, propertyKey: string, args: any[], originalMethod: Function, context?: Context): Promise<T>;
26
+ }
27
+ /**
28
+ * Base transaction manager implementation
29
+ */
30
+ export declare abstract class BaseTransactionManager implements ITransactionManager {
31
+ private activeTransactions;
32
+ private requestTransactions;
33
+ abstract begin(options?: TransactionMetadata): Promise<TransactionContext>;
34
+ abstract commit(context: TransactionContext): Promise<void>;
35
+ abstract rollback(context: TransactionContext): Promise<void>;
36
+ abstract savepoint(context: TransactionContext, name: string): Promise<void>;
37
+ abstract rollbackToSavepoint(context: TransactionContext, name: string): Promise<void>;
38
+ isActive(context: TransactionContext): boolean;
39
+ setRollbackOnly(context: TransactionContext): void;
40
+ protected createTransactionContext(options?: TransactionMetadata): TransactionContext;
41
+ protected removeTransactionContext(context: TransactionContext): void;
42
+ getRequestTransaction(request: Context): TransactionContext | undefined;
43
+ setRequestTransaction(request: Context, context: TransactionContext): void;
44
+ clearRequestTransaction(request: Context): void;
45
+ handleTransactional<T>(target: any, propertyKey: string, args: any[], originalMethod: Function, context?: Context): Promise<T>;
46
+ private executeInNewTransaction;
47
+ private executeInExistingTransaction;
48
+ protected handleNestedTransaction<T>(parentTransaction: TransactionContext, target: any, args: any[], originalMethod: Function): Promise<T>;
49
+ }
50
+ /**
51
+ * In-memory transaction manager for testing
52
+ */
53
+ export declare class InMemoryTransactionManager extends BaseTransactionManager {
54
+ private transactions;
55
+ currentTransactionId: string | null;
56
+ begin(options?: TransactionMetadata): Promise<TransactionContext>;
57
+ commit(context: TransactionContext): Promise<void>;
58
+ rollback(context: TransactionContext): Promise<void>;
59
+ savepoint(context: TransactionContext, name: string): Promise<void>;
60
+ rollbackToSavepoint(context: TransactionContext, name: string): Promise<void>;
61
+ }
62
+ export declare function setGlobalTransactionManager(manager: ITransactionManager): void;
63
+ export declare function getGlobalTransactionManager(): ITransactionManager;
64
+ //# sourceMappingURL=transaction-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction-manager.d.ts","sourceRoot":"","sources":["../../../src/orm/transaction-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAG/B,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;AAGD,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;CACvB;AAGD,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClE,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnD,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,SAAS,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpE,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9E,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC;IAC/C,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACnD,mBAAmB,CAAC,CAAC,EACnB,MAAM,EAAE,GAAG,EACX,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,GAAG,EAAE,EACX,cAAc,EAAE,QAAQ,EACxB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,CAAC,CAAC,CAAC;CACf;AAED;;GAEG;AACH,8BAAsB,sBAAuB,YAAW,mBAAmB;IACzE,OAAO,CAAC,kBAAkB,CAAyC;IACnE,OAAO,CAAC,mBAAmB,CAA8C;IAEzE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAC1E,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3D,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7D,QAAQ,CAAC,SAAS,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC5E,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAEtF,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO;IAI9C,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAIlD,SAAS,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,kBAAkB;IAerF,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAKrE,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,kBAAkB,GAAG,SAAS;IAIvE,qBAAqB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAI1E,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAKzC,mBAAmB,CAAC,CAAC,EACzB,MAAM,EAAE,GAAG,EACX,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,GAAG,EAAE,EACX,cAAc,EAAE,QAAQ,EACxB,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,CAAC,CAAC;YAkDC,uBAAuB;YAmCvB,4BAA4B;cAW1B,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;CAad;AAED;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,sBAAsB;IACpE,OAAO,CAAC,YAAY,CAA0B;IACvC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE5C,KAAK,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAgBjE,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA0BlD,QAAQ,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAsBpD,SAAS,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnE,mBAAmB,CAAC,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAcpF;AAKD,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAE9E;AAED,wBAAgB,2BAA2B,IAAI,mBAAmB,CAKjE"}