{"version":3,"file":"index-node.mjs","sources":["../src/createBody.ts","../src/index.ts"],"sourcesContent":["/* eslint-disable camelcase */\nimport { Level, MarkdownFormatter, RawFormatter } from \"nightingale\";\nimport type { LogRecord, Metadata } from \"nightingale-types\";\nimport type { SlackConfig } from \"./SlackConfig\";\n\nconst levelToSlackColor: Record<number, string> = {\n  [Level.TRACE]: \"#808080\",\n  [Level.DEBUG]: \"#808080\",\n  [Level.INFO]: \"#808080\",\n  [Level.WARN]: \"warning\",\n  [Level.ERROR]: \"danger\",\n  [Level.CRITICAL]: \"danger\",\n  [Level.FATAL]: \"danger\",\n  [Level.EMERGENCY]: \"danger\",\n};\n\nexport default function createBody<T extends Metadata>(\n  record: LogRecord<T>,\n  slackConfig: SlackConfig,\n): Record<string, unknown> {\n  const markdown = MarkdownFormatter.format(record);\n  const raw = RawFormatter.format(record);\n\n  return {\n    channel: slackConfig.channel,\n    username: slackConfig.username,\n    icon_url: slackConfig.iconUrl,\n    icon_emoji: slackConfig.iconEmoji,\n    attachments: [\n      {\n        fallback: raw[0],\n        title: record.message,\n        color: levelToSlackColor[record.level],\n        text: markdown[0],\n        mrkdwn_in: [\"text\"],\n      },\n    ],\n  };\n}\n","import type {\n  Handle,\n  Handler,\n  Level,\n  LogRecord,\n  Metadata,\n} from \"nightingale-types\";\nimport type { SlackConfig } from \"./SlackConfig.ts\";\nimport createBody from \"./createBody.ts\";\n\nexport type { SlackConfig } from \"./SlackConfig\";\n\nexport { default as createBody } from \"./createBody.ts\";\n\nconst createHandler =\n  (slackConfig: SlackConfig) =>\n  <T extends Metadata>(record: LogRecord<T>) => {\n    const body = createBody(record, slackConfig);\n\n    fetch(slackConfig.webhookUrl, {\n      method: \"POST\",\n      body: JSON.stringify(body),\n    }).catch((error: unknown) => {\n      console.error(error);\n    });\n  };\n\nexport class SlackHandler implements Handler {\n  minLevel: Level;\n\n  handle: Handle;\n\n  constructor(slackConfig: SlackConfig, minLevel: Level) {\n    this.minLevel = minLevel;\n    this.handle = createHandler(slackConfig);\n  }\n}\n"],"names":[],"mappings":";;AAKA,MAAM,iBAAA,GAA4C;AAAA,EAChD,CAAC,KAAA,CAAM,KAAK,GAAG,SAAA;AAAA,EACf,CAAC,KAAA,CAAM,KAAK,GAAG,SAAA;AAAA,EACf,CAAC,KAAA,CAAM,IAAI,GAAG,SAAA;AAAA,EACd,CAAC,KAAA,CAAM,IAAI,GAAG,SAAA;AAAA,EACd,CAAC,KAAA,CAAM,KAAK,GAAG,QAAA;AAAA,EACf,CAAC,KAAA,CAAM,QAAQ,GAAG,QAAA;AAAA,EAClB,CAAC,KAAA,CAAM,KAAK,GAAG,QAAA;AAAA,EACf,CAAC,KAAA,CAAM,SAAS,GAAG;AACrB,CAAA;AAEA,SAAwB,UAAA,CACtB,QACA,WAAA,EACyB;AACzB,EAAA,MAAM,QAAA,GAAW,iBAAA,CAAkB,MAAA,CAAO,MAAM,CAAA;AAChD,EAAA,MAAM,GAAA,GAAM,YAAA,CAAa,MAAA,CAAO,MAAM,CAAA;AAEtC,EAAA,OAAO;AAAA,IACL,SAAS,WAAA,CAAY,OAAA;AAAA,IACrB,UAAU,WAAA,CAAY,QAAA;AAAA,IACtB,UAAU,WAAA,CAAY,OAAA;AAAA,IACtB,YAAY,WAAA,CAAY,SAAA;AAAA,IACxB,WAAA,EAAa;AAAA,MACX;AAAA,QACE,QAAA,EAAU,IAAI,CAAC,CAAA;AAAA,QACf,OAAO,MAAA,CAAO,OAAA;AAAA,QACd,KAAA,EAAO,iBAAA,CAAkB,MAAA,CAAO,KAAK,CAAA;AAAA,QACrC,IAAA,EAAM,SAAS,CAAC,CAAA;AAAA,QAChB,SAAA,EAAW,CAAC,MAAM;AAAA;AACpB;AACF,GACF;AACF;;ACxBA,MAAM,aAAA,GACJ,CAAC,WAAA,KACD,CAAqB,MAAA,KAAyB;AAC5C,EAAA,MAAM,IAAA,GAAO,UAAA,CAAW,MAAA,EAAQ,WAAW,CAAA;AAE3C,EAAA,KAAA,CAAM,YAAY,UAAA,EAAY;AAAA,IAC5B,MAAA,EAAQ,MAAA;AAAA,IACR,IAAA,EAAM,IAAA,CAAK,SAAA,CAAU,IAAI;AAAA,GAC1B,CAAA,CAAE,KAAA,CAAM,CAAC,KAAA,KAAmB;AAC3B,IAAA,OAAA,CAAQ,MAAM,KAAK,CAAA;AAAA,EACrB,CAAC,CAAA;AACH,CAAA;AAEK,MAAM,YAAA,CAAgC;AAAA,EAC3C,QAAA;AAAA,EAEA,MAAA;AAAA,EAEA,WAAA,CAAY,aAA0B,QAAA,EAAiB;AACrD,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAA,CAAK,MAAA,GAAS,cAAc,WAAW,CAAA;AAAA,EACzC;AACF;;;;"}