TextMapPropagator.d.ts 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import { Context } from '../context/types';
  2. /**
  3. * Injects `Context` into and extracts it from carriers that travel
  4. * in-band across process boundaries. Encoding is expected to conform to the
  5. * HTTP Header Field semantics. Values are often encoded as RPC/HTTP request
  6. * headers.
  7. *
  8. * The carrier of propagated data on both the client (injector) and server
  9. * (extractor) side is usually an object such as http headers. Propagation is
  10. * usually implemented via library-specific request interceptors, where the
  11. * client-side injects values and the server-side extracts them.
  12. */
  13. export interface TextMapPropagator<Carrier = any> {
  14. /**
  15. * Injects values from a given `Context` into a carrier.
  16. *
  17. * OpenTelemetry defines a common set of format values (TextMapPropagator),
  18. * and each has an expected `carrier` type.
  19. *
  20. * @param context the Context from which to extract values to transmit over
  21. * the wire.
  22. * @param carrier the carrier of propagation fields, such as http request
  23. * headers.
  24. * @param setter an optional {@link TextMapSetter}. If undefined, values will be
  25. * set by direct object assignment.
  26. */
  27. inject(context: Context, carrier: Carrier, setter: TextMapSetter<Carrier>): void;
  28. /**
  29. * Given a `Context` and a carrier, extract context values from a
  30. * carrier and return a new context, created from the old context, with the
  31. * extracted values.
  32. *
  33. * @param context the Context from which to extract values to transmit over
  34. * the wire.
  35. * @param carrier the carrier of propagation fields, such as http request
  36. * headers.
  37. * @param getter an optional {@link TextMapGetter}. If undefined, keys will be all
  38. * own properties, and keys will be accessed by direct object access.
  39. */
  40. extract(context: Context, carrier: Carrier, getter: TextMapGetter<Carrier>): Context;
  41. /**
  42. * Return a list of all fields which may be used by the propagator.
  43. */
  44. fields(): string[];
  45. }
  46. /**
  47. * A setter is specified by the caller to define a specific method
  48. * to set key/value pairs on the carrier within a propagator.
  49. */
  50. export interface TextMapSetter<Carrier = any> {
  51. /**
  52. * Callback used to set a key/value pair on an object.
  53. *
  54. * Should be called by the propagator each time a key/value pair
  55. * should be set, and should set that key/value pair on the propagator.
  56. *
  57. * @param carrier object or class which carries key/value pairs
  58. * @param key string key to modify
  59. * @param value value to be set to the key on the carrier
  60. */
  61. set(carrier: Carrier, key: string, value: string): void;
  62. }
  63. /**
  64. * A getter is specified by the caller to define a specific method
  65. * to get the value of a key from a carrier.
  66. */
  67. export interface TextMapGetter<Carrier = any> {
  68. /**
  69. * Get a list of all keys available on the carrier.
  70. *
  71. * @param carrier
  72. */
  73. keys(carrier: Carrier): string[];
  74. /**
  75. * Get the value of a specific key from the carrier.
  76. *
  77. * @param carrier
  78. * @param key
  79. */
  80. get(carrier: Carrier, key: string): undefined | string | string[];
  81. }
  82. export declare const defaultTextMapGetter: TextMapGetter;
  83. export declare const defaultTextMapSetter: TextMapSetter;
  84. //# sourceMappingURL=TextMapPropagator.d.ts.map