All files / lib/stream promises.js

100% Statements 53/53
100% Branches 11/11
100% Functions 3/3
100% Lines 53/53

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 42 43 44 45 46 47 48 49 50 51 52 53 5418x 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 6x 6x 6x 6x 3x 3x 3x 3x 6x 6x 6x 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 eos = 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 });
  });
}
 
function finished(stream, opts) {
  return new Promise((resolve, reject) => {
    eos(stream, opts, (err) => {
      if (err) {
        reject(err);
      } else {
        resolve();
      }
    });
  });
}
 
module.exports = {
  finished,
  pipeline,
};