in src/logger/MetricsContext.ts [113:141]
public putDimensions(incomingDimensionSet: Record<string, string>): void {
if (this.dimensions.length === 0) {
this.dimensions.push(incomingDimensionSet);
return;
}
for (let i = 0; i < this.dimensions.length; i++) {
const existingDimensionSet = this.dimensions[i];
// check for duplicate dimensions when putting
// this is an O(n^2) operation, but since we never expect to have more than
// 10 dimensions, this is acceptable for almost all cases.
// This makes re-using loggers much easier.
const existingDimensionSetKeys = Object.keys(existingDimensionSet);
const incomingDimensionSetKeys = Object.keys(incomingDimensionSet);
if (existingDimensionSetKeys.length !== incomingDimensionSetKeys.length) {
this.dimensions.push(incomingDimensionSet);
return;
}
for (let j = 0; j < existingDimensionSetKeys.length; j++) {
if (!incomingDimensionSetKeys.includes(existingDimensionSetKeys[j])) {
// we're done now because we know that the dimensions keys are not identical
this.dimensions.push(incomingDimensionSet);
return;
}
}
}
}