Super fast async file writer with atomic write
Steno makes writing concurrently fast and safe.
Battle-tested in lowdb.
Features
- Fast (see benchmark)
- Lightweight (~6kb)
- Written in TypeScript
- Writes are atomic (no partial writes)
- Writes are ordered even if they're async (no race conditions)
- Automatic retry
Usage
import { Writer } from 'steno'
// Create a singleton writer
const file = new Writer('file.txt')
// Use it in the rest of your code
async function save() {
await file.write('some data')
}
// Create a singleton writer
const file = new Writer('file.txt')
// Use it in the rest of your code
async function save() {
await file.write('some data')
}
Benchmark
npm run benchmark (see src/benchmark.ts)
Write 1KB data to the same file x 1000
fs : 62ms
steno : 1ms
Write 1MB data to the same file x 1000
fs : 2300ms
steno : 5ms
Steno uses a smart queue and avoids unnecessary writes.
Name
https://en.wikipedia.org/wiki/Stenotype
License
MIT - Typicode