@uql/core 3.7.13 → 3.8.1

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 (210) hide show
  1. package/CHANGELOG.md +11 -2
  2. package/README.md +16 -8
  3. package/dist/browser/uql-browser.min.js +16 -15
  4. package/dist/browser/uql-browser.min.js.map +1 -1
  5. package/dist/dialect/abstractDialect.d.ts +7 -2
  6. package/dist/dialect/abstractDialect.d.ts.map +1 -1
  7. package/dist/dialect/abstractDialect.js +9 -1
  8. package/dist/dialect/abstractDialect.js.map +1 -1
  9. package/dist/dialect/abstractSqlDialect.d.ts +5 -6
  10. package/dist/dialect/abstractSqlDialect.d.ts.map +1 -1
  11. package/dist/dialect/abstractSqlDialect.js +14 -13
  12. package/dist/dialect/abstractSqlDialect.js.map +1 -1
  13. package/dist/dialect/dialectConfig.d.ts +17 -0
  14. package/dist/dialect/dialectConfig.d.ts.map +1 -0
  15. package/dist/dialect/dialectConfig.js +71 -0
  16. package/dist/dialect/dialectConfig.js.map +1 -0
  17. package/dist/dialect/index.d.ts +1 -0
  18. package/dist/dialect/index.d.ts.map +1 -1
  19. package/dist/dialect/index.js +1 -0
  20. package/dist/dialect/index.js.map +1 -1
  21. package/dist/entity/decorator/definition.d.ts.map +1 -1
  22. package/dist/entity/decorator/definition.js +2 -1
  23. package/dist/entity/decorator/definition.js.map +1 -1
  24. package/dist/entity/decorator/index-decorator.d.ts +36 -0
  25. package/dist/entity/decorator/index-decorator.d.ts.map +1 -0
  26. package/dist/entity/decorator/index-decorator.js +51 -0
  27. package/dist/entity/decorator/index-decorator.js.map +1 -0
  28. package/dist/entity/decorator/index.d.ts +1 -0
  29. package/dist/entity/decorator/index.d.ts.map +1 -1
  30. package/dist/entity/decorator/index.js +1 -0
  31. package/dist/entity/decorator/index.js.map +1 -1
  32. package/dist/maria/mariaDialect.d.ts +2 -1
  33. package/dist/maria/mariaDialect.d.ts.map +1 -1
  34. package/dist/maria/mariaDialect.js +3 -0
  35. package/dist/maria/mariaDialect.js.map +1 -1
  36. package/dist/migrate/builder/columnBuilder.d.ts +75 -0
  37. package/dist/migrate/builder/columnBuilder.d.ts.map +1 -0
  38. package/dist/migrate/builder/columnBuilder.js +149 -0
  39. package/dist/migrate/builder/columnBuilder.js.map +1 -0
  40. package/dist/migrate/builder/expressions.d.ts +87 -0
  41. package/dist/migrate/builder/expressions.d.ts.map +1 -0
  42. package/dist/migrate/builder/expressions.js +150 -0
  43. package/dist/migrate/builder/expressions.js.map +1 -0
  44. package/dist/migrate/builder/index.d.ts +6 -0
  45. package/dist/migrate/builder/index.d.ts.map +1 -0
  46. package/dist/migrate/builder/index.js +6 -0
  47. package/dist/migrate/builder/index.js.map +1 -0
  48. package/dist/migrate/builder/migrationBuilder.d.ts +73 -0
  49. package/dist/migrate/builder/migrationBuilder.d.ts.map +1 -0
  50. package/dist/migrate/builder/migrationBuilder.js +326 -0
  51. package/dist/migrate/builder/migrationBuilder.js.map +1 -0
  52. package/dist/migrate/builder/tableBuilder.d.ts +51 -0
  53. package/dist/migrate/builder/tableBuilder.d.ts.map +1 -0
  54. package/dist/migrate/builder/tableBuilder.js +278 -0
  55. package/dist/migrate/builder/tableBuilder.js.map +1 -0
  56. package/dist/migrate/builder/types.d.ts +462 -0
  57. package/dist/migrate/builder/types.d.ts.map +1 -0
  58. package/dist/migrate/builder/types.js +8 -0
  59. package/dist/migrate/builder/types.js.map +1 -0
  60. package/dist/migrate/cli.d.ts +4 -6
  61. package/dist/migrate/cli.d.ts.map +1 -1
  62. package/dist/migrate/cli.js +166 -23
  63. package/dist/migrate/cli.js.map +1 -1
  64. package/dist/migrate/codegen/entityCodeGenerator.d.ts +137 -0
  65. package/dist/migrate/codegen/entityCodeGenerator.d.ts.map +1 -0
  66. package/dist/migrate/codegen/entityCodeGenerator.js +401 -0
  67. package/dist/migrate/codegen/entityCodeGenerator.js.map +1 -0
  68. package/dist/migrate/codegen/entityMerger.d.ts +111 -0
  69. package/dist/migrate/codegen/entityMerger.d.ts.map +1 -0
  70. package/dist/migrate/codegen/entityMerger.js +291 -0
  71. package/dist/migrate/codegen/entityMerger.js.map +1 -0
  72. package/dist/migrate/codegen/index.d.ts +10 -0
  73. package/dist/migrate/codegen/index.d.ts.map +1 -0
  74. package/dist/migrate/codegen/index.js +14 -0
  75. package/dist/migrate/codegen/index.js.map +1 -0
  76. package/dist/migrate/codegen/migrationCodeGenerator.d.ts +62 -0
  77. package/dist/migrate/codegen/migrationCodeGenerator.d.ts.map +1 -0
  78. package/dist/migrate/codegen/migrationCodeGenerator.js +356 -0
  79. package/dist/migrate/codegen/migrationCodeGenerator.js.map +1 -0
  80. package/dist/migrate/codegen/smartRelationDetector.d.ts +48 -0
  81. package/dist/migrate/codegen/smartRelationDetector.d.ts.map +1 -0
  82. package/dist/migrate/codegen/smartRelationDetector.js +135 -0
  83. package/dist/migrate/codegen/smartRelationDetector.js.map +1 -0
  84. package/dist/migrate/drift/driftDetector.d.ts +81 -0
  85. package/dist/migrate/drift/driftDetector.d.ts.map +1 -0
  86. package/dist/migrate/drift/driftDetector.js +248 -0
  87. package/dist/migrate/drift/driftDetector.js.map +1 -0
  88. package/dist/migrate/drift/index.d.ts +7 -0
  89. package/dist/migrate/drift/index.d.ts.map +1 -0
  90. package/dist/migrate/drift/index.js +7 -0
  91. package/dist/migrate/drift/index.js.map +1 -0
  92. package/dist/migrate/generator/index.d.ts +1 -3
  93. package/dist/migrate/generator/index.d.ts.map +1 -1
  94. package/dist/migrate/generator/index.js +1 -3
  95. package/dist/migrate/generator/index.js.map +1 -1
  96. package/dist/migrate/generator/mongoSchemaGenerator.d.ts +29 -3
  97. package/dist/migrate/generator/mongoSchemaGenerator.d.ts.map +1 -1
  98. package/dist/migrate/generator/mongoSchemaGenerator.js +86 -4
  99. package/dist/migrate/generator/mongoSchemaGenerator.js.map +1 -1
  100. package/dist/migrate/index.d.ts +7 -8
  101. package/dist/migrate/index.d.ts.map +1 -1
  102. package/dist/migrate/index.js +11 -9
  103. package/dist/migrate/index.js.map +1 -1
  104. package/dist/migrate/introspection/baseSqlIntrospector.d.ts +28 -0
  105. package/dist/migrate/introspection/baseSqlIntrospector.d.ts.map +1 -0
  106. package/dist/migrate/introspection/baseSqlIntrospector.js +135 -0
  107. package/dist/migrate/introspection/baseSqlIntrospector.js.map +1 -0
  108. package/dist/migrate/introspection/mongoIntrospector.d.ts +6 -0
  109. package/dist/migrate/introspection/mongoIntrospector.d.ts.map +1 -1
  110. package/dist/migrate/introspection/mongoIntrospector.js +54 -0
  111. package/dist/migrate/introspection/mongoIntrospector.js.map +1 -1
  112. package/dist/migrate/introspection/mysqlIntrospector.d.ts +2 -1
  113. package/dist/migrate/introspection/mysqlIntrospector.d.ts.map +1 -1
  114. package/dist/migrate/introspection/mysqlIntrospector.js +8 -6
  115. package/dist/migrate/introspection/mysqlIntrospector.js.map +1 -1
  116. package/dist/migrate/introspection/postgresIntrospector.d.ts +2 -1
  117. package/dist/migrate/introspection/postgresIntrospector.d.ts.map +1 -1
  118. package/dist/migrate/introspection/postgresIntrospector.js +3 -1
  119. package/dist/migrate/introspection/postgresIntrospector.js.map +1 -1
  120. package/dist/migrate/introspection/sqliteIntrospector.d.ts +2 -2
  121. package/dist/migrate/introspection/sqliteIntrospector.d.ts.map +1 -1
  122. package/dist/migrate/introspection/sqliteIntrospector.js +3 -4
  123. package/dist/migrate/introspection/sqliteIntrospector.js.map +1 -1
  124. package/dist/migrate/migrator.d.ts +29 -0
  125. package/dist/migrate/migrator.d.ts.map +1 -1
  126. package/dist/migrate/migrator.js +31 -23
  127. package/dist/migrate/migrator.js.map +1 -1
  128. package/dist/migrate/schemaGenerator.d.ts +72 -22
  129. package/dist/migrate/schemaGenerator.d.ts.map +1 -1
  130. package/dist/migrate/schemaGenerator.js +385 -153
  131. package/dist/migrate/schemaGenerator.js.map +1 -1
  132. package/dist/migrate/sync/index.d.ts +7 -0
  133. package/dist/migrate/sync/index.d.ts.map +1 -0
  134. package/dist/migrate/sync/index.js +7 -0
  135. package/dist/migrate/sync/index.js.map +1 -0
  136. package/dist/migrate/sync/schemaSync.d.ts +132 -0
  137. package/dist/migrate/sync/schemaSync.d.ts.map +1 -0
  138. package/dist/migrate/sync/schemaSync.js +260 -0
  139. package/dist/migrate/sync/schemaSync.js.map +1 -0
  140. package/dist/mongo/mongoDialect.d.ts +2 -1
  141. package/dist/mongo/mongoDialect.d.ts.map +1 -1
  142. package/dist/mongo/mongoDialect.js +3 -0
  143. package/dist/mongo/mongoDialect.js.map +1 -1
  144. package/dist/mysql/mysqlDialect.d.ts +2 -0
  145. package/dist/mysql/mysqlDialect.d.ts.map +1 -1
  146. package/dist/mysql/mysqlDialect.js +3 -0
  147. package/dist/mysql/mysqlDialect.js.map +1 -1
  148. package/dist/postgres/postgresDialect.js +1 -1
  149. package/dist/postgres/postgresDialect.js.map +1 -1
  150. package/dist/schema/canonicalType.d.ts +42 -0
  151. package/dist/schema/canonicalType.d.ts.map +1 -0
  152. package/dist/schema/canonicalType.js +524 -0
  153. package/dist/schema/canonicalType.js.map +1 -0
  154. package/dist/schema/index.d.ts +28 -0
  155. package/dist/schema/index.d.ts.map +1 -0
  156. package/dist/schema/index.js +29 -0
  157. package/dist/schema/index.js.map +1 -0
  158. package/dist/schema/schemaAST.d.ts +155 -0
  159. package/dist/schema/schemaAST.d.ts.map +1 -0
  160. package/dist/schema/schemaAST.js +496 -0
  161. package/dist/schema/schemaAST.js.map +1 -0
  162. package/dist/schema/schemaASTBuilder.d.ts +58 -0
  163. package/dist/schema/schemaASTBuilder.d.ts.map +1 -0
  164. package/dist/schema/schemaASTBuilder.js +193 -0
  165. package/dist/schema/schemaASTBuilder.js.map +1 -0
  166. package/dist/schema/schemaASTDiffer.d.ts +84 -0
  167. package/dist/schema/schemaASTDiffer.d.ts.map +1 -0
  168. package/dist/schema/schemaASTDiffer.js +431 -0
  169. package/dist/schema/schemaASTDiffer.js.map +1 -0
  170. package/dist/schema/types.d.ts +347 -0
  171. package/dist/schema/types.d.ts.map +1 -0
  172. package/dist/schema/types.js +11 -0
  173. package/dist/schema/types.js.map +1 -0
  174. package/dist/sqlite/sqliteDialect.js +1 -1
  175. package/dist/sqlite/sqliteDialect.js.map +1 -1
  176. package/dist/sqlite/sqliteQuerierPool.js.map +1 -1
  177. package/dist/type/config.d.ts +6 -0
  178. package/dist/type/config.d.ts.map +1 -1
  179. package/dist/type/entity.d.ts +24 -0
  180. package/dist/type/entity.d.ts.map +1 -1
  181. package/dist/type/migration.d.ts +50 -4
  182. package/dist/type/migration.d.ts.map +1 -1
  183. package/dist/util/field.util.d.ts +0 -1
  184. package/dist/util/field.util.d.ts.map +1 -1
  185. package/dist/util/field.util.js +8 -2
  186. package/dist/util/field.util.js.map +1 -1
  187. package/dist/util/logger.d.ts.map +1 -1
  188. package/dist/util/logger.js +2 -1
  189. package/dist/util/logger.js.map +1 -1
  190. package/dist/util/string.util.d.ts +24 -0
  191. package/dist/util/string.util.d.ts.map +1 -1
  192. package/dist/util/string.util.js +57 -0
  193. package/dist/util/string.util.js.map +1 -1
  194. package/package.json +2 -2
  195. package/dist/migrate/generator/mysqlSchemaGenerator.d.ts +0 -15
  196. package/dist/migrate/generator/mysqlSchemaGenerator.d.ts.map +0 -1
  197. package/dist/migrate/generator/mysqlSchemaGenerator.js +0 -88
  198. package/dist/migrate/generator/mysqlSchemaGenerator.js.map +0 -1
  199. package/dist/migrate/generator/postgresSchemaGenerator.d.ts +0 -19
  200. package/dist/migrate/generator/postgresSchemaGenerator.d.ts.map +0 -1
  201. package/dist/migrate/generator/postgresSchemaGenerator.js +0 -115
  202. package/dist/migrate/generator/postgresSchemaGenerator.js.map +0 -1
  203. package/dist/migrate/generator/sqliteSchemaGenerator.d.ts +0 -16
  204. package/dist/migrate/generator/sqliteSchemaGenerator.d.ts.map +0 -1
  205. package/dist/migrate/generator/sqliteSchemaGenerator.js +0 -74
  206. package/dist/migrate/generator/sqliteSchemaGenerator.js.map +0 -1
  207. package/dist/migrate/type.d.ts +0 -2
  208. package/dist/migrate/type.d.ts.map +0 -1
  209. package/dist/migrate/type.js +0 -2
  210. package/dist/migrate/type.js.map +0 -1
@@ -0,0 +1,291 @@
1
+ /**
2
+ * Entity Merger
3
+ *
4
+ * Merges generated entity code with existing TypeScript entity files.
5
+ * Uses string-based parsing to add new fields with JSDoc comments.
6
+ */
7
+ import { canonicalToColumnType, canonicalToTypeScript } from '../../schema/canonicalType.js';
8
+ import { camelCase, pascalCase, singularize } from '../../util/string.util.js';
9
+ /**
10
+ * Merges new fields from database schema into existing entity files.
11
+ */
12
+ export class EntityMerger {
13
+ options;
14
+ constructor(options = {}) {
15
+ this.options = {
16
+ addSyncComments: options.addSyncComments ?? true,
17
+ markRemovedAsDeprecated: options.markRemovedAsDeprecated ?? true,
18
+ propertyNameTransformer: options.propertyNameTransformer ?? this.defaultPropertyNameTransformer.bind(this),
19
+ };
20
+ }
21
+ /**
22
+ * Merge new fields into existing entity source code.
23
+ */
24
+ merge(existingCode, fieldsToAdd, fieldsToDeprecate = []) {
25
+ let code = existingCode;
26
+ let fieldsAdded = 0;
27
+ let fieldsDeprecated = 0;
28
+ // Find the existing property names to avoid duplicates
29
+ const existingProps = this.extractPropertyNames(code);
30
+ // Filter out fields that already exist
31
+ const newFields = fieldsToAdd.filter((f) => !existingProps.has(f.propertyName));
32
+ // Find the position to insert new fields (before closing brace)
33
+ const insertPosition = this.findInsertPosition(code);
34
+ if (insertPosition === -1) {
35
+ return { code, fieldsAdded: 0, fieldsDeprecated: 0, modified: false };
36
+ }
37
+ // Generate code for new fields
38
+ const newFieldsCode = this.generateFieldsCode(newFields);
39
+ if (newFieldsCode) {
40
+ // Insert the new fields
41
+ code = code.slice(0, insertPosition) + newFieldsCode + code.slice(insertPosition);
42
+ fieldsAdded = newFields.length;
43
+ }
44
+ // Mark fields as deprecated
45
+ if (this.options.markRemovedAsDeprecated) {
46
+ for (const field of fieldsToDeprecate) {
47
+ const deprecatedCode = this.markFieldAsDeprecated(code, field);
48
+ if (deprecatedCode !== code) {
49
+ code = deprecatedCode;
50
+ fieldsDeprecated++;
51
+ }
52
+ }
53
+ }
54
+ return {
55
+ code,
56
+ fieldsAdded,
57
+ fieldsDeprecated,
58
+ modified: fieldsAdded > 0 || fieldsDeprecated > 0,
59
+ };
60
+ }
61
+ /**
62
+ * Extract existing property names from entity code.
63
+ */
64
+ extractPropertyNames(code) {
65
+ const props = new Set();
66
+ // Match property declarations: propertyName?: Type;
67
+ const regex = /^\s*(?:readonly\s+)?(\w+)\s*[?!]?\s*:/gm;
68
+ let match = regex.exec(code);
69
+ while (match !== null) {
70
+ props.add(match[1]);
71
+ match = regex.exec(code);
72
+ }
73
+ return props;
74
+ }
75
+ /**
76
+ * Find the position to insert new fields (before the last closing brace).
77
+ */
78
+ findInsertPosition(code) {
79
+ // Find the last closing brace that ends the class
80
+ const lines = code.split('\n');
81
+ let braceCount = 0;
82
+ let inClass = false;
83
+ let lastPropertyLine = -1;
84
+ for (let i = 0; i < lines.length; i++) {
85
+ const line = lines[i];
86
+ if (line.includes('class ')) {
87
+ inClass = true;
88
+ }
89
+ if (inClass) {
90
+ // Count braces
91
+ for (const char of line) {
92
+ if (char === '{')
93
+ braceCount++;
94
+ if (char === '}')
95
+ braceCount--;
96
+ }
97
+ // Track property declarations
98
+ if (/^\s*(?:@\w+|readonly\s+|\w+\s*[?!]?:)/.test(line)) {
99
+ lastPropertyLine = i;
100
+ }
101
+ // Found the closing brace
102
+ if (braceCount === 0 && inClass) {
103
+ // Insert before the closing brace, after the last property
104
+ const insertLineIndex = lastPropertyLine >= 0 ? lastPropertyLine + 1 : i;
105
+ // Calculate character position
106
+ let pos = 0;
107
+ for (let j = 0; j < insertLineIndex; j++) {
108
+ pos += lines[j].length + 1; // +1 for newline
109
+ }
110
+ return pos;
111
+ }
112
+ }
113
+ }
114
+ return -1;
115
+ }
116
+ /**
117
+ * Generate code for new fields.
118
+ */
119
+ generateFieldsCode(fields) {
120
+ if (fields.length === 0)
121
+ return '';
122
+ const lines = [''];
123
+ for (const field of fields) {
124
+ if (field.isRelation && field.relation) {
125
+ lines.push(...this.generateRelationField(field));
126
+ }
127
+ else {
128
+ lines.push(...this.generateColumnField(field));
129
+ }
130
+ lines.push('');
131
+ }
132
+ return lines.join('\n');
133
+ }
134
+ /**
135
+ * Generate code for a column field.
136
+ */
137
+ generateColumnField(field) {
138
+ const lines = [];
139
+ const col = field.column;
140
+ const tsType = canonicalToTypeScript(col.type);
141
+ // JSDoc comment
142
+ if (this.options.addSyncComments) {
143
+ lines.push(' /**');
144
+ lines.push(` * @sync-added ${new Date().toISOString().split('T')[0]}`);
145
+ lines.push(` * Column discovered in database but not in entity.`);
146
+ lines.push(` * Type: ${this.formatTypeDescription(col.type)}, Nullable: ${col.nullable}`);
147
+ lines.push(' */');
148
+ }
149
+ // Decorator
150
+ if (col.isPrimaryKey) {
151
+ lines.push(` @Id()`);
152
+ }
153
+ else {
154
+ const fieldOptions = this.buildFieldOptions(col);
155
+ lines.push(` @Field(${fieldOptions})`);
156
+ }
157
+ // Property
158
+ const nullable = col.nullable ? '?' : '';
159
+ lines.push(` ${field.propertyName}${nullable}: ${tsType};`);
160
+ return lines;
161
+ }
162
+ /**
163
+ * Generate code for a relation field.
164
+ */
165
+ generateRelationField(field) {
166
+ const lines = [];
167
+ const rel = field.relation;
168
+ if (!rel)
169
+ return lines;
170
+ // Determine related table and decorator
171
+ const isOutgoing = rel.from.columns.some((c) => c.name === field.column.name);
172
+ const relatedTable = isOutgoing ? rel.to.table : rel.from.table;
173
+ const decoratorName = this.getRelationDecoratorName(rel.type, !isOutgoing);
174
+ const relatedClassName = this.toPascalCase(this.singularize(relatedTable.name));
175
+ // JSDoc comment
176
+ if (this.options.addSyncComments) {
177
+ lines.push(' /**');
178
+ lines.push(` * @sync-added ${new Date().toISOString().split('T')[0]}`);
179
+ lines.push(` * Foreign key relation detected: references "${relatedTable.name}"`);
180
+ lines.push(' */');
181
+ }
182
+ // Decorator
183
+ lines.push(` @${decoratorName}({ entity: () => ${relatedClassName} })`);
184
+ // Property
185
+ const isArray = decoratorName === 'OneToMany' || decoratorName === 'ManyToMany';
186
+ const typeStr = isArray ? `Relation<${relatedClassName}[]>` : `Relation<${relatedClassName}>`;
187
+ lines.push(` ${field.propertyName}?: ${typeStr};`);
188
+ return lines;
189
+ }
190
+ /**
191
+ * Mark a field as deprecated in the source code.
192
+ */
193
+ markFieldAsDeprecated(code, field) {
194
+ // Find the property declaration
195
+ const propRegex = new RegExp(`(^\\s*)(@\\w+.*?\\n\\s*)*?(${field.propertyName}\\s*[?!]?\\s*:)`, 'm');
196
+ const match = propRegex.exec(code);
197
+ if (!match)
198
+ return code;
199
+ // Check if already has @deprecated
200
+ const beforeMatch = code.slice(Math.max(0, match.index - 100), match.index);
201
+ if (beforeMatch.includes('@deprecated'))
202
+ return code;
203
+ // Add @deprecated JSDoc
204
+ const indent = match[1] || ' ';
205
+ const deprecationComment = [
206
+ `${indent}/**`,
207
+ `${indent} * @deprecated ${field.reason}`,
208
+ `${indent} * @sync-removed ${new Date().toISOString().split('T')[0]}`,
209
+ `${indent} */`,
210
+ '',
211
+ ].join('\n');
212
+ return code.slice(0, match.index) + deprecationComment + code.slice(match.index);
213
+ }
214
+ /**
215
+ * Build Field decorator options string.
216
+ */
217
+ buildFieldOptions(col) {
218
+ const options = [];
219
+ const columnType = canonicalToColumnType(col.type);
220
+ if (columnType) {
221
+ options.push(`columnType: '${columnType}'`);
222
+ }
223
+ if (col.type.length && col.type.category === 'string') {
224
+ options.push(`length: ${col.type.length}`);
225
+ }
226
+ if (col.type.precision !== undefined) {
227
+ options.push(`precision: ${col.type.precision}`);
228
+ }
229
+ if (col.type.scale !== undefined) {
230
+ options.push(`scale: ${col.type.scale}`);
231
+ }
232
+ if (col.nullable) {
233
+ options.push('nullable: true');
234
+ }
235
+ return options.length > 0 ? `{ ${options.join(', ')} }` : '';
236
+ }
237
+ /**
238
+ * Format type for description.
239
+ */
240
+ formatTypeDescription(type) {
241
+ let desc = type.category.toUpperCase();
242
+ if (type.size)
243
+ desc = `${type.size.toUpperCase()}${desc}`;
244
+ if (type.length)
245
+ desc += `(${type.length})`;
246
+ if (type.precision) {
247
+ desc += `(${type.precision}`;
248
+ if (type.scale)
249
+ desc += `,${type.scale}`;
250
+ desc += ')';
251
+ }
252
+ return desc;
253
+ }
254
+ /**
255
+ * Get relation decorator name.
256
+ */
257
+ getRelationDecoratorName(type, inverse) {
258
+ if (inverse) {
259
+ if (type === 'ManyToOne')
260
+ return 'OneToMany';
261
+ if (type === 'OneToMany')
262
+ return 'ManyToOne';
263
+ }
264
+ return type;
265
+ }
266
+ /**
267
+ * Default property name transformer (delegates to shared utility).
268
+ */
269
+ defaultPropertyNameTransformer(columnName) {
270
+ return camelCase(columnName);
271
+ }
272
+ /**
273
+ * Convert to PascalCase (delegates to shared utility).
274
+ */
275
+ toPascalCase(str) {
276
+ return pascalCase(str);
277
+ }
278
+ /**
279
+ * Singularize (delegates to shared utility).
280
+ */
281
+ singularize(name) {
282
+ return singularize(name);
283
+ }
284
+ }
285
+ /**
286
+ * Create an EntityMerger instance.
287
+ */
288
+ export function createEntityMerger(options) {
289
+ return new EntityMerger(options);
290
+ }
291
+ //# sourceMappingURL=entityMerger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityMerger.js","sourceRoot":"","sources":["../../../src/migrate/codegen/entityMerger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Code Generation Module
3
+ *
4
+ * Generates TypeScript entity code from database schemas.
5
+ */
6
+ export { createEntityCodeGenerator, EntityCodeGenerator, type EntityCodeGeneratorOptions, type GeneratedEntity, } from './entityCodeGenerator.js';
7
+ export { createEntityMerger, EntityMerger, type EntityMergerOptions, type FieldToAdd, type FieldToDeprecate, type MergeResult, } from './entityMerger.js';
8
+ export { createMigrationCodeGenerator, type GeneratedMigration, MigrationCodeGenerator, type MigrationCodeOptions, } from './migrationCodeGenerator.js';
9
+ export { createRelationDetector, type RelationDetectorOptions, SmartRelationDetector, } from './smartRelationDetector.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/migrate/codegen/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EACL,yBAAyB,EACzB,mBAAmB,EACnB,KAAK,0BAA0B,EAC/B,KAAK,eAAe,GACrB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,WAAW,GACjB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,4BAA4B,EAC5B,KAAK,kBAAkB,EACvB,sBAAsB,EACtB,KAAK,oBAAoB,GAC1B,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,EAC5B,qBAAqB,GACtB,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Code Generation Module
3
+ *
4
+ * Generates TypeScript entity code from database schemas.
5
+ */
6
+ // Entity code generator
7
+ export { createEntityCodeGenerator, EntityCodeGenerator, } from './entityCodeGenerator.js';
8
+ // Entity merger
9
+ export { createEntityMerger, EntityMerger, } from './entityMerger.js';
10
+ // Migration code generator
11
+ export { createMigrationCodeGenerator, MigrationCodeGenerator, } from './migrationCodeGenerator.js';
12
+ // Smart relation detector
13
+ export { createRelationDetector, SmartRelationDetector, } from './smartRelationDetector.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/migrate/codegen/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAwB;AACxB,OAAO,EACL,yBAAyB,EACzB,mBAAmB,GAGpB,MAAM,0BAA0B,CAAC;AAClC,gBAAgB;AAChB,OAAO,EACL,kBAAkB,EAClB,YAAY,GAKb,MAAM,mBAAmB,CAAC;AAC3B,2BAA2B;AAC3B,OAAO,EACL,4BAA4B,EAE5B,sBAAsB,GAEvB,MAAM,6BAA6B,CAAC;AACrC,0BAA0B;AAC1B,OAAO,EACL,sBAAsB,EAEtB,qBAAqB,GACtB,MAAM,4BAA4B,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Migration Code Generator
3
+ *
4
+ * Generates TypeScript migration code from SchemaDiff.
5
+ * This enables auto-generating migrations from entity changes.
6
+ */
7
+ import type { SchemaDiff } from '../../type/index.js';
8
+ export interface MigrationCodeOptions {
9
+ /** Indentation string (default: 2 spaces) */
10
+ indent?: string;
11
+ /** Whether to include comments explaining changes */
12
+ includeComments?: boolean;
13
+ }
14
+ export interface GeneratedMigration {
15
+ /** The up migration code */
16
+ up: string;
17
+ /** The down migration code */
18
+ down: string;
19
+ /** Human-readable description of changes */
20
+ description: string;
21
+ }
22
+ /**
23
+ * Generates TypeScript migration code from schema diffs.
24
+ */
25
+ export declare class MigrationCodeGenerator {
26
+ private readonly indent;
27
+ private readonly includeComments;
28
+ constructor(options?: MigrationCodeOptions);
29
+ /**
30
+ * Generate migration code from a single SchemaDiff.
31
+ */
32
+ generate(diff: SchemaDiff): GeneratedMigration;
33
+ /**
34
+ * Generate migration code from multiple diffs.
35
+ */
36
+ generateAll(diffs: SchemaDiff[]): GeneratedMigration;
37
+ /**
38
+ * Generate a complete migration file template.
39
+ */
40
+ generateFile(diffs: SchemaDiff[], name?: string): string;
41
+ private generateCreateTable;
42
+ private generateDropTable;
43
+ private generateAlterUp;
44
+ private generateAlterDown;
45
+ private generateAddColumn;
46
+ private generateAlterColumn;
47
+ private generateCreateIndex;
48
+ private generateAddForeignKey;
49
+ private generateColumnCall;
50
+ private generateIndexCall;
51
+ private getColumnMethod;
52
+ private generateColumnOptionsObject;
53
+ private generateColumnOptions;
54
+ private formatValue;
55
+ private generateDescription;
56
+ private indentBlock;
57
+ }
58
+ /**
59
+ * Factory function to create a MigrationCodeGenerator.
60
+ */
61
+ export declare function createMigrationCodeGenerator(options?: MigrationCodeOptions): MigrationCodeGenerator;
62
+ //# sourceMappingURL=migrationCodeGenerator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrationCodeGenerator.d.ts","sourceRoot":"","sources":["../../../src/migrate/codegen/migrationCodeGenerator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAA+C,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEnG,MAAM,WAAW,oBAAoB;IACnC,6CAA6C;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;gBAE9B,OAAO,GAAE,oBAAyB;IAK9C;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,UAAU,GAAG,kBAAkB;IA2B9C;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,kBAAkB;IAmBpD;;OAEG;IACH,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IA+BxD,OAAO,CAAC,mBAAmB;IAoB3B,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,eAAe;IAyCvB,OAAO,CAAC,iBAAiB;IA4CzB,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,mBAAmB;IAS3B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,iBAAiB;IAQzB,OAAO,CAAC,eAAe;IAuCvB,OAAO,CAAC,2BAA2B;IAgCnC,OAAO,CAAC,qBAAqB;IAgB7B,OAAO,CAAC,WAAW;IAsBnB,OAAO,CAAC,mBAAmB;IAsB3B,OAAO,CAAC,WAAW;CAOpB;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,sBAAsB,CAEnG"}