{"version":3,"file":"initialize-logger.mjs","sources":["../../src/logger/constants.ts","../../src/logger/initialize-logger.ts"],"sourcesContent":["export const LOG_GROUPS = {\n  BOOTSTRAP: 'Bootstrap',\n  TRACKING: 'Tracking',\n  TRANSLATION: 'Translation',\n  UTILS: 'Utilities',\n} as const;\n\n/**\n * Exported log levels for the shared logger wrapper.\n *\n * `WARN` and `ERROR` map to dedicated Seamless logger methods.\n * `LOG`, `INFO`, and `DEFAULT` currently route through the standard `log` output.\n */\nexport const LOG_LEVEL = {\n  LOG: 1,\n  WARN: 2,\n  ERROR: 3,\n  INFO: 4,\n  DEFAULT: 5,\n} as const;\n","import { initializeLogger as seamlessInitializeLogger } from '@seamless/logger';\n\nimport { type LOG_GROUPS, LOG_LEVEL } from './constants';\n\nconst SEAMLESS_LOGGER_METHOD = {\n  LOG: 'log',\n  WARN: 'warn',\n  ERROR: 'error',\n  INFO: 'log',\n  DEFAULT: 'log',\n} as const;\n\nconst DATE_FORMATTER = new Intl.DateTimeFormat(['pt-PT', 'de-DE', 'en-GB'], {\n  year: 'numeric',\n  month: '2-digit',\n  day: '2-digit',\n});\n\nconst TIME_FORMATTER = new Intl.DateTimeFormat(['pt-PT', 'de-DE', 'en-GB'], {\n  hour: '2-digit',\n  minute: '2-digit',\n  second: '2-digit',\n});\n\nconst DEFAULT_LOG_GROUP = 'Default';\n\ntype SeamlessLoggerMethod = (typeof SEAMLESS_LOGGER_METHOD)[keyof typeof SEAMLESS_LOGGER_METHOD];\n\ntype LogLevel = (typeof LOG_LEVEL)[keyof typeof LOG_LEVEL];\ntype CustomLogGroups = Record<string, string>;\ntype LogGroups<T extends CustomLogGroups = Record<string, never>> =\n  | (typeof LOG_GROUPS)[keyof typeof LOG_GROUPS]\n  | T[keyof T];\n\ntype LoggerOptions<T extends CustomLogGroups = Record<string, never>> = {\n  args?: unknown[];\n\n  /**\n   * `WARN` and `ERROR` use dedicated logger methods.\n   * `LOG`, `INFO`, and `DEFAULT` currently route through the standard `log` output.\n   */\n  level?: LogLevel;\n\n  group?: LogGroups<T>;\n};\n\ntype InitializeLoggerOptions = {\n  /**\n   * @deprecated Metadata registration is no longer handled by the logger initializer.\n   */\n  buildTime?: string;\n\n  /**\n   * @deprecated Metadata registration is no longer handled by the logger initializer.\n   */\n  version?: string;\n};\n\ntype Logger<T extends CustomLogGroups = Record<string, never>> = {\n  (message: string, options?: LoggerOptions<T>): void;\n  log(message: string, ...args: any[]): void;\n  error(message: string, ...args: any[]): void;\n  warn(message: string, ...args: any[]): void;\n\n  /**\n   * Debug messages currently use the standard `log` transport.\n   */\n  debug(message: string, ...args: any[]): void;\n};\n\nfunction getFormattedTimestamp(now: number): string {\n  return `${DATE_FORMATTER.format(now)} | ${TIME_FORMATTER.format(now)}`;\n}\n\nfunction initializeLogger<T extends CustomLogGroups = Record<string, never>>(namespace: string): Logger<T>;\n/**\n * @deprecated The `options` parameter is deprecated and ignored. Call `initializeLogger(namespace)` instead.\n */\nfunction initializeLogger<T extends CustomLogGroups = Record<string, never>>(\n  namespace: string,\n  options: InitializeLoggerOptions,\n): Logger<T>;\n/**\n * @deprecated The `options` parameter is deprecated and ignored. Call `initializeLogger(namespace)` instead.\n */\nfunction initializeLogger<T extends CustomLogGroups = Record<string, never>>(\n  namespace: string,\n  _options?: InitializeLoggerOptions,\n): Logger<T> {\n  const seamlessLogger = seamlessInitializeLogger(namespace);\n  const levelMapping: Record<number, SeamlessLoggerMethod> = {\n    [LOG_LEVEL.LOG]: 'log',\n    [LOG_LEVEL.WARN]: 'warn',\n    [LOG_LEVEL.ERROR]: 'error',\n    [LOG_LEVEL.INFO]: 'log',\n    [LOG_LEVEL.DEFAULT]: 'log',\n  };\n\n  const logMessage = (message: string, logOptions?: LoggerOptions<T>): void => {\n    const { args = [], level = LOG_LEVEL.LOG, group = DEFAULT_LOG_GROUP } = logOptions || {};\n    const formattedMessage = `${getFormattedTimestamp(Date.now())} | ${group || ''}\\n${message}`;\n\n    const methodName: SeamlessLoggerMethod = levelMapping[level] ?? 'log';\n    const seamlessLogMethod = seamlessLogger[methodName] ?? seamlessLogger.log;\n\n    if (args?.length) {\n      seamlessLogMethod.call(seamlessLogger, formattedMessage, ...args);\n    } else {\n      seamlessLogMethod.call(seamlessLogger, formattedMessage);\n    }\n  };\n\n  return Object.assign(logMessage, {\n    log: (message: string, ...args: any[]) => logMessage(message, { args, level: LOG_LEVEL.LOG }),\n    error: (message: string, ...args: any[]) => logMessage(message, { args, level: LOG_LEVEL.ERROR }),\n    warn: (message: string, ...args: any[]) => logMessage(message, { args, level: LOG_LEVEL.WARN }),\n    debug: (message: string, ...args: any[]) => logMessage(message, { args, level: LOG_LEVEL.DEFAULT }),\n  }) as Logger<T>;\n}\n\nexport { initializeLogger };\nexport type { InitializeLoggerOptions, LogGroups, LogLevel, Logger, LoggerOptions };\n"],"names":["LOG_GROUPS","LOG_LEVEL","DATE_FORMATTER","TIME_FORMATTER","DEFAULT_LOG_GROUP","getFormattedTimestamp","now","initializeLogger","namespace","_options","seamlessLogger","seamlessInitializeLogger","levelMapping","logMessage","message","logOptions","args","level","group","formattedMessage","methodName","seamlessLogMethod"],"mappings":";AAAO,MAAMA,IAAa;AAAA,EACxB,WAAW;AAAA,EACX,UAAU;AAAA,EACV,aAAa;AAAA,EACb,OAAO;AACT,GAQaC,IAAY;AAAA,EACvB,KAAK;AAAA,EACL,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM;AAAA,EACN,SAAS;AACX,GCPMC,IAAiB,IAAI,KAAK,eAAe,CAAC,SAAS,SAAS,OAAO,GAAG;AAAA,EAC1E,MAAM;AAAA,EACN,OAAO;AAAA,EACP,KAAK;AACP,CAAC,GAEKC,IAAiB,IAAI,KAAK,eAAe,CAAC,SAAS,SAAS,OAAO,GAAG;AAAA,EAC1E,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,QAAQ;AACV,CAAC,GAEKC,IAAoB;AA8C1B,SAASC,EAAsBC,GAAqB;AAClD,SAAO,GAAGJ,EAAe,OAAOI,CAAG,CAAC,MAAMH,EAAe,OAAOG,CAAG,CAAC;AACtE;AAaA,SAASC,EACPC,GACAC,GACW;AACX,QAAMC,IAAiBC,EAAyBH,CAAS,GACnDI,IAAqD;AAAA,IACzD,CAACX,EAAU,GAAG,GAAG;AAAA,IACjB,CAACA,EAAU,IAAI,GAAG;AAAA,IAClB,CAACA,EAAU,KAAK,GAAG;AAAA,IACnB,CAACA,EAAU,IAAI,GAAG;AAAA,IAClB,CAACA,EAAU,OAAO,GAAG;AAAA,EAAA,GAGjBY,IAAa,CAACC,GAAiBC,MAAwC;AAC3E,UAAM,EAAE,MAAAC,IAAO,CAAA,GAAI,OAAAC,IAAQhB,EAAU,KAAK,OAAAiB,IAAQd,MAAsBW,KAAc,CAAA,GAChFI,IAAmB,GAAGd,EAAsB,KAAK,KAAK,CAAC,MAAMa,KAAS,EAAE;AAAA,EAAKJ,CAAO,IAEpFM,IAAmCR,EAAaK,CAAK,KAAK,OAC1DI,IAAoBX,EAAeU,CAAU,KAAKV,EAAe;AAEvE,IAAIM,GAAM,SACRK,EAAkB,KAAKX,GAAgBS,GAAkB,GAAGH,CAAI,IAEhEK,EAAkB,KAAKX,GAAgBS,CAAgB;AAAA,EAE3D;AAEA,SAAO,OAAO,OAAON,GAAY;AAAA,IAC/B,KAAK,CAACC,MAAoBE,MAAgBH,EAAWC,GAAS,EAAE,MAAAE,GAAM,OAAOf,EAAU,IAAA,CAAK;AAAA,IAC5F,OAAO,CAACa,MAAoBE,MAAgBH,EAAWC,GAAS,EAAE,MAAAE,GAAM,OAAOf,EAAU,MAAA,CAAO;AAAA,IAChG,MAAM,CAACa,MAAoBE,MAAgBH,EAAWC,GAAS,EAAE,MAAAE,GAAM,OAAOf,EAAU,KAAA,CAAM;AAAA,IAC9F,OAAO,CAACa,MAAoBE,MAAgBH,EAAWC,GAAS,EAAE,MAAAE,GAAM,OAAOf,EAAU,QAAA,CAAS;AAAA,EAAA,CACnG;AACH;"}