1 | /**
|
2 | * The `console` module provides a simple debugging console that is similar to the
|
3 | * JavaScript console mechanism provided by web browsers.
|
4 | *
|
5 | * The module exports two specific components:
|
6 | *
|
7 | * * 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.
|
8 | * * A global `console` instance configured to write to `process.stdout` and `process.stderr`. The global `console` can be used without calling`require('console')`.
|
9 | *
|
10 | * _**Warning**_: The global console object's methods are neither consistently
|
11 | * synchronous like the browser APIs they resemble, nor are they consistently
|
12 | * asynchronous like all other Node.js streams. See the `note on process I/O` for
|
13 | * more information.
|
14 | *
|
15 | * Example using the global `console`:
|
16 | *
|
17 | * ```js
|
18 | * console.log('hello world');
|
19 | * // Prints: hello world, to stdout
|
20 | * console.log('hello %s', 'world');
|
21 | * // Prints: hello world, to stdout
|
22 | * console.error(new Error('Whoops, something bad happened'));
|
23 | * // Prints error message and stack trace to stderr:
|
24 | * // Error: Whoops, something bad happened
|
25 | * // at [eval]:5:15
|
26 | * // at Script.runInThisContext (node:vm:132:18)
|
27 | * // at Object.runInThisContext (node:vm:309:38)
|
28 | * // at node:internal/process/execution:77:19
|
29 | * // at [eval]-wrapper:6:22
|
30 | * // at evalScript (node:internal/process/execution:76:60)
|
31 | * // at node:internal/main/eval_string:23:3
|
32 | *
|
33 | * const name = 'Will Robinson';
|
34 | * console.warn(`Danger ${name}! Danger!`);
|
35 | * // Prints: Danger Will Robinson! Danger!, to stderr
|
36 | * ```
|
37 | *
|
38 | * Example using the `Console` class:
|
39 | *
|
40 | * ```js
|
41 | * const out = getStreamSomehow();
|
42 | * const err = getStreamSomehow();
|
43 | * const myConsole = new console.Console(out, err);
|
44 | *
|
45 | * myConsole.log('hello world');
|
46 | * // Prints: hello world, to out
|
47 | * myConsole.log('hello %s', 'world');
|
48 | * // Prints: hello world, to out
|
49 | * myConsole.error(new Error('Whoops, something bad happened'));
|
50 | * // Prints: [Error: Whoops, something bad happened], to err
|
51 | *
|
52 | * const name = 'Will Robinson';
|
53 | * myConsole.warn(`Danger ${name}! Danger!`);
|
54 | * // Prints: Danger Will Robinson! Danger!, to err
|
55 | * ```
|
56 | * @see [source](https://github.com/nodejs/node/blob/v16.6.0/lib/console.js)
|
57 | */
|
58 | declare module 'console' {
|
59 | import console = require('node:console');
|
60 | export = console;
|
61 | }
|
62 | declare module 'node:console' {
|
63 | import { InspectOptions } from 'node:util';
|
64 | global {
|
65 | // This needs to be global to avoid TS2403 in case lib.dom.d.ts is present in the same build
|
66 | interface Console {
|
67 | Console: console.ConsoleConstructor;
|
68 | /**
|
69 | * `console.assert()` writes a message if `value` is [falsy](https://developer.mozilla.org/en-US/docs/Glossary/Falsy) or omitted. It only
|
70 | * writes a message and does not otherwise affect execution. The output always
|
71 | * starts with `"Assertion failed"`. If provided, `message` is formatted using `util.format()`.
|
72 | *
|
73 | * If `value` is [truthy](https://developer.mozilla.org/en-US/docs/Glossary/Truthy), nothing happens.
|
74 | *
|
75 | * ```js
|
76 | * console.assert(true, 'does nothing');
|
77 | *
|
78 | * console.assert(false, 'Whoops %s work', 'didn\'t');
|
79 | * // Assertion failed: Whoops didn't work
|
80 | *
|
81 | * console.assert();
|
82 | * // Assertion failed
|
83 | * ```
|
84 | * @since v0.1.101
|
85 | * @param value The value tested for being truthy.
|
86 | * @param message All arguments besides `value` are used as error message.
|
87 | */
|
88 | assert(value: any, message?: string, ...optionalParams: any[]): void;
|
89 | /**
|
90 | * When `stdout` is a TTY, calling `console.clear()` will attempt to clear the
|
91 | * TTY. When `stdout` is not a TTY, this method does nothing.
|
92 | *
|
93 | * The specific operation of `console.clear()` can vary across operating systems
|
94 | * and terminal types. For most Linux operating systems, `console.clear()`operates similarly to the `clear` shell command. On Windows, `console.clear()`will clear only the output in the
|
95 | * current terminal viewport for the Node.js
|
96 | * binary.
|
97 | * @since v8.3.0
|
98 | */
|
99 | clear(): void;
|
100 | /**
|
101 | * Maintains an internal counter specific to `label` and outputs to `stdout` the
|
102 | * number of times `console.count()` has been called with the given `label`.
|
103 | *
|
104 | * ```js
|
105 | * > console.count()
|
106 | * default: 1
|
107 | * undefined
|
108 | * > console.count('default')
|
109 | * default: 2
|
110 | * undefined
|
111 | * > console.count('abc')
|
112 | * abc: 1
|
113 | * undefined
|
114 | * > console.count('xyz')
|
115 | * xyz: 1
|
116 | * undefined
|
117 | * > console.count('abc')
|
118 | * abc: 2
|
119 | * undefined
|
120 | * > console.count()
|
121 | * default: 3
|
122 | * undefined
|
123 | * >
|
124 | * ```
|
125 | * @since v8.3.0
|
126 | * @param label The display label for the counter.
|
127 | */
|
128 | count(label?: string): void;
|
129 | /**
|
130 | * Resets the internal counter specific to `label`.
|
131 | *
|
132 | * ```js
|
133 | * > console.count('abc');
|
134 | * abc: 1
|
135 | * undefined
|
136 | * > console.countReset('abc');
|
137 | * undefined
|
138 | * > console.count('abc');
|
139 | * abc: 1
|
140 | * undefined
|
141 | * >
|
142 | * ```
|
143 | * @since v8.3.0
|
144 | * @param label The display label for the counter.
|
145 | */
|
146 | countReset(label?: string): void;
|
147 | /**
|
148 | * The `console.debug()` function is an alias for {@link log}.
|
149 | * @since v8.0.0
|
150 | */
|
151 | debug(message?: any, ...optionalParams: any[]): void;
|
152 | /**
|
153 | * Uses `util.inspect()` on `obj` and prints the resulting string to `stdout`.
|
154 | * This function bypasses any custom `inspect()` function defined on `obj`.
|
155 | * @since v0.1.101
|
156 | */
|
157 | dir(obj: any, options?: InspectOptions): void;
|
158 | /**
|
159 | * This method calls `console.log()` passing it the arguments received.
|
160 | * This method does not produce any XML formatting.
|
161 | * @since v8.0.0
|
162 | */
|
163 | dirxml(...data: any[]): void;
|
164 | /**
|
165 | * Prints to `stderr` with newline. Multiple arguments can be passed, with the
|
166 | * first used as the primary message and all additional used as substitution
|
167 | * values similar to [`printf(3)`](http://man7.org/linux/man-pages/man3/printf.3.html) (the arguments are all passed to `util.format()`).
|
168 | *
|
169 | * ```js
|
170 | * const code = 5;
|
171 | * console.error('error #%d', code);
|
172 | * // Prints: error #5, to stderr
|
173 | * console.error('error', code);
|
174 | * // Prints: error 5, to stderr
|
175 | * ```
|
176 | *
|
177 | * If formatting elements (e.g. `%d`) are not found in the first string then `util.inspect()` is called on each argument and the resulting string
|
178 | * values are concatenated. See `util.format()` for more information.
|
179 | * @since v0.1.100
|
180 | */
|
181 | error(message?: any, ...optionalParams: any[]): void;
|
182 | /**
|
183 | * Increases indentation of subsequent lines by spaces for `groupIndentation`length.
|
184 | *
|
185 | * If one or more `label`s are provided, those are printed first without the
|
186 | * additional indentation.
|
187 | * @since v8.5.0
|
188 | */
|
189 | group(...label: any[]): void;
|
190 | /**
|
191 | * An alias for {@link group}.
|
192 | * @since v8.5.0
|
193 | */
|
194 | groupCollapsed(...label: any[]): void;
|
195 | /**
|
196 | * Decreases indentation of subsequent lines by spaces for `groupIndentation`length.
|
197 | * @since v8.5.0
|
198 | */
|
199 | groupEnd(): void;
|
200 | /**
|
201 | * The `console.info()` function is an alias for {@link log}.
|
202 | * @since v0.1.100
|
203 | */
|
204 | info(message?: any, ...optionalParams: any[]): void;
|
205 | /**
|
206 | * Prints to `stdout` with newline. Multiple arguments can be passed, with the
|
207 | * first used as the primary message and all additional used as substitution
|
208 | * values similar to [`printf(3)`](http://man7.org/linux/man-pages/man3/printf.3.html) (the arguments are all passed to `util.format()`).
|
209 | *
|
210 | * ```js
|
211 | * const count = 5;
|
212 | * console.log('count: %d', count);
|
213 | * // Prints: count: 5, to stdout
|
214 | * console.log('count:', count);
|
215 | * // Prints: count: 5, to stdout
|
216 | * ```
|
217 | *
|
218 | * See `util.format()` for more information.
|
219 | * @since v0.1.100
|
220 | */
|
221 | log(message?: any, ...optionalParams: any[]): void;
|
222 | /**
|
223 | * Try to construct a table with the columns of the properties of `tabularData`(or use `properties`) and rows of `tabularData` and log it. Falls back to just
|
224 | * logging the argument if it can’t be parsed as tabular.
|
225 | *
|
226 | * ```js
|
227 | * // These can't be parsed as tabular data
|
228 | * console.table(Symbol());
|
229 | * // Symbol()
|
230 | *
|
231 | * console.table(undefined);
|
232 | * // undefined
|
233 | *
|
234 | * console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }]);
|
235 | * // ┌─────────┬─────┬─────┐
|
236 | * // │ (index) │ a │ b │
|
237 | * // ├─────────┼─────┼─────┤
|
238 | * // │ 0 │ 1 │ 'Y' │
|
239 | * // │ 1 │ 'Z' │ 2 │
|
240 | * // └─────────┴─────┴─────┘
|
241 | *
|
242 | * console.table([{ a: 1, b: 'Y' }, { a: 'Z', b: 2 }], ['a']);
|
243 | * // ┌─────────┬─────┐
|
244 | * // │ (index) │ a │
|
245 | * // ├─────────┼─────┤
|
246 | * // │ 0 │ 1 │
|
247 | * // │ 1 │ 'Z' │
|
248 | * // └─────────┴─────┘
|
249 | * ```
|
250 | * @since v10.0.0
|
251 | * @param properties Alternate properties for constructing the table.
|
252 | */
|
253 | table(tabularData: any, properties?: ReadonlyArray<string>): void;
|
254 | /**
|
255 | * Starts a timer that can be used to compute the duration of an operation. Timers
|
256 | * are identified by a unique `label`. Use the same `label` when calling {@link timeEnd} to stop the timer and output the elapsed time in
|
257 | * suitable time units to `stdout`. For example, if the elapsed
|
258 | * time is 3869ms, `console.timeEnd()` displays "3.869s".
|
259 | * @since v0.1.104
|
260 | */
|
261 | time(label?: string): void;
|
262 | /**
|
263 | * Stops a timer that was previously started by calling {@link time} and
|
264 | * prints the result to `stdout`:
|
265 | *
|
266 | * ```js
|
267 | * console.time('100-elements');
|
268 | * for (let i = 0; i < 100; i++) {}
|
269 | * console.timeEnd('100-elements');
|
270 | * // prints 100-elements: 225.438ms
|
271 | * ```
|
272 | * @since v0.1.104
|
273 | */
|
274 | timeEnd(label?: string): void;
|
275 | /**
|
276 | * For a timer that was previously started by calling {@link time}, prints
|
277 | * the elapsed time and other `data` arguments to `stdout`:
|
278 | *
|
279 | * ```js
|
280 | * console.time('process');
|
281 | * const value = expensiveProcess1(); // Returns 42
|
282 | * console.timeLog('process', value);
|
283 | * // Prints "process: 365.227ms 42".
|
284 | * doExpensiveProcess2(value);
|
285 | * console.timeEnd('process');
|
286 | * ```
|
287 | * @since v10.7.0
|
288 | */
|
289 | timeLog(label?: string, ...data: any[]): void;
|
290 | /**
|
291 | * Prints to `stderr` the string `'Trace: '`, followed by the `util.format()` formatted message and stack trace to the current position in the code.
|
292 | *
|
293 | * ```js
|
294 | * console.trace('Show me');
|
295 | * // Prints: (stack trace will vary based on where trace is called)
|
296 | * // Trace: Show me
|
297 | * // at repl:2:9
|
298 | * // at REPLServer.defaultEval (repl.js:248:27)
|
299 | * // at bound (domain.js:287:14)
|
300 | * // at REPLServer.runBound [as eval] (domain.js:300:12)
|
301 | * // at REPLServer.<anonymous> (repl.js:412:12)
|
302 | * // at emitOne (events.js:82:20)
|
303 | * // at REPLServer.emit (events.js:169:7)
|
304 | * // at REPLServer.Interface._onLine (readline.js:210:10)
|
305 | * // at REPLServer.Interface._line (readline.js:549:8)
|
306 | * // at REPLServer.Interface._ttyWrite (readline.js:826:14)
|
307 | * ```
|
308 | * @since v0.1.104
|
309 | */
|
310 | trace(message?: any, ...optionalParams: any[]): void;
|
311 | /**
|
312 | * The `console.warn()` function is an alias for {@link error}.
|
313 | * @since v0.1.100
|
314 | */
|
315 | warn(message?: any, ...optionalParams: any[]): void;
|
316 | // --- Inspector mode only ---
|
317 | /**
|
318 | * This method does not display anything unless used in the inspector.
|
319 | * Starts a JavaScript CPU profile with an optional label.
|
320 | */
|
321 | profile(label?: string): void;
|
322 | /**
|
323 | * This method does not display anything unless used in the inspector.
|
324 | * Stops the current JavaScript CPU profiling session if one has been started and prints the report to the Profiles panel of the inspector.
|
325 | */
|
326 | profileEnd(label?: string): void;
|
327 | /**
|
328 | * This method does not display anything unless used in the inspector.
|
329 | * Adds an event with the label `label` to the Timeline panel of the inspector.
|
330 | */
|
331 | timeStamp(label?: string): void;
|
332 | }
|
333 | /**
|
334 | * The `console` module provides a simple debugging console that is similar to the
|
335 | * JavaScript console mechanism provided by web browsers.
|
336 | *
|
337 | * The module exports two specific components:
|
338 | *
|
339 | * * 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.
|
340 | * * A global `console` instance configured to write to `process.stdout` and `process.stderr`. The global `console` can be used without calling`require('console')`.
|
341 | *
|
342 | * _**Warning**_: The global console object's methods are neither consistently
|
343 | * synchronous like the browser APIs they resemble, nor are they consistently
|
344 | * asynchronous like all other Node.js streams. See the `note on process I/O` for
|
345 | * more information.
|
346 | *
|
347 | * Example using the global `console`:
|
348 | *
|
349 | * ```js
|
350 | * console.log('hello world');
|
351 | * // Prints: hello world, to stdout
|
352 | * console.log('hello %s', 'world');
|
353 | * // Prints: hello world, to stdout
|
354 | * console.error(new Error('Whoops, something bad happened'));
|
355 | * // Prints error message and stack trace to stderr:
|
356 | * // Error: Whoops, something bad happened
|
357 | * // at [eval]:5:15
|
358 | * // at Script.runInThisContext (node:vm:132:18)
|
359 | * // at Object.runInThisContext (node:vm:309:38)
|
360 | * // at node:internal/process/execution:77:19
|
361 | * // at [eval]-wrapper:6:22
|
362 | * // at evalScript (node:internal/process/execution:76:60)
|
363 | * // at node:internal/main/eval_string:23:3
|
364 | *
|
365 | * const name = 'Will Robinson';
|
366 | * console.warn(`Danger ${name}! Danger!`);
|
367 | * // Prints: Danger Will Robinson! Danger!, to stderr
|
368 | * ```
|
369 | *
|
370 | * Example using the `Console` class:
|
371 | *
|
372 | * ```js
|
373 | * const out = getStreamSomehow();
|
374 | * const err = getStreamSomehow();
|
375 | * const myConsole = new console.Console(out, err);
|
376 | *
|
377 | * myConsole.log('hello world');
|
378 | * // Prints: hello world, to out
|
379 | * myConsole.log('hello %s', 'world');
|
380 | * // Prints: hello world, to out
|
381 | * myConsole.error(new Error('Whoops, something bad happened'));
|
382 | * // Prints: [Error: Whoops, something bad happened], to err
|
383 | *
|
384 | * const name = 'Will Robinson';
|
385 | * myConsole.warn(`Danger ${name}! Danger!`);
|
386 | * // Prints: Danger Will Robinson! Danger!, to err
|
387 | * ```
|
388 | * @see [source](https://github.com/nodejs/node/blob/v16.4.2/lib/console.js)
|
389 | */
|
390 | namespace console {
|
391 | interface ConsoleConstructorOptions {
|
392 | stdout: NodeJS.WritableStream;
|
393 | stderr?: NodeJS.WritableStream | undefined;
|
394 | ignoreErrors?: boolean | undefined;
|
395 | colorMode?: boolean | 'auto' | undefined;
|
396 | inspectOptions?: InspectOptions | undefined;
|
397 | }
|
398 | interface ConsoleConstructor {
|
399 | prototype: Console;
|
400 | new (stdout: NodeJS.WritableStream, stderr?: NodeJS.WritableStream, ignoreErrors?: boolean): Console;
|
401 | new (options: ConsoleConstructorOptions): Console;
|
402 | }
|
403 | }
|
404 | var console: Console;
|
405 | }
|
406 | export = globalThis.console;
|
407 | }
|