@plugjs/plug
Version:
PlugJS Build System ===================
53 lines (52 loc) • 1.99 kB
TypeScript
/** Define a branded type for log levels */
export type Level<N extends number> = N & {
__brand_log_level: never;
};
/** The `TRACE` log level */
export declare const TRACE: Level<10>;
/** The `DEBUG` log level */
export declare const DEBUG: Level<20>;
/** The `INFO` log level */
export declare const INFO: Level<30>;
/** The `NOTICE` log level (our default) */
export declare const NOTICE: Level<40>;
/** The `WARN` log level */
export declare const WARN: Level<50>;
/** The `ERROR` log level */
export declare const ERROR: Level<60>;
/** The `OFF` log level (no logs are emitted) */
export declare const OFF: Level<9007199254740991>;
/** All our known log levels */
export declare const logLevels: Readonly<{
TRACE: Level<10>;
DEBUG: Level<20>;
INFO: Level<30>;
NOTICE: Level<40>;
WARN: Level<50>;
ERROR: Level<60>;
OFF: Level<9007199254740991>;
}>;
/** The type of all our known log levels */
export type LogLevels = typeof logLevels;
/** ID of each one of our log levels (upper case) */
export type LogLevelKey = keyof LogLevels;
/** Canonical name of each one of our log levels (lower case) */
export type LogLevelName = Lowercase<LogLevelKey>;
/** A type identifying all our log level numbers */
export type LogLevel = LogLevels[LogLevelKey];
/** The type identifying a recognized log level as a `string`. */
export type LogLevelString = LogLevelKey | LogLevelName;
/**
* Convert a `string` (a {@link LogLevelString}) into a {@link LogLevel}.
*
* If the level specified is not a {@link LogLevelString}, the {@link NOTICE}
* level (our default) will be returned.
*/
export declare function getLevelNumber<L extends LogLevelString>(level: L): LogLevels[Uppercase<L>];
/**
* Convert a `number` (a {@link LogLevel}) into a {@link LogLevelName}.
*
* If the level specified is not precisely a {@link LogLevel}, the
* closer {@link LogLevelName} will be returned.
*/
export declare function getLevelName<L extends LogLevel>(level: L): LogLevelName;