JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 861916
  • Score
    100M100P100Q169329F
  • License ISC

Utilities for process object

Package Exports

  • process-utils/override-argv
  • process-utils/override-cwd
  • process-utils/override-env
  • process-utils/override-stderr-write
  • process-utils/override-stdout-write

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (process-utils) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

*nix build status Windows build status Tests coverage Transpilation status npm version

process-utils

Utilities for Node.js process handling

Installation

npm install process-utils

Available utilities

override-env

Overrides process.env until returned restoreEnv() is called. Helpful when testing modules which behavior relies on environment settings.

const overrideEnv = require("process-utils/override-env");

process.env.FOO = "bar";
const { restoreEnv, originalEnv } = overrideEnv();
// Exposes original `process.env`
console.log(originalEnv.FOO); // "bar";
// Current `process.env` points other (empty plain) object
console.log(process.env.FOO); // undefined;

// Provides a callback to restore previous state
restoreEnv();
console.log(process.env.FOO); // "bar"

Optionally callback can be passed to overrideEnv, it's invoked immediately, and only for a time of it's execution process.env is overriden:

const overrideEnv = require("process-utils/override-env");

process.env.FOO = "bar";
// Passed callback is invoked immediately
overrideEnv(originalEnv => {
  // Exposes original `process.env`
  console.log(originalEnv.FOO); // "bar";
  // Current `process.env` points other (empty plain) object
  console.log(process.env.FOO); // undefined;
});
// After return the state is restored
console.log(process.env.FOO); // "bar"

However if callback returns thenable then process.env is restored when given thenable resolves:

const overrideEnv = require("process-utils/override-env");

process.env.FOO = "bar";
overrideEnv(() => new Promise(resolve => setTimeout(resolve, 100)));
// Still process.env is not resolved
console.log(process.env.FOO); // undefined
setTimeout(() => {
  // Original process.env is back
  console.log(process.env.FOO); // "bar"
}, 110);
Provide a whitelist of env vars to expose on a copy
process.env.FOO = "bar";
process.env.LOREM = "ipsum";
const { restoreEnv, originalEnv } = overrideEnv({ whitelist: ["FOO"] });
// Exposes onlywhitelisted props
console.log(process.env.FOO); // "bar"
console.log(process.env.LOREM); // undefined
Override env as copy of original
process.env.FOO = "bar";
const { restoreEnv, originalEnv } = overrideEnv({ asCopy: true });
// Exposes process.env props
console.log(process.env.FOO); // "bar"

process.env.BAR = "elo";
// Further updates doesn't affect cached original env
console.log(originalEnv.BAR); // undefined

// Provides a callback to restore previous state
restoreEnv();
console.log(process.env.BAR); // undefined

override-argv

Overrides process.argv until returned restoreArgv() is called. Helpful when testing modules which behavior relies on command line arguments

const overrideArgv = require("process-utils/override-argv");

const { restoreArg, originalArgv } = overrideEnv();
// Exposes original `process.argv`
console.log(originalArgv);
// Counterpart by default contains only first item from original argv
console.log(process.argv);

// Provides a callback to restore previous state
restoreArgv();

Optionally callback can be passed to overrideEnv, it's invoked immediately, and only for a time of it's execution process.argc is overriden. if callback returns thenable then process.argv is restored when given thenable resolves.

Supported options
sliceAt integer (default: 1)

Til which index should original process.argv be exposed on counterpart

args iterable (default: [])

Arguments to add to counterpart process.argv

override-cwd

Overrides process current working directory (as resolved via process.cwd()) until returned restoreCwd() is called. Helpful when testing modules which behavior relies on current working directory resolution

const overrideCwd = require("process-utils/override-cwd");

const { restoreCwd, originalCwd } = overrideCwd("/some/new/test/cwd");
// Exposes original `process.argv`
console.log(originalCwd);
//
console.log(process.cwd()); // /some/new/test/cwd

// Provides a callback to restore previous state
restoreCwd();

Optionally callback can be passed to overrideCwd, it's invoked immediately, and only for a time of it's execution current working directory is overriden. if callback returns thenable then current working directly is restored when given thenable resolves.

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((data, superWrite) => superWrite(stripAnsi(data)));

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

// Restore previous state
restoreStdoutWrite();

Tests

npm test