@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,387 @@
1
+ import { ModelBuilder } from '../builder.js';
2
+ import { extractCheckEnum } from '../check-enum.js';
3
+ import { SchemaImportError } from '../errors.js';
4
+ import { parseArgs, pluralize, scalarValue, singularize, stringLiteral, splitTopLevel } from '../text.js';
5
+ const T_TYPES = {
6
+ string: { logicalType: 'varchar', dbType: 'character varying' },
7
+ text: { logicalType: 'text', dbType: 'text' },
8
+ integer: { logicalType: 'integer', dbType: 'integer' },
9
+ bigint: { logicalType: 'bigint', dbType: 'bigint' },
10
+ smallint: { logicalType: 'integer', dbType: 'smallint' },
11
+ decimal: { logicalType: 'decimal', dbType: 'numeric' },
12
+ numeric: { logicalType: 'decimal', dbType: 'numeric' },
13
+ float: { logicalType: 'float', dbType: 'double precision' },
14
+ boolean: { logicalType: 'boolean', dbType: 'boolean' },
15
+ date: { logicalType: 'date', dbType: 'date' },
16
+ datetime: { logicalType: 'timestamp', dbType: 'timestamp' },
17
+ timestamp: { logicalType: 'timestamp', dbType: 'timestamp' },
18
+ timestamptz: { logicalType: 'timestamptz', dbType: 'timestamp with time zone' },
19
+ time: { logicalType: 'time', dbType: 'time' },
20
+ json: { logicalType: 'json', dbType: 'json' },
21
+ jsonb: { logicalType: 'json', dbType: 'jsonb' },
22
+ uuid: { logicalType: 'uuid', dbType: 'uuid' },
23
+ binary: { logicalType: 'binary', dbType: 'bytea' },
24
+ blob: { logicalType: 'binary', dbType: 'blob' },
25
+ inet: { logicalType: 'inet', dbType: 'inet' },
26
+ cidr: { logicalType: 'inet', dbType: 'cidr' },
27
+ interval: { logicalType: 'interval', dbType: 'interval' },
28
+ };
29
+ export function parseRails(content, name, warnings) {
30
+ const builder = new ModelBuilder(warnings);
31
+ const lines = content.split('\n');
32
+ let current = null;
33
+ let sawCreateTable = false;
34
+ let inExecuteHeredoc = null;
35
+ for (let lineNo = 0; lineNo < lines.length; lineNo += 1) {
36
+ const raw = lines[lineNo];
37
+ const line = raw.trim();
38
+ if (inExecuteHeredoc !== null) {
39
+ if (line === inExecuteHeredoc)
40
+ inExecuteHeredoc = null;
41
+ continue;
42
+ }
43
+ if (line.length === 0 || line.startsWith('#'))
44
+ continue;
45
+ const createMatch = /^create_table\s+(.*)$/.exec(line);
46
+ if (createMatch) {
47
+ sawCreateTable = true;
48
+ current = startTable(createMatch[1], builder, warnings);
49
+ continue;
50
+ }
51
+ if (line === 'end' || line.startsWith('end ')) {
52
+ current = null;
53
+ continue;
54
+ }
55
+ if (current !== null) {
56
+ const tMatch = /^t\.([a-z_]+[!?]?)\s*(.*)$/.exec(line);
57
+ if (tMatch) {
58
+ handleTableLine(tMatch[1], tMatch[2], current, builder, warnings);
59
+ continue;
60
+ }
61
+ continue;
62
+ }
63
+ const addIndex = /^add_index\s+(.*)$/.exec(line);
64
+ if (addIndex) {
65
+ handleAddIndex(addIndex[1], builder, warnings);
66
+ continue;
67
+ }
68
+ const addFk = /^add_foreign_key\s+(.*)$/.exec(line);
69
+ if (addFk) {
70
+ handleAddForeignKey(addFk[1], builder, warnings);
71
+ continue;
72
+ }
73
+ const addCheck = /^add_check_constraint\s+(.*)$/.exec(line);
74
+ if (addCheck) {
75
+ const args = parseArgs(addCheck[1], 'ruby');
76
+ const tableName = rubyString(args.positional[0]);
77
+ const expr = rubyString(args.positional[1]);
78
+ const table = tableName !== null ? builder.getTable(tableName) : undefined;
79
+ if (table && expr !== null) {
80
+ applyCheck(table, expr, rubyString(args.named['name'] ?? ''), builder);
81
+ }
82
+ continue;
83
+ }
84
+ if (/^execute\b/.test(line)) {
85
+ const heredoc = /<<[-~]?(\w+)/.exec(line);
86
+ if (heredoc)
87
+ inExecuteHeredoc = heredoc[1];
88
+ warnings.addCount('skipped-statement', 'skipped execute block in schema.rb');
89
+ continue;
90
+ }
91
+ }
92
+ if (!sawCreateTable) {
93
+ throw new SchemaImportError('no create_table blocks found in schema.rb');
94
+ }
95
+ return builder.finalize({
96
+ format: 'rails',
97
+ dialect: 'generic',
98
+ name,
99
+ capabilities: { hasEnums: false, hasFKs: true, hasComments: true, hasChecks: true, hasSchemas: false },
100
+ });
101
+ }
102
+ /** Record a CHECK constraint and synthesize a `source:'check'` enum when it is a `col IN (...)`. */
103
+ function applyCheck(table, expression, name, builder) {
104
+ table.checks.push({ name, expression });
105
+ const found = extractCheckEnum(expression);
106
+ if (!found)
107
+ return;
108
+ const col = table.columns.find((c) => c.name === found.column);
109
+ if (!col || col.logicalType === 'enum')
110
+ return;
111
+ const id = `public.${table.name}.${col.name}`;
112
+ builder.addEnum({ id, name: col.name, values: found.values, source: 'check' });
113
+ col.logicalType = 'enum';
114
+ col.enumRef = id;
115
+ }
116
+ function rubyString(raw) {
117
+ if (raw === undefined)
118
+ return null;
119
+ const lit = stringLiteral(raw);
120
+ if (lit !== null)
121
+ return lit;
122
+ const sym = /^:([A-Za-z_][A-Za-z0-9_]*)$/.exec(raw.trim());
123
+ return sym ? sym[1] : null;
124
+ }
125
+ function startTable(argText, builder, warnings) {
126
+ const withoutBlock = argText.replace(/\bdo\s*\|t\|\s*$/, '').trim().replace(/,\s*$/, '');
127
+ const args = parseArgs(withoutBlock, 'ruby');
128
+ const tableName = rubyString(args.positional[0]);
129
+ if (tableName === null) {
130
+ warnings.add('dynamic-name', 'create_table with a non-literal name skipped');
131
+ return null;
132
+ }
133
+ const table = builder.addTable({ name: tableName });
134
+ const comment = rubyString(args.named['comment'] ?? '');
135
+ if (comment !== null)
136
+ table.comment = comment;
137
+ const idOpt = args.named['id'];
138
+ if (idOpt !== undefined && idOpt.trim() === 'false')
139
+ return table;
140
+ const pkName = rubyString(args.named['primary_key'] ?? '') ?? 'id';
141
+ const idType = rubyString(idOpt ?? '') ?? 'bigint';
142
+ const mapped = T_TYPES[idType] ?? { logicalType: 'bigint', dbType: 'bigint' };
143
+ table.columns.push({
144
+ name: pkName,
145
+ dbType: mapped.dbType,
146
+ logicalType: mapped.logicalType,
147
+ nullable: false,
148
+ isPrimaryKey: true,
149
+ default: mapped.logicalType === 'uuid' ? { kind: 'uuid' } : { kind: 'autoincrement' },
150
+ });
151
+ return table;
152
+ }
153
+ function handleTableLine(method, argText, table, builder, warnings) {
154
+ const args = parseArgs(argText, 'ruby');
155
+ if (method === 'timestamps') {
156
+ for (const colName of ['created_at', 'updated_at']) {
157
+ table.columns.push({
158
+ name: colName,
159
+ dbType: 'timestamp',
160
+ logicalType: 'timestamp',
161
+ nullable: false,
162
+ });
163
+ }
164
+ return;
165
+ }
166
+ if (method === 'index') {
167
+ const columns = indexColumns(args.positional[0]);
168
+ if (columns.length > 0) {
169
+ const unique = (args.named['unique'] ?? '') === 'true';
170
+ const idxName = rubyString(args.named['name'] ?? '') ?? `index_${table.name}_on_${columns.join('_and_')}`;
171
+ table.indexes.push({ name: idxName, columns, unique });
172
+ if (unique)
173
+ table.uniques.push({ name: idxName, columns });
174
+ }
175
+ return;
176
+ }
177
+ if (method === 'check_constraint') {
178
+ const expr = rubyString(args.positional[0]);
179
+ if (expr !== null) {
180
+ applyCheck(table, expr, rubyString(args.named['name'] ?? ''), builder);
181
+ }
182
+ return;
183
+ }
184
+ if (method === 'references' || method === 'belongs_to') {
185
+ for (const positional of args.positional) {
186
+ const refName = rubyString(positional);
187
+ if (refName === null)
188
+ continue;
189
+ handleReference(refName, args.named, table, warnings);
190
+ }
191
+ return;
192
+ }
193
+ if (method === 'column') {
194
+ // t.column "name", :string, options
195
+ const colName = rubyString(args.positional[0]);
196
+ const typeName = rubyString(args.positional[1]);
197
+ if (colName !== null && typeName !== null) {
198
+ addColumn(colName, typeName, args.named, table, warnings);
199
+ }
200
+ return;
201
+ }
202
+ if (method === 'virtual') {
203
+ const colName = rubyString(args.positional[0]);
204
+ if (colName !== null) {
205
+ const typeName = rubyString(args.named['type'] ?? '') ?? 'string';
206
+ addColumn(colName, typeName, args.named, table, warnings);
207
+ const col = table.columns[table.columns.length - 1];
208
+ if (col)
209
+ col.isGenerated = true;
210
+ }
211
+ return;
212
+ }
213
+ if (T_TYPES[method] !== undefined) {
214
+ for (const positional of args.positional) {
215
+ const colName = rubyString(positional);
216
+ if (colName !== null)
217
+ addColumn(colName, method, args.named, table, warnings);
218
+ }
219
+ return;
220
+ }
221
+ warnings.addCount('unsupported-method', `skipped unknown schema.rb method t.${method}`);
222
+ }
223
+ function addColumn(colName, typeName, named, table, warnings) {
224
+ const mapped = T_TYPES[typeName];
225
+ if (mapped === undefined) {
226
+ warnings.addCount('unknown-type', `unknown rails column type :${typeName} mapped to unknown`);
227
+ }
228
+ const col = {
229
+ name: colName,
230
+ dbType: mapped?.dbType ?? typeName,
231
+ logicalType: mapped?.logicalType ?? 'unknown',
232
+ nullable: (named['null'] ?? '') !== 'false',
233
+ };
234
+ const limit = Number.parseInt(named['limit'] ?? '', 10);
235
+ if (Number.isFinite(limit)) {
236
+ if (col.logicalType === 'varchar' || col.logicalType === 'text') {
237
+ col.maxLength = limit;
238
+ col.dbType = `${col.dbType}(${limit})`;
239
+ }
240
+ else if (col.logicalType === 'integer' && limit === 8) {
241
+ col.logicalType = 'bigint';
242
+ col.dbType = 'bigint';
243
+ }
244
+ }
245
+ const precision = Number.parseInt(named['precision'] ?? '', 10);
246
+ if (Number.isFinite(precision) && (col.logicalType === 'decimal' || col.logicalType === 'float')) {
247
+ col.numericPrecision = precision;
248
+ const scale = Number.parseInt(named['scale'] ?? '', 10);
249
+ if (Number.isFinite(scale))
250
+ col.numericScale = scale;
251
+ }
252
+ if (named['default'] !== undefined)
253
+ col.default = classifyRubyDefault(named['default']);
254
+ if ((named['array'] ?? '') === 'true')
255
+ col.isArray = true;
256
+ const comment = rubyString(named['comment'] ?? '');
257
+ if (comment !== null)
258
+ col.comment = comment;
259
+ if ((named['unique'] ?? '') === 'true')
260
+ col.isUnique = true;
261
+ table.columns.push(col);
262
+ if ((named['index'] ?? '') === 'true') {
263
+ table.indexes.push({ name: `index_${table.name}_on_${colName}`, columns: [colName] });
264
+ }
265
+ }
266
+ function handleReference(refName, named, table, warnings) {
267
+ if ((named['polymorphic'] ?? '') === 'true') {
268
+ table.columns.push({ name: `${refName}_type`, dbType: 'character varying', logicalType: 'varchar', nullable: (named['null'] ?? '') !== 'false' });
269
+ table.columns.push({ name: `${refName}_id`, dbType: 'bigint', logicalType: 'bigint', nullable: (named['null'] ?? '') !== 'false' });
270
+ warnings.add('polymorphic-reference', `polymorphic reference "${refName}" on "${table.name}" has no single target; no FK emitted`, table.name);
271
+ return;
272
+ }
273
+ const typeName = rubyString(named['type'] ?? '') ?? 'bigint';
274
+ const mapped = T_TYPES[typeName] ?? { logicalType: 'bigint', dbType: 'bigint' };
275
+ const columnName = `${refName}_id`;
276
+ const col = {
277
+ name: columnName,
278
+ dbType: mapped.dbType,
279
+ logicalType: mapped.logicalType,
280
+ nullable: (named['null'] ?? '') !== 'false',
281
+ };
282
+ const fkOpt = named['foreign_key'];
283
+ if (fkOpt !== undefined && fkOpt.trim() !== 'false') {
284
+ let toTable = pluralize(refName);
285
+ let onDelete = null;
286
+ if (fkOpt.trim().startsWith('{')) {
287
+ const fkOpts = parseArgs(fkOpt.trim().slice(1, -1), 'ruby').named;
288
+ toTable = rubyString(fkOpts['to_table'] ?? '') ?? toTable;
289
+ onDelete = railsFkAction(rubyString(fkOpts['on_delete'] ?? ''));
290
+ }
291
+ else {
292
+ warnings.add('naming-assumed', `t.references "${refName}" targets "${toTable}" by pluralization convention`, table.name);
293
+ }
294
+ col.references = { table: toTable, onDelete };
295
+ }
296
+ table.columns.push(col);
297
+ if ((named['index'] ?? 'true') !== 'false') {
298
+ table.indexes.push({ name: `index_${table.name}_on_${columnName}`, columns: [columnName] });
299
+ }
300
+ }
301
+ function handleAddIndex(argText, builder, warnings) {
302
+ const args = parseArgs(argText, 'ruby');
303
+ const tableName = rubyString(args.positional[0]);
304
+ const table = tableName !== null ? builder.getTable(tableName) : undefined;
305
+ if (!table) {
306
+ warnings.add('unknown-table', `add_index on unknown table ${args.positional[0] ?? '?'}`);
307
+ return;
308
+ }
309
+ const columns = indexColumns(args.positional[1]);
310
+ if (columns.length === 0)
311
+ return;
312
+ const unique = (args.named['unique'] ?? '') === 'true';
313
+ const idxName = rubyString(args.named['name'] ?? '') ?? `index_${table.name}_on_${columns.join('_and_')}`;
314
+ table.indexes.push({ name: idxName, columns, unique });
315
+ if (unique)
316
+ table.uniques.push({ name: idxName, columns });
317
+ }
318
+ function handleAddForeignKey(argText, builder, warnings) {
319
+ const args = parseArgs(argText, 'ruby');
320
+ const fromName = rubyString(args.positional[0]);
321
+ const toName = rubyString(args.positional[1]);
322
+ if (fromName === null || toName === null)
323
+ return;
324
+ const table = builder.getTable(fromName);
325
+ if (!table) {
326
+ warnings.add('unknown-table', `add_foreign_key on unknown table "${fromName}"`);
327
+ return;
328
+ }
329
+ const columnName = rubyString(args.named['column'] ?? '') ?? `${singularize(toName)}_id`;
330
+ const col = table.columns.find((c) => c.name === columnName);
331
+ if (!col) {
332
+ warnings.add('unresolved-reference', `add_foreign_key "${fromName}" → "${toName}": column "${columnName}" not found`, table.name);
333
+ return;
334
+ }
335
+ col.references = {
336
+ table: toName,
337
+ column: rubyString(args.named['primary_key'] ?? '') ?? undefined,
338
+ onDelete: railsFkAction(rubyString(args.named['on_delete'] ?? '')),
339
+ onUpdate: railsFkAction(rubyString(args.named['on_update'] ?? '')),
340
+ };
341
+ }
342
+ function indexColumns(positional) {
343
+ if (positional === undefined)
344
+ return [];
345
+ const raw = positional.trim();
346
+ if (raw.startsWith('[')) {
347
+ return splitTopLevel(raw.slice(1, raw.endsWith(']') ? -1 : undefined), ',')
348
+ .map((s) => rubyString(s))
349
+ .filter((s) => s !== null);
350
+ }
351
+ const single = rubyString(raw);
352
+ return single === null ? [] : [single];
353
+ }
354
+ function classifyRubyDefault(raw) {
355
+ const value = scalarValue(raw);
356
+ if (typeof value === 'string')
357
+ return { kind: 'literal', text: value };
358
+ if (typeof value === 'number')
359
+ return { kind: 'literal', text: String(value) };
360
+ if (typeof value === 'boolean')
361
+ return { kind: 'literal', text: String(value) };
362
+ const arrow = /->\s*\{\s*"?([^"}]*)"?\s*\}/.exec(raw);
363
+ if (arrow) {
364
+ const expr = arrow[1].trim();
365
+ if (/now\(\)|current_timestamp/i.test(expr))
366
+ return { kind: 'now' };
367
+ if (/gen_random_uuid/i.test(expr))
368
+ return { kind: 'uuid' };
369
+ return { kind: 'expression', text: expr };
370
+ }
371
+ if (raw.trim() === 'nil')
372
+ return null;
373
+ return { kind: 'expression', text: raw.trim() };
374
+ }
375
+ function railsFkAction(symbol) {
376
+ switch (symbol) {
377
+ case 'cascade':
378
+ return 'cascade';
379
+ case 'nullify':
380
+ return 'set-null';
381
+ case 'restrict':
382
+ return 'restrict';
383
+ default:
384
+ return null;
385
+ }
386
+ }
387
+ //# sourceMappingURL=rails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rails.js","sourceRoot":"","sources":["../../src/parsers/rails.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,YAAY,EAAqC,MAAM,eAAe,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG1G,MAAM,OAAO,GAA2E;IACtF,MAAM,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,mBAAmB,EAAE;IAC/D,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;IAC7C,OAAO,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IACtD,MAAM,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE;IACnD,QAAQ,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE;IACxD,OAAO,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IACtD,OAAO,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IACtD,KAAK,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE;IAC3D,OAAO,EAAE,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;IACtD,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;IAC7C,QAAQ,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE;IAC3D,SAAS,EAAE,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE;IAC5D,WAAW,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,EAAE,0BAA0B,EAAE;IAC/E,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;IAC7C,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;IAC7C,KAAK,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAC/C,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;IAC7C,MAAM,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAClD,IAAI,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;IAC/C,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;IAC7C,IAAI,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE;IAC7C,QAAQ,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE;CAC1D,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,IAAY,EAAE,QAAqB;IAC7E,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,OAAO,GAAsB,IAAI,CAAC;IACtC,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,gBAAgB,GAAkB,IAAI,CAAC;IAE3C,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,CAAC;QACxD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAW,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;YAC9B,IAAI,IAAI,KAAK,gBAAgB;gBAAE,gBAAgB,GAAG,IAAI,CAAC;YACvD,SAAS;QACX,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAExD,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,WAAW,EAAE,CAAC;YAChB,cAAc,GAAG,IAAI,CAAC;YACtB,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,CAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAClE,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,OAAO,GAAG,IAAI,CAAC;YACf,SAAS;QACX,CAAC;QACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,MAAM,GAAG,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,MAAM,EAAE,CAAC;gBACX,eAAe,CAAC,MAAM,CAAC,CAAC,CAAW,EAAE,MAAM,CAAC,CAAC,CAAW,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;gBACtF,SAAS;YACX,CAAC;YACD,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,QAAQ,EAAE,CAAC;YACb,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YACzD,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,KAAK,EAAE,CAAC;YACV,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YAC3D,SAAS;QACX,CAAC;QACD,MAAM,QAAQ,GAAG,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAW,EAAE,MAAM,CAAC,CAAC;YACtD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5C,MAAM,KAAK,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3E,IAAI,KAAK,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC3B,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;YACzE,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,OAAO;gBAAE,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAW,CAAC;YACrD,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,EAAE,oCAAoC,CAAC,CAAC;YAC7E,SAAS;QACX,CAAC;IACH,CAAC;IAED,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,iBAAiB,CAAC,2CAA2C,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,OAAO,CAAC,QAAQ,CAAC;QACtB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,SAAS;QAClB,IAAI;QACJ,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE;KACvG,CAAC,CAAC;AACL,CAAC;AAED,oGAAoG;AACpG,SAAS,UAAU,CACjB,KAAiB,EACjB,UAAkB,EAClB,IAAmB,EACnB,OAAqB;IAErB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAC3C,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/D,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM;QAAE,OAAO;IAC/C,MAAM,EAAE,GAAG,UAAU,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;IAC9C,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/E,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC;IACzB,GAAG,CAAC,OAAO,GAAG,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,GAAuB;IACzC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,GAAG,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,GAAG,CAAC;IAC7B,MAAM,GAAG,GAAG,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,OAAO,GAAG,CAAC,CAAC,CAAE,GAAG,CAAC,CAAC,CAAY,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC;AAED,SAAS,UAAU,CAAC,OAAe,EAAE,OAAqB,EAAE,QAAqB;IAC/E,MAAM,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACzF,MAAM,IAAI,GAAG,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,8CAA8C,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,IAAI,OAAO,KAAK,IAAI;QAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IAE9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IAClE,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,IAAI,IAAI,CAAC;IACnE,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,QAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACvF,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACjB,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,QAAQ,EAAE,KAAK;QACf,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE,MAAM,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE;KACtF,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,eAAe,CACtB,MAAc,EACd,OAAe,EACf,KAAiB,EACjB,OAAqB,EACrB,QAAqB;IAErB,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAExC,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QAC5B,KAAK,MAAM,OAAO,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC;YACnD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACjB,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,WAAW;gBACnB,WAAW,EAAE,WAAW;gBACxB,QAAQ,EAAE,KAAK;aAChB,CAAC,CAAC;QACL,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;YACvD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1G,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACvD,IAAI,MAAM;gBAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,MAAM,KAAK,kBAAkB,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,UAAU,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;QACzE,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,YAAY,EAAE,CAAC;QACvD,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;YACvC,IAAI,OAAO,KAAK,IAAI;gBAAE,SAAS;YAC/B,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACxD,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,oCAAoC;QACpC,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,OAAO,KAAK,IAAI,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YAC1C,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC5D,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC;YAClE,SAAS,CAAC,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YAC1D,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACpD,IAAI,GAAG;gBAAE,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC;QAClC,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;QAClC,KAAK,MAAM,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;YACvC,IAAI,OAAO,KAAK,IAAI;gBAAE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChF,CAAC;QACD,OAAO;IACT,CAAC;IACD,QAAQ,CAAC,QAAQ,CAAC,oBAAoB,EAAE,sCAAsC,MAAM,EAAE,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,SAAS,CAChB,OAAe,EACf,QAAgB,EAChB,KAA6B,EAC7B,KAAiB,EACjB,QAAqB;IAErB,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,8BAA8B,QAAQ,oBAAoB,CAAC,CAAC;IAChG,CAAC;IACD,MAAM,GAAG,GAAgB;QACvB,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,QAAQ;QAClC,WAAW,EAAE,MAAM,EAAE,WAAW,IAAI,SAAS;QAC7C,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;KAC5C,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACxD,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YAChE,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;YACtB,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,GAAG,CAAC;QACzC,CAAC;aAAM,IAAI,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YACxD,GAAG,CAAC,WAAW,GAAG,QAAQ,CAAC;YAC3B,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;QACxB,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAChE,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,SAAS,IAAI,GAAG,CAAC,WAAW,KAAK,OAAO,CAAC,EAAE,CAAC;QACjG,GAAG,CAAC,gBAAgB,GAAG,SAAS,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACxD,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;IACvD,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,SAAS;QAAE,GAAG,CAAC,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACxF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM;QAAE,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;IAC1D,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACnD,IAAI,OAAO,KAAK,IAAI;QAAE,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;IAC5C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM;QAAE,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC5D,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC;QACtC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,KAAK,CAAC,IAAI,OAAO,OAAO,EAAE,EAAE,OAAO,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,OAAe,EACf,KAA6B,EAC7B,KAAiB,EACjB,QAAqB;IAErB,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,EAAE,CAAC;QAC5C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;QAClJ,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;QACpI,QAAQ,CAAC,GAAG,CACV,uBAAuB,EACvB,0BAA0B,OAAO,SAAS,KAAK,CAAC,IAAI,uCAAuC,EAC3F,KAAK,CAAC,IAAI,CACX,CAAC;QACF,OAAO;IACT,CAAC;IACD,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC;IAC7D,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,QAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACzF,MAAM,UAAU,GAAG,GAAG,OAAO,KAAK,CAAC;IACnC,MAAM,GAAG,GAAgB;QACvB,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,QAAQ,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO;KAC5C,CAAC;IACF,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;IACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,OAAO,EAAE,CAAC;QACpD,IAAI,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,QAAQ,GAAoB,IAAI,CAAC;QACrC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC;YAClE,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,OAAO,CAAC;YAC1D,QAAQ,GAAG,aAAa,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,GAAG,CACV,gBAAgB,EAChB,iBAAiB,OAAO,cAAc,OAAO,+BAA+B,EAC5E,KAAK,CAAC,IAAI,CACX,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,UAAU,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;IAChD,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;QAC3C,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,KAAK,CAAC,IAAI,OAAO,UAAU,EAAE,EAAE,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,OAAe,EAAE,OAAqB,EAAE,QAAqB;IACnF,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,KAAK,GAAG,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,8BAA8B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACzF,OAAO;IACT,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IACjC,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,MAAM,CAAC;IACvD,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,SAAS,KAAK,CAAC,IAAI,OAAO,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1G,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACvD,IAAI,MAAM;QAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,mBAAmB,CAAC,OAAe,EAAE,OAAqB,EAAE,QAAqB;IACxF,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,IAAI,QAAQ,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO;IACjD,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,QAAQ,CAAC,GAAG,CAAC,eAAe,EAAE,qCAAqC,QAAQ,GAAG,CAAC,CAAC;QAChF,OAAO;IACT,CAAC;IACD,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;IACzF,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;IAC7D,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,QAAQ,CAAC,GAAG,CACV,sBAAsB,EACtB,oBAAoB,QAAQ,QAAQ,MAAM,cAAc,UAAU,aAAa,EAC/E,KAAK,CAAC,IAAI,CACX,CAAC;QACF,OAAO;IACT,CAAC;IACD,GAAG,CAAC,UAAU,GAAG;QACf,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,IAAI,SAAS;QAChE,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QAClE,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,SAAS,YAAY,CAAC,UAA8B;IAClD,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,GAAG,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAC9B,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC;aACxE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;aACzB,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC/B,OAAO,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAW;IACtC,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACvE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/E,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAChF,MAAM,KAAK,GAAG,6BAA6B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACtD,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,GAAI,KAAK,CAAC,CAAC,CAAY,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,4BAA4B,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACpE,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC3D,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5C,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,KAAK;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,aAAa,CAAC,MAAqB;IAC1C,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,SAAS,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,UAAU,CAAC;QACpB,KAAK,UAAU;YACb,OAAO,UAAU,CAAC;QACpB;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Sequelize model parser — 05-introspection-engine.md §5.2 row 5, tokenizer
3
+ * level: `sequelize.define('name', {attrs}, {options})` and
4
+ * `class X extends Model {}` + `X.init({attrs}, {options})` forms.
5
+ * `DataTypes.*` map, `allowNull` / `unique` / `primaryKey` / `autoIncrement` /
6
+ * `defaultValue` / `references: {model, key}`. Table names are taken verbatim
7
+ * (Sequelize would pluralize model names at runtime — warned).
8
+ */
9
+ import type { DatabaseModel } from '@adminium/engine';
10
+ import type { WarningList } from '../warnings.js';
11
+ export declare function parseSequelize(content: string, name: string, warnings: WarningList): DatabaseModel;
12
+ //# sourceMappingURL=sequelize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sequelize.d.ts","sourceRoot":"","sources":["../../src/parsers/sequelize.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAiB,aAAa,EAAyB,MAAM,kBAAkB,CAAC;AAK5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAuClD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,GAAG,aAAa,CA8GlG"}