{"version":3,"file":"index.cjs","names":["trace","context"],"sources":["../src/index.ts"],"sourcesContent":["import type { LogLayerPlugin, LogLayerPluginParams } from \"@loglayer/plugin\";\nimport { context, isSpanContextValid, trace } from \"@opentelemetry/api\";\n\nexport interface OpenTelemetryPluginParams extends LogLayerPluginParams {\n  /**\n   * If specified, all trace fields will be nested under this key\n   */\n  traceFieldName?: string;\n  /**\n   * Field name for the trace ID. Defaults to 'trace_id'\n   */\n  traceIdFieldName?: string;\n  /**\n   * Field name for the span ID. Defaults to 'span_id'\n   */\n  spanIdFieldName?: string;\n  /**\n   * Field name for the trace flags. Defaults to 'trace_flags'\n   */\n  traceFlagsFieldName?: string;\n}\n\nexport function openTelemetryPlugin(config: OpenTelemetryPluginParams = {}): LogLayerPlugin {\n  const traceIdField = config.traceIdFieldName || \"trace_id\";\n  const spanIdField = config.spanIdFieldName || \"span_id\";\n  const traceFlagsField = config.traceFlagsFieldName || \"trace_flags\";\n\n  const addTraceContext = (data: Record<string, any> | undefined) => {\n    const span = trace.getSpan(context.active());\n    if (span) {\n      const spanContext = span.spanContext();\n      if (isSpanContextValid(spanContext)) {\n        const fields = {\n          [traceIdField]: spanContext.traceId,\n          [spanIdField]: spanContext.spanId,\n          [traceFlagsField]: `0${spanContext.traceFlags.toString(16)}`,\n        };\n\n        if (config.traceFieldName) {\n          const traceData = {\n            [config.traceFieldName]: fields,\n          };\n          if (data) {\n            return {\n              ...data,\n              ...traceData,\n            };\n          }\n          return traceData;\n        }\n\n        if (data) {\n          return {\n            ...data,\n            ...fields,\n          };\n        }\n        return fields;\n      }\n    }\n    return data || {};\n  };\n\n  return {\n    id: config.id,\n    disabled: config.disabled,\n    onBeforeDataOut: ({ data }) => addTraceContext(data),\n  };\n}\n"],"mappings":";;;AAsBA,SAAgB,oBAAoB,SAAoC,CAAC,GAAmB;CAC1F,MAAM,eAAe,OAAO,oBAAoB;CAChD,MAAM,cAAc,OAAO,mBAAmB;CAC9C,MAAM,kBAAkB,OAAO,uBAAuB;CAEtD,MAAM,mBAAmB,SAA0C;EACjE,MAAM,OAAOA,mBAAAA,MAAM,QAAQC,mBAAAA,QAAQ,OAAO,CAAC;EAC3C,IAAI,MAAM;GACR,MAAM,cAAc,KAAK,YAAY;GACrC,KAAA,GAAA,mBAAA,oBAAuB,WAAW,GAAG;IACnC,MAAM,SAAS;MACZ,eAAe,YAAY;MAC3B,cAAc,YAAY;MAC1B,kBAAkB,IAAI,YAAY,WAAW,SAAS,EAAE;IAC3D;IAEA,IAAI,OAAO,gBAAgB;KACzB,MAAM,YAAY,GACf,OAAO,iBAAiB,OAC3B;KACA,IAAI,MACF,OAAO;MACL,GAAG;MACH,GAAG;KACL;KAEF,OAAO;IACT;IAEA,IAAI,MACF,OAAO;KACL,GAAG;KACH,GAAG;IACL;IAEF,OAAO;GACT;EACF;EACA,OAAO,QAAQ,CAAC;CAClB;CAEA,OAAO;EACL,IAAI,OAAO;EACX,UAAU,OAAO;EACjB,kBAAkB,EAAE,WAAW,gBAAgB,IAAI;CACrD;AACF"}