alepha
Version:
Easy-to-use modern TypeScript framework for building many kind of applications.
279 lines • 9.6 kB
TypeScript
import { Alepha, KIND, LogLevel, LoggerInterface, Static } from "alepha";
import { DateTimeProvider } from "alepha/datetime";
//#region ../../src/logger/schemas/logEntrySchema.d.ts
declare const logEntrySchema: import("zod").ZodObject<{
level: import("zod").ZodEnum<{
DEBUG: "DEBUG";
ERROR: "ERROR";
INFO: "INFO";
SILENT: "SILENT";
TRACE: "TRACE";
WARN: "WARN";
}>;
message: import("zod").ZodString;
service: import("zod").ZodString;
module: import("zod").ZodString;
context: import("zod").ZodOptional<import("zod").ZodString>;
app: import("zod").ZodOptional<import("zod").ZodString>;
data: import("zod").ZodOptional<import("zod").ZodAny>;
timestamp: import("zod").ZodNumber;
}, import("zod/v4/core").$strip>;
type LogEntry = Static<typeof logEntrySchema>;
//#endregion
//#region ../../src/logger/providers/ConsoleColorProvider.d.ts
declare class ConsoleColorProvider {
static readonly COLORS: {
RESET: string;
BLACK: string;
RED: string;
GREEN: string;
ORANGE: string;
BLUE: string;
PURPLE: string;
CYAN: string;
GREY_LIGHT: string;
GREY_LIGHT_BOLD: string;
GREY_DARK: string;
GREY_DARK_BOLD: string;
WHITE: string;
WHITE_BOLD: string;
DIM: string;
BOLD: string;
INVERSE: string;
SILENT: string;
ERROR: string;
WARN: string;
INFO: string;
DEBUG: string;
TRACE: string;
};
protected readonly alepha: Alepha;
protected enabled: boolean;
constructor();
isEnabled(): boolean;
set(color: keyof typeof ConsoleColorProvider.COLORS, text: string, reset?: string): string;
}
//#endregion
//#region ../../src/logger/providers/LogFormatterProvider.d.ts
declare abstract class LogFormatterProvider {
abstract format(entry: LogEntry): string;
}
//#endregion
//#region ../../src/logger/providers/PrettyFormatterProvider.d.ts
declare class PrettyFormatterProvider extends LogFormatterProvider {
protected color: ConsoleColorProvider;
protected alepha: Alepha;
format(entry: LogEntry): string;
formatTimestamp(timestamp: number): string;
protected pad2: (n: number) => string;
protected pad3: (n: number) => string;
/**
* Avoid to display the whole UUID in development mode
*/
protected formatContext(context: string): string;
protected formatError(error: Error): string;
}
//#endregion
//#region ../../src/logger/providers/CliFormatterProvider.d.ts
/**
* Compact formatter for CLI output.
*
* Renders `HH:MM:SS L message {json}` — a short clock time, a single-letter
* level colored by severity, the message, and any structured data appended
* dim. Deliberately drops the `<module.service>`, app name and context UUID
* that {@link PrettyFormatterProvider} prints: in an interactive CLI session
* those are noise. Use `pretty` (or `--verbose`) when you need them, `raw`
* when you want the bare message for piping, and `json` for aggregation.
*/
declare class CliFormatterProvider extends PrettyFormatterProvider {
format(entry: LogEntry): string;
/**
* Short clock time without milliseconds (HH:MM:SS).
*/
protected formatClockTime(timestamp: number): string;
}
//#endregion
//#region ../../src/logger/providers/JsonFormatterProvider.d.ts
declare class JsonFormatterProvider extends LogFormatterProvider {
format(entry: LogEntry): string;
formatJsonError(error: Error): object;
}
//#endregion
//#region ../../src/logger/providers/LogDestinationProvider.d.ts
declare abstract class LogDestinationProvider {
abstract write(message: string, entry: LogEntry): void;
}
//#endregion
//#region ../../src/logger/providers/RawFormatterProvider.d.ts
declare class RawFormatterProvider extends LogFormatterProvider {
format(entry: LogEntry): string;
}
//#endregion
//#region ../../src/logger/services/Logger.d.ts
declare class Logger implements LoggerInterface {
protected readonly alepha: Alepha;
/**
* Formatter chosen at register time (from `LOG_FORMAT`, honoring any
* custom `LogFormatterProvider` substitution). Used unless a runtime
* `alepha.logger.format` override is set — see {@link formatter}.
*/
protected readonly defaultFormatter: LogFormatterProvider;
protected readonly jsonFormatter: JsonFormatterProvider;
protected readonly prettyFormatter: PrettyFormatterProvider;
protected readonly rawFormatter: RawFormatterProvider;
protected readonly cliFormatter: CliFormatterProvider;
protected readonly destination: LogDestinationProvider;
protected readonly dateTimeProvider: DateTimeProvider;
protected readonly levels: Record<string, number>;
protected readonly service: string;
protected readonly module: string;
protected readonly app?: string;
protected appLogLevel: string;
protected logLevel: LogLevel;
constructor(service: string, module: string);
get context(): string | undefined;
get level(): string;
/**
* Active formatter. Honors a runtime `alepha.logger.format` override
* (read live, like {@link level}); otherwise falls back to the
* register-time {@link defaultFormatter} so custom substitutions and the
* `LOG_FORMAT` default keep working.
*/
protected get formatter(): LogFormatterProvider;
parseLevel(level: string, app: string): LogLevel;
protected matchesPattern(moduleName: string, pattern: string): boolean;
asLogLevel(something: string): LogLevel;
/**
* Whether a message at `level` would actually be emitted given the current
* active level (read live from state). Mirrors the threshold used by
* {@link log}: a level is enabled when it sits at or above the active one.
*
* @example
* // active level = INFO
* log.isLevelEnabled("DEBUG"); // false
* log.isLevelEnabled("WARN"); // true
*/
isLevelEnabled(level: LogLevel): boolean;
error(message: string, data?: unknown): void;
warn(message: string, data?: unknown): void;
info(message: string, data?: unknown): void;
debug(message: string, data?: unknown): void;
trace(message: string, data?: unknown): void;
protected log(level: LogLevel, message: string, data?: unknown): void;
protected emit(entry: LogEntry, message?: string): void;
}
//#endregion
//#region ../../src/logger/primitives/$logger.d.ts
/**
* Create a logger.
*
* `name` is optional, by default it will use the name of the service.
*
* @example
* ```ts
* import { $logger } from "alepha";
*
* class MyService {
* log = $logger();
*
* constructor() {
* this.log.info("Service initialized");
* // print something like '[23:45:53.326] INFO <app.MyService>: Service initialized'
* }
* }
* ```
*/
declare const $logger: {
(options?: LoggerPrimitiveOptions): Logger;
[KIND]: typeof Logger;
};
interface LoggerPrimitiveOptions {
name?: string;
}
//#endregion
//#region ../../src/logger/providers/ConsoleDestinationProvider.d.ts
declare class ConsoleDestinationProvider extends LogDestinationProvider {
write(message: string): void;
}
//#endregion
//#region ../../src/logger/providers/MemoryDestinationProvider.d.ts
declare class MemoryDestinationProvider extends LogDestinationProvider {
protected entries: Array<LogEntry & {
formatted: string;
}>;
readonly options: {
maxEntries: number;
};
write(formatted: string, entry: LogEntry): void;
get logs(): ({
level: "DEBUG" | "ERROR" | "INFO" | "SILENT" | "TRACE" | "WARN";
message: string;
service: string;
module: string;
context?: string | undefined;
app?: string | undefined;
data?: any;
timestamp: number;
} & {
formatted: string;
})[];
clear(): void;
}
//#endregion
//#region ../../src/logger/index.d.ts
/**
* Configurable logging with multiple outputs.
*
* **Features:**
* - Global logger access
* - JSON format
* - Pretty colored output
* - Compact CLI format
* - Raw text format
* - Console destination
* - Memory destination (for devtools)
* - Custom handlers
* - Configuration via `LOG_LEVEL`, `LOG_FORMAT`, and `DEBUG`
*
* @module alepha.logger
*/
declare const AlephaLogger: import("alepha").Service<import("alepha").Module>;
declare const envSchema: import("zod").ZodObject<{
DEBUG: import("zod").ZodOptional<import("zod").ZodString>;
LOG_LEVEL: import("zod").ZodOptional<import("zod").ZodString>;
LOG_FORMAT: import("zod").ZodOptional<import("zod").ZodEnum<{
cli: "cli";
json: "json";
pretty: "pretty";
raw: "raw";
}>>;
}, import("zod/v4/core").$strip>;
declare module "alepha" {
interface Env extends Partial<Static<typeof envSchema>> {}
interface State {
/**
* Current log level for the application or specific modules.
*/
"alepha.logger.level"?: string;
/**
* Runtime override for the log format (`json` | `pretty` | `raw`).
*
* Unset → the formatter chosen at register time from `LOG_FORMAT`
* (honoring any custom `LogFormatterProvider` substitution) is used.
* When set, it overrides both the active formatter and the CLI's
* dynamic/"stylish" task UI (which is enabled only for `raw`). Set it
* to flip output at runtime — e.g. the CLI `--verbose` flag forces
* `pretty`.
*/
"alepha.logger.format"?: string;
}
interface Hooks {
log: {
message?: string;
entry: LogEntry;
};
}
}
//#endregion
export { $logger, AlephaLogger, CliFormatterProvider, ConsoleColorProvider, ConsoleDestinationProvider, JsonFormatterProvider, LogDestinationProvider, LogEntry, LogFormatterProvider, Logger, LoggerPrimitiveOptions, MemoryDestinationProvider, PrettyFormatterProvider, RawFormatterProvider, logEntrySchema };
//# sourceMappingURL=index.d.ts.map