@observertc/observer-js
Version:
Server Side NodeJS Library for processing ObserveRTC Samples
64 lines (63 loc) • 1.96 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.parseJsonAs = exports.getMedian = exports.getAverage = exports.isValidUuid = exports.asyncIteratorConverter = exports.iteratorConverter = void 0;
function iteratorConverter(generator) {
return {
[Symbol.iterator]() {
return this;
},
next() {
return generator.next();
},
};
}
exports.iteratorConverter = iteratorConverter;
function asyncIteratorConverter(generator) {
return {
[Symbol.asyncIterator]() {
return this;
},
next() {
return generator.next();
},
};
}
exports.asyncIteratorConverter = asyncIteratorConverter;
function isValidUuid(str) {
const regexp = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i;
return regexp.test(str);
}
exports.isValidUuid = isValidUuid;
function getAverage(arr, defaultAvgIfArrLengthIs0 = 0) {
if (arr.length === 0)
return defaultAvgIfArrLengthIs0;
return arr.reduce((a, b) => a + b, 0) / arr.length;
}
exports.getAverage = getAverage;
function getMedian(arr, copyArrayForSorting = true) {
// Sort the array in ascending order
const sortedArr = copyArrayForSorting
? arr.slice().sort((a, b) => a - b)
: arr.sort((a, b) => a - b);
// Calculate the middle index
const mid = Math.floor(sortedArr.length / 2);
// If the array length is odd, return the middle element
if (sortedArr.length % 2 !== 0) {
return sortedArr[mid];
}
// If the array length is even, return the average of the two middle elements
return (sortedArr[mid - 1] + sortedArr[mid]) / 2;
}
exports.getMedian = getMedian;
function parseJsonAs(json) {
if (!json) {
return undefined;
}
try {
return JSON.parse(json);
}
catch (error) {
return undefined;
}
}
exports.parseJsonAs = parseJsonAs;