powerbi-client package

Классы

AdvancedFilter
BasicFilter
BasicFilterWithKeys
Filter
HierarchyFilter
HierarchyIdentityFilter
IdentityFilter
IncludeExcludeFilter
NotSupportedFilter
PageSelector
RelativeDateFilter
RelativeTimeFilter
Selector
SlicerTargetSelector
TopNFilter
TupleFilter
VisualSelector
VisualTypeSelector
AdvancedFilterBuilder

Компонент построителя расширенных фильтров Power BI

BasicFilterBuilder

Компонент построителя фильтров Power BI Basic

BookmarksManager

Управляет закладками отчетов.

Create

Компонент создателя отчетов Power BI

Dashboard

Компонент внедрения панели мониторинга Power BI

FilterBuilder

Построитель универсальных фильтров для BasicFilter, AdvancedFilter, RelativeDate, RelativeTime и TopN

MIMEParams

API MIMEParams предоставляет доступ на чтение и запись к параметрам MIMEType.

MIMEType

Реализация класса MIMEType.

В соответствии с соглашениями браузера все свойства объектов MIMEType реализуются как методы получения и задания прототипа класса, а не как свойства данных в самом объекте.

Строка MIME — это структурированная строка, содержащая несколько значимых компонентов. При синтаксическом анализе возвращается объект MIMEType, содержащий свойства для каждого из этих компонентов.

Page

Страница отчета Power BI

Qna

Компонент внедрения Power BI Q&A

QuickCreate

Компонент быстрого создания Power BI

RelativeDateFilterBuilder

Компонент построителя фильтров относительных дат Power BI

RelativeTimeFilterBuilder

Компонент построителя фильтров относительного времени Power BI

Report

Компонент внедрения отчета Power BI

Service

Компонент внедрения службы Power BI, который является точкой входа для внедрения всех других компонентов Power BI в приложение.

Tile

Компонент внедрения плитки Power BI

TopNFilterBuilder

Компонент построителя фильтров Power BI Top N

Visual

Компонент внедрения Visual Power BI

VisualDescriptor

Визуальный элемент Power BI на странице

Интерфейсы

EventHooks
IActionBar
IAddBookmarkRequest
IAdvancedFilter
IAdvancedFilterCondition
IAggregationTarget
IApplyBookmarkByNameRequest
IApplyBookmarkStateRequest
IBaseFilterTarget
IBaseTarget
IBasicFilter
IBasicFilterWithKeys
IBetweenDataReference
IBookmarksPane
IBootstrapEmbedConfiguration
ICanvasStyle
ICaptureBookmarkOptions
ICaptureBookmarkRequest
ICavasItemsSelection
ICloneVisualRequest
ICloneVisualResponse
ICollapsible
IColumnAggrTarget
IColumnSchema
IColumnTarget
ICommandExtension
ICommandSettings
ICommandsSettings
ICommonEmbedConfiguration
ICreateVisualRequest
ICreateVisualResponse
ICredential
ICustomLayout
ICustomPageSize
ICustomTheme
IDashboardEmbedConfiguration
IDashboardLoadConfiguration
IDataReference
IDatasetBinding
IDatasetCreateConfiguration
IDatasourceConnectionConfiguration
IDataTable
IDefaultProperty
IEmbedConfiguration
IEmbedConfigurationBase
IEqualsDataReference
IError
IExportDataCompletedEvent
IExportDataRequest
IExportDataResult
IExtension
IExtensionItem
IExtensionPoint
IExtensionPoints
IExtensions
IFieldsPane
IFilter
IFilterAggregationTarget
IFilterColumnAggrTarget
IFilterColumnTarget
IFilterDisplaySettings
IFilterGroupedColumnsTarget
IFilterHierarchyAggrTarget
IFilterHierarchyTarget
IFilterKeyColumnsTarget
IFilterKeyHierarchyTarget
IFilterMeasureTarget
IFiltersPane
IFlatMenuExtension
IGroupedMenuExtension
IHideable
IHierarchyFilter
IHierarchyFilterNode
IHierarchyIdentityFilter
IHierarchyIdentityFilterNode
IHierarchyLevelAggrTarget
IHierarchyLevelTarget
IIdentityFilter
IIdentityValue
IIncludeExcludeFilter
IIncludeExcludeTargetValue
IKeyColumnsTarget
IKeyHierarchyTarget
ILoadQnaConfiguration
ILocaleSettings
IMeasureTarget
IMenuExtensionBase
IMenuGroupExtension
INotSupportedFilter
INotSupportedFilterTarget
INotSupportedTarget
IPage
IPageBackground
IPageLayout
IPageNavigationPane
IPageSelector
IPageSize
IPageWallpaper
IPaginatedReportDatasetBinding
IPaginatedReportLoadConfiguration
IPaginatedReportParameter
IPaginatedReportsCommandSettings
IPaginatedReportsCommandsSettings
IPaginatedReportSettings
IPanes
IParametersPanelCommandSettings
IPercentOfGrandTotalTarget
IPlayBookmarkRequest
IPosition
IPrintSettings
IQnaEmbedConfiguration
IQnaInterpretInputData
IQnaPanes
IQnaSettings
IQnaVisualRenderedEvent
IQueryNameTarget
IQuickCreateConfiguration
IRelativeDateFilter
IRelativeDateTimeFilter
IRelativeTimeFilter
IReport
IReportBars
IReportBookmark
IReportCreateConfiguration
IReportCreateFromDefinitionConfiguration
IReportDefinition
IReportEmbedConfiguration
IReportLoadConfiguration
IReportPanes
IReportTheme
ISaveAsParameters
ISelection
ISelectionPane
ISelector
ISettings
ISlicer
ISlicerState
ISlicerTargetSelector
ISmartNarratives
ISortByVisualRequest
IStatusBar
ISwipeEvent
ISyncSlicersPane
ITableSchema
ITechnicalDetails
IThemeColorProperty
ITileEmbedConfiguration
ITileLoadConfiguration
ITopNFilter
ITupleElementValue
ITupleFilter
IUpdateFiltersRequest
IValueDataReference
IVisual
IVisualCalculationTarget
IVisualCapabilities
IVisualContainerDisplayState
IVisualCustomCommandEvent
IVisualDataRole
IVisualEmbedConfiguration
IVisualHeader
IVisualHeaderSettings
IVisualizationsPane
IVisualLayout
IVisualPropertySelector
IVisualPropertyValue
IVisualResponse
IVisualSelector
IVisualSettings
IVisualTypeSelector
OnLoadFilters
OnLoadFiltersBase
PageOnLoadFilters
ReportOnLoadFilters
CallSiteObject
CustomPromisifyLegacy
CustomPromisifySymbol
DebugLogger
DeprecateOptions
GetCallSitesOptions
IBookmarksManager

API для управления закладками отчета.

IDashboardNode

Узел панели мониторинга в иерархии панели мониторинга

IDebugOptions
IEvent
IFilterable

Декорирует компоненты внедрения, поддерживающие фильтры, включают отчеты и страницы

IPageNode

Узел страницы в иерархии отчетов

IPowerBiElement
IReportNode

Узел отчета в иерархии отчетов

IService
IServiceConfiguration
IVisualNode

Визуальный узел в иерархии отчетов

InspectColors
InspectContext
InspectOptions
InspectStyles
Inspectable
IsDeepStrictEqualOptions
ParseArgsConfig
ParseArgsOptionDescriptor
ParseArgsOptionsConfig
StyleTextOptions
TextDecodeOptions
TextDecoderCommon
TextDecoderOptions
TextEncoderCommon
TextEncoderEncodeIntoResult

Функции

isAnyArrayBuffer(unknown)

Возвращает true, если значение является встроенным ArrayBuffer или экземпляром SharedArrayBuffer.

См. также util.types.isArrayBuffer() и util.types.isSharedArrayBuffer().

util.types.isAnyArrayBuffer(new ArrayBuffer());  // Returns true
util.types.isAnyArrayBuffer(new SharedArrayBuffer());  // Returns true
isArgumentsObject(unknown)

Возвращает true, если значение является объектом arguments.

function foo() {
  util.types.isArgumentsObject(arguments);  // Returns true
}
isArrayBuffer(unknown)

Возвращает true, если значение является встроенным экземпляром ArrayBuffer. Это не включает SharedArrayBuffer экземпляры. Как правило, желательно протестировать оба; См. util.types.isAnyArrayBuffer() для этого.

util.types.isArrayBuffer(new ArrayBuffer());  // Returns true
util.types.isArrayBuffer(new SharedArrayBuffer());  // Returns false
isArrayBufferView(unknown)

Возвращает true, если значение является экземпляром одного из ArrayBuffer представлений, таких как типизированные объекты массива или DataView. Эквивалентно ArrayBuffer.isView().

util.types.isArrayBufferView(new Int8Array());  // true
util.types.isArrayBufferView(Buffer.from('hello world')); // true
util.types.isArrayBufferView(new DataView(new ArrayBuffer(16)));  // true
util.types.isArrayBufferView(new ArrayBuffer());  // false
isAsyncFunction(unknown)

Возвращает true, если значение является асинхронной функцией. Это сообщает только о том, что видит подсистема JavaScript; В частности, возвращаемое значение может не соответствовать исходному исходному коду, если использовался инструмент транспилирования.

util.types.isAsyncFunction(function foo() {});  // Returns false
util.types.isAsyncFunction(async function foo() {});  // Returns true
isBigInt64Array(unknown)

Возвращает true, если значение является экземпляром BigInt64Array.

util.types.isBigInt64Array(new BigInt64Array());   // Returns true
util.types.isBigInt64Array(new BigUint64Array());  // Returns false
isBigIntObject(unknown)

Возвращает true, если значение является объектом BigInt, например созданным Object(BigInt(123)).

util.types.isBigIntObject(Object(BigInt(123)));   // Returns true
util.types.isBigIntObject(BigInt(123));   // Returns false
util.types.isBigIntObject(123);  // Returns false
isBigUint64Array(unknown)

Возвращает true, если значение является экземпляром BigUint64Array.

util.types.isBigUint64Array(new BigInt64Array());   // Returns false
util.types.isBigUint64Array(new BigUint64Array());  // Returns true
isBooleanObject(unknown)

Возвращает true, если значение является логическим объектом, например созданным new Boolean().

util.types.isBooleanObject(false);  // Returns false
util.types.isBooleanObject(true);   // Returns false
util.types.isBooleanObject(new Boolean(false)); // Returns true
util.types.isBooleanObject(new Boolean(true));  // Returns true
util.types.isBooleanObject(Boolean(false)); // Returns false
util.types.isBooleanObject(Boolean(true));  // Returns false
isBoxedPrimitive(unknown)

Возвращает true, если значение является любым прямоугольним примитивным объектом, например созданным new Boolean(), new String() или Object(Symbol()).

Рассмотрим пример.

util.types.isBoxedPrimitive(false); // Returns false
util.types.isBoxedPrimitive(new Boolean(false)); // Returns true
util.types.isBoxedPrimitive(Symbol('foo')); // Returns false
util.types.isBoxedPrimitive(Object(Symbol('foo'))); // Returns true
util.types.isBoxedPrimitive(Object(BigInt(5))); // Returns true
isCryptoKey(unknown)

Возвращает true, если value является CryptoKey, false в противном случае.

isDataView(unknown)

Возвращает true, если значение является встроенным экземпляром DataView.

const ab = new ArrayBuffer(20);
util.types.isDataView(new DataView(ab));  // Returns true
util.types.isDataView(new Float64Array());  // Returns false

См. также ArrayBuffer.isView().

isDate(unknown)

Возвращает true, если значение является встроенным экземпляром Date.

util.types.isDate(new Date());  // Returns true
isExternal(unknown)

Возвращает true, если значение является собственным значением External.

Собственное значение External — это особый тип объекта, который содержит необработанный указатель C++ (void*) для доступа из машинного кода и не имеет других свойств. Такие объекты создаются либо Node.js внутренними или собственными надстройками. В JavaScript они являются замороженными объектами с прототипом null .

#include <js_native_api.h>
#include <stdlib.h>
napi_value result;
static napi_value MyNapi(napi_env env, napi_callback_info info) {
  int* raw = (int*) malloc(1024);
  napi_status status = napi_create_external(env, (void*) raw, NULL, NULL, &result);
  if (status != napi_ok) {
    napi_throw_error(env, NULL, "napi_create_external failed");
    return NULL;
  }
  return result;
}
...
DECLARE_NAPI_PROPERTY("myNapi", MyNapi)
...
import native from 'napi_addon.node';
import { types } from 'node:util';

const data = native.myNapi();
types.isExternal(data); // returns true
types.isExternal(0); // returns false
types.isExternal(new String('foo')); // returns false

Дополнительные сведения о napi_create_externalсм. в napi_create_external().

isFloat16Array(unknown)

Возвращает true, если значение является встроенным экземпляром Float16Array.

util.types.isFloat16Array(new ArrayBuffer());  // Returns false
util.types.isFloat16Array(new Float16Array());  // Returns true
util.types.isFloat16Array(new Float32Array());  // Returns false
isFloat32Array(unknown)

Возвращает true, если значение является встроенным экземпляром Float32Array.

util.types.isFloat32Array(new ArrayBuffer());  // Returns false
util.types.isFloat32Array(new Float32Array());  // Returns true
util.types.isFloat32Array(new Float64Array());  // Returns false
isFloat64Array(unknown)

Возвращает true, если значение является встроенным экземпляром Float64Array.

util.types.isFloat64Array(new ArrayBuffer());  // Returns false
util.types.isFloat64Array(new Uint8Array());  // Returns false
util.types.isFloat64Array(new Float64Array());  // Returns true
isGeneratorFunction(unknown)

Возвращает true, если значение является функцией генератора. Это сообщает только о том, что видит подсистема JavaScript; В частности, возвращаемое значение может не соответствовать исходному исходному коду, если использовался инструмент транспилирования.

util.types.isGeneratorFunction(function foo() {});  // Returns false
util.types.isGeneratorFunction(function* foo() {});  // Returns true
isGeneratorObject(unknown)

Возвращает true, если значение является объектом генератора, возвращаемым из встроенной функции генератора. Это сообщает только о том, что видит подсистема JavaScript; В частности, возвращаемое значение может не соответствовать исходному исходному коду, если использовался инструмент транспилирования.

function* foo() {}
const generator = foo();
util.types.isGeneratorObject(generator);  // Returns true
isInt16Array(unknown)

Возвращает true, если значение является встроенным экземпляром Int16Array.

util.types.isInt16Array(new ArrayBuffer());  // Returns false
util.types.isInt16Array(new Int16Array());  // Returns true
util.types.isInt16Array(new Float64Array());  // Returns false
isInt32Array(unknown)

Возвращает true, если значение является встроенным экземпляром Int32Array.

util.types.isInt32Array(new ArrayBuffer());  // Returns false
util.types.isInt32Array(new Int32Array());  // Returns true
util.types.isInt32Array(new Float64Array());  // Returns false
isInt8Array(unknown)

Возвращает true, если значение является встроенным экземпляром Int8Array.

util.types.isInt8Array(new ArrayBuffer());  // Returns false
util.types.isInt8Array(new Int8Array());  // Returns true
util.types.isInt8Array(new Float64Array());  // Returns false
isKeyObject(unknown)

Возвращает true, если value является KeyObject, false в противном случае.

isMap<T>({} | T)

Возвращает true, если значение является встроенным экземпляром Map.

util.types.isMap(new Map());  // Returns true
isMapIterator(unknown)

Возвращает true, если значение является итератором, возвращаемым для встроенного экземпляра Map.

const map = new Map();
util.types.isMapIterator(map.keys());  // Returns true
util.types.isMapIterator(map.values());  // Returns true
util.types.isMapIterator(map.entries());  // Returns true
util.types.isMapIterator(map[Symbol.iterator]());  // Returns true
isModuleNamespaceObject(unknown)

Возвращает , если значение является экземпляром объекта пространства имен модуля.

import * as ns from './a.js';

util.types.isModuleNamespaceObject(ns);  // Returns true
isNativeError(unknown)

Возвращает , если значение было возвращено конструктором встроенного типа.

console.log(util.types.isNativeError(new Error()));  // true
console.log(util.types.isNativeError(new TypeError()));  // true
console.log(util.types.isNativeError(new RangeError()));  // true

Подклассы собственных типов ошибок также являются собственными ошибками:

class MyError extends Error {}
console.log(util.types.isNativeError(new MyError()));  // true

Значение instanceof собственного класса ошибок не эквивалентно isNativeError() возврату true для этого значения. isNativeError() возвращает true для ошибок, поступающих из другой области , а instanceof Error возвращает false для этих ошибок:

import { createContext, runInContext } from 'node:vm';
import { types } from 'node:util';

const context = createContext({});
const myError = runInContext('new Error()', context);
console.log(types.isNativeError(myError)); // true
console.log(myError instanceof Error); // false

И наоборот, isNativeError() возвращает false для всех объектов, которые не были возвращены конструктором собственной ошибки. Это включает значения, которые являются instanceof собственными ошибками:

const myError = { __proto__: Error.prototype };
console.log(util.types.isNativeError(myError)); // false
console.log(myError instanceof Error); // true
isNumberObject(unknown)

Возвращает true, если значение является числовой объектом, например созданным new Number().

util.types.isNumberObject(0);  // Returns false
util.types.isNumberObject(new Number(0));   // Returns true
isPromise(unknown)

Возвращает true, если значение является встроенным Promise.

util.types.isPromise(Promise.resolve(42));  // Returns true
isProxy(unknown)

Возвращает true, если значение является экземпляром Proxy.

const target = {};
const proxy = new Proxy(target, {});
util.types.isProxy(target);  // Returns false
util.types.isProxy(proxy);  // Returns true
isRegExp(unknown)

Возвращает true, если значение является объектом регулярного выражения.

util.types.isRegExp(/abc/);  // Returns true
util.types.isRegExp(new RegExp('abc'));  // Returns true
isSet<T>({} | T)

Возвращает true, если значение является встроенным экземпляром Set.

util.types.isSet(new Set());  // Returns true
isSetIterator(unknown)

Возвращает true, если значение является итератором, возвращаемым для встроенного экземпляра Set.

const set = new Set();
util.types.isSetIterator(set.keys());  // Returns true
util.types.isSetIterator(set.values());  // Returns true
util.types.isSetIterator(set.entries());  // Returns true
util.types.isSetIterator(set[Symbol.iterator]());  // Returns true
isSharedArrayBuffer(unknown)

Возвращает true, если значение является встроенным экземпляром SharedArrayBuffer. Это не включает ArrayBuffer экземпляры. Как правило, желательно протестировать оба; См. util.types.isAnyArrayBuffer() для этого.

util.types.isSharedArrayBuffer(new ArrayBuffer());  // Returns false
util.types.isSharedArrayBuffer(new SharedArrayBuffer());  // Returns true
isStringObject(unknown)

Возвращает true, если значение является строковым объектом, например созданным new String().

util.types.isStringObject('foo');  // Returns false
util.types.isStringObject(new String('foo'));   // Returns true
isSymbolObject(unknown)

Возвращает true, если значение является объектом символа, созданным путем вызова Object() в примитиве Symbol.

const symbol = Symbol('foo');
util.types.isSymbolObject(symbol);  // Returns false
util.types.isSymbolObject(Object(symbol));   // Returns true
isTypedArray(unknown)

Возвращает true, если значение является встроенным экземпляром TypedArray.

util.types.isTypedArray(new ArrayBuffer());  // Returns false
util.types.isTypedArray(new Uint8Array());  // Returns true
util.types.isTypedArray(new Float64Array());  // Returns true

См. также ArrayBuffer.isView().

isUint16Array(unknown)

Возвращает true, если значение является встроенным экземпляром Uint16Array.

util.types.isUint16Array(new ArrayBuffer());  // Returns false
util.types.isUint16Array(new Uint16Array());  // Returns true
util.types.isUint16Array(new Float64Array());  // Returns false
isUint32Array(unknown)

Возвращает true, если значение является встроенным экземпляром Uint32Array.

util.types.isUint32Array(new ArrayBuffer());  // Returns false
util.types.isUint32Array(new Uint32Array());  // Returns true
util.types.isUint32Array(new Float64Array());  // Returns false
isUint8Array(unknown)

Возвращает true, если значение является встроенным экземпляром Uint8Array.

util.types.isUint8Array(new ArrayBuffer());  // Returns false
util.types.isUint8Array(new Uint8Array());  // Returns true
util.types.isUint8Array(new Float64Array());  // Returns false
isUint8ClampedArray(unknown)

Возвращает true, если значение является встроенным экземпляром Uint8ClampedArray.

util.types.isUint8ClampedArray(new ArrayBuffer());  // Returns false
util.types.isUint8ClampedArray(new Uint8ClampedArray());  // Returns true
util.types.isUint8ClampedArray(new Float64Array());  // Returns false
isWeakMap(unknown)

Возвращает true, если значение является встроенным экземпляром WeakMap.

util.types.isWeakMap(new WeakMap());  // Returns true
isWeakSet(unknown)

Возвращает true, если значение является встроенным экземпляром WeakSet.

util.types.isWeakSet(new WeakSet());  // Returns true
inspect(any, boolean, number | null, boolean)

Метод util.inspect() возвращает строковое представление object, предназначенное для отладки. Выходные данные util.inspect могут изменяться в любое время и не должны зависеть от программного использования. Дополнительные options могут быть переданы, изменяющие результат. util.inspect() будет использовать имя конструктора и /или Symbol.toStringTag свойство, чтобы сделать идентифицируемый тег для проверяемого значения.

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] {}'

Циклические ссылки указывают на привязку с помощью эталонного индекса:

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] }
// }

В следующем примере проверяются все свойства объекта util:

import util from 'node:util';

console.log(util.inspect(util, { showHidden: true, depth: null }));

В следующем примере показан эффект параметра compact.

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.

Параметр showHidden позволяет проверять WeakMap и WeakSet записи. Если есть больше записей, чем maxArrayLength, нет гарантии, какие записи отображаются. Это означает, что получение одного и того же WeakSet записей дважды может привести к разным выходным данным. Кроме того, записи без оставшихся надежных ссылок могут собираться в любое время.

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

Параметр sorted гарантирует, что порядок вставки свойств объекта не влияет на результат 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 }),
);

Параметр numericSeparator добавляет символ подчеркивания каждые три цифры ко всем числам.

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() — это синхронный метод, предназначенный для отладки. Максимальная длина выходных данных составляет примерно 128 МиБ. Входные данные, которые приводят к более длительным выходным данным, будут усечены.

promisify<TCustom>(CustomPromisify<TCustom>)

Принимает функцию после стандартного стиля обратного вызова с первой ошибкой, т. е. принимая (err, value) => ... обратный вызов в качестве последнего аргумента, и возвращает версию, которая возвращает обещания.

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.
});

Или, эквивалентно используя 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();

Если имеется original[util.promisify.custom] свойство, возвращает его значение, promisify см. сведения о пользовательских функциях.

promisify() предполагает, что original является функцией обратного вызова в качестве окончательного аргумента во всех случаях. Если original не является функцией, promisify() вызовет ошибку. Если original является функцией, но его последний аргумент не является обратным вызовом с ошибкой, он по-прежнему будет передан обратному вызову в качестве последнего аргумента.

Использование promisify() в методах класса или других методах, использующих this, может не работать должным образом, если только не обработано специально:

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'
aborted(AbortSignal, any)

Прослушивает событие прерывания в предоставленном signal и возвращает обещание, которое разрешается при прерывании signal. Если resource предоставлено, он слабо ссылается на связанный объект операции, поэтому если resource собирается мусор до прерывания signal, то возвращенное обещание остается ожидаемым. Это предотвращает утечку памяти в длительных или неотменяемых операциях.

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.
});
addParamToUrl(string, string, string)

Добавляет параметр в заданный URL-адрес

assign(any[])

Копирует значения всех перечисленных свойств из одного или нескольких исходных объектов в целевой объект и возвращает целевой объект.

autoAuthInEmbedUrl(string)

Проверяет, содержит ли URL-адрес внедрения autoAuth=true.

callbackify(() => Promise<void>)

Принимает функцию async (или функцию, возвращающую Promise) и возвращает функцию после стиля обратного вызова с ошибкой первого вызова, т. е. при выполнении обратного вызова (err, value) => ... в качестве последнего аргумента. В обратном вызове первый аргумент будет причиной отклонения (или null, если разрешено Promise), а второй аргумент будет разрешенным значением.

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);
});

Будет напечатано:

hello world

Обратный вызов выполняется асинхронно и будет иметь ограниченную трассировку стека. Если обратный вызов вызывается, процесс выдает событие 'uncaughtException', а если не обработано, завершится.

Так как null имеет особое значение в качестве первого аргумента обратного вызова, если завернутая функция отклоняет Promise с ложным значением в качестве причины, значение упаковывается в Error с исходным значением, хранящимся в поле с именем reason.

import util from 'node:util';

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
});
callbackify<TResult>(() => Promise<TResult>)
callbackify<T1>((arg1: T1) => Promise<void>)
callbackify<T1, TResult>((arg1: T1) => Promise<TResult>)
callbackify<T1, T2>((arg1: T1, arg2: T2) => Promise<void>)
callbackify<T1, T2, TResult>((arg1: T1, arg2: T2) => Promise<TResult>)
callbackify<T1, T2, T3>((arg1: T1, arg2: T2, arg3: T3) => Promise<void>)
callbackify<T1, T2, T3, TResult>((arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>)
callbackify<T1, T2, T3, T4>((arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>)
callbackify<T1, T2, T3, T4, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>)
callbackify<T1, T2, T3, T4, T5>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>)
callbackify<T1, T2, T3, T4, T5, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>)
callbackify<T1, T2, T3, T4, T5, T6>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<void>)
callbackify<T1, T2, T3, T4, T5, T6, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<TResult>)
convertProcessSignalToExitCode(Signals)

Метод util.convertProcessSignalToExitCode() преобразует имя сигнала в соответствующий код выхода POSIX. После стандарта POSIX код выхода для процесса, завершаемого сигналом, вычисляется как 128 + signal number.

Если signal имя сигнала не является допустимым, будет возникать ошибка. Список допустимых сигналов см. в списке signal(7) допустимых сигналов.

import { convertProcessSignalToExitCode } from 'node:util';

console.log(convertProcessSignalToExitCode('SIGTERM')); // 143 (128 + 15)
console.log(convertProcessSignalToExitCode('SIGKILL')); // 137 (128 + 9)

Это особенно полезно при работе с процессами для определения кода выхода на основе сигнала, завершающего процесс.

createRandomString()

Создает случайное от 5 до 6 символьных строк.

debuglog(string, (fn: DebugLoggerFunction) => void)

Метод util.debuglog() используется для создания функции, которая условно записывает отладочные сообщения stderr в зависимости от существования переменной NODE_DEBUG среды. Если имя section отображается в значении этой переменной среды, возвращаемая функция работает аналогично console.error(). Если нет, возвращаемая функция является no-op.

import { debuglog } from 'node:util';
const log = debuglog('foo');

log('hello from foo [%d]', 123);

Если эта программа выполняется с NODE_DEBUG=foo в среде, она выдаст примерно следующее:

FOO 3245: hello from foo [123]

где 3245 является идентификатором процесса. Если он не выполняется с этим набором переменных среды, он не будет выводить ничего.

Кроме того, section поддерживает подстановочный знак:

import { debuglog } from 'node:util';
const log = debuglog('foo-bar');

log('hi there, it\'s foo-bar [%d]', 2333);

Если он выполняется с NODE_DEBUG=foo* в среде, он выдаст примерно следующее:

FOO-BAR 3257: hi there, it's foo-bar [2333]

В переменной section среды могут быть указаны несколько имен, разделенных NODE_DEBUG запятыми: NODE_DEBUG=fs,net,tls

Необязательный аргумент callback можно использовать для замены функции ведения журнала другой функцией, которая не имеет инициализации или ненужной оболочки.

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;
});
deprecate<T>(T, string, string, DeprecateOptions)

Метод util.deprecate() упаковывает fn (который может быть функцией или классом), таким образом, чтобы он был помечен как устаревший.

import { deprecate } from 'node:util';

export const obsoleteFunction = deprecate(() => {
  // Do something here.
}, 'obsoleteFunction() is deprecated. Use newShinyFunction() instead.');

При вызове util.deprecate() возвращает функцию, которая будет выдавать DeprecationWarning с помощью события 'warning'. Предупреждение будет выведено и напечатано для stderr при первом вызове возвращаемой функции. После выдачи предупреждения функция-оболочка вызывается без предупреждения.

Если один и тот же необязательный code предоставляется в нескольких вызовах util.deprecate(), предупреждение будет выдаваться только один раз для этого 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

Если используются флаги командной строки --no-deprecation или --no-warnings, либо если для свойства process.noDeprecation задано значение trueдо в качестве первого предупреждения об отмене, метод util.deprecate() ничего не делает.

Если заданы флаги командной строки --trace-deprecation или --trace-warnings, либо для свойства process.traceDeprecation задано значение true, предупреждение и трассировка стека печатаются в stderr при первом вызове нерекомендуемой функции.

Если установлен флаг командной строки --throw-deprecation или свойство process.throwDeprecation имеет значение true, то при вызове нерекомендуемой функции будет возникать исключение.

Флаг командной строки --throw-deprecation и свойство process.throwDeprecation имеет приоритет над --trace-deprecation и process.traceDeprecation.

diff(string | (readonly string[]), string | (readonly string[]))

util.diff() сравнивает два значения строки или массива и возвращает массив записей разницы. Он использует алгоритм диффа Myers для вычисления минимальных различий, который является тем же алгоритмом, который используется внутренне в сообщениях об ошибках утверждения.

Если значения равны, возвращается пустой массив.

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'));
// []
find<T>((x: T) => boolean, T[])

Находит первое значение в массиве, который соответствует указанному предикату.

findIndex<T>((x: T) => boolean, T[])

Находит индекс первого значения в массиве, который соответствует указанному предикату.

format(any, any[])

Метод util.format() возвращает форматированную строку с помощью первого аргумента в виде строки формата printf, которая может содержать ноль или более описателей формата. Каждый описатель заменяется преобразованным значением из соответствующего аргумента. Поддерживаемые описатели:

Если у описателя нет соответствующего аргумента, он не заменен:

util.format('%s:%s', 'foo');
// Returns: 'foo:%s'

Значения, которые не являются частью строки форматирования, форматируются с помощью util.inspect(), если их тип не string.

Если в методе util.format() передается больше аргументов, чем число описателей, дополнительные аргументы объединяются в возвращаемую строку, разделенные пробелами:

util.format('%s:%s', 'foo', 'bar', 'baz');
// Returns: 'foo:bar baz'

Если первый аргумент не содержит допустимый описатель формата, util.format() возвращает строку, которая является объединением всех аргументов, разделенных пробелами:

util.format(1, 2, 3);
// Returns: '1 2 3'

Если в util.format()передается только один аргумент, он возвращается без форматирования:

util.format('%% %s');
// Returns: '%% %s'

util.format() — это синхронный метод, предназначенный в качестве средства отладки. Некоторые входные значения могут иметь значительные затраты на производительность, которые могут блокировать цикл событий. Используйте эту функцию с осторожностью и никогда не в пути к горячему коду.

formatWithOptions(InspectOptions, any, any[])

Эта функция идентична формату, за исключением того, что он принимает аргумент inspectOptions, который задает параметры, передаваемые проверки.

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.
generateUUID()

Создает 20 символов uuid.

getCallSites(number, GetCallSitesOptions)

Возвращает массив объектов сайта вызова, содержащих стек функции вызывающего объекта.

В отличие от доступа к объекту error.stack, результат, возвращаемый из этого API, не мешает Error.prepareStackTrace.

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.columnNumber}`);
  });
  // 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();

Можно восстановить исходные расположения, установив параметр sourceMap для true. Если исходная карта недоступна, исходное расположение будет совпадать с текущим расположением. --enable-source-maps Если флаг включен, sourceMap по умолчанию будет иметь значение true.

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
getCallSites(GetCallSitesOptions)
getRandomValue()

Возвращает случайное число

getSystemErrorMap()

Возвращает карту всех системных кодов ошибок, доступных в API Node.js. Сопоставление кодов ошибок и имен ошибок зависит от платформы. См. Common System Errors имена распространенных ошибок.

fs.access('file/that/does/not/exist', (err) => {
  const errorMap = util.getSystemErrorMap();
  const name = errorMap.get(err.errno);
  console.error(name);  // ENOENT
});
getSystemErrorMessage(number)

Возвращает строковое сообщение для числового кода ошибки, полученного из API Node.js. Сопоставление кодов ошибок и строковых сообщений зависит от платформы.

fs.access('file/that/does/not/exist', (err) => {
  const message = util.getSystemErrorMessage(err.errno);
  console.error(message);  // no such file or directory
});
getSystemErrorName(number)

Возвращает строковое имя числового кода ошибки, полученного из API Node.js. Сопоставление кодов ошибок и имен ошибок зависит от платформы. См. Common System Errors имена распространенных ошибок.

fs.access('file/that/does/not/exist', (err) => {
  const name = util.getSystemErrorName(err.errno);
  console.error(name);  // ENOENT
});
getTimeDiffInMilliseconds(Date, Date)

Возвращает интервал времени между двумя датами в миллисекундах

inherits(unknown, unknown)

Использование util.inherits() не рекомендуется. Чтобы получить поддержку наследования на уровне языка, используйте ключевые слова ES6 class и extends. Кроме того, обратите внимание, что два стиля семантически несовместимы.

Наследуйте методы прототипа от одного конструктора в другой. Прототип constructor будет установлен на новый объект, созданный из superConstructor.

Это в основном добавляет некоторую проверку входных данных поверх Object.setPrototypeOf(constructor.prototype, superConstructor.prototype). В качестве дополнительного удобства superConstructor будет доступен через свойство constructor.super_.

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 с помощью class и 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');
inspect(any, InspectOptions)
isArray(unknown)

Псевдоним для Array.isArray().

Возвращает true, если заданный object является Array. В противном случае возвращает false.

import util from 'node:util';

util.isArray([]);
// Returns: true
util.isArray(new Array());
// Returns: true
util.isArray({});
// Returns: false
isCreate(string)

Проверяет, является ли тип внедрения для создания

isDeepStrictEqual(unknown, unknown, IsDeepStrictEqualOptions)

Возвращает true, если существует глубокое строгое равенство между val1 и val2. В противном случае возвращает false.

Дополнительные сведения о глубоком равенства см. в assert.deepStrictEqual().

isRDLEmbed(string)

Проверяет, является ли URL-адрес внедрения отчетом RDL.

isSavedInternal(HttpPostMessage, string, Window)

Проверяет, сохранен ли отчет.

parseArgs<T>(T)

Предоставляет API более высокого уровня для синтаксического анализа аргументов командной строки, чем взаимодействие с process.argv напрямую. Принимает спецификацию ожидаемых аргументов и возвращает структурированный объект с проанализированными параметрами и позициями.

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' } []
parseEnv(string)

Стабильность: 1.1 — активная разработка с учетом примера файла .env:

import { parseEnv } from 'node:util';

parseEnv('HELLO=world\nHELLO=oh my\n');
// Returns: { HELLO: 'oh my' }
promisify<TResult>((callback: (err: any, result: TResult) => void) => void)
promisify((callback: (err?: any) => void) => void)
promisify<T1, TResult>((arg1: T1, callback: (err: any, result: TResult) => void) => void)
promisify<T1>((arg1: T1, callback: (err?: any) => void) => void)
promisify<T1, T2, TResult>((arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void)
promisify<T1, T2>((arg1: T1, arg2: T2, callback: (err?: any) => void) => void)
promisify<T1, T2, T3, TResult>((arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void)
promisify<T1, T2, T3>((arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void)
promisify<T1, T2, T3, T4, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void)
promisify<T1, T2, T3, T4>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void)
promisify<T1, T2, T3, T4, T5, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void)
promisify<T1, T2, T3, T4, T5>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void)
promisify(Function)
raiseCustomEvent(HTMLElement, string, any)

Вызывает настраиваемое событие с данными о событиях в указанном элементе HTML.

remove<T>((x: T) => boolean, T[])
setTraceSigInt(boolean)

Включение или отключение печати трассировки стека в SIGINT. API доступен только в основном потоке.

stripVTControlCharacters(string)

Возвращает str с удаленными кодами escape-кода ANSI.

console.log(util.stripVTControlCharacters('\u001B[4mvalue\u001B[0m'));
// Prints "value"
styleText(InspectColor | (readonly InspectColor[]) | Object, string, StyleTextOptions)

Эта функция возвращает форматированный текст, учитывая format переданный для печати в терминале. Он знает о возможностях терминала и действует в соответствии с набором конфигурации с помощью NO_COLORNODE_DISABLE_COLORS переменных среды и FORCE_COLOR среды.

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 также предоставляет текстовые форматы, такие как italic, и underline, и можно объединить оба:

console.log(
  util.styleText(['underline', 'italic'], 'My italic underlined message'),
);

При передаче массива форматов порядок применения формата слева направо, поэтому следующий стиль может перезаписать предыдущий.

console.log(
  util.styleText(['red', 'green'], 'text'), // green
);

Значение специального формата none не применяет к тексту дополнительные стили.

Помимо стандартных имен цветов, util.styleText() поддерживает шестнадцатеричные строки цветов с помощью escape-последовательностей ANSI TrueColor (24-разрядная версия). Шестнадцатеричные цвета можно указать в формате 3-цифр (#RGB) или 6-значных (#RRGGBB):

import { styleText } from 'node:util';

// 6-digit hex color
console.log(styleText('#ff5733', 'Orange text'));

// 3-digit hex color (shorthand)
console.log(styleText('#f00', 'Red text'));

Полный список форматов можно найти в модификаторах.

toUSVString(string)

Возвращает string после замены любых суррогатных точек кода (или аналогично неоплачиваемых суррогатных единиц кода) с символом замены Юникода U+FFFD.

transferableAbortController()

Создает и возвращает экземпляр AbortController, AbortSignal которого помечены как переносимые и могут использоваться с structuredClone() или postMessage().

transferableAbortSignal(AbortSignal)

Помечает указанный AbortSignal как переносимый, чтобы его можно было использовать сstructuredClone() и postMessage().

const signal = transferableAbortSignal(AbortSignal.timeout(100));
const channel = new MessageChannel();
channel.port2.postMessage(signal, [signal]);

Сведения о функции

isAnyArrayBuffer(unknown)

Возвращает true, если значение является встроенным ArrayBuffer или экземпляром SharedArrayBuffer.

См. также util.types.isArrayBuffer() и util.types.isSharedArrayBuffer().

util.types.isAnyArrayBuffer(new ArrayBuffer());  // Returns true
util.types.isAnyArrayBuffer(new SharedArrayBuffer());  // Returns true
function isAnyArrayBuffer(object: unknown): object is ArrayBufferLike

Параметры

object

unknown

Возвращаемое значение

object is ArrayBufferLike

isArgumentsObject(unknown)

Возвращает true, если значение является объектом arguments.

function foo() {
  util.types.isArgumentsObject(arguments);  // Returns true
}
function isArgumentsObject(object: unknown): object is IArguments

Параметры

object

unknown

Возвращаемое значение

object is IArguments

isArrayBuffer(unknown)

Возвращает true, если значение является встроенным экземпляром ArrayBuffer. Это не включает SharedArrayBuffer экземпляры. Как правило, желательно протестировать оба; См. util.types.isAnyArrayBuffer() для этого.

util.types.isArrayBuffer(new ArrayBuffer());  // Returns true
util.types.isArrayBuffer(new SharedArrayBuffer());  // Returns false
function isArrayBuffer(object: unknown): object is ArrayBuffer

Параметры

object

unknown

Возвращаемое значение

object is ArrayBuffer

isArrayBufferView(unknown)

Возвращает true, если значение является экземпляром одного из ArrayBuffer представлений, таких как типизированные объекты массива или DataView. Эквивалентно ArrayBuffer.isView().

util.types.isArrayBufferView(new Int8Array());  // true
util.types.isArrayBufferView(Buffer.from('hello world')); // true
util.types.isArrayBufferView(new DataView(new ArrayBuffer(16)));  // true
util.types.isArrayBufferView(new ArrayBuffer());  // false
function isArrayBufferView(object: unknown): object is ArrayBufferView

Параметры

object

unknown

Возвращаемое значение

object is ArrayBufferView

isAsyncFunction(unknown)

Возвращает true, если значение является асинхронной функцией. Это сообщает только о том, что видит подсистема JavaScript; В частности, возвращаемое значение может не соответствовать исходному исходному коду, если использовался инструмент транспилирования.

util.types.isAsyncFunction(function foo() {});  // Returns false
util.types.isAsyncFunction(async function foo() {});  // Returns true
function isAsyncFunction(object: unknown): boolean

Параметры

object

unknown

Возвращаемое значение

boolean

isBigInt64Array(unknown)

Возвращает true, если значение является экземпляром BigInt64Array.

util.types.isBigInt64Array(new BigInt64Array());   // Returns true
util.types.isBigInt64Array(new BigUint64Array());  // Returns false
function isBigInt64Array(value: unknown): value is BigInt64Array

Параметры

value

unknown

Возвращаемое значение

value is BigInt64Array

isBigIntObject(unknown)

Возвращает true, если значение является объектом BigInt, например созданным Object(BigInt(123)).

util.types.isBigIntObject(Object(BigInt(123)));   // Returns true
util.types.isBigIntObject(BigInt(123));   // Returns false
util.types.isBigIntObject(123);  // Returns false
function isBigIntObject(object: unknown): object is BigInt

Параметры

object

unknown

Возвращаемое значение

object is BigInt

isBigUint64Array(unknown)

Возвращает true, если значение является экземпляром BigUint64Array.

util.types.isBigUint64Array(new BigInt64Array());   // Returns false
util.types.isBigUint64Array(new BigUint64Array());  // Returns true
function isBigUint64Array(value: unknown): value is BigUint64Array

Параметры

value

unknown

Возвращаемое значение

value is BigUint64Array

isBooleanObject(unknown)

Возвращает true, если значение является логическим объектом, например созданным new Boolean().

util.types.isBooleanObject(false);  // Returns false
util.types.isBooleanObject(true);   // Returns false
util.types.isBooleanObject(new Boolean(false)); // Returns true
util.types.isBooleanObject(new Boolean(true));  // Returns true
util.types.isBooleanObject(Boolean(false)); // Returns false
util.types.isBooleanObject(Boolean(true));  // Returns false
function isBooleanObject(object: unknown): object is Boolean

Параметры

object

unknown

Возвращаемое значение

object is Boolean

isBoxedPrimitive(unknown)

Возвращает true, если значение является любым прямоугольним примитивным объектом, например созданным new Boolean(), new String() или Object(Symbol()).

Рассмотрим пример.

util.types.isBoxedPrimitive(false); // Returns false
util.types.isBoxedPrimitive(new Boolean(false)); // Returns true
util.types.isBoxedPrimitive(Symbol('foo')); // Returns false
util.types.isBoxedPrimitive(Object(Symbol('foo'))); // Returns true
util.types.isBoxedPrimitive(Object(BigInt(5))); // Returns true
function isBoxedPrimitive(object: unknown): object is String | Number | Boolean | Symbol | BigInt

Параметры

object

unknown

Возвращаемое значение

object is String | Number | Boolean | Symbol | BigInt

isCryptoKey(unknown)

Возвращает true, если value является CryptoKey, false в противном случае.

function isCryptoKey(object: unknown): object is CryptoKey

Параметры

object

unknown

Возвращаемое значение

object is CryptoKey

isDataView(unknown)

Возвращает true, если значение является встроенным экземпляром DataView.

const ab = new ArrayBuffer(20);
util.types.isDataView(new DataView(ab));  // Returns true
util.types.isDataView(new Float64Array());  // Returns false

См. также ArrayBuffer.isView().

function isDataView(object: unknown): object is DataView

Параметры

object

unknown

Возвращаемое значение

object is DataView

isDate(unknown)

Возвращает true, если значение является встроенным экземпляром Date.

util.types.isDate(new Date());  // Returns true
function isDate(object: unknown): object is Date

Параметры

object

unknown

Возвращаемое значение

object is Date

isExternal(unknown)

Возвращает true, если значение является собственным значением External.

Собственное значение External — это особый тип объекта, который содержит необработанный указатель C++ (void*) для доступа из машинного кода и не имеет других свойств. Такие объекты создаются либо Node.js внутренними или собственными надстройками. В JavaScript они являются замороженными объектами с прототипом null .

#include <js_native_api.h>
#include <stdlib.h>
napi_value result;
static napi_value MyNapi(napi_env env, napi_callback_info info) {
  int* raw = (int*) malloc(1024);
  napi_status status = napi_create_external(env, (void*) raw, NULL, NULL, &result);
  if (status != napi_ok) {
    napi_throw_error(env, NULL, "napi_create_external failed");
    return NULL;
  }
  return result;
}
...
DECLARE_NAPI_PROPERTY("myNapi", MyNapi)
...
import native from 'napi_addon.node';
import { types } from 'node:util';

const data = native.myNapi();
types.isExternal(data); // returns true
types.isExternal(0); // returns false
types.isExternal(new String('foo')); // returns false

Дополнительные сведения о napi_create_externalсм. в napi_create_external().

function isExternal(object: unknown): boolean

Параметры

object

unknown

Возвращаемое значение

boolean

isFloat16Array(unknown)

Возвращает true, если значение является встроенным экземпляром Float16Array.

util.types.isFloat16Array(new ArrayBuffer());  // Returns false
util.types.isFloat16Array(new Float16Array());  // Returns true
util.types.isFloat16Array(new Float32Array());  // Returns false
function isFloat16Array(object: unknown): object is Float16Array

Параметры

object

unknown

Возвращаемое значение

object is Float16Array

isFloat32Array(unknown)

Возвращает true, если значение является встроенным экземпляром Float32Array.

util.types.isFloat32Array(new ArrayBuffer());  // Returns false
util.types.isFloat32Array(new Float32Array());  // Returns true
util.types.isFloat32Array(new Float64Array());  // Returns false
function isFloat32Array(object: unknown): object is Float32Array

Параметры

object

unknown

Возвращаемое значение

object is Float32Array

isFloat64Array(unknown)

Возвращает true, если значение является встроенным экземпляром Float64Array.

util.types.isFloat64Array(new ArrayBuffer());  // Returns false
util.types.isFloat64Array(new Uint8Array());  // Returns false
util.types.isFloat64Array(new Float64Array());  // Returns true
function isFloat64Array(object: unknown): object is Float64Array

Параметры

object

unknown

Возвращаемое значение

object is Float64Array

isGeneratorFunction(unknown)

Возвращает true, если значение является функцией генератора. Это сообщает только о том, что видит подсистема JavaScript; В частности, возвращаемое значение может не соответствовать исходному исходному коду, если использовался инструмент транспилирования.

util.types.isGeneratorFunction(function foo() {});  // Returns false
util.types.isGeneratorFunction(function* foo() {});  // Returns true
function isGeneratorFunction(object: unknown): object is GeneratorFunction

Параметры

object

unknown

Возвращаемое значение

object is GeneratorFunction

isGeneratorObject(unknown)

Возвращает true, если значение является объектом генератора, возвращаемым из встроенной функции генератора. Это сообщает только о том, что видит подсистема JavaScript; В частности, возвращаемое значение может не соответствовать исходному исходному коду, если использовался инструмент транспилирования.

function* foo() {}
const generator = foo();
util.types.isGeneratorObject(generator);  // Returns true
function isGeneratorObject(object: unknown): object is Generator

Параметры

object

unknown

Возвращаемое значение

object is Generator

isInt16Array(unknown)

Возвращает true, если значение является встроенным экземпляром Int16Array.

util.types.isInt16Array(new ArrayBuffer());  // Returns false
util.types.isInt16Array(new Int16Array());  // Returns true
util.types.isInt16Array(new Float64Array());  // Returns false
function isInt16Array(object: unknown): object is Int16Array

Параметры

object

unknown

Возвращаемое значение

object is Int16Array

isInt32Array(unknown)

Возвращает true, если значение является встроенным экземпляром Int32Array.

util.types.isInt32Array(new ArrayBuffer());  // Returns false
util.types.isInt32Array(new Int32Array());  // Returns true
util.types.isInt32Array(new Float64Array());  // Returns false
function isInt32Array(object: unknown): object is Int32Array

Параметры

object

unknown

Возвращаемое значение

object is Int32Array

isInt8Array(unknown)

Возвращает true, если значение является встроенным экземпляром Int8Array.

util.types.isInt8Array(new ArrayBuffer());  // Returns false
util.types.isInt8Array(new Int8Array());  // Returns true
util.types.isInt8Array(new Float64Array());  // Returns false
function isInt8Array(object: unknown): object is Int8Array

Параметры

object

unknown

Возвращаемое значение

object is Int8Array

isKeyObject(unknown)

Возвращает true, если value является KeyObject, false в противном случае.

function isKeyObject(object: unknown): object is KeyObject

Параметры

object

unknown

Возвращаемое значение

object is KeyObject

isMap<T>({} | T)

Возвращает true, если значение является встроенным экземпляром Map.

util.types.isMap(new Map());  // Returns true
function isMap<T>(object: {} | T): object is (T extends ReadonlyMap<any, any> ? (unknown extends T ? never : ReadonlyMap<any, any>) : Map<unknown, unknown>)

Параметры

object

{} | T

Возвращаемое значение

object is (T extends ReadonlyMap<any, any> ? (unknown extends T ? never : ReadonlyMap<any, any>) : Map<unknown, unknown>)

isMapIterator(unknown)

Возвращает true, если значение является итератором, возвращаемым для встроенного экземпляра Map.

const map = new Map();
util.types.isMapIterator(map.keys());  // Returns true
util.types.isMapIterator(map.values());  // Returns true
util.types.isMapIterator(map.entries());  // Returns true
util.types.isMapIterator(map[Symbol.iterator]());  // Returns true
function isMapIterator(object: unknown): boolean

Параметры

object

unknown

Возвращаемое значение

boolean

isModuleNamespaceObject(unknown)

Возвращает , если значение является экземпляром объекта пространства имен модуля.

import * as ns from './a.js';

util.types.isModuleNamespaceObject(ns);  // Returns true
function isModuleNamespaceObject(value: unknown): boolean

Параметры

value

unknown

Возвращаемое значение

boolean

isNativeError(unknown)

Предупреждение

Теперь этот API является нерекомендуемым.

The util.types.isNativeError API is deprecated. Please use Error.isError instead.

Возвращает , если значение было возвращено конструктором встроенного типа.

console.log(util.types.isNativeError(new Error()));  // true
console.log(util.types.isNativeError(new TypeError()));  // true
console.log(util.types.isNativeError(new RangeError()));  // true

Подклассы собственных типов ошибок также являются собственными ошибками:

class MyError extends Error {}
console.log(util.types.isNativeError(new MyError()));  // true

Значение instanceof собственного класса ошибок не эквивалентно isNativeError() возврату true для этого значения. isNativeError() возвращает true для ошибок, поступающих из другой области , а instanceof Error возвращает false для этих ошибок:

import { createContext, runInContext } from 'node:vm';
import { types } from 'node:util';

const context = createContext({});
const myError = runInContext('new Error()', context);
console.log(types.isNativeError(myError)); // true
console.log(myError instanceof Error); // false

И наоборот, isNativeError() возвращает false для всех объектов, которые не были возвращены конструктором собственной ошибки. Это включает значения, которые являются instanceof собственными ошибками:

const myError = { __proto__: Error.prototype };
console.log(util.types.isNativeError(myError)); // false
console.log(myError instanceof Error); // true
function isNativeError(object: unknown): object is Error

Параметры

object

unknown

Возвращаемое значение

object is Error

isNumberObject(unknown)

Возвращает true, если значение является числовой объектом, например созданным new Number().

util.types.isNumberObject(0);  // Returns false
util.types.isNumberObject(new Number(0));   // Returns true
function isNumberObject(object: unknown): object is Number

Параметры

object

unknown

Возвращаемое значение

object is Number

isPromise(unknown)

Возвращает true, если значение является встроенным Promise.

util.types.isPromise(Promise.resolve(42));  // Returns true
function isPromise(object: unknown): object is Promise<unknown>

Параметры

object

unknown

Возвращаемое значение

object is Promise<unknown>

isProxy(unknown)

Возвращает true, если значение является экземпляром Proxy.

const target = {};
const proxy = new Proxy(target, {});
util.types.isProxy(target);  // Returns false
util.types.isProxy(proxy);  // Returns true
function isProxy(object: unknown): boolean

Параметры

object

unknown

Возвращаемое значение

boolean

isRegExp(unknown)

Возвращает true, если значение является объектом регулярного выражения.

util.types.isRegExp(/abc/);  // Returns true
util.types.isRegExp(new RegExp('abc'));  // Returns true
function isRegExp(object: unknown): object is RegExp

Параметры

object

unknown

Возвращаемое значение

object is RegExp

isSet<T>({} | T)

Возвращает true, если значение является встроенным экземпляром Set.

util.types.isSet(new Set());  // Returns true
function isSet<T>(object: {} | T): object is (T extends ReadonlySet<any> ? (unknown extends T ? never : ReadonlySet<any>) : Set<unknown>)

Параметры

object

{} | T

Возвращаемое значение

object is (T extends ReadonlySet<any> ? (unknown extends T ? never : ReadonlySet<any>) : Set<unknown>)

isSetIterator(unknown)

Возвращает true, если значение является итератором, возвращаемым для встроенного экземпляра Set.

const set = new Set();
util.types.isSetIterator(set.keys());  // Returns true
util.types.isSetIterator(set.values());  // Returns true
util.types.isSetIterator(set.entries());  // Returns true
util.types.isSetIterator(set[Symbol.iterator]());  // Returns true
function isSetIterator(object: unknown): boolean

Параметры

object

unknown

Возвращаемое значение

boolean

isSharedArrayBuffer(unknown)

Возвращает true, если значение является встроенным экземпляром SharedArrayBuffer. Это не включает ArrayBuffer экземпляры. Как правило, желательно протестировать оба; См. util.types.isAnyArrayBuffer() для этого.

util.types.isSharedArrayBuffer(new ArrayBuffer());  // Returns false
util.types.isSharedArrayBuffer(new SharedArrayBuffer());  // Returns true
function isSharedArrayBuffer(object: unknown): object is SharedArrayBuffer

Параметры

object

unknown

Возвращаемое значение

object is SharedArrayBuffer

isStringObject(unknown)

Возвращает true, если значение является строковым объектом, например созданным new String().

util.types.isStringObject('foo');  // Returns false
util.types.isStringObject(new String('foo'));   // Returns true
function isStringObject(object: unknown): object is String

Параметры

object

unknown

Возвращаемое значение

object is String

isSymbolObject(unknown)

Возвращает true, если значение является объектом символа, созданным путем вызова Object() в примитиве Symbol.

const symbol = Symbol('foo');
util.types.isSymbolObject(symbol);  // Returns false
util.types.isSymbolObject(Object(symbol));   // Returns true
function isSymbolObject(object: unknown): object is Symbol

Параметры

object

unknown

Возвращаемое значение

object is Symbol

isTypedArray(unknown)

Возвращает true, если значение является встроенным экземпляром TypedArray.

util.types.isTypedArray(new ArrayBuffer());  // Returns false
util.types.isTypedArray(new Uint8Array());  // Returns true
util.types.isTypedArray(new Float64Array());  // Returns true

См. также ArrayBuffer.isView().

function isTypedArray(object: unknown): object is TypedArray

Параметры

object

unknown

Возвращаемое значение

object is TypedArray

isUint16Array(unknown)

Возвращает true, если значение является встроенным экземпляром Uint16Array.

util.types.isUint16Array(new ArrayBuffer());  // Returns false
util.types.isUint16Array(new Uint16Array());  // Returns true
util.types.isUint16Array(new Float64Array());  // Returns false
function isUint16Array(object: unknown): object is Uint16Array

Параметры

object

unknown

Возвращаемое значение

object is Uint16Array

isUint32Array(unknown)

Возвращает true, если значение является встроенным экземпляром Uint32Array.

util.types.isUint32Array(new ArrayBuffer());  // Returns false
util.types.isUint32Array(new Uint32Array());  // Returns true
util.types.isUint32Array(new Float64Array());  // Returns false
function isUint32Array(object: unknown): object is Uint32Array

Параметры

object

unknown

Возвращаемое значение

object is Uint32Array

isUint8Array(unknown)

Возвращает true, если значение является встроенным экземпляром Uint8Array.

util.types.isUint8Array(new ArrayBuffer());  // Returns false
util.types.isUint8Array(new Uint8Array());  // Returns true
util.types.isUint8Array(new Float64Array());  // Returns false
function isUint8Array(object: unknown): object is Uint8Array

Параметры

object

unknown

Возвращаемое значение

object is Uint8Array

isUint8ClampedArray(unknown)

Возвращает true, если значение является встроенным экземпляром Uint8ClampedArray.

util.types.isUint8ClampedArray(new ArrayBuffer());  // Returns false
util.types.isUint8ClampedArray(new Uint8ClampedArray());  // Returns true
util.types.isUint8ClampedArray(new Float64Array());  // Returns false
function isUint8ClampedArray(object: unknown): object is Uint8ClampedArray

Параметры

object

unknown

Возвращаемое значение

object is Uint8ClampedArray

isWeakMap(unknown)

Возвращает true, если значение является встроенным экземпляром WeakMap.

util.types.isWeakMap(new WeakMap());  // Returns true
function isWeakMap(object: unknown): object is WeakMap<object, unknown>

Параметры

object

unknown

Возвращаемое значение

object is WeakMap<object, unknown>

isWeakSet(unknown)

Возвращает true, если значение является встроенным экземпляром WeakSet.

util.types.isWeakSet(new WeakSet());  // Returns true
function isWeakSet(object: unknown): object is WeakSet<object>

Параметры

object

unknown

Возвращаемое значение

object is WeakSet<object>

inspect(any, boolean, number | null, boolean)

Метод util.inspect() возвращает строковое представление object, предназначенное для отладки. Выходные данные util.inspect могут изменяться в любое время и не должны зависеть от программного использования. Дополнительные options могут быть переданы, изменяющие результат. util.inspect() будет использовать имя конструктора и /или Symbol.toStringTag свойство, чтобы сделать идентифицируемый тег для проверяемого значения.

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] {}'

Циклические ссылки указывают на привязку с помощью эталонного индекса:

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] }
// }

В следующем примере проверяются все свойства объекта util:

import util from 'node:util';

console.log(util.inspect(util, { showHidden: true, depth: null }));

В следующем примере показан эффект параметра compact.

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.

Параметр showHidden позволяет проверять WeakMap и WeakSet записи. Если есть больше записей, чем maxArrayLength, нет гарантии, какие записи отображаются. Это означает, что получение одного и того же WeakSet записей дважды может привести к разным выходным данным. Кроме того, записи без оставшихся надежных ссылок могут собираться в любое время.

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

Параметр sorted гарантирует, что порядок вставки свойств объекта не влияет на результат 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 }),
);

Параметр numericSeparator добавляет символ подчеркивания каждые три цифры ко всем числам.

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() — это синхронный метод, предназначенный для отладки. Максимальная длина выходных данных составляет примерно 128 МиБ. Входные данные, которые приводят к более длительным выходным данным, будут усечены.

function inspect(object: any, showHidden?: boolean, depth?: number | null, color?: boolean): string

Параметры

object

any

Любой примитив JavaScript или Object.

showHidden

boolean

depth

number | null

color

boolean

Возвращаемое значение

string

Представление object.

promisify<TCustom>(CustomPromisify<TCustom>)

Принимает функцию после стандартного стиля обратного вызова с первой ошибкой, т. е. принимая (err, value) => ... обратный вызов в качестве последнего аргумента, и возвращает версию, которая возвращает обещания.

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.
});

Или, эквивалентно используя 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();

Если имеется original[util.promisify.custom] свойство, возвращает его значение, promisify см. сведения о пользовательских функциях.

promisify() предполагает, что original является функцией обратного вызова в качестве окончательного аргумента во всех случаях. Если original не является функцией, promisify() вызовет ошибку. Если original является функцией, но его последний аргумент не является обратным вызовом с ошибкой, он по-прежнему будет передан обратному вызову в качестве последнего аргумента.

Использование promisify() в методах класса или других методах, использующих this, может не работать должным образом, если только не обработано специально:

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'
function promisify<TCustom>(fn: CustomPromisify<TCustom>): TCustom

Параметры

fn

CustomPromisify<TCustom>

Возвращаемое значение

TCustom

aborted(AbortSignal, any)

Прослушивает событие прерывания в предоставленном signal и возвращает обещание, которое разрешается при прерывании signal. Если resource предоставлено, он слабо ссылается на связанный объект операции, поэтому если resource собирается мусор до прерывания signal, то возвращенное обещание остается ожидаемым. Это предотвращает утечку памяти в длительных или неотменяемых операциях.

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.
});
function aborted(signal: AbortSignal, resource: any): Promise<void>

Параметры

signal

AbortSignal

resource

any

Любой объект, не допускающий значения NULL, привязанный к неизменяемой операции и удерживаемый слабо. Если resource собирается мусор до прерывания signal, обещание остается ожидающих, что позволит Node.js прекратить отслеживание. Это помогает предотвратить утечку памяти в длительных или неотменяемых операциях.

Возвращаемое значение

Promise<void>

addParamToUrl(string, string, string)

Добавляет параметр в заданный URL-адрес

function addParamToUrl(url: string, paramName: string, value: string): string

Параметры

url

string

paramName

string

value

string

Возвращаемое значение

string

assign(any[])

Копирует значения всех перечисленных свойств из одного или нескольких исходных объектов в целевой объект и возвращает целевой объект.

function assign(args: any[]): any

Параметры

args

any[]

Возвращаемое значение

any

autoAuthInEmbedUrl(string)

Проверяет, содержит ли URL-адрес внедрения autoAuth=true.

function autoAuthInEmbedUrl(embedUrl: string): boolean

Параметры

embedUrl

string

Возвращаемое значение

boolean

callbackify(() => Promise<void>)

Принимает функцию async (или функцию, возвращающую Promise) и возвращает функцию после стиля обратного вызова с ошибкой первого вызова, т. е. при выполнении обратного вызова (err, value) => ... в качестве последнего аргумента. В обратном вызове первый аргумент будет причиной отклонения (или null, если разрешено Promise), а второй аргумент будет разрешенным значением.

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);
});

Будет напечатано:

hello world

Обратный вызов выполняется асинхронно и будет иметь ограниченную трассировку стека. Если обратный вызов вызывается, процесс выдает событие 'uncaughtException', а если не обработано, завершится.

Так как null имеет особое значение в качестве первого аргумента обратного вызова, если завернутая функция отклоняет Promise с ложным значением в качестве причины, значение упаковывается в Error с исходным значением, хранящимся в поле с именем reason.

import util from 'node:util';

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
});
function callbackify(fn: () => Promise<void>): (callback: (err: ErrnoException) => void) => void

Параметры

fn

() => Promise<void>

Функция async

Возвращаемое значение

(callback: (err: ErrnoException) => void) => void

функция стиля обратного вызова

callbackify<TResult>(() => Promise<TResult>)

function callbackify<TResult>(fn: () => Promise<TResult>): (callback: (err: ErrnoException, result: TResult) => void) => void

Параметры

fn

() => Promise<TResult>

Возвращаемое значение

(callback: (err: ErrnoException, result: TResult) => void) => void

callbackify<T1>((arg1: T1) => Promise<void>)

function callbackify<T1>(fn: (arg1: T1) => Promise<void>): (arg1: T1, callback: (err: ErrnoException) => void) => void

Параметры

fn

(arg1: T1) => Promise<void>

Возвращаемое значение

(arg1: T1, callback: (err: ErrnoException) => void) => void

callbackify<T1, TResult>((arg1: T1) => Promise<TResult>)

function callbackify<T1, TResult>(fn: (arg1: T1) => Promise<TResult>): (arg1: T1, callback: (err: ErrnoException, result: TResult) => void) => void

Параметры

fn

(arg1: T1) => Promise<TResult>

Возвращаемое значение

(arg1: T1, callback: (err: ErrnoException, result: TResult) => void) => void

callbackify<T1, T2>((arg1: T1, arg2: T2) => Promise<void>)

function callbackify<T1, T2>(fn: (arg1: T1, arg2: T2) => Promise<void>): (arg1: T1, arg2: T2, callback: (err: ErrnoException) => void) => void

Параметры

fn

(arg1: T1, arg2: T2) => Promise<void>

Возвращаемое значение

(arg1: T1, arg2: T2, callback: (err: ErrnoException) => void) => void

callbackify<T1, T2, TResult>((arg1: T1, arg2: T2) => Promise<TResult>)

function callbackify<T1, T2, TResult>(fn: (arg1: T1, arg2: T2) => Promise<TResult>): (arg1: T1, arg2: T2, callback: (err: ErrnoException | null, result: TResult) => void) => void

Параметры

fn

(arg1: T1, arg2: T2) => Promise<TResult>

Возвращаемое значение

(arg1: T1, arg2: T2, callback: (err: ErrnoException | null, result: TResult) => void) => void

callbackify<T1, T2, T3>((arg1: T1, arg2: T2, arg3: T3) => Promise<void>)

function callbackify<T1, T2, T3>(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, callback: (err: ErrnoException) => void) => void

Параметры

fn

(arg1: T1, arg2: T2, arg3: T3) => Promise<void>

Возвращаемое значение

(arg1: T1, arg2: T2, arg3: T3, callback: (err: ErrnoException) => void) => void

callbackify<T1, T2, T3, TResult>((arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>)

function callbackify<T1, T2, T3, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, callback: (err: ErrnoException | null, result: TResult) => void) => void

Параметры

fn

(arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>

Возвращаемое значение

(arg1: T1, arg2: T2, arg3: T3, callback: (err: ErrnoException | null, result: TResult) => void) => void

callbackify<T1, T2, T3, T4>((arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>)

function callbackify<T1, T2, T3, T4>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: ErrnoException) => void) => void

Параметры

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>

Возвращаемое значение

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: ErrnoException) => void) => void

callbackify<T1, T2, T3, T4, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>)

function callbackify<T1, T2, T3, T4, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: ErrnoException | null, result: TResult) => void) => void

Параметры

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>

Возвращаемое значение

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: ErrnoException | null, result: TResult) => void) => void

callbackify<T1, T2, T3, T4, T5>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>)

function callbackify<T1, T2, T3, T4, T5>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: ErrnoException) => void) => void

Параметры

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>

Возвращаемое значение

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: ErrnoException) => void) => void

callbackify<T1, T2, T3, T4, T5, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>)

function callbackify<T1, T2, T3, T4, T5, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: ErrnoException | null, result: TResult) => void) => void

Параметры

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>

Возвращаемое значение

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: ErrnoException | null, result: TResult) => void) => void

callbackify<T1, T2, T3, T4, T5, T6>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<void>)

function callbackify<T1, T2, T3, T4, T5, T6>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<void>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: ErrnoException) => void) => void

Параметры

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<void>

Возвращаемое значение

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: ErrnoException) => void) => void

callbackify<T1, T2, T3, T4, T5, T6, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<TResult>)

function callbackify<T1, T2, T3, T4, T5, T6, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<TResult>): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: ErrnoException | null, result: TResult) => void) => void

Параметры

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6) => Promise<TResult>

Возвращаемое значение

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, arg6: T6, callback: (err: ErrnoException | null, result: TResult) => void) => void

convertProcessSignalToExitCode(Signals)

Метод util.convertProcessSignalToExitCode() преобразует имя сигнала в соответствующий код выхода POSIX. После стандарта POSIX код выхода для процесса, завершаемого сигналом, вычисляется как 128 + signal number.

Если signal имя сигнала не является допустимым, будет возникать ошибка. Список допустимых сигналов см. в списке signal(7) допустимых сигналов.

import { convertProcessSignalToExitCode } from 'node:util';

console.log(convertProcessSignalToExitCode('SIGTERM')); // 143 (128 + 15)
console.log(convertProcessSignalToExitCode('SIGKILL')); // 137 (128 + 9)

Это особенно полезно при работе с процессами для определения кода выхода на основе сигнала, завершающего процесс.

function convertProcessSignalToExitCode(signal: Signals): number

Параметры

signal

Signals

Имя сигнала (например, 'SIGTERM')

Возвращаемое значение

number

Код выхода, соответствующий signal

createRandomString()

Создает случайное от 5 до 6 символьных строк.

function createRandomString(): string

Возвращаемое значение

string

debuglog(string, (fn: DebugLoggerFunction) => void)

Метод util.debuglog() используется для создания функции, которая условно записывает отладочные сообщения stderr в зависимости от существования переменной NODE_DEBUG среды. Если имя section отображается в значении этой переменной среды, возвращаемая функция работает аналогично console.error(). Если нет, возвращаемая функция является no-op.

import { debuglog } from 'node:util';
const log = debuglog('foo');

log('hello from foo [%d]', 123);

Если эта программа выполняется с NODE_DEBUG=foo в среде, она выдаст примерно следующее:

FOO 3245: hello from foo [123]

где 3245 является идентификатором процесса. Если он не выполняется с этим набором переменных среды, он не будет выводить ничего.

Кроме того, section поддерживает подстановочный знак:

import { debuglog } from 'node:util';
const log = debuglog('foo-bar');

log('hi there, it\'s foo-bar [%d]', 2333);

Если он выполняется с NODE_DEBUG=foo* в среде, он выдаст примерно следующее:

FOO-BAR 3257: hi there, it's foo-bar [2333]

В переменной section среды могут быть указаны несколько имен, разделенных NODE_DEBUG запятыми: NODE_DEBUG=fs,net,tls

Необязательный аргумент callback можно использовать для замены функции ведения журнала другой функцией, которая не имеет инициализации или ненужной оболочки.

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;
});
function debuglog(section: string, callback?: (fn: DebugLoggerFunction) => void): DebugLogger

Параметры

section

string

Строка, определяющая часть приложения, для которой создается debuglog функция.

callback

(fn: DebugLoggerFunction) => void

Обратный вызов вызывается при первом вызове функции ведения журнала с аргументом функции, который является более оптимизированной функцией ведения журнала.

Возвращаемое значение

Функция ведения журнала

deprecate<T>(T, string, string, DeprecateOptions)

Метод util.deprecate() упаковывает fn (который может быть функцией или классом), таким образом, чтобы он был помечен как устаревший.

import { deprecate } from 'node:util';

export const obsoleteFunction = deprecate(() => {
  // Do something here.
}, 'obsoleteFunction() is deprecated. Use newShinyFunction() instead.');

При вызове util.deprecate() возвращает функцию, которая будет выдавать DeprecationWarning с помощью события 'warning'. Предупреждение будет выведено и напечатано для stderr при первом вызове возвращаемой функции. После выдачи предупреждения функция-оболочка вызывается без предупреждения.

Если один и тот же необязательный code предоставляется в нескольких вызовах util.deprecate(), предупреждение будет выдаваться только один раз для этого 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

Если используются флаги командной строки --no-deprecation или --no-warnings, либо если для свойства process.noDeprecation задано значение trueдо в качестве первого предупреждения об отмене, метод util.deprecate() ничего не делает.

Если заданы флаги командной строки --trace-deprecation или --trace-warnings, либо для свойства process.traceDeprecation задано значение true, предупреждение и трассировка стека печатаются в stderr при первом вызове нерекомендуемой функции.

Если установлен флаг командной строки --throw-deprecation или свойство process.throwDeprecation имеет значение true, то при вызове нерекомендуемой функции будет возникать исключение.

Флаг командной строки --throw-deprecation и свойство process.throwDeprecation имеет приоритет над --trace-deprecation и process.traceDeprecation.

function deprecate<T>(fn: T, msg: string, code?: string, options?: DeprecateOptions): T

Параметры

fn

T

Нерекомендуемая функция.

msg

string

Предупреждение, отображаемое при вызове нерекомендуемой функции.

code

string

Код нерекомендуемого использования. Список кодов см. в list of deprecated APIs.

Возвращаемое значение

T

Нерекомендуемая функция, заключенная в оболочку, чтобы вывести предупреждение.

diff(string | (readonly string[]), string | (readonly string[]))

util.diff() сравнивает два значения строки или массива и возвращает массив записей разницы. Он использует алгоритм диффа Myers для вычисления минимальных различий, который является тем же алгоритмом, который используется внутренне в сообщениях об ошибках утверждения.

Если значения равны, возвращается пустой массив.

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'));
// []
function diff(actual: string | (readonly string[]), expected: string | (readonly string[])): DiffEntry[]

Параметры

actual

string | (readonly string[])

Первое значение для сравнения

expected

string | (readonly string[])

Второе значение для сравнения

Возвращаемое значение

Массив записей разницы. Каждая запись представляет собой массив с двумя элементами:

  • Индекс 0: код операции: number-1 для удаления для 0 no-op/без изменений 1 для вставки
  • Индекс 1. string Значение, связанное с операцией

find<T>((x: T) => boolean, T[])

Находит первое значение в массиве, который соответствует указанному предикату.

function find<T>(predicate: (x: T) => boolean, xs: T[]): T

Параметры

predicate

(x: T) => boolean

xs

T[]

Возвращаемое значение

T

findIndex<T>((x: T) => boolean, T[])

Находит индекс первого значения в массиве, который соответствует указанному предикату.

function findIndex<T>(predicate: (x: T) => boolean, xs: T[]): number

Параметры

predicate

(x: T) => boolean

xs

T[]

Возвращаемое значение

number

format(any, any[])

Метод util.format() возвращает форматированную строку с помощью первого аргумента в виде строки формата printf, которая может содержать ноль или более описателей формата. Каждый описатель заменяется преобразованным значением из соответствующего аргумента. Поддерживаемые описатели:

Если у описателя нет соответствующего аргумента, он не заменен:

util.format('%s:%s', 'foo');
// Returns: 'foo:%s'

Значения, которые не являются частью строки форматирования, форматируются с помощью util.inspect(), если их тип не string.

Если в методе util.format() передается больше аргументов, чем число описателей, дополнительные аргументы объединяются в возвращаемую строку, разделенные пробелами:

util.format('%s:%s', 'foo', 'bar', 'baz');
// Returns: 'foo:bar baz'

Если первый аргумент не содержит допустимый описатель формата, util.format() возвращает строку, которая является объединением всех аргументов, разделенных пробелами:

util.format(1, 2, 3);
// Returns: '1 2 3'

Если в util.format()передается только один аргумент, он возвращается без форматирования:

util.format('%% %s');
// Returns: '%% %s'

util.format() — это синхронный метод, предназначенный в качестве средства отладки. Некоторые входные значения могут иметь значительные затраты на производительность, которые могут блокировать цикл событий. Используйте эту функцию с осторожностью и никогда не в пути к горячему коду.

function format(format?: any, param: any[]): string

Параметры

format

any

Строка формата printf.

param

any[]

Возвращаемое значение

string

formatWithOptions(InspectOptions, any, any[])

Эта функция идентична формату, за исключением того, что он принимает аргумент inspectOptions, который задает параметры, передаваемые проверки.

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.
function formatWithOptions(inspectOptions: InspectOptions, format?: any, param: any[]): string

Параметры

inspectOptions
InspectOptions
format

any

param

any[]

Возвращаемое значение

string

generateUUID()

Создает 20 символов uuid.

function generateUUID(): string

Возвращаемое значение

string

getCallSites(number, GetCallSitesOptions)

Возвращает массив объектов сайта вызова, содержащих стек функции вызывающего объекта.

В отличие от доступа к объекту error.stack, результат, возвращаемый из этого API, не мешает Error.prepareStackTrace.

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.columnNumber}`);
  });
  // 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();

Можно восстановить исходные расположения, установив параметр sourceMap для true. Если исходная карта недоступна, исходное расположение будет совпадать с текущим расположением. --enable-source-maps Если флаг включен, sourceMap по умолчанию будет иметь значение true.

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
function getCallSites(frameCount?: number, options?: GetCallSitesOptions): CallSiteObject[]

Параметры

frameCount

number

Количество кадров для записи в качестве объектов сайта вызова. по умолчанию:10. Допустимый диапазон составляет от 1 до 200.

Возвращаемое значение

Массив объектов сайта вызова

getCallSites(GetCallSitesOptions)

function getCallSites(options: GetCallSitesOptions): CallSiteObject[]

Параметры

Возвращаемое значение

getRandomValue()

Возвращает случайное число

function getRandomValue(): number

Возвращаемое значение

number

getSystemErrorMap()

Возвращает карту всех системных кодов ошибок, доступных в API Node.js. Сопоставление кодов ошибок и имен ошибок зависит от платформы. См. Common System Errors имена распространенных ошибок.

fs.access('file/that/does/not/exist', (err) => {
  const errorMap = util.getSystemErrorMap();
  const name = errorMap.get(err.errno);
  console.error(name);  // ENOENT
});
function getSystemErrorMap(): Map<number, [string, string]>

Возвращаемое значение

Map<number, [string, string]>

getSystemErrorMessage(number)

Возвращает строковое сообщение для числового кода ошибки, полученного из API Node.js. Сопоставление кодов ошибок и строковых сообщений зависит от платформы.

fs.access('file/that/does/not/exist', (err) => {
  const message = util.getSystemErrorMessage(err.errno);
  console.error(message);  // no such file or directory
});
function getSystemErrorMessage(err: number): string

Параметры

err

number

Возвращаемое значение

string

getSystemErrorName(number)

Возвращает строковое имя числового кода ошибки, полученного из API Node.js. Сопоставление кодов ошибок и имен ошибок зависит от платформы. См. Common System Errors имена распространенных ошибок.

fs.access('file/that/does/not/exist', (err) => {
  const name = util.getSystemErrorName(err.errno);
  console.error(name);  // ENOENT
});
function getSystemErrorName(err: number): string

Параметры

err

number

Возвращаемое значение

string

getTimeDiffInMilliseconds(Date, Date)

Возвращает интервал времени между двумя датами в миллисекундах

function getTimeDiffInMilliseconds(start: Date, end: Date): number

Параметры

start

Date

end

Date

Возвращаемое значение

number

inherits(unknown, unknown)

Использование util.inherits() не рекомендуется. Чтобы получить поддержку наследования на уровне языка, используйте ключевые слова ES6 class и extends. Кроме того, обратите внимание, что два стиля семантически несовместимы.

Наследуйте методы прототипа от одного конструктора в другой. Прототип constructor будет установлен на новый объект, созданный из superConstructor.

Это в основном добавляет некоторую проверку входных данных поверх Object.setPrototypeOf(constructor.prototype, superConstructor.prototype). В качестве дополнительного удобства superConstructor будет доступен через свойство constructor.super_.

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 с помощью class и 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');
function inherits(constructor: unknown, superConstructor: unknown)

Параметры

constructor

unknown

superConstructor

unknown

inspect(any, InspectOptions)

function inspect(object: any, options?: InspectOptions): string

Параметры

object

any

options
InspectOptions

Возвращаемое значение

string

isArray(unknown)

Предупреждение

Теперь этот API является нерекомендуемым.

Since v4.0.0 - Use isArray instead.

Псевдоним для Array.isArray().

Возвращает true, если заданный object является Array. В противном случае возвращает false.

import util from 'node:util';

util.isArray([]);
// Returns: true
util.isArray(new Array());
// Returns: true
util.isArray({});
// Returns: false
function isArray(object: unknown): object is unknown[]

Параметры

object

unknown

Возвращаемое значение

object is unknown[]

isCreate(string)

Проверяет, является ли тип внедрения для создания

function isCreate(embedType: string): boolean

Параметры

embedType

string

Возвращаемое значение

boolean

isDeepStrictEqual(unknown, unknown, IsDeepStrictEqualOptions)

Возвращает true, если существует глубокое строгое равенство между val1 и val2. В противном случае возвращает false.

Дополнительные сведения о глубоком равенства см. в assert.deepStrictEqual().

function isDeepStrictEqual(val1: unknown, val2: unknown, options?: IsDeepStrictEqualOptions): boolean

Параметры

val1

unknown

val2

unknown

Возвращаемое значение

boolean

isRDLEmbed(string)

Проверяет, является ли URL-адрес внедрения отчетом RDL.

function isRDLEmbed(embedUrl: string): boolean

Параметры

embedUrl

string

Возвращаемое значение

boolean

isSavedInternal(HttpPostMessage, string, Window)

Проверяет, сохранен ли отчет.

function isSavedInternal(hpm: HttpPostMessage, uid: string, contentWindow: Window): Promise<boolean>

Параметры

hpm

HttpPostMessage

uid

string

contentWindow
Window

Возвращаемое значение

Promise<boolean>

parseArgs<T>(T)

Предоставляет API более высокого уровня для синтаксического анализа аргументов командной строки, чем взаимодействие с process.argv напрямую. Принимает спецификацию ожидаемых аргументов и возвращает структурированный объект с проанализированными параметрами и позициями.

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' } []
function parseArgs<T>(config?: T): ParsedResults<T>

Параметры

config

T

Используется для предоставления аргументов для синтаксического анализа и настройки средства синтаксического анализа. config поддерживает следующие свойства:

Возвращаемое значение

ParsedResults<T>

Аргументы командной строки синтаксического анализа:

parseEnv(string)

Стабильность: 1.1 — активная разработка с учетом примера файла .env:

import { parseEnv } from 'node:util';

parseEnv('HELLO=world\nHELLO=oh my\n');
// Returns: { HELLO: 'oh my' }
function parseEnv(content: string): Dict<string>

Параметры

content

string

Необработанное содержимое файла .env.

Возвращаемое значение

Dict<string>

promisify<TResult>((callback: (err: any, result: TResult) => void) => void)

function promisify<TResult>(fn: (callback: (err: any, result: TResult) => void) => void): () => Promise<TResult>

Параметры

fn

(callback: (err: any, result: TResult) => void) => void

Возвращаемое значение

() => Promise<TResult>

promisify((callback: (err?: any) => void) => void)

function promisify(fn: (callback: (err?: any) => void) => void): () => Promise<void>

Параметры

fn

(callback: (err?: any) => void) => void

Возвращаемое значение

() => Promise<void>

promisify<T1, TResult>((arg1: T1, callback: (err: any, result: TResult) => void) => void)

function promisify<T1, TResult>(fn: (arg1: T1, callback: (err: any, result: TResult) => void) => void): (arg1: T1) => Promise<TResult>

Параметры

fn

(arg1: T1, callback: (err: any, result: TResult) => void) => void

Возвращаемое значение

(arg1: T1) => Promise<TResult>

promisify<T1>((arg1: T1, callback: (err?: any) => void) => void)

function promisify<T1>(fn: (arg1: T1, callback: (err?: any) => void) => void): (arg1: T1) => Promise<void>

Параметры

fn

(arg1: T1, callback: (err?: any) => void) => void

Возвращаемое значение

(arg1: T1) => Promise<void>

promisify<T1, T2, TResult>((arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void)

function promisify<T1, T2, TResult>(fn: (arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void): (arg1: T1, arg2: T2) => Promise<TResult>

Параметры

fn

(arg1: T1, arg2: T2, callback: (err: any, result: TResult) => void) => void

Возвращаемое значение

(arg1: T1, arg2: T2) => Promise<TResult>

promisify<T1, T2>((arg1: T1, arg2: T2, callback: (err?: any) => void) => void)

function promisify<T1, T2>(fn: (arg1: T1, arg2: T2, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2) => Promise<void>

Параметры

fn

(arg1: T1, arg2: T2, callback: (err?: any) => void) => void

Возвращаемое значение

(arg1: T1, arg2: T2) => Promise<void>

promisify<T1, T2, T3, TResult>((arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void)

function promisify<T1, T2, T3, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>

Параметры

fn

(arg1: T1, arg2: T2, arg3: T3, callback: (err: any, result: TResult) => void) => void

Возвращаемое значение

(arg1: T1, arg2: T2, arg3: T3) => Promise<TResult>

promisify<T1, T2, T3>((arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void)

function promisify<T1, T2, T3>(fn: (arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2, arg3: T3) => Promise<void>

Параметры

fn

(arg1: T1, arg2: T2, arg3: T3, callback: (err?: any) => void) => void

Возвращаемое значение

(arg1: T1, arg2: T2, arg3: T3) => Promise<void>

promisify<T1, T2, T3, T4, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void)

function promisify<T1, T2, T3, T4, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>

Параметры

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err: any, result: TResult) => void) => void

Возвращаемое значение

(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<TResult>

promisify<T1, T2, T3, T4>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void)

function promisify<T1, T2, T3, T4>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>

Параметры

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, callback: (err?: any) => void) => void

Возвращаемое значение

(arg1: T1, arg2: T2, arg3: T3, arg4: T4) => Promise<void>

promisify<T1, T2, T3, T4, T5, TResult>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void)

function promisify<T1, T2, T3, T4, T5, TResult>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>

Параметры

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err: any, result: TResult) => void) => void

Возвращаемое значение

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<TResult>

promisify<T1, T2, T3, T4, T5>((arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void)

function promisify<T1, T2, T3, T4, T5>(fn: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void): (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>

Параметры

fn

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5, callback: (err?: any) => void) => void

Возвращаемое значение

(arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => Promise<void>

promisify(Function)

function promisify(fn: Function): Function

Параметры

fn

Function

Возвращаемое значение

Function

raiseCustomEvent(HTMLElement, string, any)

Вызывает настраиваемое событие с данными о событиях в указанном элементе HTML.

function raiseCustomEvent(element: HTMLElement, eventName: string, eventData: any)

Параметры

element

HTMLElement

eventName

string

eventData

any

remove<T>((x: T) => boolean, T[])

function remove<T>(predicate: (x: T) => boolean, xs: T[])

Параметры

predicate

(x: T) => boolean

xs

T[]

setTraceSigInt(boolean)

Включение или отключение печати трассировки стека в SIGINT. API доступен только в основном потоке.

function setTraceSigInt(enable: boolean)

Параметры

enable

boolean

stripVTControlCharacters(string)

Возвращает str с удаленными кодами escape-кода ANSI.

console.log(util.stripVTControlCharacters('\u001B[4mvalue\u001B[0m'));
// Prints "value"
function stripVTControlCharacters(str: string): string

Параметры

str

string

Возвращаемое значение

string

styleText(InspectColor | (readonly InspectColor[]) | Object, string, StyleTextOptions)

Эта функция возвращает форматированный текст, учитывая format переданный для печати в терминале. Он знает о возможностях терминала и действует в соответствии с набором конфигурации с помощью NO_COLORNODE_DISABLE_COLORS переменных среды и FORCE_COLOR среды.

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 также предоставляет текстовые форматы, такие как italic, и underline, и можно объединить оба:

console.log(
  util.styleText(['underline', 'italic'], 'My italic underlined message'),
);

При передаче массива форматов порядок применения формата слева направо, поэтому следующий стиль может перезаписать предыдущий.

console.log(
  util.styleText(['red', 'green'], 'text'), // green
);

Значение специального формата none не применяет к тексту дополнительные стили.

Помимо стандартных имен цветов, util.styleText() поддерживает шестнадцатеричные строки цветов с помощью escape-последовательностей ANSI TrueColor (24-разрядная версия). Шестнадцатеричные цвета можно указать в формате 3-цифр (#RGB) или 6-значных (#RRGGBB):

import { styleText } from 'node:util';

// 6-digit hex color
console.log(styleText('#ff5733', 'Orange text'));

// 3-digit hex color (shorthand)
console.log(styleText('#f00', 'Red text'));

Полный список форматов можно найти в модификаторах.

function styleText(format: InspectColor | (readonly InspectColor[]) | Object, text: string, options?: StyleTextOptions): string

Параметры

format

InspectColor | (readonly InspectColor[]) | Object

Текстовый формат или массив текстовых форматов, определенных в util.inspect.colorsвиде или шестнадцатеричном цвете #RGB#RRGGBB .

text

string

Отформатированный текст.

Возвращаемое значение

string

toUSVString(string)

Возвращает string после замены любых суррогатных точек кода (или аналогично неоплачиваемых суррогатных единиц кода) с символом замены Юникода U+FFFD.

function toUSVString(string: string): string

Параметры

string

string

Возвращаемое значение

string

transferableAbortController()

Создает и возвращает экземпляр AbortController, AbortSignal которого помечены как переносимые и могут использоваться с structuredClone() или postMessage().

function transferableAbortController(): AbortController

Возвращаемое значение

AbortController

Переносимый abortController

transferableAbortSignal(AbortSignal)

Помечает указанный AbortSignal как переносимый, чтобы его можно было использовать сstructuredClone() и postMessage().

const signal = transferableAbortSignal(AbortSignal.timeout(100));
const channel = new MessageChannel();
channel.port2.postMessage(signal, [signal]);
function transferableAbortSignal(signal: AbortSignal): AbortSignal

Параметры

signal

AbortSignal

The AbortSignal

Возвращаемое значение

AbortSignal

Тот же abortSignal

Сведения об переменной

APINotSupportedForRDLError

APINotSupportedForRDLError: "This API is currently not supported for RDL reports"

Тип

"This API is currently not supported for RDL reports"

EmbedUrlNotSupported

EmbedUrlNotSupported: "Embed URL is invalid for this scenario. Please use Power BI REST APIs to get the valid URL"

Тип

"Embed URL is invalid for this scenario. Please use Power BI REST APIs to get the valid URL"

TextDecoder

TextDecoder: (label?: string, options?: TextDecoderOptions) => TextDecoder

Тип

(label?: string, options?: TextDecoderOptions) => TextDecoder

TextEncoder

TextEncoder: () => TextEncoder

Тип

() => TextEncoder

Document

Document: () => Document

Тип

() => Document

HTMLIFrameElement

HTMLIFrameElement: () => HTMLIFrameElement

Тип

() => HTMLIFrameElement

Window

Window: () => Window

Тип

() => Window

config

config: { type: string, version: string }

Тип

{ type: string, version: string }

invalidEmbedUrlErrorMessage

invalidEmbedUrlErrorMessage: string

Тип

string

hpmFactory

hpmFactory: IHpmFactory

Тип

IHpmFactory

routerFactory

routerFactory: IRouterFactory

Тип

IRouterFactory

wpmpFactory

wpmpFactory: IWpmpFactory

Тип

IWpmpFactory