@adminiumjs/schema-import 0.1.0-rc.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 (78) hide show
  1. package/LICENSE +661 -0
  2. package/dist/builder.d.ts +112 -0
  3. package/dist/builder.d.ts.map +1 -0
  4. package/dist/builder.js +291 -0
  5. package/dist/builder.js.map +1 -0
  6. package/dist/check-enum.d.ts +5 -0
  7. package/dist/check-enum.d.ts.map +1 -0
  8. package/dist/check-enum.js +40 -0
  9. package/dist/check-enum.js.map +1 -0
  10. package/dist/detect.d.ts +13 -0
  11. package/dist/detect.d.ts.map +1 -0
  12. package/dist/detect.js +47 -0
  13. package/dist/detect.js.map +1 -0
  14. package/dist/errors.d.ts +10 -0
  15. package/dist/errors.d.ts.map +1 -0
  16. package/dist/errors.js +12 -0
  17. package/dist/errors.js.map +1 -0
  18. package/dist/index.d.ts +14 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +14 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/parse.d.ts +3 -0
  23. package/dist/parse.d.ts.map +1 -0
  24. package/dist/parse.js +59 -0
  25. package/dist/parse.js.map +1 -0
  26. package/dist/parsers/django.d.ts +13 -0
  27. package/dist/parsers/django.d.ts.map +1 -0
  28. package/dist/parsers/django.js +489 -0
  29. package/dist/parsers/django.js.map +1 -0
  30. package/dist/parsers/drizzle.d.ts +13 -0
  31. package/dist/parsers/drizzle.d.ts.map +1 -0
  32. package/dist/parsers/drizzle.js +395 -0
  33. package/dist/parsers/drizzle.js.map +1 -0
  34. package/dist/parsers/json.d.ts +8 -0
  35. package/dist/parsers/json.d.ts.map +1 -0
  36. package/dist/parsers/json.js +31 -0
  37. package/dist/parsers/json.js.map +1 -0
  38. package/dist/parsers/prisma.d.ts +11 -0
  39. package/dist/parsers/prisma.d.ts.map +1 -0
  40. package/dist/parsers/prisma.js +402 -0
  41. package/dist/parsers/prisma.js.map +1 -0
  42. package/dist/parsers/rails.d.ts +13 -0
  43. package/dist/parsers/rails.d.ts.map +1 -0
  44. package/dist/parsers/rails.js +387 -0
  45. package/dist/parsers/rails.js.map +1 -0
  46. package/dist/parsers/sequelize.d.ts +12 -0
  47. package/dist/parsers/sequelize.d.ts.map +1 -0
  48. package/dist/parsers/sequelize.js +277 -0
  49. package/dist/parsers/sequelize.js.map +1 -0
  50. package/dist/parsers/sql-cursor.d.ts +40 -0
  51. package/dist/parsers/sql-cursor.d.ts.map +1 -0
  52. package/dist/parsers/sql-cursor.js +203 -0
  53. package/dist/parsers/sql-cursor.js.map +1 -0
  54. package/dist/parsers/sql.d.ts +17 -0
  55. package/dist/parsers/sql.d.ts.map +1 -0
  56. package/dist/parsers/sql.js +794 -0
  57. package/dist/parsers/sql.js.map +1 -0
  58. package/dist/parsers/typeorm.d.ts +13 -0
  59. package/dist/parsers/typeorm.d.ts.map +1 -0
  60. package/dist/parsers/typeorm.js +511 -0
  61. package/dist/parsers/typeorm.js.map +1 -0
  62. package/dist/text.d.ts +54 -0
  63. package/dist/text.d.ts.map +1 -0
  64. package/dist/text.js +254 -0
  65. package/dist/text.js.map +1 -0
  66. package/dist/type-map.d.ts +28 -0
  67. package/dist/type-map.d.ts.map +1 -0
  68. package/dist/type-map.js +171 -0
  69. package/dist/type-map.js.map +1 -0
  70. package/dist/types.d.ts +32 -0
  71. package/dist/types.d.ts.map +1 -0
  72. package/dist/types.js +22 -0
  73. package/dist/types.js.map +1 -0
  74. package/dist/warnings.d.ts +17 -0
  75. package/dist/warnings.d.ts.map +1 -0
  76. package/dist/warnings.js +34 -0
  77. package/dist/warnings.js.map +1 -0
  78. package/package.json +29 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql.js","sourceRoot":"","sources":["../../src/parsers/sql.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * TypeORM entity parser — 05-introspection-engine.md §5.2 row 4, tokenizer
3
+ * level (no TS compiler): `@Entity` classes are located, class-level and
4
+ * property-level decorators parsed with a balance-aware scanner. `@ManyToOne`
5
+ * (+ optional `@JoinColumn`) becomes an FK column; when `@JoinColumn` is
6
+ * absent, the snake_case `<prop>_id` convention is applied with a warning.
7
+ * `@OneToMany` (inverse side) is skipped. Decorator options built from
8
+ * spreads/variables are unresolvable and warn.
9
+ */
10
+ import type { DatabaseModel } from '@adminium/engine';
11
+ import type { WarningList } from '../warnings.js';
12
+ export declare function parseTypeorm(content: string, name: string, warnings: WarningList): DatabaseModel;
13
+ //# sourceMappingURL=typeorm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeorm.d.ts","sourceRoot":"","sources":["../../src/parsers/typeorm.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAiB,aAAa,EAAY,MAAM,kBAAkB,CAAC;AAM/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAiClD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,aAAa,CA4FhG"}
@@ -0,0 +1,511 @@
1
+ import { ModelBuilder } from '../builder.js';
2
+ import { SchemaImportError } from '../errors.js';
3
+ import { findBalanced, parseArgs, snakeCase, splitTopLevel, stringLiteral, stripComments } from '../text.js';
4
+ import { mapSqlType } from '../type-map.js';
5
+ const JS_SCAN = { backslashEscapes: true, lineComments: ['//'], blockComments: true };
6
+ export function parseTypeorm(content, name, warnings) {
7
+ const source = stripComments(content, JS_SCAN);
8
+ const builder = new ModelBuilder(warnings);
9
+ // TS string enums declared in the same input.
10
+ const tsEnums = new Map();
11
+ const enumRe = /(?:export\s+)?(?:const\s+)?enum\s+([A-Za-z_$][\w$]*)\s*\{/g;
12
+ let em;
13
+ while ((em = enumRe.exec(source)) !== null) {
14
+ const open = em.index + em[0].length - 1;
15
+ const close = findBalanced(source, open, JS_SCAN);
16
+ if (close === -1)
17
+ continue;
18
+ const body = source.slice(open + 1, close);
19
+ const values = [];
20
+ for (const member of splitTopLevel(body, ',', JS_SCAN)) {
21
+ const withValue = /^[A-Za-z_$][\w$]*\s*=\s*(['"][\s\S]*['"])$/.exec(member.trim());
22
+ if (withValue) {
23
+ const lit = stringLiteral(withValue[1]);
24
+ if (lit !== null)
25
+ values.push(lit);
26
+ continue;
27
+ }
28
+ const bare = /^([A-Za-z_$][\w$]*)$/.exec(member.trim());
29
+ if (bare)
30
+ values.push(bare[1]);
31
+ }
32
+ if (values.length > 0)
33
+ tsEnums.set(em[1], values);
34
+ }
35
+ const entities = scanEntities(source, warnings);
36
+ if (entities.length === 0) {
37
+ throw new SchemaImportError('no @Entity classes found in input');
38
+ }
39
+ const classToTable = new Map();
40
+ const pendingFks = [];
41
+ for (const entity of entities) {
42
+ if (!entity.explicitName) {
43
+ warnings.add('naming-assumed', `entity "${entity.className}" has no explicit table name; assumed snake_case "${entity.tableName}"`);
44
+ }
45
+ const table = builder.addTable({ name: entity.tableName });
46
+ classToTable.set(entity.className, table);
47
+ for (const deco of entity.classDecorators) {
48
+ if (deco.name === 'Index') {
49
+ const columns = listOfStrings(deco.args.find((a) => a.trimStart().startsWith('[')) ?? '');
50
+ const idxName = stringLiteral(deco.args[0] ?? '') ?? `${entity.tableName}_${columns.join('_')}_idx`;
51
+ if (columns.length > 0)
52
+ table.indexes.push({ name: idxName, columns });
53
+ }
54
+ else if (deco.name === 'Unique') {
55
+ const columns = listOfStrings(deco.args.find((a) => a.trimStart().startsWith('[')) ?? '');
56
+ if (columns.length > 0)
57
+ table.uniques.push({ name: stringLiteral(deco.args[0] ?? ''), columns });
58
+ }
59
+ }
60
+ for (const prop of entity.properties) {
61
+ parseProperty(prop, entity, table, builder, tsEnums, pendingFks, warnings);
62
+ }
63
+ }
64
+ // Resolve @ManyToOne/@OneToOne FK column types + targets.
65
+ for (const fk of pendingFks) {
66
+ const target = classToTable.get(fk.targetClass);
67
+ if (!target) {
68
+ warnings.add('unresolved-reference', `relation from "${fk.table.name}"."${fk.column.name}" to entity "${fk.targetClass}" not in input`);
69
+ continue;
70
+ }
71
+ const pkName = fk.targetColumn ?? target.primaryKey[0] ?? target.columns.find((c) => c.isPrimaryKey)?.name ?? 'id';
72
+ const pkCol = target.columns.find((c) => c.name === pkName);
73
+ if (pkCol && fk.column.logicalType === undefined) {
74
+ fk.column.logicalType = pkCol.logicalType ?? 'integer';
75
+ fk.column.dbType = pkCol.dbType ?? 'integer';
76
+ }
77
+ fk.table.columns.push(fk.column);
78
+ fk.column.references = {
79
+ table: target.name,
80
+ column: pkName,
81
+ onDelete: fk.onDelete,
82
+ cardinality: fk.cardinality === 'one-to-one' ? 'one-to-one' : undefined,
83
+ };
84
+ }
85
+ return builder.finalize({
86
+ format: 'typeorm',
87
+ dialect: 'generic',
88
+ name,
89
+ capabilities: { hasEnums: true, hasFKs: true, hasComments: true, hasChecks: false, hasSchemas: false },
90
+ });
91
+ }
92
+ function parseProperty(prop, entity, table, builder, tsEnums, pendingFks, warnings) {
93
+ const find = (n) => prop.decorators.find((d) => d.name === n);
94
+ const manyToOne = find('ManyToOne');
95
+ const oneToOne = find('OneToOne');
96
+ if (manyToOne || oneToOne) {
97
+ const deco = (manyToOne ?? oneToOne);
98
+ const target = extractRelationTarget(deco.args[0] ?? '');
99
+ if (target === null) {
100
+ warnings.add('unresolved-reference', `could not resolve relation target on "${entity.className}.${prop.propName}"`);
101
+ return;
102
+ }
103
+ const optsArg = deco.args.find((a) => a.trimStart().startsWith('{'));
104
+ const opts = optsArg !== undefined ? parseArgs(stripBraces(optsArg), 'js').named : {};
105
+ const joinColumn = find('JoinColumn');
106
+ if (oneToOne && !joinColumn)
107
+ return; // inverse side of a OneToOne
108
+ let columnName = null;
109
+ let targetColumn = null;
110
+ if (joinColumn) {
111
+ const jcArg = joinColumn.args.find((a) => a.trimStart().startsWith('{') || a.trimStart().startsWith('['));
112
+ if (jcArg !== undefined) {
113
+ const jcOpts = parseArgs(stripBraces(jcArg.replace(/^\s*\[/, '').replace(/\]\s*$/, '')), 'js').named;
114
+ columnName = stringLiteral(jcOpts['name'] ?? '') ?? null;
115
+ targetColumn = stringLiteral(jcOpts['referencedColumnName'] ?? '') ?? null;
116
+ }
117
+ }
118
+ if (columnName === null) {
119
+ columnName = `${snakeCase(prop.propName)}_id`;
120
+ warnings.add('naming-assumed', `@JoinColumn absent on "${entity.className}.${prop.propName}"; assumed FK column "${columnName}"`);
121
+ }
122
+ const nullable = opts['nullable'] !== 'false'; // relations default to nullable
123
+ const col = { name: columnName, nullable };
124
+ pendingFks.push({
125
+ table,
126
+ column: col,
127
+ targetClass: target,
128
+ cardinality: oneToOne ? 'one-to-one' : 'one-to-many',
129
+ onDelete: fkActionFromString(opts['onDelete']),
130
+ targetColumn,
131
+ });
132
+ return;
133
+ }
134
+ if (find('OneToMany') || find('ManyToMany')) {
135
+ // Inverse / join-table side: @OneToMany skipped by design; @ManyToMany
136
+ // needs the owning side's @JoinTable which we do not model in v1.
137
+ if (find('ManyToMany'))
138
+ warnings.addCount('skipped-relation', 'skipped @ManyToMany relation');
139
+ return;
140
+ }
141
+ const generated = find('PrimaryGeneratedColumn');
142
+ const primary = find('PrimaryColumn');
143
+ const created = find('CreateDateColumn');
144
+ const updated = find('UpdateDateColumn');
145
+ const deleted = find('DeleteDateColumn');
146
+ const version = find('VersionColumn');
147
+ const column = find('Column');
148
+ if (!generated && !primary && !created && !updated && !deleted && !version && !column)
149
+ return;
150
+ const deco = (column ?? generated ?? primary ?? created ?? updated ?? deleted ?? version);
151
+ const optsArg = deco.args.find((a) => a.trimStart().startsWith('{'));
152
+ if (deco.args.some((a) => a.includes('...'))) {
153
+ warnings.add('unsupported-options', `decorator options with spread on "${entity.className}.${prop.propName}" ignored`);
154
+ }
155
+ const opts = optsArg !== undefined ? parseArgs(stripBraces(optsArg), 'js').named : {};
156
+ const typeArg = stringLiteral(deco.args[0] ?? '') ?? stringLiteral(opts['type'] ?? '');
157
+ const col = {
158
+ name: stringLiteral(opts['name'] ?? '') ?? prop.propName,
159
+ nullable: opts['nullable'] === 'true',
160
+ };
161
+ if (generated) {
162
+ col.isPrimaryKey = true;
163
+ col.nullable = false;
164
+ const strategy = stringLiteral(deco.args[0] ?? '') ?? 'increment';
165
+ if (strategy === 'uuid') {
166
+ col.logicalType = 'uuid';
167
+ col.dbType = 'uuid';
168
+ col.default = { kind: 'uuid' };
169
+ }
170
+ else {
171
+ col.logicalType = 'integer';
172
+ col.dbType = 'integer';
173
+ col.default = { kind: 'autoincrement' };
174
+ }
175
+ }
176
+ else if (created || updated || deleted) {
177
+ col.logicalType = 'timestamp';
178
+ col.dbType = typeArg ?? 'timestamp';
179
+ col.nullable = deleted !== undefined;
180
+ if (created)
181
+ col.default = { kind: 'now' };
182
+ }
183
+ else if (version) {
184
+ col.logicalType = 'integer';
185
+ col.dbType = 'integer';
186
+ col.nullable = false;
187
+ }
188
+ else {
189
+ if (primary) {
190
+ col.isPrimaryKey = true;
191
+ col.nullable = false;
192
+ }
193
+ // Type: explicit SQL type string, `enum`, or inferred from the TS type.
194
+ const enumOpt = opts['enum'];
195
+ if (typeArg === 'enum' || enumOpt !== undefined) {
196
+ const values = resolveEnumValues(enumOpt ?? '', tsEnums);
197
+ if (values !== null && values.length > 0) {
198
+ const id = `public.${table.name}.${col.name}`;
199
+ builder.addEnum({ id, name: col.name, values, source: 'import' });
200
+ col.logicalType = 'enum';
201
+ col.dbType = 'enum';
202
+ col.enumRef = id;
203
+ }
204
+ else {
205
+ warnings.add('unresolved-enum', `enum values for "${entity.className}.${prop.propName}" could not be resolved statically`);
206
+ col.logicalType = 'text';
207
+ col.dbType = 'enum';
208
+ }
209
+ }
210
+ else if (typeArg !== null) {
211
+ const mapped = mapSqlType(typeArg);
212
+ col.dbType = typeArg;
213
+ col.logicalType = mapped.logicalType;
214
+ col.maxLength = mapped.maxLength;
215
+ col.numericPrecision = mapped.numericPrecision;
216
+ col.numericScale = mapped.numericScale;
217
+ }
218
+ else {
219
+ const inferred = inferFromTsType(prop.tsType);
220
+ col.logicalType = inferred.logicalType;
221
+ col.dbType = inferred.dbType;
222
+ }
223
+ }
224
+ const length = Number.parseInt(opts['length']?.replaceAll(/['"]/g, '') ?? '', 10);
225
+ if (Number.isFinite(length)) {
226
+ col.maxLength = length;
227
+ col.dbType = `${col.dbType}(${length})`;
228
+ }
229
+ const precision = Number.parseInt(opts['precision'] ?? '', 10);
230
+ if (Number.isFinite(precision))
231
+ col.numericPrecision = precision;
232
+ const scale = Number.parseInt(opts['scale'] ?? '', 10);
233
+ if (Number.isFinite(scale))
234
+ col.numericScale = scale;
235
+ if (opts['unique'] === 'true')
236
+ col.isUnique = true;
237
+ if (opts['array'] === 'true')
238
+ col.isArray = true;
239
+ if (opts['comment'] !== undefined)
240
+ col.comment = stringLiteral(opts['comment']);
241
+ if (opts['default'] !== undefined)
242
+ col.default = classifyJsDefault(opts['default']);
243
+ if (opts['generated'] !== undefined && opts['generated'] !== 'false') {
244
+ col.default = { kind: 'autoincrement' };
245
+ }
246
+ table.columns.push(col);
247
+ const index = find('Index');
248
+ if (index) {
249
+ const idxName = stringLiteral(index.args[0] ?? '') ?? `${table.name}_${col.name}_idx`;
250
+ const idxOptsArg = index.args.find((a) => a.trimStart().startsWith('{'));
251
+ const idxOpts = idxOptsArg !== undefined ? parseArgs(stripBraces(idxOptsArg), 'js').named : {};
252
+ table.indexes.push({ name: idxName, columns: [col.name], unique: idxOpts['unique'] === 'true' });
253
+ }
254
+ const generatedDeco = find('Generated');
255
+ if (generatedDeco)
256
+ col.default = { kind: 'autoincrement' };
257
+ }
258
+ function inferFromTsType(tsType) {
259
+ const t = (tsType ?? '').replace(/\s*\|\s*null\s*$/, '').trim();
260
+ switch (t) {
261
+ case 'string':
262
+ return { logicalType: 'varchar', dbType: 'varchar' };
263
+ case 'number':
264
+ return { logicalType: 'integer', dbType: 'integer' };
265
+ case 'boolean':
266
+ return { logicalType: 'boolean', dbType: 'boolean' };
267
+ case 'Date':
268
+ return { logicalType: 'timestamp', dbType: 'timestamp' };
269
+ default:
270
+ return { logicalType: 'unknown', dbType: t.length > 0 ? t : 'unknown' };
271
+ }
272
+ }
273
+ function resolveEnumValues(enumOpt, tsEnums) {
274
+ const raw = enumOpt.trim();
275
+ if (raw.length === 0)
276
+ return null;
277
+ if (raw.startsWith('[')) {
278
+ const inner = raw.slice(1, raw.endsWith(']') ? -1 : undefined);
279
+ const values = splitTopLevel(inner, ',', JS_SCAN)
280
+ .map((v) => stringLiteral(v) ?? v.trim())
281
+ .filter((v) => v.length > 0);
282
+ return values;
283
+ }
284
+ if (/^[A-Za-z_$][\w$]*$/.test(raw))
285
+ return tsEnums.get(raw) ?? null;
286
+ return null;
287
+ }
288
+ function classifyJsDefault(raw) {
289
+ const arg = raw.trim();
290
+ const str = stringLiteral(arg);
291
+ if (str !== null)
292
+ return { kind: 'literal', text: str };
293
+ if (/^-?\d+(\.\d+)?$/.test(arg) || arg === 'true' || arg === 'false') {
294
+ return { kind: 'literal', text: arg };
295
+ }
296
+ if (/^\(\s*\)\s*=>/.test(arg)) {
297
+ const body = arg.replace(/^\(\s*\)\s*=>\s*/, '');
298
+ const lit = stringLiteral(body);
299
+ if (lit !== null) {
300
+ if (/current_timestamp|now\(\)/i.test(lit))
301
+ return { kind: 'now' };
302
+ return { kind: 'expression', text: lit };
303
+ }
304
+ return { kind: 'expression', text: body };
305
+ }
306
+ return { kind: 'expression', text: arg };
307
+ }
308
+ function fkActionFromString(raw) {
309
+ const value = raw === undefined ? null : stringLiteral(raw);
310
+ switch (value) {
311
+ case 'CASCADE':
312
+ return 'cascade';
313
+ case 'RESTRICT':
314
+ return 'restrict';
315
+ case 'SET NULL':
316
+ return 'set-null';
317
+ case 'SET DEFAULT':
318
+ return 'set-default';
319
+ case 'NO ACTION':
320
+ return 'no-action';
321
+ default:
322
+ return null;
323
+ }
324
+ }
325
+ function extractRelationTarget(arg) {
326
+ const arrow = /=>\s*([A-Za-z_$][\w$]*)/.exec(arg);
327
+ if (arrow)
328
+ return arrow[1];
329
+ const str = stringLiteral(arg);
330
+ if (str !== null)
331
+ return str;
332
+ return null;
333
+ }
334
+ function stripBraces(objectLiteral) {
335
+ const s = objectLiteral.trim();
336
+ return s.startsWith('{') && s.endsWith('}') ? s.slice(1, -1) : s;
337
+ }
338
+ function listOfStrings(arrayLiteral) {
339
+ const s = arrayLiteral.trim();
340
+ if (!s.startsWith('['))
341
+ return [];
342
+ const inner = s.slice(1, s.endsWith(']') ? -1 : undefined);
343
+ return splitTopLevel(inner, ',', JS_SCAN)
344
+ .map((v) => stringLiteral(v))
345
+ .filter((v) => v !== null);
346
+ }
347
+ /* ------------------------------ entity scanning ------------------------------ */
348
+ function scanEntities(source, warnings) {
349
+ const entities = [];
350
+ const classRe = /(?:export\s+)?(?:abstract\s+)?class\s+([A-Za-z_$][\w$]*)[^{]*\{/g;
351
+ let prevEnd = 0;
352
+ let m;
353
+ while ((m = classRe.exec(source)) !== null) {
354
+ const braceIndex = m.index + m[0].length - 1;
355
+ const bodyEnd = findBalanced(source, braceIndex, JS_SCAN);
356
+ if (bodyEnd === -1)
357
+ continue;
358
+ const before = source.slice(prevEnd, m.index);
359
+ prevEnd = bodyEnd + 1;
360
+ classRe.lastIndex = bodyEnd + 1;
361
+ const classDecorators = scanDecorators(before, true);
362
+ const entityDeco = classDecorators.find((d) => d.name === 'Entity');
363
+ if (!entityDeco)
364
+ continue;
365
+ const className = m[1];
366
+ let tableName = stringLiteral(entityDeco.args[0] ?? '');
367
+ if (tableName === null) {
368
+ const optsArg = entityDeco.args.find((a) => a.trimStart().startsWith('{'));
369
+ if (optsArg !== undefined) {
370
+ tableName = stringLiteral(parseArgs(stripBraces(optsArg), 'js').named['name'] ?? '');
371
+ }
372
+ }
373
+ const explicitName = tableName !== null;
374
+ entities.push({
375
+ className,
376
+ tableName: tableName ?? snakeCase(className),
377
+ explicitName,
378
+ classDecorators: classDecorators.filter((d) => d.name !== 'Entity'),
379
+ properties: scanProperties(source.slice(braceIndex + 1, bodyEnd), warnings),
380
+ });
381
+ }
382
+ return entities;
383
+ }
384
+ /** Scan decorators in `text`; when `tail` is true, only those after the last statement end. */
385
+ function scanDecorators(text, tail) {
386
+ const region = tail ? text.slice(Math.max(text.lastIndexOf(';'), text.lastIndexOf('}')) + 1) : text;
387
+ const decorators = [];
388
+ const re = /@([A-Za-z_$][\w$]*)/g;
389
+ let m;
390
+ while ((m = re.exec(region)) !== null) {
391
+ const afterName = m.index + m[0].length;
392
+ let args = [];
393
+ if (region[afterName] === '(') {
394
+ const close = findBalanced(region, afterName, JS_SCAN);
395
+ if (close !== -1) {
396
+ args = splitTopLevel(region.slice(afterName + 1, close), ',', JS_SCAN);
397
+ re.lastIndex = close + 1;
398
+ }
399
+ }
400
+ decorators.push({ name: m[1], args });
401
+ }
402
+ return decorators;
403
+ }
404
+ function scanProperties(body, warnings) {
405
+ const properties = [];
406
+ let pending = [];
407
+ let i = 0;
408
+ while (i < body.length) {
409
+ const ch = body[i];
410
+ if (/\s/.test(ch)) {
411
+ i += 1;
412
+ continue;
413
+ }
414
+ if (ch === '@') {
415
+ const m = /^@([A-Za-z_$][\w$]*)/.exec(body.slice(i));
416
+ if (m) {
417
+ let args = [];
418
+ let next = i + m[0].length;
419
+ if (body[next] === '(') {
420
+ const close = findBalanced(body, next, JS_SCAN);
421
+ if (close !== -1) {
422
+ args = splitTopLevel(body.slice(next + 1, close), ',', JS_SCAN);
423
+ next = close + 1;
424
+ }
425
+ }
426
+ pending.push({ name: m[1], args });
427
+ i = next;
428
+ continue;
429
+ }
430
+ }
431
+ // Property or method signature up to `;` or `{`.
432
+ const stmtEnd = findStatementEnd(body, i);
433
+ const stmt = body.slice(i, stmtEnd.end);
434
+ if (pending.length > 0 && !stmtEnd.isMethod) {
435
+ const pm = /^(?:public\s+|private\s+|protected\s+|readonly\s+)*([A-Za-z_$][\w$]*)\s*[?!]?\s*(?::\s*([^;=]+))?/.exec(stmt.trim());
436
+ if (pm) {
437
+ properties.push({
438
+ decorators: pending,
439
+ propName: pm[1],
440
+ tsType: pm[2]?.trim() ?? null,
441
+ });
442
+ }
443
+ else {
444
+ warnings.addCount('unparseable-property', 'skipped unparseable decorated class member');
445
+ }
446
+ }
447
+ pending = [];
448
+ i = stmtEnd.end + 1;
449
+ }
450
+ return properties;
451
+ }
452
+ function findStatementEnd(body, start) {
453
+ let i = start;
454
+ while (i < body.length) {
455
+ const skipped = skipJsAtom(body, i);
456
+ if (skipped !== i) {
457
+ i = skipped;
458
+ continue;
459
+ }
460
+ const ch = body[i];
461
+ if (ch === ';' || ch === '\n')
462
+ return { end: i, isMethod: false };
463
+ if (ch === '(') {
464
+ // method signature — skip its parens, then its body if present
465
+ const close = findBalanced(body, i, JS_SCAN);
466
+ if (close === -1)
467
+ return { end: body.length, isMethod: true };
468
+ let j = close + 1;
469
+ while (j < body.length && /\s|:|[A-Za-z_$<>[\]|,.]/.test(body[j]))
470
+ j += 1;
471
+ if (body[j] === '{') {
472
+ const bodyClose = findBalanced(body, j, JS_SCAN);
473
+ return { end: bodyClose === -1 ? body.length : bodyClose, isMethod: true };
474
+ }
475
+ return { end: j, isMethod: true };
476
+ }
477
+ if (ch === '{') {
478
+ const close = findBalanced(body, i, JS_SCAN);
479
+ i = close === -1 ? body.length : close + 1;
480
+ continue;
481
+ }
482
+ i += 1;
483
+ }
484
+ return { end: body.length, isMethod: false };
485
+ }
486
+ function skipJsAtom(body, i) {
487
+ const ch = body[i];
488
+ if (ch === "'" || ch === '"' || ch === '`') {
489
+ let j = i + 1;
490
+ while (j < body.length) {
491
+ if (body[j] === '\\') {
492
+ j += 2;
493
+ continue;
494
+ }
495
+ if (body[j] === ch)
496
+ return j + 1;
497
+ j += 1;
498
+ }
499
+ return body.length;
500
+ }
501
+ if (body.startsWith('//', i)) {
502
+ const nl = body.indexOf('\n', i);
503
+ return nl === -1 ? body.length : nl;
504
+ }
505
+ if (body.startsWith('/*', i)) {
506
+ const end = body.indexOf('*/', i + 2);
507
+ return end === -1 ? body.length : end + 2;
508
+ }
509
+ return i;
510
+ }
511
+ //# sourceMappingURL=typeorm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typeorm.js","sourceRoot":"","sources":["../../src/parsers/typeorm.ts"],"names":[],"mappings":"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"}