{"version":3,"file":"index.cjs","names":["HttpTransport","httpConfig: HttpTransportConfig","payload: Record<string, any>"],"sources":["../src/BetterStackTransport.ts"],"sourcesContent":["import type { HttpTransportConfig } from \"@loglayer/transport-http\";\nimport { HttpTransport } from \"@loglayer/transport-http\";\n\n/**\n * Configuration options for the Better Stack transport.\n */\nexport interface BetterStackTransportConfig extends Omit<HttpTransportConfig, \"url\" | \"headers\" | \"payloadTemplate\"> {\n  /**\n   * Better Stack source token for authentication\n   */\n  sourceToken: string;\n  /**\n   * Better Stack ingestion host\n   */\n  url: string;\n  /**\n   * Whether to include timestamp in the log payload\n   * @default true\n   */\n  includeTimestamp?: boolean;\n  /**\n   * Custom field name for the timestamp\n   * @default \"dt\"\n   */\n  timestampField?: string;\n}\n\n/**\n * Better Stack transport for sending logs to Better Stack's log management platform.\n *\n * This transport extends the HTTP transport and configures it specifically for Better Stack's API.\n * It handles authentication, payload formatting, and batch sending according to Better Stack's requirements.\n *\n * Features:\n * - Automatic authentication with source token\n * - Proper payload formatting for Better Stack API\n * - Support for custom timestamps\n * - Batch sending with configurable size and timeout\n * - Error handling and retry logic\n * - Compression support\n */\nexport class BetterStackTransport extends HttpTransport {\n  /**\n   * Creates a new instance of BetterStackTransport.\n   *\n   * @param config - Configuration options for the transport\n   */\n  constructor(config: BetterStackTransportConfig) {\n    const url = config.url;\n    const includeTimestamp = config.includeTimestamp ?? true;\n    const timestampField = config.timestampField ?? \"dt\";\n\n    // Configure the HTTP transport with Better Stack specific settings\n    const httpConfig: HttpTransportConfig = {\n      ...config,\n      url: url,\n      headers: {\n        Authorization: `Bearer ${config.sourceToken}`,\n        \"Content-Type\": \"application/json\",\n      },\n      payloadTemplate: (data) => {\n        const payload: Record<string, any> = {\n          message: data.message,\n        };\n\n        // Add log level if available\n        if (data.logLevel) {\n          payload.level = data.logLevel;\n        }\n\n        // Add metadata if available\n        if (data.data) {\n          Object.assign(payload, data.data);\n        }\n\n        // Add timestamp if enabled\n        if (includeTimestamp) {\n          payload[timestampField] = new Date().toISOString();\n        }\n\n        return JSON.stringify(payload);\n      },\n      // Better Stack specific defaults\n      batchMode: \"array\",\n      batchContentType: \"application/json\",\n      enableBatchSend: config.enableBatchSend ?? true,\n      batchSize: config.batchSize ?? 100,\n      batchSendTimeout: config.batchSendTimeout ?? 5000,\n      compression: config.compression ?? false,\n      maxRetries: config.maxRetries ?? 3,\n      retryDelay: config.retryDelay ?? 1000,\n      respectRateLimit: config.respectRateLimit ?? true,\n      maxLogSize: config.maxLogSize ?? 1048576, // 1MB\n      maxPayloadSize: config.maxPayloadSize ?? 10485760, // 10MB (Better Stack limit)\n    };\n\n    super(httpConfig);\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,IAAa,uBAAb,cAA0CA,wCAAc;;;;;;CAMtD,YAAY,QAAoC;EAC9C,MAAM,MAAM,OAAO;EACnB,MAAM,mBAAmB,OAAO,oBAAoB;EACpD,MAAM,iBAAiB,OAAO,kBAAkB;EAGhD,MAAMC,aAAkC;GACtC,GAAG;GACE;GACL,SAAS;IACP,eAAe,UAAU,OAAO;IAChC,gBAAgB;IACjB;GACD,kBAAkB,SAAS;IACzB,MAAMC,UAA+B,EACnC,SAAS,KAAK,SACf;AAGD,QAAI,KAAK,SACP,SAAQ,QAAQ,KAAK;AAIvB,QAAI,KAAK,KACP,QAAO,OAAO,SAAS,KAAK,KAAK;AAInC,QAAI,iBACF,SAAQ,mCAAkB,IAAI,MAAM,EAAC,aAAa;AAGpD,WAAO,KAAK,UAAU,QAAQ;;GAGhC,WAAW;GACX,kBAAkB;GAClB,iBAAiB,OAAO,mBAAmB;GAC3C,WAAW,OAAO,aAAa;GAC/B,kBAAkB,OAAO,oBAAoB;GAC7C,aAAa,OAAO,eAAe;GACnC,YAAY,OAAO,cAAc;GACjC,YAAY,OAAO,cAAc;GACjC,kBAAkB,OAAO,oBAAoB;GAC7C,YAAY,OAAO,cAAc;GACjC,gBAAgB,OAAO,kBAAkB;GAC1C;AAED,QAAM,WAAW"}