From abd94a7f5a50f43c797a11b53549ae48fff667c3 Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 10 Oct 2016 03:43:44 +0200 Subject: add node_modules to address #4364 --- node_modules/unique-stream/index.js | 54 +++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 node_modules/unique-stream/index.js (limited to 'node_modules/unique-stream/index.js') diff --git a/node_modules/unique-stream/index.js b/node_modules/unique-stream/index.js new file mode 100644 index 000000000..0c13168e5 --- /dev/null +++ b/node_modules/unique-stream/index.js @@ -0,0 +1,54 @@ +var Stream = require('stream'); + +function prop(propName) { + return function (data) { + return data[propName]; + }; +} + +module.exports = unique; +function unique(propName) { + var keyfn = JSON.stringify; + if (typeof propName === 'string') { + keyfn = prop(propName); + } else if (typeof propName === 'function') { + keyfn = propName; + } + var seen = {}; + var s = new Stream(); + s.readable = true; + s.writable = true; + var pipes = 0; + + s.write = function (data) { + var key = keyfn(data); + if (seen[key] === undefined) { + seen[key] = true; + s.emit('data', data); + } + }; + + var ended = 0; + s.end = function (data) { + if (arguments.length) s.write(data); + ended++; + if (ended === pipes || pipes === 0) { + s.writable = false; + s.emit('end'); + } + }; + + s.destroy = function (data) { + s.writable = false; + }; + + s.on('pipe', function () { + pipes++; + }); + + s.on('unpipe', function () { + pipes--; + }); + + return s; +} -- cgit v1.2.3