diff options
Diffstat (limited to 'node_modules/steno/README.md')
| -rw-r--r-- | node_modules/steno/README.md | 79 |
1 files changed, 0 insertions, 79 deletions
diff --git a/node_modules/steno/README.md b/node_modules/steno/README.md deleted file mode 100644 index 119fddc..0000000 --- a/node_modules/steno/README.md +++ /dev/null @@ -1,79 +0,0 @@ -# steno [](https://www.npmjs.org/package/steno) [](https://travis-ci.org/typicode/steno) - -> Simple file writer with __atomic writing__ and __race condition prevention__. - -Can be used as a drop-in replacement to `fs.writeFile()`. - -Built on [graceful-fs](https://github.com/isaacs/node-graceful-fs) and used in [lowdb](https://github.com/typicode/lowdb). - -## Install - -``` -npm install steno --save -``` - -## Usage - -```javascript -const steno = require('steno') - -steno.writeFile('file.json', data, err => { - if (err) throw err -}) -``` - -## The problem it solves - -### Without steno - -Let's say you have a server and want to save data to disk: - -```javascript -var data = { counter: 0 } - -server.post('/', (req, res) => { - // Increment counter - ++data.counter - - // Save data asynchronously - fs.writeFile('data.json', JSON.stringify(data), err => { - if (err) throw err - res.end() - }) -}) -``` - -Now if you have many requests, for example `1000`, there's a risk that you end up with: - -```javascript -// In your server -data.counter === 1000 - -// In data.json -data.counter === 865 // ... or any other value -``` - -Why? Because, `fs.write` doesn't guarantee that the call order will be kept. Also, if the server is killed while `data.json` is being written, the file can get corrupted. - -### With steno - -```javascript -server.post('/increment', (req, res) => { - ++data.counter - - steno.writeFile('data.json', JSON.stringify(data), err => { - if (err) throw err - res.end() - }) -}) -``` - -With steno you'll always have the same data in your server and file. And in case of a crash, file integrity will be preserved. - -if needed, you can also use `steno.writeFileSync()` which offers atomic writing too. - -__Important: works only in a single instance of Node.__ - -## License - -MIT - [Typicode](https://github.com/typicode) |