0.0.1 • Published 11 months ago

steno-js v0.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
11 months ago

steno-js

This is a commonjs module for steno@4.x. Has been refactored so that it can be used NOT only by ESM code.

Steno npm.io Node.js CI

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')
}

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