source: trip-planner-front/node_modules/unpipe/index.js@ 6fe77af

Last change on this file since 6fe77af was 6a3a178, checked in by Ema <ema_spirova@…>, 3 years ago

initial commit

  • Property mode set to 100644
File size: 1.1 KB
Line 
1/*!
2 * unpipe
3 * Copyright(c) 2015 Douglas Christopher Wilson
4 * MIT Licensed
5 */
6
7'use strict'
8
9/**
10 * Module exports.
11 * @public
12 */
13
14module.exports = unpipe
15
16/**
17 * Determine if there are Node.js pipe-like data listeners.
18 * @private
19 */
20
21function hasPipeDataListeners(stream) {
22 var listeners = stream.listeners('data')
23
24 for (var i = 0; i < listeners.length; i++) {
25 if (listeners[i].name === 'ondata') {
26 return true
27 }
28 }
29
30 return false
31}
32
33/**
34 * Unpipe a stream from all destinations.
35 *
36 * @param {object} stream
37 * @public
38 */
39
40function unpipe(stream) {
41 if (!stream) {
42 throw new TypeError('argument stream is required')
43 }
44
45 if (typeof stream.unpipe === 'function') {
46 // new-style
47 stream.unpipe()
48 return
49 }
50
51 // Node.js 0.8 hack
52 if (!hasPipeDataListeners(stream)) {
53 return
54 }
55
56 var listener
57 var listeners = stream.listeners('close')
58
59 for (var i = 0; i < listeners.length; i++) {
60 listener = listeners[i]
61
62 if (listener.name !== 'cleanup' && listener.name !== 'onclose') {
63 continue
64 }
65
66 // invoke the listener
67 listener.call(stream)
68 }
69}
Note: See TracBrowser for help on using the repository browser.