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.
125 lines (124 loc) • 2.82 kB
TypeScript
import { DegreesType, ExtensionsType, LatitudeType, LongitudeType, Token, TokenAST } from "../types.js";
import { IProcessingContext } from "../core/base.js";
export interface BoundsType {
minlat?: LatitudeType;
minlon?: LongitudeType;
maxlat?: LatitudeType;
maxlon?: LongitudeType;
}
export interface PersonType {
name?: string;
email?: EmailType;
link?: LinkType;
}
export interface CopyrightType {
author?: string;
year?: string;
license?: string;
}
export interface EmailType {
id?: string;
domain?: string;
}
type FixType = "none" | "2d" | "3d" | "dgps" | "pps" | string;
export type LinkType = {
href?: string;
text?: string;
type?: string;
};
export interface GPX11Type {
version?: string;
creator?: string;
xmlns?: string;
"xmlns:gte"?: string;
"xmlns:xsi"?: string;
"xsi:schemaLocation"?: string;
metadata?: MetadataType;
wpt?: WptType[];
rte?: RteType[];
trk?: TrkType[];
extensions?: any;
[key: string]: any | undefined;
}
export interface MetadataType {
name?: string;
desc?: string;
author?: PersonType;
copyright?: CopyrightType;
link?: LinkType[];
time?: Date;
keywords?: string;
bounds?: BoundsType;
extensions?: ExtensionsType;
[key: string]: any;
}
export interface WptType {
lat: LatitudeType;
lon: LongitudeType;
ele?: number;
time?: Date;
speed?: number;
course?: number;
magvar?: DegreesType;
geoidheight?: number;
name?: string;
cmt?: string;
desc?: string;
src?: string;
link?: LinkType[];
sym?: string;
type?: string;
fix?: FixType;
sat?: string;
hdop?: number;
vdop?: number;
pdop?: number;
ageofdgpsdata?: number;
dgpsid?: DegreesType;
extensions?: ExtensionsType;
power?: number;
heartRate?: number;
cadence?: number;
}
type RteptType = WptType;
export interface RteType {
name?: string;
cmt?: string;
desc?: string;
src?: string;
link?: LinkType[];
number?: number;
type?: string;
extensions?: ExtensionsType;
rtept?: RteptType[];
}
export interface TrkType {
name?: string;
cmt?: string;
desc?: string;
src?: string;
link?: LinkType[];
number?: number;
type?: string;
extensions?: ExtensionsType;
trkseg?: TrksegType[];
}
export interface TrksegType {
trkpt?: WptType[];
extensions?: ExtensionsType;
}
export interface DecoderContext extends IProcessingContext {
rawData?: Buffer;
xmlContent?: string;
tokens?: Token[];
ast?: TokenAST;
result?: GPX11Type;
performance: {
startTime: number;
tokenizeTime?: number;
astTime?: number;
convertTime?: number;
endTime?: number;
};
}
export {};