@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
JavaScript
;
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;