Skip to content

Latest commit

 

History

History
30 lines (24 loc) · 1.12 KB

override-std-write.md

File metadata and controls

30 lines (24 loc) · 1.12 KB

override-stdout-write & override-stderr-write

Override process.stdout.write or process.stderr.write with provided alternative

const overrideStdoutWrite = require("process-utils/override-stdout-write");

// Configure decorator that will strip ANSI codes
const {
  originalStdoutWrite, // Original `write` bound to `process.stdout`
  originalWrite, // Original `write` on its own
  restoreStdoutWrite // Allows to restore previous state
} = overrideStdoutWrite(
  // process.stdout.write replacement
  (
    data, // data input
    originalStdoutWrite // // Original `write` bound to `process.stdout`
  ) => {
    // Example of filtering ANSI codes for original stdout.write
    originalStdoutWrite(stripAnsi(data));
  }
);

process.stdout.write(someAnsiCodeDecoratedString); // will be output with ANSI codes stripped out

// Restore previous state
restoreStdoutWrite();

Optionally callback can be passed to override*, it's invoked immediately, and only for a time of it's execution stream.write is overriden. if callback returns thenable then stream.write is restored when given thenable resolves.