UNPKG

trackswap

Version:

A powerful and flexible GPX parser and encoder library for Node.js and TypeScript. TrackSwap provides comprehensive support for GPX 1.1 format with advanced features like plugin system, middleware support, and optimized performance.

126 lines (125 loc) 3.3 kB
import { LapMesgType, RecordMesgType, SessionMesgType, UserProfileMesgType } from "./FIT/types.js"; import { IntensityType, TriggerMethodType } from "./TCX/types.js"; export interface Token { type: "open" | "close" | "text"; tag: string; attributes?: AttributeType; value?: string | number; } export interface TokenAST { tag: string; attributes?: AttributeType; children?: TokenAST[]; value?: string | number; } export interface AttributeType { [key: string]: string; } export type LatitudeType = number; export type LongitudeType = number; export type DegreesType = number; export interface ExtensionsType { [key: string]: string | number | undefined | ExtensionsType; } export interface SportFileType { metadata?: { originType: "GPX" | "FIT" | "TCX" | "HIJSON"; fileName?: string; fileType?: string; creator?: string; date?: string; }; points?: SportPointType[]; routes?: SportRouteSegType[]; tracks?: SportTrackType[]; __fit__UserProfileMesgs?: UserProfileMesgType[]; } export interface SportPointType { lat: LatitudeType; lon: LongitudeType; ele?: number; time?: number; heartRate?: number; distance?: number; accumulatedPower?: number; speed?: number; power?: number; cadence?: number; temperature?: number; enhancedAltitude?: number; enhancedSpeed?: number; __fit__RecordMesgType?: RecordMesgType; magvar?: DegreesType; geoidheight?: number; name?: string; cmt?: string; desc?: string; src?: string; sym?: string; type?: string; sat?: string; hdop?: number; vdop?: number; pdop?: number; ageofdgpsdata?: number; dgpsid?: DegreesType; turn?: number; extensions?: ExtensionsType; } export interface SportTrackType { name?: string; GPX_cmt?: string; GPX_desc?: string; GPX_src?: string; GPX_link?: string; GPX_number?: number; GPX_type?: string; sport?: string; trackseg?: SportRouteSegType[]; extensions?: ExtensionsType; startTime?: number; startLat?: LatitudeType; startLon?: LongitudeType; duration?: number; distance?: number; endTime?: number; endLat?: LatitudeType; endLon?: LongitudeType; __fit__sessionMesgType?: SessionMesgType; } export interface SportRouteSegType { name?: string; sport?: string; GPX_cmt?: string; GPX_desc?: string; GPX_src?: string; GPX_link?: string; GPX_number?: number; GPX_type?: string; extensions?: ExtensionsType[]; points?: SportPointType[]; duration?: number; distance?: number; startTime?: number; endTime?: number; avgHeartRateBpm?: number; maxHeartRateBpm?: number; avgSpeed?: number; maxSpeed?: number; avgCadenceBpm?: number; maxCadenceBpm?: number; avgPower?: number; maxPower?: number; avgTemperature?: number; maxTemperature?: number; avgAltitude?: number; maxEnhancedAltitude?: number; totalAscent?: number; totalDescent?: number; calories?: number; __tcx__Intensity?: IntensityType; __tcx__TriggerMethod?: TriggerMethodType; __tcx__Notes?: string; __tcx__Extensions?: any; __fit__lapMesgType?: LapMesgType; }