Browser Usage
hizi engine generator works in the browser using OPFS (Origin Private File System) for file storage. The same HiziEngineGenerator class is used in both Node.js and browser — environment detection is automatic.
Requirements
- Must run in a dedicated Web Worker (required for OPFS sync access handles)
- Server must set Cross-Origin-Isolation headers for OPFS access:
Cross-Origin-Opener-Policy: same-originCross-Origin-Embedder-Policy: require-corp
Import
typescript
import { HiziEngineGenerator } from '@hizi.io/engine-generator';Generating and Downloading
All files are plain JSONL during generation — no compression needed at runtime.
typescript
const generator = new HiziEngineGenerator();
// Start — writes to OPFS
await generator.start('/sim-output');
// Record results (same as Node.js)
for (const outcome of simulationResults) {
generator.addResult(outcome.scenario, {
win: outcome.win,
metaTags: outcome.tags,
});
}
// Finalize — writes entries to OPFS, closes scenario stream
await generator.end();
// Get generated file contents
const files = generator.getOutputFiles();
// Map { 'entries.jsonl' => '...', 'scenarios.jsonl' => '...' }Compressing for Download
To produce brotli-compressed .br files in the browser, use brotli-wasm:
bash
npm install brotli-wasmtypescript
import brotliWasm from 'brotli-wasm';
const bw = await brotliWasm;
const compress = (data: string) =>
bw.compress(new TextEncoder().encode(data), { quality: 9 });
const files = generator.getOutputFiles();
const entriesBr = compress(files.get('entries.jsonl')!);
const scenariosBr = compress(files.get('scenarios.jsonl')!);Available Methods
| Method / Property | Description |
|---|---|
start(dir) | Start streaming to OPFS |
addResult() | Record a game outcome (scenarios stream directly to disk) |
end() | Finalize output — write entries, close scenario stream |
getOutputFiles() | Get generated files as Map<string, string> (entries only) |
outputDirectory | OPFS path (available after end()). Read scenarios from OPFS directly without loading into memory. |