albex 0.6.1 → 0.7.0

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 CHANGED
@@ -7,8 +7,27 @@ and Albex follows [Semantic Versioning](https://semver.org/).
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.7.0] — 2026-06-26
11
+
10
12
  ### Changed
11
13
 
14
+ - **Zero-config in every bundler — the core WASM is now embedded by default.**
15
+ `import { AlbexEngine } from 'albex'` resolves to a new entry
16
+ (`dist/index.js`) that base64-embeds the ~47 KB baseline core in the JS
17
+ (~19 KB gzipped over the wire, decoded once and cached) and instantiates it
18
+ with **no `fetch` and no `new URL('…wasm', import.meta.url)`** asset
19
+ resolution. This removes the long-standing friction on **esbuild / Angular /
20
+ many Webpack** setups, which never rewrote that pattern and left integrators
21
+ copying binaries by hand. The URL-based path is unchanged and still used
22
+ whenever you set `wasmUrl` / `wasmBaseUrl` (CDN / SIMD), so existing configs
23
+ keep working — only the no-option default changed (baseline core, no SIMD;
24
+ set `wasmBaseUrl` for the SIMD variant). WASM-load failures now throw an
25
+ `AlbexInitError` whose message names the URL it tried and the one-line exit
26
+ (drop the option to fall back to the embedded core); `instantiateStreaming`
27
+ also falls back to a buffered compile when the host serves the `.wasm` with
28
+ the wrong MIME type (a common esbuild/static-server pitfall). The npm
29
+ `description` was corrected — it advertised "zero-config" while the default
30
+ actually depended on bundler asset resolution.
12
31
  - **IDF-aware relevance scoring — exact matches no longer saturate.** The old
13
32
  `rich_score` set `base = 1000 − avg_errors·200`, so every 0-error hit hit the
14
33
  1000 ceiling and `.min(1000)` discarded *all* the relevance bonuses (term
@@ -35,6 +54,19 @@ and Albex follows [Semantic Versioning](https://semver.org/).
35
54
 
36
55
  ### Added
37
56
 
57
+ - **`wasmBytes` / `pdfWasmBytes` options.** Hand the engine raw core/PDF bytes
58
+ (`BufferSource`) you loaded yourself; when present, no network fetch happens
59
+ and `wasmUrl`/`wasmBaseUrl`/SIMD auto-selection are bypassed. The escape
60
+ hatch for bundlers that can't serve the binary: import the `.wasm` as an
61
+ asset through your own pipeline and pass the bytes. `pdfWasmBytes` does the
62
+ same for the on-demand PDF module (which is too large to embed).
63
+ - **`albex/inline` subpath + `albexWasmBytes()` helper.** `albex/inline` is now
64
+ an alias of the default entry (kept so existing `from 'albex/inline'` imports
65
+ keep resolving); `albexWasmBytes()` returns the embedded baseline core as
66
+ decoded, cached bytes — e.g. to seed a worker with the same core.
67
+ - **`albex/wasm/pkg/*.wasm` subpath export.** The raw binaries are reachable as
68
+ package assets for bundler asset-imports (used by the `pdfWasmBytes` recipe
69
+ in the README's Advanced section).
38
70
  - **Dynamic capacity (ABI 7, decision A16 executed).** The compile-time
39
71
  capacity tiers are gone for good: the engine pools (chunk table, trigram
40
72
  signatures, text pool, doc table, content hashes, name pool, tombstone
package/README.md CHANGED
@@ -14,14 +14,28 @@ start typing, get results in milliseconds.
14
14
  npm install albex
15
15
  ```
16
16
 
17
- The WASM binary ships inside the package. Bundlers that recognise the
18
- `new URL('…', import.meta.url)` pattern (Vite, Webpack 5+, esbuild, Rollup,
19
- Parcel 2) copy it to the output and rewrite the URL automatically.
17
+ ```ts
18
+ import { AlbexEngine } from 'albex';
19
+
20
+ const engine = new AlbexEngine();
21
+ await engine.init();
22
+ ```
23
+
24
+ That's it. The WASM core is **embedded in the package** (base64, ~19 KB
25
+ gzipped over the wire, decoded once at startup), so there is nothing to
26
+ serve and nothing to configure. It works the same in **every** bundler —
27
+ Vite, Webpack, Rollup, Parcel, **esbuild and Angular included** — and in
28
+ Node ≥ 18. No `assets` entries, no copying binaries, no `wasmUrl`.
20
29
 
21
30
  Matrix-tested in CI today: **Vite** and **Node** (via the test suite).
22
- Other bundlers and runtimes (Next SSR, Bun, Deno) should work through the
23
- same pattern but are not currently exercised by the test matrix — if you
24
- hit a problem, open an issue.
31
+ Other bundlers and runtimes (Next SSR, Bun, Deno) ride the same embedded
32
+ path; if you hit a problem, open an issue.
33
+
34
+ > **PDFs** are the one exception: the PDF engine (~1.2 MB) is too large to
35
+ > embed, so it loads on demand the first time you index a `.pdf`. In bundlers
36
+ > that resolve `new URL('…', import.meta.url)` (Vite, Webpack 5+, Rollup,
37
+ > Parcel) it just works; on esbuild/Angular, hand it the bytes once via
38
+ > `pdfWasmBytes` (or a URL via `pdfWasmUrl`). See [Advanced](#advanced-configuration).
25
39
 
26
40
  ---
27
41
 
@@ -66,9 +80,10 @@ That's the entire onboarding. Read on for what else the engine can do.
66
80
  ## Features
67
81
 
68
82
  - **Zero server** — all text stays on the user's machine.
69
- - **Bundler-friendly default** — `new AlbexEngine()` works without extra
70
- configuration in bundlers that recognise the `new URL(..., import.meta.url)`
71
- asset pattern (see the "Install" section for the tested matrix).
83
+ - **Install and use** — the WASM core ships embedded in the JS, so
84
+ `new AlbexEngine()` runs in **any** bundler (esbuild/Angular included) and
85
+ in Node with nothing to serve and nothing to configure. SIMD and CDN
86
+ hosting stay available as opt-in options (see [Advanced](#advanced-configuration)).
72
87
  - **Fuzzy matching** — finds `"contrato"` even if you type `"conttrato"` (Bitap with adaptive edit distance). Sound under a two-stage pre-filter (character Bloom for exact tokens, a 256-bit **trigram q-gram signature** for everything) that prunes the candidate set ~10× on prose without ever dropping a real approximate match.
73
88
  - **Accent-insensitive** — `"accion"` matches `"acción"`, `"espana"` matches `"España"`, plus Latin Extended (Polish, Czech, Slovak, Turkish…).
74
89
  - **11 formats with varying depth** — DOCX · XLSX · PDF · HTML · MD · JSON · CSV · EML · RTF · TXT · XML. See the support table below; several formats are deliberately "lite" (CSV is RFC-4180-lite, EML is MIME-lite, RTF is regex-stripped, etc.).
@@ -259,12 +274,40 @@ Snapshots are admitted by **content**: a snapshot saved with `'large'`
259
274
  loads into a `'std'` engine whenever its counters fit, and fails cleanly
260
275
  (previous index intact) when they don't.
261
276
 
262
- ### Custom CDN
277
+ ### WASM source — SIMD, CDN, custom bytes
278
+
279
+ The default embeds the **baseline** core, which is all most apps need. Three
280
+ opt-in overrides, none required:
263
281
 
264
282
  ```ts
283
+ // SIMD on capable hosts: serve both binaries and let Albex probe.
284
+ new AlbexEngine({ wasmBaseUrl: '/albex' }); // dir with albex_wasm.wasm + albex_wasm_simd.wasm
285
+
286
+ // A single core from your CDN.
287
+ new AlbexEngine({ wasmUrl: 'https://cdn.example.com/albex_wasm.wasm' });
288
+
289
+ // Bytes you loaded yourself (skips all fetching).
290
+ new AlbexEngine({ wasmBytes: myArrayBuffer });
291
+ ```
292
+
293
+ Setting any of these bypasses the embedded core. If a fetch fails, the
294
+ thrown `AlbexInitError` names the URL it tried and tells you the one-line
295
+ exit (drop the option to fall back to the embedded core) — no guessing.
296
+
297
+ ### PDFs on esbuild / Angular
298
+
299
+ The PDF engine (~1.2 MB) loads on demand and isn't embedded. Bundlers that
300
+ resolve `new URL('…', import.meta.url)` serve it automatically; esbuild and
301
+ Angular don't, so hand it the bytes once (the binary ships in the package at
302
+ `albex/wasm/pkg/albex_pdf.wasm`):
303
+
304
+ ```ts
305
+ import pdfWasmUrl from 'albex/wasm/pkg/albex_pdf.wasm'; // bundler asset URL
306
+
265
307
  const engine = new AlbexEngine({
266
- wasmUrl: 'https://my-cdn.example.com/albex_wasm.wasm',
308
+ pdfWasmBytes: await fetch(pdfWasmUrl).then(r => r.arrayBuffer()),
267
309
  });
310
+ // …or a plain URL you host: new AlbexEngine({ pdfWasmUrl: '/albex/albex_pdf.wasm' })
268
311
  ```
269
312
 
270
313
  ---
@@ -0,0 +1,2 @@
1
+ export declare const ALBEX_WASM_BASE64: string;
2
+ //# sourceMappingURL=inline-wasm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-wasm.d.ts","sourceRoot":"","sources":["../../src/_generated/inline-wasm.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,iBAAiB,EAAE,MACg86D,CAAC"}
@@ -0,0 +1,9 @@
1
+ // AUTO-GENERATED by scripts/gen-inline.mjs — DO NOT EDIT.
2
+ // Source: wasm/pkg/albex_wasm_bg.wasm (baseline core, no SIMD).
3
+ // Regenerated on every `npm run build`. 47205 raw bytes →
4
+ // 62940 base64 chars (~61 KB text, ~46 KB raw).
5
+ /* eslint-disable */
6
+ // Typed as `string` (not the literal) so the emitted .d.ts stays a few bytes
7
+ // instead of inlining the whole base64 blob as a literal type.
8
+ export const ALBEX_WASM_BASE64 = 'AGFzbQEAAAABRwxgBX9/f39/AGACf38AYAR/f39/AGADf39/AGACf38Bf2ABfwF/YAF/AGAAAGADf39/AX9gAAF/YAR/f39/AX9gA35/fwF+A60BqwEAAQIDBAECBAMDAwMCAwMDAQMDAgQFAQMBAQEBBgYBAQEBBgcFBQcDAQgDBQEDBwYGBgYGBgYGBQkECAUJCQkFBQUHCgcHBgcGBgkGBgUBBQUBBwkJBgYBBQMGBwcHBgYGBgkJCgQDCQkFBgIBBQkJCQkJCQkJBQUFBQUFBQQEBQUJCAkJCQkJCQkJCQkGBwUFBQUEBAQIBQkFBQcJBAsBAQkBBQYJBgYGBwgFAwEAEgYZA38BQYCAwAALfwBBgMTFAAt/AEH6w8UACwfJC1YGbWVtb3J5AgALX19oZWFwX2Jhc2UDAQlnZXRCdWZmZXIANwphYmlWZXJzaW9uADgMcHJlcGFyZVF1ZXJ5ADsMZ2V0UXVlcnlLaW5kADwTZ2V0UXVlcnlCcmFuY2hDb3VudAA9F2dldFF1ZXJ5VHJ1bmNhdGlvbkZsYWdzAD4VZ2V0UXVlcnlCcmFuY2hQYXR0ZXJuAD8Rc2VsZWN0UXVlcnlCcmFuY2gAQApzZXRQYXR0ZXJuAEEQaW5pdFdpdGhDYXBhY2l0eQBDBGluaXQARAloYXNoQmVnaW4ARQhoYXNoRmVlZABGCmhhc2hGaW5pc2gARw9zZXREb2N1bWVudE5hbWUASBZzZXREb2N1bWVudENvbnRlbnRIYXNoAEkNYmVnaW5Eb2N1bWVudABKDGZlZWRYbWxCeXRlcwBLC2VuZERvY3VtZW50AFMJYmVnaW5YbHN4AFQNZmVlZFhsc3hCeXRlcwBVCGZlZWRUZXh0AFoOZmx1c2hQYXJhZ3JhcGgAWwxzZXRNYXhFcnJvcnMAXgxzZXRUaHJlc2hvbGQAXw1zZXRNYXhSZXN1bHRzAGALc2V0TGFuZ3VhZ2UAYRFnZXRQYXR0ZXJuQmxvb21MbwBiEWdldFBhdHRlcm5CbG9vbUhpAGMGc2VhcmNoAGcLc2VhcmNoQmVnaW4AaAtzZWFyY2hTbGljZQBpD2dldFNlYXJjaEN1cnNvcgBuDmdldFNlYXJjaFRvdGFsAG8SZ2V0U3RhdEJsb29tVGVzdGVkAHASZ2V0U3RhdEJsb29tUGFzc2VkAHETZ2V0U3RhdEJpdGFwTWF0Y2hlZAByDWdldFJlc3VsdHNQdHIAcw9nZXRSZXN1bHRTdHJpZGUAdA5nZXRSZXN1bHRDb3VudAB1DmdldFJlc3VsdERvY0lkAHYRZ2V0UmVzdWx0TG9jYXRpb24Adw5nZXRSZXN1bHRTY29yZQB4DmdldFJlc3VsdFN0YXJ0AHkMZ2V0UmVzdWx0RW5kAHoRZ2V0UmVzdWx0Q2h1bmtJZHgAexNnZXRSZXN1bHRNYXRjaENvdW50AHwVZ2V0UmVzdWx0TWF0Y2hTdGFydEF0AH0TZ2V0UmVzdWx0TWF0Y2hFbmRBdAB+EGdldFJlc3VsdERvY05hbWUAfwpnZXRTbmlwcGV0AIABFmdldFNuaXBwZXRXaW5kb3dPZmZzZXQAgQEQZ2V0U25pcHBldFdpbmRvdwCCAQ1nZXRDaHVua0NvdW50AIMBC2dldERvY0NvdW50AIQBC2dldFRleHRVc2VkAIUBD2dldFRleHRDYXBhY2l0eQCGARRnZXRMYXN0SW5kZXhPdmVyZmxvdwCHAQxnZXRNYXhDaHVua3MAiAEKZ2V0TWF4RG9jcwCJAQ9nZXROYW1lQ2FwYWNpdHkAigEMZ2V0Q2h1bmtzUHRyAIsBEmdldENodW5rU3RydWN0U2l6ZQCMARBzZXRDYW5kaWRhdGVNYXNrAI0BEmNsZWFyQ2FuZGlkYXRlTWFzawCOAQhnZXREb2NJZACPARBnZXREb2NDaHVua0NvdW50AJABCmdldERvY05hbWUAkQEPZ2V0RG9jQ2h1bmtCYXNlAJIBEmdldENodW5rTG9jYXRpb25BdACTARFnZXRDaHVua0J5dGVMZW5BdACUAQ5nZXRDaHVua1RleHRBdACVAQ9saXN0Q2h1bmtzQmF0Y2gAlgEUZ2V0RG9jQ29udGVudEhhc2hQdHIAlwEUZ2V0RG9jQ29udGVudEhhc2hMZW4AmAEMaXNEb2NEZWxldGVkAJkBDnJlbW92ZURvY3VtZW50AJoBB2NvbXBhY3QAmwEMc25hcHNob3RTaXplAJwBDXNuYXBzaG90Q2h1bmsAnQEMcmVzdG9yZUJlZ2luAKEBC3Jlc3RvcmVGZWVkAKMBDXJlc3RvcmVDb21taXQApQEKX19kYXRhX2VuZAMCCtDMAqsBQAACQAJAIAIgAUkNACACIARNDQEgAiAEEIGAgIAAAAsgASACEIGAgIAAAAsgACACIAFrNgIEIAAgAyABajYCAAsJABCpgYCAAAALSwEBfyOAgICAAEEQayIEJICAgIAAIARBCGpBACABIAIgAxCAgICAACAEKAIMIQMgACAEKAIINgIAIAAgAzYCBCAEQRBqJICAgIAAC7AEAQJ/AkAgAg0AIABBADYCBCAAQQA6AAAPCwJAAkACQAJAAkAgAS0AACIDwCIEQX9KDQBB+IHAgAAgBBCEgICAAA0DQfuBwIAAIAQQhICAgAANAkH+gcCAACAEEISAgIAADQEgAEEBNgIEIABBADoAAA8LIABBATYCBCAAQQE6AAAgACAEQb9/akH/AXFBGklBBXQgBHI6AAEPCyAAQQA6AAACQCACQQNLDQAgAEEBNgIEDwsgAEEENgIEDwsgAkECTQ0BIAEsAAFBv39KDQEgASwAAkG/f0oNASAAQQM2AgQgAEEAOgAADwsCQCACQQFGDQACQEGBgsCAACABLQABIgIQhICAgAANACAAQQE2AgQgAEEAOgAADwsCQAJAAkACQCADQb1+ag4DAAEDAgsCQCACQYABc0H/AXEiAkE/Sw0AIABBAjYCBCAAIAJBuIDAgABqLQAAIgI6AAEgACACQQBHOgAADwsgAkHAABCFgICAAAALAkAgAkGAAXNB/wFxIgJBP0sNACAAQQI2AgQgACACQfiAwIAAai0AACICOgABIAAgAkEARzoAAA8LIAJBwAAQhYCAgAAACyAAQQI2AgQgAEEAOgAADwsCQCACQYABc0H/AXEiAkHAAEkNACACQcAAEIWAgIAAAAsgAEECNgIEIAAgAkG4gcCAAGotAAAiAjoAASAAIAJBAEc6AAAPCyAAQQE2AgQgAEEAOgAADwsgAEEBNgIEIABBADoAAAtJAQF/QQAhAgJAIAAtAAEgAUH/AXFLDQAgAC0AAiECAkAgAC0AAA0AIAFB/wFxIAJB/wFxTQ8LIAFB/wFxIAJB/wFxSSECCyACCwkAEKmBgIAAAAsrAAJAIAMgAU8NACABIAMQgYCAgAAACyAAIAMgAWs2AgQgACACIAFqNgIACzUBAX9BACECAkAgACgCACABSw0AIAAoAgQhAgJAIAAtAAgNACABIAJNDwsgASACSSECCyACCycAAkAgAkGBAkkNACACQYACEIGAgIAAAAsgACACNgIEIAAgATYCAAsnAAJAIAJBwQBJDQAgAkHAABCBgICAAAALIAAgAjYCBCAAIAE2AgALKQACQCACQYHAAEkNACACQYDAABCBgICAAAALIAAgAjYCBCAAIAE2AgALSQACQAJAIAIgAUkNACACQYCABEsNASAAIAIgAWs2AgQgACABQZCVwIAAajYCAA8LIAEgAhCBgICAAAALIAJBgIAEEIGAgIAAAAtMAQF/I4CAgIAAQRBrIgQkgICAgAAgBEEIaiACIAMgAUHAABCAgICAACAEKAIMIQEgACAEKAIINgIAIAAgATYCBCAEQRBqJICAgIAAC0oBAX8jgICAgABBEGsiAySAgICAACADQQhqIAIgAUGABBCCgICAACADKAIMIQEgACADKAIINgIAIAAgATYCBCADQRBqJICAgIAAC0oBAX8jgICAgABBEGsiAySAgICAACADQQhqIAIgAUHAABCCgICAACADKAIMIQEgACADKAIINgIAIAAgATYCBCADQRBqJICAgIAAC0oBAX8jgICAgABBEGsiAySAgICAACADQQhqIAIgAUGAAhCCgICAACADKAIMIQEgACADKAIINgIAIAAgATYCBCADQRBqJICAgIAAC08BAX8jgICAgABBEGsiAiSAgICAACACQQhqIAFBkJXAgABBgIAEEIKAgIAAIAIoAgwhASAAIAIoAgg2AgAgACABNgIEIAJBEGokgICAgAALUQEBfyOAgICAAEEQayIDJICAgIAAIANBCGogASACQZCVwIAAQYCABBCAgICAACADKAIMIQIgACADKAIINgIAIAAgAjYCBCADQRBqJICAgIAAC0sBAX8jgICAgABBEGsiAySAgICAACADQQhqIAIgAUGAwAAQgoCAgAAgAygCDCEBIAAgAygCCDYCACAAIAE2AgQgA0EQaiSAgICAAAsqAAJAIAEgA0cNAAJAIAFFDQAgACACIAH8CgAACw8LIAEgAxCBgICAAAALPAEBf0EALQD4w8WAABoCQCABEJWAgIAAIgJFDQAgAkF8ai0AAEEDcUUNACABRQ0AIAJBACAB/AsACyACC/YTAgh/AX4CQAJAAkACQAJAAkAgAEH1AUkNAEEAIQEgAEFQQQAoAoiVwIAAa0F3cUF9aiICQUAgAkFASRtPDQUgAEELakF4cSEDQQAoAuCUwIAAIgRFDQNBACADayEAAkAgAxClgICAACIFQQJ0QcSRwIAAaigCACICRQ0AQQAhASADQQBBGSAFQQF2ayAFQR9GG3QhBkEAIQcDQAJAIAIiAigCBEF4cSIIIANJDQAgCCADayIIIABPDQAgCCEAIAIhByAIDQBBACEAIAIhBwwFCyABIAIoAhQiCCAIIAIgBkEddkEEcWooAhAiAkYbIAEgCBshASAGQQF0IQYgAg0ACwJAIAFFDQAgASECDAQLIAcNAgtBACEHIARBAiAFdCIBQQAgAWtycSIBRQ0BIAFoQQJ0QcSRwIAAaigCACECDAILAkBBACgC3JTAgABBECAAQQtqQfgDcSAAQQtJGyIDQQN2IgF2IgBBA3FFDQAgAEF/c0EBcSABaiICQQN0IgFB1JLAgABqIAFB3JLAgABqKAIAIgBBCGooAgAgAhCngICAACAAIAFBA3I2AgQgACABaiIBIAEoAgRBAXI2AgQMBAsgA0EAKALklMCAAE0NAgJAIAANAEEAKALglMCAACIARQ0DIABoQQJ0QcSRwIAAaigCACICKAIEQXhxIANrIQEgAiEHAkADQAJAIAIoAhAiAA0AIAIoAhQiAEUNAgsgACgCBEF4cSADayICIAEgAiABSSICGyEBIAAgByACGyEHIAAhAgwACwsgBxCigICAAAJAAkAgAUEQSQ0AIAcgA0EDcjYCBCAHIANqIgAgAUEBcjYCBCAAIAFqIAE2AgAgACABEJ6AgIAADAELIAcgASADaiIAQQNyNgIEIAcgAGoiACAAKAIEQQFyNgIECyAHQQhqIgFFDQMMBQtBAiABdCICQQAgAmtyIAAgAXRxaCICQQN0IgFB1JLAgABqIAFB3JLAgABqKAIAIgBBCGooAgAgAhCngICAACAAIANBA3I2AgQgACADaiIHIAEgA2siAkEBcjYCBCAAIAFqIAI2AgAgByACEJ6AgIAADAMLQQAhAgsCQANAIAIiAUUNASAHIAEgByABKAIEQXhxIgIgA2siBiAASSIIGyACIANJIgIbIQcgACAGIAAgCBsgAhshACABKAIQIgINACABKAIUIQIMAAsLIAdFDQACQEEAKALklMCAACIBIANJDQAgACABIANrTw0BCyAHEKKAgIAAAkACQCAAQRBJDQAgByADQQNyNgIEIAcgA2oiASAAQQFyNgIEIAEgAGog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AEEAKAL8lMCAAE0NAEEAQX82AvyUwIAACw8LIAEgABCfgICAAA8LQQAgATYC7JTAgABBAEEAKALklMCAACAAaiIANgLklMCAACABIABBAXI2AgQgASAAaiAANgIADwsQo4CAgAAAC4wBAQJ/I4CAgIAAQSBrIQFBACECAkADQCACQSBGDQEgASACakIANwIAIAJBCGohAgwACwsgAEIANwIAIABCADcCECAAIAEpAgA3AhggAEEANgI4IABBBmpCADcBACAAQSBqIAFBCGopAgA3AgAgAEEoaiABQRBqKQIANwIAIABBMGogAUEYaikCADcCAAs8AQF/AkBBACgC5JTAgAAiAkUNAEEAKALslMCAACACEJ+AgIAAC0EAIAA2AuyUwIAAQQAgATYC5JTAgAALfAECfwJAAkBBACgC3JTAgAAiAkEBIAFBA3Z0IgNxDQBBACACIANyNgLclMCAACABQXhxQdSSwIAAaiIBIQIMAQsgAUF4cSICQdSSwIAAaiEBIAJB3JLAgABqKAIAIQILIAEgADYCCCACIAA2AgwgACABNgIMIAAgAjYCCAsiAAJAIAFBgAJJDQAgACABEKGAgIAADwsgACABEJ+AgIAAC4gCAQR/IABCADcCECAAIAEQpYCAgAAiAjYCHCACQQJ0QcSRwIAAaiEDAkBBACgC4JTAgABBASACdCIEcQ0AIAMgADYCACAAIAM2AhggACAANgIMIAAgADYCCEEAQQAoAuCUwIAAIARyNgLglMCAAA8LIAFBAEEZIAJBAXZrIAJBH0YbdCECIAMoAgAhBANAAkAgBCIDKAIEQXhxIAFHDQAgAygCCCICIAA2AgwgAyAANgIIIABBADYCGCAAIAM2AgwgACACNgIIDwsgAkEddiEEIAJBAXQhAiADIARBBHFqIgUoAhAiBA0ACyAFQRBqIAA2AgAgACADNgIYIAAgADYCDCAAIAA2AggLyAIBBX8gACgCGCEBAkACQAJAIABBDGooAgAiAiAARw0AIABBFEEQIAAoAhQiAhtqKAIAIgMNAUEAIQIMAgsgAEEIaigCACIDIAI2AgwgAiADNgIIDAELIABBFGogAEEQaiACGyEEA0AgBCEFIAMiAkEUaiEEIAIoAhQiAw0AIAJBEGohBCACKAIQIgMNAAsgBUEANgIACwJAAkAgAUUNAAJAAkAgACAA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CyADIQQgAUEQaiADai0AAEH8AEcNAQsCQAJAAkAgBkEISQ0AIAQgB0kNASABQRBqIAdqIAQgB2sQuYCAgABFDQJBAEEAKAKks8WAAEEBcjYCpLPFgAAMAgsgBCAHSQ0AIAFBEGogB2ogBCAHayAGQQh0QaizxYAAahC6gICAACIDRQ0BIAZBAXRBqMPFgABqIAM7AQAgBkEBaiEGDAELIAcgBBCBgICAAAALIARBAWohBwwACwtBACAGOgChs8WAAAwBC0F/IQQLIAFBkAhqJICAgIAAIAQLCwBBAC0AoLPFgAALCwBBAC0AobPFgAALCwBBACgCpLPFgAALoQEBBH8jgICAgABBEGsiASSAgICAAEEAIQICQAJAIABBAC0AobPFgABPDQAgAEEHSw0BIAFBCGogAEEBdEGow8WAAGovAQAiAhCQgICAACABKAIMIQMgASgCCCEEIAEgAEEIdEGos8WAAGogAhCIgICAACAEIAMgASgCACABKAIEEJOAgIAACyABQRBqJICAgIAAIAIPCyAAQQgQhYCAgAAAC64BAQV/I4CAgIAAQRBrIgEkgICAgABBACECAkACQCAAQQAtAKGzxYAATw0AIABBB0sNAUEBIQIgAUEIaiAAQQF0QajDxYAAai8BACIDEJCAgIAAIAEoAgwhBCABKAIIIQUgASAAQQh0QaizxYAAaiADEIiAgIAAIAUgBCABKAIAIAEoAgQQk4CAgAAgAxDBgICAABoLIAFBEGokgICAgAAgAg8LIABBCBCFgICAAAALigQDA38BfgN/I4CAgIAAQcAUayIBJICAgIAAAkACQAJAIAANAEEAIQIMAQtBACECQQAgAEGAgAQgAEGAgARJGzYC0IjAgABBAC0A6IrAgAAhAwJAQYACRQ0AIAFBIGpBAEGAAvwLAAsgAUEYaiABQSBqIABBgAIgAEGAAkkbIgAQj4CAgAAgASgCGCABKAIcQZCVwIAAIAAQk4CAgAACQANAIAJBgAJGDQECQEHAAEUNACABQaACaiACakEAQcAA/AsACyACQcAAaiECDAALC0IAIQQgAUGoBGpCADcDACABQgA3A6AEIAFBEGogAUEgaiAAEIiAgIAAQQAhAiABQaAEaiEAIAFBoAJqIQUgASgCECABKAIUIAFBoAJqIAFBoARqEOSAgIAAIQYgA0H/AXFBAUch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IAEgBGshAyABIARJDQEgACADaiACQbiHwIAAaigCACAEEKqBgIAARQ0DCyACQQhqIQIMAQsLIAMgARCBgICAAAALIANBASADQQFLGyEBCyABC4kCAwJ/An4CfyOAgICAAEGQEGsiAySAgICAAEEAIQQCQEGAEEUNACADQQhqQQBBgBD8CwALQgAhBUIAIQYDQAJAAkAgBCACTw0AIAVCwABUDQELAkBBgBBFDQAgACADQQhqQYAQ/AoAAAsgACAGNwOAECAAIAU+AogQIAAgBCACSSAFQsAAUXE6AIwQIANBkBBqJICAgIAADwsgAyAEIAEgAhDrgICAACADQYgQaiADKAIAIAMoAgQQg4CAgAAgAygCjBAgBGohBCADLQCIEEEBRw0AIANBCGogAy0AiRAiB0EDdGoiCCAIKQMAQgEgBYaENwMAIAVCAXwhBUIBIAethiAGhCEGDAALCycAAkAQ6ICAgAANAEEADwsDQEF/EOmAgIAARQ0AC0EAKALch8CAAAuRCgMFfwF+DH8jgICAgABB4BhrIgAkgICAgABBACEBQQBCADcC1IjAgABBAEEAOgD0isCAAEEAQQA2AuyKwIAAQQBBADYC3IjAgABBAEEANgLch8CAAAJAQQAoAtCIwIAAIgJFDQBBACgCyIfAgABFDQBBACEBAkBBgAJFDQAgAEEoakEAQYAC/AsACyAAQSBqIABBKGogAkGAAiACQYACSRsiAhCPgICAACAAKAIgIAAoAiRBkJXAgAAgAhCTgICAAAJAA0AgAUGAAkYNAQJAQcAARQ0AIABBqAJqIAFqQQBBwAD8CwALIAFBwABqIQEMAAsLIABBsARqQgA3AwAgAEIANwOoBCAAQRhqIABBKGogAhCIgICAAAJAIAAoAhggACgCHCAAQagCaiAAQagEahDkgICAACIDDQBBACEBDAELAkBBAC0A6IrAgABBAUcNAEEAIQEgAEGoAmohBCAAQagEaiECA0AgAyABRg0BAkAgAUEERg0AIABBEGogBCACKAIAEI6AgIAAIAIgACgCECAAKAIUEOWAgIAANgIAIAJBBGohAiAEQcAAaiEEIAFBAWohAQwBCwtBBEEEEIWAgIAAAAtBACEBAkADQCABQfADRg0BAkBB/ABFDQAgAEG4BGogAWpBAEH8APwLAAsgAUH8AGohAQwACwtCACEFIABBqAhqQQhqQgA3AwAgAEG4CGpBCGpCADcDACAAQgA3A6gIIABCADcDuAhBACECAkADQAJAAkACQCACIANGDQAgAkEERg0EIABBCGogAEGoAmogAkEGdGogAEGoBGogAkECdCIGaigCABCJgICAACAAQcgIaiAAKAIIIgcgACgCDCIIEOaAgIAAQQAhAUEAIQQgACgC0BgiCUEGSQ0CQQAoAsSIwIAAIQQgCUEJSQ0BIARBAyAEQQNJGyEEDAILAkBB8ANFDQBBpI3AgAAgAEG4BGpB8AP8CgAAC0EAIABBqAhqQQhqKQMANwKckcCAAEEAIAApA6gINwKUkcCAAEEAIAApA7gINwKkkcCAAEEAIABBuAhqQQhqKQMANwKskcCAAAJAQYACRQ0AQfWKwIAAIABBqAJqQYAC/AoAAAtBACADNgKIjcCAAEEAIAU3A5iNwIAAQQEhAUEAQQE6APSKwIAAQQAgAEGoBGpBCGopAwA3A4CNwIAAQQAgACkDqAQ3A/iMwIAAQQBBAC8ByIjAgAA7AYyNwIAAQQBBACgCxIjAgAA2ApCNwIAAQQBBACgCyIfAgAAiAjYC8IrAgABBACACNgLUiMCAAAwECyAEQQBHIQQLIAJBAWohCiAAKQPIGCAFhCEFIABBuAhqIAZqIAQ2AgAgAEG4BGogAkH8AGxqIQtBACEJQQAhDANAIAxBPUshDSAJIQQCQANAIAQhDiAQIQ8gCSERIAIhECABIAhPDQEgDQ0BIAAgASAHIAgQhoCAgAAgAEHYGGogACgCACAAKAIEEIOAgIAAIAAoAtwYIAFqIQFBACEJQQAhBCAALQDYGEEBRw0AAkAgAC0A2RgiAkFQakH/AXFBCkkNAEEAIQQgAkFfcUG/f2pB/wFxQRlLDQELQQEhCSARIQQgESAOcUEBcUUNAAtBASEJIAsgDEEBdGogDyAQIAIQqYCAgAA7AQAgDEEBaiEMDAELCyAAQagIaiAGaiAMNgIAIAohAgwACwtBBEEEEIWAgIAAAAsgAEHgGGokgICAgAAgAQvfKQoGfwF+An8BfgF/AX4WfwN+An8CfiOAgICAAEGg+QBrIgEkgICAgAACQAJAQQAtAPSKwIAARQ0AAkBBgAJFDQAgAUGYAWpB9YrAgABBgAL8CgAAC0EAIQIgAUGIB2pBCGoiA0EAKQOAjcCAADcDACABQQApA/iMwIAANwOIB0EAKAKIjcCAACEEQQAvAYyNwIAAIQVBACgCkI3AgAAhBkEAKQOYjcCAACEHAkBB8ANFDQAgAUGYA2pBpI3AgABB8AP8CgAACyABQZgHakEIakEAKQKckcCAADcDACABQagHakEIakEAKQKskcCAADcDACABQQApApSRwIAANwOYByABQQApAqSRwIAANwOoByABQZABaiABQZgBaiABKAKIByIIEImAgIAAIAFB+McAaiABKAKQASABKAKUARDmgICAACABQYgBaiABQdgBaiABKAKMBxCJgICAACABQYjYAGogASgCiAEgASgCjAEQ5oCAgAAgAUGAAWogAUGYAmogAygCABCJgICAACABQZjoAGogASgCgAEgASgChAEQ5oCAgAAgAUH4AGogAUHYAmogASgClAcQiYCAgAAgAUHoN2ogASgCeCABKAJ8EOaAgIAAAkBBkBBFIgMNACABQbgHaiABQfjHAGpBkBD8CgAACwJAIAMNACABQbgHakGQEGogAUGI2ABqQZAQ/AoAAAsCQCADDQAgAUHYJ2ogAUGY6ABqQZAQ/AoAAAtBACgC8IrAgAAiCa0iCkEAKALsisCAACILrSAArXwiDCAKIAxUG6chDUIAIQwDQCABQagHaiACQQJ0aiEAAkADQAJAIAQgAiIDRw0AIAZBAyAGQQNJGyEOIAsgDSALIA1LGyEPIARBAWohECAGQQBHIREgCEF/cyESIARBf2pB/////wNxIRMgAUGo+ABqQQRqIRQgBUH//wNxIRVCACEKQX8hBkF/IRYDQEEAKALQh8CAACEXQQAoAriHwIAAIRhBAC0AxMPFgABBAXEhGUEAIQMgFiEaAkACQAJAAkACQANAIAMhGyALQQV0IRwgDSALayEdIAshHgJAA0ACQAJAAkACQAJAIB4gD0cNAEEAIQNBACAPNgLsisCAACAPIAlJDRNBAEEAOgDEw8WAAEEAQQA6APSKwIAAQQAoAtyHwIAAIgNBPGxBhNXEgABqIQAgA0HIAUshHwNAIANBAkkNEwJAQTxFIgINACABQdj4AGpBwNXEgABBPPwKAAALIANBf2ohAyAfDQICQCACDQBBwNXEgAAgAEE8/AoAAAsCQCACDQAgACABQdj4AGpBPPwKAAALIAMQ6oCAgAAgAEFEaiEADAALCyAe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AyAbSxshAgJAAkACQAJAAkBBACgC3IfAgAAiA0UNACADQQAoAsyIwIAASQ0CQQAvAczVxIAAIQAMAQtBACEAQQAoAsyIwIAADQILIABB//8DcSAcQf//A3FPDQNBACAbNgLU1cSAAEEAIAI2AtDVxIAAQQAgHDsBzNXEgABBACAiNgLI1cSAAEEAIB42AsTVxIAAQQAgFjYCwNXEgABBACABKQK4eDcC2NXEgABBACAENgL41cSAAEEAIAFBuPgAakEIaikCADcC4NXEgABBACABQbj4AGpBEGopAgA3AujVxIAAQQAgAUG4+ABqQRhqKQIANwLw1cSAACADEOqAgIAADAMLIANByAFPDQELQQAgA0EBajYC3IfAgAAgA0E8bCIAQdTVxIAAaiAbNgIAIABB0NXEgABqIAI2AgAgAEHM1cSAAGogHDsBACAAQcjVxIAAaiAiNgIAIABBxNXEgABqIB42AgAgAEHA1cSAAGogFjYCACAAQdjVxIAAaiABKQK4eDcCACAAQeDVxIAAaiABQbj4AGpBCGopAgA3AgAgAEHo1cSAAGogAUG4+ABqQRBqKQIANwIAIABB8NXEgABqIAFBuPgAakEYaikCADcCACAAQfjVxIAAaiAENgIAA0AgA0UNAiADQTxsIgBBzNXEgABqLwEAIANBf2pBAXYiA0E8bCICQczVxIAAai8BAE8NAiAAQcDVxIAAaiEfAkBBPEUiAA0AIAFBiNgAaiAfQTz8CgAACyACQcDVxIAAaiECAkAgAA0AIB8gAkE8/AoAAAsgAA0AIAIgAUGI2ABqQTz8CgAADAALCwsgA0HIARCFgICAAAALIANBBEYNASADQQFqIQIgACgCACEfIABBBGohACAfDQALIAFBuAdqIANBkBBsaikDgBAgDIQhDAwBCwsgBEEEIARBBEkbQQQQhYCAgAAAC0EBIQMLIAFBoPkAaiSAgICAACADC+MCAQV/I4CAgIAAQcAAayIBJICAgIAAQQAhAgJAAkACQANAIAIhAwJAIAJBAXQiBEEBciIFIABPDQACQCACQeMASw0AIAUgAiAFQTxsQczVxIAAai8BACACQTxsQczVxIAAai8BAEkbIQMMAQsgBUHIARCFgICAAAALAkAgBEECaiIEIABPDQAgAkHiAEsNAiADQcgBTw0DIAQgAyAEQTxsQczVxIAA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IAFBJGogAEE8bEHA1cSAAGpBPPwKAAALIAEoAiQhAkEAIQNBACgC0IfAgAAhBEEAIQVBACEGAkADQCAEIAYiAEYNASABQRhqELGAgIAAIAAgASgCHCIGTw0DIABBAWohBiABKAIYIgcgBWohCCAFQRRqIQUgCCgCACACRw0ACyAHIABBFGxqIgUoAgQhACABQRBqIAUvAQgiAxCQgICAACABKAIUIQYgASgCECEIIAFBCGoQs4CAgAAgACADaiIFIABJDQMgBSABKAIMIgRLDQQgCCAGIAEoAgggAGogAxCTgICAAAsgAUHgAGokgICAgAAgAw8LIABByAEQhYCAgAAACyAAIAYQhYCAgAAACyAAIAUQgYCAgAAACyAFIAQQgYCAgAAAC8sCAQZ/I4CAgIAAQeAAayIBJICAgIAAAkACQAJAAkACQAJAIABBACgC3IfAgABJDQAgAUEkahCdgICAAAwBCyAAQccBSw0BQTxFDQAgAUEkaiAAQTxsQcDVxIAAakE8/AoAAAtBACEAAkAgASgCKCICQQAoAsiHwIAATw0AIAFBGGoQr4CAgAAgAiABKAIcIgBPDQIgASgCGCACQQV0aiIAKAIQIQIgAUEQaiAAKAIUIgBBgIAEIABBgIAESRsiABCQgICAACABKAIUIQMgASgCECEEIAFBCGoQsICAgAAgACACaiIFIABJDQMgBSABKAIMIgZLDQQgBCADIAEoAgggAmogABCTgICAAAsgAUHgAGokgICAgAAgAA8LIABByAEQhYCAgAAACyACIAAQhYCAgAAACyACIAUQgYCAgAAACyAFIAYQgYCAgAAACwsAQQAoAsDDxYAAC4oJAQt/I4CAgIAAQYABayIDJICAgIAAQQBBADYCwMPFgAACQAJAAkACQAJAAkACQAJAAkACQCAAQQAoAtyHwIAASQ0AIANBxABqEJ2AgIAADAELIABBxwFLDQFBPEUNACADQcQAaiAAQTxsQcDVxIAAakE8/AoAAAtBACEEIAMoAkgiAEEAKALIh8CAAE8NBCADQThqEK+AgIAAIAAgAygCPCIETw0BQQAhBSADKAJYIQYgAygCOCAAQQV0aiIAKAIUIQcgACgCECEIIAMoAlQiACABTQ0DQQAgACABayIEIAQgAEsbIgUgCGohBEEAIQADQCAAQRNLDQQgBSAAaiIJIAdPDQQgA0EwahCwgICAACAEIABqIgEgAygCNCIKTw0DAkACQCADKAIwIARqIABqLQAAIgFBCkYNACABQSBHDQELIAlBAWohBQwFCyAAQQFqIQAMAAsLIABByAEQhYCAgAAACyAAIAQQhYCAgAAACyABIAoQhYCAgAAACyAHIAYgAmoiACAHIABJGyEBAkACQAJAIAAgB08NACAHIAFrIgBBFCAAQRRJGyEKIAEgCGohBEEAIQADQCAKIABGDQEgA0EoahCwgICAACAEIABqIgkgAygCLCICTw0CAkAgAygCKCAEaiAAai0AACIJQQpGDQAgCUEgRg0AIABBAWohAAwBCwsgACABaiEBCyAFIQQCQANAIAQiAEEARyEEIABFDQMgBSAHTw0DIANBIGoQsICAgAAgCCAAaiIEIAMoAiQiCU8NASAAQX9qIQQgAygCICAIaiAAaiwAAEFASA0AC0EBIQQMAgsgBCAJEIWAgIAAAAsgCSACEIWAgIAAAAsCQCABIAdPDQAgASAAIAEgAEkbIQoDQAJAIAEgAEsNACAKIQEMAgsgA0EYahCwgICAAAJAIAggAWoiBSADKAIcIglPDQAgAygCGCAIaiABaiwAAEFATg0CIAFBf2ohAQwBCwsgBSAJEIWAgIAAAAsgASAAIAEgAEsbIQkCQAJAIAQNAEEAIQUMAQtBfCEEA0ACQCAEDQBBBCEFDAILIARBlJXAgABqIARBnIDAgABqLQAAOgAAIARBAWohBAwACwsgA0EQaiAFQfz/A0GAgAQgCSAHSRsgBWsiAiAJIABrIgQgAiAESRsiCiAFaiIEEJGAgIAAIAMoAhQhCyADKAIQIQwgA0EIahCwgICAACAKIAAgCGoiBmoiCCAKSQ0CIAggAygCDCINSw0DIAwgCyADKAIIIAZqIAoQk4CAgAACQCAJIAdPDQAgBEH8/wNLDQBBACEEIAVBACABIABrIgcgByABSyIJGyIIIAIgCCACSRtqIQECQANAIARBBEYNASABIARqIghBgIAETw0EIAhBkJXAgABqIARBnIDAgABqLQAAOgAAIARBAWohBAwACwsgBUEAIAcgCRsiCCACIAggAkkbaiAEaiEEC0EAIAA2AsDDxYAACyADQYABaiSAgICAACAEDwsgCEGAgAQQhYCAgAAACyAGIAgQgYCAgAAACyAIIA0QgYCAgAAACwsAQQAoAsiHwIAACwsAQQAoAtCHwIAACwsAQQAoAsyHwIAACwsAQQAoAsCHwIAACwsAQQAoAqCNwIAACwsAQQAoAryHwIAACwsAQQAoAriHwIAACwsAQQAoAsSHwIAACzQBAn8jgICAgABBEGsiACSAgICAACAAQQhqEK+AgIAAIAAoAgghASAAQRBqJICAgIAAIAELBABBIAusAQEEfyOAgICAAEEQayIBJICAgIAAIAFBCGoQtoCAgAAgASgCCCECAkAgASgCDCIDIABBgIAEIABBgIAESRtBAnYiBCADIARJG0ECdCIERQ0AIAJBkJXAgAAgBPwKAAALIANBAnQgBGshAyACIARqIQQCQANAIANFDQEgBEEANgIAIANBfGohAyAEQQRqIQQMAAsLQQAgAEEDSzoAxMPFgAAgAUEQaiSAgICAAAsNAEEAQQA6AMTDxYAAC20BAn8jgICAgABBEGsiASSAgICAAEF/IQICQAJAIABBACgC0IfAgABPDQAgAUEIahCxgICAACAAIAEoAgwiAk8NASABKAIIIABBFGxqKAIAIQILIAFBEGokgICAgAAgAg8LIAAgAhCFgICAAAALbQECfyOAgICAAEEQayIBJICAgIAAQQAhAgJAAkAgAEEAKALQh8CAAE8NACABQQhqELGAgIAAIAAgASgCDCICTw0BIAEoAgggAEEUbGooAhAhAgsgAUEQaiSAgICAACACDwsgACACEIWAgIAAAAviAQEGfyOAgICAAEEgayIBJICAgIAAQQAhAgJAAkACQAJAIABBACgC0IfAgABPDQAgAUEYahCxgICAACAAIAEoAhwiAk8NASABKAIYIABBFGxqIgIoAgQhACABQRBqIAIvAQgiAhCQgICAACABKAIUIQMgASgCECEEIAFBCGoQs4CAgAAgACACaiIFIABJDQIgBSABKAIMIgZLDQMgBCADIAEoAgggAGogAhCTgICAAAsgAUEgaiSAgICAACACDwsgACACEIWAgIAAAAsgACAFEIGAgIAAAAsgBSAGEIGAgIAAAAttAQJ/I4CAgIAAQRBrIgEkgICAgABBACECAkACQCAAQQAoAtCHwIAATw0AIAFBCGoQsYCAgAAgACABKAIMIgJPDQEgASgCCCAAQRRsaigCDCECCyABQRBqJICAgIAAIAIPCyAAIAIQhYCAgAAAC6wBAQN/I4CAgIAAQRBrIgIkgICAgABBfyEDAkACQAJAIABBACgC0IfAgABPDQAgAkEIahCxgICAACAAIAIoAgwiBE8NASABIAIoAgggAEEUbGoiACgCEE8NACACEK+AgIAAIAAoAgwgAWoiACACKAIEIgNPDQIgAigCACAAQQV0aigCDCEDCyACQRBqJICAgIAAIAMPCyAAIAQQhYCAgAAACyAAIAMQhYCAgAAAC6wBAQN/I4CAgIAAQRBrIgIkgICAgABBACEDAkACQAJAIABBACgC0IfAgABPDQAgAkEIahCxgICAACAAIAIoAgwiBE8NASABIAIoAgggAEEUbGoiACgCEE8NACACEK+AgIAAIAAoAgwgAWoiACACKAIEIgNPDQIgAigCACAAQQV0aigCFCEDCyACQRBqJICAgIAAIAMPCyAAIAQQhYCAgAAACyAAIAMQhYCAgAAAC68CAQV/I4CAgIAAQSBrIgIkgICAgABBACEDAkACQAJAAkACQCAAQQAoAtCHwIAATw0AIAJBGGoQsYCAgAAgACACKAIcIgRPDQEgASACKAIYIABBFGxqIgAoAhBPDQAgAkEQahCvgICAACAAKAIMIAFqIgAgAigCFCIDTw0EIAIoAhAgAEEFdGoiAygCECEAIAJBCGogAygCFCIDQYCABCADQYCABEkbIgMQkICAgAAgAigCDCEEIAIoAgghBSACELCAgIAAIAMgAGoiASADSQ0CIAEgAigCBCIGSw0DIAUgBCACKAIAIABqIAMQk4CAgAALIAJBIGokgICAgAAgAw8LIAAgBBCFgICAAAALIAAgARCBgICAAAALIAEgBhCBgICAAAALIAAgAxCFgICAAAALnQQBCn8jgICAgABBwABrIgMkgICAgABBACEEAkAgAEEAKALQh8CAAE8NACADQTBqELGAgIAAAkACQAJAIAAgAygCNCIFTw0AIAEgAygCMCAAQRRsaiIGKAIQIgVPDQNBACEAQQBBfyABIAJqIgIgAiABSRsiAiAFIAIgBUkbIgIgAWsiBSAFIAJLGyEEIAYoAgwgAWoiB0EFdEEUciEGQQAhAQNAIAQgAEYNBCADQShqEK+AgIAAAkACQCAHIABqIgIgAygCLCIFTw0AIAMoAiggBmoiCCgCACICIAFBCGoiCWoiCkGAgARNDQEgACEEDAYLIAIgBRCFgICAAAALIAhBfGooAgAhBSAIQXhqKAIAIQggA0EgaiABIAFBBGoiCxCRgICAACADKAIkIQEgAygCICEMIAMgAjYCPCAMIAEgA0E8akEEEJOAgIAAIANBGGogCyAJEJGAgIAAIAMoAhwhASADKAIYIQsgAyAINgI8IAsgASADQTxqQQQQk4CAgAAgA0EQaiAJIAoQkYCAgAAgAygCFCEIIAMoAhAhCSADQQhqELCAgIAAIAUgAmoiASAFSQ0CIAEgAygCDCILSw0DIAkgCCADKAIIIAVqIAIQk4CAgAAgBkEgaiEGIABBAWohACAKIQEMAAsLIAAgBRCFgICAAAALIAUgARCBgICAAAALIAEgCxCBgICAAAALIANBwABqJICAgIAAIAQLagECfyOAgICAAEEQayIBJICAgIAAQQAhAgJAAkAgAEEAKALQh8CAAE8NACABQQhqELKAgIAAIAAgASgCDCICTw0BIAEoAgggAEEDdGohAgsgAUEQaiSAgICAACACDwsgACACEIWAgIAAAAsEAEEIC3ABAn8jgICAgABBEGsiASSAgICAAEEAIQICQAJAIABBACgC0IfAgABPDQAgAUEIahCxgICAACAAIAEoAgwiAk8NASABKAIIIABBFGxqLwEKQQFxIQILIAFBEGokgICAgAAgAg8LIAAgAhCFgICAAAAL/wEBCH8jgICAgABBEGsiASSAgICAAEEAIQJBACgC0IfAgAAhA0EAIQRBACEFAkACQAJAA0AgAyAFIgZGDQEgAUEIahCxgICAACAGIAEoAgwiBU8NAyAGQQFqIQUgASgCCCIHIARqIQggBEEUaiEEIAgoAgAgAEcNAAtBASECIAcgBkEUbGoiBiAGLwEKQQFyOwEKIABBACgCuIfAgABPDQAgARC1gICAACAAQQZ2IgYgASgCBCIETw0BIAEoAgAgBkEDdGoiBiAGKQMAQgEgAEE/ca2GhDcDAAsgAUEQaiSAgICAACACDwsgBiAEEIWAgIAAAAsgBiAFEIWAgIAAAAv+BwIVfwJ+I4CAgIAAQdAAayIAJICAgIAAQQAoAtCHwIAAIQEgAEE4ahC1gICAACAAKAI8QQN0IQIgACgCOCEDAkADQAJAIAINAEEAIQRBACEFQQAhBkEAIQNBACEHDAILIANCADcDACACQXhqIQIgA0EIaiED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IAJBACgCzIfAgAA2AvABIAggBCACQfABakEEEJOAgIAAIAJBmAFqIAJBsAJqQRRBGBCMgICAACACKAKcASEEIAIoApgBIQggAkEAKALUh8CAADYC8AEgCCAEIAJB8AFqQQQQk4CAgAAgAkGQAWogAkGwAmpBGEEcEIyAgIAAIAIoApQBIQQgAigCkAEhCCACIA82AvABIAggBCACQfABakEEEJOAgIAAIAJBiAFqIAJBsAJqQRxBIBCMgICAACACKAKMASEEIAIoAogBIQggAkEAKALYh8CAADYC8AEgCCAEIAJB8AFqQQQQk4CAgAAgAkGAAWogAkGwAmpBIEEoEIyAgIAAIAIoAoQBIQQgAigCgAEhCCACIBA3A/ABIAggBCACQfABakEIEJOAgIAAIAJB+ABqIAJBsAJqQShBLBCMgICAACACKAJ8IQQgAigCeCEIIAJBACgCuIfAgAA2AvABIAggBCACQfABakEEEJOAgIAAIAJB8ABqIAJBsAJqQSxBMBCMgICAACACKAJ0IQQgAigCcCEIIAJBACgCvIfAgAA2AvABIAggBCACQfABakEEEJOAgIAAIAJB6ABqIAJBsAJqQTBBNBCMgICAACACKAJsIQQgAigCaCEIIAJBACgCwIfAgAA2AvABIAggBCACQfABakEEEJOAgIAAIAJB4ABqIAJBsAJqQTRBOBCMgICAACACKAJkIQQgAigCYCEIIAJBACgCxIfAgAA2AvABIAggBCACQfABakEEEJOAgIAAIAENBSACQfABaiACQbACakHAAPwKAAAMBQsgAyABEIGAgIAAAAsgAigC4AEgBGogAkGwAmoQn4GAgAAgBEEUaiEEIAFBAWohASAQIAJBsAJqQRQQnoGAgAAhEAwACwsgEUIANwMAIBJCADcDACACQgA3A7ACIAJB6AFqEK+AgIAAAkAgASACKALsASITSQ0AIAEgExCFgICAAAALIAIoAugBIARqIAJBsAJqEKCBgIAAIARBIGohBCABQQFqIQEgECACQbACakEYEJ6BgIAAIRAMAAsLIAVBgIAEIAVBgIAESRsiAyAAaiEIIAJBwAJqIRIgAkG4AmohE0EAIQQDQCAIIABNDQECQAJAAkACQAJAAkACQAJAAkACQCAAQcAASQ0AAkAgACAHSQ0AAkAgACAJSQ0AAkACQAJAIAAgC0kN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IAEoAjQQk4CAgAAgAyAAaiEAIA8hAgwACwtBACEDQQAoAsjDxYAAIAJqQQAoAtjDxYAASw0BQQAhBQJAAkACQAJAIAJBACgC0MPFgAAiB0EAKALUw8WAACIAa0sNAEEAKALAkcCAACEHDAELIAAgAmoiAyAASQ0BQQAhBSADIAdBAXQiACADIABLGyIAQQggAEEISxsiAEEASA0BQQAhBQJAIAdFDQAgASAHNgKMASABQQAoAsCRwIAANgKEAUEBIQULIAEgBTYCiAEgAUH4AGogACABQYQBahCXgICAAAJAIAEoAnhBAUcNACABKAKAASEAIAEoAnwhBQwDC0EAIAEoAnwiBzYCwJHAgABBACAANgLQw8WAAEEAKALUw8WAACEACwJAIAJFDQAgByAAakGQlcCAACAC/AoAAAtBAEEAKALUw8WAACACajYC1MPFgABBACgCyMPFgAAgAmohAAwCCwsgBSAAEKKBgIAAAAtBACAANgLIw8WAAEEBIQMLIAFBkAFqJICAgIAAIAMLxAMBB38jgICAgABBIGsiASSAgICAAEEAIQJBACgC0IfAgAAhA0EAIQRBACEFAkACQANAIAMgBEYNASABQRhqELGAgIAAIAQgASgCHCIGTw0CIAEoAhggAmooAgBBAWoiBkF/IAYbIgYgBSAGIAVLGyEFIAJBFGohAiAEQQFqIQQMAAsLQQAgBSAAIAUgAEsbNgLYh8CAACABQRBqELWAgIAAIAEoAhRBA3QhBCABKAIQIQUCQANAIARFDQEgBUIANwMAIARBeGohBCAFQQhqIQUMAAsLQQAhBEEAKALQh8CAACEGQQAoAriHwIAAIQBBCiEFA0ACQAJAIAYgBEYNACABQQhqELGAgIAAAkACQCAEIAEoAgwiAk8NACABKAIIIAVqIgItAABBAXFFDQMgAkF2aigCACICIABJDQEMAwsgBCACEIWAgIAAAAsgARC1gICAAAJAIAJBBnYiAyABKAIEIgdPDQAgASgCACADQQN0aiIDIAMpAwBCASACQT9xrYaENwMADAILIAMgBxCFgICAAAALEN2AgIAAIAFBIGokgICAgAAPCyAEQQFqIQQgBUEUaiEFDAALCyAEIAYQhYCAgAAAC8EPBg9/AX4BfwF+BH8BfiOAgICAAEHQAGsiACSAgICAAAJAAkACQEEALQDMw8WAACIBDQAQ3YCAgAAMAQsCQCABQQNJDQBBACECAkBBACgCyMPFgABBACgC2MPFgABHDQBBACECQQAoAuDDxYAAIgNBFGxBACgC3MPFgAAiBEEYbCIFaiIGIANBA3RqIgdBACgC6MPFgAAiCGoiCUEAKALkw8WAACIKakEAKALUw8WAACILRw0AQQAoAsCRwIAAIQwCQCABQQNGDQBBACECQqXGiKHInKf5SyAMIAsQnoGAgABBACkD8MPFgABSDQELIAxBFGohAiALQRhuIg1BAWohDiAKrSEPQQAhAQJAAkACQANAAkAgBCABRw0AIAVBKGohECAErSEPIAitIRFBACESIAMhEwwCCyAOIAFBAWoiAUYNAiACNQAAIhFCgARWDQMgAkF8aiEUIAJBGGohAiAUNQAAIBF8IA9YDQAMAwsLA0ACQAJAAkACQAJAIBIgA0YNACASQRRsIAVqIgJBFGohASACQWtLDQMgASALSw0CIAwgAmoiAjMACCACNQAEfCARVg0HIAI1ABAgAjUADHwgD1YNByACLwAKQQFxDQQgAigAACEVIBAhAiATIRQDQCAUQX9qIhRFDQUgAiALSw0CIAwgAmohASACQRRqIg4hAiABQXZqLQAAQQFxDQAgDiECIAFBbGooAAAgFUYNCAwACwsQwoCAgABBACEBQQAgAzYC0IfAgABBACAENgLIh8CAAEEAIAg2AtSHwIAAQQAgCjYCzIfAgAAgDUEYbCEVQRghDkEAIQICQANAAkAgBCACRw0AIAwgBWohFUEAIQJBACEBAkACQAJAAkACQAJAAkACQAJAA0ACQCADIAFHDQAgDCAGaiEOQQAhAkEAIQEDQCADIAFGDQMgBiACaiIUQQhqIQQgFEF3Sw0IIAQgC0sNCSAAQThqELKAgIAAIAEgACgCPCIUTw0EIAAoAjggAmogDiACaikAADcAACABQQFqIQEgAkEIaiECDAALCyAFIAJqIhRBFGohBCAUQWtLDQQgBCALSw0FIABBwABqELGAgIAAIAEgACgCRCIUTw0DIBUgAmoiFEEIaigAACEOIBQpAAAhESAAKAJAIAJqIgRBDGogFEEMaikAADcCACAEIBE3AgAgBEEIaiAONgIAIAFBAWohASACQRRqIQIMAAsLIABBMGoQs4CAgAAgAEEoaiAIIAAoAjAgACgCNBCCgICA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';
9
+ //# sourceMappingURL=inline-wasm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inline-wasm.js","sourceRoot":"","sources":["../../src/_generated/inline-wasm.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAC1D,gEAAgE;AAChE,0DAA0D;AAC1D,gDAAgD;AAChD,oBAAoB;AACpB,6EAA6E;AAC7E,+DAA+D;AAC/D,MAAM,CAAC,MAAM,iBAAiB,GAC5B,896DAA896D,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * albex v0.6.1
3
- * Zero-config local full-text search for documents — runs entirely in the browser, no server, no upload.
2
+ * albex v0.7.0
3
+ * Local full-text search for documents — runs entirely in the browser, no server, no upload. Zero-config: the WASM core is embedded (~19 KB gzipped), so `npm install albex` then `new AlbexEngine()` works in any bundler, esbuild/Angular included.
4
4
  * (c) 2026 RafaCalRob
5
5
  * @license MIT
6
6
  * https://github.com/RafaCalRob/Albex#readme
package/dist/albex.d.ts CHANGED
@@ -73,6 +73,22 @@ export interface AlbexOptions {
73
73
  wasmBaseUrl?: string;
74
74
  /** URL to albex_pdf.wasm. Required only if you call indexFile() with PDFs. */
75
75
  pdfWasmUrl?: string;
76
+ /**
77
+ * Raw bytes of the main core WASM. When present, Albex instantiates from
78
+ * these directly and does NO network fetch — `wasmUrl`, `wasmBaseUrl` and
79
+ * SIMD auto-selection are all ignored. This is the escape hatch for
80
+ * bundlers that don't rewrite `new URL('…wasm', import.meta.url)` (esbuild,
81
+ * many Angular and Webpack setups): import the `.wasm` as an asset through
82
+ * your own bundler and hand the bytes here. The `albex/inline` entry point
83
+ * sets this automatically with an embedded baseline core — true zero-config.
84
+ */
85
+ wasmBytes?: BufferSource;
86
+ /**
87
+ * Raw bytes of `albex_pdf.wasm`. Same rationale as {@link wasmBytes}; only
88
+ * needed if you index PDFs AND your bundler can't serve the binary. When
89
+ * present, the PDF module is compiled from these instead of fetched.
90
+ */
91
+ pdfWasmBytes?: BufferSource;
76
92
  /**
77
93
  * Engine capacity. `'std'` (default) keeps the historical limits;
78
94
  * `'large'` raises them to 1 024 docs / 800k chunks / 128 MB text; an
@@ -383,6 +399,29 @@ export declare class AlbexEngine {
383
399
  * requested capacity is out of range or the allocation fails.
384
400
  */
385
401
  init(): Promise<void>;
402
+ /**
403
+ * Instantiate the main core WASM. Two sources, in order of precedence:
404
+ * 1. `opts.wasmBytes` — caller-provided bytes; NO network access. The
405
+ * `albex/inline` entry uses this with the embedded baseline core, and
406
+ * integrators on bundlers that don't rewrite `new URL(…, import.meta.
407
+ * url)` (esbuild / Angular / some Webpack) can import the `.wasm` as an
408
+ * asset and pass the bytes here.
409
+ * 2. a URL from `_resolveWasmUrl` (`wasmUrl` / `wasmBaseUrl` / the
410
+ * bundler-friendly default).
411
+ *
412
+ * The URL path prefers `instantiateStreaming` and falls back to
413
+ * `instantiate(arrayBuffer)` when the host serves the `.wasm` with the
414
+ * wrong MIME type — a common esbuild / static-server pitfall that
415
+ * otherwise rejects with an opaque "Incorrect response MIME type". A 404
416
+ * or a network error is rethrown as an `AlbexInitError` whose message
417
+ * points at the concrete fixes (inline entry / `wasmBytes` / `wasmUrl`).
418
+ */
419
+ private _instantiateMainWasm;
420
+ /** Build the actionable "couldn't load the core" message shared by every
421
+ * main-WASM load failure. The default `albex` entry embeds the core, so a
422
+ * fetch only runs when the caller explicitly set `wasmUrl`/`wasmBaseUrl` —
423
+ * the message leads with the one-line exit (drop the option). */
424
+ private _wasmLoadHelp;
386
425
  /**
387
426
  * Decide which `.wasm` binary to fetch. Order of precedence:
388
427
  * 1. `opts.wasmUrl` literal → use verbatim
@@ -449,6 +488,11 @@ export declare class AlbexEngine {
449
488
  private _contentHash;
450
489
  private _feedXmlBytes;
451
490
  private _ensurePdfWasm;
491
+ /** Fetch + compile the PDF module from a URL. Split out of
492
+ * `_ensurePdfWasm` so the `pdfWasmBytes` (no-network) path stays trivial.
493
+ * Falls back to a buffered compile when the host serves the binary with
494
+ * the wrong MIME type (same pitfall as the core loader). */
495
+ private _fetchPdfModule;
452
496
  private _indexDocx;
453
497
  private _indexXlsx;
454
498
  private _indexPdf;
@@ -1 +1 @@
1
- {"version":3,"file":"albex.d.ts","sourceRoot":"","sources":["../src/albex.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA2BH,OAAO,EACL,UAAU,EACV,cAAc,EACd,2BAA2B,EAC3B,eAAe,EACf,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACtF,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACxE,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAwB5D;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;+DAE2D;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;6CAEyC;IACzC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;gEAC4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,OAAO,GAAG,mBAAmB,CAAC;AAElE,MAAM,WAAW,YAAY;IAC3B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8EAA8E;IAC9E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;IAC7B;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,KAAK,CAAC;IAC5B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;OAQG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAmDD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,GAAG,EAAE,MAAM,CAAC;IACZ,kFAAkF;IAClF,GAAG,EAAE,MAAM,CAAC;IACZ,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;OAKG;IACH,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,SAAS;IACxB;;;+BAG2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd;+CAC2C;IAC3C,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB;yEACqE;IACrE,KAAK,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,QAAQ,EAAE,MAAM,CAAC;IACjB;;gFAE4E;IAC5E,OAAO,EAAE,MAAM,CAAC;IAChB,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd;;0DAEsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB;;;;kDAI8C;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB;qCACiC;IACjC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB;6EACyE;IACzE,YAAY,EAAE,MAAM,CAAC;IACrB;oBACgB;IAChB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;OAOG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,+CAA+C;IAC/C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB;mDAC+C;IAC/C,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;iCAC6B;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,6DAA6D;IAC7D,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B;;8EAE0E;IAC1E,IAAI,EAAE,WAAW,GAAG,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;IACpD,gEAAgE;IAChE,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,aAAa,GAAG,SAAS,CAAC;IACzD,sDAAsD;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAoZD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB;;kEAE8D;IAC9D,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAEjF;;;4BAGwB;IACxB,OAAO,CAAC,EAAE;QACR;;qEAE6D;QAC7D,2BAA2B,CAAC,EAAE,OAAO,CAAC;KACvC,CAAC;CACH;AAED;;yDAEyD;AACzD,MAAM,WAAW,SAAS;IACxB;;2BAEuB;IACvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED,qBAAa,WAAW;IAEtB,OAAO,CAAC,KAAK,CAAoB;IACjC,OAAO,CAAC,IAAI,CAAsB;IAElC;;;;;OAKG;IACH;;;;;OAKG;IACH,IAAI,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,kBAAkB,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC,GAAG,SAAS,CAEtG;IAED;;gEAE4D;IAC5D,OAAO,CAAC,WAAW,CAA2B;IAG9C,OAAO,CAAC,QAAQ,CAAgC;IAChD,OAAO,CAAC,OAAO,CAAmC;IAElD,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,WAAW,CAA4B;IAC/C;;;sEAGkE;IAClE,OAAO,CAAC,eAAe,CAAK;IAC5B;;;4DAGwD;IACxD,OAAO,CAAC,YAAY,CAAyB;IAC7C,oEAAoE;IACpE,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,UAAU,CAA8B;IAChD,OAAO,CAAC,IAAI,CAAyB;IACrC;;;;;mCAK+B;IAC/B,OAAO,CAAC,eAAe,CAAQ;IAC/B,OAAO,CAAC,qBAAqB,CAA6B;IAC1D,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IAQrC,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,KAAK,CAAS;gBAEV,IAAI,GAAE,YAAiB;IAInC,oEAAoE;IACpE,OAAO,CAAC,UAAU;IAWlB;6DACyD;IACzD,OAAO,CAAC,WAAW;IAWnB;4EACwE;IACxE,OAAO,CAAC,oBAAoB;IAU5B;;;;;;;;;OASG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC3B;;;;;;;;;;;;;OAaG;YACW,eAAe;IAsC7B,sDAAsD;IACtD,IAAI,WAAW,IAAI,OAAO,CAAuB;IAEjD,2EAA2E;IAC3E,IAAI,UAAU,IAAI,OAAO,CAAmC;IAI5D;;;;;;;;OAQG;IACH,OAAO,CAAC,gBAAgB;IAUxB;;;;;;;;;;;;;;OAcG;YACW,aAAa;IA4C3B,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,SAAS;IAMjB,OAAO,CAAC,QAAQ;IAKhB;;;qCAGiC;IACjC,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,SAAS;IASjB;;;;;;;OAOG;IACH,OAAO,CAAC,YAAY;IAqBpB,OAAO,CAAC,aAAa;YAWP,cAAc;YA8Bd,UAAU;YAQV,UAAU;YAoBV,SAAS;IAkHvB;;;;;;;;;;;;;;;;;;;;;;OAsBG;YACW,gBAAgB;IAe9B;;;;;;;;;;;;;;;;;;;;OAoBG;YACW,sBAAsB;IAmEpC;;;;;;;;;;;;;OAaG;YACW,sBAAsB;YA6CtB,SAAS;YAWT,SAAS;YAkBT,QAAQ;YAgCR,UAAU;YA4BV,UAAU;YA4BV,SAAS;YAuDT,SAAS;IA8BvB;;;;;;;;OAQG;IACH,OAAO,CAAC,oBAAoB;YAqEd,SAAS;IAiGvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAc/B;IAIF;;;;;OAKG;IACG,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC;YAIvC,eAAe;IAwF7B;;;;;;OAMG;IACH,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAKnC,OAAO,CAAC,oBAAoB;IAW5B;;;;OAIG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,GAAG,OAAO,CAAC,eAAe,CAAC;IAY5E;;;;;;OAMG;IACH,OAAO,IAAI,IAAI;IASf;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAwC/C,yEAAyE;IACzE,OAAO,CAAC,UAAU;IASlB;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,YAAY,EAAE;IAuB/D;;gCAE4B;IAC5B,OAAO,CAAC,aAAa;IAOrB;;;;;;;;;;;;;OAaG;IACI,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,aAAa,CAAC,YAAY,CAAC;IAO9F;kFAC8E;YAChE,yBAAyB;IAoCvC;;;;;OAKG;IACI,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,aAAkB,GAAG,aAAa,CAAC,YAAY,CAAC;IAKzF;;;;;;;;OAQG;YACW,kBAAkB;IA6FhC;;mEAE+D;IAC/D,OAAO,CAAC,WAAW;IASnB;;;;;;;;;;;mCAW+B;IAC/B,OAAO,CAAC,eAAe;IAwIvB;;;8CAG0C;IAC1C,OAAO,CAAC,SAAS;IAoBjB;;8EAE0E;IAC1E,OAAO,CAAC,UAAU;IAoBlB;qEACiE;IACjE,QAAQ,IAAI,WAAW;IAavB,0DAA0D;IAC1D,kBAAkB,IAAI,WAAW,GAAG,IAAI;IAIxC,6CAA6C;IAC7C,IAAI,SAAS,IAAI,SAAS,eAAe,EAAE,CAE1C;IAED,iCAAiC;IACjC,MAAM,KAAK,mBAAmB,IAAI,MAAM,EAAE,CAEzC;IAED,oCAAoC;IACpC,YAAY,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI;IAIzC,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIhC;;;;;;;;;OASG;IACH,WAAW,CAAC,IAAI,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI;IAIrC,4DAA4D;IAC5D,KAAK,IAAI,IAAI;IAKb,OAAO,CAAC,WAAW;IAYnB;;;;;;;;;;;;;;;;;;OAkBG;IACH,eAAe,IAAI,eAAe,EAAE;IAMpC,oEAAoE;IACpE,OAAO,CAAC,KAAK;IAKb;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,SAAS;IAsBzC;;;;;;OAMG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;YAIzB,UAAU;IAqBxB;;;;OAIG;IACG,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;YAI5B,UAAU;IA2FxB;;;OAGG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQhD,8CAA8C;IACxC,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjD,+DAA+D;IACzD,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIxC;;;;;;;;;;OAUG;IACH,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI;CAczB"}
1
+ {"version":3,"file":"albex.d.ts","sourceRoot":"","sources":["../src/albex.ts"],"names":[],"mappings":"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"}
package/dist/albex.js CHANGED
@@ -1,6 +1,6 @@
1
1
  /*!
2
- * albex v0.6.1
3
- * Zero-config local full-text search for documents — runs entirely in the browser, no server, no upload.
2
+ * albex v0.7.0
3
+ * Local full-text search for documents — runs entirely in the browser, no server, no upload. Zero-config: the WASM core is embedded (~19 KB gzipped), so `npm install albex` then `new AlbexEngine()` works in any bundler, esbuild/Angular included.
4
4
  * (c) 2026 RafaCalRob
5
5
  * @license MIT
6
6
  * https://github.com/RafaCalRob/Albex#readme
@@ -604,11 +604,7 @@ export class AlbexEngine {
604
604
  * requested capacity is out of range or the allocation fails.
605
605
  */
606
606
  async init() {
607
- const url = await this._resolveWasmUrl();
608
- const res = await fetch(url);
609
- if (!res.ok)
610
- throw new AlbexInitError(`Failed to fetch WASM: ${res.status} (${url})`);
611
- const { instance } = await WebAssembly.instantiateStreaming(res, {});
607
+ const instance = await this._instantiateMainWasm();
612
608
  this._wasm = asAlbexExports(instance.exports);
613
609
  this._mem = this._wasm.memory;
614
610
  this._capacity = resolveCapacity(this._opts.capacity);
@@ -633,6 +629,75 @@ export class AlbexEngine {
633
629
  this._gpu = new BloomGpu();
634
630
  }
635
631
  }
632
+ /**
633
+ * Instantiate the main core WASM. Two sources, in order of precedence:
634
+ * 1. `opts.wasmBytes` — caller-provided bytes; NO network access. The
635
+ * `albex/inline` entry uses this with the embedded baseline core, and
636
+ * integrators on bundlers that don't rewrite `new URL(…, import.meta.
637
+ * url)` (esbuild / Angular / some Webpack) can import the `.wasm` as an
638
+ * asset and pass the bytes here.
639
+ * 2. a URL from `_resolveWasmUrl` (`wasmUrl` / `wasmBaseUrl` / the
640
+ * bundler-friendly default).
641
+ *
642
+ * The URL path prefers `instantiateStreaming` and falls back to
643
+ * `instantiate(arrayBuffer)` when the host serves the `.wasm` with the
644
+ * wrong MIME type — a common esbuild / static-server pitfall that
645
+ * otherwise rejects with an opaque "Incorrect response MIME type". A 404
646
+ * or a network error is rethrown as an `AlbexInitError` whose message
647
+ * points at the concrete fixes (inline entry / `wasmBytes` / `wasmUrl`).
648
+ */
649
+ async _instantiateMainWasm() {
650
+ const bytes = this._opts.wasmBytes;
651
+ if (bytes) {
652
+ // No fetch, no SIMD probe: the caller chose the binary. `simdEnabled`
653
+ // reflects only an explicit `simd: 'on'` assertion about those bytes.
654
+ this._profile = await detectProfile();
655
+ this._simd = this._opts.simd === 'on';
656
+ const { instance } = await WebAssembly.instantiate(bytes, {});
657
+ return instance;
658
+ }
659
+ const url = await this._resolveWasmUrl();
660
+ let res;
661
+ try {
662
+ res = await fetch(url);
663
+ }
664
+ catch (cause) {
665
+ throw new AlbexInitError(this._wasmLoadHelp(url, String(cause)));
666
+ }
667
+ if (!res.ok) {
668
+ throw new AlbexInitError(this._wasmLoadHelp(url, `HTTP ${res.status}`));
669
+ }
670
+ try {
671
+ const { instance } = await WebAssembly.instantiateStreaming(res, {});
672
+ return instance;
673
+ }
674
+ catch (streamErr) {
675
+ // Streaming rejects when the response Content-Type isn't
676
+ // `application/wasm`. The bytes are usually fine — re-fetch (the first
677
+ // body was consumed by the streaming attempt) and compile from a buffer.
678
+ try {
679
+ const buf = await (await fetch(url)).arrayBuffer();
680
+ const { instance } = await WebAssembly.instantiate(buf, {});
681
+ return instance;
682
+ }
683
+ catch {
684
+ throw new AlbexInitError(this._wasmLoadHelp(url, `instantiate failed (${String(streamErr)})`));
685
+ }
686
+ }
687
+ }
688
+ /** Build the actionable "couldn't load the core" message shared by every
689
+ * main-WASM load failure. The default `albex` entry embeds the core, so a
690
+ * fetch only runs when the caller explicitly set `wasmUrl`/`wasmBaseUrl` —
691
+ * the message leads with the one-line exit (drop the option). */
692
+ _wasmLoadHelp(url, reason) {
693
+ return (`Albex couldn't fetch its core WASM (${reason}) from ${url}. ` +
694
+ `You're on the network path because \`wasmUrl\` or \`wasmBaseUrl\` is ` +
695
+ `set. Easiest fix: remove that option — the default ` +
696
+ `\`import { AlbexEngine } from 'albex'\` embeds the core and serves ` +
697
+ `nothing. Keep the option only for a CDN or the SIMD build, and make ` +
698
+ `sure it points at a reachable \`albex_wasm*.wasm\` (check the path, ` +
699
+ `the dev server, and CORS).`);
700
+ }
636
701
  /**
637
702
  * Decide which `.wasm` binary to fetch. Order of precedence:
638
703
  * 1. `opts.wasmUrl` literal → use verbatim
@@ -840,9 +905,26 @@ export class AlbexEngine {
840
905
  async _ensurePdfWasm() {
841
906
  if (this._pdfWasm)
842
907
  return;
908
+ // Compile first (regardless of source) so we can inspect the module's
909
+ // required imports and resolve mangled wasm-bindgen names by prefix
910
+ // rather than by hash.
911
+ const module = this._opts.pdfWasmBytes
912
+ ? await WebAssembly.compile(this._opts.pdfWasmBytes)
913
+ : await this._fetchPdfModule();
914
+ const imports = makePdfWasmImports(module, () => this._pdfMem);
915
+ const instance = await WebAssembly.instantiate(module, imports);
916
+ this._pdfWasm = asAlbexPdfExports(instance.exports);
917
+ this._pdfMem = this._pdfWasm.memory;
918
+ }
919
+ /** Fetch + compile the PDF module from a URL. Split out of
920
+ * `_ensurePdfWasm` so the `pdfWasmBytes` (no-network) path stays trivial.
921
+ * Falls back to a buffered compile when the host serves the binary with
922
+ * the wrong MIME type (same pitfall as the core loader). */
923
+ async _fetchPdfModule() {
843
924
  // Zero-config default: resolve relative to this module so bundlers copy
844
925
  // the .wasm to the output automatically. Override with `opts.pdfWasmUrl`
845
- // when serving from a separate CDN.
926
+ // when serving from a separate CDN, or pass `pdfWasmBytes` to skip the
927
+ // network entirely (e.g. esbuild/Angular).
846
928
  const pdfUrl = this._opts.pdfWasmUrl
847
929
  ?? new URL('../wasm/pkg/albex_pdf.wasm', import.meta.url).href;
848
930
  // Network politeness: on constrained connections (slow-2g/2g/saveData)
@@ -855,16 +937,25 @@ export class AlbexEngine {
855
937
  message: 'Downloading PDF WASM (~1 MB) on a constrained network connection',
856
938
  });
857
939
  }
858
- const res = await fetch(pdfUrl);
859
- if (!res.ok)
860
- throw new AlbexInitError(`Failed to fetch PDF WASM: ${res.status}`);
861
- // Compile first so we can inspect the module's required imports and
862
- // resolve mangled wasm-bindgen names by prefix rather than by hash.
863
- const module = await WebAssembly.compileStreaming(res);
864
- const imports = makePdfWasmImports(module, () => this._pdfMem);
865
- const instance = await WebAssembly.instantiate(module, imports);
866
- this._pdfWasm = asAlbexPdfExports(instance.exports);
867
- this._pdfMem = this._pdfWasm.memory;
940
+ let res;
941
+ try {
942
+ res = await fetch(pdfUrl);
943
+ }
944
+ catch (cause) {
945
+ throw new AlbexInitError(`Failed to fetch PDF WASM from ${pdfUrl} (${String(cause)}). ` +
946
+ `Pass \`pdfWasmBytes\` (bundler asset import) or set \`pdfWasmUrl\`.`);
947
+ }
948
+ if (!res.ok) {
949
+ throw new AlbexInitError(`Failed to fetch PDF WASM: ${res.status} (${pdfUrl}). ` +
950
+ `Pass \`pdfWasmBytes\` (bundler asset import) or set \`pdfWasmUrl\`.`);
951
+ }
952
+ try {
953
+ return await WebAssembly.compileStreaming(res);
954
+ }
955
+ catch {
956
+ const buf = await (await fetch(pdfUrl)).arrayBuffer();
957
+ return WebAssembly.compile(buf);
958
+ }
868
959
  }
869
960
  // ── Indexers ──────────────────────────────────────────────────────────────
870
961
  async _indexDocx(file, bytes) {