ormbridge 0.7.0 → 0.8.0

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 (39) hide show
  1. package/README.md +1 -0
  2. package/dist/cliRunner.js +7 -5
  3. package/dist/cliRunner.js.map +1 -1
  4. package/dist/config.d.ts +6 -3
  5. package/dist/config.js +3 -3
  6. package/dist/config.js.map +1 -1
  7. package/dist/emitters/sequelize.d.ts +35 -0
  8. package/dist/emitters/sequelize.js +1276 -0
  9. package/dist/emitters/sequelize.js.map +1 -0
  10. package/dist/formats.d.ts +6 -5
  11. package/dist/formats.js +38 -4
  12. package/dist/formats.js.map +1 -1
  13. package/dist/index.d.ts +6 -0
  14. package/dist/index.js +3 -0
  15. package/dist/index.js.map +1 -1
  16. package/dist/io.js +29 -1
  17. package/dist/io.js.map +1 -1
  18. package/dist/parsers/sequelize.d.ts +15 -0
  19. package/dist/parsers/sequelize.js +906 -0
  20. package/dist/parsers/sequelize.js.map +1 -0
  21. package/dist/parsers/sequelizeAssociations.d.ts +45 -0
  22. package/dist/parsers/sequelizeAssociations.js +449 -0
  23. package/dist/parsers/sequelizeAssociations.js.map +1 -0
  24. package/dist/parsers/sequelizeCollect.d.ts +33 -0
  25. package/dist/parsers/sequelizeCollect.js +1298 -0
  26. package/dist/parsers/sequelizeCollect.js.map +1 -0
  27. package/dist/parsers/sequelizeInflection.d.ts +14 -0
  28. package/dist/parsers/sequelizeInflection.js +451 -0
  29. package/dist/parsers/sequelizeInflection.js.map +1 -0
  30. package/dist/parsers/sequelizeModel.d.ts +185 -0
  31. package/dist/parsers/sequelizeModel.js +2 -0
  32. package/dist/parsers/sequelizeModel.js.map +1 -0
  33. package/dist/parsers/sequelizeTypes.d.ts +24 -0
  34. package/dist/parsers/sequelizeTypes.js +248 -0
  35. package/dist/parsers/sequelizeTypes.js.map +1 -0
  36. package/dist/styles.d.ts +17 -0
  37. package/dist/styles.js +40 -0
  38. package/dist/styles.js.map +1 -0
  39. package/package.json +2 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequelize.js","sourceRoot":"","sources":["../../src/parsers/sequelize.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { ModelOptions, Project, RawAttribute, RawModel } from './sequelizeModel.js';
2
+ /** A model with the options and names that the association rules need. */
3
+ export interface Prepared {
4
+ raw: RawModel;
5
+ options: ModelOptions;
6
+ /** The model name used in the IR. */
7
+ irName: string;
8
+ /** The table Sequelize creates for the model. */
9
+ tableName: string;
10
+ }
11
+ /** What an association says about the foreign key attribute it is attached to. */
12
+ export interface ReverseSide {
13
+ /** The accessor on the model that owns the key (`User.hasMany(Post, { as: 'posts' })`). */
14
+ name: string;
15
+ kind: 'hasMany' | 'hasOne';
16
+ label: string;
17
+ }
18
+ /** A many-to-many relation whose join table Sequelize creates itself (`through: 'table'`). */
19
+ export interface ManyToManyLink {
20
+ owner: Prepared;
21
+ target: Prepared;
22
+ /** The accessor on the owner. */
23
+ name: string;
24
+ /** The accessor on the target, when the target declares the other half. */
25
+ relatedName: string | undefined;
26
+ table: string;
27
+ ownerColumn: string;
28
+ targetColumn: string;
29
+ label: string;
30
+ }
31
+ export interface LinkResult {
32
+ /** The accessor a `belongsTo` gives the foreign key attribute it owns. */
33
+ aliases: Map<RawAttribute, string>;
34
+ /** The reverse accessors (`hasMany` / `hasOne`) that share a foreign key attribute. */
35
+ reverses: Map<RawAttribute, ReverseSide>;
36
+ manyToMany: ManyToManyLink[];
37
+ }
38
+ /** The column of an attribute: its `field`, else the name (snake_case when the model is `underscored`). */
39
+ export declare function columnOf(model: Prepared, attribute: RawAttribute): string;
40
+ /**
41
+ * Applies the associations the way Sequelize does when `associate` runs: foreign key columns are added to
42
+ * the model that holds them (or completed when the model declares them), and the accessor names are
43
+ * recorded so the relations can be named and paired.
44
+ */
45
+ export declare function linkAssociations(prepared: Prepared[], project: Project): LinkResult;
@@ -0,0 +1,449 @@
1
+ import { camelize, pluralize, singularize, underscore, } from './sequelizeInflection.js';
2
+ function aliasKey(path, alias) {
3
+ return `${path}\u0000${alias}`;
4
+ }
5
+ function buildLookup(prepared) {
6
+ const byName = new Map();
7
+ const byAlias = new Map();
8
+ const add = (key, model) => {
9
+ const list = byAlias.get(key) ?? [];
10
+ list.push(model);
11
+ byAlias.set(key, list);
12
+ };
13
+ for (const model of prepared) {
14
+ byName.set(model.raw.modelName, model);
15
+ for (const alias of model.raw.aliases) {
16
+ add(aliasKey(model.raw.file.path, alias), model);
17
+ add(alias, model);
18
+ }
19
+ }
20
+ return { byName, byAlias };
21
+ }
22
+ function resolveModel(reference, path, lookup) {
23
+ const local = lookup.byAlias.get(aliasKey(path, reference));
24
+ if (local !== undefined && local.length === 1) {
25
+ return local[0];
26
+ }
27
+ const byName = lookup.byName.get(reference);
28
+ if (byName !== undefined) {
29
+ return byName;
30
+ }
31
+ const shared = lookup.byAlias.get(reference);
32
+ return shared !== undefined && shared.length === 1 ? shared[0] : undefined;
33
+ }
34
+ // ---------------------------------------------------------------------------
35
+ // Names the way Sequelize derives them
36
+ // ---------------------------------------------------------------------------
37
+ function singularName(model) {
38
+ return model.options.nameSingular ?? singularize(model.raw.modelName);
39
+ }
40
+ function pluralName(model) {
41
+ return model.options.namePlural ?? pluralize(model.raw.modelName);
42
+ }
43
+ function attributeOf(model, name) {
44
+ return model.raw.attributes.find((attribute) => attribute.name === name);
45
+ }
46
+ /** The first primary key attribute, which Sequelize calls `primaryKeyAttribute`. */
47
+ function primaryKeyName(model) {
48
+ return (model.raw.attributes.find((attribute) => attribute.primaryKey === true)?.name ?? 'id');
49
+ }
50
+ function lowerFirst(text) {
51
+ return text.charAt(0).toLowerCase() + text.slice(1);
52
+ }
53
+ /** The column of an attribute: its `field`, else the name (snake_case when the model is `underscored`). */
54
+ export function columnOf(model, attribute) {
55
+ return (attribute.field ??
56
+ (model.options.underscored ? underscore(attribute.name) : attribute.name));
57
+ }
58
+ function copyColumnType(target, source) {
59
+ if (source === undefined) {
60
+ return;
61
+ }
62
+ if (source.type !== undefined) {
63
+ target.type = source.type;
64
+ }
65
+ if (source.tsType !== undefined) {
66
+ target.tsType = source.tsType;
67
+ }
68
+ if (source.enumValues !== undefined) {
69
+ target.enumValues = source.enumValues;
70
+ }
71
+ }
72
+ /** The column settings of an attribute definition, without its identity and without unset values. */
73
+ function columnSettings(attribute) {
74
+ const settings = {};
75
+ if (attribute === undefined) {
76
+ return settings;
77
+ }
78
+ for (const [key, value] of Object.entries(attribute)) {
79
+ if (key !== 'name' && key !== 'origin' && value !== undefined) {
80
+ Object.assign(settings, { [key]: value });
81
+ }
82
+ }
83
+ return settings;
84
+ }
85
+ /** Adds the foreign key column an association needs, or completes the one the model already declares. */
86
+ function injectKey(spec, project) {
87
+ const existing = attributeOf(spec.holder, spec.name);
88
+ const template = spec.key?.attribute;
89
+ const keyAttribute = spec.keyOwner === undefined || spec.keyAttribute === undefined
90
+ ? undefined
91
+ : attributeOf(spec.keyOwner, spec.keyAttribute);
92
+ let attribute;
93
+ let allowNullForDefault;
94
+ if (existing === undefined) {
95
+ attribute = { name: spec.name, origin: 'foreignKey', allowNull: true };
96
+ copyColumnType(attribute, keyAttribute);
97
+ Object.assign(attribute, columnSettings(template));
98
+ spec.holder.raw.attributes.push(attribute);
99
+ allowNullForDefault = attribute.allowNull === true;
100
+ }
101
+ else {
102
+ attribute = existing;
103
+ // Sequelize decides the default action before it completes the column.
104
+ allowNullForDefault = existing.allowNull === true;
105
+ if (attribute.type === undefined) {
106
+ copyColumnType(attribute, keyAttribute);
107
+ }
108
+ if (attribute.allowNull === undefined) {
109
+ attribute.allowNull = template?.allowNull ?? true;
110
+ }
111
+ // What the model declares wins over what the foreignKey option adds.
112
+ Object.assign(attribute, {
113
+ ...columnSettings(template),
114
+ ...columnSettings(attribute),
115
+ });
116
+ }
117
+ const constrained = spec.constraints !== false ||
118
+ spec.onDelete !== undefined ||
119
+ spec.onUpdate !== undefined;
120
+ const keyIsComposite = spec.keyOwner !== undefined &&
121
+ spec.keyOwner.raw.attributes.filter((candidate) => candidate.primaryKey === true).length > 1 &&
122
+ keyAttribute?.primaryKey === true;
123
+ if (constrained &&
124
+ !keyIsComposite &&
125
+ attribute.link === undefined &&
126
+ attribute.references === undefined) {
127
+ const onDelete = attribute.onDelete ??
128
+ spec.onDelete ??
129
+ (spec.constraints === false
130
+ ? undefined
131
+ : spec.defaultOnDelete(allowNullForDefault));
132
+ const onUpdate = attribute.onUpdate ??
133
+ spec.onUpdate ??
134
+ (spec.constraints === false ? undefined : 'CASCADE');
135
+ const link = {
136
+ target: spec.keyOwner?.raw,
137
+ targetName: spec.keyOwnerName,
138
+ keyAttribute: spec.keyAttribute,
139
+ constraint: true,
140
+ ...(onDelete === undefined ? {} : { onDelete }),
141
+ ...(onUpdate === undefined ? {} : { onUpdate }),
142
+ };
143
+ attribute.link = link;
144
+ }
145
+ else if (spec.constraints === false && attribute.link === undefined) {
146
+ project.warnings.push(`${spec.holder.raw.location}, field "${attribute.name}": the association uses constraints: false, so there is no foreign key in the database; the column is read as a plain column.`);
147
+ }
148
+ return attribute;
149
+ }
150
+ function sameThrough(first, second) {
151
+ if (first.throughModel !== undefined || second.throughModel !== undefined) {
152
+ return first.throughModel === second.throughModel;
153
+ }
154
+ return first.table === second.table;
155
+ }
156
+ function planManyToMany(assoc, source, target, lookup, project) {
157
+ const through = assoc.options.through;
158
+ if (through === undefined) {
159
+ project.warnings.push(`${assoc.label}: belongsToMany needs a through option (a table name or a model); the association was skipped.`);
160
+ return undefined;
161
+ }
162
+ const isSelf = source === target;
163
+ const as = assoc.options.as;
164
+ if (isSelf && as === undefined) {
165
+ project.warnings.push(`${assoc.label}: a many-to-many association to the same model needs an "as"; the association was skipped.`);
166
+ return undefined;
167
+ }
168
+ const alias = as ?? pluralName(target);
169
+ let throughModel;
170
+ if (through.model !== undefined) {
171
+ throughModel = resolveModel(through.model, assoc.file.path, lookup);
172
+ if (throughModel === undefined) {
173
+ project.warnings.push(`${assoc.label}: the through model "${through.model}" is not in the input; the association was skipped.`);
174
+ return undefined;
175
+ }
176
+ }
177
+ else if (through.table !== undefined) {
178
+ // A string that names a defined model uses that model.
179
+ throughModel = lookup.byName.get(through.table);
180
+ }
181
+ // sequelize-typescript finds the keys through @ForeignKey on the join model.
182
+ const hints = assoc.owner !== undefined && throughModel !== undefined
183
+ ? hintedKeys(throughModel, source, target)
184
+ : [undefined, undefined];
185
+ const sourceKey = assoc.options.sourceKey ?? primaryKeyName(source);
186
+ const targetKey = assoc.options.targetKey ?? primaryKeyName(target);
187
+ const foreignKey = assoc.options.foreignKey?.name ??
188
+ hints[0] ??
189
+ camelize(`${singularName(source)}_${sourceKey}`);
190
+ const otherKey = assoc.options.otherKey?.name ??
191
+ hints[1] ??
192
+ camelize(`${isSelf ? singularize(alias) : singularName(target)}_${targetKey}`);
193
+ return {
194
+ assoc,
195
+ source,
196
+ target,
197
+ as: alias,
198
+ foreignKey,
199
+ otherKey,
200
+ otherKeyIsDefault: assoc.options.otherKey?.name === undefined && hints[1] === undefined,
201
+ table: throughModel === undefined ? through.table : undefined,
202
+ throughModel,
203
+ paired: undefined,
204
+ consumed: false,
205
+ };
206
+ }
207
+ /** The join model's attributes marked `@ForeignKey` for the source and for the target model. */
208
+ function hintedKeys(join, source, target) {
209
+ const pointsAt = (model, hint) => model.raw.aliases.includes(hint) || model.raw.modelName === hint;
210
+ const hints = [...join.raw.foreignKeyHints.entries()];
211
+ const fromSource = hints.find(([, hint]) => pointsAt(source, hint));
212
+ const fromTarget = hints.find(([name, hint]) => pointsAt(target, hint) && name !== fromSource?.[0]);
213
+ return [fromSource?.[0], fromTarget?.[0]];
214
+ }
215
+ /** Injects the two key columns into an explicit join model. */
216
+ function injectJoinModel(plan, project) {
217
+ const join = plan.throughModel;
218
+ if (join === undefined) {
219
+ return;
220
+ }
221
+ const options = plan.assoc.options;
222
+ // A join model without a key of its own loses the generated `id`; the two keys become its primary key.
223
+ const generated = join.raw.attributes.find((attribute) => attribute.origin === 'id' && attribute.primaryKey === true);
224
+ if (generated !== undefined) {
225
+ join.raw.attributes.splice(join.raw.attributes.indexOf(generated), 1);
226
+ }
227
+ const sourceKey = options.sourceKey ?? primaryKeyName(plan.source);
228
+ const targetKey = options.targetKey ?? primaryKeyName(plan.target);
229
+ const hasOwnKey = join.raw.attributes.some((attribute) => attribute.primaryKey === true &&
230
+ attribute.name !== plan.foreignKey &&
231
+ attribute.name !== plan.otherKey);
232
+ const uniqueName = `${join.tableName}_${plan.foreignKey}_${plan.otherKey}_unique`;
233
+ const keys = [
234
+ [plan.foreignKey, plan.source, sourceKey, options.foreignKey],
235
+ [plan.otherKey, plan.target, targetKey, options.otherKey],
236
+ ];
237
+ for (const [name, owner, keyAttribute, key] of keys) {
238
+ const attribute = injectKey({
239
+ holder: join,
240
+ name,
241
+ key,
242
+ keyOwner: owner,
243
+ keyOwnerName: owner.irName,
244
+ keyAttribute,
245
+ onDelete: options.onDelete,
246
+ onUpdate: options.onUpdate,
247
+ constraints: options.constraints,
248
+ defaultOnDelete: () => 'CASCADE',
249
+ }, project);
250
+ if (!hasOwnKey) {
251
+ attribute.primaryKey = true;
252
+ }
253
+ else if (options.through?.unique !== false &&
254
+ attribute.unique === undefined) {
255
+ attribute.unique = { name: uniqueName };
256
+ }
257
+ }
258
+ }
259
+ // ---------------------------------------------------------------------------
260
+ // Entry point
261
+ // ---------------------------------------------------------------------------
262
+ /**
263
+ * Applies the associations the way Sequelize does when `associate` runs: foreign key columns are added to
264
+ * the model that holds them (or completed when the model declares them), and the accessor names are
265
+ * recorded so the relations can be named and paired.
266
+ */
267
+ export function linkAssociations(prepared, project) {
268
+ const lookup = buildLookup(prepared);
269
+ const result = {
270
+ aliases: new Map(),
271
+ reverses: new Map(),
272
+ manyToMany: [],
273
+ };
274
+ const plans = [];
275
+ for (const assoc of project.associations) {
276
+ for (const unsupported of assoc.options.unsupported) {
277
+ project.warnings.push(`${assoc.label}: the ${unsupported} option has no equivalent and was ignored.`);
278
+ }
279
+ const sourceName = assoc.owner !== undefined
280
+ ? undefined
281
+ : assoc.source === 'this'
282
+ ? assoc.enclosing
283
+ : assoc.source;
284
+ const source = assoc.owner !== undefined
285
+ ? prepared.find((model) => model.raw === assoc.owner)
286
+ : sourceName === undefined
287
+ ? undefined
288
+ : resolveModel(sourceName, assoc.file.path, lookup);
289
+ if (source === undefined) {
290
+ project.warnings.push(`${assoc.file.label}: ${assoc.label} is called on "${sourceName ?? assoc.source}", which is not a model in the input; the association was skipped.`);
291
+ continue;
292
+ }
293
+ const target = resolveModel(assoc.target, assoc.file.path, lookup);
294
+ resolveFromHints(assoc, source, target);
295
+ switch (assoc.kind) {
296
+ case 'belongsTo':
297
+ linkBelongsTo(assoc, source, target, result, project);
298
+ break;
299
+ case 'hasMany':
300
+ case 'hasOne':
301
+ linkHasOneOrMany(assoc, source, target, result, project);
302
+ break;
303
+ case 'belongsToMany': {
304
+ if (target === undefined) {
305
+ project.warnings.push(`${assoc.label}: "${assoc.target}" is not a model in the input; the many-to-many association was skipped.`);
306
+ break;
307
+ }
308
+ const plan = planManyToMany(assoc, source, target, lookup, project);
309
+ if (plan !== undefined) {
310
+ plans.push(plan);
311
+ }
312
+ break;
313
+ }
314
+ }
315
+ }
316
+ linkManyToMany(plans, result, project);
317
+ return result;
318
+ }
319
+ /** sequelize-typescript finds a foreign key through `@ForeignKey(() => Model)` when none is named. */
320
+ function resolveFromHints(assoc, source, target) {
321
+ if (assoc.owner === undefined ||
322
+ assoc.options.foreignKey !== undefined ||
323
+ target === undefined) {
324
+ return;
325
+ }
326
+ const holder = assoc.kind === 'belongsTo' ? source.raw : target.raw;
327
+ const pointsAt = assoc.kind === 'belongsTo' ? target.raw : source.raw;
328
+ if (assoc.kind === 'belongsToMany') {
329
+ return;
330
+ }
331
+ const names = [...holder.foreignKeyHints.entries()]
332
+ .filter(([, model]) => pointsAt.aliases.includes(model) || pointsAt.modelName === model)
333
+ .map(([name]) => name);
334
+ const only = names[0];
335
+ if (only !== undefined) {
336
+ assoc.options.foreignKey = {
337
+ name: only,
338
+ attribute: { name: only, origin: 'foreignKey' },
339
+ };
340
+ }
341
+ }
342
+ function linkBelongsTo(assoc, source, target, result, project) {
343
+ const targetName = target?.irName ?? assoc.target;
344
+ const as = assoc.options.as ??
345
+ (target === undefined ? singularize(assoc.target) : singularName(target));
346
+ const targetPrimaryKey = target === undefined ? 'id' : primaryKeyName(target);
347
+ const name = assoc.options.foreignKey?.name ?? camelize(`${as}_${targetPrimaryKey}`);
348
+ const attribute = injectKey({
349
+ holder: source,
350
+ name,
351
+ key: assoc.options.foreignKey,
352
+ keyOwner: target,
353
+ keyOwnerName: targetName,
354
+ keyAttribute: assoc.options.targetKey ?? targetPrimaryKey,
355
+ onDelete: assoc.options.onDelete,
356
+ onUpdate: assoc.options.onUpdate,
357
+ constraints: assoc.options.constraints,
358
+ defaultOnDelete: (allowNull) => allowNull ? 'SET NULL' : 'NO ACTION',
359
+ }, project);
360
+ if (!result.aliases.has(attribute)) {
361
+ result.aliases.set(attribute, lowerFirst(as));
362
+ }
363
+ }
364
+ function linkHasOneOrMany(assoc, source, target, result, project) {
365
+ if (target === undefined) {
366
+ project.warnings.push(`${assoc.label}: "${assoc.target}" is not a model in the input, so the foreign key it needs could not be added; the association was skipped.`);
367
+ return;
368
+ }
369
+ const isMany = assoc.kind === 'hasMany';
370
+ const as = assoc.options.as ?? (isMany ? pluralName(target) : singularName(target));
371
+ const sourceKey = assoc.options.sourceKey ?? primaryKeyName(source);
372
+ // hasOne names the key after its alias when it has one; hasMany always uses the model.
373
+ const keyBase = isMany
374
+ ? singularName(source)
375
+ : singularize(assoc.options.as ?? source.raw.modelName);
376
+ const name = assoc.options.foreignKey?.name ??
377
+ camelize(`${keyBase}_${primaryKeyName(source)}`);
378
+ const attribute = injectKey({
379
+ holder: target,
380
+ name,
381
+ key: assoc.options.foreignKey,
382
+ keyOwner: source,
383
+ keyOwnerName: source.irName,
384
+ keyAttribute: sourceKey,
385
+ onDelete: assoc.options.onDelete,
386
+ onUpdate: assoc.options.onUpdate,
387
+ constraints: assoc.options.constraints,
388
+ defaultOnDelete: (allowNull) => allowNull ? 'SET NULL' : 'CASCADE',
389
+ }, project);
390
+ if (!result.reverses.has(attribute)) {
391
+ result.reverses.set(attribute, {
392
+ name: lowerFirst(as),
393
+ kind: isMany ? 'hasMany' : 'hasOne',
394
+ label: assoc.label,
395
+ });
396
+ }
397
+ }
398
+ function linkManyToMany(plans, result, project) {
399
+ // Two declarations over the same join table are the two halves of one relation.
400
+ for (const [index, plan] of plans.entries()) {
401
+ if (plan.paired !== undefined) {
402
+ continue;
403
+ }
404
+ const other = plans
405
+ .slice(index + 1)
406
+ .find((candidate) => candidate.paired === undefined &&
407
+ candidate.source === plan.target &&
408
+ candidate.target === plan.source &&
409
+ sameThrough(plan, candidate));
410
+ if (other !== undefined) {
411
+ plan.paired = other;
412
+ other.paired = plan;
413
+ }
414
+ }
415
+ for (const plan of plans) {
416
+ const paired = plan.paired;
417
+ if (paired !== undefined && plan.otherKeyIsDefault) {
418
+ plan.otherKey = paired.foreignKey;
419
+ }
420
+ }
421
+ for (const plan of plans) {
422
+ if (plan.throughModel !== undefined) {
423
+ injectJoinModel(plan, project);
424
+ continue;
425
+ }
426
+ const paired = plan.paired;
427
+ if (plan.consumed) {
428
+ continue;
429
+ }
430
+ if (paired !== undefined) {
431
+ paired.consumed = true;
432
+ }
433
+ const table = plan.table ?? '';
434
+ // The join model is defined with the options of the model the association is called on.
435
+ const underscored = plan.source.options.underscored;
436
+ const column = (name, key) => key?.attribute.field ?? (underscored ? underscore(name) : name);
437
+ result.manyToMany.push({
438
+ owner: plan.source,
439
+ target: plan.target,
440
+ name: lowerFirst(plan.as),
441
+ relatedName: paired === undefined ? undefined : lowerFirst(paired.as),
442
+ table,
443
+ ownerColumn: column(plan.foreignKey, plan.assoc.options.foreignKey),
444
+ targetColumn: column(plan.otherKey, plan.assoc.options.otherKey),
445
+ label: plan.assoc.label,
446
+ });
447
+ }
448
+ }
449
+ //# sourceMappingURL=sequelizeAssociations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequelizeAssociations.js","sourceRoot":"","sources":["../../src/parsers/sequelizeAssociations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { type SyntaxNode } from './typescriptSyntax.js';
2
+ import type { AssociationOptions, FileInfo, ModelOptions, Project, RawAttribute, RawIndex, RawModel } from './sequelizeModel.js';
3
+ /** What the walk needs to resolve names: the file being read and the project it belongs to. */
4
+ export interface Ctx {
5
+ file: FileInfo;
6
+ project: Project;
7
+ }
8
+ export declare function stripWrappers(node: SyntaxNode): SyntaxNode;
9
+ export declare function describeFile(path: string, root: SyntaxNode): FileInfo;
10
+ /** Follows `const x = ...` references (also across files) until a node that is not a plain name. */
11
+ export declare function resolveNode(node: SyntaxNode, ctx: Ctx): SyntaxNode;
12
+ interface ObjectEntries {
13
+ entries: Map<string, SyntaxNode>;
14
+ /** True when a spread or computed key could not be followed. */
15
+ incomplete: boolean;
16
+ }
17
+ /** The `key: value` entries of an object literal, following identifiers and spreads of known objects. */
18
+ export declare function objectEntries(node: SyntaxNode, ctx: Ctx): ObjectEntries;
19
+ export declare function argsOf(call: SyntaxNode): SyntaxNode[];
20
+ /** Reads one attribute definition: `{ type, allowNull, ... }` or a bare `DataTypes.X`. */
21
+ export declare function readAttribute(name: string, node: SyntaxNode, ctx: Ctx): RawAttribute;
22
+ /** Applies the options of an attribute object (`allowNull`, `unique`, ...) to an attribute. */
23
+ export declare function applyAttributeEntries(attribute: RawAttribute, entries: Map<string, SyntaxNode>, ctx: Ctx): void;
24
+ export declare function readAssociationOptions(node: SyntaxNode | undefined, ctx: Ctx): AssociationOptions;
25
+ /** Reads the options of a model, with the project defaults and the decorators' contributions below them. */
26
+ export declare function readModelOptions(model: RawModel, project: Project): ModelOptions;
27
+ /** Reads the `indexes` option (and the `uniqueKeys` option) of a model. */
28
+ export declare function readIndexes(model: RawModel, project: Project): RawIndex[];
29
+ /** Merges indexes that several properties contributed under one name into a composite index. */
30
+ export declare function mergeNamedIndexes(indexes: RawIndex[]): RawIndex[];
31
+ /** Walks one file and records its models, association calls and the shared `define` defaults. */
32
+ export declare function collectFile(file: FileInfo, project: Project): void;
33
+ export {};