@paroicms/bo-app-log
Advanced tools
Comparing version 1.6.2 to 1.7.0
import { type WrapAsync } from "./sync-lib"; | ||
export interface AppLog { | ||
export interface AppLogger { | ||
error: LogFn; | ||
@@ -10,8 +10,8 @@ warn: LogFn; | ||
} | ||
export interface FullAppLog extends AppLog { | ||
export interface FullAppLogger extends AppLogger { | ||
wrapAsync: WrapAsync; | ||
lateSetup(options: Partial<AppLogOptions>): void; | ||
lateSetup(options: Partial<AppLoggerOptions>): void; | ||
} | ||
export interface LogParameters { | ||
level: AppLogStrictLevels; | ||
level: AppLoggerStrictLevels; | ||
message: any[]; | ||
@@ -21,10 +21,10 @@ clientOnly?: boolean; | ||
export type LogFn = (...messages: any[]) => void; | ||
export type AppLogStrictLevels = Exclude<keyof AppLog, "log" | "wrapAsync">; | ||
export type AppLogLevels = AppLogStrictLevels | "none"; | ||
export interface AppLogOptions { | ||
minLevel?: AppLogLevels; | ||
export type AppLoggerStrictLevels = Exclude<keyof AppLogger, "log" | "wrapAsync">; | ||
export type AppLoggerLevels = AppLoggerStrictLevels | "none"; | ||
export interface AppLoggerOptions { | ||
minLevel?: AppLoggerLevels; | ||
send?: SendToServerOptions; | ||
} | ||
export interface SendToServerOptions { | ||
minLevel?: AppLogLevels; | ||
minLevel?: AppLoggerLevels; | ||
sendToServer?(lines: FrontLogLine[]): Promise<void>; | ||
@@ -34,5 +34,5 @@ } | ||
message: string[]; | ||
level: AppLogStrictLevels; | ||
level: AppLoggerStrictLevels; | ||
} | ||
export declare function createNoAppLog(): FullAppLog; | ||
export declare function createAppLog(mainOptions?: AppLogOptions): FullAppLog; | ||
export declare function createNoAppLogger(): FullAppLogger; | ||
export declare function createAppLogger(mainOptions?: AppLoggerOptions): FullAppLogger; |
@@ -5,3 +5,3 @@ import { makeWrapAsync } from "./sync-lib"; | ||
}; | ||
export function createNoAppLog() { | ||
export function createNoAppLogger() { | ||
return { | ||
@@ -16,7 +16,7 @@ error: noOp, | ||
lateSetup: () => { | ||
throw new Error("'lateSetup' can't be called on noAppLog."); | ||
throw new Error("'lateSetup' can't be called on noAppLogger."); | ||
}, | ||
}; | ||
} | ||
export function createAppLog(mainOptions) { | ||
export function createAppLogger(mainOptions) { | ||
let minLevel = mainOptions?.minLevel ?? "none"; | ||
@@ -23,0 +23,0 @@ let consoleLog = makeToConsole(minLevel); |
@@ -1,10 +0,10 @@ | ||
import { type AppLog, type FullAppLog } from "./app-log"; | ||
import { type AppLogger, type FullAppLogger } from "./app-log"; | ||
import type { WrapAsync } from "./sync-lib"; | ||
export * from "./app-log"; | ||
export * from "./sync-lib"; | ||
export declare const AppLogContext: import("react").Context<FullAppLog>; | ||
export declare function useAppLog(): AppLog; | ||
export declare const AppLoggerContext: import("react").Context<FullAppLogger>; | ||
export declare function useAppLogger(): AppLogger; | ||
export declare function useWrapAsync(): WrapAsync; | ||
export type AsyncEffect = Promise<void | (() => void | Promise<void>)>; | ||
export declare function useAsyncEffect(effect: () => AsyncEffect, deps: readonly unknown[]): void; | ||
export declare const AppLogProvider: import("react").Provider<FullAppLog>; | ||
export declare const AppLoggerProvider: import("react").Provider<FullAppLogger>; |
import { createContext, useContext, useEffect, useRef } from "react"; | ||
import { createNoAppLog } from "./app-log"; | ||
import { createNoAppLogger } from "./app-log"; | ||
export * from "./app-log"; | ||
export * from "./sync-lib"; | ||
export const AppLogContext = createContext(createNoAppLog()); | ||
export function useAppLog() { | ||
return useContext(AppLogContext); | ||
export const AppLoggerContext = createContext(createNoAppLogger()); | ||
export function useAppLogger() { | ||
return useContext(AppLoggerContext); | ||
} | ||
export function useWrapAsync() { | ||
return useContext(AppLogContext).wrapAsync; | ||
return useContext(AppLoggerContext).wrapAsync; | ||
} | ||
export function useAsyncEffect(effect, deps) { | ||
const logger = useContext(AppLogContext); | ||
const logger = useContext(AppLoggerContext); | ||
const enqueueCalling = useRef(); // to resist to React strict mode | ||
@@ -41,2 +41,2 @@ useEffect(() => { | ||
} | ||
export const AppLogProvider = AppLogContext.Provider; | ||
export const AppLoggerProvider = AppLoggerContext.Provider; |
export type WrapAsync = <T extends (...args: any[]) => Promise<any>>(fn: T) => (...args: Parameters<T>) => void; | ||
export declare function makeWrapAsync(appLog: { | ||
export declare function makeWrapAsync(logger: { | ||
error: (error: unknown) => void; | ||
}): <T extends (...args: any[]) => Promise<any>>(fn: T) => (...args: Parameters<T>) => void; |
@@ -1,5 +0,5 @@ | ||
export function makeWrapAsync(appLog) { | ||
export function makeWrapAsync(logger) { | ||
return (fn) => (...args) => { | ||
fn(...args).catch(appLog.error); | ||
fn(...args).catch(logger.error); | ||
}; | ||
} |
{ | ||
"name": "@paroicms/bo-app-log", | ||
"version": "1.6.2", | ||
"version": "1.7.0", | ||
"description": "Logger for the BO front of a Paroi CMS.", | ||
@@ -27,3 +27,3 @@ "keywords": [ | ||
"rimraf": "~6.0.1", | ||
"typescript": "~5.7.2", | ||
"typescript": "~5.7.3", | ||
"react": "~18.3.1" | ||
@@ -30,0 +30,0 @@ }, |
10074