sensemaking 0.21.1 → 0.22.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.
- package/README.md +1 -1
- package/dist/cjs/chunk/group.js +13 -9
- package/dist/cjs/chunk/group.js.map +1 -1
- package/dist/cjs/commands/search.js +1 -1
- package/dist/cjs/commands/search.js.map +1 -1
- package/dist/cjs/features/embed.js +9 -1
- package/dist/cjs/features/embed.js.map +1 -1
- package/dist/cjs/features/links.js +30 -8
- package/dist/cjs/features/links.js.map +1 -1
- package/dist/cjs/features/sections.js +13 -5
- package/dist/cjs/features/sections.js.map +1 -1
- package/dist/cjs/features/tags.js +7 -4
- package/dist/cjs/features/tags.js.map +1 -1
- package/dist/cjs/index.d.cts +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/scan/pool.d.cts +1 -0
- package/dist/cjs/scan/pool.d.ts +1 -0
- package/dist/cjs/scan/pool.js +2 -1
- package/dist/cjs/scan/pool.js.map +1 -1
- package/dist/cjs/scan/reparse.d.cts +1 -0
- package/dist/cjs/scan/reparse.d.ts +1 -0
- package/dist/cjs/scan/reparse.js +6 -3
- package/dist/cjs/scan/reparse.js.map +1 -1
- package/dist/cjs/store/builder.d.cts +2 -0
- package/dist/cjs/store/builder.d.ts +2 -0
- package/dist/cjs/store/builder.js.map +1 -1
- package/dist/cjs/store/duckdb/connection.js +120 -0
- package/dist/cjs/store/duckdb/connection.js.map +1 -1
- package/dist/cjs/store/duckdb/reconcile.js +11 -113
- package/dist/cjs/store/duckdb/reconcile.js.map +1 -1
- package/dist/cjs/store/index.d.cts +1 -5
- package/dist/cjs/store/index.d.ts +1 -5
- package/dist/cjs/store/index.js +9 -46
- package/dist/cjs/store/index.js.map +1 -1
- package/dist/cjs/store/lock-wait.d.cts +2 -0
- package/dist/cjs/store/lock-wait.d.ts +2 -0
- package/dist/cjs/store/lock-wait.js +51 -0
- package/dist/cjs/store/lock-wait.js.map +1 -0
- package/dist/cjs/store/open.d.cts +2 -4
- package/dist/cjs/store/open.d.ts +2 -4
- package/dist/cjs/store/open.js +29 -66
- package/dist/cjs/store/open.js.map +1 -1
- package/dist/cjs/store/reconcile.d.cts +2 -0
- package/dist/cjs/store/reconcile.d.ts +2 -0
- package/dist/cjs/store/reconcile.js +384 -255
- package/dist/cjs/store/reconcile.js.map +1 -1
- package/dist/cjs/store/shared.d.cts +1 -0
- package/dist/cjs/store/shared.d.ts +1 -0
- package/dist/cjs/store/shared.js +41 -0
- package/dist/cjs/store/shared.js.map +1 -1
- package/dist/cjs/store/sqlite/lexical.js +1 -1
- package/dist/cjs/store/sqlite/lexical.js.map +1 -1
- package/dist/cjs/store/sqlite/store.js +0 -1
- package/dist/cjs/store/sqlite/store.js.map +1 -1
- package/dist/cjs/store/stages.d.cts +18 -0
- package/dist/cjs/store/stages.d.ts +18 -0
- package/dist/cjs/store/stages.js +372 -0
- package/dist/cjs/store/stages.js.map +1 -0
- package/dist/cjs/store/turso/store.js.map +1 -1
- package/dist/cjs/store/types.d.cts +2 -2
- package/dist/cjs/store/types.d.ts +2 -2
- package/dist/cjs/store/types.js +0 -1
- package/dist/cjs/store/types.js.map +1 -1
- package/dist/cjs/text/segment.js +7 -5
- package/dist/cjs/text/segment.js.map +1 -1
- package/dist/cjs/watch.js +162 -107
- package/dist/cjs/watch.js.map +1 -1
- package/dist/cjs/workers/parse.d.cts +1 -0
- package/dist/cjs/workers/parse.d.ts +1 -0
- package/dist/cjs/workers/parse.js +4 -1
- package/dist/cjs/workers/parse.js.map +1 -1
- package/dist/esm/chunk/group.js +13 -9
- package/dist/esm/chunk/group.js.map +1 -1
- package/dist/esm/commands/search.js +1 -1
- package/dist/esm/commands/search.js.map +1 -1
- package/dist/esm/features/embed.js +9 -1
- package/dist/esm/features/embed.js.map +1 -1
- package/dist/esm/features/links.js +26 -9
- package/dist/esm/features/links.js.map +1 -1
- package/dist/esm/features/sections.js +13 -3
- package/dist/esm/features/sections.js.map +1 -1
- package/dist/esm/features/tags.js +7 -2
- package/dist/esm/features/tags.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/scan/pool.d.ts +1 -0
- package/dist/esm/scan/pool.js +2 -1
- package/dist/esm/scan/pool.js.map +1 -1
- package/dist/esm/scan/reparse.d.ts +1 -0
- package/dist/esm/scan/reparse.js +5 -2
- package/dist/esm/scan/reparse.js.map +1 -1
- package/dist/esm/store/builder.d.ts +2 -0
- package/dist/esm/store/builder.js.map +1 -1
- package/dist/esm/store/duckdb/connection.js +35 -0
- package/dist/esm/store/duckdb/connection.js.map +1 -1
- package/dist/esm/store/duckdb/reconcile.js +12 -37
- package/dist/esm/store/duckdb/reconcile.js.map +1 -1
- package/dist/esm/store/index.d.ts +1 -5
- package/dist/esm/store/index.js +6 -28
- package/dist/esm/store/index.js.map +1 -1
- package/dist/esm/store/lock-wait.d.ts +2 -0
- package/dist/esm/store/lock-wait.js +36 -0
- package/dist/esm/store/lock-wait.js.map +1 -0
- package/dist/esm/store/open.d.ts +2 -4
- package/dist/esm/store/open.js +17 -32
- package/dist/esm/store/open.js.map +1 -1
- package/dist/esm/store/reconcile.d.ts +2 -0
- package/dist/esm/store/reconcile.js +71 -44
- package/dist/esm/store/reconcile.js.map +1 -1
- package/dist/esm/store/shared.d.ts +1 -0
- package/dist/esm/store/shared.js +8 -0
- package/dist/esm/store/shared.js.map +1 -1
- package/dist/esm/store/sqlite/lexical.js +1 -1
- package/dist/esm/store/sqlite/lexical.js.map +1 -1
- package/dist/esm/store/sqlite/store.js +0 -1
- package/dist/esm/store/sqlite/store.js.map +1 -1
- package/dist/esm/store/stages.d.ts +18 -0
- package/dist/esm/store/stages.js +63 -0
- package/dist/esm/store/stages.js.map +1 -0
- package/dist/esm/store/turso/store.js +1 -1
- package/dist/esm/store/turso/store.js.map +1 -1
- package/dist/esm/store/types.d.ts +2 -2
- package/dist/esm/store/types.js +0 -1
- package/dist/esm/store/types.js.map +1 -1
- package/dist/esm/text/segment.js +7 -5
- package/dist/esm/text/segment.js.map +1 -1
- package/dist/esm/watch.js +63 -38
- package/dist/esm/watch.js.map +1 -1
- package/dist/esm/workers/parse.d.ts +1 -0
- package/dist/esm/workers/parse.js +4 -1
- package/dist/esm/workers/parse.js.map +1 -1
- package/package.json +1 -1
- package/skills/sense/SKILL.md +1 -1
- package/skills/sense-setup/SKILL.md +1 -1
|
@@ -20,7 +20,9 @@ var _indexts = require("../features/index.js");
|
|
|
20
20
|
var _progressts = require("../output/progress.js");
|
|
21
21
|
var _indexts1 = require("../scan/index.js");
|
|
22
22
|
var _reparsets = require("../scan/reparse.js");
|
|
23
|
+
var _lockwaitts = require("./lock-wait.js");
|
|
23
24
|
var _sharedts = require("./shared.js");
|
|
25
|
+
var _stagests = require("./stages.js");
|
|
24
26
|
var _transactionts = require("./transaction.js");
|
|
25
27
|
function _array_like_to_array(arr, len) {
|
|
26
28
|
if (len == null || len > arr.length) len = arr.length;
|
|
@@ -203,23 +205,56 @@ var CORE_FRONTMATTER_COLUMNS = new Set([
|
|
|
203
205
|
]);
|
|
204
206
|
function reconcile(conn, cfg, baseDir, dialect, pool, forcedPaths) {
|
|
205
207
|
return _async_to_generator(function() {
|
|
206
|
-
var files, currentSet,
|
|
208
|
+
var start, features, stages, elapsed, files, currentSet, existingRows, existing, vanished, toReparse, seenColumns, report, _ref, parsedDocs, warnings, newColumns, workerParseMs, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, col, allColumns, writableColumns, insertSql, added, delta, addedSet, reparsedExisting, touched, txStart, durationMs;
|
|
207
209
|
return _ts_generator(this, function(_state) {
|
|
208
210
|
switch(_state.label){
|
|
209
211
|
case 0:
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
212
|
+
start = process.hrtime.bigint();
|
|
213
|
+
features = (0, _indexts.activeFeatures)(cfg);
|
|
214
|
+
stages = (0, _stagests.stageRecorder)(features.map(function(f) {
|
|
215
|
+
return f.name;
|
|
213
216
|
}));
|
|
217
|
+
elapsed = function elapsed() {
|
|
218
|
+
return Number(process.hrtime.bigint() - start) / 1e6;
|
|
219
|
+
};
|
|
214
220
|
return [
|
|
215
221
|
4,
|
|
216
|
-
|
|
222
|
+
stages.time('list', function() {
|
|
223
|
+
return (0, _indexts1.listFiles)(cfg, baseDir);
|
|
224
|
+
})
|
|
217
225
|
];
|
|
218
226
|
case 1:
|
|
219
|
-
|
|
227
|
+
files = _state.sent();
|
|
228
|
+
currentSet = new Set(files.map(function(f) {
|
|
229
|
+
return f.relPath;
|
|
230
|
+
}));
|
|
220
231
|
return [
|
|
221
232
|
4,
|
|
222
|
-
|
|
233
|
+
stages.time('existing', function() {
|
|
234
|
+
return _async_to_generator(function() {
|
|
235
|
+
var existingStmt;
|
|
236
|
+
return _ts_generator(this, function(_state) {
|
|
237
|
+
switch(_state.label){
|
|
238
|
+
case 0:
|
|
239
|
+
return [
|
|
240
|
+
4,
|
|
241
|
+
conn.prepare('SELECT "path", "_mtime", "_size" FROM frontmatter')
|
|
242
|
+
];
|
|
243
|
+
case 1:
|
|
244
|
+
existingStmt = _state.sent();
|
|
245
|
+
return [
|
|
246
|
+
4,
|
|
247
|
+
existingStmt.all()
|
|
248
|
+
];
|
|
249
|
+
case 2:
|
|
250
|
+
return [
|
|
251
|
+
2,
|
|
252
|
+
_state.sent()
|
|
253
|
+
];
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
})();
|
|
257
|
+
})
|
|
223
258
|
];
|
|
224
259
|
case 2:
|
|
225
260
|
existingRows = _state.sent();
|
|
@@ -248,10 +283,10 @@ function reconcile(conn, cfg, baseDir, dialect, pool, forcedPaths) {
|
|
|
248
283
|
2,
|
|
249
284
|
{
|
|
250
285
|
parsed: 0,
|
|
251
|
-
warnings: []
|
|
286
|
+
warnings: [],
|
|
287
|
+
stages: stages.take(elapsed(), 0)
|
|
252
288
|
}
|
|
253
289
|
];
|
|
254
|
-
features = (0, _indexts.activeFeatures)(cfg);
|
|
255
290
|
return [
|
|
256
291
|
4,
|
|
257
292
|
(0, _sharedts.getColumns)(conn)
|
|
@@ -263,12 +298,14 @@ function reconcile(conn, cfg, baseDir, dialect, pool, forcedPaths) {
|
|
|
263
298
|
report = (0, _progressts.progress)('reparsing files', toReparse.length);
|
|
264
299
|
return [
|
|
265
300
|
4,
|
|
266
|
-
(
|
|
267
|
-
|
|
301
|
+
stages.time('parse', function() {
|
|
302
|
+
return (0, _reparsets.reparseFiles)(toReparse, features, cfg, seenColumns, report.tick, {
|
|
303
|
+
pool: pool
|
|
304
|
+
});
|
|
268
305
|
})
|
|
269
306
|
];
|
|
270
307
|
case 4:
|
|
271
|
-
_ref = _state.sent(), parsedDocs = _ref.docs, warnings = _ref.warnings, newColumns = _ref.newColumns;
|
|
308
|
+
_ref = _state.sent(), parsedDocs = _ref.docs, warnings = _ref.warnings, newColumns = _ref.newColumns, workerParseMs = _ref.workerParseMs;
|
|
272
309
|
report.finish();
|
|
273
310
|
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
274
311
|
try {
|
|
@@ -335,7 +372,7 @@ function reconcile(conn, cfg, baseDir, dialect, pool, forcedPaths) {
|
|
|
335
372
|
4,
|
|
336
373
|
(0, _transactionts.withTransaction)(conn, function() {
|
|
337
374
|
return _async_to_generator(function() {
|
|
338
|
-
var
|
|
375
|
+
var present, missingColumns, contentTouched, toRow, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _loop, _iterator, _step, err, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _loop1, _iterator1, _step1, err, _iteratorNormalCompletion2, _didIteratorError2, _iteratorError2, _loop2, _iterator2, _step2, err;
|
|
339
376
|
return _ts_generator(this, function(_state) {
|
|
340
377
|
switch(_state.label){
|
|
341
378
|
case 0:
|
|
@@ -354,7 +391,9 @@ function reconcile(conn, cfg, baseDir, dialect, pool, forcedPaths) {
|
|
|
354
391
|
];
|
|
355
392
|
return [
|
|
356
393
|
4,
|
|
357
|
-
|
|
394
|
+
stages.time('alter', function() {
|
|
395
|
+
return dialect.addColumns(conn, missingColumns);
|
|
396
|
+
})
|
|
358
397
|
];
|
|
359
398
|
case 2:
|
|
360
399
|
_state.sent();
|
|
@@ -368,35 +407,53 @@ function reconcile(conn, cfg, baseDir, dialect, pool, forcedPaths) {
|
|
|
368
407
|
contentTouched = touched;
|
|
369
408
|
if (!(added.length > 0)) return [
|
|
370
409
|
3,
|
|
371
|
-
|
|
410
|
+
5
|
|
372
411
|
];
|
|
373
412
|
return [
|
|
374
413
|
4,
|
|
375
|
-
|
|
414
|
+
stages.time('added-recheck', function() {
|
|
415
|
+
return _async_to_generator(function() {
|
|
416
|
+
var currentPathsStmt, currentPaths, _, staleAdded;
|
|
417
|
+
return _ts_generator(this, function(_state) {
|
|
418
|
+
switch(_state.label){
|
|
419
|
+
case 0:
|
|
420
|
+
return [
|
|
421
|
+
4,
|
|
422
|
+
conn.prepare('SELECT "path" FROM frontmatter')
|
|
423
|
+
];
|
|
424
|
+
case 1:
|
|
425
|
+
currentPathsStmt = _state.sent();
|
|
426
|
+
_ = Set.bind;
|
|
427
|
+
return [
|
|
428
|
+
4,
|
|
429
|
+
currentPathsStmt.all()
|
|
430
|
+
];
|
|
431
|
+
case 2:
|
|
432
|
+
currentPaths = new (_.apply(Set, [
|
|
433
|
+
void 0,
|
|
434
|
+
_state.sent().map(function(r) {
|
|
435
|
+
return r.path;
|
|
436
|
+
})
|
|
437
|
+
]));
|
|
438
|
+
staleAdded = added.filter(function(p) {
|
|
439
|
+
return currentPaths.has(p);
|
|
440
|
+
});
|
|
441
|
+
return [
|
|
442
|
+
2,
|
|
443
|
+
staleAdded.length > 0 ? _to_consumable_array(touched).concat(_to_consumable_array(staleAdded)) : touched
|
|
444
|
+
];
|
|
445
|
+
}
|
|
446
|
+
});
|
|
447
|
+
})();
|
|
448
|
+
})
|
|
376
449
|
];
|
|
377
450
|
case 4:
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
return [
|
|
381
|
-
4,
|
|
382
|
-
currentPathsStmt.all()
|
|
383
|
-
];
|
|
451
|
+
contentTouched = _state.sent();
|
|
452
|
+
_state.label = 5;
|
|
384
453
|
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;
|
|
396
|
-
case 6:
|
|
397
454
|
if (!(parsedDocs.length > 0)) return [
|
|
398
455
|
3,
|
|
399
|
-
|
|
456
|
+
7
|
|
400
457
|
];
|
|
401
458
|
toRow = function toRow(doc) {
|
|
402
459
|
return writableColumns.map(function(col) {
|
|
@@ -410,223 +467,266 @@ function reconcile(conn, cfg, baseDir, dialect, pool, forcedPaths) {
|
|
|
410
467
|
return (_doc_data_col = doc.data[col]) !== null && _doc_data_col !== void 0 ? _doc_data_col : null;
|
|
411
468
|
});
|
|
412
469
|
};
|
|
413
|
-
|
|
414
|
-
|
|
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);
|
|
422
|
-
});
|
|
423
|
-
if (!(newDocs.length > 0)) return [
|
|
424
|
-
3,
|
|
425
|
-
8
|
|
426
|
-
];
|
|
470
|
+
// A path in `added` has no existing frontmatter row, so it can never conflict; the rest
|
|
471
|
+
// genuinely can, and keep the upsert.
|
|
427
472
|
return [
|
|
428
473
|
4,
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
474
|
+
stages.time('fm-upsert', function() {
|
|
475
|
+
return _async_to_generator(function() {
|
|
476
|
+
var newDocs, updateDocs;
|
|
477
|
+
return _ts_generator(this, function(_state) {
|
|
478
|
+
switch(_state.label){
|
|
479
|
+
case 0:
|
|
480
|
+
newDocs = parsedDocs.filter(function(d) {
|
|
481
|
+
return addedSet.has(d.relPath);
|
|
482
|
+
});
|
|
483
|
+
updateDocs = parsedDocs.filter(function(d) {
|
|
484
|
+
return !addedSet.has(d.relPath);
|
|
485
|
+
});
|
|
486
|
+
return [
|
|
487
|
+
4,
|
|
488
|
+
(0, _sharedts.appendRows)(conn, 'frontmatter', writableColumns, insertSql, newDocs.map(toRow))
|
|
489
|
+
];
|
|
490
|
+
case 1:
|
|
491
|
+
_state.sent();
|
|
492
|
+
if (!(updateDocs.length > 0)) return [
|
|
493
|
+
3,
|
|
494
|
+
3
|
|
495
|
+
];
|
|
496
|
+
return [
|
|
497
|
+
4,
|
|
498
|
+
conn.runBatch(insertSql, updateDocs.map(toRow))
|
|
499
|
+
];
|
|
500
|
+
case 2:
|
|
501
|
+
_state.sent();
|
|
502
|
+
_state.label = 3;
|
|
503
|
+
case 3:
|
|
504
|
+
return [
|
|
505
|
+
2
|
|
506
|
+
];
|
|
507
|
+
}
|
|
508
|
+
});
|
|
509
|
+
})();
|
|
510
|
+
})
|
|
455
511
|
];
|
|
456
|
-
case
|
|
512
|
+
case 6:
|
|
457
513
|
_state.sent();
|
|
458
|
-
_state.label =
|
|
459
|
-
case
|
|
514
|
+
_state.label = 7;
|
|
515
|
+
case 7:
|
|
460
516
|
// After the upsert, so every doc already has the frontmatter row sqlite's content rowid
|
|
461
517
|
// couples to. ON CONFLICT DO UPDATE preserves that rowid, so a reparse keeps its identity.
|
|
462
518
|
return [
|
|
463
519
|
4,
|
|
464
|
-
|
|
520
|
+
stages.time('text-index', function() {
|
|
521
|
+
return dialect.reconcileContent(conn, contentTouched, parsedDocs, delta, cfg);
|
|
522
|
+
})
|
|
465
523
|
];
|
|
466
|
-
case
|
|
524
|
+
case 8:
|
|
467
525
|
_state.sent();
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
16
|
|
471
|
-
];
|
|
526
|
+
// A preset edit forces a full rebuild, so an unchanged doc's coverage is already correct;
|
|
527
|
+
// new docs have nothing to clear, which keeps cold builds linear.
|
|
472
528
|
return [
|
|
473
529
|
4,
|
|
474
|
-
|
|
475
|
-
return
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
530
|
+
stages.time('presets', function() {
|
|
531
|
+
return _async_to_generator(function() {
|
|
532
|
+
var presetRows, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iteratorNormalCompletion1, _didIteratorError1, _iteratorError1, _iterator, _step, doc, _iterator1, _step1, presetName;
|
|
533
|
+
return _ts_generator(this, function(_state) {
|
|
534
|
+
switch(_state.label){
|
|
535
|
+
case 0:
|
|
536
|
+
if (!(touched.length > 0)) return [
|
|
537
|
+
3,
|
|
538
|
+
2
|
|
539
|
+
];
|
|
540
|
+
return [
|
|
541
|
+
4,
|
|
542
|
+
conn.runBatch('DELETE FROM preset_files WHERE "path" = ?', touched.map(function(p) {
|
|
543
|
+
return [
|
|
544
|
+
p
|
|
545
|
+
];
|
|
546
|
+
}))
|
|
547
|
+
];
|
|
548
|
+
case 1:
|
|
549
|
+
_state.sent();
|
|
550
|
+
_state.label = 2;
|
|
551
|
+
case 2:
|
|
552
|
+
presetRows = [];
|
|
553
|
+
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined, _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
554
|
+
try {
|
|
555
|
+
for(_iterator = parsedDocs[Symbol.iterator](); !(_iteratorNormalCompletion1 = (_step = _iterator.next()).done); _iteratorNormalCompletion1 = true){
|
|
556
|
+
doc = _step.value;
|
|
557
|
+
try {
|
|
558
|
+
for(_iterator1 = doc.presets[Symbol.iterator](); !(_iteratorNormalCompletion = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion = true){
|
|
559
|
+
presetName = _step1.value;
|
|
560
|
+
presetRows.push([
|
|
561
|
+
doc.relPath,
|
|
562
|
+
presetName
|
|
563
|
+
]);
|
|
564
|
+
}
|
|
565
|
+
} catch (err) {
|
|
566
|
+
_didIteratorError = true;
|
|
567
|
+
_iteratorError = err;
|
|
568
|
+
} finally{
|
|
569
|
+
try {
|
|
570
|
+
if (!_iteratorNormalCompletion && _iterator1.return != null) {
|
|
571
|
+
_iterator1.return();
|
|
572
|
+
}
|
|
573
|
+
} finally{
|
|
574
|
+
if (_didIteratorError) {
|
|
575
|
+
throw _iteratorError;
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
} catch (err) {
|
|
581
|
+
_didIteratorError1 = true;
|
|
582
|
+
_iteratorError1 = err;
|
|
583
|
+
} finally{
|
|
584
|
+
try {
|
|
585
|
+
if (!_iteratorNormalCompletion1 && _iterator.return != null) {
|
|
586
|
+
_iterator.return();
|
|
587
|
+
}
|
|
588
|
+
} finally{
|
|
589
|
+
if (_didIteratorError1) {
|
|
590
|
+
throw _iteratorError1;
|
|
591
|
+
}
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
// DO NOTHING, not a bare INSERT: the added/touched split above comes from a read taken
|
|
595
|
+
// before this transaction's lock, so a path this process calls "added" can already have
|
|
596
|
+
// its (path, preset) row committed by a concurrent reconcile -- the row would be identical either way.
|
|
597
|
+
return [
|
|
598
|
+
4,
|
|
599
|
+
(0, _sharedts.appendRows)(conn, 'preset_files', [
|
|
600
|
+
'path',
|
|
601
|
+
'preset'
|
|
602
|
+
], 'INSERT INTO preset_files ("path", preset) VALUES (?, ?) ON CONFLICT("path", preset) DO NOTHING', presetRows)
|
|
603
|
+
];
|
|
604
|
+
case 3:
|
|
605
|
+
_state.sent();
|
|
606
|
+
return [
|
|
607
|
+
2
|
|
608
|
+
];
|
|
504
609
|
}
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
}
|
|
509
|
-
}
|
|
510
|
-
}
|
|
511
|
-
}
|
|
512
|
-
} catch (err) {
|
|
513
|
-
_didIteratorError1 = true;
|
|
514
|
-
_iteratorError1 = err;
|
|
515
|
-
} finally{
|
|
516
|
-
try {
|
|
517
|
-
if (!_iteratorNormalCompletion1 && _iterator.return != null) {
|
|
518
|
-
_iterator.return();
|
|
519
|
-
}
|
|
520
|
-
} finally{
|
|
521
|
-
if (_didIteratorError1) {
|
|
522
|
-
throw _iteratorError1;
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
if (!(presetRows.length > 0)) return [
|
|
527
|
-
3,
|
|
528
|
-
18
|
|
529
|
-
];
|
|
530
|
-
return [
|
|
531
|
-
4,
|
|
532
|
-
conn.runBatch('INSERT INTO preset_files ("path", preset) VALUES (?, ?) ON CONFLICT("path", preset) DO NOTHING', presetRows)
|
|
610
|
+
});
|
|
611
|
+
})();
|
|
612
|
+
})
|
|
533
613
|
];
|
|
534
|
-
case
|
|
614
|
+
case 9:
|
|
535
615
|
_state.sent();
|
|
536
|
-
_state.label = 18;
|
|
537
|
-
case 18:
|
|
538
616
|
if (!(vanished.length > 0)) return [
|
|
539
617
|
3,
|
|
540
|
-
|
|
618
|
+
11
|
|
541
619
|
];
|
|
542
620
|
return [
|
|
543
621
|
4,
|
|
544
|
-
|
|
545
|
-
return
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
622
|
+
stages.time('vanished', function() {
|
|
623
|
+
return conn.runBatch('DELETE FROM frontmatter WHERE "path" = ?', vanished.map(function(p) {
|
|
624
|
+
return [
|
|
625
|
+
p
|
|
626
|
+
];
|
|
627
|
+
}));
|
|
628
|
+
})
|
|
549
629
|
];
|
|
550
|
-
case
|
|
630
|
+
case 10:
|
|
551
631
|
_state.sent();
|
|
552
|
-
_state.label =
|
|
553
|
-
case
|
|
554
|
-
|
|
632
|
+
_state.label = 11;
|
|
633
|
+
case 11:
|
|
634
|
+
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
555
635
|
if (!(touched.length > 0)) return [
|
|
556
636
|
3,
|
|
557
|
-
|
|
637
|
+
19
|
|
558
638
|
];
|
|
559
|
-
_state.label =
|
|
560
|
-
case
|
|
639
|
+
_state.label = 12;
|
|
640
|
+
case 12:
|
|
561
641
|
_state.trys.push([
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
642
|
+
12,
|
|
643
|
+
17,
|
|
644
|
+
18,
|
|
645
|
+
19
|
|
566
646
|
]);
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
647
|
+
_loop = function() {
|
|
648
|
+
var feature;
|
|
649
|
+
return _ts_generator(this, function(_state) {
|
|
650
|
+
switch(_state.label){
|
|
651
|
+
case 0:
|
|
652
|
+
feature = _step.value;
|
|
653
|
+
return [
|
|
654
|
+
4,
|
|
655
|
+
stages.time((0, _stagests.featureStage)(feature.name, 'remove'), function() {
|
|
656
|
+
var _feature_remove;
|
|
657
|
+
return (_feature_remove = feature.remove) === null || _feature_remove === void 0 ? void 0 : _feature_remove.call(feature, conn, touched, delta);
|
|
658
|
+
})
|
|
659
|
+
];
|
|
660
|
+
case 1:
|
|
661
|
+
_state.sent();
|
|
662
|
+
return [
|
|
663
|
+
2
|
|
664
|
+
];
|
|
665
|
+
}
|
|
666
|
+
});
|
|
667
|
+
};
|
|
668
|
+
_iterator = features[Symbol.iterator]();
|
|
669
|
+
_state.label = 13;
|
|
670
|
+
case 13:
|
|
671
|
+
if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
|
|
571
672
|
3,
|
|
572
|
-
|
|
673
|
+
16
|
|
573
674
|
];
|
|
574
|
-
feature = _step2.value;
|
|
575
675
|
return [
|
|
576
|
-
|
|
577
|
-
(
|
|
676
|
+
5,
|
|
677
|
+
_ts_values(_loop())
|
|
578
678
|
];
|
|
579
|
-
case
|
|
679
|
+
case 14:
|
|
580
680
|
_state.sent();
|
|
581
|
-
_state.label =
|
|
582
|
-
case
|
|
583
|
-
|
|
681
|
+
_state.label = 15;
|
|
682
|
+
case 15:
|
|
683
|
+
_iteratorNormalCompletion = true;
|
|
584
684
|
return [
|
|
585
685
|
3,
|
|
586
|
-
|
|
686
|
+
13
|
|
587
687
|
];
|
|
588
|
-
case
|
|
688
|
+
case 16:
|
|
589
689
|
return [
|
|
590
690
|
3,
|
|
591
|
-
|
|
691
|
+
19
|
|
592
692
|
];
|
|
593
|
-
case
|
|
693
|
+
case 17:
|
|
594
694
|
err = _state.sent();
|
|
595
|
-
|
|
596
|
-
|
|
695
|
+
_didIteratorError = true;
|
|
696
|
+
_iteratorError = err;
|
|
597
697
|
return [
|
|
598
698
|
3,
|
|
599
|
-
|
|
699
|
+
19
|
|
600
700
|
];
|
|
601
|
-
case
|
|
701
|
+
case 18:
|
|
602
702
|
try {
|
|
603
|
-
if (!
|
|
604
|
-
|
|
703
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
704
|
+
_iterator.return();
|
|
605
705
|
}
|
|
606
706
|
} finally{
|
|
607
|
-
if (
|
|
608
|
-
throw
|
|
707
|
+
if (_didIteratorError) {
|
|
708
|
+
throw _iteratorError;
|
|
609
709
|
}
|
|
610
710
|
}
|
|
611
711
|
return [
|
|
612
712
|
7
|
|
613
713
|
];
|
|
614
|
-
case
|
|
615
|
-
|
|
616
|
-
_state.label =
|
|
617
|
-
case
|
|
714
|
+
case 19:
|
|
715
|
+
_iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
716
|
+
_state.label = 20;
|
|
717
|
+
case 20:
|
|
618
718
|
_state.trys.push([
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
719
|
+
20,
|
|
720
|
+
25,
|
|
721
|
+
26,
|
|
722
|
+
27
|
|
623
723
|
]);
|
|
624
|
-
|
|
625
|
-
var feature,
|
|
724
|
+
_loop1 = function() {
|
|
725
|
+
var feature, docsForFeature;
|
|
626
726
|
return _ts_generator(this, function(_state) {
|
|
627
727
|
switch(_state.label){
|
|
628
728
|
case 0:
|
|
629
|
-
feature =
|
|
729
|
+
feature = _step1.value;
|
|
630
730
|
docsForFeature = parsedDocs.map(function(doc) {
|
|
631
731
|
return {
|
|
632
732
|
path: doc.relPath,
|
|
@@ -635,7 +735,10 @@ function reconcile(conn, cfg, baseDir, dialect, pool, forcedPaths) {
|
|
|
635
735
|
});
|
|
636
736
|
return [
|
|
637
737
|
4,
|
|
638
|
-
(
|
|
738
|
+
stages.time((0, _stagests.featureStage)(feature.name, 'store'), function() {
|
|
739
|
+
var _feature_store;
|
|
740
|
+
return (_feature_store = feature.store) === null || _feature_store === void 0 ? void 0 : _feature_store.call(feature, conn, docsForFeature, delta);
|
|
741
|
+
})
|
|
639
742
|
];
|
|
640
743
|
case 1:
|
|
641
744
|
_state.sent();
|
|
@@ -645,110 +748,130 @@ function reconcile(conn, cfg, baseDir, dialect, pool, forcedPaths) {
|
|
|
645
748
|
}
|
|
646
749
|
});
|
|
647
750
|
};
|
|
648
|
-
|
|
649
|
-
_state.label =
|
|
650
|
-
case
|
|
651
|
-
if (!!(
|
|
751
|
+
_iterator1 = features[Symbol.iterator]();
|
|
752
|
+
_state.label = 21;
|
|
753
|
+
case 21:
|
|
754
|
+
if (!!(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done)) return [
|
|
652
755
|
3,
|
|
653
|
-
|
|
756
|
+
24
|
|
654
757
|
];
|
|
655
758
|
return [
|
|
656
759
|
5,
|
|
657
|
-
_ts_values(
|
|
760
|
+
_ts_values(_loop1())
|
|
658
761
|
];
|
|
659
|
-
case
|
|
762
|
+
case 22:
|
|
660
763
|
_state.sent();
|
|
661
|
-
_state.label =
|
|
662
|
-
case
|
|
663
|
-
|
|
764
|
+
_state.label = 23;
|
|
765
|
+
case 23:
|
|
766
|
+
_iteratorNormalCompletion1 = true;
|
|
664
767
|
return [
|
|
665
768
|
3,
|
|
666
|
-
|
|
769
|
+
21
|
|
667
770
|
];
|
|
668
|
-
case
|
|
771
|
+
case 24:
|
|
669
772
|
return [
|
|
670
773
|
3,
|
|
671
|
-
|
|
774
|
+
27
|
|
672
775
|
];
|
|
673
|
-
case
|
|
776
|
+
case 25:
|
|
674
777
|
err = _state.sent();
|
|
675
|
-
|
|
676
|
-
|
|
778
|
+
_didIteratorError1 = true;
|
|
779
|
+
_iteratorError1 = err;
|
|
677
780
|
return [
|
|
678
781
|
3,
|
|
679
|
-
|
|
782
|
+
27
|
|
680
783
|
];
|
|
681
|
-
case
|
|
784
|
+
case 26:
|
|
682
785
|
try {
|
|
683
|
-
if (!
|
|
684
|
-
|
|
786
|
+
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
787
|
+
_iterator1.return();
|
|
685
788
|
}
|
|
686
789
|
} finally{
|
|
687
|
-
if (
|
|
688
|
-
throw
|
|
790
|
+
if (_didIteratorError1) {
|
|
791
|
+
throw _iteratorError1;
|
|
689
792
|
}
|
|
690
793
|
}
|
|
691
794
|
return [
|
|
692
795
|
7
|
|
693
796
|
];
|
|
694
|
-
case
|
|
695
|
-
|
|
696
|
-
_state.label =
|
|
697
|
-
case
|
|
797
|
+
case 27:
|
|
798
|
+
_iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined;
|
|
799
|
+
_state.label = 28;
|
|
800
|
+
case 28:
|
|
698
801
|
_state.trys.push([
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
802
|
+
28,
|
|
803
|
+
33,
|
|
804
|
+
34,
|
|
805
|
+
35
|
|
703
806
|
]);
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
807
|
+
_loop2 = function() {
|
|
808
|
+
var feature;
|
|
809
|
+
return _ts_generator(this, function(_state) {
|
|
810
|
+
switch(_state.label){
|
|
811
|
+
case 0:
|
|
812
|
+
feature = _step2.value;
|
|
813
|
+
return [
|
|
814
|
+
4,
|
|
815
|
+
stages.time((0, _stagests.featureStage)(feature.name, 'after'), function() {
|
|
816
|
+
var _feature_afterReconcile;
|
|
817
|
+
return (_feature_afterReconcile = feature.afterReconcile) === null || _feature_afterReconcile === void 0 ? void 0 : _feature_afterReconcile.call(feature, conn, delta);
|
|
818
|
+
})
|
|
819
|
+
];
|
|
820
|
+
case 1:
|
|
821
|
+
_state.sent();
|
|
822
|
+
return [
|
|
823
|
+
2
|
|
824
|
+
];
|
|
825
|
+
}
|
|
826
|
+
});
|
|
827
|
+
};
|
|
828
|
+
_iterator2 = features[Symbol.iterator]();
|
|
829
|
+
_state.label = 29;
|
|
830
|
+
case 29:
|
|
831
|
+
if (!!(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done)) return [
|
|
708
832
|
3,
|
|
709
|
-
|
|
833
|
+
32
|
|
710
834
|
];
|
|
711
|
-
feature1 = _step4.value;
|
|
712
835
|
return [
|
|
713
|
-
|
|
714
|
-
(
|
|
836
|
+
5,
|
|
837
|
+
_ts_values(_loop2())
|
|
715
838
|
];
|
|
716
|
-
case
|
|
839
|
+
case 30:
|
|
717
840
|
_state.sent();
|
|
718
|
-
_state.label =
|
|
719
|
-
case
|
|
720
|
-
|
|
841
|
+
_state.label = 31;
|
|
842
|
+
case 31:
|
|
843
|
+
_iteratorNormalCompletion2 = true;
|
|
721
844
|
return [
|
|
722
845
|
3,
|
|
723
|
-
|
|
846
|
+
29
|
|
724
847
|
];
|
|
725
|
-
case
|
|
848
|
+
case 32:
|
|
726
849
|
return [
|
|
727
850
|
3,
|
|
728
|
-
|
|
851
|
+
35
|
|
729
852
|
];
|
|
730
|
-
case
|
|
853
|
+
case 33:
|
|
731
854
|
err = _state.sent();
|
|
732
|
-
|
|
733
|
-
|
|
855
|
+
_didIteratorError2 = true;
|
|
856
|
+
_iteratorError2 = err;
|
|
734
857
|
return [
|
|
735
858
|
3,
|
|
736
|
-
|
|
859
|
+
35
|
|
737
860
|
];
|
|
738
|
-
case
|
|
861
|
+
case 34:
|
|
739
862
|
try {
|
|
740
|
-
if (!
|
|
741
|
-
|
|
863
|
+
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
|
|
864
|
+
_iterator2.return();
|
|
742
865
|
}
|
|
743
866
|
} finally{
|
|
744
|
-
if (
|
|
745
|
-
throw
|
|
867
|
+
if (_didIteratorError2) {
|
|
868
|
+
throw _iteratorError2;
|
|
746
869
|
}
|
|
747
870
|
}
|
|
748
871
|
return [
|
|
749
872
|
7
|
|
750
873
|
];
|
|
751
|
-
case
|
|
874
|
+
case 35:
|
|
752
875
|
return [
|
|
753
876
|
2
|
|
754
877
|
];
|
|
@@ -760,13 +883,18 @@ function reconcile(conn, cfg, baseDir, dialect, pool, forcedPaths) {
|
|
|
760
883
|
case 5:
|
|
761
884
|
_state.sent();
|
|
762
885
|
durationMs = Date.now() - txStart;
|
|
886
|
+
// Every store, not just the ones with a PRAGMA to derive: connectUnlocked's lock-wait budget needs it too.
|
|
887
|
+
(0, _lockwaitts.recordLockWaitMs)(baseDir, durationMs);
|
|
763
888
|
if (!dialect.recordDuration) return [
|
|
764
889
|
3,
|
|
765
890
|
7
|
|
766
891
|
];
|
|
767
892
|
return [
|
|
768
893
|
4,
|
|
769
|
-
|
|
894
|
+
stages.time('meta', function() {
|
|
895
|
+
var _dialect_recordDuration;
|
|
896
|
+
return (_dialect_recordDuration = dialect.recordDuration) === null || _dialect_recordDuration === void 0 ? void 0 : _dialect_recordDuration.call(dialect, conn, durationMs);
|
|
897
|
+
})
|
|
770
898
|
];
|
|
771
899
|
case 6:
|
|
772
900
|
_state.sent();
|
|
@@ -776,7 +904,8 @@ function reconcile(conn, cfg, baseDir, dialect, pool, forcedPaths) {
|
|
|
776
904
|
2,
|
|
777
905
|
{
|
|
778
906
|
parsed: parsedDocs.length,
|
|
779
|
-
warnings: warnings
|
|
907
|
+
warnings: warnings,
|
|
908
|
+
stages: stages.take(elapsed(), durationMs, workerParseMs)
|
|
780
909
|
}
|
|
781
910
|
];
|
|
782
911
|
}
|