Socket
Socket
Sign inDemoInstall

steno

Package Overview
Dependencies
0
Maintainers
1
Versions
24
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

steno


Version published
Weekly downloads
515K
decreased by-18.65%
Maintainers
1
Created
Weekly downloads
 

Package description

What is steno?

The steno npm package is a simple, fast, and lightweight library for writing JSON files atomically. It ensures that data is written to disk safely and without corruption, making it ideal for applications that need to frequently update JSON files.

What are steno's main functionalities?

Atomic Write

This feature allows you to write JSON data to a file atomically. The `writeFile` method ensures that the data is written safely, preventing file corruption.

const steno = require('steno');
const fs = require('fs');

const data = { key: 'value' };

steno.writeFile('data.json', JSON.stringify(data), (err) => {
  if (err) throw err;
  console.log('Data written successfully');
});

Synchronous Write

This feature allows you to write JSON data to a file synchronously. The `writeFileSync` method ensures that the data is written safely and the operation is completed before moving on to the next line of code.

const steno = require('steno');
const fs = require('fs');

const data = { key: 'value' };

try {
  steno.writeFileSync('data.json', JSON.stringify(data));
  console.log('Data written successfully');
} catch (err) {
  console.error('Error writing data:', err);
}

Other packages similar to steno

Readme

Source

Steno Node.js CI

Specialized fast async file writer

Steno makes writing to the same file often/concurrently fast and safe.

Used in lowdb.

https://en.wikipedia.org/wiki/Stenotype

Features

  • ⚡ Fast (see benchmark)
  • 🐦 Lightweight (~6kb)
  • 👍 ⚛️ Safe: No partial writes (writes are atomic)
  • 👍 🏁 Safe: No race conditions (writes are ordered even if they're async)

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.

License

MIT - Typicode

Keywords

FAQs

Last updated on 26 Dec 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc