|
|
- /*!
- * destroy
- * Copyright(c) 2014 Jonathan Ong
- * MIT Licensed
- */
-
- 'use strict'
-
- /**
- * Module dependencies.
- * @private
- */
-
- var ReadStream = require('fs').ReadStream
- var Stream = require('stream')
-
- /**
- * Module exports.
- * @public
- */
-
- module.exports = destroy
-
- /**
- * Destroy a stream.
- *
- * @param {object} stream
- * @public
- */
-
- function destroy(stream) {
- if (stream instanceof ReadStream) {
- return destroyReadStream(stream)
- }
-
- if (!(stream instanceof Stream)) {
- return stream
- }
-
- if (typeof stream.destroy === 'function') {
- stream.destroy()
- }
-
- return stream
- }
-
- /**
- * Destroy a ReadStream.
- *
- * @param {object} stream
- * @private
- */
-
- function destroyReadStream(stream) {
- stream.destroy()
-
- if (typeof stream.close === 'function') {
- // node.js core bug work-around
- stream.on('open', onOpenClose)
- }
-
- return stream
- }
-
- /**
- * On open handler to close stream.
- * @private
- */
-
- function onOpenClose() {
- if (typeof this.fd === 'number') {
- // actually close down the fd
- this.close()
- }
- }
|