How tarrowren/bitcask-js works
bitcask-js is a JavaScript key/value store built around Bitcask-style append-only data files. A client submits get/put operations to the Bitcask API; the store coordinates key-directory lookups, file-pool reads and writes, and record decoding. Startup and file rotation use manifests, while merge compacts older data and can clear obsolete files. Source excerpts show these major responsibilities and some dependencies; links based on the source index are limited to the imports it records, and unshown runtime details are omitted.
Main entry points: bitcask.ts Bitcask API · record.ts Record Codec · merge.ts Merge and Cleanup · file-pool.ts File Pool
Components 19
Store API
- Bitcask API
src/bitcask.ts - Store Options
src/opts.ts - Key Directory
src/dir.ts
File Storage
- File Pool
src/file-pool.ts - File Readers and Writers
src/file.ts - Request Queue
src/queue.ts - Read Stream
src/stream.ts - Database Files
Record Formats
- Record Codec
src/record.ts - Hint Codec
src/hint.ts - Buffer Primitives
src/buffer.ts - CRC32
src/crc32.ts - Format Constants
src/def.ts
Metadata and Maintenance
- Manifest
src/manifest.ts - Database Lock
src/lockfile.ts - Merge and Cleanup
src/merge.ts - Linked Map
src/linked-map.ts - File Naming
src/random-name.ts
Other components
- Application
Connections 26
- Application → Bitcask API: submits operations
- Bitcask API → Key Directory: looks up keys
src/bitcask.ts - Bitcask API → File Pool: reads and writes
src/bitcask.ts - Bitcask API → Record Codec: decodes records
src/bitcask.ts - Bitcask API → Manifest: opens metadata
src/bitcask.ts - Bitcask API → Database Lock: locks database
src/bitcask.ts - Bitcask API → Merge and Cleanup: clears files
src/bitcask.ts - Bitcask API → Store Options: uses settings
src/bitcask.ts - File Pool → File Readers and Writers: dispatches I/O
src/file-pool.ts - File Readers and Writers → Read Stream: creates read streams
src/file.ts - File Pool → Manifest: checks file metadata
src/file-pool.ts - File Pool → Request Queue: queues requests
src/file-pool.ts - File Readers and Writers → Database Files: reads and writes
- Record Codec → Buffer Primitives: encodes fields
src/record.ts - Record Codec → CRC32: checks CRC
src/record.ts - Record Codec → Format Constants: uses sizes
src/record.ts - Record Codec → Key Directory: uses directory types
src/record.ts - Hint Codec → Buffer Primitives: encodes fields
src/hint.ts - Hint Codec → Format Constants: uses sizes
src/hint.ts - Hint Codec → Key Directory: yields directory entries
src/hint.ts - Manifest → Linked Map: tracks files
src/manifest.ts - Manifest → File Naming: chooses file names
src/manifest.ts - Merge and Cleanup → File Pool: reads old data
src/merge.ts - Merge and Cleanup → Hint Codec: writes hints
src/merge.ts - Merge and Cleanup → Manifest: uses file metadata
src/merge.ts - Merge and Cleanup → Record Codec: parses records
src/merge.ts