UNPKG

@nanostores/logger

Version:

Pretty logger of lifecycles, changes and actions for Nano Stores

58 lines (51 loc) 1.34 kB
import type { AnyStore, MapStore } from 'nanostores' interface CreatorLoggerOptionsMessages { /** * Disable build logs. */ build?: boolean } export interface CreatorLoggerOptions { messages?: CreatorLoggerOptionsMessages /** * Custom name getter for stores built with creators. * * @param creatorName Name of the creator. * @param store Store built by the creator. * @returns Custom store name. */ nameGetter?: (creatorName: string, store: MapStore) => string } interface EventBuildPayload { creatorName: string store: MapStore storeName: string } interface BuildCreatorLoggerEvents { build: (payload: EventBuildPayload) => void } /** * Builds logger of map creators for Nano Stores. * * ```js * import { buildCreatorLogger } from '@nanostores/logger' * import { $profile } from './stores/index.js' * * let destroy = buildLogger($profile, 'Profile', { * build: ({ creatorName, store, storeName }) => { * console.log(`${storeName} was built by ${creatorName}`, store) * } * }) * ``` * * @param store Creator for logging. * @param storeName Store name. * @param events Events to log. * @param opts Logger options. */ export function buildCreatorLogger( store: AnyStore, storeName: string, events: BuildCreatorLoggerEvents, opts?: CreatorLoggerOptions ): () => void