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.

62 lines (61 loc) 3.13 kB
import { IPlugin } from "../core/base.js"; import { FITContext, FITDecoderMesgs, FITFileType } from "./types.js"; export interface IFITMessageConverter extends IPlugin<FITContext> { supportedMessageTypes: string[]; convertMessages(messages: any[], context: FITContext): any; supports(messageType: string): boolean; priority?: number; } export interface IFITStructurePlugin extends IPlugin<FITContext> { structureData(messages: FITDecoderMesgs, context: FITContext): Partial<FITFileType>; priority?: number; } export interface IFITMiddlewarePlugin extends IPlugin<FITContext> { priority?: number; onParse?(buffer: Buffer, context: FITContext): Promise<Buffer> | Buffer; onExtractMessages?(messages: FITDecoderMesgs, context: FITContext): Promise<FITDecoderMesgs> | FITDecoderMesgs; onStructure?(result: Partial<FITFileType>, context: FITContext): Promise<Partial<FITFileType>> | Partial<FITFileType>; onComplete?(result: FITFileType, context: FITContext): Promise<FITFileType> | FITFileType; onError?(error: Error, context: FITContext): Promise<void> | void; } export declare abstract class BaseFITMessageConverter implements IFITMessageConverter { abstract name: string; abstract supportedMessageTypes: string[]; version: string; priority: number; abstract convertMessages(messages: any[], context: FITContext): any; supports(messageType: string): boolean; initialize(context: FITContext): Promise<void>; destroy(context: FITContext): Promise<void>; validate(context: FITContext): Promise<boolean>; protected parseTimestamp(timestamp: string | undefined): Date | undefined; protected calculateDuration(startTime?: string, endTime?: string): number; protected filterMessagesByTimeRange(messages: any[], startTime: string, endTime: string, tolerance?: number): any[]; protected groupMessagesByLap(records: any[], laps: any[]): Array<{ lap: any; records: any[]; }>; } export declare abstract class BaseFITStructurePlugin implements IFITStructurePlugin { abstract name: string; version: string; priority: number; abstract structureData(messages: FITDecoderMesgs, context: FITContext): Partial<FITFileType>; initialize(context: FITContext): Promise<void>; destroy(context: FITContext): Promise<void>; validate(context: FITContext): Promise<boolean>; } export declare abstract class BaseFITMiddleware implements IFITMiddlewarePlugin { abstract name: string; version: string; description: string; priority: number; initialize(context: FITContext): Promise<void>; destroy(context: FITContext): Promise<void>; validate(context: FITContext): Promise<boolean>; onParse(buffer: Buffer, context: FITContext): Promise<Buffer>; onExtractMessages(messages: FITDecoderMesgs, context: FITContext): Promise<FITDecoderMesgs>; onStructure(result: Partial<FITFileType>, context: FITContext): Promise<Partial<FITFileType>>; onComplete(result: FITFileType, context: FITContext): Promise<FITFileType>; onError(error: Error, context: FITContext): Promise<void>; }