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.
- package/dist/cjs/index.d.cts +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +3 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/store/duckdb/fieldStats.js +87 -10
- package/dist/cjs/store/duckdb/fieldStats.js.map +1 -1
- package/dist/cjs/store/duckdb/open.js +3 -2
- package/dist/cjs/store/duckdb/open.js.map +1 -1
- package/dist/cjs/store/duckdb/reconcile.d.cts +2 -6
- package/dist/cjs/store/duckdb/reconcile.d.ts +2 -6
- package/dist/cjs/store/duckdb/reconcile.js +41 -581
- package/dist/cjs/store/duckdb/reconcile.js.map +1 -1
- package/dist/cjs/store/duckdb/store.js +5 -3
- package/dist/cjs/store/duckdb/store.js.map +1 -1
- package/dist/cjs/store/index.d.cts +1 -0
- package/dist/cjs/store/index.d.ts +1 -0
- package/dist/cjs/store/index.js +4 -0
- package/dist/cjs/store/index.js.map +1 -1
- package/dist/cjs/store/reconcile.d.cts +6 -0
- package/dist/cjs/store/reconcile.d.ts +6 -0
- package/dist/cjs/store/reconcile.js +750 -0
- package/dist/cjs/store/reconcile.js.map +1 -0
- package/dist/cjs/store/shared.d.cts +1 -0
- package/dist/cjs/store/shared.d.ts +1 -0
- package/dist/cjs/store/shared.js +37 -0
- package/dist/cjs/store/shared.js.map +1 -1
- package/dist/cjs/store/sqlite/connection.js +1 -1
- package/dist/cjs/store/sqlite/connection.js.map +1 -1
- package/dist/cjs/store/sqlite/open.js +33 -11
- package/dist/cjs/store/sqlite/open.js.map +1 -1
- package/dist/cjs/store/sqlite/reconcile.d.cts +5 -10
- package/dist/cjs/store/sqlite/reconcile.d.ts +5 -10
- package/dist/cjs/store/sqlite/reconcile.js +48 -840
- package/dist/cjs/store/sqlite/reconcile.js.map +1 -1
- package/dist/cjs/store/sqlite/signature.d.cts +6 -0
- package/dist/cjs/store/sqlite/signature.d.ts +6 -0
- package/dist/cjs/store/sqlite/signature.js +380 -0
- package/dist/cjs/store/sqlite/signature.js.map +1 -0
- package/dist/cjs/store/sqlite/store.js +5 -3
- package/dist/cjs/store/sqlite/store.js.map +1 -1
- package/dist/cjs/store/transaction.d.cts +2 -1
- package/dist/cjs/store/transaction.d.ts +2 -1
- package/dist/cjs/store/transaction.js +16 -6
- package/dist/cjs/store/transaction.js.map +1 -1
- package/dist/cjs/store/turso/connection.js +1 -1
- package/dist/cjs/store/turso/connection.js.map +1 -1
- package/dist/cjs/store/turso/open.d.cts +2 -0
- package/dist/cjs/store/turso/open.d.ts +2 -0
- package/dist/cjs/store/turso/open.js +115 -57
- package/dist/cjs/store/turso/open.js.map +1 -1
- package/dist/cjs/store/turso/reconcile.d.cts +3 -6
- package/dist/cjs/store/turso/reconcile.d.ts +3 -6
- package/dist/cjs/store/turso/reconcile.js +159 -596
- package/dist/cjs/store/turso/reconcile.js.map +1 -1
- package/dist/cjs/store/turso/store.js +3 -2
- package/dist/cjs/store/turso/store.js.map +1 -1
- package/dist/cjs/store/types.d.cts +12 -2
- package/dist/cjs/store/types.d.ts +12 -2
- package/dist/cjs/store/types.js +14 -0
- package/dist/cjs/store/types.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/store/duckdb/fieldStats.js +32 -19
- package/dist/esm/store/duckdb/fieldStats.js.map +1 -1
- package/dist/esm/store/duckdb/open.js +3 -2
- package/dist/esm/store/duckdb/open.js.map +1 -1
- package/dist/esm/store/duckdb/reconcile.d.ts +2 -6
- package/dist/esm/store/duckdb/reconcile.js +20 -117
- package/dist/esm/store/duckdb/reconcile.js.map +1 -1
- package/dist/esm/store/duckdb/store.js +5 -3
- package/dist/esm/store/duckdb/store.js.map +1 -1
- package/dist/esm/store/index.d.ts +1 -0
- package/dist/esm/store/index.js +1 -0
- package/dist/esm/store/index.js.map +1 -1
- package/dist/esm/store/reconcile.d.ts +6 -0
- package/dist/esm/store/reconcile.js +130 -0
- package/dist/esm/store/reconcile.js.map +1 -0
- package/dist/esm/store/shared.d.ts +1 -0
- package/dist/esm/store/shared.js +9 -0
- package/dist/esm/store/shared.js.map +1 -1
- package/dist/esm/store/sqlite/connection.js +2 -2
- package/dist/esm/store/sqlite/connection.js.map +1 -1
- package/dist/esm/store/sqlite/open.js +28 -8
- package/dist/esm/store/sqlite/open.js.map +1 -1
- package/dist/esm/store/sqlite/reconcile.d.ts +5 -10
- package/dist/esm/store/sqlite/reconcile.js +31 -198
- package/dist/esm/store/sqlite/reconcile.js.map +1 -1
- package/dist/esm/store/sqlite/signature.d.ts +6 -0
- package/dist/esm/store/sqlite/signature.js +58 -0
- package/dist/esm/store/sqlite/signature.js.map +1 -0
- package/dist/esm/store/sqlite/store.js +5 -3
- package/dist/esm/store/sqlite/store.js.map +1 -1
- package/dist/esm/store/transaction.d.ts +2 -1
- package/dist/esm/store/transaction.js +11 -6
- package/dist/esm/store/transaction.js.map +1 -1
- package/dist/esm/store/turso/connection.js +2 -2
- package/dist/esm/store/turso/connection.js.map +1 -1
- package/dist/esm/store/turso/open.d.ts +2 -0
- package/dist/esm/store/turso/open.js +14 -4
- package/dist/esm/store/turso/open.js.map +1 -1
- package/dist/esm/store/turso/reconcile.d.ts +3 -6
- package/dist/esm/store/turso/reconcile.js +31 -132
- package/dist/esm/store/turso/reconcile.js.map +1 -1
- package/dist/esm/store/turso/store.js +3 -2
- package/dist/esm/store/turso/store.js.map +1 -1
- package/dist/esm/store/types.d.ts +12 -2
- package/dist/esm/store/types.js +12 -1
- package/dist/esm/store/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,42 +9,21 @@ function _export(target, all) {
|
|
|
9
9
|
});
|
|
10
10
|
}
|
|
11
11
|
_export(exports, {
|
|
12
|
-
get
|
|
13
|
-
return
|
|
12
|
+
get INSERT_CONTENT_SQL () {
|
|
13
|
+
return INSERT_CONTENT_SQL;
|
|
14
14
|
},
|
|
15
|
-
get
|
|
16
|
-
return
|
|
15
|
+
get contentRow () {
|
|
16
|
+
return contentRow;
|
|
17
17
|
},
|
|
18
|
-
get
|
|
19
|
-
return
|
|
20
|
-
},
|
|
21
|
-
get reconcile () {
|
|
22
|
-
return reconcile;
|
|
23
|
-
},
|
|
24
|
-
get signatureDiff () {
|
|
25
|
-
return signatureDiff;
|
|
18
|
+
get sqliteDialect () {
|
|
19
|
+
return sqliteDialect;
|
|
26
20
|
}
|
|
27
21
|
});
|
|
28
22
|
var _indexts = require("../../config/index.js");
|
|
29
23
|
var _errorsts = require("../../errors.js");
|
|
30
|
-
var _indexts1 = require("../../features/index.js");
|
|
31
|
-
var _progressts = require("../../output/progress.js");
|
|
32
|
-
var _indexts2 = require("../../scan/index.js");
|
|
33
|
-
var _reparsets = require("../../scan/reparse.js");
|
|
34
24
|
var _segmentts = require("../../text/segment.js");
|
|
35
25
|
var _sharedts = require("../shared.js");
|
|
36
26
|
var _transactionts = require("../transaction.js");
|
|
37
|
-
function _array_like_to_array(arr, len) {
|
|
38
|
-
if (len == null || len > arr.length) len = arr.length;
|
|
39
|
-
for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
|
|
40
|
-
return arr2;
|
|
41
|
-
}
|
|
42
|
-
function _array_with_holes(arr) {
|
|
43
|
-
if (Array.isArray(arr)) return arr;
|
|
44
|
-
}
|
|
45
|
-
function _array_without_holes(arr) {
|
|
46
|
-
if (Array.isArray(arr)) return _array_like_to_array(arr);
|
|
47
|
-
}
|
|
48
27
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
49
28
|
try {
|
|
50
29
|
var info = gen[key](arg);
|
|
@@ -71,47 +50,6 @@ function _async_to_generator(fn) {
|
|
|
71
50
|
});
|
|
72
51
|
};
|
|
73
52
|
}
|
|
74
|
-
function _iterable_to_array(iter) {
|
|
75
|
-
if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) {
|
|
76
|
-
return Array.from(iter);
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
function _iterable_to_array_limit(arr, i) {
|
|
80
|
-
var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"];
|
|
81
|
-
if (_i == null) return;
|
|
82
|
-
var _arr = [];
|
|
83
|
-
var _n = true;
|
|
84
|
-
var _d = false;
|
|
85
|
-
var _s, _e;
|
|
86
|
-
try {
|
|
87
|
-
for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){
|
|
88
|
-
_arr.push(_s.value);
|
|
89
|
-
if (i && _arr.length === i) break;
|
|
90
|
-
}
|
|
91
|
-
} catch (err) {
|
|
92
|
-
_d = true;
|
|
93
|
-
_e = err;
|
|
94
|
-
} finally{
|
|
95
|
-
try {
|
|
96
|
-
if (!_n && _i["return"] != null) _i["return"]();
|
|
97
|
-
} finally{
|
|
98
|
-
if (_d) throw _e;
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
return _arr;
|
|
102
|
-
}
|
|
103
|
-
function _non_iterable_rest() {
|
|
104
|
-
throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
105
|
-
}
|
|
106
|
-
function _non_iterable_spread() {
|
|
107
|
-
throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
|
|
108
|
-
}
|
|
109
|
-
function _sliced_to_array(arr, i) {
|
|
110
|
-
return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();
|
|
111
|
-
}
|
|
112
|
-
function _to_consumable_array(arr) {
|
|
113
|
-
return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
|
|
114
|
-
}
|
|
115
53
|
function _ts_generator(thisArg, body) {
|
|
116
54
|
var f, y, t, _ = {
|
|
117
55
|
label: 0,
|
|
@@ -211,50 +149,11 @@ function _ts_generator(thisArg, body) {
|
|
|
211
149
|
};
|
|
212
150
|
}
|
|
213
151
|
}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
if (m) {
|
|
217
|
-
return m.call(o);
|
|
218
|
-
}
|
|
219
|
-
if (o && typeof o.length === "number") {
|
|
220
|
-
return {
|
|
221
|
-
next: function() {
|
|
222
|
-
if (o && i >= o.length) {
|
|
223
|
-
o = void 0;
|
|
224
|
-
}
|
|
225
|
-
return {
|
|
226
|
-
value: o && o[i++],
|
|
227
|
-
done: !o
|
|
228
|
-
};
|
|
229
|
-
}
|
|
230
|
-
};
|
|
231
|
-
}
|
|
232
|
-
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
|
|
233
|
-
}
|
|
234
|
-
function _unsupported_iterable_to_array(o, minLen) {
|
|
235
|
-
if (!o) return;
|
|
236
|
-
if (typeof o === "string") return _array_like_to_array(o, minLen);
|
|
237
|
-
var n = Object.prototype.toString.call(o).slice(8, -1);
|
|
238
|
-
if (n === "Object" && o.constructor) n = o.constructor.name;
|
|
239
|
-
if (n === "Map" || n === "Set") return Array.from(n);
|
|
240
|
-
if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
|
|
241
|
-
}
|
|
242
|
-
// Feature-owned columns (`_rank`) must stay out of the upsert: a reparse would null the last
|
|
243
|
-
// computed value on every touch, not just the reconciles that recompute it.
|
|
244
|
-
var CORE_FRONTMATTER_COLUMNS = new Set([
|
|
245
|
-
'path',
|
|
246
|
-
'_mtime',
|
|
247
|
-
'_ctime',
|
|
248
|
-
'_size',
|
|
249
|
-
'_parse_error'
|
|
250
|
-
]);
|
|
152
|
+
// This store's dialect (types.ts's ReconcileDialect) for the shared orchestration in
|
|
153
|
+
// store/reconcile.ts. content is FTS5-virtual with "_seg" sidecars for lexical.ts.
|
|
251
154
|
// SQLite's compile-time SQLITE_MAX_COLUMN, default 2000 (https://www.sqlite.org/limits.html).
|
|
252
155
|
var MAX_FRONTMATTER_COLUMNS = 2000;
|
|
253
|
-
// Shared by reconcile() and the tokenize-only rebuild in open(), so both prepare the same
|
|
254
|
-
// literal instead of two copies drifting apart.
|
|
255
156
|
var INSERT_CONTENT_SQL = 'INSERT INTO content (rowid, title, summary, text, "path", title_seg, summary_seg, text_seg) VALUES ((SELECT rowid FROM frontmatter WHERE "path" = ?), ?, ?, ?, ?, ?, ?, ?)';
|
|
256
|
-
// A single content row's param tuple, matching INSERT_CONTENT_SQL's placeholder order.
|
|
257
|
-
// Assumes the frontmatter row for doc.relPath already exists (rowid subquery).
|
|
258
157
|
function contentRow(doc, segmenting) {
|
|
259
158
|
return [
|
|
260
159
|
doc.relPath,
|
|
@@ -267,758 +166,67 @@ function contentRow(doc, segmenting) {
|
|
|
267
166
|
segmenting ? (0, _segmentts.segmentField)(doc.search.text) : ''
|
|
268
167
|
];
|
|
269
168
|
}
|
|
270
|
-
function
|
|
169
|
+
function reconcileContent(conn, touched, docs, _delta, cfg) {
|
|
271
170
|
return _async_to_generator(function() {
|
|
272
|
-
var
|
|
171
|
+
var segmenting;
|
|
273
172
|
return _ts_generator(this, function(_state) {
|
|
274
173
|
switch(_state.label){
|
|
275
174
|
case 0:
|
|
276
|
-
|
|
277
|
-
currentSet = new Set(files.map(function(f) {
|
|
278
|
-
return f.relPath;
|
|
279
|
-
}));
|
|
280
|
-
return [
|
|
281
|
-
4,
|
|
282
|
-
conn.prepare('SELECT "path", "_mtime", "_size" FROM frontmatter')
|
|
283
|
-
];
|
|
284
|
-
case 1:
|
|
285
|
-
existingStmt = _state.sent();
|
|
286
|
-
return [
|
|
287
|
-
4,
|
|
288
|
-
existingStmt.all()
|
|
289
|
-
];
|
|
290
|
-
case 2:
|
|
291
|
-
existingRows = _state.sent();
|
|
292
|
-
existing = new Map(existingRows.map(function(r) {
|
|
293
|
-
return [
|
|
294
|
-
r.path,
|
|
295
|
-
r
|
|
296
|
-
];
|
|
297
|
-
}));
|
|
298
|
-
vanished = existingRows.filter(function(r) {
|
|
299
|
-
return !currentSet.has(r.path);
|
|
300
|
-
}).map(function(r) {
|
|
301
|
-
return r.path;
|
|
302
|
-
});
|
|
303
|
-
toReparse = files.filter(function(f) {
|
|
304
|
-
var row = existing.get(f.relPath);
|
|
305
|
-
return !row || row._mtime !== f.mtimeMs || row._size !== f.size;
|
|
306
|
-
});
|
|
307
|
-
if (vanished.length === 0 && toReparse.length === 0) return [
|
|
308
|
-
2,
|
|
309
|
-
{
|
|
310
|
-
parsed: 0,
|
|
311
|
-
warnings: []
|
|
312
|
-
}
|
|
313
|
-
];
|
|
314
|
-
features = (0, _indexts1.activeFeatures)(cfg);
|
|
315
|
-
return [
|
|
316
|
-
4,
|
|
317
|
-
(0, _sharedts.getColumns)(conn)
|
|
318
|
-
];
|
|
319
|
-
case 3:
|
|
320
|
-
seenColumns = _state.sent();
|
|
321
|
-
// Bulk reparses (a sync, a cold build) are the long silences a query can hit; short
|
|
322
|
-
// reconciles stay silent (progress() has a threshold).
|
|
323
|
-
report = (0, _progressts.progress)('reparsing files', toReparse.length);
|
|
324
|
-
return [
|
|
325
|
-
4,
|
|
326
|
-
(0, _reparsets.reparseFiles)(toReparse, features, cfg, seenColumns, report.tick)
|
|
327
|
-
];
|
|
328
|
-
case 4:
|
|
329
|
-
_ref = _state.sent(), parsedDocs = _ref.docs, warnings = _ref.warnings, newColumns = _ref.newColumns;
|
|
330
|
-
report.finish();
|
|
331
|
-
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
332
|
-
try {
|
|
333
|
-
for(_iterator = newColumns[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
334
|
-
col = _step.value;
|
|
335
|
-
seenColumns.add(col);
|
|
336
|
-
}
|
|
337
|
-
} catch (err) {
|
|
338
|
-
_didIteratorError = true;
|
|
339
|
-
_iteratorError = err;
|
|
340
|
-
} finally{
|
|
341
|
-
try {
|
|
342
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
343
|
-
_iterator.return();
|
|
344
|
-
}
|
|
345
|
-
} finally{
|
|
346
|
-
if (_didIteratorError) {
|
|
347
|
-
throw _iteratorError;
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
allColumns = _to_consumable_array(seenColumns);
|
|
352
|
-
// Fence before ALTERing: SQLite's own failure past this point is a raw
|
|
353
|
-
// "too many columns on sqlite_altertab_frontmatter" with no indication of the boundary or the levers.
|
|
354
|
-
if (allColumns.length > MAX_FRONTMATTER_COLUMNS) {
|
|
355
|
-
throw new _errorsts.SenseError('COLUMN_LIMIT', "frontmatter would need ".concat(allColumns.length, " columns, crossing SQLite's compile-time SQLITE_MAX_COLUMN limit (default ").concat(MAX_FRONTMATTER_COLUMNS, "; see https://www.sqlite.org/limits.html). Narrow the presets' include globs so fewer/other files are indexed, or fix whatever is generating unbounded frontmatter keys."));
|
|
356
|
-
}
|
|
357
|
-
// Columns the frontmatter upsert actually writes: core + parsed frontmatter keys, never a
|
|
358
|
-
// feature-owned reserved column (see CORE_FRONTMATTER_COLUMNS above).
|
|
359
|
-
writableColumns = allColumns.filter(function(c) {
|
|
360
|
-
return CORE_FRONTMATTER_COLUMNS.has(c) || !_indexts2.RESERVED_COLUMNS.has(c);
|
|
361
|
-
});
|
|
362
|
-
// ON CONFLICT UPDATE (not OR REPLACE) keeps the row's rowid stable across reparses --
|
|
363
|
-
// content rows are coupled to that rowid below.
|
|
364
|
-
insertSql = "INSERT INTO frontmatter (".concat(writableColumns.map(_sharedts.quoteIdent).join(', '), ") VALUES (").concat(writableColumns.map(function() {
|
|
365
|
-
return '?';
|
|
366
|
-
}).join(', '), ') ON CONFLICT("path") DO UPDATE SET ').concat(writableColumns.filter(function(c) {
|
|
367
|
-
return c !== 'path';
|
|
368
|
-
}).map(function(c) {
|
|
369
|
-
return "".concat((0, _sharedts.quoteIdent)(c), " = excluded.").concat((0, _sharedts.quoteIdent)(c));
|
|
370
|
-
}).join(', '));
|
|
371
|
-
added = toReparse.filter(function(f) {
|
|
372
|
-
return !existing.has(f.relPath);
|
|
373
|
-
}).map(function(f) {
|
|
374
|
-
return f.relPath;
|
|
375
|
-
});
|
|
376
|
-
delta = {
|
|
377
|
-
files: files,
|
|
378
|
-
reparsed: parsedDocs.map(function(d) {
|
|
379
|
-
return d.relPath;
|
|
380
|
-
}),
|
|
381
|
-
added: added,
|
|
382
|
-
vanished: vanished
|
|
383
|
-
};
|
|
384
|
-
addedSet = new Set(added);
|
|
385
|
-
reparsedExisting = parsedDocs.map(function(d) {
|
|
386
|
-
return d.relPath;
|
|
387
|
-
}).filter(function(p) {
|
|
388
|
-
return !addedSet.has(p);
|
|
389
|
-
});
|
|
390
|
-
txStart = Date.now();
|
|
391
|
-
return [
|
|
392
|
-
4,
|
|
393
|
-
(0, _transactionts.withTransaction)(conn, function() {
|
|
394
|
-
return _async_to_generator(function() {
|
|
395
|
-
var _feature_remove, _feature_afterReconcile, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, col, err, rows, segmenting, 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;
|
|
396
|
-
return _ts_generator(this, function(_state) {
|
|
397
|
-
switch(_state.label){
|
|
398
|
-
case 0:
|
|
399
|
-
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
400
|
-
_state.label = 1;
|
|
401
|
-
case 1:
|
|
402
|
-
_state.trys.push([
|
|
403
|
-
1,
|
|
404
|
-
6,
|
|
405
|
-
7,
|
|
406
|
-
8
|
|
407
|
-
]);
|
|
408
|
-
_iterator = newColumns[Symbol.iterator]();
|
|
409
|
-
_state.label = 2;
|
|
410
|
-
case 2:
|
|
411
|
-
if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
|
|
412
|
-
3,
|
|
413
|
-
5
|
|
414
|
-
];
|
|
415
|
-
col = _step.value;
|
|
416
|
-
return [
|
|
417
|
-
4,
|
|
418
|
-
conn.exec("ALTER TABLE frontmatter ADD COLUMN ".concat((0, _sharedts.quoteIdent)(col)))
|
|
419
|
-
];
|
|
420
|
-
case 3:
|
|
421
|
-
_state.sent();
|
|
422
|
-
_state.label = 4;
|
|
423
|
-
case 4:
|
|
424
|
-
_iteratorNormalCompletion = true;
|
|
425
|
-
return [
|
|
426
|
-
3,
|
|
427
|
-
2
|
|
428
|
-
];
|
|
429
|
-
case 5:
|
|
430
|
-
return [
|
|
431
|
-
3,
|
|
432
|
-
8
|
|
433
|
-
];
|
|
434
|
-
case 6:
|
|
435
|
-
err = _state.sent();
|
|
436
|
-
_didIteratorError = true;
|
|
437
|
-
_iteratorError = err;
|
|
438
|
-
return [
|
|
439
|
-
3,
|
|
440
|
-
8
|
|
441
|
-
];
|
|
442
|
-
case 7:
|
|
443
|
-
try {
|
|
444
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
445
|
-
_iterator.return();
|
|
446
|
-
}
|
|
447
|
-
} finally{
|
|
448
|
-
if (_didIteratorError) {
|
|
449
|
-
throw _iteratorError;
|
|
450
|
-
}
|
|
451
|
-
}
|
|
452
|
-
return [
|
|
453
|
-
7
|
|
454
|
-
];
|
|
455
|
-
case 8:
|
|
456
|
-
if (!(vanished.length > 0)) return [
|
|
457
|
-
3,
|
|
458
|
-
10
|
|
459
|
-
];
|
|
460
|
-
return [
|
|
461
|
-
4,
|
|
462
|
-
conn.runBatch('DELETE FROM content WHERE rowid = (SELECT rowid FROM frontmatter WHERE "path" = ?)', vanished.map(function(p) {
|
|
463
|
-
return [
|
|
464
|
-
p
|
|
465
|
-
];
|
|
466
|
-
}))
|
|
467
|
-
];
|
|
468
|
-
case 9:
|
|
469
|
-
_state.sent();
|
|
470
|
-
_state.label = 10;
|
|
471
|
-
case 10:
|
|
472
|
-
if (!(reparsedExisting.length > 0)) return [
|
|
473
|
-
3,
|
|
474
|
-
12
|
|
475
|
-
];
|
|
476
|
-
// FTS5 has no upsert, so delete-before-insert, coupled to the frontmatter rowid (indexed via
|
|
477
|
-
// its PRIMARY KEY) rather than the UNINDEXED `path` column, which a per-row DELETE would scan to find.
|
|
478
|
-
return [
|
|
479
|
-
4,
|
|
480
|
-
conn.runBatch('DELETE FROM content WHERE rowid = (SELECT rowid FROM frontmatter WHERE "path" = ?)', reparsedExisting.map(function(p) {
|
|
481
|
-
return [
|
|
482
|
-
p
|
|
483
|
-
];
|
|
484
|
-
}))
|
|
485
|
-
];
|
|
486
|
-
case 11:
|
|
487
|
-
_state.sent();
|
|
488
|
-
_state.label = 12;
|
|
489
|
-
case 12:
|
|
490
|
-
if (!(parsedDocs.length > 0)) return [
|
|
491
|
-
3,
|
|
492
|
-
15
|
|
493
|
-
];
|
|
494
|
-
rows = parsedDocs.map(function(doc) {
|
|
495
|
-
return writableColumns.map(function(col) {
|
|
496
|
-
var _doc_data_col;
|
|
497
|
-
if (col === 'path') return doc.relPath;
|
|
498
|
-
if (col === '_mtime') return doc.mtimeMs;
|
|
499
|
-
if (col === '_ctime') return doc.ctimeMs;
|
|
500
|
-
if (col === '_size') return doc.size;
|
|
501
|
-
// Written per parse, unlike _rank, which a feature pass owns and the upsert skips.
|
|
502
|
-
if (col === '_parse_error') return doc.parseError;
|
|
503
|
-
return (_doc_data_col = doc.data[col]) !== null && _doc_data_col !== void 0 ? _doc_data_col : null;
|
|
504
|
-
});
|
|
505
|
-
});
|
|
506
|
-
return [
|
|
507
|
-
4,
|
|
508
|
-
conn.runBatch(insertSql, rows)
|
|
509
|
-
];
|
|
510
|
-
case 13:
|
|
511
|
-
_state.sent();
|
|
512
|
-
// A non-default tokenizer means the tree has chosen its own scheme; a phrase query over
|
|
513
|
-
// grapheme runs would be nonsense against trigram, so the sidecars stay empty.
|
|
514
|
-
segmenting = (0, _indexts.contentTokenize)(cfg) === undefined;
|
|
515
|
-
return [
|
|
516
|
-
4,
|
|
517
|
-
conn.runBatch(INSERT_CONTENT_SQL, parsedDocs.map(function(doc) {
|
|
518
|
-
return contentRow(doc, segmenting);
|
|
519
|
-
}))
|
|
520
|
-
];
|
|
521
|
-
case 14:
|
|
522
|
-
_state.sent();
|
|
523
|
-
_state.label = 15;
|
|
524
|
-
case 15:
|
|
525
|
-
if (!(vanished.length > 0)) return [
|
|
526
|
-
3,
|
|
527
|
-
17
|
|
528
|
-
];
|
|
529
|
-
return [
|
|
530
|
-
4,
|
|
531
|
-
conn.runBatch('DELETE FROM frontmatter WHERE "path" = ?', vanished.map(function(p) {
|
|
532
|
-
return [
|
|
533
|
-
p
|
|
534
|
-
];
|
|
535
|
-
}))
|
|
536
|
-
];
|
|
537
|
-
case 16:
|
|
538
|
-
_state.sent();
|
|
539
|
-
_state.label = 17;
|
|
540
|
-
case 17:
|
|
541
|
-
// A preset edit forces a full rebuild, so an unchanged doc's coverage is already correct;
|
|
542
|
-
// new docs have nothing to clear, which keeps cold builds linear.
|
|
543
|
-
presetTouched = _to_consumable_array(vanished).concat(_to_consumable_array(reparsedExisting));
|
|
544
|
-
if (!(presetTouched.length > 0)) return [
|
|
545
|
-
3,
|
|
546
|
-
19
|
|
547
|
-
];
|
|
548
|
-
return [
|
|
549
|
-
4,
|
|
550
|
-
conn.runBatch('DELETE FROM preset_files WHERE "path" = ?', presetTouched.map(function(p) {
|
|
551
|
-
return [
|
|
552
|
-
p
|
|
553
|
-
];
|
|
554
|
-
}))
|
|
555
|
-
];
|
|
556
|
-
case 18:
|
|
557
|
-
_state.sent();
|
|
558
|
-
_state.label = 19;
|
|
559
|
-
case 19:
|
|
560
|
-
presetRows = [];
|
|
561
|
-
_iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined, _iteratorNormalCompletion2 = true, _didIteratorError2 = false, _iteratorError2 = undefined;
|
|
562
|
-
try {
|
|
563
|
-
for(_iterator1 = parsedDocs[Symbol.iterator](); !(_iteratorNormalCompletion2 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion2 = true){
|
|
564
|
-
doc = _step1.value;
|
|
565
|
-
try {
|
|
566
|
-
for(_iterator2 = doc.presets[Symbol.iterator](); !(_iteratorNormalCompletion1 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion1 = true){
|
|
567
|
-
presetName = _step2.value;
|
|
568
|
-
presetRows.push([
|
|
569
|
-
doc.relPath,
|
|
570
|
-
presetName
|
|
571
|
-
]);
|
|
572
|
-
}
|
|
573
|
-
} catch (err) {
|
|
574
|
-
_didIteratorError1 = true;
|
|
575
|
-
_iteratorError1 = err;
|
|
576
|
-
} finally{
|
|
577
|
-
try {
|
|
578
|
-
if (!_iteratorNormalCompletion1 && _iterator2.return != null) {
|
|
579
|
-
_iterator2.return();
|
|
580
|
-
}
|
|
581
|
-
} finally{
|
|
582
|
-
if (_didIteratorError1) {
|
|
583
|
-
throw _iteratorError1;
|
|
584
|
-
}
|
|
585
|
-
}
|
|
586
|
-
}
|
|
587
|
-
}
|
|
588
|
-
} catch (err) {
|
|
589
|
-
_didIteratorError2 = true;
|
|
590
|
-
_iteratorError2 = err;
|
|
591
|
-
} finally{
|
|
592
|
-
try {
|
|
593
|
-
if (!_iteratorNormalCompletion2 && _iterator1.return != null) {
|
|
594
|
-
_iterator1.return();
|
|
595
|
-
}
|
|
596
|
-
} finally{
|
|
597
|
-
if (_didIteratorError2) {
|
|
598
|
-
throw _iteratorError2;
|
|
599
|
-
}
|
|
600
|
-
}
|
|
601
|
-
}
|
|
602
|
-
if (!(presetRows.length > 0)) return [
|
|
603
|
-
3,
|
|
604
|
-
21
|
|
605
|
-
];
|
|
606
|
-
return [
|
|
607
|
-
4,
|
|
608
|
-
conn.runBatch('INSERT INTO preset_files ("path", preset) VALUES (?, ?)', presetRows)
|
|
609
|
-
];
|
|
610
|
-
case 20:
|
|
611
|
-
_state.sent();
|
|
612
|
-
_state.label = 21;
|
|
613
|
-
case 21:
|
|
614
|
-
removedPaths = _to_consumable_array(vanished).concat(_to_consumable_array(reparsedExisting));
|
|
615
|
-
_iteratorNormalCompletion3 = true, _didIteratorError3 = false, _iteratorError3 = undefined;
|
|
616
|
-
if (!(removedPaths.length > 0)) return [
|
|
617
|
-
3,
|
|
618
|
-
29
|
|
619
|
-
];
|
|
620
|
-
_state.label = 22;
|
|
621
|
-
case 22:
|
|
622
|
-
_state.trys.push([
|
|
623
|
-
22,
|
|
624
|
-
27,
|
|
625
|
-
28,
|
|
626
|
-
29
|
|
627
|
-
]);
|
|
628
|
-
_iterator3 = features[Symbol.iterator]();
|
|
629
|
-
_state.label = 23;
|
|
630
|
-
case 23:
|
|
631
|
-
if (!!(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done)) return [
|
|
632
|
-
3,
|
|
633
|
-
26
|
|
634
|
-
];
|
|
635
|
-
feature = _step3.value;
|
|
636
|
-
return [
|
|
637
|
-
4,
|
|
638
|
-
(_feature_remove = feature.remove) === null || _feature_remove === void 0 ? void 0 : _feature_remove.call(feature, conn, removedPaths, delta)
|
|
639
|
-
];
|
|
640
|
-
case 24:
|
|
641
|
-
_state.sent();
|
|
642
|
-
_state.label = 25;
|
|
643
|
-
case 25:
|
|
644
|
-
_iteratorNormalCompletion3 = true;
|
|
645
|
-
return [
|
|
646
|
-
3,
|
|
647
|
-
23
|
|
648
|
-
];
|
|
649
|
-
case 26:
|
|
650
|
-
return [
|
|
651
|
-
3,
|
|
652
|
-
29
|
|
653
|
-
];
|
|
654
|
-
case 27:
|
|
655
|
-
err = _state.sent();
|
|
656
|
-
_didIteratorError3 = true;
|
|
657
|
-
_iteratorError3 = err;
|
|
658
|
-
return [
|
|
659
|
-
3,
|
|
660
|
-
29
|
|
661
|
-
];
|
|
662
|
-
case 28:
|
|
663
|
-
try {
|
|
664
|
-
if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
|
|
665
|
-
_iterator3.return();
|
|
666
|
-
}
|
|
667
|
-
} finally{
|
|
668
|
-
if (_didIteratorError3) {
|
|
669
|
-
throw _iteratorError3;
|
|
670
|
-
}
|
|
671
|
-
}
|
|
672
|
-
return [
|
|
673
|
-
7
|
|
674
|
-
];
|
|
675
|
-
case 29:
|
|
676
|
-
_iteratorNormalCompletion4 = true, _didIteratorError4 = false, _iteratorError4 = undefined;
|
|
677
|
-
_state.label = 30;
|
|
678
|
-
case 30:
|
|
679
|
-
_state.trys.push([
|
|
680
|
-
30,
|
|
681
|
-
35,
|
|
682
|
-
36,
|
|
683
|
-
37
|
|
684
|
-
]);
|
|
685
|
-
_loop = function() {
|
|
686
|
-
var feature, _feature_store, docsForFeature;
|
|
687
|
-
return _ts_generator(this, function(_state) {
|
|
688
|
-
switch(_state.label){
|
|
689
|
-
case 0:
|
|
690
|
-
feature = _step4.value;
|
|
691
|
-
docsForFeature = parsedDocs.map(function(doc) {
|
|
692
|
-
return {
|
|
693
|
-
path: doc.relPath,
|
|
694
|
-
extracted: doc.extracted[feature.name]
|
|
695
|
-
};
|
|
696
|
-
});
|
|
697
|
-
return [
|
|
698
|
-
4,
|
|
699
|
-
(_feature_store = feature.store) === null || _feature_store === void 0 ? void 0 : _feature_store.call(feature, conn, docsForFeature, delta)
|
|
700
|
-
];
|
|
701
|
-
case 1:
|
|
702
|
-
_state.sent();
|
|
703
|
-
return [
|
|
704
|
-
2
|
|
705
|
-
];
|
|
706
|
-
}
|
|
707
|
-
});
|
|
708
|
-
};
|
|
709
|
-
_iterator4 = features[Symbol.iterator]();
|
|
710
|
-
_state.label = 31;
|
|
711
|
-
case 31:
|
|
712
|
-
if (!!(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done)) return [
|
|
713
|
-
3,
|
|
714
|
-
34
|
|
715
|
-
];
|
|
716
|
-
return [
|
|
717
|
-
5,
|
|
718
|
-
_ts_values(_loop())
|
|
719
|
-
];
|
|
720
|
-
case 32:
|
|
721
|
-
_state.sent();
|
|
722
|
-
_state.label = 33;
|
|
723
|
-
case 33:
|
|
724
|
-
_iteratorNormalCompletion4 = true;
|
|
725
|
-
return [
|
|
726
|
-
3,
|
|
727
|
-
31
|
|
728
|
-
];
|
|
729
|
-
case 34:
|
|
730
|
-
return [
|
|
731
|
-
3,
|
|
732
|
-
37
|
|
733
|
-
];
|
|
734
|
-
case 35:
|
|
735
|
-
err = _state.sent();
|
|
736
|
-
_didIteratorError4 = true;
|
|
737
|
-
_iteratorError4 = err;
|
|
738
|
-
return [
|
|
739
|
-
3,
|
|
740
|
-
37
|
|
741
|
-
];
|
|
742
|
-
case 36:
|
|
743
|
-
try {
|
|
744
|
-
if (!_iteratorNormalCompletion4 && _iterator4.return != null) {
|
|
745
|
-
_iterator4.return();
|
|
746
|
-
}
|
|
747
|
-
} finally{
|
|
748
|
-
if (_didIteratorError4) {
|
|
749
|
-
throw _iteratorError4;
|
|
750
|
-
}
|
|
751
|
-
}
|
|
752
|
-
return [
|
|
753
|
-
7
|
|
754
|
-
];
|
|
755
|
-
case 37:
|
|
756
|
-
_iteratorNormalCompletion5 = true, _didIteratorError5 = false, _iteratorError5 = undefined;
|
|
757
|
-
_state.label = 38;
|
|
758
|
-
case 38:
|
|
759
|
-
_state.trys.push([
|
|
760
|
-
38,
|
|
761
|
-
43,
|
|
762
|
-
44,
|
|
763
|
-
45
|
|
764
|
-
]);
|
|
765
|
-
_iterator5 = features[Symbol.iterator]();
|
|
766
|
-
_state.label = 39;
|
|
767
|
-
case 39:
|
|
768
|
-
if (!!(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done)) return [
|
|
769
|
-
3,
|
|
770
|
-
42
|
|
771
|
-
];
|
|
772
|
-
feature1 = _step5.value;
|
|
773
|
-
return [
|
|
774
|
-
4,
|
|
775
|
-
(_feature_afterReconcile = feature1.afterReconcile) === null || _feature_afterReconcile === void 0 ? void 0 : _feature_afterReconcile.call(feature1, conn, delta)
|
|
776
|
-
];
|
|
777
|
-
case 40:
|
|
778
|
-
_state.sent();
|
|
779
|
-
_state.label = 41;
|
|
780
|
-
case 41:
|
|
781
|
-
_iteratorNormalCompletion5 = true;
|
|
782
|
-
return [
|
|
783
|
-
3,
|
|
784
|
-
39
|
|
785
|
-
];
|
|
786
|
-
case 42:
|
|
787
|
-
return [
|
|
788
|
-
3,
|
|
789
|
-
45
|
|
790
|
-
];
|
|
791
|
-
case 43:
|
|
792
|
-
err = _state.sent();
|
|
793
|
-
_didIteratorError5 = true;
|
|
794
|
-
_iteratorError5 = err;
|
|
795
|
-
return [
|
|
796
|
-
3,
|
|
797
|
-
45
|
|
798
|
-
];
|
|
799
|
-
case 44:
|
|
800
|
-
try {
|
|
801
|
-
if (!_iteratorNormalCompletion5 && _iterator5.return != null) {
|
|
802
|
-
_iterator5.return();
|
|
803
|
-
}
|
|
804
|
-
} finally{
|
|
805
|
-
if (_didIteratorError5) {
|
|
806
|
-
throw _iteratorError5;
|
|
807
|
-
}
|
|
808
|
-
}
|
|
809
|
-
return [
|
|
810
|
-
7
|
|
811
|
-
];
|
|
812
|
-
case 45:
|
|
813
|
-
return [
|
|
814
|
-
2
|
|
815
|
-
];
|
|
816
|
-
}
|
|
817
|
-
});
|
|
818
|
-
})();
|
|
819
|
-
})
|
|
820
|
-
];
|
|
821
|
-
case 5:
|
|
822
|
-
_state.sent();
|
|
823
|
-
// Reconcile's own write-transaction duration, for open()'s derived busy_timeout (F):
|
|
824
|
-
// keep the observed max so a big watcher reconcile's lock hold is what the next open bounds its wait against.
|
|
825
|
-
durationMs = Date.now() - txStart;
|
|
826
|
-
return [
|
|
827
|
-
4,
|
|
828
|
-
(0, _sharedts.getMeta)(conn, 'reconcile_max_ms')
|
|
829
|
-
];
|
|
830
|
-
case 6:
|
|
831
|
-
prevRaw = _state.sent();
|
|
832
|
-
// -1, not 0, so a genuinely 0ms first reconcile (sub-millisecond, common on a tiny tree)
|
|
833
|
-
// still gets recorded instead of losing to the "nothing recorded yet" default.
|
|
834
|
-
prevMax = prevRaw === null ? -1 : Number(prevRaw);
|
|
835
|
-
if (!(durationMs > prevMax)) return [
|
|
175
|
+
if (!(touched.length > 0)) return [
|
|
836
176
|
3,
|
|
837
|
-
|
|
177
|
+
2
|
|
838
178
|
];
|
|
839
179
|
return [
|
|
840
180
|
4,
|
|
841
|
-
(
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
case 8:
|
|
847
|
-
return [
|
|
848
|
-
2,
|
|
849
|
-
{
|
|
850
|
-
parsed: parsedDocs.length,
|
|
851
|
-
warnings: warnings
|
|
852
|
-
}
|
|
853
|
-
];
|
|
854
|
-
}
|
|
855
|
-
});
|
|
856
|
-
})();
|
|
857
|
-
}
|
|
858
|
-
function changedSignatureKeys(before, after) {
|
|
859
|
-
var keyOf = function keyOf(part) {
|
|
860
|
-
return part.startsWith('preset:') ? part.split(':').slice(0, 2).join(':') : part.split(':')[0];
|
|
861
|
-
};
|
|
862
|
-
var parse = function parse(sig) {
|
|
863
|
-
return new Map(sig.split('|').map(function(part) {
|
|
864
|
-
return [
|
|
865
|
-
keyOf(part),
|
|
866
|
-
part
|
|
867
|
-
];
|
|
868
|
-
}));
|
|
869
|
-
};
|
|
870
|
-
var a = parse(before);
|
|
871
|
-
var b = parse(after);
|
|
872
|
-
var changed = new Set();
|
|
873
|
-
var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
874
|
-
try {
|
|
875
|
-
for(var _iterator = b[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
876
|
-
var _step_value = _sliced_to_array(_step.value, 2), key = _step_value[0], val = _step_value[1];
|
|
877
|
-
if (a.get(key) !== val) changed.add(key);
|
|
878
|
-
}
|
|
879
|
-
} catch (err) {
|
|
880
|
-
_didIteratorError = true;
|
|
881
|
-
_iteratorError = err;
|
|
882
|
-
} finally{
|
|
883
|
-
try {
|
|
884
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
885
|
-
_iterator.return();
|
|
886
|
-
}
|
|
887
|
-
} finally{
|
|
888
|
-
if (_didIteratorError) {
|
|
889
|
-
throw _iteratorError;
|
|
890
|
-
}
|
|
891
|
-
}
|
|
892
|
-
}
|
|
893
|
-
var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;
|
|
894
|
-
try {
|
|
895
|
-
for(var _iterator1 = a.keys()[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){
|
|
896
|
-
var key1 = _step1.value;
|
|
897
|
-
if (!b.has(key1)) changed.add(key1);
|
|
898
|
-
}
|
|
899
|
-
} catch (err) {
|
|
900
|
-
_didIteratorError1 = true;
|
|
901
|
-
_iteratorError1 = err;
|
|
902
|
-
} finally{
|
|
903
|
-
try {
|
|
904
|
-
if (!_iteratorNormalCompletion1 && _iterator1.return != null) {
|
|
905
|
-
_iterator1.return();
|
|
906
|
-
}
|
|
907
|
-
} finally{
|
|
908
|
-
if (_didIteratorError1) {
|
|
909
|
-
throw _iteratorError1;
|
|
910
|
-
}
|
|
911
|
-
}
|
|
912
|
-
}
|
|
913
|
-
return changed;
|
|
914
|
-
}
|
|
915
|
-
function embedIdentityAdopted(before, after) {
|
|
916
|
-
var embedPart = function embedPart(sig) {
|
|
917
|
-
return sig.split('|').find(function(p) {
|
|
918
|
-
return p.startsWith('embed:');
|
|
919
|
-
});
|
|
920
|
-
};
|
|
921
|
-
var b = embedPart(before);
|
|
922
|
-
var a = embedPart(after);
|
|
923
|
-
if (b === undefined || a === undefined) return false;
|
|
924
|
-
var at = a.indexOf('@');
|
|
925
|
-
return b.indexOf('@') === -1 && at !== -1 && a.slice(0, at) === b;
|
|
926
|
-
}
|
|
927
|
-
function signatureDiff(before, after) {
|
|
928
|
-
var changed = changedSignatureKeys(before, after);
|
|
929
|
-
var label = function label(key) {
|
|
930
|
-
return key === 'embed' ? 'embed settings' : key === 'tokenize' ? 'content tokenizer' : key.startsWith('preset:') ? 'preset "'.concat(key.slice(7), '"') : 'features';
|
|
931
|
-
};
|
|
932
|
-
return changed.size === 0 ? 'features' : _to_consumable_array(changed).map(label).join(', ');
|
|
933
|
-
}
|
|
934
|
-
function rebuildContentTable(conn, cfg, baseDir) {
|
|
935
|
-
return _async_to_generator(function() {
|
|
936
|
-
var stmt, known, _, files, segmenting, warnings, rows, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, file, _warnings, _parseFile, doc, fileWarnings;
|
|
937
|
-
return _ts_generator(this, function(_state) {
|
|
938
|
-
switch(_state.label){
|
|
939
|
-
case 0:
|
|
940
|
-
return [
|
|
941
|
-
4,
|
|
942
|
-
conn.prepare('SELECT "path" FROM frontmatter')
|
|
181
|
+
conn.runBatch('DELETE FROM content WHERE rowid = (SELECT rowid FROM frontmatter WHERE "path" = ?)', touched.map(function(p) {
|
|
182
|
+
return [
|
|
183
|
+
p
|
|
184
|
+
];
|
|
185
|
+
}))
|
|
943
186
|
];
|
|
944
187
|
case 1:
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
return [
|
|
948
|
-
4,
|
|
949
|
-
stmt.all()
|
|
950
|
-
];
|
|
188
|
+
_state.sent();
|
|
189
|
+
_state.label = 2;
|
|
951
190
|
case 2:
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
files = (0, _indexts2.listFiles)(cfg, baseDir).filter(function(f) {
|
|
959
|
-
return known.has(f.relPath);
|
|
960
|
-
});
|
|
191
|
+
if (!(docs.length > 0)) return [
|
|
192
|
+
3,
|
|
193
|
+
4
|
|
194
|
+
];
|
|
195
|
+
// A non-default tokenizer means the tree has chosen its own scheme; a phrase query over
|
|
196
|
+
// grapheme runs would be nonsense against trigram, so the sidecars stay empty.
|
|
961
197
|
segmenting = (0, _indexts.contentTokenize)(cfg) === undefined;
|
|
962
|
-
warnings = [];
|
|
963
|
-
rows = [];
|
|
964
|
-
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
965
|
-
try {
|
|
966
|
-
for(_iterator = files[Symbol.iterator](); !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){
|
|
967
|
-
file = _step.value;
|
|
968
|
-
;
|
|
969
|
-
_parseFile = (0, _indexts2.parseFile)(file), doc = _parseFile.doc, fileWarnings = _parseFile.warnings;
|
|
970
|
-
(_warnings = warnings).push.apply(_warnings, _to_consumable_array(fileWarnings));
|
|
971
|
-
rows.push(contentRow(doc, segmenting));
|
|
972
|
-
}
|
|
973
|
-
} catch (err) {
|
|
974
|
-
_didIteratorError = true;
|
|
975
|
-
_iteratorError = err;
|
|
976
|
-
} finally{
|
|
977
|
-
try {
|
|
978
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
979
|
-
_iterator.return();
|
|
980
|
-
}
|
|
981
|
-
} finally{
|
|
982
|
-
if (_didIteratorError) {
|
|
983
|
-
throw _iteratorError;
|
|
984
|
-
}
|
|
985
|
-
}
|
|
986
|
-
}
|
|
987
198
|
return [
|
|
988
199
|
4,
|
|
989
|
-
(
|
|
990
|
-
return
|
|
991
|
-
|
|
992
|
-
switch(_state.label){
|
|
993
|
-
case 0:
|
|
994
|
-
if (!(rows.length > 0)) return [
|
|
995
|
-
3,
|
|
996
|
-
2
|
|
997
|
-
];
|
|
998
|
-
return [
|
|
999
|
-
4,
|
|
1000
|
-
conn.runBatch(INSERT_CONTENT_SQL, rows)
|
|
1001
|
-
];
|
|
1002
|
-
case 1:
|
|
1003
|
-
_state.sent();
|
|
1004
|
-
_state.label = 2;
|
|
1005
|
-
case 2:
|
|
1006
|
-
return [
|
|
1007
|
-
2
|
|
1008
|
-
];
|
|
1009
|
-
}
|
|
1010
|
-
});
|
|
1011
|
-
})();
|
|
1012
|
-
})
|
|
200
|
+
conn.runBatch(INSERT_CONTENT_SQL, docs.map(function(doc) {
|
|
201
|
+
return contentRow(doc, segmenting);
|
|
202
|
+
}))
|
|
1013
203
|
];
|
|
1014
204
|
case 3:
|
|
1015
205
|
_state.sent();
|
|
206
|
+
_state.label = 4;
|
|
207
|
+
case 4:
|
|
1016
208
|
return [
|
|
1017
|
-
2
|
|
1018
|
-
warnings
|
|
209
|
+
2
|
|
1019
210
|
];
|
|
1020
211
|
}
|
|
1021
212
|
});
|
|
1022
213
|
})();
|
|
1023
214
|
}
|
|
215
|
+
var sqliteDialect = {
|
|
216
|
+
beginMode: function beginMode() {
|
|
217
|
+
return _transactionts.BEGIN_WRITE;
|
|
218
|
+
},
|
|
219
|
+
checkColumnLimit: function checkColumnLimit(count) {
|
|
220
|
+
// Fence before ALTERing: SQLite's own failure past this point is a raw
|
|
221
|
+
// "too many columns on sqlite_altertab_frontmatter" with no indication of the boundary or the levers.
|
|
222
|
+
if (count > MAX_FRONTMATTER_COLUMNS) {
|
|
223
|
+
throw new _errorsts.SenseError('COLUMN_LIMIT', "frontmatter would need ".concat(count, " columns, crossing SQLite's compile-time SQLITE_MAX_COLUMN limit (default ").concat(MAX_FRONTMATTER_COLUMNS, "; see https://www.sqlite.org/limits.html). Narrow the presets' include globs so fewer/other files are indexed, or fix whatever is generating unbounded frontmatter keys."));
|
|
224
|
+
}
|
|
225
|
+
},
|
|
226
|
+
columnTypeSuffix: function columnTypeSuffix() {
|
|
227
|
+
return '';
|
|
228
|
+
},
|
|
229
|
+
reconcileContent: reconcileContent,
|
|
230
|
+
recordDuration: _sharedts.recordReconcileDuration
|
|
231
|
+
};
|
|
1024
232
|
/* 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; }
|