{"version":3,"file":"index.cjs","sources":["../../../src/index.ts"],"sourcesContent":["import Transport, { TransportStreamOptions } from 'winston-transport';\n\nimport { AxiomWithoutBatching } from '@axiomhq/js';\nimport type { ClientOptions } from '@axiomhq/js';\n\nconst Version = 'AXIOM_VERSION';\nconst AxiomClient = `axiom-winston/${Version}`;\n\nexport interface WinstonOptions extends TransportStreamOptions, ClientOptions {\n  dataset?: string;\n}\n\nexport class WinstonTransport extends Transport {\n  client: AxiomWithoutBatching;\n  dataset: string;\n  batch: object[] = [];\n  batchCallback: (err: Error | null) => void = () => {};\n  batchTimeoutId?: NodeJS.Timeout;\n\n  constructor(opts: WinstonOptions) {\n    super(opts);\n    const clientOptions: ClientOptions = {\n      token: opts.token,\n      orgId: opts.orgId,\n      url: opts.url,\n      edge: opts.edge,\n      edgeUrl: opts.edgeUrl,\n      axiomClient: appendAxiomClient(AxiomClient, opts.axiomClient),\n      onError: opts.onError,\n      fetch: opts.fetch,\n    };\n    this.client = new AxiomWithoutBatching(clientOptions);\n    this.dataset = opts?.dataset || process.env.AXIOM_DATASET || '';\n  }\n\n  log(info: any, callback: () => void) {\n    this.request(info, (err) => {\n      if (err) {\n        this.emit('error', err);\n      } else {\n        this.emit('logged', info);\n      }\n    });\n\n    if (callback) {\n      setImmediate(callback);\n    }\n  }\n\n  private request(info: any, callback: (err: Error | null) => void) {\n    if (!info._time) {\n      info._time = new Date().toISOString();\n    }\n    this.batch.push(info);\n\n    if (this.batch.length == 1) {\n      this.batchCallback = callback;\n      this.batchTimeoutId = setTimeout(() => {\n        this.flush();\n      }, 1000);\n      callback(null);\n    } else if (this.batch.length >= 1000) {\n      this.flush(callback);\n    }\n  }\n\n  flush(callback: (err: Error | null) => void = () => {}) {\n    const batchCopy = this.batch.slice();\n\n    clearTimeout(this.batchTimeoutId);\n    this.batchTimeoutId = undefined;\n    this.batchCallback = () => {};\n    this.batch = [];\n\n    this.client\n      .ingest(this.dataset, batchCopy)\n      .then((_res: any) => callback(null))\n      .catch(callback);\n  }\n}\n\nfunction appendAxiomClient(baseAxiomClient: string, axiomClient?: string): string {\n  const trimmedAxiomClient = axiomClient?.trim();\n  if (!trimmedAxiomClient) {\n    return baseAxiomClient;\n  }\n\n  return `${baseAxiomClient} ${trimmedAxiomClient}`;\n}\n"],"names":["AxiomWithoutBatching"],"mappings":"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"}