All files / lib/stream promises.js

100% Statements 51/51
100% Branches 15/15
100% Functions 3/3
100% Lines 51/51

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 5219x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 19x 7x 7x 7x 7x 7x 7x 4x 4x 4x 7x 7x 7x 5x 6x 2x 2x 7x 7x 7x 19x 5x 5x 5x 5x 3x 4x 2x 2x 5x 5x 5x 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 eos = require('internal/streams/end-of-stream');
 
function pipeline(...streams) {
  return new Promise((resolve, reject) => {
    let signal;
    const lastArg = streams[streams.length - 1];
    if (lastArg && typeof lastArg === 'object' &&
        !isNodeStream(lastArg) && !isIterable(lastArg)) {
      const options = ArrayPrototypePop(streams);
      signal = options.signal;
    }
 
    pl(streams, (err, value) => {
      if (err) {
        reject(err);
      } else {
        resolve(value);
      }
    }, { signal });
  });
}
 
function finished(stream, opts) {
  return new Promise((resolve, reject) => {
    eos(stream, opts, (err) => {
      if (err) {
        reject(err);
      } else {
        resolve();
      }
    });
  });
}
 
module.exports = {
  finished,
  pipeline,
};