sensemaking 0.20.0 → 0.21.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 (170) hide show
  1. package/README.md +0 -1
  2. package/dist/cjs/chunk/group.d.cts +0 -2
  3. package/dist/cjs/chunk/group.d.ts +0 -2
  4. package/dist/cjs/chunk/group.js +12 -53
  5. package/dist/cjs/chunk/group.js.map +1 -1
  6. package/dist/cjs/chunk/index.d.cts +1 -1
  7. package/dist/cjs/chunk/index.d.ts +1 -1
  8. package/dist/cjs/chunk/index.js +3 -2
  9. package/dist/cjs/chunk/index.js.map +1 -1
  10. package/dist/cjs/chunk/parse.js +46 -29
  11. package/dist/cjs/chunk/parse.js.map +1 -1
  12. package/dist/cjs/chunk/tokens.d.cts +2 -0
  13. package/dist/cjs/chunk/tokens.d.ts +2 -0
  14. package/dist/cjs/chunk/tokens.js +50 -0
  15. package/dist/cjs/chunk/tokens.js.map +1 -0
  16. package/dist/cjs/config/access.d.cts +0 -1
  17. package/dist/cjs/config/access.d.ts +0 -1
  18. package/dist/cjs/config/access.js +10 -17
  19. package/dist/cjs/config/access.js.map +1 -1
  20. package/dist/cjs/config/index.d.cts +1 -1
  21. package/dist/cjs/config/index.d.ts +1 -1
  22. package/dist/cjs/config/index.js +0 -3
  23. package/dist/cjs/config/index.js.map +1 -1
  24. package/dist/cjs/config/types.d.cts +0 -3
  25. package/dist/cjs/config/types.d.ts +0 -3
  26. package/dist/cjs/config/types.js.map +1 -1
  27. package/dist/cjs/config/validate.js +6 -24
  28. package/dist/cjs/config/validate.js.map +1 -1
  29. package/dist/cjs/errors.d.cts +1 -1
  30. package/dist/cjs/errors.d.ts +1 -1
  31. package/dist/cjs/errors.js.map +1 -1
  32. package/dist/cjs/features/links.js +4 -5
  33. package/dist/cjs/features/links.js.map +1 -1
  34. package/dist/cjs/features/sections.js +4 -1
  35. package/dist/cjs/features/sections.js.map +1 -1
  36. package/dist/cjs/store/builder.d.cts +9 -1
  37. package/dist/cjs/store/builder.d.ts +9 -1
  38. package/dist/cjs/store/builder.js +593 -2
  39. package/dist/cjs/store/builder.js.map +1 -1
  40. package/dist/cjs/store/duckdb/connection.d.cts +4 -1
  41. package/dist/cjs/store/duckdb/connection.d.ts +4 -1
  42. package/dist/cjs/store/duckdb/connection.js +1 -0
  43. package/dist/cjs/store/duckdb/connection.js.map +1 -1
  44. package/dist/cjs/store/duckdb/open.js +7 -1
  45. package/dist/cjs/store/duckdb/open.js.map +1 -1
  46. package/dist/cjs/store/duckdb/reconcile.js +135 -6
  47. package/dist/cjs/store/duckdb/reconcile.js.map +1 -1
  48. package/dist/cjs/store/embed-scope.d.cts +2 -0
  49. package/dist/cjs/store/embed-scope.d.ts +2 -0
  50. package/dist/cjs/store/embed-scope.js +85 -0
  51. package/dist/cjs/store/embed-scope.js.map +1 -0
  52. package/dist/cjs/store/feature-scope.d.cts +8 -0
  53. package/dist/cjs/store/feature-scope.d.ts +8 -0
  54. package/dist/cjs/store/feature-scope.js +107 -0
  55. package/dist/cjs/store/feature-scope.js.map +1 -0
  56. package/dist/cjs/store/open.js +193 -101
  57. package/dist/cjs/store/open.js.map +1 -1
  58. package/dist/cjs/store/preset-scope.d.cts +3 -0
  59. package/dist/cjs/store/preset-scope.d.ts +3 -0
  60. package/dist/cjs/store/preset-scope.js +293 -0
  61. package/dist/cjs/store/preset-scope.js.map +1 -0
  62. package/dist/cjs/store/reconcile.d.cts +2 -1
  63. package/dist/cjs/store/reconcile.d.ts +2 -1
  64. package/dist/cjs/store/reconcile.js +223 -189
  65. package/dist/cjs/store/reconcile.js.map +1 -1
  66. package/dist/cjs/store/signature.js +7 -5
  67. package/dist/cjs/store/signature.js.map +1 -1
  68. package/dist/cjs/store/sqlite/lexical.d.cts +1 -1
  69. package/dist/cjs/store/sqlite/lexical.d.ts +1 -1
  70. package/dist/cjs/store/sqlite/lexical.js +2 -2
  71. package/dist/cjs/store/sqlite/lexical.js.map +1 -1
  72. package/dist/cjs/store/sqlite/open.d.cts +0 -1
  73. package/dist/cjs/store/sqlite/open.d.ts +0 -1
  74. package/dist/cjs/store/sqlite/open.js +14 -231
  75. package/dist/cjs/store/sqlite/open.js.map +1 -1
  76. package/dist/cjs/store/sqlite/reconcile.d.cts +1 -1
  77. package/dist/cjs/store/sqlite/reconcile.d.ts +1 -1
  78. package/dist/cjs/store/sqlite/reconcile.js +78 -16
  79. package/dist/cjs/store/sqlite/reconcile.js.map +1 -1
  80. package/dist/cjs/store/sqlite/sql-functions.d.cts +1 -1
  81. package/dist/cjs/store/sqlite/sql-functions.d.ts +1 -1
  82. package/dist/cjs/store/sqlite/sql-functions.js +3 -3
  83. package/dist/cjs/store/sqlite/sql-functions.js.map +1 -1
  84. package/dist/cjs/store/sqlite/store.d.cts +1 -2
  85. package/dist/cjs/store/sqlite/store.d.ts +1 -2
  86. package/dist/cjs/store/sqlite/store.js +2 -3
  87. package/dist/cjs/store/sqlite/store.js.map +1 -1
  88. package/dist/cjs/store/turso/open.js +6 -0
  89. package/dist/cjs/store/turso/open.js.map +1 -1
  90. package/dist/cjs/store/turso/reconcile.js +72 -3
  91. package/dist/cjs/store/turso/reconcile.js.map +1 -1
  92. package/dist/cjs/store/types.d.cts +3 -4
  93. package/dist/cjs/store/types.d.ts +3 -4
  94. package/dist/cjs/store/types.js.map +1 -1
  95. package/dist/esm/chunk/group.d.ts +0 -2
  96. package/dist/esm/chunk/group.js +1 -15
  97. package/dist/esm/chunk/group.js.map +1 -1
  98. package/dist/esm/chunk/index.d.ts +1 -1
  99. package/dist/esm/chunk/index.js +1 -1
  100. package/dist/esm/chunk/index.js.map +1 -1
  101. package/dist/esm/chunk/parse.js +41 -29
  102. package/dist/esm/chunk/parse.js.map +1 -1
  103. package/dist/esm/chunk/tokens.d.ts +2 -0
  104. package/dist/esm/chunk/tokens.js +15 -0
  105. package/dist/esm/chunk/tokens.js.map +1 -0
  106. package/dist/esm/config/access.d.ts +0 -1
  107. package/dist/esm/config/access.js +12 -17
  108. package/dist/esm/config/access.js.map +1 -1
  109. package/dist/esm/config/index.d.ts +1 -1
  110. package/dist/esm/config/index.js +1 -1
  111. package/dist/esm/config/index.js.map +1 -1
  112. package/dist/esm/config/types.d.ts +0 -3
  113. package/dist/esm/config/types.js.map +1 -1
  114. package/dist/esm/config/validate.js +8 -24
  115. package/dist/esm/config/validate.js.map +1 -1
  116. package/dist/esm/errors.d.ts +1 -1
  117. package/dist/esm/errors.js.map +1 -1
  118. package/dist/esm/features/links.js +3 -4
  119. package/dist/esm/features/links.js.map +1 -1
  120. package/dist/esm/features/sections.js +4 -1
  121. package/dist/esm/features/sections.js.map +1 -1
  122. package/dist/esm/store/builder.d.ts +9 -1
  123. package/dist/esm/store/builder.js +152 -3
  124. package/dist/esm/store/builder.js.map +1 -1
  125. package/dist/esm/store/duckdb/connection.d.ts +4 -1
  126. package/dist/esm/store/duckdb/connection.js +1 -0
  127. package/dist/esm/store/duckdb/connection.js.map +1 -1
  128. package/dist/esm/store/duckdb/open.js +5 -1
  129. package/dist/esm/store/duckdb/open.js.map +1 -1
  130. package/dist/esm/store/duckdb/reconcile.js +45 -4
  131. package/dist/esm/store/duckdb/reconcile.js.map +1 -1
  132. package/dist/esm/store/embed-scope.d.ts +2 -0
  133. package/dist/esm/store/embed-scope.js +28 -0
  134. package/dist/esm/store/embed-scope.js.map +1 -0
  135. package/dist/esm/store/feature-scope.d.ts +8 -0
  136. package/dist/esm/store/feature-scope.js +49 -0
  137. package/dist/esm/store/feature-scope.js.map +1 -0
  138. package/dist/esm/store/open.js +78 -28
  139. package/dist/esm/store/open.js.map +1 -1
  140. package/dist/esm/store/preset-scope.d.ts +3 -0
  141. package/dist/esm/store/preset-scope.js +77 -0
  142. package/dist/esm/store/preset-scope.js.map +1 -0
  143. package/dist/esm/store/reconcile.d.ts +2 -1
  144. package/dist/esm/store/reconcile.js +43 -9
  145. package/dist/esm/store/reconcile.js.map +1 -1
  146. package/dist/esm/store/signature.js +7 -5
  147. package/dist/esm/store/signature.js.map +1 -1
  148. package/dist/esm/store/sqlite/lexical.d.ts +1 -1
  149. package/dist/esm/store/sqlite/lexical.js +4 -4
  150. package/dist/esm/store/sqlite/lexical.js.map +1 -1
  151. package/dist/esm/store/sqlite/open.d.ts +0 -1
  152. package/dist/esm/store/sqlite/open.js +14 -88
  153. package/dist/esm/store/sqlite/open.js.map +1 -1
  154. package/dist/esm/store/sqlite/reconcile.d.ts +1 -1
  155. package/dist/esm/store/sqlite/reconcile.js +14 -14
  156. package/dist/esm/store/sqlite/reconcile.js.map +1 -1
  157. package/dist/esm/store/sqlite/sql-functions.d.ts +1 -1
  158. package/dist/esm/store/sqlite/sql-functions.js +3 -3
  159. package/dist/esm/store/sqlite/sql-functions.js.map +1 -1
  160. package/dist/esm/store/sqlite/store.d.ts +1 -2
  161. package/dist/esm/store/sqlite/store.js +2 -3
  162. package/dist/esm/store/sqlite/store.js.map +1 -1
  163. package/dist/esm/store/turso/open.js +4 -0
  164. package/dist/esm/store/turso/open.js.map +1 -1
  165. package/dist/esm/store/turso/reconcile.js +6 -2
  166. package/dist/esm/store/turso/reconcile.js.map +1 -1
  167. package/dist/esm/store/types.d.ts +3 -4
  168. package/dist/esm/store/types.js.map +1 -1
  169. package/package.json +2 -1
  170. package/schema.json +0 -11
@@ -2,9 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- Object.defineProperty(exports, "reconcile", {
6
- enumerable: true,
7
- get: function() {
5
+ function _export(target, all) {
6
+ for(var name in all)Object.defineProperty(target, name, {
7
+ enumerable: true,
8
+ get: Object.getOwnPropertyDescriptor(all, name).get
9
+ });
10
+ }
11
+ _export(exports, {
12
+ get CORE_FRONTMATTER_COLUMNS () {
13
+ return CORE_FRONTMATTER_COLUMNS;
14
+ },
15
+ get reconcile () {
8
16
  return reconcile;
9
17
  }
10
18
  });
@@ -186,13 +194,6 @@ function _unsupported_iterable_to_array(o, minLen) {
186
194
  if (n === "Map" || n === "Set") return Array.from(n);
187
195
  if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
188
196
  }
189
- // One reconcile algorithm shared by every store, parameterised by a per-engine ReconcileDialect
190
- // (types.ts). Ordering is universal, not a dialect concern: ALTER, then the frontmatter upsert,
191
- // then reconcileContent, then preset_files, then the vanished-frontmatter delete, then feature hooks
192
- // -- a vanished path's content delete (inside reconcileContent) must precede its frontmatter
193
- // delete, since sqlite's delete SQL resolves the row via its frontmatter rowid.
194
- // Feature-owned columns (`_rank`) must stay out of the upsert: a reparse would null the last
195
- // computed value on every touch, not just the reconciles that recompute it.
196
197
  var CORE_FRONTMATTER_COLUMNS = new Set([
197
198
  'path',
198
199
  '_mtime',
@@ -200,7 +201,7 @@ var CORE_FRONTMATTER_COLUMNS = new Set([
200
201
  '_size',
201
202
  '_parse_error'
202
203
  ]);
203
- function reconcile(conn, cfg, baseDir, dialect, pool) {
204
+ function reconcile(conn, cfg, baseDir, dialect, pool, forcedPaths) {
204
205
  return _async_to_generator(function() {
205
206
  var files, currentSet, existingStmt, existingRows, existing, vanished, toReparse, features, seenColumns, report, _ref, parsedDocs, warnings, newColumns, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, col, allColumns, writableColumns, insertSql, added, delta, addedSet, reparsedExisting, touched, txStart, durationMs;
206
207
  return _ts_generator(this, function(_state) {
@@ -228,14 +229,20 @@ function reconcile(conn, cfg, baseDir, dialect, pool) {
228
229
  r
229
230
  ];
230
231
  }));
232
+ // A path whose coverage moved between presets (forcedPaths) but is no longer covered at all is
233
+ // already caught below by !currentSet.has, since it can only be forced by having existed under
234
+ // an old preset's match, which means it was reconciled into `existing` already.
231
235
  vanished = existingRows.filter(function(r) {
232
236
  return !currentSet.has(r.path);
233
237
  }).map(function(r) {
234
238
  return r.path;
235
239
  });
240
+ // forcedPaths treats an unchanged file as touched because its preset coverage moved, not its
241
+ // stamp -- reconcile still owns add/update/remove and every cross-feature cascade for it.
236
242
  toReparse = files.filter(function(f) {
243
+ var _ref;
237
244
  var row = existing.get(f.relPath);
238
- return !row || row._mtime !== f.mtimeMs || row._size !== f.size;
245
+ return !row || row._mtime !== f.mtimeMs || row._size !== f.size || ((_ref = forcedPaths === null || forcedPaths === void 0 ? void 0 : forcedPaths.has(f.relPath)) !== null && _ref !== void 0 ? _ref : false);
239
246
  });
240
247
  if (vanished.length === 0 && toReparse.length === 0) return [
241
248
  2,
@@ -328,7 +335,7 @@ function reconcile(conn, cfg, baseDir, dialect, pool) {
328
335
  4,
329
336
  (0, _transactionts.withTransaction)(conn, function() {
330
337
  return _async_to_generator(function() {
331
- var _feature_remove, _feature_afterReconcile, present, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, col, err, rows, presetRows, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator1, _step1, doc, _iterator2, _step2, presetName, _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, feature, err, _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _loop, _iterator4, _step4, err, _iteratorNormalCompletion5, _didIteratorError5, _iteratorError5, _iterator5, _step5, feature1, err;
338
+ var _feature_remove, _feature_afterReconcile, present, missingColumns, contentTouched, currentPathsStmt, currentPaths, _, staleAdded, toRow, newDocs, updateDocs, presetRows, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator, _step, doc, _iterator1, _step1, presetName, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator2, _step2, feature, err, _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _loop, _iterator3, _step3, err, _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _iterator4, _step4, feature1, err;
332
339
  return _ts_generator(this, function(_state) {
333
340
  switch(_state.label){
334
341
  case 0:
@@ -338,72 +345,60 @@ function reconcile(conn, cfg, baseDir, dialect, pool) {
338
345
  ];
339
346
  case 1:
340
347
  present = _state.sent();
341
- _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
342
- _state.label = 2;
348
+ missingColumns = newColumns.filter(function(col) {
349
+ return !present.has(col);
350
+ });
351
+ if (!(missingColumns.length > 0)) return [
352
+ 3,
353
+ 3
354
+ ];
355
+ return [
356
+ 4,
357
+ dialect.addColumns(conn, missingColumns)
358
+ ];
343
359
  case 2:
344
- _state.trys.push([
345
- 2,
346
- 7,
347
- 8,
348
- 9
349
- ]);
350
- _iterator = newColumns[Symbol.iterator]();
360
+ _state.sent();
351
361
  _state.label = 3;
352
362
  case 3:
353
- if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
363
+ // Revalidated once the lock is held, before this process's own frontmatter upsert below:
364
+ // `added` came from a path read taken before this transaction's lock, so a path still
365
+ // called "added" here may already have a content row from a concurrent reconcile that
366
+ // committed while this one waited. One SELECT, not a DELETE per added file -- with no
367
+ // contention it returns the same set `existing` already ruled out, so nothing extra clears.
368
+ contentTouched = touched;
369
+ if (!(added.length > 0)) return [
354
370
  3,
355
371
  6
356
372
  ];
357
- col = _step.value;
358
- if (!!present.has(col)) return [
359
- 3,
360
- 5
361
- ];
362
373
  return [
363
374
  4,
364
- conn.exec("ALTER TABLE frontmatter ADD COLUMN ".concat((0, _sharedts.quoteIdent)(col)).concat(dialect.columnTypeSuffix()))
375
+ conn.prepare('SELECT "path" FROM frontmatter')
365
376
  ];
366
377
  case 4:
367
- _state.sent();
368
- _state.label = 5;
369
- case 5:
370
- _iteratorNormalCompletion = true;
378
+ currentPathsStmt = _state.sent();
379
+ _ = Set.bind;
371
380
  return [
372
- 3,
373
- 3
381
+ 4,
382
+ currentPathsStmt.all()
374
383
  ];
384
+ case 5:
385
+ currentPaths = new (_.apply(Set, [
386
+ void 0,
387
+ _state.sent().map(function(r) {
388
+ return r.path;
389
+ })
390
+ ]));
391
+ staleAdded = added.filter(function(p) {
392
+ return currentPaths.has(p);
393
+ });
394
+ if (staleAdded.length > 0) contentTouched = _to_consumable_array(touched).concat(_to_consumable_array(staleAdded));
395
+ _state.label = 6;
375
396
  case 6:
376
- return [
377
- 3,
378
- 9
379
- ];
380
- case 7:
381
- err = _state.sent();
382
- _didIteratorError = true;
383
- _iteratorError = err;
384
- return [
385
- 3,
386
- 9
387
- ];
388
- case 8:
389
- try {
390
- if (!_iteratorNormalCompletion && _iterator.return != null) {
391
- _iterator.return();
392
- }
393
- } finally{
394
- if (_didIteratorError) {
395
- throw _iteratorError;
396
- }
397
- }
398
- return [
399
- 7
400
- ];
401
- case 9:
402
397
  if (!(parsedDocs.length > 0)) return [
403
398
  3,
404
- 11
399
+ 13
405
400
  ];
406
- rows = parsedDocs.map(function(doc) {
401
+ toRow = function toRow(doc) {
407
402
  return writableColumns.map(function(col) {
408
403
  var _doc_data_col;
409
404
  if (col === 'path') return doc.relPath;
@@ -414,26 +409,65 @@ function reconcile(conn, cfg, baseDir, dialect, pool) {
414
409
  if (col === '_parse_error') return doc.parseError;
415
410
  return (_doc_data_col = doc.data[col]) !== null && _doc_data_col !== void 0 ? _doc_data_col : null;
416
411
  });
412
+ };
413
+ if (!dialect.insertNew) return [
414
+ 3,
415
+ 11
416
+ ];
417
+ newDocs = parsedDocs.filter(function(d) {
418
+ return addedSet.has(d.relPath);
419
+ });
420
+ updateDocs = parsedDocs.filter(function(d) {
421
+ return !addedSet.has(d.relPath);
417
422
  });
423
+ if (!(newDocs.length > 0)) return [
424
+ 3,
425
+ 8
426
+ ];
418
427
  return [
419
428
  4,
420
- conn.runBatch(insertSql, rows)
429
+ dialect.insertNew(conn, 'frontmatter', writableColumns, newDocs.map(toRow))
421
430
  ];
422
- case 10:
431
+ case 7:
423
432
  _state.sent();
424
- _state.label = 11;
433
+ _state.label = 8;
434
+ case 8:
435
+ if (!(updateDocs.length > 0)) return [
436
+ 3,
437
+ 10
438
+ ];
439
+ return [
440
+ 4,
441
+ conn.runBatch(insertSql, updateDocs.map(toRow))
442
+ ];
443
+ case 9:
444
+ _state.sent();
445
+ _state.label = 10;
446
+ case 10:
447
+ return [
448
+ 3,
449
+ 13
450
+ ];
425
451
  case 11:
452
+ return [
453
+ 4,
454
+ conn.runBatch(insertSql, parsedDocs.map(toRow))
455
+ ];
456
+ case 12:
457
+ _state.sent();
458
+ _state.label = 13;
459
+ case 13:
426
460
  // After the upsert, so every doc already has the frontmatter row sqlite's content rowid
427
461
  // couples to. ON CONFLICT DO UPDATE preserves that rowid, so a reparse keeps its identity.
428
462
  return [
429
463
  4,
430
- dialect.reconcileContent(conn, touched, parsedDocs, delta, cfg)
464
+ dialect.reconcileContent(conn, contentTouched, parsedDocs, delta, cfg)
431
465
  ];
432
- case 12:
466
+ case 14:
433
467
  _state.sent();
434
468
  if (!(touched.length > 0)) return [
435
469
  3,
436
- 14
470
+ 16
437
471
  ];
438
472
  return [
439
473
  4,
@@ -443,67 +477,67 @@ function reconcile(conn, cfg, baseDir, dialect, pool) {
443
477
  ];
444
478
  }))
445
479
  ];
446
- case 13:
480
+ case 15:
447
481
  _state.sent();
448
- _state.label = 14;
449
- case 14:
482
+ _state.label = 16;
483
+ case 16:
450
484
  presetRows = [];
451
- _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined, _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined;
485
+ _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined, _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
452
486
  try {
453
- for(_iterator1 = parsedDocs[Symbol.iterator](); !(_iteratorNormalCompletion2 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion2 = true){
454
- doc = _step1.value;
487
+ for(_iterator = parsedDocs[Symbol.iterator](); !(_iteratorNormalCompletion1 = (_step = _iterator.next()).done); _iteratorNormalCompletion1 = true){
488
+ doc = _step.value;
455
489
  try {
456
- for(_iterator2 = doc.presets[Symbol.iterator](); !(_iteratorNormalCompletion1 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion1 = true){
457
- presetName = _step2.value;
490
+ for(_iterator1 = doc.presets[Symbol.iterator](); !(_iteratorNormalCompletion = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion = true){
491
+ presetName = _step1.value;
458
492
  presetRows.push([
459
493
  doc.relPath,
460
494
  presetName
461
495
  ]);
462
496
  }
463
497
  } catch (err) {
464
- _didIteratorError1 = true;
465
- _iteratorError1 = err;
498
+ _didIteratorError = true;
499
+ _iteratorError = err;
466
500
  } finally{
467
501
  try {
468
- if (!_iteratorNormalCompletion1 && _iterator2.return != null) {
469
- _iterator2.return();
502
+ if (!_iteratorNormalCompletion && _iterator1.return != null) {
503
+ _iterator1.return();
470
504
  }
471
505
  } finally{
472
- if (_didIteratorError1) {
473
- throw _iteratorError1;
506
+ if (_didIteratorError) {
507
+ throw _iteratorError;
474
508
  }
475
509
  }
476
510
  }
477
511
  }
478
512
  } catch (err) {
479
- _didIteratorError2 = true;
480
- _iteratorError2 = err;
513
+ _didIteratorError1 = true;
514
+ _iteratorError1 = err;
481
515
  } finally{
482
516
  try {
483
- if (!_iteratorNormalCompletion2 && _iterator1.return != null) {
484
- _iterator1.return();
517
+ if (!_iteratorNormalCompletion1 && _iterator.return != null) {
518
+ _iterator.return();
485
519
  }
486
520
  } finally{
487
- if (_didIteratorError2) {
488
- throw _iteratorError2;
521
+ if (_didIteratorError1) {
522
+ throw _iteratorError1;
489
523
  }
490
524
  }
491
525
  }
492
526
  if (!(presetRows.length > 0)) return [
493
527
  3,
494
- 16
528
+ 18
495
529
  ];
496
530
  return [
497
531
  4,
498
- conn.runBatch('INSERT INTO preset_files ("path", preset) VALUES (?, ?)', presetRows)
532
+ conn.runBatch('INSERT INTO preset_files ("path", preset) VALUES (?, ?) ON CONFLICT("path", preset) DO NOTHING', presetRows)
499
533
  ];
500
- case 15:
534
+ case 17:
501
535
  _state.sent();
502
- _state.label = 16;
503
- case 16:
536
+ _state.label = 18;
537
+ case 18:
504
538
  if (!(vanished.length > 0)) return [
505
539
  3,
506
- 18
540
+ 20
507
541
  ];
508
542
  return [
509
543
  4,
@@ -513,86 +547,86 @@ function reconcile(conn, cfg, baseDir, dialect, pool) {
513
547
  ];
514
548
  }))
515
549
  ];
516
- case 17:
550
+ case 19:
517
551
  _state.sent();
518
- _state.label = 18;
519
- case 18:
520
- _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = undefined;
552
+ _state.label = 20;
553
+ case 20:
554
+ _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined;
521
555
  if (!(touched.length > 0)) return [
522
556
  3,
523
- 26
557
+ 28
524
558
  ];
525
- _state.label = 19;
526
- case 19:
559
+ _state.label = 21;
560
+ case 21:
527
561
  _state.trys.push([
528
- 19,
529
- 24,
530
- 25,
531
- 26
562
+ 21,
563
+ 26,
564
+ 27,
565
+ 28
532
566
  ]);
533
- _iterator3 = features[Symbol.iterator]();
534
- _state.label = 20;
535
- case 20:
536
- if (!!(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done)) return [
567
+ _iterator2 = features[Symbol.iterator]();
568
+ _state.label = 22;
569
+ case 22:
570
+ if (!!(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done)) return [
537
571
  3,
538
- 23
572
+ 25
539
573
  ];
540
- feature = _step3.value;
574
+ feature = _step2.value;
541
575
  return [
542
576
  4,
543
577
  (_feature_remove = feature.remove) === null || _feature_remove === void 0 ? void 0 : _feature_remove.call(feature, conn, touched, delta)
544
578
  ];
545
- case 21:
579
+ case 23:
546
580
  _state.sent();
547
- _state.label = 22;
548
- case 22:
549
- _iteratorNormalCompletion3 = true;
581
+ _state.label = 24;
582
+ case 24:
583
+ _iteratorNormalCompletion2 = true;
550
584
  return [
551
585
  3,
552
- 20
586
+ 22
553
587
  ];
554
- case 23:
588
+ case 25:
555
589
  return [
556
590
  3,
557
- 26
591
+ 28
558
592
  ];
559
- case 24:
593
+ case 26:
560
594
  err = _state.sent();
561
- _didIteratorError3 = true;
562
- _iteratorError3 = err;
595
+ _didIteratorError2 = true;
596
+ _iteratorError2 = err;
563
597
  return [
564
598
  3,
565
- 26
599
+ 28
566
600
  ];
567
- case 25:
601
+ case 27:
568
602
  try {
569
- if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
570
- _iterator3.return();
603
+ if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
604
+ _iterator2.return();
571
605
  }
572
606
  } finally{
573
- if (_didIteratorError3) {
574
- throw _iteratorError3;
607
+ if (_didIteratorError2) {
608
+ throw _iteratorError2;
575
609
  }
576
610
  }
577
611
  return [
578
612
  7
579
613
  ];
580
- case 26:
581
- _iteratorNormalCompletion4 = true, _didIteratorError4 = false, _iteratorError4 = undefined;
582
- _state.label = 27;
583
- case 27:
614
+ case 28:
615
+ _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = undefined;
616
+ _state.label = 29;
617
+ case 29:
584
618
  _state.trys.push([
585
- 27,
586
- 32,
587
- 33,
588
- 34
619
+ 29,
620
+ 34,
621
+ 35,
622
+ 36
589
623
  ]);
590
624
  _loop = function() {
591
625
  var feature, _feature_store, docsForFeature;
592
626
  return _ts_generator(this, function(_state) {
593
627
  switch(_state.label){
594
628
  case 0:
595
- feature = _step4.value;
629
+ feature = _step3.value;
596
630
  docsForFeature = parsedDocs.map(function(doc) {
597
631
  return {
598
632
  path: doc.relPath,
@@ -611,110 +645,110 @@ function reconcile(conn, cfg, baseDir, dialect, pool) {
611
645
  }
612
646
  });
613
647
  };
614
- _iterator4 = features[Symbol.iterator]();
615
- _state.label = 28;
616
- case 28:
617
- if (!!(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done)) return [
648
+ _iterator3 = features[Symbol.iterator]();
649
+ _state.label = 30;
650
+ case 30:
651
+ if (!!(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done)) return [
618
652
  3,
619
- 31
653
+ 33
620
654
  ];
621
655
  return [
622
656
  5,
623
657
  _ts_values(_loop())
624
658
  ];
625
- case 29:
659
+ case 31:
626
660
  _state.sent();
627
- _state.label = 30;
628
- case 30:
629
- _iteratorNormalCompletion4 = true;
661
+ _state.label = 32;
662
+ case 32:
663
+ _iteratorNormalCompletion3 = true;
630
664
  return [
631
665
  3,
632
- 28
666
+ 30
633
667
  ];
634
- case 31:
668
+ case 33:
635
669
  return [
636
670
  3,
637
- 34
671
+ 36
638
672
  ];
639
- case 32:
673
+ case 34:
640
674
  err = _state.sent();
641
- _didIteratorError4 = true;
642
- _iteratorError4 = err;
675
+ _didIteratorError3 = true;
676
+ _iteratorError3 = err;
643
677
  return [
644
678
  3,
645
- 34
679
+ 36
646
680
  ];
647
- case 33:
681
+ case 35:
648
682
  try {
649
- if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
650
- _iterator4.return();
683
+ if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
684
+ _iterator3.return();
651
685
  }
652
686
  } finally{
653
- if (_didIteratorError4) {
654
- throw _iteratorError4;
687
+ if (_didIteratorError3) {
688
+ throw _iteratorError3;
655
689
  }
656
690
  }
657
691
  return [
658
692
  7
659
693
  ];
660
- case 34:
661
- _iteratorNormalCompletion5 = true, _didIteratorError5 = false, _iteratorError5 = undefined;
662
- _state.label = 35;
663
- case 35:
694
+ case 36:
695
+ _iteratorNormalCompletion4 = true, _didIteratorError4 = false, _iteratorError4 = undefined;
696
+ _state.label = 37;
697
+ case 37:
664
698
  _state.trys.push([
665
- 35,
666
- 40,
667
- 41,
668
- 42
699
+ 37,
700
+ 42,
701
+ 43,
702
+ 44
669
703
  ]);
670
- _iterator5 = features[Symbol.iterator]();
671
- _state.label = 36;
672
- case 36:
673
- if (!!(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done)) return [
704
+ _iterator4 = features[Symbol.iterator]();
705
+ _state.label = 38;
706
+ case 38:
707
+ if (!!(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done)) return [
674
708
  3,
675
- 39
709
+ 41
676
710
  ];
677
- feature1 = _step5.value;
711
+ feature1 = _step4.value;
678
712
  return [
679
713
  4,
680
714
  (_feature_afterReconcile = feature1.afterReconcile) === null || _feature_afterReconcile === void 0 ? void 0 : _feature_afterReconcile.call(feature1, conn, delta)
681
715
  ];
682
- case 37:
716
+ case 39:
683
717
  _state.sent();
684
- _state.label = 38;
685
- case 38:
686
- _iteratorNormalCompletion5 = true;
718
+ _state.label = 40;
719
+ case 40:
720
+ _iteratorNormalCompletion4 = true;
687
721
  return [
688
722
  3,
689
- 36
723
+ 38
690
724
  ];
691
- case 39:
725
+ case 41:
692
726
  return [
693
727
  3,
694
- 42
728
+ 44
695
729
  ];
696
- case 40:
730
+ case 42:
697
731
  err = _state.sent();
698
- _didIteratorError5 = true;
699
- _iteratorError5 = err;
732
+ _didIteratorError4 = true;
733
+ _iteratorError4 = err;
700
734
  return [
701
735
  3,
702
- 42
736
+ 44
703
737
  ];
704
- case 41:
738
+ case 43:
705
739
  try {
706
- if (!_iteratorNormalCompletion5 && _iterator5.return != null) {
707
- _iterator5.return();
740
+ if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
741
+ _iterator4.return();
708
742
  }
709
743
  } finally{
710
- if (_didIteratorError5) {
711
- throw _iteratorError5;
744
+ if (_didIteratorError4) {
745
+ throw _iteratorError4;
712
746
  }
713
747
  }
714
748
  return [
715
749
  7
716
750
  ];
717
- case 42:
751
+ case 44:
718
752
  return [
719
753
  2
720
754
  ];