An open API service indexing awesome lists of open source software.

https://github.com/bevry/safefs

Deprecated. Use the @bevry/fs-* packages instead
https://github.com/bevry/safefs

filesystem nodejs

Last synced: 10 months ago
JSON representation

Deprecated. Use the @bevry/fs-* packages instead

Awesome Lists containing this project

README

          

# Safe FS

Status of the GitHub Workflow: bevry
NPM version
NPM downloads


GitHub Sponsors donate button
ThanksDev donate button
Patreon donate button
Liberapay donate button
Buy Me A Coffee donate button
Open Collective donate button
crypto donate button
PayPal donate button


Discord server badge
Twitch community badge

Stop getting EMFILE errors! Open only as many files as the operating system supports.

## Usage

[Complete API Documentation.](http://master.safefs.bevry.surge.sh/docs/)

```javascript
var safefs = require('safefs')
```

SafeFS uses [graceful-fs](https://npmjs.org/package/graceful-fs) to wrap all of the standard [file system](http://nodejs.org/docs/latest/api/all.html#all_file_system) methods to avoid EMFILE errors among other problems.

On-top of graceful-fs, SafeFS also adds additional wrapping on the following methods:

- `writeFile(path, data, options?, next)` - ensure the full path exists before writing to it
- `appendFile(path, data, options?, next)` - ensure the full path exists before writing to it
- `mkdir(path, mode?, next)` - mode defaults to `0o777 & (~process.umask())`
- `unlink(path, next)` - checks if the file exists before removing it

SafeFS also define these additional methods:

- `ensurePath(path, options, next)` - ensure the full path exists, equivalent to unix's `mdir -p path`
- `getParentPathSync(path)` - returns the parent directory of the path

## Alternatives

You should use these instead, which use and provide modern APIs while providing brilliant ecosystem support:

- [@bevry/fs-accessible](https://github.com/bevry/fs-accessible)
- [@bevry/fs-executable](https://github.com/bevry/fs-executable)
- [@bevry/fs-list](https://github.com/bevry/fs-list)
- [@bevry/fs-mkdirp](https://github.com/bevry/fs-mkdirp)
- [@bevry/fs-read](https://github.com/bevry/fs-read)
- [@bevry/fs-readable](https://github.com/bevry/fs-readable)
- [@bevry/fs-remove](https://github.com/bevry/fs-remove)
- [@bevry/fs-rmdir](https://github.com/bevry/fs-rmdir)
- [@bevry/fs-unlink](https://github.com/bevry/fs-unlink)
- [@bevry/fs-write](https://github.com/bevry/fs-write)
- [@bevry/fs-writable](https://github.com/bevry/fs-writable)

## Install

### [npm](https://npmjs.com "npm is a package manager for javascript")

- Install: `npm install --save safefs`
- Import: `import * as pkg from ('safefs')`
- Require: `const pkg = require('safefs')`

### [Editions](https://editions.bevry.me "Editions are the best way to produce and consume packages you care about.")

This package is published with the following editions:
- `safefs` aliases `safefs/source/index.js`
- `safefs/source/index.js` is [ESNext](https://en.wikipedia.org/wiki/ECMAScript#ES.Next "ECMAScript Next") source code for [Node.js](https://nodejs.org "Node.js is a JavaScript runtime built on Chrome's V8 JavaScript engine") 4 || 6 || 8 || 10 || 12 || 14 || 16 || 18 || 20 || 21 with [Require](https://nodejs.org/dist/latest-v5.x/docs/api/modules.html "Node/CJS Modules") for modules

### [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.")

This project provides its type information via inline [JSDoc Comments](http://usejsdoc.org "JSDoc is an API documentation generator for JavaScript, similar to Javadoc or phpDocumentor"). To make use of this in [TypeScript](https://www.typescriptlang.org/ "TypeScript is a typed superset of JavaScript that compiles to plain JavaScript."), set your maxNodeModuleJsDepth compiler option to `5` or thereabouts. You can accomplish this via your `tsconfig.json` file like so:
``` json
{
"compilerOptions": {
"maxNodeModuleJsDepth": 5
}
}
```

## History

[Discover the release history by heading on over to the `HISTORY.md` file.](https://github.com/bevry/safefs/blob/HEAD/HISTORY.md#files)

## Backers

### Code

[Discover how to contribute via the `CONTRIBUTING.md` file.](https://github.com/bevry/safefs/blob/HEAD/CONTRIBUTING.md#files)

#### Authors

- [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.

#### Maintainers

- [Benjamin Lupton](https://balupton.com) — Accelerating collaborative wisdom.

#### Contributors

- [Benjamin Lupton](https://github.com/balupton) — [view contributions](https://github.com/bevry/safefs/commits?author=balupton "View the GitHub contributions of Benjamin Lupton on repository bevry/safefs")
- [James Gill](https://github.com/jagill) — [view contributions](https://github.com/bevry/safefs/commits?author=jagill "View the GitHub contributions of James Gill on repository bevry/safefs")
- [Kyle Robinson Young](https://github.com/shama) — [view contributions](https://github.com/bevry/safefs/commits?author=shama "View the GitHub contributions of Kyle Robinson Young on repository bevry/safefs")
- [Sean Fridman](https://github.com/sfrdmn) — [view contributions](https://github.com/bevry/safefs/commits?author=sfrdmn "View the GitHub contributions of Sean Fridman on repository bevry/safefs")

### Finances

GitHub Sponsors donate button
ThanksDev donate button
Patreon donate button
Liberapay donate button
Buy Me A Coffee donate button
Open Collective donate button
crypto donate button
PayPal donate button

#### Sponsors

- [Andrew Nesbitt](https://nesbitt.io) — Software engineer and researcher
- [Balsa](https://balsa.com) — We're Balsa, and we're building tools for builders.
- [Codecov](https://codecov.io) — Empower developers with tools to improve code quality and testing.
- [Poonacha Medappa](https://poonachamedappa.com)
- [Rob Morris](https://github.com/Rob-Morris)
- [Sentry](https://sentry.io) — Real-time crash reporting for your web apps, mobile apps, and games.
- [Syntax](https://syntax.fm) — Syntax Podcast

#### Donors

- [Andrew Nesbitt](https://nesbitt.io)
- [Armen Mkrtchian](https://mogoni.dev)
- [Balsa](https://balsa.com)
- [Chad](https://opencollective.com/chad8)
- [Codecov](https://codecov.io)
- [dr.dimitru](https://veliovgroup.com)
- [Elliott Ditman](https://elliottditman.com)
- [entroniq](https://gitlab.com/entroniq)
- [GitHub](https://github.com/about)
- [Hunter Beast](https://cryptoquick.com)
- [Jean-Luc Geering](https://github.com/jlgeering)
- [Michael Duane Mooring](https://mdm.cc)
- [Michael Harry Scepaniak](https://michaelscepaniak.com)
- [Mohammed Shah](https://github.com/smashah)
- [Mr. Henry](https://mrhenry.be)
- [Nermal](https://arjunaditya.vercel.app)
- [Pleo](https://pleo.io)
- [Poonacha Medappa](https://poonachamedappa.com)
- [Rob Morris](https://github.com/Rob-Morris)
- [Robert de Forest](https://github.com/rdeforest)
- [Sentry](https://sentry.io)
- [ServieJS](https://github.com/serviejs)
- [Skunk Team](https://skunk.team)
- [Syntax](https://syntax.fm)
- [WriterJohnBuck](https://github.com/WriterJohnBuck)

## License

Unless stated otherwise all works are:

- Copyright © [Benjamin Lupton](https://balupton.com)

and licensed under:

- [Artistic License 2.0](http://spdx.org/licenses/Artistic-2.0.html)