@opencensus/core
Version:
OpenCensus is a toolkit for collecting application performance and behavior data.
84 lines • 3.25 kB
JavaScript
;
/**
* Copyright 2018, OpenCensus Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.isToValueInterface = exports.isSizeMethodInterface = exports.isSizeAttributeInterface = exports.isLengthMethodInterface = exports.isLengthAttributeInterface = exports.initializeDefaultLabels = exports.hashLabelValues = void 0;
const COMMA_SEPARATOR = ',';
const UNSET_LABEL_VALUE = {
value: null,
};
/**
* Returns a string(comma separated) from the list of label values.
*
* @param labelValues The list of the label values.
* @returns The hashed label values string.
*/
function hashLabelValues(labelValues) {
return labelValues
.map(lv => lv.value)
.sort()
.join(COMMA_SEPARATOR);
}
exports.hashLabelValues = hashLabelValues;
/**
* Returns default label values.
*
* @param count The number of label values.
* @returns The list of the label values.
*/
function initializeDefaultLabels(count) {
return new Array(count).fill(UNSET_LABEL_VALUE);
}
exports.initializeDefaultLabels = initializeDefaultLabels;
// TODO(mayurkale): Consider to use unknown type instead of any for below
// functions, unknown type is available since TypeScript 3.0
// Fact: unknown acts like a type-safe version of any by requiring us to
// perform some type of checking before we can use the value of the unknown
// element or any of its properties.
// Checks if the specified collection is a LengthAttributeInterface.
function isLengthAttributeInterface(
// tslint:disable-next-line:no-any
obj) {
return obj && typeof obj.length === 'number';
}
exports.isLengthAttributeInterface = isLengthAttributeInterface;
// Checks if the specified collection is a LengthMethodInterface.
function isLengthMethodInterface(
// tslint:disable-next-line:no-any
obj) {
return obj && typeof obj.length === 'function';
}
exports.isLengthMethodInterface = isLengthMethodInterface;
// Checks if the specified collection is a SizeAttributeInterface.
function isSizeAttributeInterface(
// tslint:disable-next-line:no-any
obj) {
return obj && typeof obj.size === 'number';
}
exports.isSizeAttributeInterface = isSizeAttributeInterface;
// Checks if the specified collection is a SizeMethodInterface.
// tslint:disable-next-line:no-any
function isSizeMethodInterface(obj) {
return obj && typeof obj.size === 'function';
}
exports.isSizeMethodInterface = isSizeMethodInterface;
// Checks if the specified callbackFn is a ToValueInterface.
// tslint:disable-next-line:no-any
function isToValueInterface(obj) {
return obj && typeof obj.getValue === 'function';
}
exports.isToValueInterface = isToValueInterface;
//# sourceMappingURL=utils.js.map