albex 0.6.0 → 0.6.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/CHANGELOG.md +191 -0
- package/README.md +30 -19
- package/dist/albex-worker.d.ts +65 -2
- package/dist/albex-worker.d.ts.map +1 -1
- package/dist/albex-worker.js +97 -20
- package/dist/albex-worker.js.map +1 -1
- package/dist/albex.d.ts +206 -42
- package/dist/albex.d.ts.map +1 -1
- package/dist/albex.js +384 -103
- package/dist/albex.js.map +1 -1
- package/dist/errors.d.ts +35 -4
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +37 -2
- package/dist/errors.js.map +1 -1
- package/dist/persistence.js +1 -1
- package/dist/pool/coordinator.d.ts +14 -6
- package/dist/pool/coordinator.d.ts.map +1 -1
- package/dist/pool/coordinator.js +65 -28
- package/dist/pool/coordinator.js.map +1 -1
- package/dist/profile.js +1 -1
- package/dist/resource-manager.js +1 -1
- package/dist/tiered-store.js +1 -1
- package/dist/wasm-bindings.d.ts +50 -1
- package/dist/wasm-bindings.d.ts.map +1 -1
- package/dist/wasm-bindings.js +19 -11
- package/dist/wasm-bindings.js.map +1 -1
- package/dist/worker-protocol.d.ts +23 -2
- package/dist/worker-protocol.d.ts.map +1 -1
- package/dist/worker-protocol.js +1 -1
- package/dist/worker-runtime.js +16 -1
- package/dist/worker-runtime.js.map +1 -1
- package/package.json +1 -1
- package/src/albex-worker.ts +103 -18
- package/src/albex.ts +2937 -2524
- package/src/errors.ts +49 -4
- package/src/pool/coordinator.ts +61 -34
- package/src/wasm-bindings.ts +78 -12
- package/src/worker-protocol.ts +12 -2
- package/src/worker-runtime.ts +16 -1
- package/wasm/pkg/albex_pdf.wasm +0 -0
- package/wasm/pkg/albex_wasm.wasm +0 -0
- package/wasm/pkg/albex_wasm_bg.wasm +0 -0
- package/wasm/pkg/albex_wasm_simd.wasm +0 -0
package/dist/pool/coordinator.js
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
* variant in a future iteration) but defaults to off.
|
|
23
23
|
*/
|
|
24
24
|
import { detectProfile, pickWorkerCount } from '../profile.js';
|
|
25
|
-
import { AlbexInitError, AlbexError } from '../errors.js';
|
|
25
|
+
import { AlbexInitError, AlbexError, assertFileSizeWithinLimit } from '../errors.js';
|
|
26
26
|
let _poolSearchStreamWarned = false;
|
|
27
27
|
export class AlbexPool {
|
|
28
28
|
_opts;
|
|
@@ -30,7 +30,9 @@ export class AlbexPool {
|
|
|
30
30
|
_docsCache = [];
|
|
31
31
|
_rrCursor = 0;
|
|
32
32
|
_lastSearch = null;
|
|
33
|
-
|
|
33
|
+
/** Global result cap applied AFTER the cross-shard merge. Mirrors the
|
|
34
|
+
* last `setMaxResults` call (the WASM engine default is 50). */
|
|
35
|
+
_maxResults = 50;
|
|
34
36
|
constructor(opts) {
|
|
35
37
|
this._opts = opts;
|
|
36
38
|
}
|
|
@@ -46,21 +48,22 @@ export class AlbexPool {
|
|
|
46
48
|
if (this._opts.mode === 'shared' && !profile.coopCoep) {
|
|
47
49
|
console.warn('[albex] pool mode=shared requested but cross-origin isolation is not active; falling back to replicated');
|
|
48
50
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
51
|
+
// Forward every serializable engine option to the shards; strip the
|
|
52
|
+
// pool-only fields (workerUrl/workers/mode) and anything non-clonable.
|
|
53
|
+
// Same policy as AlbexEngineWorker.init (audit 1.4).
|
|
54
|
+
const shardOpts = {};
|
|
55
|
+
for (const [k, v] of Object.entries(this._opts)) {
|
|
56
|
+
if (k === 'workerUrl' || k === 'workers' || k === 'mode')
|
|
57
|
+
continue;
|
|
58
|
+
if (v === undefined || typeof v === 'function')
|
|
59
|
+
continue;
|
|
60
|
+
shardOpts[k] = v;
|
|
61
|
+
}
|
|
56
62
|
for (let i = 0; i < n; i++) {
|
|
57
63
|
const shard = this._spawnShard();
|
|
58
64
|
await this._send(shard, { kind: 'init', opts: shardOpts });
|
|
59
65
|
this._shards.push(shard);
|
|
60
66
|
}
|
|
61
|
-
// Tier is the same across shards — capture it from shard 0 stats.
|
|
62
|
-
const stats0 = await this._send(this._shards[0], { kind: 'getStats' });
|
|
63
|
-
this._tier = stats0.tier;
|
|
64
67
|
}
|
|
65
68
|
// ── Shard plumbing ─────────────────────────────────────────────────────
|
|
66
69
|
_spawnShard() {
|
|
@@ -109,6 +112,9 @@ export class AlbexPool {
|
|
|
109
112
|
async indexFile(file) {
|
|
110
113
|
if (this._shards.length === 0)
|
|
111
114
|
throw new AlbexInitError('Pool not initialised');
|
|
115
|
+
// Size guard BEFORE reading — same limit the shard engine enforces, but
|
|
116
|
+
// checked here so an oversized file is never buffered on the main thread.
|
|
117
|
+
assertFileSizeWithinLimit(file, this._opts.maxFileBytes);
|
|
112
118
|
const idx = this._rrCursor++ % this._shards.length;
|
|
113
119
|
const shard = this._shards[idx];
|
|
114
120
|
const buffer = await file.arrayBuffer();
|
|
@@ -121,25 +127,50 @@ export class AlbexPool {
|
|
|
121
127
|
* Map-reduce search:
|
|
122
128
|
* 1. broadcast the query to every shard,
|
|
123
129
|
* 2. each shard runs its local Bloom→Bitap→top-K,
|
|
124
|
-
* 3. coordinator merges the K-best from each shard,
|
|
130
|
+
* 3. coordinator merges the K-best from each shard, deduplicating
|
|
131
|
+
* identical hits (same document name, chunk id and match offset —
|
|
132
|
+
* the case where the same file was indexed into two shards),
|
|
125
133
|
* 4. global top-K returned in descending score order.
|
|
126
134
|
*
|
|
127
135
|
* Capped to `setMaxResults` results (default 50) AFTER merge.
|
|
136
|
+
*
|
|
137
|
+
* Per-shard search stats are requested in the same posting batch as the
|
|
138
|
+
* search itself: each worker processes its queue in arrival order, so the
|
|
139
|
+
* stats reply is guaranteed to belong to THIS query even when several
|
|
140
|
+
* `search()` calls overlap.
|
|
128
141
|
*/
|
|
129
142
|
async search(query, opts = {}) {
|
|
130
143
|
if (this._shards.length === 0)
|
|
131
144
|
return [];
|
|
132
145
|
const t0 = performance.now();
|
|
133
|
-
|
|
134
|
-
//
|
|
135
|
-
//
|
|
136
|
-
|
|
137
|
-
|
|
146
|
+
// Post `search` and `getLastSearchStats` back-to-back (synchronously,
|
|
147
|
+
// per shard) so no other request can slot between them in the worker's
|
|
148
|
+
// FIFO queue — the stats round can't race a subsequent search.
|
|
149
|
+
const perShard = await Promise.all(this._shards.map(s => {
|
|
150
|
+
const results = this._send(s, { kind: 'search', query, options: opts });
|
|
151
|
+
const stats = this._send(s, { kind: 'getLastSearchStats' });
|
|
152
|
+
return Promise.all([results, stats]);
|
|
153
|
+
}));
|
|
154
|
+
// Merge: flatten + dedup + sort (descending) + global cap. Shard-local
|
|
155
|
+
// docIds collide across shards, so the dedup identity also includes the
|
|
156
|
+
// document name: it only collapses true duplicates (the same document
|
|
157
|
+
// indexed into more than one shard yields identical name/chunkId/offset).
|
|
158
|
+
const seen = new Set();
|
|
159
|
+
const merged = [];
|
|
160
|
+
for (const [bucket] of perShard) {
|
|
161
|
+
for (const r of bucket) {
|
|
162
|
+
const key = `${r.documentName}:${r.chunkId}:${r.matchStart}`;
|
|
163
|
+
if (!seen.has(key)) {
|
|
164
|
+
seen.add(key);
|
|
165
|
+
merged.push(r);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
138
169
|
merged.sort((a, b) => b.score - a.score);
|
|
170
|
+
const capped = merged.slice(0, this._maxResults);
|
|
139
171
|
// Aggregate search stats across shards.
|
|
140
|
-
const stats = await Promise.all(this._shards.map(s => this._send(s, { kind: 'getLastSearchStats' })));
|
|
141
172
|
let bloomTested = 0, bloomPassed = 0, bitapMatched = 0;
|
|
142
|
-
for (const s of
|
|
173
|
+
for (const [, s] of perShard) {
|
|
143
174
|
if (!s)
|
|
144
175
|
continue;
|
|
145
176
|
bloomTested += s.bloomTested;
|
|
@@ -149,10 +180,10 @@ export class AlbexPool {
|
|
|
149
180
|
this._lastSearch = {
|
|
150
181
|
query,
|
|
151
182
|
timeMs: performance.now() - t0,
|
|
152
|
-
results:
|
|
183
|
+
results: capped.length,
|
|
153
184
|
bloomTested, bloomPassed, bitapMatched,
|
|
154
185
|
};
|
|
155
|
-
return
|
|
186
|
+
return capped;
|
|
156
187
|
}
|
|
157
188
|
/**
|
|
158
189
|
* Cooperative variant of `search`. The coordinator awaits every shard,
|
|
@@ -200,11 +231,13 @@ export class AlbexPool {
|
|
|
200
231
|
for (const s of this._shards)
|
|
201
232
|
s.docCount = 0;
|
|
202
233
|
}
|
|
203
|
-
/** Aggregate engine stats across all shards.
|
|
234
|
+
/** Aggregate engine stats across all shards. Capacities are the RUNTIME
|
|
235
|
+
* per-shard capacities summed (each shard was initialised with the same
|
|
236
|
+
* `capacity` option, forwarded through the wire protocol). */
|
|
204
237
|
async getStats() {
|
|
205
238
|
const all = await this._broadcast({ kind: 'getStats' });
|
|
206
239
|
let documents = 0, chunks = 0, textUsed = 0, textCapacity = 0, wasmMemoryBytes = 0;
|
|
207
|
-
let maxChunks = 0, maxDocs = 0;
|
|
240
|
+
let maxChunks = 0, maxDocs = 0, namePoolBytes = 0;
|
|
208
241
|
for (const s of all) {
|
|
209
242
|
documents += s.documents;
|
|
210
243
|
chunks += s.chunks;
|
|
@@ -213,10 +246,11 @@ export class AlbexPool {
|
|
|
213
246
|
wasmMemoryBytes += s.wasmMemoryBytes;
|
|
214
247
|
maxChunks += s.maxChunks;
|
|
215
248
|
maxDocs += s.maxDocs;
|
|
249
|
+
namePoolBytes += s.namePoolBytes;
|
|
216
250
|
}
|
|
217
251
|
return {
|
|
218
252
|
documents, chunks, textUsed, textCapacity, wasmMemoryBytes,
|
|
219
|
-
|
|
253
|
+
maxChunks, maxDocs, namePoolBytes,
|
|
220
254
|
};
|
|
221
255
|
}
|
|
222
256
|
getLastSearchStats() {
|
|
@@ -227,12 +261,15 @@ export class AlbexPool {
|
|
|
227
261
|
}
|
|
228
262
|
async setMaxErrors(n) { await this._broadcast({ kind: 'setMaxErrors', n }); }
|
|
229
263
|
async setThreshold(n) { await this._broadcast({ kind: 'setThreshold', n }); }
|
|
230
|
-
async setMaxResults(n) {
|
|
264
|
+
async setMaxResults(n) {
|
|
265
|
+
// Track the effective cap (same clamp as the WASM engine) so search()
|
|
266
|
+
// can enforce it globally after the cross-shard merge.
|
|
267
|
+
this._maxResults = Math.max(1, Math.min(200, Math.floor(n)));
|
|
268
|
+
await this._broadcast({ kind: 'setMaxResults', n });
|
|
269
|
+
}
|
|
231
270
|
async setLanguage(lang) { await this._broadcast({ kind: 'setLanguage', lang }); }
|
|
232
271
|
/** Number of shards currently running. */
|
|
233
272
|
get workerCount() { return this._shards.length; }
|
|
234
|
-
/** Tier loaded by the shards (same value across all of them). */
|
|
235
|
-
get tier() { return this._tier; }
|
|
236
273
|
[Symbol.dispose]() {
|
|
237
274
|
for (const s of this._shards) {
|
|
238
275
|
for (const [, p] of s.pending)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../src/pool/coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;
|
|
1
|
+
{"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../src/pool/coordinator.ts"],"names":[],"mappings":"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"}
|
package/dist/profile.js
CHANGED
package/dist/resource-manager.js
CHANGED
package/dist/tiered-store.js
CHANGED
package/dist/wasm-bindings.d.ts
CHANGED
|
@@ -13,7 +13,18 @@ export interface AlbexWasmExports {
|
|
|
13
13
|
readonly memory: WebAssembly.Memory;
|
|
14
14
|
abiVersion(): number;
|
|
15
15
|
getBuffer(size: number): number;
|
|
16
|
+
/** Reset with the std default capacities (128 docs · 100k chunks · 16 MB
|
|
17
|
+
* text · 32 KB names) — identical behaviour to every pre-ABI-7 release. */
|
|
16
18
|
init(): void;
|
|
19
|
+
/** (Re-)initialise the engine with runtime capacities (ABI 7, decision
|
|
20
|
+
* A16). Allocates the capacity-dependent pools on the WASM heap. Returns
|
|
21
|
+
* 1 on success; 0 on invalid parameters (floors/ceilings documented in
|
|
22
|
+
* wasm/src/lib.rs: ≥1 doc, docs ≤ 65 536, chunks ≥ docs and ≤ 4 M, text
|
|
23
|
+
* pool 4 KiB–1 GiB, name pool 256 B–16 MiB) or on allocation failure —
|
|
24
|
+
* never traps. Re-init with the same capacities is a plain reset; with
|
|
25
|
+
* different capacities the pools are freed and re-allocated (no leak,
|
|
26
|
+
* but the linear-memory high-water mark never shrinks). */
|
|
27
|
+
initWithCapacity(maxDocs: number, maxChunks: number, textPoolBytes: number, namePoolBytes: number): number;
|
|
17
28
|
/** Reset the streaming FNV-1a 64-bit hash state. Optional on the first
|
|
18
29
|
* hash of a session because the static initialiser is also FNV_OFFSET. */
|
|
19
30
|
hashBegin(): void;
|
|
@@ -39,12 +50,26 @@ export interface AlbexWasmExports {
|
|
|
39
50
|
getQueryBranchCount(): number;
|
|
40
51
|
getQueryBranchPattern(i: number): number;
|
|
41
52
|
selectQueryBranch(i: number): number;
|
|
53
|
+
/** Bitflags of what the most recent prepareQuery dropped or clipped
|
|
54
|
+
* (ABI 5): 1 = OR branches beyond 8 discarded, 2 = tokens dropped
|
|
55
|
+
* (> 4 per branch) or clipped (> 64 bytes), 4 = raw query cut at
|
|
56
|
+
* 1024 bytes. 0 = compiled in full. */
|
|
57
|
+
getQueryTruncationFlags(): number;
|
|
42
58
|
setPattern(len: number): number;
|
|
43
59
|
search(): number;
|
|
44
60
|
searchBegin(): number;
|
|
45
61
|
searchSlice(maxChunks: number): number;
|
|
46
62
|
getSearchCursor(): number;
|
|
47
63
|
getSearchTotal(): number;
|
|
64
|
+
/** Base pointer of the `#[repr(C)]` RESULTS array (ABI 6). Read
|
|
65
|
+
* `getResultCount()` records of `getResultStride()` bytes each with one
|
|
66
|
+
* DataView pass instead of ~12 frontier calls per result. Field offsets
|
|
67
|
+
* are documented (and compile-time asserted) in wasm/src/lib.rs. Copy
|
|
68
|
+
* everything out before any call that could grow WASM memory. */
|
|
69
|
+
getResultsPtr(): number;
|
|
70
|
+
/** Byte stride between consecutive RESULTS records (= sizeof(DocMatch),
|
|
71
|
+
* 60 today). Exported so the host never hardcodes the struct size. */
|
|
72
|
+
getResultStride(): number;
|
|
48
73
|
getResultCount(): number;
|
|
49
74
|
getResultDocId(i: number): number;
|
|
50
75
|
getResultLocation(i: number): number;
|
|
@@ -91,6 +116,24 @@ export interface AlbexWasmExports {
|
|
|
91
116
|
isDocDeleted(index: number): number;
|
|
92
117
|
removeDocument(docId: number): number;
|
|
93
118
|
compact(): void;
|
|
119
|
+
/** First CHUNKS[] index for the document at slot `index` (= chunk_start).
|
|
120
|
+
* `ord = resultChunkIdx - getDocChunkBase(slot)` gives the doc-relative
|
|
121
|
+
* ordinal of a search hit. */
|
|
122
|
+
getDocChunkBase(index: number): number;
|
|
123
|
+
/** `location` (paragraph/page) of the `ord`-th chunk; u32::MAX if OOB. */
|
|
124
|
+
getChunkLocationAt(index: number, ord: number): number;
|
|
125
|
+
/** Byte length of the `ord`-th chunk's text; 0 if OOB. */
|
|
126
|
+
getChunkByteLenAt(index: number, ord: number): number;
|
|
127
|
+
/** Copy the `ord`-th chunk's UTF-8 text into the scratchpad; returns byte
|
|
128
|
+
* length (0 if OOB). Lets a host enumerate a doc's authoritative chunks
|
|
129
|
+
* right after indexing, with no query. */
|
|
130
|
+
getChunkTextAt(index: number, ord: number): number;
|
|
131
|
+
/** Batch chunk enumeration (ABI 6). Packs up to `maxChunks` records
|
|
132
|
+
* `[u32 text_len][u32 location][text bytes]` (LE, tightly packed) into
|
|
133
|
+
* the scratchpad starting at ordinal `startOrd`; returns how many were
|
|
134
|
+
* written. One frontier call per scratchpad-full instead of 2-3 per
|
|
135
|
+
* chunk. */
|
|
136
|
+
listChunksBatch(index: number, startOrd: number, maxChunks: number): number;
|
|
94
137
|
/**
|
|
95
138
|
* Per-document content hash (snapshot v2). Returns a pointer to 8 bytes
|
|
96
139
|
* holding the FNV-1a 64-bit hash of the original file bytes, or 0 if the
|
|
@@ -106,7 +149,6 @@ export interface AlbexWasmExports {
|
|
|
106
149
|
* pending slot. endDocument() then writes it into doc_hashes[]. */
|
|
107
150
|
setDocumentContentHash(len: number): void;
|
|
108
151
|
setLanguage(lang: number): void;
|
|
109
|
-
getTier(): number;
|
|
110
152
|
getMaxChunks(): number;
|
|
111
153
|
getMaxDocs(): number;
|
|
112
154
|
getNameCapacity(): number;
|
|
@@ -114,6 +156,13 @@ export interface AlbexWasmExports {
|
|
|
114
156
|
getChunkStructSize(): number;
|
|
115
157
|
setCandidateMask(byteLen: number): void;
|
|
116
158
|
clearCandidateMask(): void;
|
|
159
|
+
/** Low 32 bits of the active pattern's aggregate character Bloom
|
|
160
|
+
* (ABI 6). Computed WASM-side in setPattern through the same pipeline
|
|
161
|
+
* searchBegin uses (split → optional stemming → fold), so the GPU
|
|
162
|
+
* pre-filter tests exactly the bits the CPU path would. */
|
|
163
|
+
getPatternBloomLo(): number;
|
|
164
|
+
/** High 32 bits of the active pattern's aggregate character Bloom. */
|
|
165
|
+
getPatternBloomHi(): number;
|
|
117
166
|
}
|
|
118
167
|
export interface AlbexPdfExports {
|
|
119
168
|
readonly memory: WebAssembly.Memory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasm-bindings.d.ts","sourceRoot":"","sources":["../src/wasm-bindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC;IAGpC,UAAU,IAAI,MAAM,CAAC;IACrB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,IAAI,IAAI,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"wasm-bindings.d.ts","sourceRoot":"","sources":["../src/wasm-bindings.ts"],"names":[],"mappings":"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"}
|
package/dist/wasm-bindings.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* albex v0.6.
|
|
2
|
+
* albex v0.6.1
|
|
3
3
|
* Zero-config local full-text search for documents — runs entirely in the browser, no server, no upload.
|
|
4
4
|
* (c) 2026 RafaCalRob
|
|
5
5
|
* @license MIT
|
|
@@ -32,28 +32,33 @@
|
|
|
32
32
|
/** Range of ABI versions this host code understands for the main module.
|
|
33
33
|
* Update both ends together with the Rust `abiVersion()` constant when
|
|
34
34
|
* the export surface changes. */
|
|
35
|
-
//
|
|
36
|
-
//
|
|
37
|
-
//
|
|
38
|
-
//
|
|
39
|
-
|
|
40
|
-
|
|
35
|
+
// ABI 7 adds runtime capacity (initWithCapacity, decision A16) and removes
|
|
36
|
+
// the compile-time tier system (`getTier` is gone), on top of ABI 6's batch
|
|
37
|
+
// frontier reads, ABI 5's truncation signalling and ABI 4's authoritative
|
|
38
|
+
// chunk enumeration. The required-exports list below already makes any
|
|
39
|
+
// older binary fail the missing-exports check, so a tolerant lower bound
|
|
40
|
+
// was dead code — the range is pinned to the one ABI this host actually
|
|
41
|
+
// speaks (audit 0.6.0, finding #7). The .wasm ships inside this package
|
|
42
|
+
// (files: wasm/pkg/*.wasm), so host TS and binary are always
|
|
43
|
+
// version-matched.
|
|
44
|
+
const MAIN_ABI_MIN = 7;
|
|
45
|
+
const MAIN_ABI_MAX = 7;
|
|
41
46
|
/** Range of ABI versions for the PDF module. */
|
|
42
47
|
const PDF_ABI_MIN = 1;
|
|
43
48
|
const PDF_ABI_MAX = 3;
|
|
44
49
|
/** Required function names on the main WASM. Adding a new one here forces
|
|
45
50
|
* the validator to check it; removing one is a breaking ABI bump. */
|
|
46
51
|
const MAIN_REQUIRED = [
|
|
47
|
-
'abiVersion', 'getBuffer', 'init',
|
|
52
|
+
'abiVersion', 'getBuffer', 'init', 'initWithCapacity',
|
|
48
53
|
'setDocumentName', 'beginDocument', 'feedXmlBytes', 'endDocument',
|
|
49
54
|
'beginXlsx', 'feedXlsxBytes',
|
|
50
55
|
'feedText', 'flushParagraph',
|
|
51
56
|
'setMaxErrors', 'setThreshold', 'setMaxResults',
|
|
52
57
|
'prepareQuery', 'getQueryKind', 'getQueryBranchCount',
|
|
53
|
-
'getQueryBranchPattern', 'selectQueryBranch',
|
|
58
|
+
'getQueryBranchPattern', 'selectQueryBranch', 'getQueryTruncationFlags',
|
|
54
59
|
'setPattern', 'search',
|
|
55
60
|
'searchBegin', 'searchSlice', 'getSearchCursor', 'getSearchTotal',
|
|
56
|
-
'getResultCount',
|
|
61
|
+
'getResultCount', 'getResultsPtr', 'getResultStride',
|
|
57
62
|
'getResultDocId', 'getResultLocation', 'getResultScore',
|
|
58
63
|
'getResultStart', 'getResultEnd', 'getResultChunkIdx',
|
|
59
64
|
'getResultDocName', 'getResultMatchCount',
|
|
@@ -66,10 +71,13 @@ const MAIN_REQUIRED = [
|
|
|
66
71
|
'restoreBegin', 'restoreFeed', 'restoreCommit',
|
|
67
72
|
'getDocId', 'getDocChunkCount', 'getDocName', 'isDocDeleted',
|
|
68
73
|
'removeDocument', 'compact',
|
|
74
|
+
'getDocChunkBase', 'getChunkLocationAt', 'getChunkByteLenAt', 'getChunkTextAt',
|
|
75
|
+
'listChunksBatch',
|
|
69
76
|
'setLanguage',
|
|
70
|
-
'
|
|
77
|
+
'getMaxChunks', 'getMaxDocs', 'getNameCapacity',
|
|
71
78
|
'getChunksPtr', 'getChunkStructSize',
|
|
72
79
|
'setCandidateMask', 'clearCandidateMask',
|
|
80
|
+
'getPatternBloomLo', 'getPatternBloomHi',
|
|
73
81
|
'getDocContentHashPtr', 'getDocContentHashLen', 'setDocumentContentHash',
|
|
74
82
|
'hashBegin', 'hashFeed', 'hashFinish',
|
|
75
83
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wasm-bindings.js","sourceRoot":"","sources":["../src/wasm-bindings.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"wasm-bindings.js","sourceRoot":"","sources":["../src/wasm-bindings.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* `Transferable` is opt-in per op; we use it for `indexFile` to avoid
|
|
10
10
|
* copying the file bytes into the worker.
|
|
11
11
|
*/
|
|
12
|
-
import type { AlbexOptions, IndexedDocument, SearchOptions, SearchResult, EngineStats, SearchStats } from './albex.js';
|
|
12
|
+
import type { AlbexDiagnostic, AlbexOptions, AuthoritativeChunk, IndexedDocument, SearchOptions, SearchResult, EngineStats, SearchStats } from './albex.js';
|
|
13
13
|
export type WorkerOp = {
|
|
14
14
|
kind: 'init';
|
|
15
15
|
opts: AlbexOptions;
|
|
@@ -21,9 +21,23 @@ export type WorkerOp = {
|
|
|
21
21
|
kind: 'search';
|
|
22
22
|
query: string;
|
|
23
23
|
options: SearchOptions;
|
|
24
|
+
} | {
|
|
25
|
+
kind: 'listChunks';
|
|
26
|
+
docId: number;
|
|
24
27
|
} | {
|
|
25
28
|
kind: 'removeDocument';
|
|
26
29
|
id: string;
|
|
30
|
+
}
|
|
31
|
+
/** Replace doc `name` with new content. `fileName` is the replacement
|
|
32
|
+
* file's own name (may differ from `name`); the bytes travel as a
|
|
33
|
+
* transferred ArrayBuffer like `indexFile`. */
|
|
34
|
+
| {
|
|
35
|
+
kind: 'replaceDocument';
|
|
36
|
+
name: string;
|
|
37
|
+
fileName: string;
|
|
38
|
+
buffer: ArrayBuffer;
|
|
39
|
+
} | {
|
|
40
|
+
kind: 'takeDiagnostics';
|
|
27
41
|
} | {
|
|
28
42
|
kind: 'compact';
|
|
29
43
|
} | {
|
|
@@ -69,18 +83,25 @@ export type WorkerResponse = {
|
|
|
69
83
|
id: number;
|
|
70
84
|
ok: true;
|
|
71
85
|
result: unknown;
|
|
72
|
-
}
|
|
86
|
+
}
|
|
87
|
+
/** `limit`/`max` are populated for capacity errors so the rehydrated
|
|
88
|
+
* AlbexCapacityError keeps reporting the runtime limit that overflowed. */
|
|
89
|
+
| {
|
|
73
90
|
id: number;
|
|
74
91
|
ok: false;
|
|
75
92
|
error: {
|
|
76
93
|
name: string;
|
|
77
94
|
kind?: string;
|
|
78
95
|
message: string;
|
|
96
|
+
limit?: string;
|
|
97
|
+
max?: number;
|
|
79
98
|
};
|
|
80
99
|
};
|
|
81
100
|
export type IndexFileResult = IndexedDocument;
|
|
82
101
|
export type SearchResultArr = SearchResult[];
|
|
102
|
+
export type ChunksResult = AuthoritativeChunk[];
|
|
83
103
|
export type StatsResult = EngineStats;
|
|
84
104
|
export type SearchStatsRes = SearchStats | null;
|
|
85
105
|
export type DocsResult = readonly IndexedDocument[];
|
|
106
|
+
export type DiagnosticsRes = AlbexDiagnostic[];
|
|
86
107
|
//# sourceMappingURL=worker-protocol.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-protocol.d.ts","sourceRoot":"","sources":["../src/worker-protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"worker-protocol.d.ts","sourceRoot":"","sources":["../src/worker-protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/worker-protocol.js
CHANGED
package/dist/worker-runtime.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* albex v0.6.
|
|
2
|
+
* albex v0.6.1
|
|
3
3
|
* Zero-config local full-text search for documents — runs entirely in the browser, no server, no upload.
|
|
4
4
|
* (c) 2026 RafaCalRob
|
|
5
5
|
* @license MIT
|
|
@@ -39,8 +39,18 @@ async function dispatch(op) {
|
|
|
39
39
|
}
|
|
40
40
|
case 'search':
|
|
41
41
|
return ensureEngine().search(op.query, op.options);
|
|
42
|
+
case 'listChunks':
|
|
43
|
+
return ensureEngine().listChunks(op.docId);
|
|
42
44
|
case 'removeDocument':
|
|
43
45
|
return ensureEngine().removeDocument(op.id);
|
|
46
|
+
case 'replaceDocument': {
|
|
47
|
+
// Same File-like wrapping as indexFile; the engine's replaceDocument
|
|
48
|
+
// handles remove + re-index + auto-compact under its own lock.
|
|
49
|
+
const file = new File([op.buffer], op.fileName);
|
|
50
|
+
return ensureEngine().replaceDocument(op.name, file);
|
|
51
|
+
}
|
|
52
|
+
case 'takeDiagnostics':
|
|
53
|
+
return ensureEngine().takeDiagnostics();
|
|
44
54
|
case 'compact':
|
|
45
55
|
ensureEngine().compact();
|
|
46
56
|
return undefined;
|
|
@@ -92,6 +102,11 @@ async function handle(req) {
|
|
|
92
102
|
name: e.name ?? 'Error',
|
|
93
103
|
kind: err instanceof AlbexError ? err.kind : undefined,
|
|
94
104
|
message: e.message ?? String(err),
|
|
105
|
+
// Capacity metadata (which pool + its runtime limit) — plain data,
|
|
106
|
+
// survives structuredClone, lets the main side rehydrate a full
|
|
107
|
+
// AlbexCapacityError.
|
|
108
|
+
limit: typeof e.limit === 'string' ? e.limit : undefined,
|
|
109
|
+
max: typeof e.max === 'number' ? e.max : undefined,
|
|
95
110
|
},
|
|
96
111
|
};
|
|
97
112
|
self.postMessage(res);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worker-runtime.js","sourceRoot":"","sources":["../src/worker-runtime.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"worker-runtime.js","sourceRoot":"","sources":["../src/worker-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGrD,IAAI,MAAM,GAAuB,IAAI,CAAC;AAEtC,SAAS,YAAY;IACnB,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,EAAY;IAClC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACpB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,gEAAgE;YAChE,2BAA2B;YAC3B,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;YAC5C,OAAO,YAAY,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC;QACD,KAAK,QAAQ;YACX,OAAO,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;QACrD,KAAK,YAAY;YACf,OAAO,YAAY,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAC7C,KAAK,gBAAgB;YACnB,OAAO,YAAY,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,KAAK,iBAAiB,CAAC,CAAC,CAAC;YACvB,qEAAqE;YACrE,+DAA+D;YAC/D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;YAChD,OAAO,YAAY,EAAE,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvD,CAAC;QACD,KAAK,iBAAiB;YACpB,OAAO,YAAY,EAAE,CAAC,eAAe,EAAE,CAAC;QAC1C,KAAK,SAAS;YACZ,YAAY,EAAE,CAAC,OAAO,EAAE,CAAC;YACzB,OAAO,SAAS,CAAC;QACnB,KAAK,OAAO;YACV,YAAY,EAAE,CAAC,KAAK,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,KAAK,UAAU;YACb,OAAO,YAAY,EAAE,CAAC,QAAQ,EAAE,CAAC;QACnC,KAAK,oBAAoB;YACvB,OAAO,YAAY,EAAE,CAAC,kBAAkB,EAAE,CAAC;QAC7C,KAAK,cAAc;YACjB,OAAO,YAAY,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAC1C,KAAK,cAAc;YACjB,YAAY,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,KAAK,cAAc;YACjB,YAAY,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,KAAK,eAAe;YAClB,YAAY,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACnC,OAAO,SAAS,CAAC;QACnB,KAAK,aAAa;YAChB,YAAY,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;YACpC,OAAO,SAAS,CAAC;QACnB,KAAK,MAAM;YACT,OAAO,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACtC,KAAK,MAAM;YACT,OAAO,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QACtC,KAAK,YAAY;YACf,OAAO,YAAY,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5C,KAAK,gBAAgB;YACnB,OAAO,YAAY,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;QAChD,KAAK,eAAe;YAClB,OAAO,YAAY,EAAE,CAAC,aAAa,EAAE,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,GAAkB;IACtC,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC;IACvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,EAAE,CAAC,CAAC;QAClC,MAAM,GAAG,GAAmB,EAAE,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QACpD,IAA0B,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,CAAC,GAAG,GAA8D,CAAC;QACzE,MAAM,GAAG,GAAmB;YAC1B,EAAE,EAAE,EAAE,EAAE,KAAK;YACb,KAAK,EAAE;gBACL,IAAI,EAAK,CAAC,CAAC,IAAI,IAAI,OAAO;gBAC1B,IAAI,EAAK,GAAG,YAAY,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;gBACzD,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC;gBACjC,mEAAmE;gBACnE,gEAAgE;gBAChE,sBAAsB;gBACtB,KAAK,EAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;gBAC1D,GAAG,EAAM,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS;aACvD;SACF,CAAC;QACD,IAA0B,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;AACH,CAAC;AAED,wEAAwE;AACxE,4EAA4E;AAC5E,2EAA2E;AAC3E,uEAAuE;AACvE,IAAI,MAAM,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;AAC9C,IAAI,CAAC,SAAS,GAAG,CAAC,EAA+B,EAAE,EAAE;IACnD,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC;IACpB,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC,CAAC"}
|