All files / lib/stream promises.js

100% Statements 41/41
100% Branches 7/7
100% Functions 2/2
100% Lines 41/41

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 4219x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 10x 10x 10x 10x 10x 10x 10x 5x 5x 5x 5x 10x 10x 10x 5x 5x 5x 5x 10x 10x 10x 19x 19x 19x 19x 19x  
'use strict';
 
const {
  ArrayPrototypePop,
  Promise,
} = primordials;
 
const {
  isIterable,
  isNodeStream,
} = require('internal/streams/utils');
 
const { pipelineImpl: pl } = require('internal/streams/pipeline');
const { finished } = require('internal/streams/end-of-stream');
 
function pipeline(...streams) {
  return new Promise((resolve, reject) => {
    let signal;
    let end;
    const lastArg = streams[streams.length - 1];
    if (lastArg && typeof lastArg === 'object' &&
        !isNodeStream(lastArg) && !isIterable(lastArg)) {
      const options = ArrayPrototypePop(streams);
      signal = options.signal;
      end = options.end;
    }
 
    pl(streams, (err, value) => {
      if (err) {
        reject(err);
      } else {
        resolve(value);
      }
    }, { signal, end });
  });
}
 
module.exports = {
  finished,
  pipeline,
};