{"version":3,"file":"abstract-formatter.mjs","sources":["../../../../src/logger/formatter/abstract-formatter.ts"],"sourcesContent":["import type { Formatter, LogRecord } from '../../types/logger'\nimport { DateTime } from 'luxon'\n\n/**\n * Support date format:\n *  - `YYYY` - Full year (e.g., 2024)\n *  - `YY` - Two-digit year (e.g., 24)\n *  - `MMMM` - Full month name (e.g., \"January\")\n *  - `MMM` - Abbreviated month name (e.g., \"Jan\")\n *  - `MM` - Month with leading zero (01-12)\n *  - `M` - Month without leading zero (1-12)\n *  - `DD` - Day of month with leading zero (01-31)\n *  - `D` - Day of month without leading zero (1-31)\n *  - `HH` - Hour (24-hour) with leading zero (00-23)\n *  - `H` - Hour (24-hour) without leading zero (0-23)\n *  - `hh` - Hour (12-hour) with leading zero (00-11)\n *  - `h` - Hour (12-hour) without leading zero (0-11)\n *  - `mm` - Minutes with leading zero (00-59)\n *  - `m` - Minutes without leading zero (0-59)\n *  - `ss` - Seconds with leading zero (00-59)\n *  - `s` - Seconds without leading zero (0-59)\n *  - `SSS` - Milliseconds (000-999)\n *  - `a` - AM/PM lowercase (am/pm)\n *  - `A` - AM/PM uppercase (AM/PM)\n *  - `ZZZ` - Timezone (e.g., UTC)\n *  - `ZZ` - Timezone offset (e.g., +03:00)\n */\nexport abstract class AbstractFormatter implements Formatter {\n  protected dateFormat: string\n\n  constructor(\n    dateFormat: string = 'YYYY-MM-DD HH:mm:ss'\n  ) {\n    this.dateFormat = dateFormat\n  }\n\n  public abstract format(record: LogRecord): string\n\n  protected _formatTimestamp(date: Date): string {\n    const dt = DateTime.fromJSDate(date)\n    return Math.floor(dt.toSeconds()).toFixed(0)\n  }\n\n  protected _formatDate(date: Date): string {\n    const dt = DateTime.fromJSDate(date)\n    return dt.toFormat(this.dateFormat\n      .replace(/YYYY/g, 'yyyy')\n      .replace(/YY/g, 'yy')\n      .replace(/DD/g, 'dd')\n      .replace(/D/g, 'd')\n    )\n  }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;AA2BO,MAAe,iBAAA,CAAuC;AAAA,EA3B7D;AA2B6D,IAAA,MAAA,CAAA,IAAA,EAAA,mBAAA,CAAA;AAAA;AAAA,EACjD,UAAA;AAAA,EAEV,WAAA,CACE,aAAqB,qBAAA,EACrB;AACA,IAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAAA,EACpB;AAAA,EAIU,iBAAiB,IAAA,EAAoB;AAC7C,IAAA,MAAM,EAAA,GAAK,QAAA,CAAS,UAAA,CAAW,IAAI,CAAA;AACnC,IAAA,OAAO,KAAK,KAAA,CAAM,EAAA,CAAG,WAAW,CAAA,CAAE,QAAQ,CAAC,CAAA;AAAA,EAC7C;AAAA,EAEU,YAAY,IAAA,EAAoB;AACxC,IAAA,MAAM,EAAA,GAAK,QAAA,CAAS,UAAA,CAAW,IAAI,CAAA;AACnC,IAAA,OAAO,EAAA,CAAG,QAAA;AAAA,MAAS,KAAK,UAAA,CACrB,OAAA,CAAQ,OAAA,EAAS,MAAM,EACvB,OAAA,CAAQ,KAAA,EAAO,IAAI,CAAA,CACnB,QAAQ,KAAA,EAAO,IAAI,CAAA,CACnB,OAAA,CAAQ,MAAM,GAAG;AAAA,KACpB;AAAA,EACF;AACF;;;;"}