Skip to content

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
AssemblyXantham.Fable.Node
Attributes[<Erase>]

The package's value exports, each bound to its import.

Properties

static member inspect: Inspect

The 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
objectAny JavaScript primitive or Object.

Returns. The representation of object.

static member promisify: Promisify

Takes 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: Types

Methods

static member MIMEParams () : MIMEParams

The 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

An 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

An 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

An 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>

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
resourceAny 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>

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
fnAn 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>

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
fnAn 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>

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
fnAn 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>

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
fnAn 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>

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
fnAn 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>

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
fnAn 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>

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
fnAn async function

Returns. a callback style function

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
fnAn async function

Returns. a callback style function

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
fnAn async function

Returns. a callback style function

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
fnAn async function

Returns. a callback style function

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
fnAn async function

Returns. a callback style function

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
fnAn async function

Returns. a callback style function

static member callbackify<'TResult> (fn: unit -> Promise<'TResult>) : Callback<'TResult> -> unit

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
fnAn async function

Returns. a callback style function

static member callbackify (fn: unit -> Promise<unit>) : (ErrnoException -> unit) -> unit

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
fnAn async function

Returns. a callback style function

static member debug (section: string, ?callback: (DebugLoggerFunction -> unit)) : DebugLogger

The 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
sectionA string identifying the portion of the application for which the debuglog function is being created.
callbackA 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

The 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
sectionA string identifying the portion of the application for which the debuglog function is being created.
callbackA 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

The 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
fnThe function that is being deprecated.
msgA warning message to display when the deprecated function is invoked.
codeA 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

util.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
actualThe first value to compare
expectedThe second value to compare

Returns. An array of difference entries. Each entry is an array with two elements:

  • Index 0: number Operation code: -1 for delete, 0 for no-op/unchanged, 1 for insert
  • Index 1: string The value associated with the operation
static member format (format: obj option, param: obj array) : string

The 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
formatA printf-like format string.
static member formatWithOptions (inspectOptions: InspectOptions, format: obj option, param: obj array) : string

This 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

Returns 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
frameCountNumber 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

Returns 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
frameCountNumber 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)>

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

Returns 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

Returns 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

Usage 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

Alias 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

Returns 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

Returns 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

Returns 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

Returns 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

Returns 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

Returns 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

Returns 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

Returns 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

Returns 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

Returns 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

Returns 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

Returns 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

Returns 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

Returns 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

Returns 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

The 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

Provides 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
configUsed 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>

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
contentThe raw contents of a .env file.
static member setTraceSigInt (enable: bool) : unit

Enable 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

Returns 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

This 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
formatA text format or an Array of text formats defined in util.inspect.colors.
textThe text to to be formatted.
static member toUSVString (string: string) : string

Returns 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

Creates 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

Marks 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
signalThe AbortSignal

Returns. The same AbortSignal