@uphold/opentelemetry-mutable-baggage 1.0.0 → 2.0.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.
- package/dist/constants.d.ts +11 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +14 -0
- package/dist/constants.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/mutable-baggage-impl.d.ts +12 -0
- package/dist/mutable-baggage-impl.d.ts.map +1 -0
- package/dist/mutable-baggage-impl.js +39 -0
- package/dist/mutable-baggage-impl.js.map +1 -0
- package/dist/utils.d.ts +15 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +62 -0
- package/dist/utils.js.map +1 -0
- package/dist/w3c-mutable-baggage-propagator.d.ts +7 -0
- package/dist/w3c-mutable-baggage-propagator.d.ts.map +1 -0
- package/dist/w3c-mutable-baggage-propagator.js +46 -0
- package/dist/w3c-mutable-baggage-propagator.js.map +1 -0
- package/package.json +7 -7
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was copied from '@opentelemetry/api' since it does export these utility functions since v2.
|
|
3
|
+
*/
|
|
4
|
+
export declare const BAGGAGE_KEY_PAIR_SEPARATOR = "=";
|
|
5
|
+
export declare const BAGGAGE_PROPERTIES_SEPARATOR = ";";
|
|
6
|
+
export declare const BAGGAGE_ITEMS_SEPARATOR = ",";
|
|
7
|
+
export declare const BAGGAGE_HEADER = "baggage";
|
|
8
|
+
export declare const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;
|
|
9
|
+
export declare const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;
|
|
10
|
+
export declare const BAGGAGE_MAX_TOTAL_LENGTH = 8192;
|
|
11
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,eAAO,MAAM,uBAAuB,MAAM,CAAC;AAC3C,eAAO,MAAM,cAAc,YAAY,CAAC;AACxC,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,eAAO,MAAM,gCAAgC,OAAO,CAAC;AACrD,eAAO,MAAM,wBAAwB,OAAO,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* This file was copied from '@opentelemetry/api' since it does export these utility functions since v2.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.BAGGAGE_MAX_TOTAL_LENGTH = exports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = exports.BAGGAGE_MAX_NAME_VALUE_PAIRS = exports.BAGGAGE_HEADER = exports.BAGGAGE_ITEMS_SEPARATOR = exports.BAGGAGE_PROPERTIES_SEPARATOR = exports.BAGGAGE_KEY_PAIR_SEPARATOR = void 0;
|
|
7
|
+
exports.BAGGAGE_KEY_PAIR_SEPARATOR = '=';
|
|
8
|
+
exports.BAGGAGE_PROPERTIES_SEPARATOR = ';';
|
|
9
|
+
exports.BAGGAGE_ITEMS_SEPARATOR = ',';
|
|
10
|
+
exports.BAGGAGE_HEADER = 'baggage';
|
|
11
|
+
exports.BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;
|
|
12
|
+
exports.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;
|
|
13
|
+
exports.BAGGAGE_MAX_TOTAL_LENGTH = 8192;
|
|
14
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEU,QAAA,0BAA0B,GAAG,GAAG,CAAC;AACjC,QAAA,4BAA4B,GAAG,GAAG,CAAC;AACnC,QAAA,uBAAuB,GAAG,GAAG,CAAC;AAC9B,QAAA,cAAc,GAAG,SAAS,CAAC;AAC3B,QAAA,4BAA4B,GAAG,GAAG,CAAC;AACnC,QAAA,gCAAgC,GAAG,IAAI,CAAC;AACxC,QAAA,wBAAwB,GAAG,IAAI,CAAC","sourcesContent":["/**\n * This file was copied from '@opentelemetry/api' since it does export these utility functions since v2.\n */\n\nexport const BAGGAGE_KEY_PAIR_SEPARATOR = '=';\nexport const BAGGAGE_PROPERTIES_SEPARATOR = ';';\nexport const BAGGAGE_ITEMS_SEPARATOR = ',';\nexport const BAGGAGE_HEADER = 'baggage';\nexport const BAGGAGE_MAX_NAME_VALUE_PAIRS = 180;\nexport const BAGGAGE_MAX_PER_NAME_VALUE_PAIRS = 4096;\nexport const BAGGAGE_MAX_TOTAL_LENGTH = 8192;\n"]}
|
package/dist/index.d.ts
ADDED
|
@@ -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"]}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file was copied from '@opentelemetry/api' since it does export these utility functions since v2.
|
|
3
|
+
*/
|
|
4
|
+
import { Baggage, BaggageEntryMetadata } from '@opentelemetry/api';
|
|
5
|
+
type ParsedBaggageKeyValue = {
|
|
6
|
+
key: string;
|
|
7
|
+
value: string;
|
|
8
|
+
metadata: BaggageEntryMetadata | undefined;
|
|
9
|
+
};
|
|
10
|
+
export declare function serializeKeyPairs(keyPairs: string[]): string;
|
|
11
|
+
export declare function getKeyPairs(baggage: Baggage): string[];
|
|
12
|
+
export declare function parsePairKeyValue(entry: string): ParsedBaggageKeyValue | undefined;
|
|
13
|
+
export declare function parseKeyPairsIntoRecord(value?: string): Record<string, string>;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAkC,MAAM,oBAAoB,CAAC;AAEnG,KAAK,qBAAqB,GAAG;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,oBAAoB,GAAG,SAAS,CAAC;CAC5C,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAM5D;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,EAAE,CAYtD;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CA4BlF;AAED,wBAAgB,uBAAuB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAc9E"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* This file was copied from '@opentelemetry/api' since it does export these utility functions since v2.
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.serializeKeyPairs = serializeKeyPairs;
|
|
7
|
+
exports.getKeyPairs = getKeyPairs;
|
|
8
|
+
exports.parsePairKeyValue = parsePairKeyValue;
|
|
9
|
+
exports.parseKeyPairsIntoRecord = parseKeyPairsIntoRecord;
|
|
10
|
+
const constants_1 = require("./constants");
|
|
11
|
+
const api_1 = require("@opentelemetry/api");
|
|
12
|
+
function serializeKeyPairs(keyPairs) {
|
|
13
|
+
return keyPairs.reduce((hValue, current) => {
|
|
14
|
+
const value = `${hValue}${hValue !== '' ? constants_1.BAGGAGE_ITEMS_SEPARATOR : ''}${current}`;
|
|
15
|
+
return value.length > constants_1.BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;
|
|
16
|
+
}, '');
|
|
17
|
+
}
|
|
18
|
+
function getKeyPairs(baggage) {
|
|
19
|
+
return baggage.getAllEntries().map(([key, value]) => {
|
|
20
|
+
let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;
|
|
21
|
+
// include opaque metadata if provided
|
|
22
|
+
// NOTE: we intentionally don't URI-encode the metadata - that responsibility falls on the metadata implementation
|
|
23
|
+
if (value.metadata !== undefined) {
|
|
24
|
+
entry += constants_1.BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString();
|
|
25
|
+
}
|
|
26
|
+
return entry;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
function parsePairKeyValue(entry) {
|
|
30
|
+
const valueProps = entry.split(constants_1.BAGGAGE_PROPERTIES_SEPARATOR);
|
|
31
|
+
if (valueProps.length <= 0) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const keyPairPart = valueProps.shift();
|
|
35
|
+
if (!keyPairPart) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const separatorIndex = keyPairPart.indexOf(constants_1.BAGGAGE_KEY_PAIR_SEPARATOR);
|
|
39
|
+
if (separatorIndex <= 0) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const key = decodeURIComponent(keyPairPart.substring(0, separatorIndex).trim());
|
|
43
|
+
const value = decodeURIComponent(keyPairPart.substring(separatorIndex + 1).trim());
|
|
44
|
+
let metadata;
|
|
45
|
+
if (valueProps.length > 0) {
|
|
46
|
+
metadata = (0, api_1.baggageEntryMetadataFromString)(valueProps.join(constants_1.BAGGAGE_PROPERTIES_SEPARATOR));
|
|
47
|
+
}
|
|
48
|
+
return { key, metadata, value };
|
|
49
|
+
}
|
|
50
|
+
function parseKeyPairsIntoRecord(value) {
|
|
51
|
+
const result = {};
|
|
52
|
+
if (typeof value === 'string' && value.length > 0) {
|
|
53
|
+
value.split(constants_1.BAGGAGE_ITEMS_SEPARATOR).forEach(entry => {
|
|
54
|
+
const keyPair = parsePairKeyValue(entry);
|
|
55
|
+
if (keyPair !== undefined && keyPair.value.length > 0) {
|
|
56
|
+
result[keyPair.key] = keyPair.value;
|
|
57
|
+
}
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * This file was copied from '@opentelemetry/api' since it does export these utility functions since v2.\n */\n\nimport {\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_KEY_PAIR_SEPARATOR,\n BAGGAGE_MAX_TOTAL_LENGTH,\n BAGGAGE_PROPERTIES_SEPARATOR\n} from './constants';\nimport { Baggage, BaggageEntryMetadata, baggageEntryMetadataFromString } from '@opentelemetry/api';\n\ntype ParsedBaggageKeyValue = {\n key: string;\n value: string;\n metadata: BaggageEntryMetadata | undefined;\n};\n\nexport function serializeKeyPairs(keyPairs: string[]): string {\n return keyPairs.reduce((hValue: string, current: string) => {\n const value = `${hValue}${hValue !== '' ? BAGGAGE_ITEMS_SEPARATOR : ''}${current}`;\n\n return value.length > BAGGAGE_MAX_TOTAL_LENGTH ? hValue : value;\n }, '');\n}\n\nexport function getKeyPairs(baggage: Baggage): string[] {\n return baggage.getAllEntries().map(([key, value]) => {\n let entry = `${encodeURIComponent(key)}=${encodeURIComponent(value.value)}`;\n\n // include opaque metadata if provided\n // NOTE: we intentionally don't URI-encode the metadata - that responsibility falls on the metadata implementation\n if (value.metadata !== undefined) {\n entry += BAGGAGE_PROPERTIES_SEPARATOR + value.metadata.toString();\n }\n\n return entry;\n });\n}\n\nexport function parsePairKeyValue(entry: string): ParsedBaggageKeyValue | undefined {\n const valueProps = entry.split(BAGGAGE_PROPERTIES_SEPARATOR);\n\n if (valueProps.length <= 0) {\n return;\n }\n\n const keyPairPart = valueProps.shift();\n\n if (!keyPairPart) {\n return;\n }\n\n const separatorIndex = keyPairPart.indexOf(BAGGAGE_KEY_PAIR_SEPARATOR);\n\n if (separatorIndex <= 0) {\n return;\n }\n\n const key = decodeURIComponent(keyPairPart.substring(0, separatorIndex).trim());\n const value = decodeURIComponent(keyPairPart.substring(separatorIndex + 1).trim());\n let metadata;\n\n if (valueProps.length > 0) {\n metadata = baggageEntryMetadataFromString(valueProps.join(BAGGAGE_PROPERTIES_SEPARATOR));\n }\n\n return { key, metadata, value };\n}\n\nexport function parseKeyPairsIntoRecord(value?: string): Record<string, string> {\n const result: Record<string, string> = {};\n\n if (typeof value === 'string' && value.length > 0) {\n value.split(BAGGAGE_ITEMS_SEPARATOR).forEach(entry => {\n const keyPair = parsePairKeyValue(entry);\n\n if (keyPair !== undefined && keyPair.value.length > 0) {\n result[keyPair.key] = keyPair.value;\n }\n });\n }\n\n return result;\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":"AAMA,OAAO,EAEL,OAAO,EACP,aAAa,EACb,iBAAiB,EACjB,aAAa,EAEd,MAAM,oBAAoB,CAAC;AAK5B,qBAAa,2BAA4B,YAAW,iBAAiB;IACnE,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI;IAiBvE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO;IA0B3E,MAAM,IAAI,MAAM,EAAE;CAGnB"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.W3CMutableBaggagePropagator = void 0;
|
|
4
|
+
const constants_1 = require("./constants");
|
|
5
|
+
const api_1 = require("@opentelemetry/api");
|
|
6
|
+
const mutable_baggage_impl_1 = require("./mutable-baggage-impl");
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
const core_1 = require("@opentelemetry/core");
|
|
9
|
+
class W3CMutableBaggagePropagator {
|
|
10
|
+
inject(context, carrier, setter) {
|
|
11
|
+
const baggage = api_1.propagation.getBaggage(context);
|
|
12
|
+
if (!baggage || (0, core_1.isTracingSuppressed)(context)) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
const keyPairs = (0, utils_1.getKeyPairs)(baggage)
|
|
16
|
+
.filter((pair) => pair.length <= constants_1.BAGGAGE_MAX_PER_NAME_VALUE_PAIRS)
|
|
17
|
+
.slice(0, constants_1.BAGGAGE_MAX_NAME_VALUE_PAIRS);
|
|
18
|
+
const headerValue = (0, utils_1.serializeKeyPairs)(keyPairs);
|
|
19
|
+
if (headerValue.length > 0) {
|
|
20
|
+
setter.set(carrier, constants_1.BAGGAGE_HEADER, headerValue);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
extract(context, carrier, getter) {
|
|
24
|
+
const headerValue = getter.get(carrier, constants_1.BAGGAGE_HEADER);
|
|
25
|
+
const baggageString = Array.isArray(headerValue) ? headerValue.join(constants_1.BAGGAGE_ITEMS_SEPARATOR) : headerValue;
|
|
26
|
+
const entries = {};
|
|
27
|
+
const pairs = (baggageString ?? '').split(constants_1.BAGGAGE_ITEMS_SEPARATOR);
|
|
28
|
+
pairs.forEach(entry => {
|
|
29
|
+
const keyPair = (0, utils_1.parsePairKeyValue)(entry);
|
|
30
|
+
if (keyPair) {
|
|
31
|
+
const baggageEntry = { value: keyPair.value };
|
|
32
|
+
if (keyPair.metadata) {
|
|
33
|
+
baggageEntry.metadata = keyPair.metadata;
|
|
34
|
+
}
|
|
35
|
+
entries[keyPair.key] = baggageEntry;
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
const baggage = new mutable_baggage_impl_1.MutableBaggageImpl(new Map(Object.entries(entries)));
|
|
39
|
+
return api_1.propagation.setBaggage(context, baggage);
|
|
40
|
+
}
|
|
41
|
+
fields() {
|
|
42
|
+
return [constants_1.BAGGAGE_HEADER];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
exports.W3CMutableBaggagePropagator = W3CMutableBaggagePropagator;
|
|
46
|
+
//# 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,2CAKqB;AACrB,4CAO4B;AAC5B,iEAA4D;AAC5D,mCAA4E;AAC5E,8CAA0D;AAE1D,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,IAAA,mBAAW,EAAC,OAAO,CAAC;aAClC,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,IAAI,4CAAgC,CAAC;aACzE,KAAK,CAAC,CAAC,EAAE,wCAA4B,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAA,yBAAiB,EAAC,QAAQ,CAAC,CAAC;QAEhD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,0BAAc,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,0BAAc,CAAC,CAAC;QACxD,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,mCAAuB,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAE3G,MAAM,OAAO,GAAiC,EAAE,CAAC;QACjD,MAAM,KAAK,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,mCAAuB,CAAC,CAAC;QAEnE,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACpB,MAAM,OAAO,GAAG,IAAA,yBAAiB,EAAC,KAAK,CAAC,CAAC;YAEzC,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,0BAAc,CAAC,CAAC;IAC1B,CAAC;CACF;AA/CD,kEA+CC","sourcesContent":["import {\n BAGGAGE_HEADER,\n BAGGAGE_ITEMS_SEPARATOR,\n BAGGAGE_MAX_NAME_VALUE_PAIRS,\n BAGGAGE_MAX_PER_NAME_VALUE_PAIRS\n} from './constants';\nimport {\n BaggageEntry,\n Context,\n TextMapGetter,\n TextMapPropagator,\n TextMapSetter,\n propagation\n} from '@opentelemetry/api';\nimport { MutableBaggageImpl } from './mutable-baggage-impl';\nimport { getKeyPairs, parsePairKeyValue, serializeKeyPairs } from './utils';\nimport { isTracingSuppressed } from '@opentelemetry/core';\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 = getKeyPairs(baggage)\n .filter((pair: string) => pair.length <= BAGGAGE_MAX_PER_NAME_VALUE_PAIRS)\n .slice(0, BAGGAGE_MAX_NAME_VALUE_PAIRS);\n const headerValue = 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: Record<string, BaggageEntry> = {};\n const pairs = (baggageString ?? '').split(BAGGAGE_ITEMS_SEPARATOR);\n\n pairs.forEach(entry => {\n const keyPair = 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": "
|
|
3
|
+
"version": "2.0.0",
|
|
4
4
|
"description": "Package that allows an OpenTelemetry baggage to be mutable.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"files": [
|
|
@@ -23,28 +23,28 @@
|
|
|
23
23
|
"access": "public"
|
|
24
24
|
},
|
|
25
25
|
"engines": {
|
|
26
|
-
"node": ">=
|
|
26
|
+
"node": ">=20"
|
|
27
27
|
},
|
|
28
28
|
"scripts": {
|
|
29
29
|
"prebuild": "rm -rf dist",
|
|
30
30
|
"build": "tsc",
|
|
31
|
-
"lint": "eslint
|
|
31
|
+
"lint": "eslint",
|
|
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": {
|
|
37
37
|
"*.{ts,js}": [
|
|
38
|
-
"eslint
|
|
38
|
+
"eslint"
|
|
39
39
|
]
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@opentelemetry/core": "^
|
|
42
|
+
"@opentelemetry/core": "^2.0.0"
|
|
43
43
|
},
|
|
44
44
|
"peerDependencies": {
|
|
45
45
|
"@opentelemetry/api": ">=1 <2"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@opentelemetry/context-async-hooks": "^
|
|
48
|
+
"@opentelemetry/context-async-hooks": "^2.0.0"
|
|
49
49
|
}
|
|
50
50
|
}
|