{"version":3,"file":"use-logger.cjs","sources":["../../src/use-logger.ts"],"sourcesContent":["'use client';\nimport { Logger } from '@axiomhq/logging';\nimport { useEffect, useState } from 'react';\nimport { axiomClient, frameworkIdentifierFormatter } from './identifier';\n\ntype AxiomClientLogger = Logger & {\n  appendAxiomClient?: (axiomClient: string) => void;\n};\n\nexport function createUseLogger(logger: Logger) {\n  if (!logger) {\n    throw new Error('A logger must be provided to create useLogger');\n  }\n\n  if (logger.config && !logger.config.formatters?.includes(frameworkIdentifierFormatter)) {\n    logger.config.formatters = [...(logger.config.formatters ?? []), frameworkIdentifierFormatter];\n  }\n  (logger as AxiomClientLogger).appendAxiomClient?.(axiomClient);\n\n  const useLogger = () => {\n    const [path, setPath] = useState(typeof window !== 'undefined' ? window.location.pathname : '');\n\n    useEffect(() => {\n      const handleLocationChange = () => {\n        setPath(window.location.pathname);\n      };\n\n      window.addEventListener('popstate', handleLocationChange);\n      window.addEventListener('pushState', handleLocationChange);\n      window.addEventListener('replaceState', handleLocationChange);\n\n      return () => {\n        window.removeEventListener('popstate', handleLocationChange);\n        window.removeEventListener('pushState', handleLocationChange);\n        window.removeEventListener('replaceState', handleLocationChange);\n      };\n    }, []);\n\n    useEffect(() => {\n      return () => {\n        if (logger) {\n          logger.flush();\n        }\n      };\n    }, [path]);\n\n    return logger;\n  };\n\n  return useLogger;\n}\n"],"names":["useEffect"],"mappings":";;;;;AASO;AACL;AACE;AAA+D;AAGjE;AACE;AAA6F;AAE9F;AAED;AACE;AAEAA;AACE;AACE;AAAgC;AAGlC;AACA;AACA;AAEA;AACE;AACA;AACA;AAA+D;AACjE;AAGFA;AACE;AACE;AACE;AAAO;AACT;AACF;AAGF;AAAO;AAGT;AACF;;"}