trackswap 0.0.14 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +76 -51
- package/dist/FIT/encoder.d.ts +2 -2
- package/dist/FIT/types/sport.d.ts +1 -1
- package/dist/FIT/types.d.ts +1 -1
- package/dist/TCX/converters.d.ts +3 -3
- package/dist/TCX/encoder.d.ts +3 -3
- package/dist/TCX/types.d.ts +8 -8
- package/dist/TrackSwap.d.ts +18 -12
- package/dist/index.cjs +10 -10
- package/dist/index.d.ts +4 -1
- package/dist/index.js +10 -10
- package/dist/types.d.ts +105 -84
- package/package.json +1 -1
- package/dist/sport/base.d.ts +0 -64
- package/dist/sport/converters.d.ts +0 -34
- package/dist/sport/encoders.d.ts +0 -34
- package/dist/sport/index.d.ts +0 -17
- package/dist/sport/processor.d.ts +0 -19
package/dist/types.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { IntensityType, TriggerMethodType } from "./TCX/types.js";
|
|
1
|
+
import { IntensityType } from "./TCX/types.js";
|
|
3
2
|
export interface Token {
|
|
4
3
|
type: "open" | "close" | "text";
|
|
5
4
|
tag: string;
|
|
@@ -21,105 +20,127 @@ export type DegreesType = number;
|
|
|
21
20
|
export interface ExtensionsType {
|
|
22
21
|
[key: string]: string | number | undefined | ExtensionsType;
|
|
23
22
|
}
|
|
24
|
-
export interface
|
|
23
|
+
export interface FileType {
|
|
25
24
|
metadata?: {
|
|
26
25
|
originType: "GPX" | "FIT" | "TCX" | "HIJSON";
|
|
27
26
|
fileName?: string;
|
|
28
27
|
fileType?: string;
|
|
29
|
-
creator?: string;
|
|
30
|
-
date?: string;
|
|
31
28
|
};
|
|
32
|
-
points?:
|
|
33
|
-
routes?:
|
|
34
|
-
|
|
35
|
-
|
|
29
|
+
points?: ActivityRecordType[];
|
|
30
|
+
routes?: ActivityLapType[];
|
|
31
|
+
activities?: ActivityType[];
|
|
32
|
+
userProfile?: UserProfileType;
|
|
33
|
+
}
|
|
34
|
+
export interface UserProfileType {
|
|
35
|
+
name?: string;
|
|
36
|
+
weight?: number;
|
|
37
|
+
gender?: string;
|
|
38
|
+
age?: number;
|
|
39
|
+
height?: number;
|
|
40
|
+
language?: string;
|
|
41
|
+
defaultMaxBikingHeartRate?: number;
|
|
42
|
+
defaultMaxHeartRate?: number;
|
|
43
|
+
hrSetting?: string;
|
|
44
|
+
speedSetting?: string;
|
|
45
|
+
distSetting?: string;
|
|
46
|
+
powerSetting?: string;
|
|
47
|
+
activityClass?: number;
|
|
48
|
+
positionSetting?: string;
|
|
49
|
+
temperatureSetting?: string;
|
|
50
|
+
elevSetting?: string;
|
|
51
|
+
weightSetting?: string;
|
|
52
|
+
}
|
|
53
|
+
export interface ActivityType {
|
|
54
|
+
index: number;
|
|
55
|
+
name?: string;
|
|
56
|
+
sport_type?: string;
|
|
57
|
+
description?: string;
|
|
58
|
+
timestamp?: number;
|
|
59
|
+
start_time?: number;
|
|
60
|
+
end_time?: number;
|
|
61
|
+
start_lat?: LatitudeType;
|
|
62
|
+
start_lon?: LongitudeType;
|
|
63
|
+
end_lat?: LatitudeType;
|
|
64
|
+
end_lon?: LongitudeType;
|
|
65
|
+
total_timer_time?: number;
|
|
66
|
+
total_elapsed_time?: number;
|
|
67
|
+
total_distance?: number;
|
|
68
|
+
total_ascent?: number;
|
|
69
|
+
total_descent?: number;
|
|
70
|
+
total_cycles?: number;
|
|
71
|
+
total_work?: number;
|
|
72
|
+
total_strokes?: number;
|
|
73
|
+
avg_speed?: number;
|
|
74
|
+
max_speed?: number;
|
|
75
|
+
avg_power?: number;
|
|
76
|
+
max_power?: number;
|
|
77
|
+
normalized_power?: number;
|
|
78
|
+
threshold_power?: number;
|
|
79
|
+
avg_cadence?: number;
|
|
80
|
+
max_cadence?: number;
|
|
81
|
+
avg_heart_rate?: number;
|
|
82
|
+
max_heart_rate?: number;
|
|
83
|
+
TTS?: number;
|
|
84
|
+
IF?: number;
|
|
85
|
+
total_calories?: number;
|
|
86
|
+
total_fat_calories?: number;
|
|
87
|
+
laps?: ActivityLapType[];
|
|
36
88
|
}
|
|
37
|
-
export interface
|
|
89
|
+
export interface ActivityRecordType {
|
|
90
|
+
index: number;
|
|
38
91
|
lat: LatitudeType;
|
|
39
92
|
lon: LongitudeType;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
93
|
+
altitude?: number;
|
|
94
|
+
timestamp?: number;
|
|
95
|
+
heart_rate?: number;
|
|
43
96
|
distance?: number;
|
|
44
|
-
|
|
97
|
+
accumulated_power?: number;
|
|
45
98
|
speed?: number;
|
|
46
99
|
power?: number;
|
|
47
100
|
cadence?: number;
|
|
48
101
|
temperature?: number;
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
__fit__RecordMesgType?: RecordMesgType;
|
|
52
|
-
magvar?: DegreesType;
|
|
53
|
-
geoidheight?: number;
|
|
54
|
-
name?: string;
|
|
55
|
-
cmt?: string;
|
|
56
|
-
desc?: string;
|
|
57
|
-
src?: string;
|
|
58
|
-
sym?: string;
|
|
59
|
-
type?: string;
|
|
60
|
-
sat?: string;
|
|
102
|
+
enhanced_altitude?: number;
|
|
103
|
+
enhanced_speed?: number;
|
|
61
104
|
hdop?: number;
|
|
62
105
|
vdop?: number;
|
|
63
106
|
pdop?: number;
|
|
64
|
-
ageofdgpsdata?: number;
|
|
65
|
-
dgpsid?: DegreesType;
|
|
66
107
|
turn?: number;
|
|
67
|
-
|
|
108
|
+
description?: number;
|
|
68
109
|
}
|
|
69
|
-
export interface
|
|
110
|
+
export interface ActivityLapType {
|
|
111
|
+
index: number;
|
|
70
112
|
name?: string;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
endTime?: number;
|
|
105
|
-
avgHeartRateBpm?: number;
|
|
106
|
-
maxHeartRateBpm?: number;
|
|
107
|
-
avgSpeed?: number;
|
|
108
|
-
maxSpeed?: number;
|
|
109
|
-
avgCadenceBpm?: number;
|
|
110
|
-
maxCadenceBpm?: number;
|
|
111
|
-
avgPower?: number;
|
|
112
|
-
maxPower?: number;
|
|
113
|
-
avgTemperature?: number;
|
|
114
|
-
maxTemperature?: number;
|
|
115
|
-
avgAltitude?: number;
|
|
116
|
-
maxEnhancedAltitude?: number;
|
|
117
|
-
totalAscent?: number;
|
|
118
|
-
totalDescent?: number;
|
|
119
|
-
calories?: number;
|
|
120
|
-
__tcx__Intensity?: IntensityType;
|
|
121
|
-
__tcx__TriggerMethod?: TriggerMethodType;
|
|
122
|
-
__tcx__Notes?: string;
|
|
123
|
-
__tcx__Extensions?: any;
|
|
124
|
-
__fit__lapMesgType?: LapMesgType;
|
|
113
|
+
sport_type?: string;
|
|
114
|
+
description?: string;
|
|
115
|
+
timestamp?: number;
|
|
116
|
+
start_time?: number;
|
|
117
|
+
end_time?: number;
|
|
118
|
+
start_lat?: LatitudeType;
|
|
119
|
+
start_lon?: LongitudeType;
|
|
120
|
+
end_lat?: LatitudeType;
|
|
121
|
+
end_lon?: LongitudeType;
|
|
122
|
+
total_timer_time?: number;
|
|
123
|
+
total_elapsed_time?: number;
|
|
124
|
+
total_distance?: number;
|
|
125
|
+
total_ascent?: number;
|
|
126
|
+
total_descent?: number;
|
|
127
|
+
total_cycles?: number;
|
|
128
|
+
total_work?: number;
|
|
129
|
+
total_strokes?: number;
|
|
130
|
+
avg_speed?: number;
|
|
131
|
+
max_speed?: number;
|
|
132
|
+
avg_power?: number;
|
|
133
|
+
max_power?: number;
|
|
134
|
+
normalized_power?: number;
|
|
135
|
+
threshold_power?: number;
|
|
136
|
+
avg_cadence?: number;
|
|
137
|
+
max_cadence?: number;
|
|
138
|
+
avg_heart_rate?: number;
|
|
139
|
+
max_heart_rate?: number;
|
|
140
|
+
TTS?: number;
|
|
141
|
+
IF?: number;
|
|
142
|
+
total_calories?: number;
|
|
143
|
+
total_fat_calories?: number;
|
|
144
|
+
records?: ActivityRecordType[];
|
|
145
|
+
intensity?: IntensityType;
|
|
125
146
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "trackswap",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.16",
|
|
4
4
|
"description": "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.",
|
|
5
5
|
"main": "dist/index.cjs",
|
|
6
6
|
"module": "dist/index.js",
|
package/dist/sport/base.d.ts
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
import { IPlugin, IConverterPlugin, IMiddlewarePlugin, BaseConverter, BaseMiddleware, IProcessingContext } from "../core/base.js";
|
|
2
|
-
import { ActivityType, ActivityPointType, ActivityRouteSegType, ActivityTrackType, TokenAST } from "../types.js";
|
|
3
|
-
export interface SportContext extends IProcessingContext {
|
|
4
|
-
sourceFormat: string;
|
|
5
|
-
sourceData: any;
|
|
6
|
-
result?: ActivityType;
|
|
7
|
-
performance: {
|
|
8
|
-
startTime: number;
|
|
9
|
-
convertTime?: number;
|
|
10
|
-
endTime?: number;
|
|
11
|
-
};
|
|
12
|
-
}
|
|
13
|
-
export interface SportEncodingContext extends IProcessingContext {
|
|
14
|
-
targetFormat: string;
|
|
15
|
-
result?: any;
|
|
16
|
-
performance: {
|
|
17
|
-
startTime: number;
|
|
18
|
-
encodeTime?: number;
|
|
19
|
-
endTime?: number;
|
|
20
|
-
};
|
|
21
|
-
}
|
|
22
|
-
export interface ISportPlugin extends IPlugin {
|
|
23
|
-
}
|
|
24
|
-
export interface ISportConverterPlugin extends IConverterPlugin {
|
|
25
|
-
convert(ast: TokenAST, context: SportContext): ActivityType | undefined;
|
|
26
|
-
}
|
|
27
|
-
export interface ISportMiddlewarePlugin extends IMiddlewarePlugin {
|
|
28
|
-
process(context: SportContext): Promise<void>;
|
|
29
|
-
}
|
|
30
|
-
export interface ISportEncoderPlugin extends IPlugin<SportEncodingContext> {
|
|
31
|
-
encode(sportData: ActivityType, context: SportEncodingContext): any | undefined;
|
|
32
|
-
supports(format: string): boolean;
|
|
33
|
-
priority?: number;
|
|
34
|
-
}
|
|
35
|
-
export declare abstract class BaseSportConverter extends BaseConverter<SportContext> implements ISportConverterPlugin {
|
|
36
|
-
protected convertPoints(points: any[]): ActivityPointType[];
|
|
37
|
-
protected abstract convertPoint(point: any): ActivityPointType | undefined;
|
|
38
|
-
protected convertTime(time: Date | string | number | undefined): number | undefined;
|
|
39
|
-
protected calculateDistance(points: ActivityPointType[]): number | undefined;
|
|
40
|
-
protected calculateDuration(points: ActivityPointType[]): number | undefined;
|
|
41
|
-
}
|
|
42
|
-
export declare abstract class BaseSportEncoder implements ISportEncoderPlugin {
|
|
43
|
-
abstract name: string;
|
|
44
|
-
abstract supportedTags: string[];
|
|
45
|
-
version: string;
|
|
46
|
-
priority: number;
|
|
47
|
-
abstract encode(sportData: ActivityType, context: SportEncodingContext): any | undefined;
|
|
48
|
-
supports(format: string): boolean;
|
|
49
|
-
initialize(context: SportEncodingContext): Promise<void>;
|
|
50
|
-
destroy(context: SportEncodingContext): Promise<void>;
|
|
51
|
-
validate(context: SportEncodingContext): Promise<boolean>;
|
|
52
|
-
protected convertTimeToDate(time: number | undefined): Date;
|
|
53
|
-
protected convertTimeToString(time: number | undefined): string;
|
|
54
|
-
protected ensureValidCoordinates(lat: number, lon: number): boolean;
|
|
55
|
-
protected round(value: number, precision?: number): number;
|
|
56
|
-
}
|
|
57
|
-
export declare abstract class BaseSportMiddleware extends BaseMiddleware<SportContext, ActivityType> implements ISportMiddlewarePlugin {
|
|
58
|
-
abstract process(context: SportContext): Promise<void>;
|
|
59
|
-
onError(error: Error, context: SportContext): Promise<void>;
|
|
60
|
-
protected validateSportFile(sportFile: ActivityType): boolean;
|
|
61
|
-
protected validateTrack(track: ActivityTrackType): boolean;
|
|
62
|
-
protected validateRoute(route: ActivityRouteSegType): boolean;
|
|
63
|
-
protected validatePoint(point: ActivityPointType): boolean;
|
|
64
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { BaseSportConverter, SportContext } from "./base.js";
|
|
2
|
-
import { TokenAST } from "../types.js";
|
|
3
|
-
import { ActivityType, ActivityPointType } from "../types.js";
|
|
4
|
-
import { WptType } from "../GPX/types.js";
|
|
5
|
-
import { RecordMesgType } from "../FIT/types.js";
|
|
6
|
-
import { TrackpointType } from "../TCX/types.js";
|
|
7
|
-
export declare class GPXToSportConverter extends BaseSportConverter {
|
|
8
|
-
name: string;
|
|
9
|
-
supportedTags: string[];
|
|
10
|
-
convert(ast: TokenAST, context: SportContext): ActivityType | undefined;
|
|
11
|
-
private convertGPX;
|
|
12
|
-
protected convertPoint(point: WptType): ActivityPointType | undefined;
|
|
13
|
-
private convertWpts2Points;
|
|
14
|
-
private convertGPXExtensions;
|
|
15
|
-
private autoNumber;
|
|
16
|
-
}
|
|
17
|
-
export declare class FITToSportConverter extends BaseSportConverter {
|
|
18
|
-
name: string;
|
|
19
|
-
supportedTags: string[];
|
|
20
|
-
convert(ast: TokenAST, context: SportContext): ActivityType | undefined;
|
|
21
|
-
private convertFIT;
|
|
22
|
-
protected convertPoint(point: RecordMesgType): ActivityPointType | undefined;
|
|
23
|
-
private convertFITLap2Trackseg;
|
|
24
|
-
private convertLap2Points;
|
|
25
|
-
}
|
|
26
|
-
export declare class TCXToSportConverter extends BaseSportConverter {
|
|
27
|
-
name: string;
|
|
28
|
-
supportedTags: string[];
|
|
29
|
-
convert(ast: TokenAST, context: SportContext): ActivityType | undefined;
|
|
30
|
-
private convertTCX;
|
|
31
|
-
protected convertPoint(point: TrackpointType): ActivityPointType | undefined;
|
|
32
|
-
private convertLap2Trackseg;
|
|
33
|
-
private convertTCXTrack;
|
|
34
|
-
}
|
package/dist/sport/encoders.d.ts
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { BaseSportEncoder, SportEncodingContext } from "./base.js";
|
|
2
|
-
import { ActivityType } from "../types.js";
|
|
3
|
-
import { GPX11Type } from "../GPX/types.js";
|
|
4
|
-
import { FITFileType } from "../FIT/types.js";
|
|
5
|
-
import { TCXFileType } from "../TCX/types.js";
|
|
6
|
-
export declare class SportToGPXEncoder extends BaseSportEncoder {
|
|
7
|
-
name: string;
|
|
8
|
-
supportedTags: string[];
|
|
9
|
-
encode(sportData: ActivityType, context: SportEncodingContext): GPX11Type | undefined;
|
|
10
|
-
private convertPoints2Wpts;
|
|
11
|
-
private convertRoute2GPXRoute;
|
|
12
|
-
private convertTrack2GPXTrack;
|
|
13
|
-
private extractGPXExtensions;
|
|
14
|
-
}
|
|
15
|
-
export declare class SportToFITEncoder extends BaseSportEncoder {
|
|
16
|
-
name: string;
|
|
17
|
-
supportedTags: string[];
|
|
18
|
-
encode(sportData: ActivityType, context: SportEncodingContext): FITFileType | undefined;
|
|
19
|
-
private convertTrack2FITSession;
|
|
20
|
-
private convertSeg2FITLap;
|
|
21
|
-
private convertPoint2FITRecord;
|
|
22
|
-
private convertRoute2FITCourse;
|
|
23
|
-
private convertPoints2FITLap;
|
|
24
|
-
}
|
|
25
|
-
export declare class SportToTCXEncoder extends BaseSportEncoder {
|
|
26
|
-
name: string;
|
|
27
|
-
supportedTags: string[];
|
|
28
|
-
encode(sportData: ActivityType, context: SportEncodingContext): TCXFileType | undefined;
|
|
29
|
-
private convertTrack2TCXActivity;
|
|
30
|
-
private convertSeg2TCXLap;
|
|
31
|
-
private convertPoints2TCXTrack;
|
|
32
|
-
private convertPoint2TCXTrackpoint;
|
|
33
|
-
private convertRoute2TCXCourse;
|
|
34
|
-
}
|
package/dist/sport/index.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export * from "./base.js";
|
|
2
|
-
export * from "./converters.js";
|
|
3
|
-
export * from "./encoders.js";
|
|
4
|
-
export * from "./processor.js";
|
|
5
|
-
import { GPXToSportConverter, FITToSportConverter, TCXToSportConverter } from "./converters.js";
|
|
6
|
-
import { SportToGPXEncoder, SportToFITEncoder, SportToTCXEncoder } from "./encoders.js";
|
|
7
|
-
import { SportProcessor } from "./processor.js";
|
|
8
|
-
declare const _default: {
|
|
9
|
-
GPXToSportConverter: typeof GPXToSportConverter;
|
|
10
|
-
FITToSportConverter: typeof FITToSportConverter;
|
|
11
|
-
TCXToSportConverter: typeof TCXToSportConverter;
|
|
12
|
-
SportToGPXEncoder: typeof SportToGPXEncoder;
|
|
13
|
-
SportToFITEncoder: typeof SportToFITEncoder;
|
|
14
|
-
SportToTCXEncoder: typeof SportToTCXEncoder;
|
|
15
|
-
SportProcessor: typeof SportProcessor;
|
|
16
|
-
};
|
|
17
|
-
export default _default;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { ISportConverterPlugin, ISportEncoderPlugin } from "./base.js";
|
|
2
|
-
import { ActivityType } from "../types.js";
|
|
3
|
-
import { GPX11Type } from "../GPX/types.js";
|
|
4
|
-
import { FITFileType } from "../FIT/types.js";
|
|
5
|
-
import { TCXFileType } from "../TCX/types.js";
|
|
6
|
-
export declare class SportProcessor {
|
|
7
|
-
private converters;
|
|
8
|
-
private encoders;
|
|
9
|
-
constructor();
|
|
10
|
-
private registerDefaultConverters;
|
|
11
|
-
private registerDefaultEncoders;
|
|
12
|
-
registerConverter(converter: ISportConverterPlugin): void;
|
|
13
|
-
registerEncoder(encoder: ISportEncoderPlugin): void;
|
|
14
|
-
convertToSport(sourceData: GPX11Type | FITFileType | TCXFileType, sourceFormat: "gpx" | "fit" | "tcx"): Promise<ActivityType>;
|
|
15
|
-
encodeSport(sportData: ActivityType, targetFormat: "gpx" | "fit" | "tcx"): Promise<GPX11Type | FITFileType | TCXFileType>;
|
|
16
|
-
private findConverter;
|
|
17
|
-
private findEncoder;
|
|
18
|
-
destroy(): Promise<void>;
|
|
19
|
-
}
|