Exports
[<Class>]
type Exports =
static member inspect: Inspect
static member promisify: Promisify
static member types: Types
static member MIMEParams () : MIMEParams
static member MIMEType (input: U2<string,Input>) : MIMEType
static member TextDecoder (?encoding: string, ?options: Options) : TextDecoder
static member TextEncoder () : TextEncoder
static member aborted (signal: AbortSignal, resource: obj) : Promise<unit>
static member callbackify<'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'TResult> (fn: Fn10<'T1,'T2,'T3,'T4,'T5,'T6,'TResult>) : Result12<'T1,'T2,'T3,'T4,'T5,'T6,'TResult>
static member callbackify<'T1, 'T2, 'T3, 'T4, 'T5, 'T6> (fn: Fn9<'T1,'T2,'T3,'T4,'T5,'T6>) : Result11<'T1,'T2,'T3,'T4,'T5,'T6>
static member callbackify<'T1, 'T2, 'T3, 'T4, 'T5, 'TResult> (fn: Fn8<'T1,'T2,'T3,'T4,'T5,'TResult>) : Result10<'T1,'T2,'T3,'T4,'T5,'TResult>
static member callbackify<'T1, 'T2, 'T3, 'T4, 'T5> (fn: Fn7<'T1,'T2,'T3,'T4,'T5>) : Result9<'T1,'T2,'T3,'T4,'T5>
static member callbackify<'T1, 'T2, 'T3, 'T4, 'TResult> (fn: Fn6<'T1,'T2,'T3,'T4,'TResult>) : Result8<'T1,'T2,'T3,'T4,'TResult>
static member callbackify<'T1, 'T2, 'T3, 'T4> (fn: Fn5<'T1,'T2,'T3,'T4>) : Result7<'T1,'T2,'T3,'T4>
static member callbackify<'T1, 'T2, 'T3, 'TResult> (fn: Fn4<'T1,'T2,'T3,'TResult>) : Result6<'T1,'T2,'T3,'TResult>
static member callbackify<'T1, 'T2, 'T3> (fn: Fn3<'T1,'T2,'T3>) : Result5<'T1,'T2,'T3>
static member callbackify<'T1, 'T2, 'TResult> (fn: Fn2<'T1,'T2,'TResult>) : Result4<'T1,'T2,'TResult>
static member callbackify<'T1, 'T2> (fn: Fn<'T1,'T2>) : Result3<'T1,'T2>
static member callbackify<'T1, 'TResult> (fn: 'T1 -> Promise<'TResult>) : Result2<'T1,'TResult>
static member callbackify<'T1> (fn: 'T1 -> Promise<unit>) : Result<'T1>
static member callbackify<'TResult> (fn: unit -> Promise<'TResult>) : Callback<'TResult> -> unit
static member callbackify (fn: unit -> Promise<unit>) : (ErrnoException -> unit) -> unit
static member debug (section: string, ?callback: (DebugLoggerFunction -> unit)) : DebugLogger
static member debuglog (section: string, ?callback: (DebugLoggerFunction -> unit)) : DebugLogger
static member deprecate<'T> (fn: 'T, msg: string, ?code: string) : 'T
static member diff (actual: U2<string,string array>, expected: U2<string,string array>) : DiffEntry array
static member format (format: obj option, param: obj array) : string
static member formatWithOptions (inspectOptions: InspectOptions, format: obj option, param: obj array) : string
static member getCallSites (options: GetCallSitesOptions) : CallSiteObject array
static member getCallSites (?frameCount: float, ?options: GetCallSitesOptions) : CallSiteObject array
static member getSystemErrorMap () : Map<float,(string * string)>
static member getSystemErrorMessage (err: float) : string
static member getSystemErrorName (err: float) : string
static member inherits (constructor: obj, superConstructor: obj) : unit
static member isArray (object: obj) : bool
static member isBoolean (object: obj) : bool
static member isBuffer (object: obj) : bool
static member isDate (object: obj) : bool
static member isDeepStrictEqual (val1: obj, val2: obj) : bool
static member isError (object: obj) : bool
static member isFunction (object: obj) : bool
static member isNull (object: obj) : bool
static member isNullOrUndefined (object: obj) : bool
static member isNumber (object: obj) : bool
static member isObject (object: obj) : bool
static member isPrimitive (object: obj) : bool
static member isRegExp (object: obj) : bool
static member isString (object: obj) : bool
static member isSymbol (object: obj) : bool
static member isUndefined (object: obj) : bool
static member log (string: string) : unit
static member parseArgs<'T when 'T :> ParseArgsConfig> (?config: 'T) : obj
static member parseEnv (content: string) : Record<string,string option>
static member setTraceSigInt (enable: bool) : unit
static member stripVTControlCharacters (str: string) : string
static member styleText (format: U2<string,Item array>, text: string, ?options: StyleTextOptions) : string
static member toUSVString (string: string) : string
static member transferableAbortController () : AbortController
static member transferableAbortSignal (signal: AbortSignal) : AbortSignal| Assembly | Xantham.Fable.Node |
| Attributes | [<Erase>] |
The package's value exports, each bound to its import.
Properties
static member inspect: Inspect
static member inspect: InspectThe util.inspect() method returns a string representation of object that is intended for debugging. The output of util.inspect may change at any time and should not be depended upon programmatically. Additional options may be passed that alter the result. util.inspect() will use the constructor's name and/or Symbol.toStringTag property to make an identifiable tag for an inspected value.
class Foo {
get [Symbol.toStringTag]() {
return 'bar';
}
}
class Bar {}
const baz = Object.create(null, { [Symbol.toStringTag]: { value: 'foo' } });
util.inspect(new Foo()); // 'Foo [bar] {}'
util.inspect(new Bar()); // 'Bar {}'
util.inspect(baz); // '[foo] {}'
Circular references point to their anchor by using a reference index:
import { inspect } from 'node:util';
const obj = {};
obj.a = [obj];
obj.b = {};
obj.b.inner = obj.b;
obj.b.obj = obj;
console.log(inspect(obj));
// <ref *1> {
// a: [ [Circular *1] ],
// b: <ref *2> { inner: [Circular *2], obj: [Circular *1] }
// }
The following example inspects all properties of the util object:
import util from 'node:util';
console.log(util.inspect(util, { showHidden: true, depth: null }));
The following example highlights the effect of the compact option:
import { inspect } from 'node:util';
const o = {
a: [1, 2, [[
'Lorem ipsum dolor sit amet,\nconsectetur adipiscing elit, sed do ' +
'eiusmod \ntempor incididunt ut labore et dolore magna aliqua.',
'test',
'foo']], 4],
b: new Map([['za', 1], ['zb', 'test']]),
};
console.log(inspect(o, { compact: true, depth: 5, breakLength: 80 }));
// { a:
// [ 1,
// 2,
// [ [ 'Lorem ipsum dolor sit amet,\nconsectetur [...]', // A long line
// 'test',
// 'foo' ] ],
// 4 ],
// b: Map(2) { 'za' => 1, 'zb' => 'test' } }
// Setting `compact` to false or an integer creates more reader friendly output.
console.log(inspect(o, { compact: false, depth: 5, breakLength: 80 }));
// {
// a: [
// 1,
// 2,
// [
// [
// 'Lorem ipsum dolor sit amet,\n' +
// 'consectetur adipiscing elit, sed do eiusmod \n' +
// 'tempor incididunt ut labore et dolore magna aliqua.',
// 'test',
// 'foo'
// ]
// ],
// 4
// ],
// b: Map(2) {
// 'za' => 1,
// 'zb' => 'test'
// }
// }
// Setting `breakLength` to e.g. 150 will print the "Lorem ipsum" text in a
// single line.
The showHidden option allows WeakMap and WeakSet entries to be inspected. If there are more entries than maxArrayLength, there is no guarantee which entries are displayed. That means retrieving the same WeakSet entries twice may result in different output. Furthermore, entries with no remaining strong references may be garbage collected at any time.
import { inspect } from 'node:util';
const obj = { a: 1 };
const obj2 = { b: 2 };
const weakSet = new WeakSet([obj, obj2]);
console.log(inspect(weakSet, { showHidden: true }));
// WeakSet { { a: 1 }, { b: 2 } }
The sorted option ensures that an object's property insertion order does not impact the result of util.inspect().
import { inspect } from 'node:util';
import assert from 'node:assert';
const o1 = {
b: [2, 3, 1],
a: '`a` comes before `b`',
c: new Set([2, 3, 1]),
};
console.log(inspect(o1, { sorted: true }));
// { a: '`a` comes before `b`', b: [ 2, 3, 1 ], c: Set(3) { 1, 2, 3 } }
console.log(inspect(o1, { sorted: (a, b) => b.localeCompare(a) }));
// { c: Set(3) { 3, 2, 1 }, b: [ 2, 3, 1 ], a: '`a` comes before `b`' }
const o2 = {
c: new Set([2, 1, 3]),
a: '`a` comes before `b`',
b: [2, 3, 1],
};
assert.strict.equal(
inspect(o1, { sorted: true }),
inspect(o2, { sorted: true }),
);
The numericSeparator option adds an underscore every three digits to all numbers.
import { inspect } from 'node:util';
const thousand = 1000;
const million = 1000000;
const bigNumber = 123456789n;
const bigDecimal = 1234.12345;
console.log(inspect(thousand, { numericSeparator: true }));
// 1_000
console.log(inspect(million, { numericSeparator: true }));
// 1_000_000
console.log(inspect(bigNumber, { numericSeparator: true }));
// 123_456_789n
console.log(inspect(bigDecimal, { numericSeparator: true }));
// 1_234.123_45
util.inspect() is a synchronous method intended for debugging. Its maximum output length is approximately 128 MiB. Inputs that result in longer output will be truncated.
@since v0.3.0
| Parameter | |
|---|---|
object | Any JavaScript primitive or Object. |
Returns. The representation of object.
static member promisify: Promisify
static member promisify: PromisifyTakes a function following the common error-first callback style, i.e. taking an (err, value) => ... callback as the last argument, and returns a version that returns promises.
import { promisify } from 'node:util';
import { stat } from 'node:fs';
const promisifiedStat = promisify(stat);
promisifiedStat('.').then((stats) => {
// Do something with `stats`
}).catch((error) => {
// Handle the error.
});
Or, equivalently using async functions:
import { promisify } from 'node:util';
import { stat } from 'node:fs';
const promisifiedStat = promisify(stat);
async function callStat() {
const stats = await promisifiedStat('.');
console.log(`This directory is owned by ${stats.uid}`);
}
callStat();
If there is an original[util.promisify.custom] property present, promisify will return its value, see Custom promisified functions.
promisify() assumes that original is a function taking a callback as its final argument in all cases. If original is not a function, promisify() will throw an error. If original is a function but its last argument is not an error-first callback, it will still be passed an error-first callback as its last argument.
Using promisify() on class methods or other methods that use this may not work as expected unless handled specially:
import { promisify } from 'node:util';
class Foo {
constructor() {
this.a = 42;
}
bar(callback) {
callback(null, this.a);
}
}
const foo = new Foo();
const naiveBar = promisify(foo.bar);
// TypeError: Cannot read properties of undefined (reading 'a')
// naiveBar().then(a => console.log(a));
naiveBar.call(foo).then((a) => console.log(a)); // '42'
const bindBar = naiveBar.bind(foo);
bindBar().then((a) => console.log(a)); // '42'
@since v8.0.0
static member types: TypesMethods
static member MIMEParams () : MIMEParams
static member MIMEParams () : MIMEParamsThe MIMEParams API provides read and write access to the parameters of a MIMEType.
@since v19.1.0, v18.13.0
static member MIMEType (input: U2<string,Input>) : MIMEType
static member MIMEType (input: U2<string,Input>) : MIMETypeAn implementation of the MIMEType class.
In accordance with browser conventions, all properties of MIMEType objects are implemented as getters and setters on the class prototype, rather than as data properties on the object itself.
A MIME string is a structured string containing multiple meaningful components. When parsed, a MIMEType object is returned containing properties for each of these components.
@since v19.1.0, v18.13.0
static member TextDecoder (?encoding: string, ?options: Options) : TextDecoder
static member TextDecoder (?encoding: string, ?options: Options) : TextDecoderAn implementation of the WHATWG Encoding StandardTextDecoder API.
const decoder = new TextDecoder();
const u8arr = new Uint8Array([72, 101, 108, 108, 111]);
console.log(decoder.decode(u8arr)); // Hello
@since v8.3.0
static member TextEncoder () : TextEncoder
static member TextEncoder () : TextEncoderAn implementation of the WHATWG Encoding StandardTextEncoder API. All instances of TextEncoder only support UTF-8 encoding.
const encoder = new TextEncoder();
const uint8array = encoder.encode('this is some data');
The TextEncoder class is also available on the global object.
@since v8.3.0
static member aborted (signal: AbortSignal, resource: obj) : Promise<unit>
static member aborted (signal: AbortSignal, resource: obj) : Promise<unit>Listens to abort event on the provided signal and returns a promise that resolves when the signal is aborted. If resource is provided, it weakly references the operation's associated object, so if resource is garbage collected before the signal aborts, then returned promise shall remain pending. This prevents memory leaks in long-running or non-cancelable operations.
import { aborted } from 'node:util';
// Obtain an object with an abortable signal, like a custom resource or operation.
const dependent = obtainSomethingAbortable();
// Pass `dependent` as the resource, indicating the promise should only resolve
// if `dependent` is still in memory when the signal is aborted.
aborted(dependent.signal, dependent).then(() => {
// This code runs when `dependent` is aborted.
console.log('Dependent resource was aborted.');
});
// Simulate an event that triggers the abort.
dependent.on('event', () => {
dependent.abort(); // This will cause the `aborted` promise to resolve.
});
@since v19.7.0
| Parameter | |
|---|---|
resource | Any non-null object tied to the abortable operation and held weakly. If resource is garbage collected before the signal aborts, the promise remains pending, allowing Node.js to stop tracking it. This helps prevent memory leaks in long-running or non-cancelable operations. |
static member callbackify<'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'TResult> (fn: Fn10<'T1,'T2,'T3,'T4,'T5,'T6,'TResult>) : Result12<'T1,'T2,'T3,'T4,'T5,'T6,'TResult>
static member callbackify<'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'TResult> (fn: Fn10<'T1,'T2,'T3,'T4,'T5,'T6,'TResult>) : Result12<'T1,'T2,'T3,'T4,'T5,'T6,'TResult>Takes an async function (or a function that returns a Promise) and returns a function following the error-first callback style, i.e. taking an (err, value) => ... callback as the last argument. In the callback, the first argument will be the rejection reason (or null if the Promise resolved), and the second argument will be the resolved value.
import { callbackify } from 'node:util';
async function fn() {
return 'hello world';
}
const callbackFunction = callbackify(fn);
callbackFunction((err, ret) => {
if (err) throw err;
console.log(ret);
});
Will print:
hello world
The callback is executed asynchronously, and will have a limited stack trace. If the callback throws, the process will emit an 'uncaughtException' event, and if not handled will exit.
Since null has a special meaning as the first argument to a callback, if a wrapped function rejects a Promise with a falsy value as a reason, the value is wrapped in an Error with the original value stored in a field named reason.
function fn() {
return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);
callbackFunction((err, ret) => {
// When the Promise was rejected with `null` it is wrapped with an Error and
// the original value is stored in `reason`.
err && Object.hasOwn(err, 'reason') && err.reason === null; // true
});
@since v8.2.0
| Parameter | |
|---|---|
fn | An async function |
Returns. a callback style function
static member callbackify<'T1, 'T2, 'T3, 'T4, 'T5, 'T6> (fn: Fn9<'T1,'T2,'T3,'T4,'T5,'T6>) : Result11<'T1,'T2,'T3,'T4,'T5,'T6>
static member callbackify<'T1, 'T2, 'T3, 'T4, 'T5, 'T6> (fn: Fn9<'T1,'T2,'T3,'T4,'T5,'T6>) : Result11<'T1,'T2,'T3,'T4,'T5,'T6>Takes an async function (or a function that returns a Promise) and returns a function following the error-first callback style, i.e. taking an (err, value) => ... callback as the last argument. In the callback, the first argument will be the rejection reason (or null if the Promise resolved), and the second argument will be the resolved value.
import { callbackify } from 'node:util';
async function fn() {
return 'hello world';
}
const callbackFunction = callbackify(fn);
callbackFunction((err, ret) => {
if (err) throw err;
console.log(ret);
});
Will print:
hello world
The callback is executed asynchronously, and will have a limited stack trace. If the callback throws, the process will emit an 'uncaughtException' event, and if not handled will exit.
Since null has a special meaning as the first argument to a callback, if a wrapped function rejects a Promise with a falsy value as a reason, the value is wrapped in an Error with the original value stored in a field named reason.
function fn() {
return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);
callbackFunction((err, ret) => {
// When the Promise was rejected with `null` it is wrapped with an Error and
// the original value is stored in `reason`.
err && Object.hasOwn(err, 'reason') && err.reason === null; // true
});
@since v8.2.0
| Parameter | |
|---|---|
fn | An async function |
Returns. a callback style function
static member callbackify<'T1, 'T2, 'T3, 'T4, 'T5, 'TResult> (fn: Fn8<'T1,'T2,'T3,'T4,'T5,'TResult>) : Result10<'T1,'T2,'T3,'T4,'T5,'TResult>
static member callbackify<'T1, 'T2, 'T3, 'T4, 'T5, 'TResult> (fn: Fn8<'T1,'T2,'T3,'T4,'T5,'TResult>) : Result10<'T1,'T2,'T3,'T4,'T5,'TResult>Takes an async function (or a function that returns a Promise) and returns a function following the error-first callback style, i.e. taking an (err, value) => ... callback as the last argument. In the callback, the first argument will be the rejection reason (or null if the Promise resolved), and the second argument will be the resolved value.
import { callbackify } from 'node:util';
async function fn() {
return 'hello world';
}
const callbackFunction = callbackify(fn);
callbackFunction((err, ret) => {
if (err) throw err;
console.log(ret);
});
Will print:
hello world
The callback is executed asynchronously, and will have a limited stack trace. If the callback throws, the process will emit an 'uncaughtException' event, and if not handled will exit.
Since null has a special meaning as the first argument to a callback, if a wrapped function rejects a Promise with a falsy value as a reason, the value is wrapped in an Error with the original value stored in a field named reason.
function fn() {
return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);
callbackFunction((err, ret) => {
// When the Promise was rejected with `null` it is wrapped with an Error and
// the original value is stored in `reason`.
err && Object.hasOwn(err, 'reason') && err.reason === null; // true
});
@since v8.2.0
| Parameter | |
|---|---|
fn | An async function |
Returns. a callback style function
static member callbackify<'T1, 'T2, 'T3, 'T4, 'T5> (fn: Fn7<'T1,'T2,'T3,'T4,'T5>) : Result9<'T1,'T2,'T3,'T4,'T5>
static member callbackify<'T1, 'T2, 'T3, 'T4, 'T5> (fn: Fn7<'T1,'T2,'T3,'T4,'T5>) : Result9<'T1,'T2,'T3,'T4,'T5>Takes an async function (or a function that returns a Promise) and returns a function following the error-first callback style, i.e. taking an (err, value) => ... callback as the last argument. In the callback, the first argument will be the rejection reason (or null if the Promise resolved), and the second argument will be the resolved value.
import { callbackify } from 'node:util';
async function fn() {
return 'hello world';
}
const callbackFunction = callbackify(fn);
callbackFunction((err, ret) => {
if (err) throw err;
console.log(ret);
});
Will print:
hello world
The callback is executed asynchronously, and will have a limited stack trace. If the callback throws, the process will emit an 'uncaughtException' event, and if not handled will exit.
Since null has a special meaning as the first argument to a callback, if a wrapped function rejects a Promise with a falsy value as a reason, the value is wrapped in an Error with the original value stored in a field named reason.
function fn() {
return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);
callbackFunction((err, ret) => {
// When the Promise was rejected with `null` it is wrapped with an Error and
// the original value is stored in `reason`.
err && Object.hasOwn(err, 'reason') && err.reason === null; // true
});
@since v8.2.0
| Parameter | |
|---|---|
fn | An async function |
Returns. a callback style function
static member callbackify<'T1, 'T2, 'T3, 'T4, 'TResult> (fn: Fn6<'T1,'T2,'T3,'T4,'TResult>) : Result8<'T1,'T2,'T3,'T4,'TResult>
static member callbackify<'T1, 'T2, 'T3, 'T4, 'TResult> (fn: Fn6<'T1,'T2,'T3,'T4,'TResult>) : Result8<'T1,'T2,'T3,'T4,'TResult>Takes an async function (or a function that returns a Promise) and returns a function following the error-first callback style, i.e. taking an (err, value) => ... callback as the last argument. In the callback, the first argument will be the rejection reason (or null if the Promise resolved), and the second argument will be the resolved value.
import { callbackify } from 'node:util';
async function fn() {
return 'hello world';
}
const callbackFunction = callbackify(fn);
callbackFunction((err, ret) => {
if (err) throw err;
console.log(ret);
});
Will print:
hello world
The callback is executed asynchronously, and will have a limited stack trace. If the callback throws, the process will emit an 'uncaughtException' event, and if not handled will exit.
Since null has a special meaning as the first argument to a callback, if a wrapped function rejects a Promise with a falsy value as a reason, the value is wrapped in an Error with the original value stored in a field named reason.
function fn() {
return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);
callbackFunction((err, ret) => {
// When the Promise was rejected with `null` it is wrapped with an Error and
// the original value is stored in `reason`.
err && Object.hasOwn(err, 'reason') && err.reason === null; // true
});
@since v8.2.0
| Parameter | |
|---|---|
fn | An async function |
Returns. a callback style function
static member callbackify<'T1, 'T2, 'T3, 'T4> (fn: Fn5<'T1,'T2,'T3,'T4>) : Result7<'T1,'T2,'T3,'T4>
static member callbackify<'T1, 'T2, 'T3, 'T4> (fn: Fn5<'T1,'T2,'T3,'T4>) : Result7<'T1,'T2,'T3,'T4>Takes an async function (or a function that returns a Promise) and returns a function following the error-first callback style, i.e. taking an (err, value) => ... callback as the last argument. In the callback, the first argument will be the rejection reason (or null if the Promise resolved), and the second argument will be the resolved value.
import { callbackify } from 'node:util';
async function fn() {
return 'hello world';
}
const callbackFunction = callbackify(fn);
callbackFunction((err, ret) => {
if (err) throw err;
console.log(ret);
});
Will print:
hello world
The callback is executed asynchronously, and will have a limited stack trace. If the callback throws, the process will emit an 'uncaughtException' event, and if not handled will exit.
Since null has a special meaning as the first argument to a callback, if a wrapped function rejects a Promise with a falsy value as a reason, the value is wrapped in an Error with the original value stored in a field named reason.
function fn() {
return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);
callbackFunction((err, ret) => {
// When the Promise was rejected with `null` it is wrapped with an Error and
// the original value is stored in `reason`.
err && Object.hasOwn(err, 'reason') && err.reason === null; // true
});
@since v8.2.0
| Parameter | |
|---|---|
fn | An async function |
Returns. a callback style function
static member callbackify<'T1, 'T2, 'T3, 'TResult> (fn: Fn4<'T1,'T2,'T3,'TResult>) : Result6<'T1,'T2,'T3,'TResult>
static member callbackify<'T1, 'T2, 'T3, 'TResult> (fn: Fn4<'T1,'T2,'T3,'TResult>) : Result6<'T1,'T2,'T3,'TResult>Takes an async function (or a function that returns a Promise) and returns a function following the error-first callback style, i.e. taking an (err, value) => ... callback as the last argument. In the callback, the first argument will be the rejection reason (or null if the Promise resolved), and the second argument will be the resolved value.
import { callbackify } from 'node:util';
async function fn() {
return 'hello world';
}
const callbackFunction = callbackify(fn);
callbackFunction((err, ret) => {
if (err) throw err;
console.log(ret);
});
Will print:
hello world
The callback is executed asynchronously, and will have a limited stack trace. If the callback throws, the process will emit an 'uncaughtException' event, and if not handled will exit.
Since null has a special meaning as the first argument to a callback, if a wrapped function rejects a Promise with a falsy value as a reason, the value is wrapped in an Error with the original value stored in a field named reason.
function fn() {
return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);
callbackFunction((err, ret) => {
// When the Promise was rejected with `null` it is wrapped with an Error and
// the original value is stored in `reason`.
err && Object.hasOwn(err, 'reason') && err.reason === null; // true
});
@since v8.2.0
| Parameter | |
|---|---|
fn | An async function |
Returns. a callback style function
static member callbackify<'T1, 'T2, 'T3> (fn: Fn3<'T1,'T2,'T3>) : Result5<'T1,'T2,'T3>
static member callbackify<'T1, 'T2, 'T3> (fn: Fn3<'T1,'T2,'T3>) : Result5<'T1,'T2,'T3>Takes an async function (or a function that returns a Promise) and returns a function following the error-first callback style, i.e. taking an (err, value) => ... callback as the last argument. In the callback, the first argument will be the rejection reason (or null if the Promise resolved), and the second argument will be the resolved value.
import { callbackify } from 'node:util';
async function fn() {
return 'hello world';
}
const callbackFunction = callbackify(fn);
callbackFunction((err, ret) => {
if (err) throw err;
console.log(ret);
});
Will print:
hello world
The callback is executed asynchronously, and will have a limited stack trace. If the callback throws, the process will emit an 'uncaughtException' event, and if not handled will exit.
Since null has a special meaning as the first argument to a callback, if a wrapped function rejects a Promise with a falsy value as a reason, the value is wrapped in an Error with the original value stored in a field named reason.
function fn() {
return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);
callbackFunction((err, ret) => {
// When the Promise was rejected with `null` it is wrapped with an Error and
// the original value is stored in `reason`.
err && Object.hasOwn(err, 'reason') && err.reason === null; // true
});
@since v8.2.0
| Parameter | |
|---|---|
fn | An async function |
Returns. a callback style function
static member callbackify<'T1, 'T2, 'TResult> (fn: Fn2<'T1,'T2,'TResult>) : Result4<'T1,'T2,'TResult>
static member callbackify<'T1, 'T2, 'TResult> (fn: Fn2<'T1,'T2,'TResult>) : Result4<'T1,'T2,'TResult>Takes an async function (or a function that returns a Promise) and returns a function following the error-first callback style, i.e. taking an (err, value) => ... callback as the last argument. In the callback, the first argument will be the rejection reason (or null if the Promise resolved), and the second argument will be the resolved value.
import { callbackify } from 'node:util';
async function fn() {
return 'hello world';
}
const callbackFunction = callbackify(fn);
callbackFunction((err, ret) => {
if (err) throw err;
console.log(ret);
});
Will print:
hello world
The callback is executed asynchronously, and will have a limited stack trace. If the callback throws, the process will emit an 'uncaughtException' event, and if not handled will exit.
Since null has a special meaning as the first argument to a callback, if a wrapped function rejects a Promise with a falsy value as a reason, the value is wrapped in an Error with the original value stored in a field named reason.
function fn() {
return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);
callbackFunction((err, ret) => {
// When the Promise was rejected with `null` it is wrapped with an Error and
// the original value is stored in `reason`.
err && Object.hasOwn(err, 'reason') && err.reason === null; // true
});
@since v8.2.0
| Parameter | |
|---|---|
fn | An async function |
Returns. a callback style function
static member callbackify<'T1, 'T2> (fn: Fn<'T1,'T2>) : Result3<'T1,'T2>
static member callbackify<'T1, 'T2> (fn: Fn<'T1,'T2>) : Result3<'T1,'T2>Takes an async function (or a function that returns a Promise) and returns a function following the error-first callback style, i.e. taking an (err, value) => ... callback as the last argument. In the callback, the first argument will be the rejection reason (or null if the Promise resolved), and the second argument will be the resolved value.
import { callbackify } from 'node:util';
async function fn() {
return 'hello world';
}
const callbackFunction = callbackify(fn);
callbackFunction((err, ret) => {
if (err) throw err;
console.log(ret);
});
Will print:
hello world
The callback is executed asynchronously, and will have a limited stack trace. If the callback throws, the process will emit an 'uncaughtException' event, and if not handled will exit.
Since null has a special meaning as the first argument to a callback, if a wrapped function rejects a Promise with a falsy value as a reason, the value is wrapped in an Error with the original value stored in a field named reason.
function fn() {
return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);
callbackFunction((err, ret) => {
// When the Promise was rejected with `null` it is wrapped with an Error and
// the original value is stored in `reason`.
err && Object.hasOwn(err, 'reason') && err.reason === null; // true
});
@since v8.2.0
| Parameter | |
|---|---|
fn | An async function |
Returns. a callback style function
static member callbackify<'T1, 'TResult> (fn: 'T1 -> Promise<'TResult>) : Result2<'T1,'TResult>
static member callbackify<'T1, 'TResult> (fn: 'T1 -> Promise<'TResult>) : Result2<'T1,'TResult>Takes an async function (or a function that returns a Promise) and returns a function following the error-first callback style, i.e. taking an (err, value) => ... callback as the last argument. In the callback, the first argument will be the rejection reason (or null if the Promise resolved), and the second argument will be the resolved value.
import { callbackify } from 'node:util';
async function fn() {
return 'hello world';
}
const callbackFunction = callbackify(fn);
callbackFunction((err, ret) => {
if (err) throw err;
console.log(ret);
});
Will print:
hello world
The callback is executed asynchronously, and will have a limited stack trace. If the callback throws, the process will emit an 'uncaughtException' event, and if not handled will exit.
Since null has a special meaning as the first argument to a callback, if a wrapped function rejects a Promise with a falsy value as a reason, the value is wrapped in an Error with the original value stored in a field named reason.
function fn() {
return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);
callbackFunction((err, ret) => {
// When the Promise was rejected with `null` it is wrapped with an Error and
// the original value is stored in `reason`.
err && Object.hasOwn(err, 'reason') && err.reason === null; // true
});
@since v8.2.0
| Parameter | |
|---|---|
fn | An async function |
Returns. a callback style function
static member callbackify<'T1> (fn: 'T1 -> Promise<unit>) : Result<'T1>
static member callbackify<'T1> (fn: 'T1 -> Promise<unit>) : Result<'T1>Takes an async function (or a function that returns a Promise) and returns a function following the error-first callback style, i.e. taking an (err, value) => ... callback as the last argument. In the callback, the first argument will be the rejection reason (or null if the Promise resolved), and the second argument will be the resolved value.
import { callbackify } from 'node:util';
async function fn() {
return 'hello world';
}
const callbackFunction = callbackify(fn);
callbackFunction((err, ret) => {
if (err) throw err;
console.log(ret);
});
Will print:
hello world
The callback is executed asynchronously, and will have a limited stack trace. If the callback throws, the process will emit an 'uncaughtException' event, and if not handled will exit.
Since null has a special meaning as the first argument to a callback, if a wrapped function rejects a Promise with a falsy value as a reason, the value is wrapped in an Error with the original value stored in a field named reason.
function fn() {
return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);
callbackFunction((err, ret) => {
// When the Promise was rejected with `null` it is wrapped with an Error and
// the original value is stored in `reason`.
err && Object.hasOwn(err, 'reason') && err.reason === null; // true
});
@since v8.2.0
| Parameter | |
|---|---|
fn | An async function |
Returns. a callback style function
static member callbackify<'TResult> (fn: unit -> Promise<'TResult>) : Callback<'TResult> -> unit
static member callbackify<'TResult> (fn: unit -> Promise<'TResult>) : Callback<'TResult> -> unitTakes an async function (or a function that returns a Promise) and returns a function following the error-first callback style, i.e. taking an (err, value) => ... callback as the last argument. In the callback, the first argument will be the rejection reason (or null if the Promise resolved), and the second argument will be the resolved value.
import { callbackify } from 'node:util';
async function fn() {
return 'hello world';
}
const callbackFunction = callbackify(fn);
callbackFunction((err, ret) => {
if (err) throw err;
console.log(ret);
});
Will print:
hello world
The callback is executed asynchronously, and will have a limited stack trace. If the callback throws, the process will emit an 'uncaughtException' event, and if not handled will exit.
Since null has a special meaning as the first argument to a callback, if a wrapped function rejects a Promise with a falsy value as a reason, the value is wrapped in an Error with the original value stored in a field named reason.
function fn() {
return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);
callbackFunction((err, ret) => {
// When the Promise was rejected with `null` it is wrapped with an Error and
// the original value is stored in `reason`.
err && Object.hasOwn(err, 'reason') && err.reason === null; // true
});
@since v8.2.0
| Parameter | |
|---|---|
fn | An async function |
Returns. a callback style function
static member callbackify (fn: unit -> Promise<unit>) : (ErrnoException -> unit) -> unit
static member callbackify (fn: unit -> Promise<unit>) : (ErrnoException -> unit) -> unitTakes an async function (or a function that returns a Promise) and returns a function following the error-first callback style, i.e. taking an (err, value) => ... callback as the last argument. In the callback, the first argument will be the rejection reason (or null if the Promise resolved), and the second argument will be the resolved value.
import { callbackify } from 'node:util';
async function fn() {
return 'hello world';
}
const callbackFunction = callbackify(fn);
callbackFunction((err, ret) => {
if (err) throw err;
console.log(ret);
});
Will print:
hello world
The callback is executed asynchronously, and will have a limited stack trace. If the callback throws, the process will emit an 'uncaughtException' event, and if not handled will exit.
Since null has a special meaning as the first argument to a callback, if a wrapped function rejects a Promise with a falsy value as a reason, the value is wrapped in an Error with the original value stored in a field named reason.
function fn() {
return Promise.reject(null);
}
const callbackFunction = util.callbackify(fn);
callbackFunction((err, ret) => {
// When the Promise was rejected with `null` it is wrapped with an Error and
// the original value is stored in `reason`.
err && Object.hasOwn(err, 'reason') && err.reason === null; // true
});
@since v8.2.0
| Parameter | |
|---|---|
fn | An async function |
Returns. a callback style function
static member debug (section: string, ?callback: (DebugLoggerFunction -> unit)) : DebugLogger
static member debug (section: string, ?callback: (DebugLoggerFunction -> unit)) : DebugLoggerThe util.debuglog() method is used to create a function that conditionally writes debug messages to stderr based on the existence of the NODE_DEBUG environment variable. If the section name appears within the value of that environment variable, then the returned function operates similar to console.error(). If not, then the returned function is a no-op.
import { debuglog } from 'node:util';
const log = debuglog('foo');
log('hello from foo [%d]', 123);
If this program is run with NODE_DEBUG=foo in the environment, then it will output something like:
FOO 3245: hello from foo [123]
where 3245 is the process id. If it is not run with that environment variable set, then it will not print anything.
The section supports wildcard also:
import { debuglog } from 'node:util';
const log = debuglog('foo');
log('hi there, it\'s foo-bar [%d]', 2333);
if it is run with NODE_DEBUG=foo* in the environment, then it will output something like:
FOO-BAR 3257: hi there, it's foo-bar [2333]
Multiple comma-separated section names may be specified in the NODE_DEBUG environment variable: NODE_DEBUG=fs,net,tls.
The optional callback argument can be used to replace the logging function with a different function that doesn't have any initialization or unnecessary wrapping.
import { debuglog } from 'node:util';
let log = debuglog('internals', (debug) => {
// Replace with a logging function that optimizes out
// testing if the section is enabled
log = debug;
});
@since v0.11.3
| Parameter | |
|---|---|
section | A string identifying the portion of the application for which the debuglog function is being created. |
callback | A callback invoked the first time the logging function is called with a function argument that is a more optimized logging function. |
Returns. The logging function
static member debuglog (section: string, ?callback: (DebugLoggerFunction -> unit)) : DebugLogger
static member debuglog (section: string, ?callback: (DebugLoggerFunction -> unit)) : DebugLoggerThe util.debuglog() method is used to create a function that conditionally writes debug messages to stderr based on the existence of the NODE_DEBUG environment variable. If the section name appears within the value of that environment variable, then the returned function operates similar to console.error(). If not, then the returned function is a no-op.
import { debuglog } from 'node:util';
const log = debuglog('foo');
log('hello from foo [%d]', 123);
If this program is run with NODE_DEBUG=foo in the environment, then it will output something like:
FOO 3245: hello from foo [123]
where 3245 is the process id. If it is not run with that environment variable set, then it will not print anything.
The section supports wildcard also:
import { debuglog } from 'node:util';
const log = debuglog('foo');
log('hi there, it\'s foo-bar [%d]', 2333);
if it is run with NODE_DEBUG=foo* in the environment, then it will output something like:
FOO-BAR 3257: hi there, it's foo-bar [2333]
Multiple comma-separated section names may be specified in the NODE_DEBUG environment variable: NODE_DEBUG=fs,net,tls.
The optional callback argument can be used to replace the logging function with a different function that doesn't have any initialization or unnecessary wrapping.
import { debuglog } from 'node:util';
let log = debuglog('internals', (debug) => {
// Replace with a logging function that optimizes out
// testing if the section is enabled
log = debug;
});
@since v0.11.3
| Parameter | |
|---|---|
section | A string identifying the portion of the application for which the debuglog function is being created. |
callback | A callback invoked the first time the logging function is called with a function argument that is a more optimized logging function. |
Returns. The logging function
static member deprecate<'T> (fn: 'T, msg: string, ?code: string) : 'T
static member deprecate<'T> (fn: 'T, msg: string, ?code: string) : 'TThe util.deprecate() method wraps fn (which may be a function or class) in such a way that it is marked as deprecated.
import { deprecate } from 'node:util';
export const obsoleteFunction = deprecate(() => {
// Do something here.
}, 'obsoleteFunction() is deprecated. Use newShinyFunction() instead.');
When called, util.deprecate() will return a function that will emit a DeprecationWarning using the 'warning' event. The warning will be emitted and printed to stderr the first time the returned function is called. After the warning is emitted, the wrapped function is called without emitting a warning.
If the same optional code is supplied in multiple calls to util.deprecate(), the warning will be emitted only once for that code.
import { deprecate } from 'node:util';
const fn1 = deprecate(
() => 'a value',
'deprecation message',
'DEP0001',
);
const fn2 = deprecate(
() => 'a different value',
'other dep message',
'DEP0001',
);
fn1(); // Emits a deprecation warning with code DEP0001
fn2(); // Does not emit a deprecation warning because it has the same code
If either the --no-deprecation or --no-warnings command-line flags are used, or if the process.noDeprecation property is set to true prior to the first deprecation warning, the util.deprecate() method does nothing.
If the --trace-deprecation or --trace-warnings command-line flags are set, or the process.traceDeprecation property is set to true, a warning and a stack trace are printed to stderr the first time the deprecated function is called.
If the --throw-deprecation command-line flag is set, or the process.throwDeprecation property is set to true, then an exception will be thrown when the deprecated function is called.
The --throw-deprecation command-line flag and process.throwDeprecation property take precedence over --trace-deprecation and process.traceDeprecation.
@since v0.8.0
| Parameter | |
|---|---|
fn | The function that is being deprecated. |
msg | A warning message to display when the deprecated function is invoked. |
code | A deprecation code. See the list of deprecated APIs for a list of codes. |
Returns. The deprecated function wrapped to emit a warning.
static member diff (actual: U2<string,string array>, expected: U2<string,string array>) : DiffEntry array
static member diff (actual: U2<string,string array>, expected: U2<string,string array>) : DiffEntry arrayutil.diff() compares two string or array values and returns an array of difference entries. It uses the Myers diff algorithm to compute minimal differences, which is the same algorithm used internally by assertion error messages.
If the values are equal, an empty array is returned.
const { diff } = require('node:util');
// Comparing strings
const actualString = '12345678';
const expectedString = '12!!5!7!';
console.log(diff(actualString, expectedString));
// [
// [0, '1'],
// [0, '2'],
// [1, '3'],
// [1, '4'],
// [-1, '!'],
// [-1, '!'],
// [0, '5'],
// [1, '6'],
// [-1, '!'],
// [0, '7'],
// [1, '8'],
// [-1, '!'],
// ]
// Comparing arrays
const actualArray = ['1', '2', '3'];
const expectedArray = ['1', '3', '4'];
console.log(diff(actualArray, expectedArray));
// [
// [0, '1'],
// [1, '2'],
// [0, '3'],
// [-1, '4'],
// ]
// Equal values return empty array
console.log(diff('same', 'same'));
// []
@since v22.15.0
| Parameter | |
|---|---|
actual | The first value to compare |
expected | The second value to compare |
Returns. An array of difference entries. Each entry is an array with two elements:
- Index 0:
numberOperation code:-1for delete,0for no-op/unchanged,1for insert - Index 1:
stringThe value associated with the operation
static member format (format: obj option, param: obj array) : string
static member format (format: obj option, param: obj array) : stringThe util.format() method returns a formatted string using the first argument as a printf-like format string which can contain zero or more format specifiers. Each specifier is replaced with the converted value from the corresponding argument. Supported specifiers are:
If a specifier does not have a corresponding argument, it is not replaced:
util.format('%s:%s', 'foo');
// Returns: 'foo:%s'
Values that are not part of the format string are formatted using util.inspect() if their type is not string.
If there are more arguments passed to the util.format() method than the number of specifiers, the extra arguments are concatenated to the returned string, separated by spaces:
util.format('%s:%s', 'foo', 'bar', 'baz');
// Returns: 'foo:bar baz'
If the first argument does not contain a valid format specifier, util.format() returns a string that is the concatenation of all arguments separated by spaces:
util.format(1, 2, 3);
// Returns: '1 2 3'
If only one argument is passed to util.format(), it is returned as it is without any formatting:
util.format('%% %s');
// Returns: '%% %s'
util.format() is a synchronous method that is intended as a debugging tool. Some input values can have a significant performance overhead that can block the event loop. Use this function with care and never in a hot code path.
@since v0.5.3
| Parameter | |
|---|---|
format | A printf-like format string. |
static member formatWithOptions (inspectOptions: InspectOptions, format: obj option, param: obj array) : string
static member formatWithOptions (inspectOptions: InspectOptions, format: obj option, param: obj array) : stringThis function is identical to format, except in that it takes an inspectOptions argument which specifies options that are passed along to inspect.
util.formatWithOptions({ colors: true }, 'See object %O', { foo: 42 });
// Returns 'See object { foo: 42 }', where `42` is colored as a number
// when printed to a terminal.
@since v10.0.0
static member getCallSites (options: GetCallSitesOptions) : CallSiteObject array
static member getCallSites (options: GetCallSitesOptions) : CallSiteObject arrayReturns an array of call site objects containing the stack of the caller function.
import { getCallSites } from 'node:util';
function exampleFunction() {
const callSites = getCallSites();
console.log('Call Sites:');
callSites.forEach((callSite, index) => {
console.log(`CallSite ${index + 1}:`);
console.log(`Function Name: ${callSite.functionName}`);
console.log(`Script Name: ${callSite.scriptName}`);
console.log(`Line Number: ${callSite.lineNumber}`);
console.log(`Column Number: ${callSite.column}`);
});
// CallSite 1:
// Function Name: exampleFunction
// Script Name: /home/example.js
// Line Number: 5
// Column Number: 26
// CallSite 2:
// Function Name: anotherFunction
// Script Name: /home/example.js
// Line Number: 22
// Column Number: 3
// ...
}
// A function to simulate another stack layer
function anotherFunction() {
exampleFunction();
}
anotherFunction();
It is possible to reconstruct the original locations by setting the option sourceMap to true. If the source map is not available, the original location will be the same as the current location. When the --enable-source-maps flag is enabled, for example when using --experimental-transform-types, sourceMap will be true by default.
import { getCallSites } from 'node:util';
interface Foo {
foo: string;
}
const callSites = getCallSites({ sourceMap: true });
// With sourceMap:
// Function Name: ''
// Script Name: example.js
// Line Number: 7
// Column Number: 26
// Without sourceMap:
// Function Name: ''
// Script Name: example.js
// Line Number: 2
// Column Number: 26
@since v22.9.0
| Parameter | |
|---|---|
frameCount | Number of frames to capture as call site objects. Default:10. Allowable range is between 1 and 200. |
Returns. An array of call site objects
static member getCallSites (?frameCount: float, ?options: GetCallSitesOptions) : CallSiteObject array
static member getCallSites (?frameCount: float, ?options: GetCallSitesOptions) : CallSiteObject arrayReturns an array of call site objects containing the stack of the caller function.
import { getCallSites } from 'node:util';
function exampleFunction() {
const callSites = getCallSites();
console.log('Call Sites:');
callSites.forEach((callSite, index) => {
console.log(`CallSite ${index + 1}:`);
console.log(`Function Name: ${callSite.functionName}`);
console.log(`Script Name: ${callSite.scriptName}`);
console.log(`Line Number: ${callSite.lineNumber}`);
console.log(`Column Number: ${callSite.column}`);
});
// CallSite 1:
// Function Name: exampleFunction
// Script Name: /home/example.js
// Line Number: 5
// Column Number: 26
// CallSite 2:
// Function Name: anotherFunction
// Script Name: /home/example.js
// Line Number: 22
// Column Number: 3
// ...
}
// A function to simulate another stack layer
function anotherFunction() {
exampleFunction();
}
anotherFunction();
It is possible to reconstruct the original locations by setting the option sourceMap to true. If the source map is not available, the original location will be the same as the current location. When the --enable-source-maps flag is enabled, for example when using --experimental-transform-types, sourceMap will be true by default.
import { getCallSites } from 'node:util';
interface Foo {
foo: string;
}
const callSites = getCallSites({ sourceMap: true });
// With sourceMap:
// Function Name: ''
// Script Name: example.js
// Line Number: 7
// Column Number: 26
// Without sourceMap:
// Function Name: ''
// Script Name: example.js
// Line Number: 2
// Column Number: 26
@since v22.9.0
| Parameter | |
|---|---|
frameCount | Number of frames to capture as call site objects. Default:10. Allowable range is between 1 and 200. |
Returns. An array of call site objects
static member getSystemErrorMap () : Map<float,(string * string)>
static member getSystemErrorMap () : Map<float,(string * string)>Returns a Map of all system error codes available from the Node.js API. The mapping between error codes and error names is platform-dependent. See Common System Errors for the names of common errors.
fs.access('file/that/does/not/exist', (err) => {
const errorMap = util.getSystemErrorMap();
const name = errorMap.get(err.errno);
console.error(name); // ENOENT
});
@since v16.0.0, v14.17.0
static member getSystemErrorMessage (err: float) : string
static member getSystemErrorMessage (err: float) : stringReturns the string message for a numeric error code that comes from a Node.js API. The mapping between error codes and string messages is platform-dependent.
fs.access('file/that/does/not/exist', (err) => {
const message = util.getSystemErrorMessage(err.errno);
console.error(message); // no such file or directory
});
@since v22.12.0
static member getSystemErrorName (err: float) : string
static member getSystemErrorName (err: float) : stringReturns the string name for a numeric error code that comes from a Node.js API. The mapping between error codes and error names is platform-dependent. See Common System Errors for the names of common errors.
fs.access('file/that/does/not/exist', (err) => {
const name = util.getSystemErrorName(err.errno);
console.error(name); // ENOENT
});
@since v9.7.0
static member inherits (constructor: obj, superConstructor: obj) : unit
static member inherits (constructor: obj, superConstructor: obj) : unitUsage of util.inherits() is discouraged. Please use the ES6 class and extends keywords to get language level inheritance support. Also note that the two styles are semantically incompatible.
Inherit the prototype methods from one constructor into another. The prototype of constructor will be set to a new object created from superConstructor.
This mainly adds some input validation on top of Object.setPrototypeOf(constructor.prototype, superConstructor.prototype). As an additional convenience, superConstructor will be accessible through the constructor.super_ property.
const util = require('node:util');
const EventEmitter = require('node:events');
function MyStream() {
EventEmitter.call(this);
}
util.inherits(MyStream, EventEmitter);
MyStream.prototype.write = function(data) {
this.emit('data', data);
};
const stream = new MyStream();
console.log(stream instanceof EventEmitter); // true
console.log(MyStream.super_ === EventEmitter); // true
stream.on('data', (data) => {
console.log(`Received data: "${data}"`);
});
stream.write('It works!'); // Received data: "It works!"
ES6 example using class and extends:
import EventEmitter from 'node:events';
class MyStream extends EventEmitter {
write(data) {
this.emit('data', data);
}
}
const stream = new MyStream();
stream.on('data', (data) => {
console.log(`Received data: "${data}"`);
});
stream.write('With ES6');
@since v0.3.0
static member isArray (object: obj) : bool
static member isArray (object: obj) : boolAlias for Array.isArray().
Returns true if the given object is an Array. Otherwise, returns false.
import util from 'node:util';
util.isArray([]);
// Returns: true
util.isArray(new Array());
// Returns: true
util.isArray({});
// Returns: false
@since v0.6.0
static member isBoolean (object: obj) : bool
static member isBoolean (object: obj) : boolReturns true if the given object is a Boolean. Otherwise, returns false.
import util from 'node:util';
util.isBoolean(1);
// Returns: false
util.isBoolean(0);
// Returns: false
util.isBoolean(false);
// Returns: true
@since v0.11.5
static member isBuffer (object: obj) : bool
static member isBuffer (object: obj) : boolReturns true if the given object is a Buffer. Otherwise, returns false.
import util from 'node:util';
util.isBuffer({ length: 0 });
// Returns: false
util.isBuffer([]);
// Returns: false
util.isBuffer(Buffer.from('hello world'));
// Returns: true
@since v0.11.5
static member isDate (object: obj) : bool
static member isDate (object: obj) : boolReturns true if the given object is a Date. Otherwise, returns false.
import util from 'node:util';
util.isDate(new Date());
// Returns: true
util.isDate(Date());
// false (without 'new' returns a String)
util.isDate({});
// Returns: false
@since v0.6.0
static member isDeepStrictEqual (val1: obj, val2: obj) : bool
static member isDeepStrictEqual (val1: obj, val2: obj) : boolReturns true if there is deep strict equality between val1 and val2. Otherwise, returns false.
See assert.deepStrictEqual() for more information about deep strict equality.
@since v9.0.0
static member isError (object: obj) : bool
static member isError (object: obj) : boolReturns true if the given object is an Error. Otherwise, returns false.
import util from 'node:util';
util.isError(new Error());
// Returns: true
util.isError(new TypeError());
// Returns: true
util.isError({ name: 'Error', message: 'an error occurred' });
// Returns: false
This method relies on Object.prototype.toString() behavior. It is possible to obtain an incorrect result when the object argument manipulates @@toStringTag.
import util from 'node:util';
const obj = { name: 'Error', message: 'an error occurred' };
util.isError(obj);
// Returns: false
obj[Symbol.toStringTag] = 'Error';
util.isError(obj);
// Returns: true
@since v0.6.0
static member isFunction (object: obj) : bool
static member isFunction (object: obj) : boolReturns true if the given object is a Function. Otherwise, returns false.
import util from 'node:util';
function Foo() {}
const Bar = () => {};
util.isFunction({});
// Returns: false
util.isFunction(Foo);
// Returns: true
util.isFunction(Bar);
// Returns: true
@since v0.11.5
static member isNull (object: obj) : bool
static member isNull (object: obj) : boolReturns true if the given object is strictly null. Otherwise, returnsfalse.
import util from 'node:util';
util.isNull(0);
// Returns: false
util.isNull(undefined);
// Returns: false
util.isNull(null);
// Returns: true
@since v0.11.5
static member isNullOrUndefined (object: obj) : bool
static member isNullOrUndefined (object: obj) : boolReturns true if the given object is null or undefined. Otherwise, returns false.
import util from 'node:util';
util.isNullOrUndefined(0);
// Returns: false
util.isNullOrUndefined(undefined);
// Returns: true
util.isNullOrUndefined(null);
// Returns: true
@since v0.11.5
static member isNumber (object: obj) : bool
static member isNumber (object: obj) : boolReturns true if the given object is a Number. Otherwise, returns false.
import util from 'node:util';
util.isNumber(false);
// Returns: false
util.isNumber(Infinity);
// Returns: true
util.isNumber(0);
// Returns: true
util.isNumber(NaN);
// Returns: true
@since v0.11.5
static member isObject (object: obj) : bool
static member isObject (object: obj) : boolReturns true if the given object is strictly an Objectand not aFunction (even though functions are objects in JavaScript). Otherwise, returns false.
import util from 'node:util';
util.isObject(5);
// Returns: false
util.isObject(null);
// Returns: false
util.isObject({});
// Returns: true
util.isObject(() => {});
// Returns: false
@since v0.11.5
static member isPrimitive (object: obj) : bool
static member isPrimitive (object: obj) : boolReturns true if the given object is a primitive type. Otherwise, returnsfalse.
import util from 'node:util';
util.isPrimitive(5);
// Returns: true
util.isPrimitive('foo');
// Returns: true
util.isPrimitive(false);
// Returns: true
util.isPrimitive(null);
// Returns: true
util.isPrimitive(undefined);
// Returns: true
util.isPrimitive({});
// Returns: false
util.isPrimitive(() => {});
// Returns: false
util.isPrimitive(/^$/);
// Returns: false
util.isPrimitive(new Date());
// Returns: false
@since v0.11.5
static member isRegExp (object: obj) : bool
static member isRegExp (object: obj) : boolReturns true if the given object is a RegExp. Otherwise, returns false.
import util from 'node:util';
util.isRegExp(/some regexp/);
// Returns: true
util.isRegExp(new RegExp('another regexp'));
// Returns: true
util.isRegExp({});
// Returns: false
@since v0.6.0
static member isString (object: obj) : bool
static member isString (object: obj) : boolReturns true if the given object is a string. Otherwise, returns false.
import util from 'node:util';
util.isString('');
// Returns: true
util.isString('foo');
// Returns: true
util.isString(String('foo'));
// Returns: true
util.isString(5);
// Returns: false
@since v0.11.5
static member isSymbol (object: obj) : bool
static member isSymbol (object: obj) : boolReturns true if the given object is a Symbol. Otherwise, returns false.
import util from 'node:util';
util.isSymbol(5);
// Returns: false
util.isSymbol('foo');
// Returns: false
util.isSymbol(Symbol('foo'));
// Returns: true
@since v0.11.5
static member isUndefined (object: obj) : bool
static member isUndefined (object: obj) : boolReturns true if the given object is undefined. Otherwise, returns false.
import util from 'node:util';
const foo = undefined;
util.isUndefined(5);
// Returns: false
util.isUndefined(foo);
// Returns: true
util.isUndefined(null);
// Returns: false
@since v0.11.5
static member log (string: string) : unit
static member log (string: string) : unitThe util.log() method prints the given string to stdout with an included timestamp.
import util from 'node:util';
util.log('Timestamped message.');
@since v0.3.0
static member parseArgs<'T when 'T :> ParseArgsConfig> (?config: 'T) : obj
static member parseArgs<'T when 'T :> ParseArgsConfig> (?config: 'T) : objProvides a higher level API for command-line argument parsing than interacting with process.argv directly. Takes a specification for the expected arguments and returns a structured object with the parsed options and positionals.
import { parseArgs } from 'node:util';
const args = ['-f', '--bar', 'b'];
const options = {
foo: {
type: 'boolean',
short: 'f',
},
bar: {
type: 'string',
},
};
const {
values,
positionals,
} = parseArgs({ args, options });
console.log(values, positionals);
// Prints: [Object: null prototype] { foo: true, bar: 'b' } []
@since v18.3.0, v16.17.0
| Parameter | |
|---|---|
config | Used to provide arguments for parsing and to configure the parser. config supports the following properties: |
Returns. The parsed command line arguments:
static member parseEnv (content: string) : Record<string,string option>
static member parseEnv (content: string) : Record<string,string option>Stability: 1.1 - Active development Given an example .env file:
import { parseEnv } from 'node:util';
parseEnv('HELLO=world\nHELLO=oh my\n');
// Returns: { HELLO: 'oh my' }
@since v20.12.0
| Parameter | |
|---|---|
content | The raw contents of a .env file. |
static member setTraceSigInt (enable: bool) : unit
static member setTraceSigInt (enable: bool) : unitEnable or disable printing a stack trace on SIGINT. The API is only available on the main thread.
@since 22.19.0
static member stripVTControlCharacters (str: string) : string
static member stripVTControlCharacters (str: string) : stringReturns str with any ANSI escape codes removed.
console.log(util.stripVTControlCharacters('\u001B[4mvalue\u001B[0m'));
// Prints "value"
@since v16.11.0
static member styleText (format: U2<string,Item array>, text: string, ?options: StyleTextOptions) : string
static member styleText (format: U2<string,Item array>, text: string, ?options: StyleTextOptions) : stringThis function returns a formatted text considering the format passed for printing in a terminal. It is aware of the terminal's capabilities and acts according to the configuration set via NO_COLOR, NODE_DISABLE_COLORS and FORCE_COLOR environment variables.
import { styleText } from 'node:util';
import { stderr } from 'node:process';
const successMessage = styleText('green', 'Success!');
console.log(successMessage);
const errorMessage = styleText(
'red',
'Error! Error!',
// Validate if process.stderr has TTY
{ stream: stderr },
);
console.error(errorMessage);
util.inspect.colors also provides text formats such as italic, and underline and you can combine both:
console.log(
util.styleText(['underline', 'italic'], 'My italic underlined message'),
);
When passing an array of formats, the order of the format applied is left to right so the following style might overwrite the previous one.
console.log(
util.styleText(['red', 'green'], 'text'), // green
);
The special format value none applies no additional styling to the text.
The full list of formats can be found in modifiers.
@since v20.12.0
| Parameter | |
|---|---|
format | A text format or an Array of text formats defined in util.inspect.colors. |
text | The text to to be formatted. |
static member toUSVString (string: string) : string
static member toUSVString (string: string) : stringReturns the string after replacing any surrogate code points (or equivalently, any unpaired surrogate code units) with the Unicode "replacement character" U+FFFD.
@since v16.8.0, v14.18.0
static member transferableAbortController () : AbortController
static member transferableAbortController () : AbortControllerCreates and returns an AbortController instance whose AbortSignal is marked as transferable and can be used with structuredClone() or postMessage().
@since v18.11.0
Returns. A transferable AbortController
static member transferableAbortSignal (signal: AbortSignal) : AbortSignal
static member transferableAbortSignal (signal: AbortSignal) : AbortSignalMarks the given AbortSignal as transferable so that it can be used withstructuredClone() and postMessage().
const signal = transferableAbortSignal(AbortSignal.timeout(100));
const channel = new MessageChannel();
channel.port2.postMessage(signal, [signal]);
@since v18.11.0
| Parameter | |
|---|---|
signal | The AbortSignal |
Returns. The same AbortSignal