workouts-transfer
Version:
Workouts transfer between services as inversify modules.
45 lines (44 loc) • 1.9 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const luxon_1 = require("luxon");
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
// @ts-ignore
const xml2js_1 = __importDefault(require("xml2js"));
const parser = new xml2js_1.default.Parser();
function parse(data) {
return new Promise((resolve, reject) => {
// eslint-disable-next-line promise/prefer-await-to-callbacks
parser.parseString(data, (err, result) => {
if (err) {
reject(err);
}
resolve(result);
});
});
}
// eslint-disable-next-line sonarjs/cognitive-complexity
async function tcx(data) {
const parsedData = await parse(data);
if (!parsedData.TrainingCenterDatabase.Activities[0].Activity[0].Lap) {
return null;
}
return parsedData.TrainingCenterDatabase.Activities[0].Activity[0].Lap.flatMap((lap, key) => {
// eslint-disable-next-line complexity
return lap.Track[0].Trackpoint.map((point) => {
return {
time: luxon_1.DateTime.fromISO(point.Time[0]),
latitude: point.Position ? Number(point.Position[0].LatitudeDegrees[0]) : undefined,
longitude: point.Position ? Number(point.Position[0].LongitudeDegrees[0]) : undefined,
altitude: point.AltitudeMeters ? Number(point.AltitudeMeters[0]) : undefined,
distance: point.DistanceMeters ? Number(point.DistanceMeters[0]) : undefined,
hr: point.HeartRateBpm ? Number(point.HeartRateBpm[0].Value[0]) : undefined,
cadence: point.Cadence ? Number(point.Cadence[0]) : undefined,
lap: key,
};
});
});
}
exports.default = tcx;