sensemaking 0.19.0 → 0.19.2

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 (110) hide show
  1. package/dist/cjs/index.d.cts +1 -1
  2. package/dist/cjs/index.d.ts +1 -1
  3. package/dist/cjs/index.js +3 -0
  4. package/dist/cjs/index.js.map +1 -1
  5. package/dist/cjs/store/duckdb/fieldStats.js +87 -10
  6. package/dist/cjs/store/duckdb/fieldStats.js.map +1 -1
  7. package/dist/cjs/store/duckdb/open.js +3 -2
  8. package/dist/cjs/store/duckdb/open.js.map +1 -1
  9. package/dist/cjs/store/duckdb/reconcile.d.cts +2 -6
  10. package/dist/cjs/store/duckdb/reconcile.d.ts +2 -6
  11. package/dist/cjs/store/duckdb/reconcile.js +41 -581
  12. package/dist/cjs/store/duckdb/reconcile.js.map +1 -1
  13. package/dist/cjs/store/duckdb/store.js +5 -3
  14. package/dist/cjs/store/duckdb/store.js.map +1 -1
  15. package/dist/cjs/store/index.d.cts +1 -0
  16. package/dist/cjs/store/index.d.ts +1 -0
  17. package/dist/cjs/store/index.js +4 -0
  18. package/dist/cjs/store/index.js.map +1 -1
  19. package/dist/cjs/store/reconcile.d.cts +6 -0
  20. package/dist/cjs/store/reconcile.d.ts +6 -0
  21. package/dist/cjs/store/reconcile.js +750 -0
  22. package/dist/cjs/store/reconcile.js.map +1 -0
  23. package/dist/cjs/store/shared.d.cts +1 -0
  24. package/dist/cjs/store/shared.d.ts +1 -0
  25. package/dist/cjs/store/shared.js +37 -0
  26. package/dist/cjs/store/shared.js.map +1 -1
  27. package/dist/cjs/store/sqlite/connection.js +1 -1
  28. package/dist/cjs/store/sqlite/connection.js.map +1 -1
  29. package/dist/cjs/store/sqlite/open.js +33 -11
  30. package/dist/cjs/store/sqlite/open.js.map +1 -1
  31. package/dist/cjs/store/sqlite/reconcile.d.cts +5 -10
  32. package/dist/cjs/store/sqlite/reconcile.d.ts +5 -10
  33. package/dist/cjs/store/sqlite/reconcile.js +48 -840
  34. package/dist/cjs/store/sqlite/reconcile.js.map +1 -1
  35. package/dist/cjs/store/sqlite/signature.d.cts +6 -0
  36. package/dist/cjs/store/sqlite/signature.d.ts +6 -0
  37. package/dist/cjs/store/sqlite/signature.js +380 -0
  38. package/dist/cjs/store/sqlite/signature.js.map +1 -0
  39. package/dist/cjs/store/sqlite/store.js +5 -3
  40. package/dist/cjs/store/sqlite/store.js.map +1 -1
  41. package/dist/cjs/store/transaction.d.cts +2 -1
  42. package/dist/cjs/store/transaction.d.ts +2 -1
  43. package/dist/cjs/store/transaction.js +16 -6
  44. package/dist/cjs/store/transaction.js.map +1 -1
  45. package/dist/cjs/store/turso/connection.js +1 -1
  46. package/dist/cjs/store/turso/connection.js.map +1 -1
  47. package/dist/cjs/store/turso/open.d.cts +2 -0
  48. package/dist/cjs/store/turso/open.d.ts +2 -0
  49. package/dist/cjs/store/turso/open.js +115 -57
  50. package/dist/cjs/store/turso/open.js.map +1 -1
  51. package/dist/cjs/store/turso/reconcile.d.cts +3 -6
  52. package/dist/cjs/store/turso/reconcile.d.ts +3 -6
  53. package/dist/cjs/store/turso/reconcile.js +159 -596
  54. package/dist/cjs/store/turso/reconcile.js.map +1 -1
  55. package/dist/cjs/store/turso/store.js +3 -2
  56. package/dist/cjs/store/turso/store.js.map +1 -1
  57. package/dist/cjs/store/types.d.cts +12 -2
  58. package/dist/cjs/store/types.d.ts +12 -2
  59. package/dist/cjs/store/types.js +14 -0
  60. package/dist/cjs/store/types.js.map +1 -1
  61. package/dist/esm/index.d.ts +1 -1
  62. package/dist/esm/index.js +1 -1
  63. package/dist/esm/index.js.map +1 -1
  64. package/dist/esm/store/duckdb/fieldStats.js +32 -19
  65. package/dist/esm/store/duckdb/fieldStats.js.map +1 -1
  66. package/dist/esm/store/duckdb/open.js +3 -2
  67. package/dist/esm/store/duckdb/open.js.map +1 -1
  68. package/dist/esm/store/duckdb/reconcile.d.ts +2 -6
  69. package/dist/esm/store/duckdb/reconcile.js +20 -117
  70. package/dist/esm/store/duckdb/reconcile.js.map +1 -1
  71. package/dist/esm/store/duckdb/store.js +5 -3
  72. package/dist/esm/store/duckdb/store.js.map +1 -1
  73. package/dist/esm/store/index.d.ts +1 -0
  74. package/dist/esm/store/index.js +1 -0
  75. package/dist/esm/store/index.js.map +1 -1
  76. package/dist/esm/store/reconcile.d.ts +6 -0
  77. package/dist/esm/store/reconcile.js +130 -0
  78. package/dist/esm/store/reconcile.js.map +1 -0
  79. package/dist/esm/store/shared.d.ts +1 -0
  80. package/dist/esm/store/shared.js +9 -0
  81. package/dist/esm/store/shared.js.map +1 -1
  82. package/dist/esm/store/sqlite/connection.js +2 -2
  83. package/dist/esm/store/sqlite/connection.js.map +1 -1
  84. package/dist/esm/store/sqlite/open.js +28 -8
  85. package/dist/esm/store/sqlite/open.js.map +1 -1
  86. package/dist/esm/store/sqlite/reconcile.d.ts +5 -10
  87. package/dist/esm/store/sqlite/reconcile.js +31 -198
  88. package/dist/esm/store/sqlite/reconcile.js.map +1 -1
  89. package/dist/esm/store/sqlite/signature.d.ts +6 -0
  90. package/dist/esm/store/sqlite/signature.js +58 -0
  91. package/dist/esm/store/sqlite/signature.js.map +1 -0
  92. package/dist/esm/store/sqlite/store.js +5 -3
  93. package/dist/esm/store/sqlite/store.js.map +1 -1
  94. package/dist/esm/store/transaction.d.ts +2 -1
  95. package/dist/esm/store/transaction.js +11 -6
  96. package/dist/esm/store/transaction.js.map +1 -1
  97. package/dist/esm/store/turso/connection.js +2 -2
  98. package/dist/esm/store/turso/connection.js.map +1 -1
  99. package/dist/esm/store/turso/open.d.ts +2 -0
  100. package/dist/esm/store/turso/open.js +14 -4
  101. package/dist/esm/store/turso/open.js.map +1 -1
  102. package/dist/esm/store/turso/reconcile.d.ts +3 -6
  103. package/dist/esm/store/turso/reconcile.js +31 -132
  104. package/dist/esm/store/turso/reconcile.js.map +1 -1
  105. package/dist/esm/store/turso/store.js +3 -2
  106. package/dist/esm/store/turso/store.js.map +1 -1
  107. package/dist/esm/store/types.d.ts +12 -2
  108. package/dist/esm/store/types.js +12 -1
  109. package/dist/esm/store/types.js.map +1 -1
  110. package/package.json +1 -1
@@ -2,27 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
5
- Object.defineProperty(exports, "reconcile", {
5
+ Object.defineProperty(exports, "duckdbDialect", {
6
6
  enumerable: true,
7
7
  get: function() {
8
- return reconcile;
8
+ return duckdbDialect;
9
9
  }
10
10
  });
11
11
  var _errorsts = require("../../errors.js");
12
- var _indexts = require("../../features/index.js");
13
- var _progressts = require("../../output/progress.js");
14
- var _indexts1 = require("../../scan/index.js");
15
- var _reparsets = require("../../scan/reparse.js");
16
- var _sharedts = require("../shared.js");
17
- var _transactionts = require("../transaction.js");
18
- function _array_like_to_array(arr, len) {
19
- if (len == null || len > arr.length) len = arr.length;
20
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
21
- return arr2;
22
- }
23
- function _array_without_holes(arr) {
24
- if (Array.isArray(arr)) return _array_like_to_array(arr);
25
- }
26
12
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
27
13
  try {
28
14
  var info = gen[key](arg);
@@ -49,17 +35,6 @@ function _async_to_generator(fn) {
49
35
  });
50
36
  };
51
37
  }
52
- function _iterable_to_array(iter) {
53
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) {
54
- return Array.from(iter);
55
- }
56
- }
57
- function _non_iterable_spread() {
58
- throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
59
- }
60
- function _to_consumable_array(arr) {
61
- return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
62
- }
63
38
  function _ts_generator(thisArg, body) {
64
39
  var f, y, t, _ = {
65
40
  label: 0,
@@ -159,43 +134,10 @@ function _ts_generator(thisArg, body) {
159
134
  };
160
135
  }
161
136
  }
162
- function _ts_values(o) {
163
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
164
- if (m) {
165
- return m.call(o);
166
- }
167
- if (o && typeof o.length === "number") {
168
- return {
169
- next: function() {
170
- if (o && i >= o.length) {
171
- o = void 0;
172
- }
173
- return {
174
- value: o && o[i++],
175
- done: !o
176
- };
177
- }
178
- };
179
- }
180
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
181
- }
182
- function _unsupported_iterable_to_array(o, minLen) {
183
- if (!o) return;
184
- if (typeof o === "string") return _array_like_to_array(o, minLen);
185
- var n = Object.prototype.toString.call(o).slice(8, -1);
186
- if (n === "Object" && o.constructor) n = o.constructor.name;
187
- if (n === "Map" || n === "Set") return Array.from(n);
188
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
189
- }
190
- // Mirrors sqlite/reconcile.ts's frontmatter-upsert shape (dynamic ALTER TABLE per discovered key, ON CONFLICT upsert). `content` is
191
- // a plain table, not FTS-virtual, so rows are maintained here unconditionally; DuckDB's ALTER TABLE needs a declared type, so every dynamic frontmatter column is VARIANT (holds mapValue()'s mixed JS types for one key across files).
192
- var CORE_FRONTMATTER_COLUMNS = new Set([
193
- 'path',
194
- '_mtime',
195
- '_ctime',
196
- '_size',
197
- '_parse_error'
198
- ]);
137
+ // This store's dialect (types.ts's ReconcileDialect) for the shared orchestration in
138
+ // store/reconcile.ts. `content` is a plain table, not FTS-virtual, so rows are maintained here
139
+ // unconditionally; DuckDB's ALTER TABLE needs a declared type, so every dynamic frontmatter
140
+ // column is VARIANT (holds mapValue()'s mixed JS types for one key across files).
199
141
  // No rowid coupling needed (unlike sqlite's content, which links to frontmatter's rowid):
200
142
  // `path` is content's own primary key, so this is a plain per-doc row.
201
143
  var INSERT_CONTENT_SQL = 'INSERT INTO content ("path", title, summary, text) VALUES (?, ?, ?, ?)';
@@ -210,542 +152,60 @@ function contentRow(doc) {
210
152
  // No compile-time column cap in DuckDB (unlike SQLite's SQLITE_MAX_COLUMN); kept as a sanity fence anyway
211
153
  // so a runaway frontmatter generator fails with a clear message instead of an unbounded ALTER TABLE loop.
212
154
  var MAX_FRONTMATTER_COLUMNS = 10000;
213
- function reconcile(conn, cfg, baseDir) {
155
+ function reconcileContent(conn, touched, docs, _delta) {
214
156
  return _async_to_generator(function() {
215
- 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;
216
157
  return _ts_generator(this, function(_state) {
217
158
  switch(_state.label){
218
159
  case 0:
219
- files = (0, _indexts1.listFiles)(cfg, baseDir);
220
- currentSet = new Set(files.map(function(f) {
221
- return f.relPath;
222
- }));
223
- return [
224
- 4,
225
- conn.prepare('SELECT "path", "_mtime", "_size" FROM frontmatter')
160
+ if (!(touched.length > 0)) return [
161
+ 3,
162
+ 2
226
163
  ];
227
- case 1:
228
- existingStmt = _state.sent();
229
164
  return [
230
165
  4,
231
- existingStmt.all()
166
+ conn.runBatch('DELETE FROM content WHERE "path" = ?', touched.map(function(p) {
167
+ return [
168
+ p
169
+ ];
170
+ }))
232
171
  ];
172
+ case 1:
173
+ _state.sent();
174
+ _state.label = 2;
233
175
  case 2:
234
- existingRows = _state.sent();
235
- existing = new Map(existingRows.map(function(r) {
236
- return [
237
- r.path,
238
- r
239
- ];
240
- }));
241
- vanished = existingRows.filter(function(r) {
242
- return !currentSet.has(r.path);
243
- }).map(function(r) {
244
- return r.path;
245
- });
246
- toReparse = files.filter(function(f) {
247
- var row = existing.get(f.relPath);
248
- return !row || row._mtime !== f.mtimeMs || row._size !== f.size;
249
- });
250
- if (vanished.length === 0 && toReparse.length === 0) return [
251
- 2,
252
- {
253
- parsed: 0,
254
- warnings: []
255
- }
176
+ if (!(docs.length > 0)) return [
177
+ 3,
178
+ 4
256
179
  ];
257
- features = (0, _indexts.activeFeatures)(cfg);
258
180
  return [
259
181
  4,
260
- (0, _sharedts.getColumns)(conn)
182
+ conn.runBatch(INSERT_CONTENT_SQL, docs.map(contentRow))
261
183
  ];
262
184
  case 3:
263
- seenColumns = _state.sent();
264
- report = (0, _progressts.progress)('reparsing files', toReparse.length);
265
- return [
266
- 4,
267
- (0, _reparsets.reparseFiles)(toReparse, features, cfg, seenColumns, report.tick)
268
- ];
269
- case 4:
270
- _ref = _state.sent(), parsedDocs = _ref.docs, warnings = _ref.warnings, newColumns = _ref.newColumns;
271
- report.finish();
272
- _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
273
- try {
274
- for(_iterator = newColumns[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
275
- col = _step.value;
276
- seenColumns.add(col);
277
- }
278
- } catch (err) {
279
- _didIteratorError = true;
280
- _iteratorError = err;
281
- } finally{
282
- try {
283
- if (!_iteratorNormalCompletion && _iterator.return != null) {
284
- _iterator.return();
285
- }
286
- } finally{
287
- if (_didIteratorError) {
288
- throw _iteratorError;
289
- }
290
- }
291
- }
292
- allColumns = _to_consumable_array(seenColumns);
293
- if (allColumns.length > MAX_FRONTMATTER_COLUMNS) {
294
- throw new _errorsts.SenseError('COLUMN_LIMIT', "frontmatter would need ".concat(allColumns.length, " columns, crossing this store's sanity limit (").concat(MAX_FRONTMATTER_COLUMNS, "). Narrow the presets' include globs so fewer/other files are indexed, or fix whatever is generating unbounded frontmatter keys."));
295
- }
296
- writableColumns = allColumns.filter(function(c) {
297
- return CORE_FRONTMATTER_COLUMNS.has(c) || !_indexts1.RESERVED_COLUMNS.has(c);
298
- });
299
- insertSql = "INSERT INTO frontmatter (".concat(writableColumns.map(_sharedts.quoteIdent).join(', '), ") VALUES (").concat(writableColumns.map(function() {
300
- return '?';
301
- }).join(', '), ') ON CONFLICT("path") DO UPDATE SET ').concat(writableColumns.filter(function(c) {
302
- return c !== 'path';
303
- }).map(function(c) {
304
- return "".concat((0, _sharedts.quoteIdent)(c), " = excluded.").concat((0, _sharedts.quoteIdent)(c));
305
- }).join(', '));
306
- added = toReparse.filter(function(f) {
307
- return !existing.has(f.relPath);
308
- }).map(function(f) {
309
- return f.relPath;
310
- });
311
- delta = {
312
- files: files,
313
- reparsed: parsedDocs.map(function(d) {
314
- return d.relPath;
315
- }),
316
- added: added,
317
- vanished: vanished
318
- };
319
- addedSet = new Set(added);
320
- reparsedExisting = parsedDocs.map(function(d) {
321
- return d.relPath;
322
- }).filter(function(p) {
323
- return !addedSet.has(p);
324
- });
325
- return [
326
- 4,
327
- (0, _transactionts.withTransaction)(conn, function() {
328
- return _async_to_generator(function() {
329
- var _feature_remove, _feature_afterReconcile, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, col, err, rows, contentTouched, presetTouched, presetRows, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _iterator1, _step1, doc, _iterator2, _step2, presetName, removedPaths, _iteratorNormalCompletion3, _didIteratorError3, _iteratorError3, _iterator3, _step3, feature, err, _iteratorNormalCompletion4, _didIteratorError4, _iteratorError4, _loop, _iterator4, _step4, err, _iteratorNormalCompletion5, _didIteratorError5, _iteratorError5, _iterator5, _step5, feature1, err;
330
- return _ts_generator(this, function(_state) {
331
- switch(_state.label){
332
- case 0:
333
- _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
334
- _state.label = 1;
335
- case 1:
336
- _state.trys.push([
337
- 1,
338
- 6,
339
- 7,
340
- 8
341
- ]);
342
- _iterator = newColumns[Symbol.iterator]();
343
- _state.label = 2;
344
- case 2:
345
- if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
346
- 3,
347
- 5
348
- ];
349
- col = _step.value;
350
- return [
351
- 4,
352
- conn.exec("ALTER TABLE frontmatter ADD COLUMN ".concat((0, _sharedts.quoteIdent)(col), " VARIANT"))
353
- ];
354
- case 3:
355
- _state.sent();
356
- _state.label = 4;
357
- case 4:
358
- _iteratorNormalCompletion = true;
359
- return [
360
- 3,
361
- 2
362
- ];
363
- case 5:
364
- return [
365
- 3,
366
- 8
367
- ];
368
- case 6:
369
- err = _state.sent();
370
- _didIteratorError = true;
371
- _iteratorError = err;
372
- return [
373
- 3,
374
- 8
375
- ];
376
- case 7:
377
- try {
378
- if (!_iteratorNormalCompletion && _iterator.return != null) {
379
- _iterator.return();
380
- }
381
- } finally{
382
- if (_didIteratorError) {
383
- throw _iteratorError;
384
- }
385
- }
386
- return [
387
- 7
388
- ];
389
- case 8:
390
- if (!(parsedDocs.length > 0)) return [
391
- 3,
392
- 10
393
- ];
394
- rows = parsedDocs.map(function(doc) {
395
- return writableColumns.map(function(col) {
396
- var _doc_data_col;
397
- if (col === 'path') return doc.relPath;
398
- if (col === '_mtime') return doc.mtimeMs;
399
- if (col === '_ctime') return doc.ctimeMs;
400
- if (col === '_size') return doc.size;
401
- if (col === '_parse_error') return doc.parseError;
402
- return (_doc_data_col = doc.data[col]) !== null && _doc_data_col !== void 0 ? _doc_data_col : null;
403
- });
404
- });
405
- return [
406
- 4,
407
- conn.runBatch(insertSql, rows)
408
- ];
409
- case 9:
410
- _state.sent();
411
- _state.label = 10;
412
- case 10:
413
- contentTouched = _to_consumable_array(vanished).concat(_to_consumable_array(reparsedExisting));
414
- if (!(contentTouched.length > 0)) return [
415
- 3,
416
- 12
417
- ];
418
- return [
419
- 4,
420
- conn.runBatch('DELETE FROM content WHERE "path" = ?', contentTouched.map(function(p) {
421
- return [
422
- p
423
- ];
424
- }))
425
- ];
426
- case 11:
427
- _state.sent();
428
- _state.label = 12;
429
- case 12:
430
- if (!(parsedDocs.length > 0)) return [
431
- 3,
432
- 14
433
- ];
434
- return [
435
- 4,
436
- conn.runBatch(INSERT_CONTENT_SQL, parsedDocs.map(contentRow))
437
- ];
438
- case 13:
439
- _state.sent();
440
- _state.label = 14;
441
- case 14:
442
- if (!(vanished.length > 0)) return [
443
- 3,
444
- 16
445
- ];
446
- return [
447
- 4,
448
- conn.runBatch('DELETE FROM frontmatter WHERE "path" = ?', vanished.map(function(p) {
449
- return [
450
- p
451
- ];
452
- }))
453
- ];
454
- case 15:
455
- _state.sent();
456
- _state.label = 16;
457
- case 16:
458
- // A preset edit forces a full rebuild, so an unchanged doc's coverage is already correct;
459
- // new docs have nothing to clear, which keeps cold builds linear.
460
- presetTouched = _to_consumable_array(vanished).concat(_to_consumable_array(reparsedExisting));
461
- if (!(presetTouched.length > 0)) return [
462
- 3,
463
- 18
464
- ];
465
- return [
466
- 4,
467
- conn.runBatch('DELETE FROM preset_files WHERE "path" = ?', presetTouched.map(function(p) {
468
- return [
469
- p
470
- ];
471
- }))
472
- ];
473
- case 17:
474
- _state.sent();
475
- _state.label = 18;
476
- case 18:
477
- presetRows = [];
478
- _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined, _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined;
479
- try {
480
- for(_iterator1 = parsedDocs[Symbol.iterator](); !(_iteratorNormalCompletion2 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion2 = true){
481
- doc = _step1.value;
482
- try {
483
- for(_iterator2 = doc.presets[Symbol.iterator](); !(_iteratorNormalCompletion1 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion1 = true){
484
- presetName = _step2.value;
485
- presetRows.push([
486
- doc.relPath,
487
- presetName
488
- ]);
489
- }
490
- } catch (err) {
491
- _didIteratorError1 = true;
492
- _iteratorError1 = err;
493
- } finally{
494
- try {
495
- if (!_iteratorNormalCompletion1 && _iterator2.return != null) {
496
- _iterator2.return();
497
- }
498
- } finally{
499
- if (_didIteratorError1) {
500
- throw _iteratorError1;
501
- }
502
- }
503
- }
504
- }
505
- } catch (err) {
506
- _didIteratorError2 = true;
507
- _iteratorError2 = err;
508
- } finally{
509
- try {
510
- if (!_iteratorNormalCompletion2 && _iterator1.return != null) {
511
- _iterator1.return();
512
- }
513
- } finally{
514
- if (_didIteratorError2) {
515
- throw _iteratorError2;
516
- }
517
- }
518
- }
519
- if (!(presetRows.length > 0)) return [
520
- 3,
521
- 20
522
- ];
523
- return [
524
- 4,
525
- conn.runBatch('INSERT INTO preset_files ("path", preset) VALUES (?, ?)', presetRows)
526
- ];
527
- case 19:
528
- _state.sent();
529
- _state.label = 20;
530
- case 20:
531
- removedPaths = _to_consumable_array(vanished).concat(_to_consumable_array(reparsedExisting));
532
- _iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = undefined;
533
- if (!(removedPaths.length > 0)) return [
534
- 3,
535
- 28
536
- ];
537
- _state.label = 21;
538
- case 21:
539
- _state.trys.push([
540
- 21,
541
- 26,
542
- 27,
543
- 28
544
- ]);
545
- _iterator3 = features[Symbol.iterator]();
546
- _state.label = 22;
547
- case 22:
548
- if (!!(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done)) return [
549
- 3,
550
- 25
551
- ];
552
- feature = _step3.value;
553
- return [
554
- 4,
555
- (_feature_remove = feature.remove) === null || _feature_remove === void 0 ? void 0 : _feature_remove.call(feature, conn, removedPaths, delta)
556
- ];
557
- case 23:
558
- _state.sent();
559
- _state.label = 24;
560
- case 24:
561
- _iteratorNormalCompletion3 = true;
562
- return [
563
- 3,
564
- 22
565
- ];
566
- case 25:
567
- return [
568
- 3,
569
- 28
570
- ];
571
- case 26:
572
- err = _state.sent();
573
- _didIteratorError3 = true;
574
- _iteratorError3 = err;
575
- return [
576
- 3,
577
- 28
578
- ];
579
- case 27:
580
- try {
581
- if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
582
- _iterator3.return();
583
- }
584
- } finally{
585
- if (_didIteratorError3) {
586
- throw _iteratorError3;
587
- }
588
- }
589
- return [
590
- 7
591
- ];
592
- case 28:
593
- _iteratorNormalCompletion4 = true, _didIteratorError4 = false, _iteratorError4 = undefined;
594
- _state.label = 29;
595
- case 29:
596
- _state.trys.push([
597
- 29,
598
- 34,
599
- 35,
600
- 36
601
- ]);
602
- _loop = function() {
603
- var feature, _feature_store, docsForFeature;
604
- return _ts_generator(this, function(_state) {
605
- switch(_state.label){
606
- case 0:
607
- feature = _step4.value;
608
- docsForFeature = parsedDocs.map(function(doc) {
609
- return {
610
- path: doc.relPath,
611
- extracted: doc.extracted[feature.name]
612
- };
613
- });
614
- return [
615
- 4,
616
- (_feature_store = feature.store) === null || _feature_store === void 0 ? void 0 : _feature_store.call(feature, conn, docsForFeature, delta)
617
- ];
618
- case 1:
619
- _state.sent();
620
- return [
621
- 2
622
- ];
623
- }
624
- });
625
- };
626
- _iterator4 = features[Symbol.iterator]();
627
- _state.label = 30;
628
- case 30:
629
- if (!!(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done)) return [
630
- 3,
631
- 33
632
- ];
633
- return [
634
- 5,
635
- _ts_values(_loop())
636
- ];
637
- case 31:
638
- _state.sent();
639
- _state.label = 32;
640
- case 32:
641
- _iteratorNormalCompletion4 = true;
642
- return [
643
- 3,
644
- 30
645
- ];
646
- case 33:
647
- return [
648
- 3,
649
- 36
650
- ];
651
- case 34:
652
- err = _state.sent();
653
- _didIteratorError4 = true;
654
- _iteratorError4 = err;
655
- return [
656
- 3,
657
- 36
658
- ];
659
- case 35:
660
- try {
661
- if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
662
- _iterator4.return();
663
- }
664
- } finally{
665
- if (_didIteratorError4) {
666
- throw _iteratorError4;
667
- }
668
- }
669
- return [
670
- 7
671
- ];
672
- case 36:
673
- _iteratorNormalCompletion5 = true, _didIteratorError5 = false, _iteratorError5 = undefined;
674
- _state.label = 37;
675
- case 37:
676
- _state.trys.push([
677
- 37,
678
- 42,
679
- 43,
680
- 44
681
- ]);
682
- _iterator5 = features[Symbol.iterator]();
683
- _state.label = 38;
684
- case 38:
685
- if (!!(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done)) return [
686
- 3,
687
- 41
688
- ];
689
- feature1 = _step5.value;
690
- return [
691
- 4,
692
- (_feature_afterReconcile = feature1.afterReconcile) === null || _feature_afterReconcile === void 0 ? void 0 : _feature_afterReconcile.call(feature1, conn, delta)
693
- ];
694
- case 39:
695
- _state.sent();
696
- _state.label = 40;
697
- case 40:
698
- _iteratorNormalCompletion5 = true;
699
- return [
700
- 3,
701
- 38
702
- ];
703
- case 41:
704
- return [
705
- 3,
706
- 44
707
- ];
708
- case 42:
709
- err = _state.sent();
710
- _didIteratorError5 = true;
711
- _iteratorError5 = err;
712
- return [
713
- 3,
714
- 44
715
- ];
716
- case 43:
717
- try {
718
- if (!_iteratorNormalCompletion5 && _iterator5.return != null) {
719
- _iterator5.return();
720
- }
721
- } finally{
722
- if (_didIteratorError5) {
723
- throw _iteratorError5;
724
- }
725
- }
726
- return [
727
- 7
728
- ];
729
- case 44:
730
- return [
731
- 2
732
- ];
733
- }
734
- });
735
- })();
736
- })
737
- ];
738
- case 5:
739
185
  _state.sent();
186
+ _state.label = 4;
187
+ case 4:
740
188
  return [
741
- 2,
742
- {
743
- parsed: parsedDocs.length,
744
- warnings: warnings
745
- }
189
+ 2
746
190
  ];
747
191
  }
748
192
  });
749
193
  })();
750
194
  }
195
+ var duckdbDialect = {
196
+ beginMode: function beginMode() {
197
+ return 'BEGIN';
198
+ },
199
+ checkColumnLimit: function checkColumnLimit(count) {
200
+ if (count > MAX_FRONTMATTER_COLUMNS) {
201
+ throw new _errorsts.SenseError('COLUMN_LIMIT', "frontmatter would need ".concat(count, " columns, crossing this store's sanity limit (").concat(MAX_FRONTMATTER_COLUMNS, "). Narrow the presets' include globs so fewer/other files are indexed, or fix whatever is generating unbounded frontmatter keys."));
202
+ }
203
+ },
204
+ // DuckDB's ALTER TABLE ADD COLUMN requires a type; VARIANT is the only one that can hold
205
+ // the mixed bigint/number/string/null shapes mapValue() produces for one key across files.
206
+ columnTypeSuffix: function columnTypeSuffix() {
207
+ return ' VARIANT';
208
+ },
209
+ reconcileContent: reconcileContent
210
+ };
751
211
  /* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }