UNPKG

@types/node

Version:
152 lines (151 loc) 6.76 kB
/** * The `node:console` module provides a simple debugging console that is similar to * the JavaScript console mechanism provided by web browsers. * * The module exports two specific components: * * * A `Console` class with methods such as `console.log()`, `console.error()`, and `console.warn()` that can be used to write to any Node.js stream. * * A global `console` instance configured to write to [`process.stdout`](https://nodejs.org/docs/latest-v25.x/api/process.html#processstdout) and * [`process.stderr`](https://nodejs.org/docs/latest-v25.x/api/process.html#processstderr). The global `console` can be used without importing the `node:console` module. * * _**Warning**_: The global console object's methods are neither consistently * synchronous like the browser APIs they resemble, nor are they consistently * asynchronous like all other Node.js streams. See the [`note on process I/O`](https://nodejs.org/docs/latest-v25.x/api/process.html#a-note-on-process-io) for * more information. * * Example using the global `console`: * * ```js * console.log('hello world'); * // Prints: hello world, to stdout * console.log('hello %s', 'world'); * // Prints: hello world, to stdout * console.error(new Error('Whoops, something bad happened')); * // Prints error message and stack trace to stderr: * // Error: Whoops, something bad happened * // at [eval]:5:15 * // at Script.runInThisContext (node:vm:132:18) * // at Object.runInThisContext (node:vm:309:38) * // at node:internal/process/execution:77:19 * // at [eval]-wrapper:6:22 * // at evalScript (node:internal/process/execution:76:60) * // at node:internal/main/eval_string:23:3 * * const name = 'Will Robinson'; * console.warn(`Danger ${name}! Danger!`); * // Prints: Danger Will Robinson! Danger!, to stderr * ``` * * Example using the `Console` class: * * ```js * const out = getStreamSomehow(); * const err = getStreamSomehow(); * const myConsole = new console.Console(out, err); * * myConsole.log('hello world'); * // Prints: hello world, to out * myConsole.log('hello %s', 'world'); * // Prints: hello world, to out * myConsole.error(new Error('Whoops, something bad happened')); * // Prints: [Error: Whoops, something bad happened], to err * * const name = 'Will Robinson'; * myConsole.warn(`Danger ${name}! Danger!`); * // Prints: Danger Will Robinson! Danger!, to err * ``` * @see [source](https://github.com/nodejs/node/blob/v25.x/lib/console.js) */ declare module "node:console" { import { InspectOptions } from "node:util"; namespace console { interface ConsoleOptions { stdout: NodeJS.WritableStream; stderr?: NodeJS.WritableStream | undefined; /** * Ignore errors when writing to the underlying streams. * @default true */ ignoreErrors?: boolean | undefined; /** * Set color support for this `Console` instance. Setting to true enables coloring while inspecting * values. Setting to `false` disables coloring while inspecting values. Setting to `'auto'` makes color * support depend on the value of the `isTTY` property and the value returned by `getColorDepth()` on the * respective stream. This option can not be used, if `inspectOptions.colors` is set as well. * @default 'auto' */ colorMode?: boolean | "auto" | undefined; /** * Specifies options that are passed along to * [`util.inspect()`](https://nodejs.org/docs/latest-v25.x/api/util.html#utilinspectobject-options). */ inspectOptions?: InspectOptions | ReadonlyMap<NodeJS.WritableStream, InspectOptions> | undefined; /** * Set group indentation. * @default 2 */ groupIndentation?: number | undefined; } interface Console { readonly Console: { prototype: Console; new(stdout: NodeJS.WritableStream, stderr?: NodeJS.WritableStream, ignoreErrors?: boolean): Console; new(options: ConsoleOptions): Console; }; assert(condition?: unknown, ...data: any[]): void; clear(): void; count(label?: string): void; countReset(label?: string): void; debug(...data: any[]): void; dir(item?: any, options?: InspectOptions): void; dirxml(...data: any[]): void; error(...data: any[]): void; group(...data: any[]): void; groupCollapsed(...data: any[]): void; groupEnd(): void; info(...data: any[]): void; log(...data: any[]): void; table(tabularData?: any, properties?: string[]): void; time(label?: string): void; timeEnd(label?: string): void; timeLog(label?: string, ...data: any[]): void; trace(...data: any[]): void; warn(...data: any[]): void; /** * This method does not display anything unless used in the inspector. The `console.profile()` * method starts a JavaScript CPU profile with an optional label until {@link profileEnd} * is called. The profile is then added to the Profile panel of the inspector. * * ```js * console.profile('MyLabel'); * // Some code * console.profileEnd('MyLabel'); * // Adds the profile 'MyLabel' to the Profiles panel of the inspector. * ``` * @since v8.0.0 */ profile(label?: string): void; /** * This method does not display anything unless used in the inspector. Stops the current * JavaScript CPU profiling session if one has been started and prints the report to the * Profiles panel of the inspector. See {@link profile} for an example. * * If this method is called without a label, the most recently started profile is stopped. * @since v8.0.0 */ profileEnd(label?: string): void; /** * This method does not display anything unless used in the inspector. The `console.timeStamp()` * method adds an event with the label `'label'` to the Timeline panel of the inspector. * @since v8.0.0 */ timeStamp(label?: string): void; } } var console: console.Console; export = console; } declare module "console" { import console = require("node:console"); export = console; }