UNPKG

@sports-alliance/sports-lib

Version:

A Library to for importing / exporting and processing GPX, TCX, FIT and JSON files from services such as Strava, Movescount, Garmin, Polar etc

135 lines (134 loc) 4.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fillMissingValuesLinear = exports.getSizeFormated = exports.getSize = exports.convertSwimPaceToSwimPacePer100Yard = exports.convertMetersToMiles = exports.convertPaceToPaceInMinutesPerMile = exports.convertSpeedToSpeedInKnots = exports.convertSpeedToSpeedInMetersPerHour = exports.convertSpeedToSpeedInFeetPerHour = exports.convertSpeedToSpeedInFeetPerMinute = exports.convertSpeedToSpeedInMetersPerMinute = exports.convertSpeedToSpeedInFeetPerSecond = exports.convertSpeedToSpeedInMilesPerHour = exports.convertSpeedToSpeedInKilometersPerHour = exports.convertSpeedToSwimPace = exports.convertSpeedToPace = exports.isNumber = exports.isNumberOrString = void 0; function isNumberOrString(property) { return typeof property === 'number' || typeof property === 'string'; } exports.isNumberOrString = isNumberOrString; function isNumber(property) { return typeof property === 'number' && !isNaN(property); } exports.isNumber = isNumber; /** * Converts speed from m/s to pace as of seconds per km * @param {number} number * @return {number} */ function convertSpeedToPace(number) { return number === 0 ? Infinity : 1000 / number; } exports.convertSpeedToPace = convertSpeedToPace; /** * Converts m/s to seconds per 100m * @param number */ function convertSpeedToSwimPace(number) { return number === 0 ? Infinity : 100 / number; } exports.convertSpeedToSwimPace = convertSpeedToSwimPace; function convertSpeedToSpeedInKilometersPerHour(number) { return number * 3.6; } exports.convertSpeedToSpeedInKilometersPerHour = convertSpeedToSpeedInKilometersPerHour; function convertSpeedToSpeedInMilesPerHour(number) { return number * 2.237; } exports.convertSpeedToSpeedInMilesPerHour = convertSpeedToSpeedInMilesPerHour; function convertSpeedToSpeedInFeetPerSecond(number) { return number * 3.28084; } exports.convertSpeedToSpeedInFeetPerSecond = convertSpeedToSpeedInFeetPerSecond; function convertSpeedToSpeedInMetersPerMinute(number) { return number * 60; } exports.convertSpeedToSpeedInMetersPerMinute = convertSpeedToSpeedInMetersPerMinute; function convertSpeedToSpeedInFeetPerMinute(number) { return number * 196.85; } exports.convertSpeedToSpeedInFeetPerMinute = convertSpeedToSpeedInFeetPerMinute; function convertSpeedToSpeedInFeetPerHour(number) { return number * 11811.024; } exports.convertSpeedToSpeedInFeetPerHour = convertSpeedToSpeedInFeetPerHour; function convertSpeedToSpeedInMetersPerHour(number) { return number * 3600; } exports.convertSpeedToSpeedInMetersPerHour = convertSpeedToSpeedInMetersPerHour; function convertSpeedToSpeedInKnots(number) { return number * 1.943844; } exports.convertSpeedToSpeedInKnots = convertSpeedToSpeedInKnots; function convertPaceToPaceInMinutesPerMile(number) { return number * 1.60934; } exports.convertPaceToPaceInMinutesPerMile = convertPaceToPaceInMinutesPerMile; function convertMetersToMiles(number) { return number === 0 ? 0 : number / 1609; } exports.convertMetersToMiles = convertMetersToMiles; /** * Converts m/s to seconds per 100m * @param number */ function convertSwimPaceToSwimPacePer100Yard(number) { return number * 1.93613298; } exports.convertSwimPaceToSwimPacePer100Yard = convertSwimPaceToSwimPacePer100Yard; function getSize(obj) { return getSizeWithOptionalFormat(obj, false); } exports.getSize = getSize; function getSizeFormated(obj) { return getSizeWithOptionalFormat(obj, true); } exports.getSizeFormated = getSizeFormated; function getSizeWithOptionalFormat(obj, format) { if (format === void 0) { format = true; } var size; try { size = new Blob([obj]).size; } catch (e) { size = Buffer.from(obj).length; } function formatByteSize(bytes) { if (bytes < 1024) { return bytes + ' bytes'; } else if (bytes < 1048576) { return (bytes / 1024).toFixed(4) + ' KiB'; } else if (bytes < 1073741824) { return (bytes / 1048576).toFixed(4) + ' MiB'; } else { return (bytes / 1073741824).toFixed(4) + ' GiB'; } } return format ? formatByteSize(size) : size; } /** * from https://stackoverflow.com/questions/48340403/fill-missing-numeric-values-in-an-array * Very badly written * @param array */ function fillMissingValuesLinear(array) { var i = 0, j, delta; while (i < array.length) { if (array[i] !== null) { i++; continue; } j = i; while (array[++j] === null) { } // @ts-ignore delta = (array[j] - array[i - 1]) / (j - i + 1); do { // @ts-ignore array[i] = delta + array[i - 1]; i++; } while (i < j); } return array; } exports.fillMissingValuesLinear = fillMissingValuesLinear;