@uphold/opentelemetry-mutable-baggage 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ export { W3CMutableBaggagePropagator } from './w3c-mutable-baggage-propagator';
2
+ export { MutableBaggageImpl } from './mutable-baggage-impl';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MutableBaggageImpl = exports.W3CMutableBaggagePropagator = void 0;
4
+ var w3c_mutable_baggage_propagator_1 = require("./w3c-mutable-baggage-propagator");
5
+ Object.defineProperty(exports, "W3CMutableBaggagePropagator", { enumerable: true, get: function () { return w3c_mutable_baggage_propagator_1.W3CMutableBaggagePropagator; } });
6
+ var mutable_baggage_impl_1 = require("./mutable-baggage-impl");
7
+ Object.defineProperty(exports, "MutableBaggageImpl", { enumerable: true, get: function () { return mutable_baggage_impl_1.MutableBaggageImpl; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAAA,mFAA+E;AAAtE,6IAAA,2BAA2B,OAAA;AACpC,+DAA4D;AAAnD,0HAAA,kBAAkB,OAAA","sourcesContent":["export { W3CMutableBaggagePropagator } from './w3c-mutable-baggage-propagator';\nexport { MutableBaggageImpl } from './mutable-baggage-impl';\n"]}
@@ -0,0 +1,12 @@
1
+ import { Baggage, BaggageEntry } from '@opentelemetry/api';
2
+ export declare class MutableBaggageImpl implements Baggage {
3
+ private entries;
4
+ constructor(entries?: Map<string, BaggageEntry>);
5
+ getEntry(key: string): BaggageEntry | undefined;
6
+ getAllEntries(): [string, BaggageEntry][];
7
+ setEntry(key: string, entry: BaggageEntry): MutableBaggageImpl;
8
+ removeEntry(key: string): MutableBaggageImpl;
9
+ removeEntries(...keys: string[]): MutableBaggageImpl;
10
+ clear(): MutableBaggageImpl;
11
+ }
12
+ //# sourceMappingURL=mutable-baggage-impl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutable-baggage-impl.d.ts","sourceRoot":"","sources":["../src/mutable-baggage-impl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE3D,qBAAa,kBAAmB,YAAW,OAAO;IAChD,OAAO,CAAC,OAAO,CAA4B;gBAE/B,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC;IAI/C,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAU/C,aAAa,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EAAE;IAIzC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,kBAAkB;IAM9D,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;IAM5C,aAAa,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,kBAAkB;IAQpD,KAAK,IAAI,kBAAkB;CAK5B"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MutableBaggageImpl = void 0;
4
+ class MutableBaggageImpl {
5
+ entries;
6
+ constructor(entries) {
7
+ this.entries = entries ? new Map(entries) : new Map();
8
+ }
9
+ getEntry(key) {
10
+ const entry = this.entries.get(key);
11
+ if (!entry) {
12
+ return undefined;
13
+ }
14
+ return Object.assign({}, entry);
15
+ }
16
+ getAllEntries() {
17
+ return Array.from(this.entries.entries());
18
+ }
19
+ setEntry(key, entry) {
20
+ this.entries.set(key, entry);
21
+ return this;
22
+ }
23
+ removeEntry(key) {
24
+ this.entries.delete(key);
25
+ return this;
26
+ }
27
+ removeEntries(...keys) {
28
+ for (const key of keys) {
29
+ this.entries.delete(key);
30
+ }
31
+ return this;
32
+ }
33
+ clear() {
34
+ this.entries.clear();
35
+ return this;
36
+ }
37
+ }
38
+ exports.MutableBaggageImpl = MutableBaggageImpl;
39
+ //# sourceMappingURL=mutable-baggage-impl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutable-baggage-impl.js","sourceRoot":"","sources":["../src/mutable-baggage-impl.ts"],"names":[],"mappings":";;;AAEA,MAAa,kBAAkB;IACrB,OAAO,CAA4B;IAE3C,YAAY,OAAmC;QAC7C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;IACxD,CAAC;IAED,QAAQ,CAAC,GAAW;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IAED,aAAa;QACX,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,QAAQ,CAAC,GAAW,EAAE,KAAmB;QACvC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAE7B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,GAAG,IAAc;QAC7B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAErB,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA9CD,gDA8CC","sourcesContent":["import { Baggage, BaggageEntry } from '@opentelemetry/api';\n\nexport class MutableBaggageImpl implements Baggage {\n private entries: Map<string, BaggageEntry>;\n\n constructor(entries?: Map<string, BaggageEntry>) {\n this.entries = entries ? new Map(entries) : new Map();\n }\n\n getEntry(key: string): BaggageEntry | undefined {\n const entry = this.entries.get(key);\n\n if (!entry) {\n return undefined;\n }\n\n return Object.assign({}, entry);\n }\n\n getAllEntries(): [string, BaggageEntry][] {\n return Array.from(this.entries.entries());\n }\n\n setEntry(key: string, entry: BaggageEntry): MutableBaggageImpl {\n this.entries.set(key, entry);\n\n return this;\n }\n\n removeEntry(key: string): MutableBaggageImpl {\n this.entries.delete(key);\n\n return this;\n }\n\n removeEntries(...keys: string[]): MutableBaggageImpl {\n for (const key of keys) {\n this.entries.delete(key);\n }\n\n return this;\n }\n\n clear(): MutableBaggageImpl {\n this.entries.clear();\n\n return this;\n }\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import { Context, TextMapGetter, TextMapPropagator, TextMapSetter } from '@opentelemetry/api';
2
+ export declare class W3CMutableBaggagePropagator implements TextMapPropagator {
3
+ inject(context: Context, carrier: unknown, setter: TextMapSetter): void;
4
+ extract(context: Context, carrier: unknown, getter: TextMapGetter): Context;
5
+ fields(): string[];
6
+ }
7
+ //# sourceMappingURL=w3c-mutable-baggage-propagator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"w3c-mutable-baggage-propagator.d.ts","sourceRoot":"","sources":["../src/w3c-mutable-baggage-propagator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,aAAa,EAEd,MAAM,oBAAoB,CAAC;AAS5B,qBAAa,2BAA4B,YAAW,iBAAiB;IACnE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAmBvE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO;IA0B3E,MAAM,IAAI,MAAM,EAAE;CAGnB"}
@@ -0,0 +1,49 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.W3CMutableBaggagePropagator = void 0;
4
+ const api_1 = require("@opentelemetry/api");
5
+ const mutable_baggage_impl_1 = require("./mutable-baggage-impl");
6
+ const core_1 = require("@opentelemetry/core");
7
+ const BAGGAGE_HEADER = 'baggage';
8
+ const BAGGAGE_ITEMS_SEPARATOR = ',';
9
+ const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;
10
+ const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;
11
+ class W3CMutableBaggagePropagator {
12
+ inject(context, carrier, setter) {
13
+ const baggage = api_1.propagation.getBaggage(context);
14
+ if (!baggage || (0, core_1.isTracingSuppressed)(context)) {
15
+ return;
16
+ }
17
+ const keyPairs = core_1.baggageUtils
18
+ .getKeyPairs(baggage)
19
+ .filter(pair => pair.length <= BAGGAGE_MAX_PER_NAME_VALUE_PAIRS)
20
+ .slice(0, BAGGAGE_MAX_NAME_VALUE_PAIRS);
21
+ const headerValue = core_1.baggageUtils.serializeKeyPairs(keyPairs);
22
+ if (headerValue.length > 0) {
23
+ setter.set(carrier, BAGGAGE_HEADER, headerValue);
24
+ }
25
+ }
26
+ extract(context, carrier, getter) {
27
+ const headerValue = getter.get(carrier, BAGGAGE_HEADER);
28
+ const baggageString = Array.isArray(headerValue) ? headerValue.join(BAGGAGE_ITEMS_SEPARATOR) : headerValue;
29
+ const entries = {};
30
+ const pairs = (baggageString ?? '').split(BAGGAGE_ITEMS_SEPARATOR);
31
+ pairs.forEach(entry => {
32
+ const keyPair = core_1.baggageUtils.parsePairKeyValue(entry);
33
+ if (keyPair) {
34
+ const baggageEntry = { value: keyPair.value };
35
+ if (keyPair.metadata) {
36
+ baggageEntry.metadata = keyPair.metadata;
37
+ }
38
+ entries[keyPair.key] = baggageEntry;
39
+ }
40
+ });
41
+ const baggage = new mutable_baggage_impl_1.MutableBaggageImpl(new Map(Object.entries(entries)));
42
+ return api_1.propagation.setBaggage(context, baggage);
43
+ }
44
+ fields() {
45
+ return [BAGGAGE_HEADER];
46
+ }
47
+ }
48
+ exports.W3CMutableBaggagePropagator = W3CMutableBaggagePropagator;
49
+ //# sourceMappingURL=w3c-mutable-baggage-propagator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"w3c-mutable-baggage-propagator.js","sourceRoot":"","sources":["../src/w3c-mutable-baggage-propagator.ts"],"names":[],"mappings":";;;AAAA,4CAO4B;AAC5B,iEAA4D;AAC5D,8CAAwE;AAExE,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,MAAM,uBAAuB,GAAG,GAAG,CAAC;AACpC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AACzC,MAAM,gCAAgC,GAAG,IAAI,CAAC;AAE9C,MAAa,2BAA2B;IACtC,MAAM,CAAC,OAAgB,EAAE,OAAgB,EAAE,MAAqB;QAC9D,MAAM,OAAO,GAAG,iBAAW,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAEhD,IAAI,CAAC,OAAO,IAAI,IAAA,0BAAmB,EAAC,OAAO,CAAC,EAAE,CAAC;YAC7C,OAAO;QACT,CAAC;QAED,MAAM,QAAQ,GAAG,mBAAY;aAC1B,WAAW,CAAC,OAAO,CAAC;aACpB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,gCAAgC,CAAC;aAC/D,KAAK,CAAC,CAAC,EAAE,4BAA4B,CAAC,CAAC;QAE1C,MAAM,WAAW,GAAG,mBAAY,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QAE7D,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,OAAgB,EAAE,OAAgB,EAAE,MAAqB;QAC/D,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAE3G,MAAM,OAAO,GAAG,EAAkC,CAAC;QACnD,MAAM,KAAK,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAEnE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACpB,MAAM,OAAO,GAAG,mBAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAEtD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,YAAY,GAAiB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;gBAE5D,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACrB,YAAY,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;gBAC3C,CAAC;gBAED,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;YACtC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,IAAI,yCAAkB,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAEzE,OAAO,iBAAW,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED,MAAM;QACJ,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1B,CAAC;CACF;AAjDD,kEAiDC","sourcesContent":["import {\n BaggageEntry,\n Context,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n propagation\n} from '@opentelemetry/api';\nimport { MutableBaggageImpl } from './mutable-baggage-impl';\nimport { baggageUtils, isTracingSuppressed } from '@opentelemetry/core';\n\nconst BAGGAGE_HEADER = 'baggage';\nconst BAGGAGE_ITEMS_SEPARATOR = ',';\nconst BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;\nconst BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;\n\nexport class W3CMutableBaggagePropagator implements TextMapPropagator {\n inject(context: Context, carrier: unknown, setter: TextMapSetter): void {\n const baggage = propagation.getBaggage(context);\n\n if (!baggage || isTracingSuppressed(context)) {\n return;\n }\n\n const keyPairs = baggageUtils\n .getKeyPairs(baggage)\n .filter(pair => pair.length <= BAGGAGE_MAX_PER_NAME_VALUE_PAIRS)\n .slice(0, BAGGAGE_MAX_NAME_VALUE_PAIRS);\n\n const headerValue = baggageUtils.serializeKeyPairs(keyPairs);\n\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 const baggageString = Array.isArray(headerValue) ? headerValue.join(BAGGAGE_ITEMS_SEPARATOR) : headerValue;\n\n const entries = {} as Record<string, BaggageEntry>;\n const pairs = (baggageString ?? '').split(BAGGAGE_ITEMS_SEPARATOR);\n\n pairs.forEach(entry => {\n const keyPair = baggageUtils.parsePairKeyValue(entry);\n\n if (keyPair) {\n const baggageEntry: BaggageEntry = { value: keyPair.value };\n\n if (keyPair.metadata) {\n baggageEntry.metadata = keyPair.metadata;\n }\n\n entries[keyPair.key] = baggageEntry;\n }\n });\n\n const baggage = new MutableBaggageImpl(new Map(Object.entries(entries)));\n\n return propagation.setBaggage(context, baggage);\n }\n\n fields(): string[] {\n return [BAGGAGE_HEADER];\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uphold/opentelemetry-mutable-baggage",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "Package that allows an OpenTelemetry baggage to be mutable.",
5
5
  "main": "dist/index.js",
6
6
  "files": [
@@ -30,7 +30,7 @@
30
30
  "build": "tsc",
31
31
  "lint": "eslint --ext .ts,.js .",
32
32
  "postlint": "tsc --noEmit",
33
- "release": "release-it",
33
+ "release": "release-it --config ../../.release-it.js",
34
34
  "test": "vitest"
35
35
  },
36
36
  "lint-staged": {