@chkit/core 0.1.2-beta.5 → 0.2.0-beta.11

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 (93) hide show
  1. package/README.md +26 -6
  2. package/dist/canonical.d.ts.map +1 -1
  3. package/dist/canonical.js +63 -7
  4. package/dist/canonical.js.map +1 -1
  5. package/dist/column-default.d.ts +62 -0
  6. package/dist/column-default.d.ts.map +1 -0
  7. package/dist/column-default.js +212 -0
  8. package/dist/column-default.js.map +1 -0
  9. package/dist/conflict-markers.d.ts +3 -0
  10. package/dist/conflict-markers.d.ts.map +1 -0
  11. package/dist/conflict-markers.js +9 -0
  12. package/dist/conflict-markers.js.map +1 -0
  13. package/dist/identifier.d.ts +22 -0
  14. package/dist/identifier.d.ts.map +1 -0
  15. package/dist/identifier.js +69 -0
  16. package/dist/identifier.js.map +1 -0
  17. package/dist/index.d.ts +10 -3
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +10 -3
  20. package/dist/index.js.map +1 -1
  21. package/dist/insert-columns.d.ts +13 -0
  22. package/dist/insert-columns.d.ts.map +1 -0
  23. package/dist/insert-columns.js +36 -0
  24. package/dist/insert-columns.js.map +1 -0
  25. package/dist/kafka.d.ts +9 -0
  26. package/dist/kafka.d.ts.map +1 -0
  27. package/dist/kafka.js +64 -0
  28. package/dist/kafka.js.map +1 -0
  29. package/dist/key-clause.d.ts +6 -1
  30. package/dist/key-clause.d.ts.map +1 -1
  31. package/dist/key-clause.js +12 -13
  32. package/dist/key-clause.js.map +1 -1
  33. package/dist/model-types.d.ts +123 -7
  34. package/dist/model-types.d.ts.map +1 -1
  35. package/dist/model.d.ts +4 -2
  36. package/dist/model.d.ts.map +1 -1
  37. package/dist/model.js +13 -3
  38. package/dist/model.js.map +1 -1
  39. package/dist/object-dependencies.d.ts +18 -0
  40. package/dist/object-dependencies.d.ts.map +1 -0
  41. package/dist/object-dependencies.js +351 -0
  42. package/dist/object-dependencies.js.map +1 -0
  43. package/dist/on-cluster.d.ts.map +1 -1
  44. package/dist/on-cluster.js +18 -9
  45. package/dist/on-cluster.js.map +1 -1
  46. package/dist/planner.d.ts.map +1 -1
  47. package/dist/planner.js +144 -81
  48. package/dist/planner.js.map +1 -1
  49. package/dist/projection.d.ts.map +1 -1
  50. package/dist/projection.js +5 -40
  51. package/dist/projection.js.map +1 -1
  52. package/dist/schema-loader.d.ts +2 -0
  53. package/dist/schema-loader.d.ts.map +1 -1
  54. package/dist/schema-loader.js +72 -5
  55. package/dist/schema-loader.js.map +1 -1
  56. package/dist/sql-lexer.d.ts +29 -0
  57. package/dist/sql-lexer.d.ts.map +1 -0
  58. package/dist/sql-lexer.js +220 -0
  59. package/dist/sql-lexer.js.map +1 -0
  60. package/dist/sql-normalizer.d.ts +48 -0
  61. package/dist/sql-normalizer.d.ts.map +1 -1
  62. package/dist/sql-normalizer.js +118 -1
  63. package/dist/sql-normalizer.js.map +1 -1
  64. package/dist/sql-scan.d.ts +20 -0
  65. package/dist/sql-scan.d.ts.map +1 -0
  66. package/dist/sql-scan.js +82 -0
  67. package/dist/sql-scan.js.map +1 -0
  68. package/dist/sql-splitter.d.ts.map +1 -1
  69. package/dist/sql-splitter.js +52 -5
  70. package/dist/sql-splitter.js.map +1 -1
  71. package/dist/sql.d.ts +9 -1
  72. package/dist/sql.d.ts.map +1 -1
  73. package/dist/sql.js +95 -36
  74. package/dist/sql.js.map +1 -1
  75. package/dist/text-index-sql.d.ts +6 -0
  76. package/dist/text-index-sql.d.ts.map +1 -0
  77. package/dist/text-index-sql.js +200 -0
  78. package/dist/text-index-sql.js.map +1 -0
  79. package/dist/text-index.d.ts +10 -0
  80. package/dist/text-index.d.ts.map +1 -0
  81. package/dist/text-index.js +121 -0
  82. package/dist/text-index.js.map +1 -0
  83. package/dist/ts-import.d.ts.map +1 -1
  84. package/dist/ts-import.js +23 -3
  85. package/dist/ts-import.js.map +1 -1
  86. package/dist/validate.d.ts.map +1 -1
  87. package/dist/validate.js +350 -3
  88. package/dist/validate.js.map +1 -1
  89. package/package.json +1 -1
  90. package/dist/utils.d.ts +0 -2
  91. package/dist/utils.d.ts.map +0 -1
  92. package/dist/utils.js +0 -2
  93. package/dist/utils.js.map +0 -1
package/dist/planner.js CHANGED
@@ -1,7 +1,12 @@
1
1
  import { canonicalizeDefinitions, definitionKey } from './canonical.js';
2
2
  import { diffByName, diffClauses, diffSettings } from './diff-primitives.js';
3
- import { renderAlterAddColumn, renderAlterAddIndex, renderAlterAddProjection, renderAlterDropColumn, renderAlterDropIndex, renderAlterDropProjection, renderAlterModifyColumn, renderAlterModifyRefresh, renderAlterModifySetting, renderAlterModifyTTL, renderAlterRemoveCodec, renderAlterResetSetting, toCreateSQL, } from './sql.js';
3
+ import { renderAlterAddColumn, renderAlterAddIndex, renderAlterAddProjection, renderAlterDropColumn, renderAlterDropIndex, renderAlterDropProjection, renderAlterModifyColumn, renderAlterModifyRefresh, renderAlterModifySetting, renderAlterModifyTTL, renderAlterRemoveCodec, renderAlterRemoveColumnExpression, renderAlterResetSetting, renderDictionarySQL, toCreateSQL, } from './sql.js';
4
+ import { textIndexFingerprint } from './text-index.js';
4
5
  import { assertValidDefinitions } from './validate.js';
6
+ import { quoteIdentifier, renderIdentifier, renderQualifiedName } from './identifier.js';
7
+ import { ChxValidationError } from './model.js';
8
+ import { isKafkaEngine, kafkaSettingFingerprint } from './kafka.js';
9
+ import { buildDependencyGraph, invertDependencyGraph, orderByDependencies, } from './object-dependencies.js';
5
10
  function createMap(definitions) {
6
11
  return new Map(definitions.map((def) => [definitionKey(def), def]));
7
12
  }
@@ -11,7 +16,7 @@ function pushDropOperation(operations, def, risk = 'danger') {
11
16
  type: 'drop_table',
12
17
  key: definitionKey(def),
13
18
  risk,
14
- sql: `DROP TABLE IF EXISTS ${def.database}.${def.name};`,
19
+ sql: `DROP TABLE IF EXISTS ${renderQualifiedName(def.database, def.name)}${isKafkaEngine(def.engine) ? ' SYNC' : ''};`,
15
20
  });
16
21
  return;
17
22
  }
@@ -20,7 +25,16 @@ function pushDropOperation(operations, def, risk = 'danger') {
20
25
  type: 'drop_view',
21
26
  key: definitionKey(def),
22
27
  risk,
23
- sql: `DROP VIEW IF EXISTS ${def.database}.${def.name};`,
28
+ sql: `DROP VIEW IF EXISTS ${renderQualifiedName(def.database, def.name)};`,
29
+ });
30
+ return;
31
+ }
32
+ if (def.kind === 'dictionary') {
33
+ operations.push({
34
+ type: 'drop_dictionary',
35
+ key: definitionKey(def),
36
+ risk,
37
+ sql: `DROP DICTIONARY IF EXISTS ${renderQualifiedName(def.database, def.name)};`,
24
38
  });
25
39
  return;
26
40
  }
@@ -28,7 +42,7 @@ function pushDropOperation(operations, def, risk = 'danger') {
28
42
  type: 'drop_materialized_view',
29
43
  key: definitionKey(def),
30
44
  risk,
31
- sql: `DROP TABLE IF EXISTS ${def.database}.${def.name} SYNC;`,
45
+ sql: `DROP TABLE IF EXISTS ${renderQualifiedName(def.database, def.name)} SYNC;`,
32
46
  });
33
47
  }
34
48
  function pushCreateOperation(operations, def, risk = 'safe') {
@@ -50,6 +64,15 @@ function pushCreateOperation(operations, def, risk = 'safe') {
50
64
  });
51
65
  return;
52
66
  }
67
+ if (def.kind === 'dictionary') {
68
+ operations.push({
69
+ type: 'create_dictionary',
70
+ key: definitionKey(def),
71
+ risk,
72
+ sql: toCreateSQL(def),
73
+ });
74
+ return;
75
+ }
53
76
  operations.push({
54
77
  type: 'create_materialized_view',
55
78
  key: definitionKey(def),
@@ -62,7 +85,7 @@ function pushCreateDatabaseOperation(operations, database, risk = 'safe') {
62
85
  type: 'create_database',
63
86
  key: `database:${database}`,
64
87
  risk,
65
- sql: `CREATE DATABASE IF NOT EXISTS ${database};`,
88
+ sql: `CREATE DATABASE IF NOT EXISTS ${renderIdentifier(database)};`,
66
89
  });
67
90
  }
68
91
  // Whitespace and identifier backtick-quoting carry no meaning in a key clause,
@@ -137,7 +160,7 @@ function renderRenameColumnSuggestionSQL(table, from, to) {
137
160
  // IF EXISTS makes the rename idempotent: once it has run (the `from` column is
138
161
  // gone), a replay after a partial migration failure is a safe no-op rather
139
162
  // than an "unknown identifier" brick. ClickHouse supports the clause.
140
- return `ALTER TABLE ${table.database}.${table.name} RENAME COLUMN IF EXISTS \`${from}\` TO \`${to}\`;`;
163
+ return `ALTER TABLE ${renderQualifiedName(table.database, table.name)} RENAME COLUMN IF EXISTS ${quoteIdentifier(from)} TO ${quoteIdentifier(to)};`;
141
164
  }
142
165
  function inferColumnRenameSuggestions(table, addedColumns, droppedColumns) {
143
166
  if (addedColumns.length === 0 || droppedColumns.length === 0)
@@ -202,7 +225,7 @@ function diffMaterializedView(oldDef, newDef) {
202
225
  type: 'drop_materialized_view',
203
226
  key: definitionKey(newDef),
204
227
  risk: 'caution',
205
- sql: `DROP TABLE IF EXISTS ${newDef.database}.${newDef.name} SYNC;`,
228
+ sql: `DROP TABLE IF EXISTS ${renderQualifiedName(newDef.database, newDef.name)} SYNC;`,
206
229
  },
207
230
  {
208
231
  type: 'create_materialized_view',
@@ -224,7 +247,50 @@ function diffMaterializedView(oldDef, newDef) {
224
247
  }
225
248
  return [];
226
249
  }
250
+ // `chkit pull` writes ClickHouse's own introspection placeholder
251
+ // (`password '[HIDDEN]'`) into `source` when it can't recover a dictionary's
252
+ // real credential. That placeholder must never drive a diff — rendering it
253
+ // would deploy the literal string "[HIDDEN]" as the password. A real
254
+ // password value, by contrast, is fully known to chkit (it's a plain string
255
+ // in the schema file) and a change to it is a genuine diff like any other.
256
+ function dictionarySourceIsHidden(source) {
257
+ return source.includes('[HIDDEN]');
258
+ }
259
+ function dictionaryComparisonShape(def, omitSource) {
260
+ if (!omitSource)
261
+ return def;
262
+ const { source, ...rest } = def;
263
+ return rest;
264
+ }
265
+ function diffDictionary(oldDef, newDef) {
266
+ const omitSource = dictionarySourceIsHidden(newDef.source);
267
+ const unchanged = JSON.stringify(dictionaryComparisonShape(oldDef, omitSource)) ===
268
+ JSON.stringify(dictionaryComparisonShape(newDef, omitSource));
269
+ if (unchanged)
270
+ return [];
271
+ return [
272
+ {
273
+ type: 'create_dictionary',
274
+ key: definitionKey(newDef),
275
+ risk: 'caution',
276
+ sql: renderDictionarySQL(newDef, true),
277
+ },
278
+ ];
279
+ }
227
280
  function diffTables(oldDef, newDef) {
281
+ if (isKafkaEngine(oldDef.engine) || isKafkaEngine(newDef.engine)) {
282
+ const settings = (def) => Object.fromEntries(Object.entries(def.settings ?? {}).map(([key, value]) => [key, kafkaSettingFingerprint(value)]));
283
+ if (requiresTableRecreate(oldDef, newDef)
284
+ || JSON.stringify(oldDef.columns.map(column => [column.name, normalizeColumn(column)])) !== JSON.stringify(newDef.columns.map(column => [column.name, normalizeColumn(column)]))
285
+ || diffSettings(settings(oldDef), settings(newDef)).changes.length > 0
286
+ || (oldDef.comment ?? '') !== (newDef.comment ?? '')) {
287
+ throw new ChxValidationError([{
288
+ code: 'kafka_change_requires_replacement', kind: 'table', database: newDef.database, name: newDef.name,
289
+ message: `Kafka table ${newDef.database}.${newDef.name} requires an explicit replacement; column, engine and setting ALTERs are not supported. Remove the queue and its consuming materialized views from the schema and generate a drop migration, then re-add the updated definitions and generate a create migration. Review both migrations and consumer-group/offset behavior before applying with --allow-destructive.`,
290
+ }]);
291
+ }
292
+ return { operations: [], renameSuggestions: [] };
293
+ }
228
294
  if (requiresTableRecreate(oldDef, newDef)) {
229
295
  return {
230
296
  operations: [
@@ -232,7 +298,7 @@ function diffTables(oldDef, newDef) {
232
298
  type: 'drop_table',
233
299
  key: definitionKey(newDef),
234
300
  risk: 'danger',
235
- sql: `DROP TABLE IF EXISTS ${newDef.database}.${newDef.name};`,
301
+ sql: `DROP TABLE IF EXISTS ${renderQualifiedName(newDef.database, newDef.name)};`,
236
302
  },
237
303
  {
238
304
  type: 'create_table',
@@ -248,6 +314,19 @@ function diffTables(oldDef, newDef) {
248
314
  const columnDiff = diffByName(oldDef.columns, newDef.columns, (column) => column.name, (left, right) => JSON.stringify(normalizeColumn(left)) === JSON.stringify(normalizeColumn(right)));
249
315
  const addedColumns = columnDiff.added;
250
316
  const droppedColumns = columnDiff.removed;
317
+ // Report every blocked column of the table at once, not one per generate run.
318
+ const kindChangeIssues = columnDiff.changed.flatMap(({ name, oldItem, newItem }) => {
319
+ const oldKind = oldItem.defaultKind ?? 'DEFAULT';
320
+ const newKind = newItem.defaultKind ?? 'DEFAULT';
321
+ if (oldKind === newKind || ![oldKind, newKind].some((kind) => kind === 'ALIAS' || kind === 'EPHEMERAL'))
322
+ return [];
323
+ return [{
324
+ code: 'column_kind_change_unsupported', kind: 'table', database: newDef.database, name: newDef.name,
325
+ message: `Cannot automatically change column ${newDef.database}.${newDef.name}.${name} from ${oldKind} to ${newKind}; storage-kind conversions involving ALIAS or EPHEMERAL are not supported. Keep the column declared as ${oldKind} in the schema.`,
326
+ }];
327
+ });
328
+ if (kindChangeIssues.length > 0)
329
+ throw new ChxValidationError(kindChangeIssues);
251
330
  for (const column of columnDiff.added) {
252
331
  ops.push({
253
332
  type: 'alter_table_add_column',
@@ -257,14 +336,24 @@ function diffTables(oldDef, newDef) {
257
336
  });
258
337
  }
259
338
  for (const { name, oldItem, newItem } of columnDiff.changed) {
339
+ const oldKind = oldItem.defaultKind ?? 'DEFAULT';
340
+ const newKind = newItem.defaultKind ?? 'DEFAULT';
341
+ const key = `table:${newDef.database}.${newDef.name}:column:${name}`;
342
+ const removeExpression = renderAlterRemoveColumnExpression(newDef, newItem, oldItem);
343
+ // Its own operation: migrate pairs each `-- operation:` marker with exactly one statement.
344
+ if (removeExpression)
345
+ ops.push({ type: 'alter_table_modify_column', key, risk: 'caution', sql: removeExpression });
260
346
  const sql = isCodecRemoval(oldItem, newItem)
261
347
  ? renderAlterRemoveCodec(newDef, name)
262
348
  : renderAlterModifyColumn(newDef, newItem);
263
349
  ops.push({
264
350
  type: 'alter_table_modify_column',
265
- key: `table:${newDef.database}.${newDef.name}:column:${name}`,
351
+ key,
266
352
  risk: 'caution',
267
353
  sql,
354
+ ...((oldKind === 'DEFAULT' || oldKind === 'MATERIALIZED' || newKind === 'DEFAULT' || newKind === 'MATERIALIZED') && (oldItem.default !== newItem.default || oldKind !== newKind)
355
+ ? { warning: `Changing the expression for ${newDef.database}.${newDef.name}.${name} does not rewrite stored historical values. Review a separate MATERIALIZE COLUMN migration if a rewrite is required; never reconstruct values from discarded EPHEMERAL inputs.` }
356
+ : {}),
268
357
  });
269
358
  }
270
359
  for (const column of columnDiff.removed) {
@@ -275,7 +364,9 @@ function diffTables(oldDef, newDef) {
275
364
  sql: renderAlterDropColumn(newDef, column.name),
276
365
  });
277
366
  }
278
- const indexDiff = diffByName(oldDef.indexes ?? [], newDef.indexes ?? [], (index) => index.name, (left, right) => JSON.stringify(left) === JSON.stringify(right));
367
+ const indexDiff = diffByName(oldDef.indexes ?? [], newDef.indexes ?? [], (index) => index.name, (left, right) => left.type === 'text' && right.type === 'text'
368
+ ? textIndexFingerprint(left) === textIndexFingerprint(right)
369
+ : JSON.stringify(left) === JSON.stringify(right));
279
370
  for (const index of indexDiff.added) {
280
371
  ops.push({
281
372
  type: 'alter_table_add_index',
@@ -368,47 +459,6 @@ function diffTables(oldDef, newDef) {
368
459
  renameSuggestions: inferColumnRenameSuggestions(newDef, addedColumns, droppedColumns),
369
460
  };
370
461
  }
371
- /**
372
- * Creation depth of each refreshable materialized view, derived from its
373
- * `refresh.dependsOn` edges (#41). A view declared `DEPENDS ON other_mv` must
374
- * be created AFTER `other_mv` exists, so ordering create operations by
375
- * ascending depth puts every dependency before the views that depend on it.
376
- * Names alone are unsafe: a dependent MV whose name sorts first would otherwise
377
- * be created first and fail.
378
- */
379
- function materializedViewCreationDepth(definitions, byKey) {
380
- const depth = new Map();
381
- const visiting = new Set();
382
- const compute = (key) => {
383
- const cached = depth.get(key);
384
- if (cached !== undefined)
385
- return cached;
386
- // A dependency cycle has no valid creation order; stop recursing and let
387
- // the alphabetical tiebreak apply rather than looping forever.
388
- if (visiting.has(key))
389
- return 0;
390
- const def = byKey.get(key);
391
- if (!def || def.kind !== 'materialized_view') {
392
- depth.set(key, 0);
393
- return 0;
394
- }
395
- visiting.add(key);
396
- let result = 0;
397
- for (const dep of def.refresh?.dependsOn ?? []) {
398
- const depKey = `materialized_view:${dep.database}.${dep.name}`;
399
- if (byKey.has(depKey))
400
- result = Math.max(result, 1 + compute(depKey));
401
- }
402
- visiting.delete(key);
403
- depth.set(key, result);
404
- return result;
405
- };
406
- for (const def of definitions) {
407
- if (def.kind === 'materialized_view')
408
- compute(definitionKey(def));
409
- }
410
- return depth;
411
- }
412
462
  export function planDiff(oldDefinitions, newDefinitions) {
413
463
  const oldCanonical = canonicalizeDefinitions(oldDefinitions);
414
464
  const newCanonical = canonicalizeDefinitions(newDefinitions);
@@ -448,6 +498,10 @@ export function planDiff(oldDefinitions, newDefinitions) {
448
498
  operations.push(...mvOps);
449
499
  continue;
450
500
  }
501
+ if (newDef.kind === oldDef.kind && newDef.kind === 'dictionary' && oldDef.kind === 'dictionary') {
502
+ operations.push(...diffDictionary(oldDef, newDef));
503
+ continue;
504
+ }
451
505
  if (newDef.kind !== oldDef.kind) {
452
506
  pushDropOperation(operations, oldDef, 'danger');
453
507
  }
@@ -463,41 +517,16 @@ export function planDiff(oldDefinitions, newDefinitions) {
463
517
  for (const database of [...databasesToCreate].sort((a, b) => a.localeCompare(b))) {
464
518
  pushCreateDatabaseOperation(operations, database, 'safe');
465
519
  }
466
- const mvCreationDepth = materializedViewCreationDepth(newCanonical, newMap);
467
- operations.sort((a, b) => {
468
- const rank = (op) => {
469
- if (op.type.startsWith('drop_'))
470
- return 0;
471
- if (op.type === 'alter_materialized_view_modify_refresh')
472
- return 1;
473
- if (op.type.startsWith('alter_'))
474
- return 1;
475
- if (op.type === 'create_database')
476
- return 2;
477
- if (op.type === 'create_table')
478
- return 3;
479
- if (op.type === 'create_view')
480
- return 4;
481
- return 5;
482
- };
483
- const rankOrder = rank(a) - rank(b);
484
- if (rankOrder !== 0)
485
- return rankOrder;
486
- // Within materialized-view creates, order a DEPENDS ON target before the
487
- // view that depends on it (#41), then fall back to a stable name order.
488
- if (a.type === 'create_materialized_view' && b.type === 'create_materialized_view') {
489
- const depthOrder = (mvCreationDepth.get(a.key) ?? 0) - (mvCreationDepth.get(b.key) ?? 0);
490
- if (depthOrder !== 0)
491
- return depthOrder;
492
- }
493
- return a.key.localeCompare(b.key);
520
+ const ordered = orderOperations(operations.sort(compareOperations), {
521
+ drop: invertDependencyGraph(buildDependencyGraph(oldCanonical)),
522
+ create: buildDependencyGraph(newCanonical),
494
523
  });
495
524
  const riskSummary = { safe: 0, caution: 0, danger: 0 };
496
- for (const operation of operations) {
525
+ for (const operation of ordered) {
497
526
  riskSummary[operation.risk] = (riskSummary[operation.risk] ?? 0) + 1;
498
527
  }
499
528
  return {
500
- operations,
529
+ operations: ordered,
501
530
  riskSummary,
502
531
  renameSuggestions: renameSuggestions.sort((a, b) => {
503
532
  const tableOrder = `${a.database}.${a.table}`.localeCompare(`${b.database}.${b.table}`);
@@ -510,4 +539,38 @@ export function planDiff(oldDefinitions, newDefinitions) {
510
539
  }),
511
540
  };
512
541
  }
542
+ // drop_* 0, alter_* 1, create_database 2, create_table 3, create_view 4, other creates 5.
543
+ function operationRank(op) {
544
+ if (op.type.startsWith('drop_'))
545
+ return 0;
546
+ if (op.type.startsWith('alter_'))
547
+ return 1;
548
+ if (op.type === 'create_database')
549
+ return 2;
550
+ if (op.type === 'create_table')
551
+ return 3;
552
+ if (op.type === 'create_view')
553
+ return 4;
554
+ return 5;
555
+ }
556
+ // The sort is stable, so operations that share a key keep the order diffTables
557
+ // pushed them in: a column's REMOVE DEFAULT before its MODIFY COLUMN.
558
+ function compareOperations(a, b) {
559
+ return operationRank(a) - operationRank(b) || a.key.localeCompare(b.key);
560
+ }
561
+ /**
562
+ * Reorders the drop and create segments of a (rank, key)-sorted plan by object
563
+ * dependencies (#231): drops run dependents first, creates run dependencies
564
+ * first. Alters and create_database keep their place.
565
+ */
566
+ function orderOperations(sorted, prerequisites) {
567
+ const drops = sorted.filter((op) => operationRank(op) === 0);
568
+ const middle = sorted.filter((op) => operationRank(op) === 1 || operationRank(op) === 2);
569
+ const creates = sorted.filter((op) => operationRank(op) >= 3);
570
+ return [
571
+ ...orderByDependencies(drops, (op) => op.key, (key) => prerequisites.drop.get(key) ?? []),
572
+ ...middle,
573
+ ...orderByDependencies(creates, (op) => op.key, (key) => prerequisites.create.get(key) ?? []),
574
+ ];
575
+ }
513
576
  //# sourceMappingURL=planner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"planner.js","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planner.js","sourceRoot":"","sources":["../src/planner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AACvE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAc5E,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,yBAAyB,EACzB,uBAAuB,EACvB,wBAAwB,EACxB,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,iCAAiC,EACjC,uBAAuB,EACvB,mBAAmB,EACnB,WAAW,GACZ,MAAM,UAAU,CAAA;AACjB,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAA;AACtD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;AACxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,GAEpB,MAAM,0BAA0B,CAAA;AAEjC,SAAS,SAAS,CAAC,WAA+B;IAChD,OAAO,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAA;AACrE,CAAC;AAED,SAAS,iBAAiB,CACxB,UAAgC,EAChC,GAAqB,EACrB,OAAkB,QAAQ;IAE1B,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACzB,UAAU,CAAC,IAAI,CAAE;YACf,IAAI,EAAE,YAAY;YAClB,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC;YACvB,IAAI;YACJ,GAAG,EAAE,wBAAwB,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,GAAG;SACvH,CAAC,CAAA;QACF,OAAM;IACR,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACxB,UAAU,CAAC,IAAI,CAAE;YACf,IAAI,EAAE,WAAW;YACjB,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC;YACvB,IAAI;YACJ,GAAG,EAAE,uBAAuB,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG;SAC3E,CAAC,CAAA;QACF,OAAM;IACR,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC9B,UAAU,CAAC,IAAI,CAAE;YACf,IAAI,EAAE,iBAAiB;YACvB,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC;YACvB,IAAI;YACJ,GAAG,EAAE,6BAA6B,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG;SACjF,CAAC,CAAA;QACF,OAAM;IACR,CAAC;IACD,UAAU,CAAC,IAAI,CAAE;QACf,IAAI,EAAE,wBAAwB;QAC9B,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC;QACvB,IAAI;QACJ,GAAG,EAAE,wBAAwB,mBAAmB,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ;KACjF,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,UAAgC,EAChC,GAAqB,EACrB,OAAkB,MAAM;IAExB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACzB,UAAU,CAAC,IAAI,CAAE;YACf,IAAI,EAAE,cAAc;YACpB,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC;YACvB,IAAI;YACJ,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;SACtB,CAAC,CAAA;QACF,OAAM;IACR,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACxB,UAAU,CAAC,IAAI,CAAE;YACf,IAAI,EAAE,aAAa;YACnB,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC;YACvB,IAAI;YACJ,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;SACtB,CAAC,CAAA;QACF,OAAM;IACR,CAAC;IACD,IAAI,GAAG,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAC9B,UAAU,CAAC,IAAI,CAAE;YACf,IAAI,EAAE,mBAAmB;YACzB,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC;YACvB,IAAI;YACJ,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;SACtB,CAAC,CAAA;QACF,OAAM;IACR,CAAC;IACD,UAAU,CAAC,IAAI,CAAE;QACf,IAAI,EAAE,0BAA0B;QAChC,GAAG,EAAE,aAAa,CAAC,GAAG,CAAC;QACvB,IAAI;QACJ,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC;KACtB,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,2BAA2B,CAClC,UAAgC,EAChC,QAAgB,EAChB,OAAkB,MAAM;IAExB,UAAU,CAAC,IAAI,CAAE;QACf,IAAI,EAAE,iBAAiB;QACvB,GAAG,EAAE,YAAY,QAAQ,EAAE;QAC3B,IAAI;QACJ,GAAG,EAAE,iCAAiC,gBAAgB,CAAC,QAAQ,CAAC,GAAG;KACpE,CAAC,CAAA;AACJ,CAAC;AAED,+EAA+E;AAC/E,+EAA+E;AAC/E,+EAA+E;AAC/E,8EAA8E;AAC9E,gFAAgF;AAChF,+EAA+E;AAC/E,4EAA4E;AAC5E,6EAA6E;AAC7E,mDAAmD;AACnD,SAAS,4BAA4B,CAAC,KAAa;IACjD,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,IAAI,KAAK,GAAqB,IAAI,CAAA;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC3B,IAAI,KAAK,EAAE,CAAC;YACV,GAAG,IAAI,IAAI,CAAA;YACX,IAAI,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI;gBAAE,KAAK,GAAG,IAAI,CAAA;YACzD,SAAQ;QACV,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjC,KAAK,GAAG,IAAI,CAAA;YACZ,GAAG,IAAI,IAAI,CAAA;YACX,SAAQ;QACV,CAAC;QACD,IAAI,IAAI,KAAK,GAAG;YAAE,SAAQ;QAC1B,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC7B,GAAG,IAAI,IAAI,CAAA;IACb,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAA2B;IACtD,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAClE,CAAC;AAED,SAAS,qBAAqB,CAAC,MAAuB,EAAE,MAAuB;IAC7E,OAAO,WAAW,CAAC;QACjB,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;QACpD;YACE,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC;YAChD,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC;SACjD;QACD;YACE,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC;YAC7C,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC;SAC9C;QACD,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE;QAC1E;YACE,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC;YAC/C,QAAQ,EAAE,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC;SAChD;KACF,CAAC,CAAA;AACJ,CAAC;AAOD,SAAS,eAAe,CAAC,MAAwB;IAC/C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAA;IAClE,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,2BAA2B,CAClC,MAAwB;IAExB,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,eAAe,CAAC,MAAM,CAAC,CAAA;IAC1D,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,cAAc,CAAC,MAAwB,EAAE,MAAwB;IACxE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,KAAK,CAAA;IAC/C,OAAO,CACL,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,CAAC,SAAS,CAAC,2BAA2B,CAAC,MAAM,CAAC,CAAC,CACpD,CAAA;AACH,CAAC;AAED,SAAS,+BAA+B,CAAC,KAAsB,EAAE,IAAY,EAAE,EAAU;IACvF,+EAA+E;IAC/E,2EAA2E;IAC3E,sEAAsE;IACtE,OAAO,eAAe,mBAAmB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,4BAA4B,eAAe,CAAC,IAAI,CAAC,OAAO,eAAe,CAAC,EAAE,CAAC,GAAG,CAAA;AACrJ,CAAC;AAED,SAAS,4BAA4B,CACnC,KAAsB,EACtB,YAAgC,EAChC,cAAkC;IAElC,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEvE,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA8B,CAAA;IAC9D,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAA;QACzD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAA;QACtD,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACrB,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;IAC3C,CAAC;IAED,MAAM,WAAW,GAA6B,EAAE,CAAA;IAChD,KAAK,MAAM,SAAS,IAAI,cAAc,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAA;QAC5D,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAClD,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,SAAQ;QACpD,MAAM,CAAC,SAAS,CAAC,GAAG,UAAU,CAAA;QAC9B,IAAI,CAAC,SAAS;YAAE,SAAQ;QACxB,gBAAgB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAElC,WAAW,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,IAAI;YACjB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,EAAE,EAAE,SAAS,CAAC,IAAI;YAClB,UAAU,EAAE,MAAM;YAClB,MAAM,EACJ,wGAAwG;YAC1G,gBAAgB,EAAE,SAAS,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,WAAW,SAAS,CAAC,IAAI,EAAE;YAClF,eAAe,EAAE,SAAS,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,WAAW,SAAS,CAAC,IAAI,EAAE;YACjF,eAAe,EAAE,+BAA+B,CAAC,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC;SACxF,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAC/B,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;QACvF,IAAI,UAAU,KAAK,CAAC;YAAE,OAAO,UAAU,CAAA;QACvC,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC9C,IAAI,SAAS,KAAK,CAAC;YAAE,OAAO,SAAS,CAAA;QACrC,OAAO,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IACjC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,SAAS,YAAY,CACnB,UAA+C,EAC/C,UAA+C;IAE/C,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,UAAU,IAAI,IAAI,CAAC,CAAA;AAClF,CAAC;AAED,SAAS,oBAAoB,CAC3B,MAAkC,EAClC,MAAkC;IAElC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IACjD,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAA;IAClD,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAA;IAElD,MAAM,gBAAgB,GACpB,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE;QACvB,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO;QACjC,MAAM,CAAC,EAAE,CAAC,QAAQ,KAAK,MAAM,CAAC,EAAE,CAAC,QAAQ;QACzC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI;QACjC,aAAa,KAAK,aAAa;QAC/B,SAAS,KAAK,SAAS,CAAA;IAEzB,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO;YACL;gBACE,IAAI,EAAE,wBAAwB;gBAC9B,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC;gBAC1B,IAAI,EAAE,SAAS;gBACf,GAAG,EAAE,wBAAwB,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;aACvF;YACD;gBACE,IAAI,EAAE,0BAA0B;gBAChC,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC;gBAC1B,IAAI,EAAE,SAAS;gBACf,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC;aACzB;SACF,CAAA;IACH,CAAC;IAED,IAAI,aAAa,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QACnE,OAAO;YACL;gBACE,IAAI,EAAE,wCAAwC;gBAC9C,GAAG,EAAE,qBAAqB,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,UAAU;gBAClE,IAAI,EAAE,SAAS;gBACf,GAAG,EAAE,wBAAwB,CAAC,MAAM,CAAC;aACtC;SACF,CAAA;IACH,CAAC;IAED,OAAO,EAAE,CAAA;AACX,CAAC;AAED,iEAAiE;AACjE,6EAA6E;AAC7E,2EAA2E;AAC3E,qEAAqE;AACrE,4EAA4E;AAC5E,2EAA2E;AAC3E,SAAS,wBAAwB,CAAC,MAAc;IAC9C,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;AACpC,CAAC;AAED,SAAS,yBAAyB,CAAC,GAAyB,EAAE,UAAmB;IAC/E,IAAI,CAAC,UAAU;QAAE,OAAO,GAAG,CAAA;IAC3B,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAA;IAC/B,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,cAAc,CACrB,MAA4B,EAC5B,MAA4B;IAE5B,MAAM,UAAU,GAAG,wBAAwB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAC1D,MAAM,SAAS,GACb,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;IAC/D,IAAI,SAAS;QAAE,OAAO,EAAE,CAAA;IAExB,OAAO;QACL;YACE,IAAI,EAAE,mBAAmB;YACzB,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC;YAC1B,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,mBAAmB,CAAC,MAAM,EAAE,IAAI,CAAC;SACvC;KACF,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,MAAuB,EAAE,MAAuB;IAClE,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACjE,MAAM,QAAQ,GAAG,CAAC,GAAoB,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,CAC3D,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC,CAAC,CAChG,CAAA;QACD,IAAI,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC;eACpC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;eAC7K,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;eACnE,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,kBAAkB,CAAC,CAAC;oBAC5B,IAAI,EAAE,mCAAmC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI;oBACtG,OAAO,EAAE,eAAe,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,uWAAuW;iBAC9Z,CAAC,CAAC,CAAA;QACL,CAAC;QACD,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,EAAE,CAAA;IAClD,CAAC;IACD,IAAI,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;QAC1C,OAAO;YACL,UAAU,EAAE;gBACV;oBACE,IAAI,EAAE,YAAY;oBAClB,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC;oBAC1B,IAAI,EAAE,QAAQ;oBACd,GAAG,EAAE,wBAAwB,mBAAmB,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG;iBAClF;gBACD;oBACE,IAAI,EAAE,cAAc;oBACpB,GAAG,EAAE,aAAa,CAAC,MAAM,CAAC;oBAC1B,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC;iBACzB;aACF;YACD,iBAAiB,EAAE,EAAE;SACtB,CAAA;IACH,CAAC;IAED,MAAM,GAAG,GAAyB,EAAE,CAAA;IACpC,MAAM,UAAU,GAAG,UAAU,CAC3B,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,OAAO,EACd,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EACvB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAClG,CAAA;IACD,MAAM,YAAY,GAAG,UAAU,CAAC,KAAK,CAAA;IACrC,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAA;IACzC,8EAA8E;IAC9E,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAqB,EAAE;QACpG,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAA;QAChD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAA;QAChD,IAAI,OAAO,KAAK,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,CAAC;YAAE,OAAO,EAAE,CAAA;QAClH,OAAO,CAAC;gBACN,IAAI,EAAE,gCAAgC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI;gBACnG,OAAO,EAAE,sCAAsC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,SAAS,OAAO,OAAO,OAAO,0GAA0G,OAAO,iBAAiB;aACtP,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,CAAA;IAC/E,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAE;YACR,IAAI,EAAE,wBAAwB;YAC9B,GAAG,EAAE,SAAS,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,IAAI,EAAE;YACpE,IAAI,EAAE,MAAM;YACZ,GAAG,EAAE,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC;SAC1C,CAAC,CAAA;IACJ,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAA;QAChD,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAA;QAChD,MAAM,GAAG,GAAG,SAAS,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,WAAW,IAAI,EAAE,CAAA;QACpE,MAAM,gBAAgB,GAAG,iCAAiC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACpF,2FAA2F;QAC3F,IAAI,gBAAgB;YAAE,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,2BAA2B,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAA;QAClH,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC;YAC1C,CAAC,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC;YACtC,CAAC,CAAC,uBAAuB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QAC5C,GAAG,CAAC,IAAI,CAAE;YACR,IAAI,EAAE,2BAA2B;YACjC,GAAG;YACH,IAAI,EAAE,SAAS;YACf,GAAG;YACH,GAAG,CAAC,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,cAAc,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,IAAI,OAAO,KAAK,OAAO,CAAC;gBAC9K,CAAC,CAAC,EAAE,OAAO,EAAE,+BAA+B,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,gLAAgL,EAAE;gBACpQ,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAA;IACJ,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,UAAU,CAAC,OAAO,EAAE,CAAC;QACxC,GAAG,CAAC,IAAI,CAAE;YACR,IAAI,EAAE,yBAAyB;YAC/B,GAAG,EAAE,SAAS,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,WAAW,MAAM,CAAC,IAAI,EAAE;YACpE,IAAI,EAAE,QAAQ;YACd,GAAG,EAAE,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;SAChD,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAC1B,MAAM,CAAC,OAAO,IAAI,EAAE,EACpB,MAAM,CAAC,OAAO,IAAI,EAAE,EACpB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EACrB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;QAC5D,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,oBAAoB,CAAC,KAAK,CAAC;QAC5D,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CACnD,CAAA;IACD,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACpC,GAAG,CAAC,IAAI,CAAE;YACR,IAAI,EAAE,uBAAuB;YAC7B,GAAG,EAAE,SAAS,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,UAAU,KAAK,CAAC,IAAI,EAAE;YAClE,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC;SACxC,CAAC,CAAA;IACJ,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QAClD,GAAG,CAAC,IAAI,CAAE;YACR,IAAI,EAAE,wBAAwB;YAC9B,GAAG,EAAE,SAAS,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,UAAU,IAAI,EAAE;YAC5D,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC;SACxC,CAAC,CAAA;QACF,GAAG,CAAC,IAAI,CAAE;YACR,IAAI,EAAE,uBAAuB;YAC7B,GAAG,EAAE,SAAS,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,UAAU,IAAI,EAAE;YAC5D,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC;SAC1C,CAAC,CAAA;IACJ,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtC,GAAG,CAAC,IAAI,CAAE;YACR,IAAI,EAAE,wBAAwB;YAC9B,GAAG,EAAE,SAAS,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,UAAU,KAAK,CAAC,IAAI,EAAE;YAClE,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC;SAC9C,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,CAC/B,MAAM,CAAC,WAAW,IAAI,EAAE,EACxB,MAAM,CAAC,WAAW,IAAI,EAAE,EACxB,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAC/B,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAChE,CAAA;IACD,KAAK,MAAM,UAAU,IAAI,cAAc,CAAC,KAAK,EAAE,CAAC;QAC9C,GAAG,CAAC,IAAI,CAAE;YACR,IAAI,EAAE,4BAA4B;YAClC,GAAG,EAAE,SAAS,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,eAAe,UAAU,CAAC,IAAI,EAAE;YAC5E,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,wBAAwB,CAAC,MAAM,EAAE,UAAU,CAAC;SAClD,CAAC,CAAA;IACJ,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;QACvD,GAAG,CAAC,IAAI,CAAE;YACR,IAAI,EAAE,6BAA6B;YACnC,GAAG,EAAE,SAAS,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,eAAe,IAAI,EAAE;YACjE,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC;SAC7C,CAAC,CAAA;QACF,GAAG,CAAC,IAAI,CAAE;YACR,IAAI,EAAE,4BAA4B;YAClC,GAAG,EAAE,SAAS,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,eAAe,IAAI,EAAE;YACjE,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,wBAAwB,CAAC,MAAM,EAAE,OAAO,CAAC;SAC/C,CAAC,CAAA;IACJ,CAAC;IACD,KAAK,MAAM,UAAU,IAAI,cAAc,CAAC,OAAO,EAAE,CAAC;QAChD,GAAG,CAAC,IAAI,CAAE;YACR,IAAI,EAAE,6BAA6B;YACnC,GAAG,EAAE,SAAS,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,eAAe,UAAU,CAAC,IAAI,EAAE;YAC5E,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,yBAAyB,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC;SACxD,CAAC,CAAA;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAA;IAC9E,KAAK,MAAM,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,GAAG,CAAC,IAAI,CAAE;gBACR,IAAI,EAAE,2BAA2B;gBACjC,GAAG,EAAE,SAAS,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,YAAY,MAAM,CAAC,GAAG,EAAE;gBACpE,IAAI,EAAE,SAAS;gBACf,GAAG,EAAE,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC;aACjD,CAAC,CAAA;YACF,SAAQ;QACV,CAAC;QACD,GAAG,CAAC,IAAI,CAAE;YACR,IAAI,EAAE,4BAA4B;YAClC,GAAG,EAAE,SAAS,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,YAAY,MAAM,CAAC,GAAG,EAAE;YACpE,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC;SAChE,CAAC,CAAA;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,IAAI,CAAE;YACR,IAAI,EAAE,wBAAwB;YAC9B,GAAG,EAAE,SAAS,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,MAAM;YAClD,IAAI,EAAE,SAAS;YACf,GAAG,EAAE,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC;SAC9C,CAAC,CAAA;IACJ,CAAC;IAED,OAAO;QACL,UAAU,EAAE,GAAG;QACf,iBAAiB,EAAE,4BAA4B,CAAC,MAAM,EAAE,YAAY,EAAE,cAAc,CAAC;KACtF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,cAAkC,EAAE,cAAkC;IAC7F,MAAM,YAAY,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAA;IAC5D,MAAM,YAAY,GAAG,uBAAuB,CAAC,cAAc,CAAC,CAAA;IAC5D,sBAAsB,CAAC,YAAY,CAAC,CAAA;IACpC,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAAA;IACtC,MAAM,MAAM,GAAG,SAAS,CAAC,YAAY,CAAC,CAAA;IACtC,MAAM,UAAU,GAAyB,EAAE,CAAA;IAC3C,MAAM,iBAAiB,GAA6B,EAAE,CAAA;IACtD,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAA;IAE3C,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAAE,SAAQ;QAC/C,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;IACjD,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC,MAAM;YAAE,SAAQ;QAErB,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACvD,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAC7C,UAAU,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,CAAA;YACzC,iBAAiB,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,iBAAiB,CAAC,CAAA;YACvD,SAAQ;QACV,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YACpF,IAAI,MAAM,CAAC,EAAE,KAAK,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC;gBACjE,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;gBAChD,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,CAAC,CAAA;YACpD,CAAC;YACD,SAAQ;QACV,CAAC;QAED,IACE,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;YAC3B,MAAM,CAAC,IAAI,KAAK,mBAAmB;YACnC,MAAM,CAAC,IAAI,KAAK,mBAAmB,EACnC,CAAC;YACD,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;YAClD,UAAU,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;YACzB,SAAQ;QACV,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YAChG,UAAU,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;YAClD,SAAQ;QACV,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC;YAChC,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;QACjD,CAAC;IACH,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;YAAE,SAAQ;QAEnD,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACtC,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACjD,CAAC;IAED,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,2BAA2B,CAAC,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;IAC3D,CAAC;IAED,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,iBAAiB,CAAC,EAAE;QAClE,IAAI,EAAE,qBAAqB,CAAC,oBAAoB,CAAC,YAAY,CAAC,CAAC;QAC/D,MAAM,EAAE,oBAAoB,CAAC,YAAY,CAAC;KAC3C,CAAC,CAAA;IAEF,MAAM,WAAW,GAA8B,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,CAAA;IACjF,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;QAChC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;IACtE,CAAC;IAED,OAAO;QACL,UAAU,EAAE,OAAO;QACnB,WAAW;QACX,iBAAiB,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACjD,MAAM,UAAU,GAAG,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,CAAA;YACvF,IAAI,UAAU,KAAK,CAAC;gBAAE,OAAO,UAAU,CAAA;YACvC,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;YAC9C,IAAI,SAAS,KAAK,CAAC;gBAAE,OAAO,SAAS,CAAA;YACrC,OAAO,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACjC,CAAC,CAAC;KACH,CAAA;AACH,CAAC;AAED,0FAA0F;AAC1F,SAAS,aAAa,CAAC,EAAsB;IAC3C,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,CAAC,CAAA;IACzC,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,CAAA;IAC1C,IAAI,EAAE,CAAC,IAAI,KAAK,iBAAiB;QAAE,OAAO,CAAC,CAAA;IAC3C,IAAI,EAAE,CAAC,IAAI,KAAK,cAAc;QAAE,OAAO,CAAC,CAAA;IACxC,IAAI,EAAE,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,CAAC,CAAA;IACvC,OAAO,CAAC,CAAA;AACV,CAAC;AAED,+EAA+E;AAC/E,sEAAsE;AACtE,SAAS,iBAAiB,CAAC,CAAqB,EAAE,CAAqB;IACrE,OAAO,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAC1E,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CACtB,MAA4B,EAC5B,aAAiE;IAEjE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAC5D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,aAAa,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IACxF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAC7D,OAAO;QACL,GAAG,mBAAmB,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QACzF,GAAG,MAAM;QACT,GAAG,mBAAmB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;KAC9F,CAAA;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAIvF,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,oBAAoB,GAC/B,UAAU,IAAI,yBAAyB,CAEzC;AA0DD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgB9D;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,oBAAoB,GAAG,oBAAoB,CAc7F;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,oBAAoB,GAAG,MAAM,CAI7E"}
1
+ {"version":3,"file":"projection.d.ts","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAKvF,wBAAgB,iBAAiB,CAC/B,UAAU,EAAE,oBAAoB,GAC/B,UAAU,IAAI,yBAAyB,CAEzC;AAyBD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgB9D;AAED,wBAAgB,sBAAsB,CAAC,UAAU,EAAE,oBAAoB,GAAG,oBAAoB,CAc7F;AAED,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,oBAAoB,GAAG,MAAM,CAI7E"}
@@ -1,53 +1,18 @@
1
1
  import { splitTopLevelComma } from './key-clause.js';
2
2
  import { normalizeSQLFragment } from './sql-normalizer.js';
3
+ import { findQuoteEnd, isQuoteChar, stripWrappingParens } from './sql-scan.js';
3
4
  export function isIndexProjection(projection) {
4
5
  return 'index' in projection;
5
6
  }
6
- function stripWrappingParens(input) {
7
- if (!input.startsWith('(') || !input.endsWith(')'))
8
- return input;
9
- // Only strip when the leading paren closes at the very end, so `(a), (b)`
10
- // keeps both groups. Parens inside quoted identifiers and string literals
11
- // are text, not nesting — `` (`weird)name`) `` is still a single wrapped
12
- // expression.
13
- let depth = 0;
14
- let quote = null;
15
- for (let i = 0; i < input.length; i += 1) {
16
- const char = input[i];
17
- if (quote) {
18
- if (char === quote && input[i - 1] !== '\\')
19
- quote = null;
20
- continue;
21
- }
22
- if (char === "'" || char === '"' || char === '`') {
23
- quote = char;
24
- continue;
25
- }
26
- if (char === '(')
27
- depth += 1;
28
- else if (char === ')') {
29
- depth -= 1;
30
- if (depth === 0)
31
- return i === input.length - 1 ? input.slice(1, -1).trim() : input;
32
- }
33
- }
34
- return input;
35
- }
36
7
  /** ClickHouse prints one space after every argument separator. */
37
8
  function spaceAfterCommas(input) {
38
9
  let out = '';
39
- let quote = null;
40
10
  for (let i = 0; i < input.length; i += 1) {
41
11
  const char = input[i] ?? '';
42
- if (quote) {
43
- out += char;
44
- if (char === quote && input[i - 1] !== '\\')
45
- quote = null;
46
- continue;
47
- }
48
- if (char === "'" || char === '"' || char === '`') {
49
- quote = char;
50
- out += char;
12
+ if (isQuoteChar(char)) {
13
+ const end = findQuoteEnd(input, i, char);
14
+ out += input.slice(i, end + 1);
15
+ i = end;
51
16
  continue;
52
17
  }
53
18
  // Whitespace is already collapsed to single spaces by normalizeSQLFragment,
@@ -1 +1 @@
1
- {"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projection.js","sourceRoot":"","sources":["../src/projection.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,6 @@ export interface SchemaLoaderOptions {
3
3
  cwd?: string;
4
4
  }
5
5
  export declare function loadSchemaDefinitions(schemaGlobs: string | string[], options?: SchemaLoaderOptions): Promise<SchemaDefinition[]>;
6
+ /** Load configured entry/schema modules so plugins can inspect their exported definitions. */
7
+ export declare function loadDefinitionModules(schemaGlobs: string | string[], options?: SchemaLoaderOptions): Promise<Record<string, unknown>[]>;
6
8
  //# sourceMappingURL=schema-loader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema-loader.d.ts","sourceRoot":"","sources":["../src/schema-loader.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAGlD,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,EAC9B,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAkB7B"}
1
+ {"version":3,"file":"schema-loader.d.ts","sourceRoot":"","sources":["../src/schema-loader.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAGlD,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAeD,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,EAC9B,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAG7B;AAED,8FAA8F;AAC9F,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,EAC9B,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAcpC"}
@@ -1,8 +1,20 @@
1
+ import { readFile } from 'node:fs/promises';
1
2
  import process from 'node:process';
2
3
  import fg from 'fast-glob';
3
4
  import { canonicalizeDefinitions, collectDefinitionsFromModule } from './canonical.js';
5
+ import { hasConflictMarkers } from './conflict-markers.js';
4
6
  import { importModuleFile } from './ts-import.js';
7
+ /**
8
+ * The `<file>:<line>:<column>` line that jiti, the loader under Node, ends a
9
+ * parse error's message with. The file path can contain spaces.
10
+ */
11
+ const MESSAGE_LOCATION_LINE = /^[ \t]*(.+):\d+:\d+[ \t]*$/gm;
5
12
  export async function loadSchemaDefinitions(schemaGlobs, options = {}) {
13
+ const modules = await loadDefinitionModules(schemaGlobs, options);
14
+ return canonicalizeDefinitions(modules.flatMap(collectDefinitionsFromModule));
15
+ }
16
+ /** Load configured entry/schema modules so plugins can inspect their exported definitions. */
17
+ export async function loadDefinitionModules(schemaGlobs, options = {}) {
6
18
  const patterns = Array.isArray(schemaGlobs) ? schemaGlobs : [schemaGlobs];
7
19
  const files = await fg(patterns, {
8
20
  cwd: options.cwd ?? process.cwd(),
@@ -11,11 +23,66 @@ export async function loadSchemaDefinitions(schemaGlobs, options = {}) {
11
23
  if (files.length === 0) {
12
24
  throw new Error('No schema files matched. Check config.schema patterns.');
13
25
  }
14
- const all = [];
15
- for (const file of files) {
16
- const mod = await importModuleFile(file);
17
- all.push(...collectDefinitionsFromModule(mod));
26
+ const modules = [];
27
+ for (const file of files)
28
+ modules.push(await importSchemaFile(file));
29
+ return modules;
30
+ }
31
+ /** Import one schema file. A failure names the file, and points out git conflict markers. */
32
+ async function importSchemaFile(file) {
33
+ try {
34
+ return await importModuleFile(file);
35
+ }
36
+ catch (error) {
37
+ throw new Error(await describeImportFailure(file, error), { cause: error });
38
+ }
39
+ }
40
+ async function describeImportFailure(file, error) {
41
+ const failures = errorEntries(error);
42
+ const summary = `Failed to load schema file ${file}: ${failures.map(describeErrorEntry).join('; ')}`;
43
+ // The parser names the file that failed to parse, which can be a module the schema file imports.
44
+ const conflicted = await findConflictedFile([file, ...failures.flatMap(reportedFiles)]);
45
+ if (conflicted === undefined)
46
+ return summary;
47
+ const holder = conflicted === file ? 'The file' : conflicted;
48
+ return `${summary}\n${holder} contains unresolved merge conflict markers. Resolve the conflict and run the command again.`;
49
+ }
50
+ async function findConflictedFile(files) {
51
+ for (const file of new Set(files)) {
52
+ if (hasConflictMarkers(await readFile(file, 'utf8').catch(() => '')))
53
+ return file;
18
54
  }
19
- return canonicalizeDefinitions(all);
55
+ return undefined;
56
+ }
57
+ /** The individual errors behind `error`: Bun reports several parse errors as one AggregateError. */
58
+ function errorEntries(error) {
59
+ if (isRecord(error) && Array.isArray(error.errors) && error.errors.length > 0)
60
+ return error.errors;
61
+ return [error];
62
+ }
63
+ function describeErrorEntry(entry) {
64
+ const message = messageOf(entry);
65
+ const position = positionOf(entry);
66
+ return position ? `${message} (${position.file}:${position.line}:${position.column})` : message;
67
+ }
68
+ /** The files an error names as failing: Bun's position, or the location line of jiti's message under Node. */
69
+ function reportedFiles(entry) {
70
+ const located = [...messageOf(entry).matchAll(MESSAGE_LOCATION_LINE)].flatMap((match) => match[1] ?? []);
71
+ const position = positionOf(entry);
72
+ return position ? [position.file, ...located] : located;
73
+ }
74
+ function messageOf(entry) {
75
+ return isRecord(entry) && typeof entry.message === 'string' && entry.message !== '' ? entry.message : String(entry);
76
+ }
77
+ function positionOf(entry) {
78
+ if (!isRecord(entry) || !isRecord(entry.position))
79
+ return undefined;
80
+ const { file, line, column } = entry.position;
81
+ if (typeof file !== 'string' || typeof line !== 'number' || typeof column !== 'number')
82
+ return undefined;
83
+ return { file, line, column };
84
+ }
85
+ function isRecord(value) {
86
+ return typeof value === 'object' && value !== null;
20
87
  }
21
88
  //# sourceMappingURL=schema-loader.js.map