Files
Schnappix/node_modules/@expo/metro/metro-core/Terminal.d.ts
T

53 lines
1.7 KiB
TypeScript

/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*
*
* @format
* @oncall react_native
*/
import type { Socket } from "node:net";
import type { Writable } from "node:stream";
type UnderlyingStream = Socket | Writable;
/**
* We don't just print things to the console, sometimes we also want to show
* and update progress. This utility just ensures the output stays neat: no
* missing newlines, no mangled log lines.
*
* const terminal = Terminal.default;
* terminal.status('Updating... 38%');
* terminal.log('warning: Something happened.');
* terminal.status('Updating, done.');
* terminal.persistStatus();
*
* The final output:
*
* warning: Something happened.
* Updating, done.
*
* Without the status feature, we may get a mangled output:
*
* Updating... 38%warning: Something happened.
* Updating, done.
*
* This is meant to be user-readable and TTY-oriented. We use stdout by default
* because it's more about status information than diagnostics/errors (stderr).
*
* Do not add any higher-level functionality in this class such as "warning" and
* "error" printers, as it is not meant for formatting/reporting. It has the
* single responsibility of handling status messages.
*/
declare class Terminal {
constructor(stream: UnderlyingStream, opts: {
ttyPrint?: boolean;
});
waitForUpdates(): Promise<void>;
flush(): Promise<void>;
status(format: string, ...args: Array<any>): string;
log(format: string, ...args: Array<any>): void;
persistStatus(): void;
}
export default Terminal;