UNPKG

@nanostores/logger

Version:

Pretty logger of lifecycles, changes and actions for Nano Stores

39 lines (33 loc) 809 B
function onBuild(creator, listener) { let originBuild = creator.build creator.build = (...args) => { let store = originBuild(...args) listener(store) return store } return () => { creator.build = originBuild } } const defaultNameGetter = (creatorName, store) => { return `${creatorName}:${store.value.id}` } export function buildCreatorLogger(creator, creatorName, events, opts = {}) { opts = { nameGetter: defaultNameGetter, ...opts } let messages = opts.messages || {} let unbind = [] if (messages.build !== false) { unbind.push( onBuild(creator, store => { let storeName = opts.nameGetter(creatorName, store) events.build({ creatorName, store, storeName }) }) ) } return () => { for (let i of unbind) i() } }