/** * @since 2.0.0 */ import type * as Context from "./Context.js" import type { Effect } from "./Effect.js" import * as internal from "./internal/console.js" import * as defaultConsole from "./internal/defaultServices/console.js" import type * as Layer from "./Layer.js" import type { Scope } from "./Scope.js" /** * @since 2.0.0 * @category type ids */ export const TypeId: unique symbol = defaultConsole.TypeId /** * @since 2.0.0 * @category type ids */ export type TypeId = typeof TypeId /** * @since 2.0.0 * @category model */ export interface Console { readonly [TypeId]: TypeId assert(condition: boolean, ...args: ReadonlyArray): Effect readonly clear: Effect count(label?: string): Effect countReset(label?: string): Effect debug(...args: ReadonlyArray): Effect dir(item: any, options?: any): Effect dirxml(...args: ReadonlyArray): Effect error(...args: ReadonlyArray): Effect group(options?: { readonly label?: string | undefined readonly collapsed?: boolean | undefined }): Effect readonly groupEnd: Effect info(...args: ReadonlyArray): Effect log(...args: ReadonlyArray): Effect table(tabularData: any, properties?: ReadonlyArray): Effect time(label?: string): Effect timeEnd(label?: string): Effect timeLog(label?: string, ...args: ReadonlyArray): Effect trace(...args: ReadonlyArray): Effect warn(...args: ReadonlyArray): Effect readonly unsafe: UnsafeConsole } /** * @since 2.0.0 * @category model */ export interface UnsafeConsole { assert(condition: boolean, ...args: ReadonlyArray): void clear(): void count(label?: string): void countReset(label?: string): void debug(...args: ReadonlyArray): void dir(item: any, options?: any): void dirxml(...args: ReadonlyArray): void error(...args: ReadonlyArray): void group(...args: ReadonlyArray): void groupCollapsed(...args: ReadonlyArray): void groupEnd(): void info(...args: ReadonlyArray): void log(...args: ReadonlyArray): void table(tabularData: any, properties?: ReadonlyArray): void time(label?: string): void timeEnd(label?: string): void timeLog(label?: string, ...args: ReadonlyArray): void trace(...args: ReadonlyArray): void warn(...args: ReadonlyArray): void } /** * @since 2.0.0 * @category context */ export const Console: Context.Tag = defaultConsole.consoleTag /** * @since 2.0.0 * @category default services */ export const withConsole: { /** * @since 2.0.0 * @category default services */ (console: C): (effect: Effect) => Effect /** * @since 2.0.0 * @category default services */ (effect: Effect, console: C): Effect } = internal.withConsole /** * @since 2.0.0 * @category default services */ export const setConsole: (console: A) => Layer.Layer = internal.setConsole /** * @since 2.0.0 * @category accessor */ export const consoleWith: (f: (console: Console) => Effect) => Effect = internal.consoleWith /** * @since 2.0.0 * @category accessor */ export const assert: (condition: boolean, ...args: ReadonlyArray) => Effect = internal.assert /** * @since 2.0.0 * @category accessor */ export const clear: Effect = internal.clear /** * @since 2.0.0 * @category accessor */ export const count: (label?: string) => Effect = internal.count /** * @since 2.0.0 * @category accessor */ export const countReset: (label?: string) => Effect = internal.countReset /** * @since 2.0.0 * @category accessor */ export const debug: (...args: ReadonlyArray) => Effect = internal.debug /** * @since 2.0.0 * @category accessor */ export const dir: (item: any, options?: any) => Effect = internal.dir /** * @since 2.0.0 * @category accessor */ export const dirxml: (...args: ReadonlyArray) => Effect = internal.dirxml /** * @since 2.0.0 * @category accessor */ export const error: (...args: ReadonlyArray) => Effect = internal.error /** * @since 2.0.0 * @category accessor */ export const group: ( options?: { label?: string | undefined; collapsed?: boolean | undefined } | undefined ) => Effect = internal.group /** * @since 2.0.0 * @category accessor */ export const info: (...args: ReadonlyArray) => Effect = internal.info /** * @since 2.0.0 * @category accessor */ export const log: (...args: ReadonlyArray) => Effect = internal.log /** * @since 2.0.0 * @category accessor */ export const table: (tabularData: any, properties?: ReadonlyArray) => Effect = internal.table /** * @since 2.0.0 * @category accessor */ export const time: (label?: string | undefined) => Effect = internal.time /** * @since 2.0.0 * @category accessor */ export const timeLog: (label?: string, ...args: ReadonlyArray) => Effect = internal.timeLog /** * @since 2.0.0 * @category accessor */ export const trace: (...args: ReadonlyArray) => Effect = internal.trace /** * @since 2.0.0 * @category accessor */ export const warn: (...args: ReadonlyArray) => Effect = internal.warn /** * @since 2.0.0 * @category accessor */ export const withGroup: { /** * @since 2.0.0 * @category accessor */ ( options?: { readonly label?: string | undefined readonly collapsed?: boolean | undefined } ): (self: Effect) => Effect /** * @since 2.0.0 * @category accessor */ ( self: Effect, options?: { readonly label?: string | undefined readonly collapsed?: boolean | undefined } ): Effect } = internal.withGroup /** * @since 2.0.0 * @category accessor */ export const withTime: { /** * @since 2.0.0 * @category accessor */ (label?: string): (self: Effect) => Effect /** * @since 2.0.0 * @category accessor */ (self: Effect, label?: string): Effect } = internal.withTime