Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sindresorhus/hook-std
Hook and modify stdout and stderr
https://github.com/sindresorhus/hook-std
Last synced: about 1 month ago
JSON representation
Hook and modify stdout and stderr
- Host: GitHub
- URL: https://github.com/sindresorhus/hook-std
- Owner: sindresorhus
- License: mit
- Created: 2015-12-13T19:29:13.000Z (almost 9 years ago)
- Default Branch: main
- Last Pushed: 2022-07-09T03:07:47.000Z (over 2 years ago)
- Last Synced: 2024-04-13T16:33:34.339Z (7 months ago)
- Language: JavaScript
- Homepage:
- Size: 63.5 KB
- Stars: 53
- Watchers: 11
- Forks: 12
- Open Issues: 3
-
Metadata Files:
- Readme: readme.md
- Funding: .github/funding.yml
- License: license
- Security: .github/security.md
Awesome Lists containing this project
- awesome-nodejs-cn - hook-std - stdout/stderr 的钩子和修饰 (包 / 测试)
- awesome-nodejs-cn - hook-std - **star:53** 挂钩和修改stdout/stderr (包 / 测试)
- awesome-nodejs - hook-std - Hook and modify stdout/stderr. (Packages / Testing)
- awesome-node - hook-std - Hook and modify stdout/stderr. (Packages / Testing)
- awesome-nodejs-cn - hook-std - 钩子&修改stdout / stderr. (目录 / 测试相关)
- awesome-nodejs - hook-std - Hook and modify stdout/stderr - ★ 35 (Testing)
README
# hook-std
> Hook and modify stdout and stderr
## Install
```sh
npm install hook-std
```## Usage
```js
import assert from 'node:assert';
import {hookStdout} from 'hook-std';const promise = hookStdout(output => {
promise.unhook();
assert.strictEqual(output.trim(), 'unicorn');
});console.log('unicorn');
await promise;
```You can also unhook using the second `transform` method parameter:
```js
import assert from 'node:assert';
import {hookStdout} from 'hook-std';const promise = hookStdout((output, unhook) => {
unhook();
assert.strictEqual(output.trim(), 'unicorn');
});console.log('unicorn');
await promise;
```## API
### hookStd(options?, transform)
Hook streams in [`streams` option](#streams), or stdout and stderr if none are specified.
Returns a `Promise` with a `unhook()` method which, when called, unhooks both stdout and stderr and resolves the `Promise` with an empty result.
### hookStdout(options?, transform)
Hook stdout.
Returns a `Promise` with a `unhook()` method which, when called, unhooks stdout and resolves the `Promise` with an empty result.
### hookStderr(options?, transform)
Hook stderr.
Returns a `Promise` with a `unhook()` method which, when called, unhooks stderr and resolves the `Promise` with an empty result.
#### options
Type: `object`
##### silent
Type: `boolean`\
Default: `true`Suppress stdout/stderr output.
##### once
Type: `boolean`\
Default: `false`Automatically unhook after the first call.
##### streams
Type: `stream.Writable[]`\
Default: `[process.stdout, process.stderr]`The [writable streams](https://nodejs.org/api/stream.html#stream_writable_streams) to hook. This can be useful for libraries allowing users to configure a writable stream to write to.
#### transform
Type: `Function`
Receives stdout/stderr as the first argument and the unhook method as the second argument. Return a string to modify it. Optionally, when in silent mode, you may return a `boolean` to influence the return value of `.write(…)`.