diff --git a/package.json b/package.json index 783efa0..add81fb 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "generate-source": "scripts/protoc.sh", "build": "npm run clean && npm run prepare && tsc --build src && OUT_DIR=lib/proto/ scripts/protoc.sh", "lint": "eslint src/**/*.ts", - "lint:fix": "eslint --fix src/**/*.ts", + "lint:fix": "prettier --write \"src/**/*.ts\"", "lint-staged": "lint-staged", "test": "DEBUG=testcontainers* jest", "format": "prettier --write \"src/**/*.ts\"", diff --git a/src/trace/context/ContextCarrier.ts b/src/trace/context/ContextCarrier.ts index abe06a1..f5ad3b8 100644 --- a/src/trace/context/ContextCarrier.ts +++ b/src/trace/context/ContextCarrier.ts @@ -44,20 +44,28 @@ export class ContextCarrier extends CarrierItem { }; get value(): string { - return [ - '1', - this.encode(this.traceId?.toString() || ''), - this.encode(this.segmentId?.toString() || ''), - this.spanId?.toString(), - this.encode(this.service || ''), - this.encode(this.serviceInstance || ''), - this.encode(this.endpoint || ''), - this.encode(this.clientAddress || ''), - ].join('-'); + return this.isValid() + ? [ + '1', + this.encode(this.traceId?.toString() || ''), + this.encode(this.segmentId?.toString() || ''), + this.spanId?.toString(), + this.encode(this.service || ''), + this.encode(this.serviceInstance || ''), + this.encode(this.endpoint || ''), + this.encode(this.clientAddress || ''), + ].join('-') + : ''; } set value(val) { + if (!val) { + return; + } const parts = val.split('-'); + if (parts.length != 8) { + return; + } this.traceId = new ID(this.decode(parts[1])); this.segmentId = new ID(this.decode(parts[2])); this.spanId = Number.parseInt(parts[3], 10); @@ -70,22 +78,23 @@ export class ContextCarrier extends CarrierItem { isValid(): boolean { return Boolean( this.traceId?.rawId && - this.segmentId?.rawId && - this.spanId !== undefined && - !isNaN(this.spanId) && - this.service && - this.endpoint && - this.clientAddress !== undefined + this.segmentId?.rawId && + this.spanId !== undefined && + !isNaN(this.spanId) && + this.service && + this.endpoint && + this.clientAddress !== undefined, ); } public static from(map: { [key: string]: string }): ContextCarrier | undefined { - if (!map.hasOwnProperty('sw8')) - return; + if (!Object.prototype.hasOwnProperty.call(map, 'sw8')) return; const carrier = new ContextCarrier(); - carrier.items.filter((item) => map.hasOwnProperty(item.key)).forEach((item) => (item.value = map[item.key])); + carrier.items + .filter((item) => Object.prototype.hasOwnProperty.call(map, item.key)) + .forEach((item) => (item.value = map[item.key])); return carrier; }