Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Avatar for KuCalc : devops.
Download
50640 views
1
/*!
2
* destroy
3
* Copyright(c) 2014 Jonathan Ong
4
* MIT Licensed
5
*/
6
7
'use strict'
8
9
/**
10
* Module dependencies.
11
* @private
12
*/
13
14
var ReadStream = require('fs').ReadStream
15
var Stream = require('stream')
16
17
/**
18
* Module exports.
19
* @public
20
*/
21
22
module.exports = destroy
23
24
/**
25
* Destroy a stream.
26
*
27
* @param {object} stream
28
* @public
29
*/
30
31
function destroy(stream) {
32
if (stream instanceof ReadStream) {
33
return destroyReadStream(stream)
34
}
35
36
if (!(stream instanceof Stream)) {
37
return stream
38
}
39
40
if (typeof stream.destroy === 'function') {
41
stream.destroy()
42
}
43
44
return stream
45
}
46
47
/**
48
* Destroy a ReadStream.
49
*
50
* @param {object} stream
51
* @private
52
*/
53
54
function destroyReadStream(stream) {
55
stream.destroy()
56
57
if (typeof stream.close === 'function') {
58
// node.js core bug work-around
59
stream.on('open', onOpenClose)
60
}
61
62
return stream
63
}
64
65
/**
66
* On open handler to close stream.
67
* @private
68
*/
69
70
function onOpenClose() {
71
if (typeof this.fd === 'number') {
72
// actually close down the fd
73
this.close()
74
}
75
}
76
77