trackswap 0.0.1 → 0.0.3
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 +322 -281
- package/dist/FIT/base.d.ts +61 -0
- package/dist/FIT/crc.d.ts +1 -0
- package/dist/FIT/decoder.d.ts +35 -0
- package/dist/FIT/encoder.d.ts +45 -0
- package/dist/FIT/index.d.ts +12 -0
- package/dist/FIT/mesg.d.ts +37 -0
- package/dist/FIT/middleware.d.ts +33 -0
- package/dist/FIT/plugins.d.ts +17 -0
- package/dist/FIT/processor.d.ts +34 -0
- package/dist/FIT/types/course_point.d.ts +56 -0
- package/dist/FIT/types/event.d.ts +49 -0
- package/dist/FIT/types/event_type.d.ts +18 -0
- package/dist/FIT/types/file.d.ts +23 -0
- package/dist/FIT/types/index.d.ts +119 -0
- package/dist/FIT/types/mesg_num.d.ts +105 -0
- package/dist/FIT/types/sport.d.ts +47 -0
- package/dist/FIT/types.d.ts +196 -0
- package/dist/FIT/util.d.ts +1 -0
- package/dist/GPX/base.d.ts +14 -77
- package/dist/GPX/converters.d.ts +12 -66
- package/dist/GPX/decoder.d.ts +5 -71
- package/dist/GPX/encoder.d.ts +4 -109
- package/dist/GPX/index.d.ts +1 -1
- package/dist/GPX/middleware.d.ts +18 -0
- package/dist/GPX/processor.d.ts +0 -18
- package/dist/GPX/types.d.ts +2 -111
- package/dist/TCX/base.d.ts +19 -0
- package/dist/TCX/converters.d.ts +51 -0
- package/dist/TCX/decoder.d.ts +33 -0
- package/dist/TCX/encoder.d.ts +41 -0
- package/dist/TCX/index.d.ts +13 -0
- package/dist/TCX/middleware.d.ts +18 -0
- package/dist/TCX/processor.d.ts +30 -0
- package/dist/TCX/types.d.ts +190 -0
- package/dist/TrackSwap.d.ts +37 -33
- package/dist/core/base.d.ts +73 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/xml-utils.d.ts +17 -0
- package/dist/index.js +24 -5
- package/dist/sport/base.d.ts +63 -0
- package/dist/sport/converters.d.ts +33 -0
- package/dist/sport/encoders.d.ts +34 -0
- package/dist/sport/index.d.ts +17 -0
- package/dist/sport/processor.d.ts +19 -0
- package/dist/types.d.ts +91 -13
- package/package.json +25 -7
- package/dist/GPX/base.js +0 -83
- package/dist/GPX/converters.js +0 -444
- package/dist/GPX/decoder.js +0 -403
- package/dist/GPX/encoder.js +0 -510
- package/dist/GPX/extensions/index.js +0 -14
- package/dist/GPX/index.js +0 -11
- package/dist/GPX/processor.js +0 -187
- package/dist/GPX/types.js +0 -1
- package/dist/GPX/util.js +0 -18
- package/dist/TrackSwap.js +0 -84
- package/dist/types.js +0 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
export declare enum Sport {
|
|
2
|
+
GENERIC = 0,
|
|
3
|
+
RUNNING = 1,
|
|
4
|
+
CYCLING = 2,
|
|
5
|
+
TRANSITION = 3,
|
|
6
|
+
FITNESS_EQUIPMENT = 4,
|
|
7
|
+
SWIMMING = 5,
|
|
8
|
+
BASKETBALL = 6,
|
|
9
|
+
SOCCER = 7,
|
|
10
|
+
TENNIS = 8,
|
|
11
|
+
AMERICAN_FOOTBALL = 9,
|
|
12
|
+
TRAINING = 10,
|
|
13
|
+
WALKING = 11,
|
|
14
|
+
CROSS_COUNTRY_SKIING = 12,
|
|
15
|
+
ALPINE_SKIING = 13,
|
|
16
|
+
SNOWBOARDING = 14,
|
|
17
|
+
ROWING = 15,
|
|
18
|
+
MOUNTAINEERING = 16,
|
|
19
|
+
HIKING = 17,
|
|
20
|
+
MULTISPORT = 18,
|
|
21
|
+
PADDLING = 19,
|
|
22
|
+
FLYING = 20,
|
|
23
|
+
E_BIKING = 21,
|
|
24
|
+
MOTORCYCLING = 22,
|
|
25
|
+
BOATING = 23,
|
|
26
|
+
DRIVING = 24,
|
|
27
|
+
GOLF = 25,
|
|
28
|
+
HANG_GLIDING = 26,
|
|
29
|
+
HORSEBACK_RIDING = 27,
|
|
30
|
+
HUNTING = 28,
|
|
31
|
+
FISHING = 29,
|
|
32
|
+
INLINE_SKATING = 30,
|
|
33
|
+
ROCK_CLIMBING = 31,
|
|
34
|
+
SAILING = 32,
|
|
35
|
+
ICE_SKATING = 33,
|
|
36
|
+
SKY_DIVING = 34,
|
|
37
|
+
SNOWSHOEING = 35,
|
|
38
|
+
SNOWMOBILING = 36,
|
|
39
|
+
STAND_UP_PADDLEBOARDING = 37,
|
|
40
|
+
SURFING = 38,
|
|
41
|
+
WAKEBOARDING = 39,
|
|
42
|
+
WATER_SKIING = 40,
|
|
43
|
+
YOGA = 41,
|
|
44
|
+
PILATES = 42,
|
|
45
|
+
CALISTHENICS = 43,
|
|
46
|
+
ALL = 254
|
|
47
|
+
}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { IProcessingContext } from "../core/base.js";
|
|
2
|
+
export interface FITFileType {
|
|
3
|
+
fileIdMesgs?: FileIdMesgType[];
|
|
4
|
+
fileCreatorMesgs?: FileCreatorMesgType[];
|
|
5
|
+
eventMesgs?: EventMesgType[];
|
|
6
|
+
deviceInfoMesgs?: DeviceInfoMesgType[];
|
|
7
|
+
deviceSettingsMesgs?: DeviceSettingsMesgType[];
|
|
8
|
+
userProfileMesgs?: UserProfileMesgType[];
|
|
9
|
+
sessionMesgs?: SessionMesgType[];
|
|
10
|
+
courseMesgs?: any[];
|
|
11
|
+
}
|
|
12
|
+
export type FITDecoderMesgs = {
|
|
13
|
+
fileIdMesgs?: FileIdMesgType[];
|
|
14
|
+
fileCreatorMesgs?: FileCreatorMesgType[];
|
|
15
|
+
eventMesgs?: EventMesgType[];
|
|
16
|
+
deviceInfoMesgs?: DeviceInfoMesgType[];
|
|
17
|
+
deviceSettingsMesgs?: DeviceSettingsMesgType[];
|
|
18
|
+
userProfileMesgs?: UserProfileMesgType[];
|
|
19
|
+
sessionMesgs?: Omit<SessionMesgType, "lapMesgs">[];
|
|
20
|
+
lapMesgs?: Omit<SessionMesgType, "recordMesgs">[];
|
|
21
|
+
recordMesgs?: RecordMesgType[];
|
|
22
|
+
courseMesgs?: any[];
|
|
23
|
+
[key: string]: any[] | undefined;
|
|
24
|
+
};
|
|
25
|
+
export interface FileIdMesgType {
|
|
26
|
+
serialNumber?: number;
|
|
27
|
+
timeCreated?: string;
|
|
28
|
+
manufacturer?: string;
|
|
29
|
+
product?: number;
|
|
30
|
+
type?: string;
|
|
31
|
+
garminProduct?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface FileCreatorMesgType {
|
|
34
|
+
softwareVersion?: number;
|
|
35
|
+
}
|
|
36
|
+
export interface EventMesgType {
|
|
37
|
+
timestamp?: string;
|
|
38
|
+
data?: number;
|
|
39
|
+
event?: string;
|
|
40
|
+
eventType?: string;
|
|
41
|
+
eventGroup?: number;
|
|
42
|
+
timerTrigger?: string;
|
|
43
|
+
}
|
|
44
|
+
export interface DeviceInfoMesgType {
|
|
45
|
+
timestamp?: string;
|
|
46
|
+
serialNumber?: number;
|
|
47
|
+
manufacturer?: string;
|
|
48
|
+
product?: number;
|
|
49
|
+
softwareVersion?: number;
|
|
50
|
+
deviceIndex?: string;
|
|
51
|
+
deviceType?: number;
|
|
52
|
+
garminProduct?: string;
|
|
53
|
+
}
|
|
54
|
+
export interface DeviceSettingsMesgType {
|
|
55
|
+
utcOffset?: number;
|
|
56
|
+
timeOffset?: number;
|
|
57
|
+
activeTimeZone?: number;
|
|
58
|
+
timeMode?: string;
|
|
59
|
+
timeZoneOffset?: number;
|
|
60
|
+
backlightMode?: string;
|
|
61
|
+
}
|
|
62
|
+
export interface UserProfileMesgType {
|
|
63
|
+
friendlyName?: string;
|
|
64
|
+
weight?: number;
|
|
65
|
+
gender?: string;
|
|
66
|
+
age?: number;
|
|
67
|
+
height?: number;
|
|
68
|
+
language?: string;
|
|
69
|
+
elevSetting?: string;
|
|
70
|
+
weightSetting?: string;
|
|
71
|
+
defaultMaxBikingHeartRate?: number;
|
|
72
|
+
defaultMaxHeartRate?: number;
|
|
73
|
+
hrSetting?: string;
|
|
74
|
+
speedSetting?: string;
|
|
75
|
+
distSetting?: string;
|
|
76
|
+
powerSetting?: string;
|
|
77
|
+
activityClass?: number;
|
|
78
|
+
positionSetting?: string;
|
|
79
|
+
temperatureSetting?: string;
|
|
80
|
+
}
|
|
81
|
+
export interface SessionMesgType {
|
|
82
|
+
timestamp?: string;
|
|
83
|
+
startTime?: string;
|
|
84
|
+
startPositionLat?: number;
|
|
85
|
+
startPositionLong?: number;
|
|
86
|
+
totalElapsedTime?: number;
|
|
87
|
+
totalTimerTime?: number;
|
|
88
|
+
totalDistance?: number;
|
|
89
|
+
totalCycles?: number;
|
|
90
|
+
necLat?: number;
|
|
91
|
+
necLong?: number;
|
|
92
|
+
swcLat?: number;
|
|
93
|
+
swcLong?: number;
|
|
94
|
+
totalWork?: number;
|
|
95
|
+
messageIndex?: number;
|
|
96
|
+
totalCalories?: number;
|
|
97
|
+
totalFatCalories?: number;
|
|
98
|
+
avgSpeed?: number;
|
|
99
|
+
maxSpeed?: number;
|
|
100
|
+
avgPower?: number;
|
|
101
|
+
maxPower?: number;
|
|
102
|
+
totalAscent?: number;
|
|
103
|
+
totalDescent?: number;
|
|
104
|
+
firstLapIndex?: number;
|
|
105
|
+
numLaps?: number;
|
|
106
|
+
normalizedPower?: number;
|
|
107
|
+
trainingStressScore?: number;
|
|
108
|
+
intensityFactor?: number;
|
|
109
|
+
thresholdPower?: number;
|
|
110
|
+
event?: string;
|
|
111
|
+
eventType?: string;
|
|
112
|
+
sport?: string;
|
|
113
|
+
subSport?: string;
|
|
114
|
+
avgCadence?: number;
|
|
115
|
+
maxCadence?: number;
|
|
116
|
+
trigger?: number;
|
|
117
|
+
totalStrokes?: number;
|
|
118
|
+
enhancedAvgSpeed?: number;
|
|
119
|
+
enhancedMaxSpeed?: number;
|
|
120
|
+
lapMesgs?: LapMesgType[];
|
|
121
|
+
}
|
|
122
|
+
export interface RecordMesgType {
|
|
123
|
+
timestamp?: string;
|
|
124
|
+
positionLat?: number;
|
|
125
|
+
positionLong?: number;
|
|
126
|
+
altitude?: number;
|
|
127
|
+
distance?: number;
|
|
128
|
+
accumulatedPower?: number;
|
|
129
|
+
speed?: number;
|
|
130
|
+
power?: number;
|
|
131
|
+
cadence?: number;
|
|
132
|
+
heartRate?: number;
|
|
133
|
+
temperature?: number;
|
|
134
|
+
enhancedAltitude?: number;
|
|
135
|
+
enhancedSpeed?: number;
|
|
136
|
+
[key: string]: number | string | undefined | any;
|
|
137
|
+
}
|
|
138
|
+
export interface LapMesgType {
|
|
139
|
+
timestamp?: string;
|
|
140
|
+
startTime?: string;
|
|
141
|
+
startPositionLat?: number;
|
|
142
|
+
startPositionLong?: number;
|
|
143
|
+
endPositionLat?: number;
|
|
144
|
+
endPositionLong?: number;
|
|
145
|
+
totalElapsedTime?: number;
|
|
146
|
+
totalTimerTime?: number;
|
|
147
|
+
totalDistance?: number;
|
|
148
|
+
totalCycles?: number;
|
|
149
|
+
totalWork?: number;
|
|
150
|
+
messageIndex?: number;
|
|
151
|
+
totalCalories?: number;
|
|
152
|
+
totalFatCalories?: number;
|
|
153
|
+
avgSpeed?: number;
|
|
154
|
+
maxSpeed?: number;
|
|
155
|
+
avgPower?: number;
|
|
156
|
+
maxPower?: number;
|
|
157
|
+
totalAscent?: number;
|
|
158
|
+
totalDescent?: number;
|
|
159
|
+
normalizedPower?: number;
|
|
160
|
+
event?: string;
|
|
161
|
+
eventType?: string;
|
|
162
|
+
avgCadence?: number;
|
|
163
|
+
maxCadence?: number;
|
|
164
|
+
lapTrigger?: string;
|
|
165
|
+
sport?: string;
|
|
166
|
+
totalStrokes?: number;
|
|
167
|
+
enhancedAvgSpeed?: number;
|
|
168
|
+
enhancedMaxSpeed?: number;
|
|
169
|
+
recordMesgs?: RecordMesgType[];
|
|
170
|
+
}
|
|
171
|
+
export interface ActivityMesgType {
|
|
172
|
+
timestamp?: string;
|
|
173
|
+
totalTimerTime?: number;
|
|
174
|
+
numSessions?: number;
|
|
175
|
+
type?: string;
|
|
176
|
+
event?: string;
|
|
177
|
+
eventType?: string;
|
|
178
|
+
[key: string]: number | string | undefined | any;
|
|
179
|
+
}
|
|
180
|
+
export interface FITContext extends IProcessingContext {
|
|
181
|
+
rawData?: Buffer;
|
|
182
|
+
rawMessages?: FITDecoderMesgs;
|
|
183
|
+
result?: FITFileType;
|
|
184
|
+
fileHeader?: {
|
|
185
|
+
type?: string;
|
|
186
|
+
manufacturer?: string;
|
|
187
|
+
product?: number;
|
|
188
|
+
};
|
|
189
|
+
performance: {
|
|
190
|
+
startTime: number;
|
|
191
|
+
parseTime?: number;
|
|
192
|
+
extractTime?: number;
|
|
193
|
+
structureTime?: number;
|
|
194
|
+
endTime?: number;
|
|
195
|
+
};
|
|
196
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const FITRecordOriginKey: string[];
|
package/dist/GPX/base.d.ts
CHANGED
|
@@ -1,84 +1,21 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { IPlugin as ICorePlugin, IConverterPlugin as ICoreConverterPlugin, IMiddlewarePlugin as ICoreMiddlewarePlugin, BaseConverter as CoreBaseConverter, BaseMiddleware as CoreBaseMiddleware } from "../core/base.js";
|
|
2
2
|
import { DecoderContext, GPX11Type } from "./types.js";
|
|
3
|
-
|
|
4
|
-
* 插件接口
|
|
5
|
-
*/
|
|
6
|
-
export interface IPlugin {
|
|
7
|
-
/** 插件名称 */
|
|
8
|
-
name: string;
|
|
9
|
-
/** 插件版本 */
|
|
10
|
-
version?: string;
|
|
11
|
-
/** 插件描述 */
|
|
12
|
-
description?: string;
|
|
13
|
-
/** 依赖的其他插件 */
|
|
14
|
-
dependencies?: string[];
|
|
15
|
-
/** 支持的标签 */
|
|
16
|
-
supportedTags?: string[];
|
|
17
|
-
/** 插件初始化 */
|
|
18
|
-
initialize?(context: DecoderContext): Promise<void> | void;
|
|
19
|
-
/** 插件销毁 */
|
|
20
|
-
destroy?(context: DecoderContext): Promise<void> | void;
|
|
21
|
-
/** 插件验证 */
|
|
22
|
-
validate?(context: DecoderContext): Promise<boolean> | boolean;
|
|
3
|
+
export interface IGPXPlugin extends ICorePlugin<DecoderContext> {
|
|
23
4
|
}
|
|
24
|
-
|
|
25
|
-
* 转换器插件接口
|
|
26
|
-
*/
|
|
27
|
-
export interface IConverterPlugin extends IPlugin {
|
|
28
|
-
/** 转换方法 */
|
|
29
|
-
convert(ast: TokenAST, context: DecoderContext): any | undefined;
|
|
30
|
-
/** 是否支持该标签 */
|
|
31
|
-
supports(tag: string): boolean;
|
|
32
|
-
/** 优先级(数字越小优先级越高) */
|
|
33
|
-
priority?: number;
|
|
5
|
+
export interface IGPXConverterPlugin extends ICoreConverterPlugin<DecoderContext> {
|
|
34
6
|
}
|
|
35
|
-
|
|
36
|
-
* 中间件插件接口
|
|
37
|
-
*/
|
|
38
|
-
export interface IMiddlewarePlugin extends IPlugin {
|
|
39
|
-
/** 在tokenize阶段执行 */
|
|
40
|
-
onTokenize?(tokens: Token[], context: DecoderContext): Promise<Token[]> | Token[];
|
|
41
|
-
/** 在AST生成阶段执行 */
|
|
42
|
-
onAstGenerate?(ast: TokenAST, context: DecoderContext): Promise<TokenAST> | TokenAST;
|
|
43
|
-
/** 在转换阶段执行 */
|
|
44
|
-
onConvert?(result: any, context: DecoderContext): Promise<any> | any;
|
|
45
|
-
/** 在完成阶段执行 */
|
|
46
|
-
onComplete?(result: GPX11Type, context: DecoderContext): Promise<GPX11Type> | GPX11Type;
|
|
47
|
-
/** 错误处理 */
|
|
48
|
-
onError?(error: Error, context: DecoderContext): Promise<void> | void;
|
|
7
|
+
export interface IGPXMiddlewarePlugin extends ICoreMiddlewarePlugin<DecoderContext, GPX11Type> {
|
|
49
8
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
abstract name: string;
|
|
55
|
-
abstract supportedTags: string[];
|
|
56
|
-
version: string;
|
|
57
|
-
priority: number;
|
|
58
|
-
abstract convert(ast: TokenAST, context: DecoderContext): any | undefined;
|
|
59
|
-
supports(tag: string): boolean;
|
|
60
|
-
initialize(context: DecoderContext): Promise<void>;
|
|
61
|
-
destroy(context: DecoderContext): Promise<void>;
|
|
62
|
-
validate(context: DecoderContext): Promise<boolean>;
|
|
63
|
-
protected parseFloat(value: string | number | undefined): number;
|
|
64
|
-
protected parseString(value: string | number | undefined): string;
|
|
65
|
-
protected hasRequiredAttributes(ast: TokenAST, required: string[]): boolean;
|
|
66
|
-
protected extractAttributes<U extends Record<string, any>>(ast: TokenAST, target: U, mapping: Record<string, keyof U>): void;
|
|
67
|
-
protected processChildren<U extends Record<string, any>>(ast: TokenAST, target: U, processors: Record<string, (child: TokenAST, target: U) => void>): void;
|
|
9
|
+
export declare abstract class BaseGPXConverter extends CoreBaseConverter<DecoderContext> implements IGPXConverterPlugin {
|
|
10
|
+
protected parseCoordinate(value: string | number | undefined): number | undefined;
|
|
11
|
+
protected parseGPXTime(value: string | undefined): Date | undefined;
|
|
12
|
+
protected extractNumericAttributes<U extends Record<string, any>>(ast: any, target: U, mapping: Record<string, keyof U>): void;
|
|
68
13
|
}
|
|
69
|
-
|
|
70
|
-
* 基础中间件抽象类
|
|
71
|
-
*/
|
|
72
|
-
export declare abstract class BaseMiddleware implements IMiddlewarePlugin {
|
|
73
|
-
abstract name: string;
|
|
74
|
-
version: string;
|
|
75
|
-
description: string;
|
|
76
|
-
initialize(context: DecoderContext): Promise<void>;
|
|
77
|
-
destroy(context: DecoderContext): Promise<void>;
|
|
78
|
-
validate(context: DecoderContext): Promise<boolean>;
|
|
79
|
-
onTokenize(tokens: Token[], context: DecoderContext): Promise<Token[]>;
|
|
80
|
-
onAstGenerate(ast: TokenAST, context: DecoderContext): Promise<TokenAST>;
|
|
81
|
-
onConvert(result: any, context: DecoderContext): Promise<any>;
|
|
82
|
-
onComplete(result: GPX11Type, context: DecoderContext): Promise<GPX11Type>;
|
|
14
|
+
export declare abstract class BaseGPXMiddleware extends CoreBaseMiddleware<DecoderContext, GPX11Type> implements IGPXMiddlewarePlugin {
|
|
83
15
|
onError(error: Error, context: DecoderContext): Promise<void>;
|
|
84
16
|
}
|
|
17
|
+
export type IPlugin = IGPXPlugin;
|
|
18
|
+
export type IConverterPlugin = IGPXConverterPlugin;
|
|
19
|
+
export type IMiddlewarePlugin = IGPXMiddlewarePlugin;
|
|
20
|
+
export declare const BaseConverter: typeof BaseGPXConverter;
|
|
21
|
+
export declare const BaseMiddleware: typeof BaseGPXMiddleware;
|
package/dist/GPX/converters.d.ts
CHANGED
|
@@ -1,108 +1,54 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { TokenAST
|
|
1
|
+
import { BaseGPXConverter } from "./base.js";
|
|
2
|
+
import { TokenAST } from "../types.js";
|
|
3
3
|
import { BoundsType, CopyrightType, EmailType, LinkType, MetadataType, PersonType, RteType, TrksegType, TrkType, WptType, DecoderContext } from "./types.js";
|
|
4
|
-
|
|
5
|
-
* WPT转换器
|
|
6
|
-
*/
|
|
7
|
-
export declare class WptConverter extends BaseConverter {
|
|
4
|
+
export declare class WptConverter extends BaseGPXConverter {
|
|
8
5
|
name: string;
|
|
9
6
|
supportedTags: string[];
|
|
10
7
|
version: string;
|
|
11
8
|
convert(ast: TokenAST, context: DecoderContext): WptType | undefined;
|
|
12
9
|
}
|
|
13
|
-
|
|
14
|
-
* Route转换器
|
|
15
|
-
*/
|
|
16
|
-
export declare class RteConverter extends BaseConverter {
|
|
10
|
+
export declare class RteConverter extends BaseGPXConverter {
|
|
17
11
|
name: string;
|
|
18
12
|
supportedTags: string[];
|
|
19
13
|
convert(ast: TokenAST, context: DecoderContext): RteType | undefined;
|
|
20
14
|
}
|
|
21
|
-
|
|
22
|
-
* Track转换器
|
|
23
|
-
*/
|
|
24
|
-
export declare class TrkConverter extends BaseConverter {
|
|
15
|
+
export declare class TrkConverter extends BaseGPXConverter {
|
|
25
16
|
name: string;
|
|
26
17
|
supportedTags: string[];
|
|
27
18
|
convert(ast: TokenAST, context: DecoderContext): TrkType | undefined;
|
|
28
19
|
}
|
|
29
|
-
|
|
30
|
-
* Track Segment转换器
|
|
31
|
-
*/
|
|
32
|
-
export declare class TrksegConverter extends BaseConverter {
|
|
20
|
+
export declare class TrksegConverter extends BaseGPXConverter {
|
|
33
21
|
name: string;
|
|
34
22
|
supportedTags: string[];
|
|
35
23
|
convert(ast: TokenAST, context: DecoderContext): TrksegType | undefined;
|
|
36
24
|
}
|
|
37
|
-
|
|
38
|
-
* Link转换器
|
|
39
|
-
*/
|
|
40
|
-
export declare class LinkConverter extends BaseConverter {
|
|
25
|
+
export declare class LinkConverter extends BaseGPXConverter {
|
|
41
26
|
name: string;
|
|
42
27
|
supportedTags: string[];
|
|
43
28
|
convert(ast: TokenAST, context: DecoderContext): LinkType | undefined;
|
|
44
29
|
}
|
|
45
|
-
|
|
46
|
-
* Metadata转换器
|
|
47
|
-
*/
|
|
48
|
-
export declare class MetadataConverter extends BaseConverter {
|
|
30
|
+
export declare class MetadataConverter extends BaseGPXConverter {
|
|
49
31
|
name: string;
|
|
50
32
|
supportedTags: string[];
|
|
51
33
|
convert(ast: TokenAST, context: DecoderContext): MetadataType | undefined;
|
|
52
34
|
}
|
|
53
|
-
|
|
54
|
-
* Person转换器
|
|
55
|
-
*/
|
|
56
|
-
export declare class PersonConverter extends BaseConverter {
|
|
35
|
+
export declare class PersonConverter extends BaseGPXConverter {
|
|
57
36
|
name: string;
|
|
58
37
|
supportedTags: string[];
|
|
59
38
|
convert(ast: TokenAST, context: DecoderContext): PersonType | undefined;
|
|
60
39
|
}
|
|
61
|
-
|
|
62
|
-
* Email转换器
|
|
63
|
-
*/
|
|
64
|
-
export declare class EmailConverter extends BaseConverter {
|
|
40
|
+
export declare class EmailConverter extends BaseGPXConverter {
|
|
65
41
|
name: string;
|
|
66
42
|
supportedTags: string[];
|
|
67
43
|
convert(ast: TokenAST, context: DecoderContext): EmailType | undefined;
|
|
68
44
|
}
|
|
69
|
-
|
|
70
|
-
* Copyright转换器
|
|
71
|
-
*/
|
|
72
|
-
export declare class CopyrightConverter extends BaseConverter {
|
|
45
|
+
export declare class CopyrightConverter extends BaseGPXConverter {
|
|
73
46
|
name: string;
|
|
74
47
|
supportedTags: string[];
|
|
75
48
|
convert(ast: TokenAST, context: DecoderContext): CopyrightType | undefined;
|
|
76
49
|
}
|
|
77
|
-
|
|
78
|
-
* Bounds转换器
|
|
79
|
-
*/
|
|
80
|
-
export declare class BoundsConverter extends BaseConverter {
|
|
50
|
+
export declare class BoundsConverter extends BaseGPXConverter {
|
|
81
51
|
name: string;
|
|
82
52
|
supportedTags: string[];
|
|
83
53
|
convert(ast: TokenAST, context: DecoderContext): BoundsType | undefined;
|
|
84
54
|
}
|
|
85
|
-
/**
|
|
86
|
-
* 性能监控中间件
|
|
87
|
-
*/
|
|
88
|
-
export declare class PerformanceMiddleware extends BaseMiddleware {
|
|
89
|
-
name: string;
|
|
90
|
-
description: string;
|
|
91
|
-
onTokenize(tokens: Token[], context: DecoderContext): Promise<Token[]>;
|
|
92
|
-
onAstGenerate(ast: TokenAST, context: DecoderContext): Promise<TokenAST>;
|
|
93
|
-
onComplete(result: any, context: DecoderContext): Promise<any>;
|
|
94
|
-
private countNodes;
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* 验证中间件
|
|
98
|
-
*/
|
|
99
|
-
export declare class ValidationMiddleware extends BaseMiddleware {
|
|
100
|
-
name: string;
|
|
101
|
-
description: string;
|
|
102
|
-
onComplete(result: any, context: DecoderContext): Promise<any>;
|
|
103
|
-
private validateGPX;
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* 注册所有默认中间件
|
|
107
|
-
*/
|
|
108
|
-
export declare function registerDefaultMiddlewares(decoder: any): Promise<void>;
|
package/dist/GPX/decoder.d.ts
CHANGED
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import { ExtensionsType, TokenAST } from "../types.js";
|
|
2
|
-
import {
|
|
2
|
+
import { IGPXConverterPlugin, IGPXMiddlewarePlugin } from "./base.js";
|
|
3
3
|
import { GPX11Type } from "./types.js";
|
|
4
|
-
/**
|
|
5
|
-
* GPX解码器主类
|
|
6
|
-
*/
|
|
7
4
|
export declare class GPXDecoder {
|
|
8
5
|
private converterPlugins;
|
|
9
6
|
private registeredPlugins;
|
|
@@ -12,95 +9,32 @@ export declare class GPXDecoder {
|
|
|
12
9
|
private initialized;
|
|
13
10
|
private defaultConvertersRegistered;
|
|
14
11
|
constructor();
|
|
15
|
-
/**
|
|
16
|
-
* 初始化流水线 - 注册固定的核心处理器
|
|
17
|
-
*/
|
|
18
12
|
private initializePipeline;
|
|
19
|
-
/**
|
|
20
|
-
* 自动注册默认转换器 - 处理标准GPX标签
|
|
21
|
-
*/
|
|
22
13
|
private registerDefaultConverters;
|
|
23
|
-
/**
|
|
24
|
-
* 为指定标签添加转换器,按优先级排序
|
|
25
|
-
*/
|
|
26
14
|
private addConverterForTag;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* 注册中间件插件 - 真正的扩展点
|
|
33
|
-
*/
|
|
34
|
-
registerMiddleware(plugin: IMiddlewarePlugin): Promise<void>;
|
|
35
|
-
/**
|
|
36
|
-
* 获取转换器(返回优先级最高的)
|
|
37
|
-
*/
|
|
38
|
-
getConverter(tag: string): IConverterPlugin | undefined;
|
|
39
|
-
/**
|
|
40
|
-
* 获取指定标签的所有转换器(按优先级排序)
|
|
41
|
-
*/
|
|
42
|
-
getAllConverters(tag: string): IConverterPlugin[];
|
|
43
|
-
/**
|
|
44
|
-
* 移除转换器
|
|
45
|
-
*/
|
|
15
|
+
registerConverter(plugin: IGPXConverterPlugin): Promise<void>;
|
|
16
|
+
registerMiddleware(plugin: IGPXMiddlewarePlugin): Promise<void>;
|
|
17
|
+
getConverter(tag: string): IGPXConverterPlugin | undefined;
|
|
18
|
+
getAllConverters(tag: string): IGPXConverterPlugin[];
|
|
46
19
|
unregisterConverter(pluginName: string): void;
|
|
47
|
-
/**
|
|
48
|
-
* 移除中间件
|
|
49
|
-
*/
|
|
50
20
|
unregisterMiddleware(name: string): void;
|
|
51
|
-
/**
|
|
52
|
-
* 列出所有已注册的转换器标签
|
|
53
|
-
*/
|
|
54
21
|
listConverters(): string[];
|
|
55
|
-
/**
|
|
56
|
-
* 列出所有已注册的转换器插件
|
|
57
|
-
*/
|
|
58
22
|
listConverterPlugins(): string[];
|
|
59
|
-
/**
|
|
60
|
-
* 列出所有已注册的中间件
|
|
61
|
-
*/
|
|
62
23
|
listMiddlewares(): string[];
|
|
63
|
-
/**
|
|
64
|
-
* 列出核心处理器(只读)
|
|
65
|
-
*/
|
|
66
24
|
listProcessors(): string[];
|
|
67
|
-
/**
|
|
68
|
-
* 获取标签的转换器详情(包括优先级信息)
|
|
69
|
-
*/
|
|
70
25
|
getConverterDetails(tag?: string): Record<string, Array<{
|
|
71
26
|
name: string;
|
|
72
27
|
priority: number;
|
|
73
28
|
}>>;
|
|
74
|
-
/**
|
|
75
|
-
* 获取中间件详情(包括支持的钩子)
|
|
76
|
-
*/
|
|
77
29
|
getMiddlewareDetails(): Array<{
|
|
78
30
|
name: string;
|
|
79
31
|
hooks: string[];
|
|
80
32
|
}>;
|
|
81
|
-
/**
|
|
82
|
-
* 初始化解码器
|
|
83
|
-
*/
|
|
84
33
|
initialize(): Promise<void>;
|
|
85
|
-
/**
|
|
86
|
-
* 销毁解码器
|
|
87
|
-
*/
|
|
88
34
|
destroy(): Promise<void>;
|
|
89
|
-
/**
|
|
90
|
-
* 创建解码上下文
|
|
91
|
-
*/
|
|
92
35
|
private createContext;
|
|
93
|
-
/**
|
|
94
|
-
* 执行中间件钩子
|
|
95
|
-
*/
|
|
96
36
|
private executeMiddlewareHook;
|
|
97
|
-
/**
|
|
98
|
-
* 主解析方法 - 固定的流水线 + 灵活的中间件
|
|
99
|
-
*/
|
|
100
37
|
parserByBuffer(buffer: Buffer): Promise<GPX11Type | undefined>;
|
|
101
|
-
/**
|
|
102
|
-
* 转换Extensions(向后兼容)
|
|
103
|
-
*/
|
|
104
38
|
convertExtensions(extensionsAST: TokenAST): ExtensionsType;
|
|
105
39
|
}
|
|
106
40
|
declare const _default: {
|