sensemaking 0.18.2 → 0.18.4
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/cli/status.js +32 -31
- package/dist/cjs/cli/status.js.map +1 -1
- package/dist/cjs/commands/map.js +50 -67
- package/dist/cjs/commands/map.js.map +1 -1
- package/dist/cjs/config/access.d.cts +2 -2
- package/dist/cjs/config/access.d.ts +2 -2
- package/dist/cjs/config/access.js.map +1 -1
- package/dist/cjs/config/index.d.cts +1 -1
- package/dist/cjs/config/index.d.ts +1 -1
- package/dist/cjs/config/index.js.map +1 -1
- package/dist/cjs/config/load.js +3 -2
- package/dist/cjs/config/load.js.map +1 -1
- package/dist/cjs/config/types.d.cts +2 -1
- package/dist/cjs/config/types.d.ts +2 -1
- package/dist/cjs/config/types.js.map +1 -1
- package/dist/cjs/config/validate.js +3 -0
- package/dist/cjs/config/validate.js.map +1 -1
- package/dist/cjs/embed/identity.js +3 -2
- package/dist/cjs/embed/identity.js.map +1 -1
- package/dist/cjs/embed/store.js +3 -3
- package/dist/cjs/embed/store.js.map +1 -1
- package/dist/cjs/index.d.cts +2 -2
- package/dist/cjs/index.d.ts +2 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lib/atomic-write.d.cts +1 -0
- package/dist/cjs/lib/atomic-write.d.ts +1 -0
- package/dist/cjs/lib/atomic-write.js +26 -0
- package/dist/cjs/lib/atomic-write.js.map +1 -0
- package/dist/cjs/store/duckdb/batch.js +3 -2
- package/dist/cjs/store/duckdb/batch.js.map +1 -1
- package/dist/cjs/store/duckdb/connection.js +12 -0
- package/dist/cjs/store/duckdb/connection.js.map +1 -1
- package/dist/cjs/store/duckdb/fieldStats.d.cts +2 -0
- package/dist/cjs/store/duckdb/fieldStats.d.ts +2 -0
- package/dist/cjs/store/duckdb/fieldStats.js +219 -0
- package/dist/cjs/store/duckdb/fieldStats.js.map +1 -0
- package/dist/cjs/store/duckdb/lexical.js +16 -9
- package/dist/cjs/store/duckdb/lexical.js.map +1 -1
- package/dist/cjs/store/duckdb/native.d.cts +0 -1
- package/dist/cjs/store/duckdb/native.d.ts +0 -1
- package/dist/cjs/store/duckdb/native.js +7 -336
- package/dist/cjs/store/duckdb/native.js.map +1 -1
- package/dist/cjs/store/duckdb/sql-functions.js +1 -1
- package/dist/cjs/store/duckdb/sql-functions.js.map +1 -1
- package/dist/cjs/store/duckdb/store.js +16 -1
- package/dist/cjs/store/duckdb/store.js.map +1 -1
- package/dist/cjs/store/duckdb/vectors.js +5 -17
- package/dist/cjs/store/duckdb/vectors.js.map +1 -1
- package/dist/cjs/store/index.js +6 -0
- package/dist/cjs/store/index.js.map +1 -1
- package/dist/cjs/store/native.d.cts +7 -0
- package/dist/cjs/store/native.d.ts +7 -0
- package/dist/cjs/store/native.js +350 -0
- package/dist/cjs/store/native.js.map +1 -0
- package/dist/cjs/store/sqlite/fieldStats.d.cts +2 -0
- package/dist/cjs/store/sqlite/fieldStats.d.ts +2 -0
- package/dist/cjs/store/sqlite/fieldStats.js +201 -0
- package/dist/cjs/store/sqlite/fieldStats.js.map +1 -0
- package/dist/cjs/store/sqlite/open.js +82 -29
- package/dist/cjs/store/sqlite/open.js.map +1 -1
- package/dist/cjs/store/sqlite/store.js +32 -4
- package/dist/cjs/store/sqlite/store.js.map +1 -1
- package/dist/cjs/store/sqlite/vectors.d.cts +0 -5
- package/dist/cjs/store/sqlite/vectors.d.ts +0 -5
- package/dist/cjs/store/sqlite/vectors.js +5 -71
- package/dist/cjs/store/sqlite/vectors.js.map +1 -1
- package/dist/cjs/store/turso/connection.d.cts +3 -0
- package/dist/cjs/store/turso/connection.d.ts +3 -0
- package/dist/cjs/store/turso/connection.js +529 -0
- package/dist/cjs/store/turso/connection.js.map +1 -0
- package/dist/cjs/store/turso/fieldStats.d.cts +2 -0
- package/dist/cjs/store/turso/fieldStats.d.ts +2 -0
- package/dist/cjs/store/turso/fieldStats.js +201 -0
- package/dist/cjs/store/turso/fieldStats.js.map +1 -0
- package/dist/cjs/store/turso/native.d.cts +2 -0
- package/dist/cjs/store/turso/native.d.ts +2 -0
- package/dist/cjs/store/turso/native.js +31 -0
- package/dist/cjs/store/turso/native.js.map +1 -0
- package/dist/cjs/store/turso/open.d.cts +12 -0
- package/dist/cjs/store/turso/open.d.ts +12 -0
- package/dist/cjs/store/turso/open.js +500 -0
- package/dist/cjs/store/turso/open.js.map +1 -0
- package/dist/cjs/store/turso/reconcile.d.cts +6 -0
- package/dist/cjs/store/turso/reconcile.d.ts +6 -0
- package/dist/cjs/store/turso/reconcile.js +793 -0
- package/dist/cjs/store/turso/reconcile.js.map +1 -0
- package/dist/cjs/store/turso/store.d.cts +5 -0
- package/dist/cjs/store/turso/store.d.ts +5 -0
- package/dist/cjs/store/turso/store.js +609 -0
- package/dist/cjs/store/turso/store.js.map +1 -0
- package/dist/cjs/store/types.d.cts +9 -1
- package/dist/cjs/store/types.d.ts +9 -1
- package/dist/cjs/store/types.js +0 -7
- package/dist/cjs/store/types.js.map +1 -1
- package/dist/cjs/store/vectors.d.cts +9 -0
- package/dist/cjs/store/vectors.d.ts +9 -0
- package/dist/cjs/store/vectors.js +215 -0
- package/dist/cjs/store/vectors.js.map +1 -0
- package/dist/esm/cli/status.js +5 -7
- package/dist/esm/cli/status.js.map +1 -1
- package/dist/esm/commands/map.js +7 -19
- package/dist/esm/commands/map.js.map +1 -1
- package/dist/esm/config/access.d.ts +2 -2
- package/dist/esm/config/access.js.map +1 -1
- package/dist/esm/config/index.d.ts +1 -1
- package/dist/esm/config/index.js.map +1 -1
- package/dist/esm/config/load.js +4 -3
- package/dist/esm/config/load.js.map +1 -1
- package/dist/esm/config/types.d.ts +2 -1
- package/dist/esm/config/types.js.map +1 -1
- package/dist/esm/config/validate.js +3 -0
- package/dist/esm/config/validate.js.map +1 -1
- package/dist/esm/embed/identity.js +4 -3
- package/dist/esm/embed/identity.js.map +1 -1
- package/dist/esm/embed/store.js +3 -3
- package/dist/esm/embed/store.js.map +1 -1
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lib/atomic-write.d.ts +1 -0
- package/dist/esm/lib/atomic-write.js +17 -0
- package/dist/esm/lib/atomic-write.js.map +1 -0
- package/dist/esm/store/duckdb/batch.js +3 -2
- package/dist/esm/store/duckdb/batch.js.map +1 -1
- package/dist/esm/store/duckdb/connection.js +12 -0
- package/dist/esm/store/duckdb/connection.js.map +1 -1
- package/dist/esm/store/duckdb/fieldStats.d.ts +2 -0
- package/dist/esm/store/duckdb/fieldStats.js +39 -0
- package/dist/esm/store/duckdb/fieldStats.js.map +1 -0
- package/dist/esm/store/duckdb/lexical.js +19 -9
- package/dist/esm/store/duckdb/lexical.js.map +1 -1
- package/dist/esm/store/duckdb/native.d.ts +0 -1
- package/dist/esm/store/duckdb/native.js +7 -84
- package/dist/esm/store/duckdb/native.js.map +1 -1
- package/dist/esm/store/duckdb/sql-functions.js +1 -1
- package/dist/esm/store/duckdb/sql-functions.js.map +1 -1
- package/dist/esm/store/duckdb/store.js +8 -5
- package/dist/esm/store/duckdb/store.js.map +1 -1
- package/dist/esm/store/duckdb/vectors.js +2 -12
- package/dist/esm/store/duckdb/vectors.js.map +1 -1
- package/dist/esm/store/index.js +6 -0
- package/dist/esm/store/index.js.map +1 -1
- package/dist/esm/store/native.d.ts +7 -0
- package/dist/esm/store/native.js +83 -0
- package/dist/esm/store/native.js.map +1 -0
- package/dist/esm/store/sqlite/fieldStats.d.ts +2 -0
- package/dist/esm/store/sqlite/fieldStats.js +25 -0
- package/dist/esm/store/sqlite/fieldStats.js.map +1 -0
- package/dist/esm/store/sqlite/open.js +21 -8
- package/dist/esm/store/sqlite/open.js.map +1 -1
- package/dist/esm/store/sqlite/store.js +14 -1
- package/dist/esm/store/sqlite/store.js.map +1 -1
- package/dist/esm/store/sqlite/vectors.d.ts +0 -5
- package/dist/esm/store/sqlite/vectors.js +2 -22
- package/dist/esm/store/sqlite/vectors.js.map +1 -1
- package/dist/esm/store/turso/connection.d.ts +3 -0
- package/dist/esm/store/turso/connection.js +52 -0
- package/dist/esm/store/turso/connection.js.map +1 -0
- package/dist/esm/store/turso/fieldStats.d.ts +2 -0
- package/dist/esm/store/turso/fieldStats.js +24 -0
- package/dist/esm/store/turso/fieldStats.js.map +1 -0
- package/dist/esm/store/turso/native.d.ts +2 -0
- package/dist/esm/store/turso/native.js +19 -0
- package/dist/esm/store/turso/native.js.map +1 -0
- package/dist/esm/store/turso/open.d.ts +12 -0
- package/dist/esm/store/turso/open.js +113 -0
- package/dist/esm/store/turso/open.js.map +1 -0
- package/dist/esm/store/turso/reconcile.d.ts +6 -0
- package/dist/esm/store/turso/reconcile.js +158 -0
- package/dist/esm/store/turso/reconcile.js.map +1 -0
- package/dist/esm/store/turso/store.d.ts +5 -0
- package/dist/esm/store/turso/store.js +93 -0
- package/dist/esm/store/turso/store.js.map +1 -0
- package/dist/esm/store/types.d.ts +9 -1
- package/dist/esm/store/types.js +0 -7
- package/dist/esm/store/types.js.map +1 -1
- package/dist/esm/store/vectors.d.ts +9 -0
- package/dist/esm/store/vectors.js +26 -0
- package/dist/esm/store/vectors.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get DB_FILENAME () {
|
|
13
|
+
return DB_FILENAME;
|
|
14
|
+
},
|
|
15
|
+
get SCHEMA_VERSION () {
|
|
16
|
+
return SCHEMA_VERSION;
|
|
17
|
+
},
|
|
18
|
+
get openTurso () {
|
|
19
|
+
return openTurso;
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
var _nodefs = require("node:fs");
|
|
23
|
+
var _nodepath = require("node:path");
|
|
24
|
+
var _indexts = require("../../config/index.js");
|
|
25
|
+
var _errorsts = require("../../errors.js");
|
|
26
|
+
var _indexts1 = require("../../features/index.js");
|
|
27
|
+
var _sharedts = require("../shared.js");
|
|
28
|
+
var _opents = require("../sqlite/open.js");
|
|
29
|
+
var _connectionts = require("./connection.js");
|
|
30
|
+
var _nativets = require("./native.js");
|
|
31
|
+
var _reconcilets = require("./reconcile.js");
|
|
32
|
+
var _storets = require("./store.js");
|
|
33
|
+
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
|
|
34
|
+
try {
|
|
35
|
+
var info = gen[key](arg);
|
|
36
|
+
var value = info.value;
|
|
37
|
+
} catch (error) {
|
|
38
|
+
reject(error);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (info.done) resolve(value);
|
|
42
|
+
else Promise.resolve(value).then(_next, _throw);
|
|
43
|
+
}
|
|
44
|
+
function _async_to_generator(fn) {
|
|
45
|
+
return function() {
|
|
46
|
+
var self = this, args = arguments;
|
|
47
|
+
return new Promise(function(resolve, reject) {
|
|
48
|
+
var gen = fn.apply(self, args);
|
|
49
|
+
function _next(value) {
|
|
50
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
|
|
51
|
+
}
|
|
52
|
+
function _throw(err) {
|
|
53
|
+
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
|
|
54
|
+
}
|
|
55
|
+
_next(undefined);
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
function _instanceof(left, right) {
|
|
60
|
+
"@swc/helpers - instanceof";
|
|
61
|
+
if (right != null && typeof Symbol !== "undefined" && right[Symbol.hasInstance]) {
|
|
62
|
+
return !!right[Symbol.hasInstance](left);
|
|
63
|
+
} else return left instanceof right;
|
|
64
|
+
}
|
|
65
|
+
function _ts_generator(thisArg, body) {
|
|
66
|
+
var f, y, t, _ = {
|
|
67
|
+
label: 0,
|
|
68
|
+
sent: function() {
|
|
69
|
+
if (t[0] & 1) throw t[1];
|
|
70
|
+
return t[1];
|
|
71
|
+
},
|
|
72
|
+
trys: [],
|
|
73
|
+
ops: []
|
|
74
|
+
}, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype), d = Object.defineProperty;
|
|
75
|
+
return d(g, "next", {
|
|
76
|
+
value: verb(0)
|
|
77
|
+
}), d(g, "throw", {
|
|
78
|
+
value: verb(1)
|
|
79
|
+
}), d(g, "return", {
|
|
80
|
+
value: verb(2)
|
|
81
|
+
}), typeof Symbol === "function" && d(g, Symbol.iterator, {
|
|
82
|
+
value: function() {
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
}), g;
|
|
86
|
+
function verb(n) {
|
|
87
|
+
return function(v) {
|
|
88
|
+
return step([
|
|
89
|
+
n,
|
|
90
|
+
v
|
|
91
|
+
]);
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
function step(op) {
|
|
95
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
96
|
+
while(g && (g = 0, op[0] && (_ = 0)), _)try {
|
|
97
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
98
|
+
if (y = 0, t) op = [
|
|
99
|
+
op[0] & 2,
|
|
100
|
+
t.value
|
|
101
|
+
];
|
|
102
|
+
switch(op[0]){
|
|
103
|
+
case 0:
|
|
104
|
+
case 1:
|
|
105
|
+
t = op;
|
|
106
|
+
break;
|
|
107
|
+
case 4:
|
|
108
|
+
_.label++;
|
|
109
|
+
return {
|
|
110
|
+
value: op[1],
|
|
111
|
+
done: false
|
|
112
|
+
};
|
|
113
|
+
case 5:
|
|
114
|
+
_.label++;
|
|
115
|
+
y = op[1];
|
|
116
|
+
op = [
|
|
117
|
+
0
|
|
118
|
+
];
|
|
119
|
+
continue;
|
|
120
|
+
case 7:
|
|
121
|
+
op = _.ops.pop();
|
|
122
|
+
_.trys.pop();
|
|
123
|
+
continue;
|
|
124
|
+
default:
|
|
125
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
|
|
126
|
+
_ = 0;
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
|
|
130
|
+
_.label = op[1];
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
if (op[0] === 6 && _.label < t[1]) {
|
|
134
|
+
_.label = t[1];
|
|
135
|
+
t = op;
|
|
136
|
+
break;
|
|
137
|
+
}
|
|
138
|
+
if (t && _.label < t[2]) {
|
|
139
|
+
_.label = t[2];
|
|
140
|
+
_.ops.push(op);
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
if (t[2]) _.ops.pop();
|
|
144
|
+
_.trys.pop();
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
op = body.call(thisArg, _);
|
|
148
|
+
} catch (e) {
|
|
149
|
+
op = [
|
|
150
|
+
6,
|
|
151
|
+
e
|
|
152
|
+
];
|
|
153
|
+
y = 0;
|
|
154
|
+
} finally{
|
|
155
|
+
f = t = 0;
|
|
156
|
+
}
|
|
157
|
+
if (op[0] & 5) throw op[1];
|
|
158
|
+
return {
|
|
159
|
+
value: op[0] ? op[1] : void 0,
|
|
160
|
+
done: true
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
var DB_FILENAME = 'cache.turso.db';
|
|
165
|
+
var SCHEMA_VERSION = '1';
|
|
166
|
+
// content is a plain table (not FTS-virtual): phase 1 creates no FTS index at all -- that is
|
|
167
|
+
// phase 2's job (see the plan). Untyped ALTER TABLE ADD COLUMN, like sqlite -- turso's dialect
|
|
168
|
+
// accepts it with no declared type (spike-confirmed), unlike duckdb which requires VARIANT.
|
|
169
|
+
function ensureSchema(conn, cfg) {
|
|
170
|
+
return _async_to_generator(function() {
|
|
171
|
+
var _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, feature, err;
|
|
172
|
+
return _ts_generator(this, function(_state) {
|
|
173
|
+
switch(_state.label){
|
|
174
|
+
case 0:
|
|
175
|
+
return [
|
|
176
|
+
4,
|
|
177
|
+
conn.exec('CREATE TABLE IF NOT EXISTS frontmatter ("path" TEXT PRIMARY KEY, "_mtime" REAL, "_ctime" REAL, "_size" INTEGER, "_parse_error" TEXT)')
|
|
178
|
+
];
|
|
179
|
+
case 1:
|
|
180
|
+
_state.sent();
|
|
181
|
+
return [
|
|
182
|
+
4,
|
|
183
|
+
conn.exec('CREATE TABLE IF NOT EXISTS content ("path" TEXT PRIMARY KEY, title TEXT, summary TEXT, text TEXT)')
|
|
184
|
+
];
|
|
185
|
+
case 2:
|
|
186
|
+
_state.sent();
|
|
187
|
+
return [
|
|
188
|
+
4,
|
|
189
|
+
conn.exec('CREATE TABLE IF NOT EXISTS preset_files ("path" TEXT, preset TEXT, PRIMARY KEY ("path", preset))')
|
|
190
|
+
];
|
|
191
|
+
case 3:
|
|
192
|
+
_state.sent();
|
|
193
|
+
return [
|
|
194
|
+
4,
|
|
195
|
+
conn.exec('CREATE INDEX IF NOT EXISTS preset_files_preset ON preset_files(preset)')
|
|
196
|
+
];
|
|
197
|
+
case 4:
|
|
198
|
+
_state.sent();
|
|
199
|
+
_iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
|
|
200
|
+
_state.label = 5;
|
|
201
|
+
case 5:
|
|
202
|
+
_state.trys.push([
|
|
203
|
+
5,
|
|
204
|
+
10,
|
|
205
|
+
11,
|
|
206
|
+
12
|
|
207
|
+
]);
|
|
208
|
+
_iterator = (0, _indexts1.activeFeatures)(cfg)[Symbol.iterator]();
|
|
209
|
+
_state.label = 6;
|
|
210
|
+
case 6:
|
|
211
|
+
if (!!(_iteratorNormalCompletion = (_step = _iterator.next()).done)) return [
|
|
212
|
+
3,
|
|
213
|
+
9
|
|
214
|
+
];
|
|
215
|
+
feature = _step.value;
|
|
216
|
+
return [
|
|
217
|
+
4,
|
|
218
|
+
feature.schema(conn)
|
|
219
|
+
];
|
|
220
|
+
case 7:
|
|
221
|
+
_state.sent();
|
|
222
|
+
_state.label = 8;
|
|
223
|
+
case 8:
|
|
224
|
+
_iteratorNormalCompletion = true;
|
|
225
|
+
return [
|
|
226
|
+
3,
|
|
227
|
+
6
|
|
228
|
+
];
|
|
229
|
+
case 9:
|
|
230
|
+
return [
|
|
231
|
+
3,
|
|
232
|
+
12
|
|
233
|
+
];
|
|
234
|
+
case 10:
|
|
235
|
+
err = _state.sent();
|
|
236
|
+
_didIteratorError = true;
|
|
237
|
+
_iteratorError = err;
|
|
238
|
+
return [
|
|
239
|
+
3,
|
|
240
|
+
12
|
|
241
|
+
];
|
|
242
|
+
case 11:
|
|
243
|
+
try {
|
|
244
|
+
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
|
245
|
+
_iterator.return();
|
|
246
|
+
}
|
|
247
|
+
} finally{
|
|
248
|
+
if (_didIteratorError) {
|
|
249
|
+
throw _iteratorError;
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
return [
|
|
253
|
+
7
|
|
254
|
+
];
|
|
255
|
+
case 12:
|
|
256
|
+
return [
|
|
257
|
+
4,
|
|
258
|
+
(0, _sharedts.getMeta)(conn, 'schema_version')
|
|
259
|
+
];
|
|
260
|
+
case 13:
|
|
261
|
+
if (!(_state.sent() === null)) return [
|
|
262
|
+
3,
|
|
263
|
+
15
|
|
264
|
+
];
|
|
265
|
+
return [
|
|
266
|
+
4,
|
|
267
|
+
(0, _sharedts.setMeta)(conn, 'schema_version', SCHEMA_VERSION)
|
|
268
|
+
];
|
|
269
|
+
case 14:
|
|
270
|
+
_state.sent();
|
|
271
|
+
_state.label = 15;
|
|
272
|
+
case 15:
|
|
273
|
+
return [
|
|
274
|
+
4,
|
|
275
|
+
(0, _sharedts.getMeta)(conn, 'features')
|
|
276
|
+
];
|
|
277
|
+
case 16:
|
|
278
|
+
if (!(_state.sent() === null)) return [
|
|
279
|
+
3,
|
|
280
|
+
18
|
|
281
|
+
];
|
|
282
|
+
return [
|
|
283
|
+
4,
|
|
284
|
+
(0, _sharedts.setMeta)(conn, 'features', (0, _indexts.featureSignature)(cfg, _indexts1.FEATURES))
|
|
285
|
+
];
|
|
286
|
+
case 17:
|
|
287
|
+
_state.sent();
|
|
288
|
+
_state.label = 18;
|
|
289
|
+
case 18:
|
|
290
|
+
return [
|
|
291
|
+
2
|
|
292
|
+
];
|
|
293
|
+
}
|
|
294
|
+
});
|
|
295
|
+
})();
|
|
296
|
+
}
|
|
297
|
+
function connect(cfg) {
|
|
298
|
+
return _async_to_generator(function() {
|
|
299
|
+
var stateDir, dbPath, turso, err, db, err1, closed, _ref, conn, version, features, wantFeatures, reason, recordedMaxMs, _ref1, parsed, warnings, err2;
|
|
300
|
+
return _ts_generator(this, function(_state) {
|
|
301
|
+
switch(_state.label){
|
|
302
|
+
case 0:
|
|
303
|
+
stateDir = (0, _nodepath.join)(cfg.baseDir, _indexts.STATE_DIR);
|
|
304
|
+
(0, _nodefs.mkdirSync)(stateDir, {
|
|
305
|
+
recursive: true
|
|
306
|
+
});
|
|
307
|
+
dbPath = (0, _nodepath.join)(stateDir, DB_FILENAME);
|
|
308
|
+
_state.label = 1;
|
|
309
|
+
case 1:
|
|
310
|
+
_state.trys.push([
|
|
311
|
+
1,
|
|
312
|
+
3,
|
|
313
|
+
,
|
|
314
|
+
4
|
|
315
|
+
]);
|
|
316
|
+
return [
|
|
317
|
+
4,
|
|
318
|
+
(0, _nativets.tursoApi)()
|
|
319
|
+
];
|
|
320
|
+
case 2:
|
|
321
|
+
turso = _state.sent();
|
|
322
|
+
return [
|
|
323
|
+
3,
|
|
324
|
+
4
|
|
325
|
+
];
|
|
326
|
+
case 3:
|
|
327
|
+
err = _state.sent();
|
|
328
|
+
if (_instanceof(err, _errorsts.SenseError)) throw err;
|
|
329
|
+
throw new _errorsts.SenseError('STORE_DEPENDENCY_MISSING', 'store "turso" needs the '.concat(_nativets.TURSO_PACKAGE, " package (").concat(err.message, ")"));
|
|
330
|
+
case 4:
|
|
331
|
+
_state.trys.push([
|
|
332
|
+
4,
|
|
333
|
+
6,
|
|
334
|
+
,
|
|
335
|
+
7
|
|
336
|
+
]);
|
|
337
|
+
return [
|
|
338
|
+
4,
|
|
339
|
+
turso.connect(dbPath, {
|
|
340
|
+
timeout: 30000
|
|
341
|
+
})
|
|
342
|
+
];
|
|
343
|
+
case 5:
|
|
344
|
+
// Floored at the same 30s sqlite opens with. `timeout` is a connect-time option in this
|
|
345
|
+
// client (no synchronous PRAGMA-at-open-time escape hatch), so the real derived value --
|
|
346
|
+
// which depends on this cache's own recorded reconcile_max_ms, readable only once connected
|
|
347
|
+
// -- is installed via a runtime PRAGMA below, right before the open-time reconcile, the same
|
|
348
|
+
// lever sqlite's open() uses (spike-confirmed: raw PRAGMA busy_timeout works as a setter too).
|
|
349
|
+
db = _state.sent();
|
|
350
|
+
return [
|
|
351
|
+
3,
|
|
352
|
+
7
|
|
353
|
+
];
|
|
354
|
+
case 6:
|
|
355
|
+
err1 = _state.sent();
|
|
356
|
+
throw new _errorsts.SenseError('STORE_DEPENDENCY_MISSING', 'store "turso" failed to open '.concat(dbPath, ": ").concat(err1.message));
|
|
357
|
+
case 7:
|
|
358
|
+
// A throw below (schema, reconcile's COLUMN_LIMIT) must release this handle, or the leaked WAL
|
|
359
|
+
// makes the db file undeletable on Windows. closed marks the rebuild branch that closes and
|
|
360
|
+
// recurses, so the catch never double-closes.
|
|
361
|
+
closed = false;
|
|
362
|
+
_state.label = 8;
|
|
363
|
+
case 8:
|
|
364
|
+
_state.trys.push([
|
|
365
|
+
8,
|
|
366
|
+
18,
|
|
367
|
+
,
|
|
368
|
+
21
|
|
369
|
+
]);
|
|
370
|
+
conn = (0, _connectionts.createConnection)(db);
|
|
371
|
+
return [
|
|
372
|
+
4,
|
|
373
|
+
conn.exec('CREATE TABLE IF NOT EXISTS meta (key TEXT PRIMARY KEY, value TEXT)')
|
|
374
|
+
];
|
|
375
|
+
case 9:
|
|
376
|
+
_state.sent();
|
|
377
|
+
return [
|
|
378
|
+
4,
|
|
379
|
+
(0, _sharedts.getMeta)(conn, 'schema_version')
|
|
380
|
+
];
|
|
381
|
+
case 10:
|
|
382
|
+
version = _state.sent();
|
|
383
|
+
return [
|
|
384
|
+
4,
|
|
385
|
+
(0, _sharedts.getMeta)(conn, 'features')
|
|
386
|
+
];
|
|
387
|
+
case 11:
|
|
388
|
+
features = _state.sent();
|
|
389
|
+
wantFeatures = (0, _indexts.featureSignature)(cfg, _indexts1.FEATURES);
|
|
390
|
+
if (!(version !== null && version !== SCHEMA_VERSION || features !== null && features !== wantFeatures)) return [
|
|
391
|
+
3,
|
|
392
|
+
13
|
|
393
|
+
];
|
|
394
|
+
// Reconcile only reparses changed files, so a stale cache can't be patched incrementally --
|
|
395
|
+
// rebuild instead, same as sqlite's and duckdb's open() (see their comments for why this is
|
|
396
|
+
// announced). No tokenize-only or embed-identity-adopted partial path (sqlite's grace for
|
|
397
|
+
// those): turso has no content.tokenize knob to special-case, and the grace is an
|
|
398
|
+
// optimization, not a correctness requirement -- any mismatch rebuilds, duckdb's shape.
|
|
399
|
+
reason = version !== null && version !== SCHEMA_VERSION ? 'cache format changed (new sensemaking version)' : 'config change (features, tokenizer, or presets)';
|
|
400
|
+
console.error("sense: ".concat(reason, "; rebuilding the index"));
|
|
401
|
+
closed = true;
|
|
402
|
+
return [
|
|
403
|
+
4,
|
|
404
|
+
db.close()
|
|
405
|
+
];
|
|
406
|
+
case 12:
|
|
407
|
+
_state.sent();
|
|
408
|
+
(0, _opents.clearCache)(cfg);
|
|
409
|
+
return [
|
|
410
|
+
2,
|
|
411
|
+
connect(cfg)
|
|
412
|
+
];
|
|
413
|
+
case 13:
|
|
414
|
+
return [
|
|
415
|
+
4,
|
|
416
|
+
ensureSchema(conn, cfg)
|
|
417
|
+
];
|
|
418
|
+
case 14:
|
|
419
|
+
_state.sent();
|
|
420
|
+
return [
|
|
421
|
+
4,
|
|
422
|
+
(0, _sharedts.getMeta)(conn, 'reconcile_max_ms')
|
|
423
|
+
];
|
|
424
|
+
case 15:
|
|
425
|
+
recordedMaxMs = Number.apply(void 0, [
|
|
426
|
+
(_ref = _state.sent()) !== null && _ref !== void 0 ? _ref : '0'
|
|
427
|
+
]);
|
|
428
|
+
return [
|
|
429
|
+
4,
|
|
430
|
+
conn.exec("PRAGMA busy_timeout = ".concat(Math.min(Math.max(30000, 3 * recordedMaxMs), 600000)))
|
|
431
|
+
];
|
|
432
|
+
case 16:
|
|
433
|
+
_state.sent();
|
|
434
|
+
return [
|
|
435
|
+
4,
|
|
436
|
+
(0, _reconcilets.reconcile)(conn, cfg, cfg.baseDir)
|
|
437
|
+
];
|
|
438
|
+
case 17:
|
|
439
|
+
_ref1 = _state.sent(), parsed = _ref1.parsed, warnings = _ref1.warnings;
|
|
440
|
+
return [
|
|
441
|
+
2,
|
|
442
|
+
{
|
|
443
|
+
db: db,
|
|
444
|
+
conn: conn,
|
|
445
|
+
cfg: cfg,
|
|
446
|
+
dbPath: dbPath,
|
|
447
|
+
parsed: parsed,
|
|
448
|
+
warnings: warnings
|
|
449
|
+
}
|
|
450
|
+
];
|
|
451
|
+
case 18:
|
|
452
|
+
err2 = _state.sent();
|
|
453
|
+
if (!!closed) return [
|
|
454
|
+
3,
|
|
455
|
+
20
|
|
456
|
+
];
|
|
457
|
+
return [
|
|
458
|
+
4,
|
|
459
|
+
db.close()
|
|
460
|
+
];
|
|
461
|
+
case 19:
|
|
462
|
+
_state.sent();
|
|
463
|
+
_state.label = 20;
|
|
464
|
+
case 20:
|
|
465
|
+
throw err2;
|
|
466
|
+
case 21:
|
|
467
|
+
return [
|
|
468
|
+
2
|
|
469
|
+
];
|
|
470
|
+
}
|
|
471
|
+
});
|
|
472
|
+
})();
|
|
473
|
+
}
|
|
474
|
+
function openTurso(cfg) {
|
|
475
|
+
return _async_to_generator(function() {
|
|
476
|
+
var _ref, db, conn, resolvedCfg, dbPath, parsed, warnings;
|
|
477
|
+
return _ts_generator(this, function(_state) {
|
|
478
|
+
switch(_state.label){
|
|
479
|
+
case 0:
|
|
480
|
+
return [
|
|
481
|
+
4,
|
|
482
|
+
connect(cfg)
|
|
483
|
+
];
|
|
484
|
+
case 1:
|
|
485
|
+
_ref = _state.sent(), db = _ref.db, conn = _ref.conn, resolvedCfg = _ref.cfg, dbPath = _ref.dbPath, parsed = _ref.parsed, warnings = _ref.warnings;
|
|
486
|
+
return [
|
|
487
|
+
2,
|
|
488
|
+
{
|
|
489
|
+
store: (0, _storets.createStore)(db, conn, resolvedCfg, resolvedCfg.baseDir),
|
|
490
|
+
cfg: resolvedCfg,
|
|
491
|
+
dbPath: dbPath,
|
|
492
|
+
parsed: parsed,
|
|
493
|
+
warnings: warnings
|
|
494
|
+
}
|
|
495
|
+
];
|
|
496
|
+
}
|
|
497
|
+
});
|
|
498
|
+
})();
|
|
499
|
+
}
|
|
500
|
+
/* 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; }
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/OpenSource/ai/sensemaking/src/store/turso/open.ts"],"sourcesContent":["import { mkdirSync } from 'node:fs';\nimport { join } from 'node:path';\nimport type { Database } from '@tursodatabase/database';\nimport type { Config, ResolvedConfig } from '../../config/index.ts';\nimport { featureSignature, STATE_DIR } from '../../config/index.ts';\nimport { SenseError } from '../../errors.ts';\nimport { activeFeatures, FEATURES } from '../../features/index.ts';\nimport { getMeta, setMeta } from '../shared.ts';\nimport { clearCache } from '../sqlite/open.ts';\nimport type { Connection, Store } from '../types.ts';\nimport { createConnection } from './connection.ts';\nimport { TURSO_PACKAGE, tursoApi } from './native.ts';\nimport { reconcile } from './reconcile.ts';\nimport { createStore } from './store.ts';\n\nexport const DB_FILENAME = 'cache.turso.db';\n// Independent of sqlite's SCHEMA_VERSION and duckdb's -- each store's cache shape evolves\n// separately, and the store name already joins the feature signature (see featureSignature), so\n// a config's `store` key switching cleanly rebuilds rather than reusing another engine's cache.\nexport const SCHEMA_VERSION = '1';\n\nexport interface OpenResult {\n store: Store;\n cfg: ResolvedConfig;\n dbPath: string;\n parsed: number;\n warnings: string[];\n}\n\n// content is a plain table (not FTS-virtual): phase 1 creates no FTS index at all -- that is\n// phase 2's job (see the plan). Untyped ALTER TABLE ADD COLUMN, like sqlite -- turso's dialect\n// accepts it with no declared type (spike-confirmed), unlike duckdb which requires VARIANT.\nasync function ensureSchema(conn: Connection, cfg: Config): Promise<void> {\n await conn.exec(`CREATE TABLE IF NOT EXISTS frontmatter (\"path\" TEXT PRIMARY KEY, \"_mtime\" REAL, \"_ctime\" REAL, \"_size\" INTEGER, \"_parse_error\" TEXT)`);\n await conn.exec(`CREATE TABLE IF NOT EXISTS content (\"path\" TEXT PRIMARY KEY, title TEXT, summary TEXT, text TEXT)`);\n await conn.exec(`CREATE TABLE IF NOT EXISTS preset_files (\"path\" TEXT, preset TEXT, PRIMARY KEY (\"path\", preset))`);\n await conn.exec('CREATE INDEX IF NOT EXISTS preset_files_preset ON preset_files(preset)');\n for (const feature of activeFeatures(cfg)) await feature.schema(conn);\n if ((await getMeta(conn, 'schema_version')) === null) await setMeta(conn, 'schema_version', SCHEMA_VERSION);\n if ((await getMeta(conn, 'features')) === null) await setMeta(conn, 'features', featureSignature(cfg, FEATURES));\n}\n\ninterface ConnectResult {\n db: Database;\n conn: Connection;\n cfg: ResolvedConfig;\n dbPath: string;\n parsed: number;\n warnings: string[];\n}\n\nasync function connect(cfg: ResolvedConfig): Promise<ConnectResult> {\n const stateDir = join(cfg.baseDir, STATE_DIR);\n mkdirSync(stateDir, { recursive: true });\n const dbPath = join(stateDir, DB_FILENAME);\n\n // Dynamic, not a top-level import: a sqlite or duckdb tree must never even attempt to resolve\n // this optional dependency, so nothing in this store's module graph imports it as a value until\n // a turso tree is actually opened (type-only imports elsewhere are erased and cost nothing\n // either way). Installed on first use if missing (see native.ts's tursoApi).\n let turso: Awaited<ReturnType<typeof tursoApi>>;\n try {\n turso = await tursoApi();\n } catch (err) {\n if (err instanceof SenseError) throw err;\n throw new SenseError('STORE_DEPENDENCY_MISSING', `store \"turso\" needs the ${TURSO_PACKAGE} package (${(err as Error).message})`);\n }\n\n let db: Database;\n try {\n // Floored at the same 30s sqlite opens with. `timeout` is a connect-time option in this\n // client (no synchronous PRAGMA-at-open-time escape hatch), so the real derived value --\n // which depends on this cache's own recorded reconcile_max_ms, readable only once connected\n // -- is installed via a runtime PRAGMA below, right before the open-time reconcile, the same\n // lever sqlite's open() uses (spike-confirmed: raw PRAGMA busy_timeout works as a setter too).\n db = await turso.connect(dbPath, { timeout: 30_000 });\n } catch (err) {\n throw new SenseError('STORE_DEPENDENCY_MISSING', `store \"turso\" failed to open ${dbPath}: ${(err as Error).message}`);\n }\n // A throw below (schema, reconcile's COLUMN_LIMIT) must release this handle, or the leaked WAL\n // makes the db file undeletable on Windows. closed marks the rebuild branch that closes and\n // recurses, so the catch never double-closes.\n let closed = false;\n try {\n const conn = createConnection(db);\n\n await conn.exec('CREATE TABLE IF NOT EXISTS meta (key TEXT PRIMARY KEY, value TEXT)');\n\n const version = await getMeta(conn, 'schema_version');\n const features = await getMeta(conn, 'features');\n const wantFeatures = featureSignature(cfg, FEATURES);\n if ((version !== null && version !== SCHEMA_VERSION) || (features !== null && features !== wantFeatures)) {\n // Reconcile only reparses changed files, so a stale cache can't be patched incrementally --\n // rebuild instead, same as sqlite's and duckdb's open() (see their comments for why this is\n // announced). No tokenize-only or embed-identity-adopted partial path (sqlite's grace for\n // those): turso has no content.tokenize knob to special-case, and the grace is an\n // optimization, not a correctness requirement -- any mismatch rebuilds, duckdb's shape.\n const reason = version !== null && version !== SCHEMA_VERSION ? 'cache format changed (new sensemaking version)' : 'config change (features, tokenizer, or presets)';\n console.error(`sense: ${reason}; rebuilding the index`);\n closed = true;\n await db.close();\n clearCache(cfg);\n return connect(cfg);\n }\n\n await ensureSchema(conn, cfg);\n\n // 3x the largest reconcile this cache has recorded, floored at 30s and capped at 10min.\n // Installed before reconcile() -- that call is the one that races a watcher's transaction.\n const recordedMaxMs = Number((await getMeta(conn, 'reconcile_max_ms')) ?? '0');\n await conn.exec(`PRAGMA busy_timeout = ${Math.min(Math.max(30000, 3 * recordedMaxMs), 600_000)}`);\n\n const { parsed, warnings } = await reconcile(conn, cfg, cfg.baseDir);\n\n return { db, conn, cfg, dbPath, parsed, warnings };\n } catch (err) {\n if (!closed) await db.close();\n throw err;\n }\n}\n\n// The turso store's open: connects (fully async, see connect() above), then wraps the resulting\n// connection in the Store interface.\nexport async function openTurso(cfg: ResolvedConfig): Promise<OpenResult> {\n const { db, conn, cfg: resolvedCfg, dbPath, parsed, warnings } = await connect(cfg);\n return { store: createStore(db, conn, resolvedCfg, resolvedCfg.baseDir), cfg: resolvedCfg, dbPath, parsed, warnings };\n}\n"],"names":["DB_FILENAME","SCHEMA_VERSION","openTurso","ensureSchema","conn","cfg","feature","exec","activeFeatures","schema","getMeta","setMeta","featureSignature","FEATURES","connect","stateDir","dbPath","turso","err","db","closed","version","features","wantFeatures","reason","recordedMaxMs","parsed","warnings","join","baseDir","STATE_DIR","mkdirSync","recursive","tursoApi","SenseError","TURSO_PACKAGE","message","timeout","createConnection","console","error","close","clearCache","Number","Math","min","max","reconcile","resolvedCfg","store","createStore"],"mappings":";;;;;;;;;;;QAeaA;eAAAA;;QAIAC;eAAAA;;QAwGSC;eAAAA;;;sBA3HI;wBACL;uBAGuB;wBACjB;wBACc;wBACR;sBACN;4BAEM;wBACO;2BACd;uBACE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAErB,IAAMF,cAAc;AAIpB,IAAMC,iBAAiB;AAU9B,6FAA6F;AAC7F,+FAA+F;AAC/F,4FAA4F;AAC5F,SAAeE,aAAaC,IAAgB,EAAEC,GAAW;;YAKlD,2BAAA,mBAAA,gBAAA,WAAA,OAAMC;;;;oBAJX;;wBAAMF,KAAKG,IAAI,CAAC;;;oBAAhB;oBACA;;wBAAMH,KAAKG,IAAI,CAAC;;;oBAAhB;oBACA;;wBAAMH,KAAKG,IAAI,CAAC;;;oBAAhB;oBACA;;wBAAMH,KAAKG,IAAI,CAAC;;;oBAAhB;oBACK,kCAAA,2BAAA;;;;;;;;;oBAAA,YAAiBC,IAAAA,wBAAc,EAACH;;;2BAAhC,6BAAA,QAAA;;;;oBAAMC,UAAN;oBAAsC;;wBAAMA,QAAQG,MAAM,CAACL;;;oBAArB;;;oBAAtC;;;;;;;;;;;;oBAAA;oBAAA;;;;;;;6BAAA,6BAAA;4BAAA;;;4BAAA;kCAAA;;;;;;;oBACA;;wBAAMM,IAAAA,iBAAO,EAACN,MAAM;;;yBAArB,CAAA,AAAC,kBAA2C,IAAG,GAA/C;;;;oBAAkD;;wBAAMO,IAAAA,iBAAO,EAACP,MAAM,kBAAkBH;;;oBAAtC;;;oBACjD;;wBAAMS,IAAAA,iBAAO,EAACN,MAAM;;;yBAArB,CAAA,AAAC,kBAAqC,IAAG,GAAzC;;;;oBAA4C;;wBAAMO,IAAAA,iBAAO,EAACP,MAAM,YAAYQ,IAAAA,yBAAgB,EAACP,KAAKQ,kBAAQ;;;oBAA9D;;;;;;;;IAClD;;AAWA,SAAeC,QAAQT,GAAmB;;YAClCU,UAEAC,QAMFC,OAGKC,KAKLC,IAQKD,MAMLE,QA2B4B,MAzBxBhB,MAIAiB,SACAC,UACAC,cAOEC,QAYFC,eAGuB,OAArBC,QAAQC,UAGTT;;;;oBA/DHH,WAAWa,IAAAA,cAAI,EAACvB,IAAIwB,OAAO,EAAEC,kBAAS;oBAC5CC,IAAAA,iBAAS,EAAChB,UAAU;wBAAEiB,WAAW;oBAAK;oBAChChB,SAASY,IAAAA,cAAI,EAACb,UAAUf;;;;;;;;;oBAQpB;;wBAAMiC,IAAAA,kBAAQ;;;oBAAtBhB,QAAQ;;;;;;oBACDC;oBACP,IAAIA,AAAG,YAAHA,KAAegB,oBAAU,GAAE,MAAMhB;oBACrC,MAAM,IAAIgB,oBAAU,CAAC,4BAA4B,AAAC,2BAAoD,OAA1BC,uBAAa,EAAC,cAAmC,OAAvB,AAACjB,IAAckB,OAAO,EAAC;;;;;;;;oBAUxH;;wBAAMnB,MAAMH,OAAO,CAACE,QAAQ;4BAAEqB,SAAS;wBAAO;;;oBALnD,wFAAwF;oBACxF,yFAAyF;oBACzF,4FAA4F;oBAC5F,6FAA6F;oBAC7F,+FAA+F;oBAC/FlB,KAAK;;;;;;oBACED;oBACP,MAAM,IAAIgB,oBAAU,CAAC,4BAA4B,AAAC,gCAA0C,OAAXlB,QAAO,MAA2B,OAAvB,AAACE,KAAckB,OAAO;;oBAEpH,+FAA+F;oBAC/F,4FAA4F;oBAC5F,8CAA8C;oBAC1ChB,SAAS;;;;;;;;;oBAELhB,OAAOkC,IAAAA,8BAAgB,EAACnB;oBAE9B;;wBAAMf,KAAKG,IAAI,CAAC;;;oBAAhB;oBAEgB;;wBAAMG,IAAAA,iBAAO,EAACN,MAAM;;;oBAA9BiB,UAAU;oBACC;;wBAAMX,IAAAA,iBAAO,EAACN,MAAM;;;oBAA/BkB,WAAW;oBACXC,eAAeX,IAAAA,yBAAgB,EAACP,KAAKQ,kBAAQ;yBAC/C,CAAA,AAACQ,YAAY,QAAQA,YAAYpB,kBAAoBqB,aAAa,QAAQA,aAAaC,YAAY,GAAnG;;;;oBACF,4FAA4F;oBAC5F,4FAA4F;oBAC5F,0FAA0F;oBAC1F,kFAAkF;oBAClF,wFAAwF;oBAClFC,SAASH,YAAY,QAAQA,YAAYpB,iBAAiB,mDAAmD;oBACnHsC,QAAQC,KAAK,CAAC,AAAC,UAAgB,OAAPhB,QAAO;oBAC/BJ,SAAS;oBACT;;wBAAMD,GAAGsB,KAAK;;;oBAAd;oBACAC,IAAAA,kBAAU,EAACrC;oBACX;;wBAAOS,QAAQT;;;oBAGjB;;wBAAMF,aAAaC,MAAMC;;;oBAAzB;oBAI8B;;wBAAMK,IAAAA,iBAAO,EAACN,MAAM;;;oBAA5CqB,gBAAgBkB;yBAAQ,OAAA,2BAAA,kBAAA,OAA4C;;oBAC1E;;wBAAMvC,KAAKG,IAAI,CAAC,AAAC,yBAA8E,OAAtDqC,KAAKC,GAAG,CAACD,KAAKE,GAAG,CAAC,OAAO,IAAIrB,gBAAgB;;;oBAAtF;oBAE6B;;wBAAMsB,IAAAA,sBAAS,EAAC3C,MAAMC,KAAKA,IAAIwB,OAAO;;;oBAAtC,QAAA,eAArBH,SAAqB,MAArBA,QAAQC,WAAa,MAAbA;oBAEhB;;wBAAO;4BAAER,IAAAA;4BAAIf,MAAAA;4BAAMC,KAAAA;4BAAKW,QAAAA;4BAAQU,QAAAA;4BAAQC,UAAAA;wBAAS;;;oBAC1CT;yBACH,CAACE,QAAD;;;;oBAAS;;wBAAMD,GAAGsB,KAAK;;;oBAAd;;;oBACb,MAAMvB;;;;;;;IAEV;;AAIO,SAAehB,UAAUG,GAAmB;;YACgB,MAAzDc,IAAIf,MAAW4C,aAAahC,QAAQU,QAAQC;;;;oBAAa;;wBAAMb,QAAQT;;;oBAAd,OAAA,eAAzDc,KAAyD,KAAzDA,IAAIf,OAAqD,KAArDA,MAAW4C,cAA0C,KAA/C3C,KAAkBW,SAA6B,KAA7BA,QAAQU,SAAqB,KAArBA,QAAQC,WAAa,KAAbA;oBACpD;;wBAAO;4BAAEsB,OAAOC,IAAAA,oBAAW,EAAC/B,IAAIf,MAAM4C,aAAaA,YAAYnB,OAAO;4BAAGxB,KAAK2C;4BAAahC,QAAAA;4BAAQU,QAAAA;4BAAQC,UAAAA;wBAAS;;;;IACtH"}
|