Both roaring-wasm and candle-wasm now work correctly in all environments:
- Node.js (fs.readFileSync)
- Bun runtime (Bun.file)
- Bun --compile (embedded assets via import { type: 'file' })
- Browser (fetch)
roaring-wasm:
- Created src/utils/roaring/index.ts wrapper
- Uses browser bundle which has WASM embedded as base64
- Top-level await ensures initialization before use
- Zero environment detection needed (works everywhere)
candle-wasm:
- Created src/embeddings/wasm/wasmLoader.ts universal loader
- Uses Bun's import { type: 'file' } to embed 93MB WASM in compiled binary
- Fixed browser detection (Bun defines 'self', check for 'document' instead)
- Simplified CandleEmbeddingEngine.ts to use wasmLoader
Binary size verification:
- Minimal Bun binary: 100MB (runtime only)
- Brainy binary: 199MB (100MB runtime + 93MB WASM + 6MB JS)
- No duplication: WASM embedded exactly once
Test results:
- Node.js: 1190/1190 tests pass
- Bun runtime: 8/8 tests pass
- Bun --compile: 8/8 tests pass
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
14 lines
361 B
TypeScript
14 lines
361 B
TypeScript
/**
|
|
* Type declarations for roaring-wasm browser bundle
|
|
* Re-exports types from the main roaring-wasm package
|
|
*/
|
|
declare module 'roaring-wasm/browser/index.mjs' {
|
|
export {
|
|
RoaringBitmap32,
|
|
RoaringBitmap32Iterator,
|
|
roaringLibraryInitialize,
|
|
roaringLibraryIsReady,
|
|
SerializationFormat,
|
|
DeserializationFormat
|
|
} from 'roaring-wasm'
|
|
}
|