Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stream-utils/destroy
destroy a stream if possible
https://github.com/stream-utils/destroy
destroy javascript nodejs stream
Last synced: 6 days ago
JSON representation
destroy a stream if possible
- Host: GitHub
- URL: https://github.com/stream-utils/destroy
- Owner: stream-utils
- License: mit
- Created: 2013-12-31T06:36:59.000Z (almost 11 years ago)
- Default Branch: master
- Last Pushed: 2024-09-03T21:16:46.000Z (3 months ago)
- Last Synced: 2024-11-28T00:08:37.294Z (16 days ago)
- Topics: destroy, javascript, nodejs, stream
- Language: JavaScript
- Size: 53.7 KB
- Stars: 56
- Watchers: 6
- Forks: 9
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: HISTORY.md
- License: LICENSE
Awesome Lists containing this project
- awesome-nodejs - destroy - destroy a stream if possible. (Repository / Streams)
- awesome-nodejs-streams - stream-utils/destroy - destroy a stream if possible (Modules)
README
# destroy
[![NPM version][npm-image]][npm-url]
[![Build Status][github-actions-ci-image]][github-actions-ci-url]
[![Test coverage][coveralls-image]][coveralls-url]
[![License][license-image]][license-url]
[![Downloads][downloads-image]][downloads-url]Destroy a stream.
This module is meant to ensure a stream gets destroyed, handling different APIs
and Node.js bugs.## API
```js
var destroy = require('destroy')
```### destroy(stream [, suppress])
Destroy the given stream, and optionally suppress any future `error` events.
In most cases, this is identical to a simple `stream.destroy()` call. The rules
are as follows for a given stream:1. If the `stream` is an instance of `ReadStream`, then call `stream.destroy()`
and add a listener to the `open` event to call `stream.close()` if it is
fired. This is for a Node.js bug that will leak a file descriptor if
`.destroy()` is called before `open`.
2. If the `stream` is an instance of a zlib stream, then call `stream.destroy()`
and close the underlying zlib handle if open, otherwise call `stream.close()`.
This is for consistency across Node.js versions and a Node.js bug that will
leak a native zlib handle.
3. If the `stream` is not an instance of `Stream`, then nothing happens.
4. If the `stream` has a `.destroy()` method, then call it.The function returns the `stream` passed in as the argument.
## Example
```js
var destroy = require('destroy')var fs = require('fs')
var stream = fs.createReadStream('package.json')// ... and later
destroy(stream)
```[npm-image]: https://img.shields.io/npm/v/destroy.svg?style=flat-square
[npm-url]: https://npmjs.org/package/destroy
[github-tag]: http://img.shields.io/github/tag/stream-utils/destroy.svg?style=flat-square
[github-url]: https://github.com/stream-utils/destroy/tags
[coveralls-image]: https://img.shields.io/coveralls/stream-utils/destroy.svg?style=flat-square
[coveralls-url]: https://coveralls.io/r/stream-utils/destroy?branch=master
[license-image]: http://img.shields.io/npm/l/destroy.svg?style=flat-square
[license-url]: LICENSE.md
[downloads-image]: http://img.shields.io/npm/dm/destroy.svg?style=flat-square
[downloads-url]: https://npmjs.org/package/destroy
[github-actions-ci-image]: https://img.shields.io/github/workflow/status/stream-utils/destroy/ci/master?label=ci&style=flat-square
[github-actions-ci-url]: https://github.com/stream-utils/destroy/actions/workflows/ci.yml