Use SportsLib to import recorded activities. GPX accepts a DOM parser in Node.js, TCX accepts a parsed XML document, FIT accepts binary data, and native JSON restores a previous Sports Lib export.
npm install @sports-alliance/sports-lib @xmldom/xmldom
import { SportsLib } from '@sports-alliance/sports-lib';
import { DOMParser } from '@xmldom/xmldom';
const event = await SportsLib.importFromGPX(gpxText, DOMParser);
const activity = event.getFirstActivity();
const distanceMetres = activity.getDistance().getValue();
const heartRate = activity.getStreamData('Heart Rate');
import { SportsLib } from '@sports-alliance/sports-lib';
import { DOMParser } from '@xmldom/xmldom';
const tcxDocument = new DOMParser().parseFromString(tcxText, 'application/xml');
const tcxEvent = await SportsLib.importFromTCX(tcxDocument);
const fitEvent = await SportsLib.importFromFit(fitArrayBuffer);
Use importFromSuunto(suuntoJson) for Suunto JSON. Use importFromJSON(eventJson) only for Sports Lib's native EventJSONInterface representation.
Activities expose one-second streams and typed stats. Read numeric values with getValue() and display-ready values with getDisplayValue().
For stream filtering, generated streams, training-stress settings, and FIT device compaction, see Configure parsing. Planned courses are separate models; see Work with routes.