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 4218x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 18x 10x 10x 10x 10x 10x 10x 10x 5x 5x 5x 5x 10x 10x 10x 5x 5x 5x 5x 10x 10x 10x 18x 18x 18x 18x 18x  
'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,
};