{"version":3,"file":"W3CBaggagePropagator.cjs","names":["propagation","isTracingSuppressed","getKeyPairs","BAGGAGE_MAX_PER_NAME_VALUE_PAIRS","serializeKeyPairs","BAGGAGE_HEADER","parseBaggageHeaderString"],"sources":["../../../src/baggage/propagation/W3CBaggagePropagator.ts"],"sourcesContent":["/*\n * Copyright The OpenTelemetry Authors\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport type {\n  BaggageEntry,\n  Context,\n  TextMapGetter,\n  TextMapPropagator,\n  TextMapSetter,\n} from '@opentelemetry/api';\nimport { propagation } from '@opentelemetry/api';\n\nimport { isTracingSuppressed } from '../../trace/suppress-tracing';\nimport {\n  BAGGAGE_HEADER,\n  BAGGAGE_MAX_NAME_VALUE_PAIRS,\n  BAGGAGE_MAX_PER_NAME_VALUE_PAIRS,\n} from '../constants';\nimport {\n  getKeyPairs,\n  parseBaggageHeaderString,\n  serializeKeyPairs,\n} from '../utils';\n\n/**\n * Propagates {@link Baggage} through Context format propagation.\n *\n * Based on the Baggage specification:\n * https://w3c.github.io/baggage/\n */\nexport class W3CBaggagePropagator implements TextMapPropagator {\n  inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n    const baggage = propagation.getBaggage(context);\n    if (!baggage || isTracingSuppressed(context)) return;\n    const keyPairs = getKeyPairs(baggage)\n      .filter((pair: string) => {\n        return pair.length <= BAGGAGE_MAX_PER_NAME_VALUE_PAIRS;\n      })\n      .slice(0, BAGGAGE_MAX_NAME_VALUE_PAIRS);\n    const headerValue = serializeKeyPairs(keyPairs);\n    if (headerValue.length > 0) {\n      setter.set(carrier, BAGGAGE_HEADER, headerValue);\n    }\n  }\n\n  extract(context: Context, carrier: unknown, getter: TextMapGetter): Context {\n    const headerValue = getter.get(carrier, BAGGAGE_HEADER);\n    if (!headerValue) {\n      return context;\n    }\n\n    const baggage: Record<string, BaggageEntry> = {};\n    let count = 0;\n\n    let totalSize = 0;\n    if (Array.isArray(headerValue)) {\n      for (let i = 0; i < headerValue.length; i++) {\n        [count, totalSize] = parseBaggageHeaderString(\n          headerValue[i],\n          baggage,\n          count,\n          totalSize\n        );\n      }\n    } else {\n      [count] = parseBaggageHeaderString(\n        headerValue,\n        baggage,\n        count,\n        totalSize\n      );\n    }\n\n    if (count === 0) {\n      return context;\n    }\n\n    return propagation.setBaggage(context, propagation.createBaggage(baggage));\n  }\n\n  fields(): string[] {\n    return [BAGGAGE_HEADER];\n  }\n}\n"],"mappings":";;;;;;;;;;;AAgCA,IAAa,uBAAb,MAA+D;CAC7D,OAAO,SAAkB,SAAkB,QAA6B;EACtE,MAAM,UAAUA,mBAAAA,YAAY,WAAW,OAAO;EAC9C,IAAI,CAAC,WAAWC,yBAAAA,oBAAoB,OAAO,GAAG;EAC9C,MAAM,WAAWC,cAAAA,YAAY,OAAO,CAAC,CAClC,QAAQ,SAAiB;GACxB,OAAO,KAAK,UAAUC,kBAAAA;EACxB,CAAC,CAAC,CACD,MAAM,GAAA,GAA+B;EACxC,MAAM,cAAcC,cAAAA,kBAAkB,QAAQ;EAC9C,IAAI,YAAY,SAAS,GACvB,OAAO,IAAI,SAASC,kBAAAA,gBAAgB,WAAW;CAEnD;CAEA,QAAQ,SAAkB,SAAkB,QAAgC;EAC1E,MAAM,cAAc,OAAO,IAAI,SAASA,kBAAAA,cAAc;EACtD,IAAI,CAAC,aACH,OAAO;EAGT,MAAM,UAAwC,CAAC;EAC/C,IAAI,QAAQ;EAEZ,IAAI,YAAY;EAChB,IAAI,MAAM,QAAQ,WAAW,GAC3B,KAAK,IAAI,IAAI,GAAG,IAAI,YAAY,QAAQ,KACtC,CAAC,OAAO,aAAaC,cAAAA,yBACnB,YAAY,IACZ,SACA,OACA,SACF;OAGF,CAAC,SAASA,cAAAA,yBACR,aACA,SACA,OACA,SACF;EAGF,IAAI,UAAU,GACZ,OAAO;EAGT,OAAON,mBAAAA,YAAY,WAAW,SAASA,mBAAAA,YAAY,cAAc,OAAO,CAAC;CAC3E;CAEA,SAAmB;EACjB,OAAO,CAACK,kBAAAA,cAAc;CACxB;AACF"}