0.4.1 • Published 3 years ago

@typescript-plus/stream-capture v0.4.1

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

Stream Capture

A TypeScript library for capturing streams.

CircleCI

Install

$ npm i @typescript-plus/stream-capture --save

Usage

Sync

import { capture } from '@typescript-plus/stream-capture';
import * as fs from 'fs';

const stream = fs.createWriteStream('file');
const captured = capture(stream, (buffer) => {
  stream.write(':)');
  return buffer.join('');
});
captured === ':)'; // true
stream.end(':(', () => {
  fs.readFileSync('file').toString() === ':('; // true
});

Async

import { capture } from '@typescript-plus/stream-capture';
import * as fs from 'fs';

async function asyncFunc() {
  /* ... */
}

(async () => {
  const stream = fs.createWriteStream('file');
  const captured = await capture(stream, async (buffer) => {
    await asyncFunc();
    stream.write(':D');
    return buffer.join('');
  });
  captured === ':D'; // true
  stream.end(':P', () => {
    fs.readFileSync('file').toString() === ':P'; // true
  });
})();

Capturing stdout

Stream Capture accepts stream.Writable objects. So you can capture stdout. It's useful for CLI testing, for example:

import { capture } from '@typescript-plus/stream-capture';

function hello() {
  console.log('Hello :) World');
}

it('works', () => {
  const captured = capture(process.stdout, (buffer) => {
    hello();
    return buffer.join('');
  });
  expect(captured).toEqual('Hello :) World\n'); // success
});
0.4.1

3 years ago

0.4.0

3 years ago

0.3.0

3 years ago

0.2.0

3 years ago

0.1.0

3 years ago