UNPKG

@observertc/observer-js

Version:

Server Side NodeJS Library for processing ObserveRTC Samples

64 lines (63 loc) 1.96 kB
"use strict"; 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;