trackswap 0.0.1 → 0.0.2

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.
Files changed (78) hide show
  1. package/dist/FIT/base.d.ts +91 -0
  2. package/dist/FIT/base.js +101 -0
  3. package/dist/FIT/crc.d.ts +1 -0
  4. package/dist/FIT/crc.js +16 -0
  5. package/dist/FIT/decoder.d.ts +83 -0
  6. package/dist/FIT/decoder.js +323 -0
  7. package/dist/FIT/encoder.d.ts +142 -0
  8. package/dist/FIT/encoder.js +445 -0
  9. package/dist/FIT/index.d.ts +12 -0
  10. package/dist/FIT/index.js +13 -0
  11. package/dist/FIT/mesg.d.ts +40 -0
  12. package/dist/FIT/mesg.js +208 -0
  13. package/dist/FIT/middleware.d.ts +48 -0
  14. package/dist/FIT/middleware.js +206 -0
  15. package/dist/FIT/plugins.d.ts +26 -0
  16. package/dist/FIT/plugins.js +104 -0
  17. package/dist/FIT/processor.d.ts +58 -0
  18. package/dist/FIT/processor.js +170 -0
  19. package/dist/FIT/types/course_point.d.ts +56 -0
  20. package/dist/FIT/types/course_point.js +58 -0
  21. package/dist/FIT/types/event.d.ts +49 -0
  22. package/dist/FIT/types/event.js +50 -0
  23. package/dist/FIT/types/event_type.d.ts +18 -0
  24. package/dist/FIT/types/event_type.js +19 -0
  25. package/dist/FIT/types/file.d.ts +23 -0
  26. package/dist/FIT/types/file.js +24 -0
  27. package/dist/FIT/types/index.d.ts +119 -0
  28. package/dist/FIT/types/index.js +297 -0
  29. package/dist/FIT/types/mesg_num.d.ts +105 -0
  30. package/dist/FIT/types/mesg_num.js +106 -0
  31. package/dist/FIT/types/sport.d.ts +47 -0
  32. package/dist/FIT/types/sport.js +48 -0
  33. package/dist/FIT/types.d.ts +231 -0
  34. package/dist/FIT/types.js +1 -0
  35. package/dist/FIT/util.d.ts +1 -0
  36. package/dist/FIT/util.js +7 -0
  37. package/dist/GPX/base.d.ts +43 -67
  38. package/dist/GPX/base.js +40 -67
  39. package/dist/GPX/converters.d.ts +12 -36
  40. package/dist/GPX/converters.js +11 -103
  41. package/dist/GPX/decoder.d.ts +5 -5
  42. package/dist/GPX/decoder.js +6 -0
  43. package/dist/GPX/encoder.d.ts +4 -0
  44. package/dist/GPX/encoder.js +3 -0
  45. package/dist/GPX/index.d.ts +1 -1
  46. package/dist/GPX/index.js +1 -1
  47. package/dist/GPX/middleware.d.ts +27 -0
  48. package/dist/GPX/middleware.js +93 -0
  49. package/dist/GPX/processor.d.ts +1 -1
  50. package/dist/GPX/processor.js +12 -11
  51. package/dist/GPX/types.d.ts +2 -3
  52. package/dist/TCX/base.d.ts +52 -0
  53. package/dist/TCX/base.js +62 -0
  54. package/dist/TCX/converters.d.ts +75 -0
  55. package/dist/TCX/converters.js +333 -0
  56. package/dist/TCX/decoder.d.ts +87 -0
  57. package/dist/TCX/decoder.js +350 -0
  58. package/dist/TCX/encoder.d.ts +150 -0
  59. package/dist/TCX/encoder.js +513 -0
  60. package/dist/TCX/index.d.ts +10 -0
  61. package/dist/TCX/index.js +9 -0
  62. package/dist/TCX/middleware.d.ts +27 -0
  63. package/dist/TCX/middleware.js +93 -0
  64. package/dist/TCX/processor.d.ts +48 -0
  65. package/dist/TCX/processor.js +197 -0
  66. package/dist/TCX/types.d.ts +203 -0
  67. package/dist/TCX/types.js +1 -0
  68. package/dist/core/base.d.ts +119 -0
  69. package/dist/core/base.js +138 -0
  70. package/dist/core/decoder.d.ts +66 -0
  71. package/dist/core/decoder.js +90 -0
  72. package/dist/core/index.d.ts +2 -0
  73. package/dist/core/index.js +4 -0
  74. package/dist/core/processor.d.ts +69 -0
  75. package/dist/core/processor.js +265 -0
  76. package/dist/core/xml-utils.d.ts +41 -0
  77. package/dist/core/xml-utils.js +140 -0
  78. package/package.json +8 -5
@@ -0,0 +1,231 @@
1
+ import { IProcessingContext } from "../core/base.js";
2
+ /**
3
+ * Session 对应 AbstractTrackType Lap 对应 RouteSegType Records 对应 RouteType 每个Record 对应 PointType
4
+ */
5
+ export interface FITFileType {
6
+ fileIdMesgs?: FileIdMesgType[];
7
+ fileCreatorMesgs?: FileCreatorMesgType[];
8
+ eventMesgs?: EventMesgType[];
9
+ deviceInfoMesgs?: DeviceInfoMesgType[];
10
+ deviceSettingsMesgs?: DeviceSettingsMesgType[];
11
+ userProfileMesgs?: UserProfileMesgType[];
12
+ sessionMesgs?: SessionMesgType[];
13
+ courseMesgs?: any[];
14
+ }
15
+ export type FITDecoderMesgs = {
16
+ fileIdMesgs?: FileIdMesgType[];
17
+ fileCreatorMesgs?: FileCreatorMesgType[];
18
+ eventMesgs?: EventMesgType[];
19
+ deviceInfoMesgs?: DeviceInfoMesgType[];
20
+ deviceSettingsMesgs?: DeviceSettingsMesgType[];
21
+ userProfileMesgs?: UserProfileMesgType[];
22
+ sessionMesgs?: Omit<SessionMesgType, "lapMesgs">[];
23
+ lapMesgs?: Omit<SessionMesgType, "recordMesgs">[];
24
+ recordMesgs?: RecordMesgType[];
25
+ courseMesgs?: any[];
26
+ [key: string]: any[] | undefined;
27
+ };
28
+ export interface FileIdMesgType {
29
+ serialNumber?: number;
30
+ timeCreated?: string;
31
+ manufacturer?: string;
32
+ product?: number;
33
+ type?: string;
34
+ garminProduct?: string;
35
+ }
36
+ export interface FileCreatorMesgType {
37
+ softwareVersion?: number;
38
+ }
39
+ export interface EventMesgType {
40
+ timestamp?: string;
41
+ data?: number;
42
+ event?: string;
43
+ eventType?: string;
44
+ eventGroup?: number;
45
+ timerTrigger?: string;
46
+ }
47
+ export interface DeviceInfoMesgType {
48
+ timestamp?: string;
49
+ serialNumber?: number;
50
+ manufacturer?: string;
51
+ product?: number;
52
+ softwareVersion?: number;
53
+ deviceIndex?: string;
54
+ deviceType?: number;
55
+ garminProduct?: string;
56
+ }
57
+ export interface DeviceSettingsMesgType {
58
+ utcOffset?: number;
59
+ timeOffset?: number;
60
+ activeTimeZone?: number;
61
+ timeMode?: string;
62
+ timeZoneOffset?: number;
63
+ backlightMode?: string;
64
+ }
65
+ /**
66
+ * FIT userProfileMesg
67
+ */
68
+ export interface UserProfileMesgType {
69
+ friendlyName?: string;
70
+ weight?: number;
71
+ gender?: string;
72
+ age?: number;
73
+ height?: number;
74
+ language?: string;
75
+ elevSetting?: string;
76
+ weightSetting?: string;
77
+ defaultMaxBikingHeartRate?: number;
78
+ defaultMaxHeartRate?: number;
79
+ hrSetting?: string;
80
+ speedSetting?: string;
81
+ distSetting?: string;
82
+ powerSetting?: string;
83
+ activityClass?: number;
84
+ positionSetting?: string;
85
+ temperatureSetting?: string;
86
+ }
87
+ /**
88
+ * FIT SessionMesg
89
+ */
90
+ export interface SessionMesgType {
91
+ /**
92
+ * 时间
93
+ */
94
+ timestamp?: string;
95
+ /**
96
+ * 开始时间
97
+ */
98
+ startTime?: string;
99
+ startPositionLat?: number;
100
+ startPositionLong?: number;
101
+ totalElapsedTime?: number;
102
+ totalTimerTime?: number;
103
+ totalDistance?: number;
104
+ totalCycles?: number;
105
+ necLat?: number;
106
+ necLong?: number;
107
+ swcLat?: number;
108
+ swcLong?: number;
109
+ totalWork?: number;
110
+ messageIndex?: number;
111
+ totalCalories?: number;
112
+ totalFatCalories?: number;
113
+ avgSpeed?: number;
114
+ maxSpeed?: number;
115
+ avgPower?: number;
116
+ maxPower?: number;
117
+ /**
118
+ * 总爬升
119
+ */
120
+ totalAscent?: number;
121
+ /**
122
+ * 总下降
123
+ */
124
+ totalDescent?: number;
125
+ firstLapIndex?: number;
126
+ numLaps?: number;
127
+ normalizedPower?: number;
128
+ trainingStressScore?: number;
129
+ intensityFactor?: number;
130
+ thresholdPower?: number;
131
+ event?: string;
132
+ eventType?: string;
133
+ sport?: string;
134
+ subSport?: string;
135
+ avgCadence?: number;
136
+ maxCadence?: number;
137
+ trigger?: number;
138
+ totalStrokes?: number;
139
+ enhancedAvgSpeed?: number;
140
+ enhancedMaxSpeed?: number;
141
+ lapMesgs?: LapMesgType[];
142
+ }
143
+ /**
144
+ * FIT RecordMesg
145
+ */
146
+ export interface RecordMesgType {
147
+ timestamp?: string;
148
+ positionLat?: number;
149
+ positionLong?: number;
150
+ altitude?: number;
151
+ distance?: number;
152
+ accumulatedPower?: number;
153
+ speed?: number;
154
+ power?: number;
155
+ cadence?: number;
156
+ heartRate?: number;
157
+ temperature?: number;
158
+ enhancedAltitude?: number;
159
+ enhancedSpeed?: number;
160
+ [key: string]: number | string | undefined | any;
161
+ }
162
+ /**
163
+ * FIT 文件额外记录的数据 LapMesg
164
+ */
165
+ export interface LapMesgType {
166
+ timestamp?: string;
167
+ startTime?: string;
168
+ startPositionLat?: number;
169
+ startPositionLong?: number;
170
+ endPositionLat?: number;
171
+ endPositionLong?: number;
172
+ totalElapsedTime?: number;
173
+ totalTimerTime?: number;
174
+ totalDistance?: number;
175
+ totalCycles?: number;
176
+ totalWork?: number;
177
+ messageIndex?: number;
178
+ totalCalories?: number;
179
+ totalFatCalories?: number;
180
+ avgSpeed?: number;
181
+ maxSpeed?: number;
182
+ avgPower?: number;
183
+ maxPower?: number;
184
+ totalAscent?: number;
185
+ totalDescent?: number;
186
+ normalizedPower?: number;
187
+ event?: string;
188
+ eventType?: string;
189
+ avgCadence?: number;
190
+ maxCadence?: number;
191
+ lapTrigger?: string;
192
+ sport?: string;
193
+ totalStrokes?: number;
194
+ enhancedAvgSpeed?: number;
195
+ enhancedMaxSpeed?: number;
196
+ recordMesgs?: RecordMesgType[];
197
+ }
198
+ export interface ActivityMesgType {
199
+ timestamp?: string;
200
+ totalTimerTime?: number;
201
+ numSessions?: number;
202
+ type?: string;
203
+ event?: string;
204
+ eventType?: string;
205
+ [key: string]: number | string | undefined | any;
206
+ }
207
+ /**
208
+ * FIT 消息处理上下文
209
+ */
210
+ export interface FITContext extends IProcessingContext {
211
+ /** 原始二进制数据 */
212
+ rawData?: Buffer;
213
+ /** FIT SDK 解析的原始消息 */
214
+ rawMessages?: FITDecoderMesgs;
215
+ /** 最终结果 */
216
+ result?: FITFileType;
217
+ /** FIT 文件头信息 */
218
+ fileHeader?: {
219
+ type?: string;
220
+ manufacturer?: string;
221
+ product?: number;
222
+ };
223
+ /** FIT 特定的性能统计 */
224
+ performance: {
225
+ startTime: number;
226
+ parseTime?: number;
227
+ extractTime?: number;
228
+ structureTime?: number;
229
+ endTime?: number;
230
+ };
231
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export declare const FITRecordOriginKey: string[];
@@ -0,0 +1,7 @@
1
+ export const FITRecordOriginKey = [
2
+ 'speed',
3
+ 'power',
4
+ 'cadence',
5
+ 'temperature',
6
+ 'heartRate',
7
+ ];
@@ -1,84 +1,60 @@
1
- import { Token, TokenAST } from "../types.js";
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
3
  /**
4
- * 插件接口
4
+ * GPX 插件接口(继承通用插件接口)
5
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;
6
+ export interface IGPXPlugin extends ICorePlugin<DecoderContext> {
23
7
  }
24
8
  /**
25
- * 转换器插件接口
9
+ * GPX 转换器插件接口(继承通用转换器接口)
26
10
  */
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;
11
+ export interface IGPXConverterPlugin extends ICoreConverterPlugin<DecoderContext> {
34
12
  }
35
13
  /**
36
- * 中间件插件接口
14
+ * GPX 中间件插件接口(继承通用中间件接口)
37
15
  */
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;
16
+ export interface IGPXMiddlewarePlugin extends ICoreMiddlewarePlugin<DecoderContext, GPX11Type> {
49
17
  }
50
18
  /**
51
- * 基础转换器抽象类
19
+ * GPX 基础转换器抽象类(继承通用基础转换器)
52
20
  */
53
- export declare abstract class BaseConverter implements IConverterPlugin {
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;
21
+ export declare abstract class BaseGPXConverter extends CoreBaseConverter<DecoderContext> implements IGPXConverterPlugin {
22
+ /**
23
+ * 解析 GPX 坐标值(经纬度)
24
+ */
25
+ protected parseCoordinate(value: string | number | undefined): number | undefined;
26
+ /**
27
+ * 解析 GPX 时间格式
28
+ */
29
+ protected parseGPXTime(value: string | undefined): Date | undefined;
30
+ /**
31
+ * 提取数值属性(GPX 常用的处理方式)
32
+ */
33
+ protected extractNumericAttributes<U extends Record<string, any>>(ast: any, target: U, mapping: Record<string, keyof U>): void;
68
34
  }
69
35
  /**
70
- * 基础中间件抽象类
36
+ * GPX 基础中间件抽象类(继承通用基础中间件)
71
37
  */
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>;
38
+ export declare abstract class BaseGPXMiddleware extends CoreBaseMiddleware<DecoderContext, GPX11Type> implements IGPXMiddlewarePlugin {
83
39
  onError(error: Error, context: DecoderContext): Promise<void>;
84
40
  }
41
+ /**
42
+ * @deprecated 使用 IGPXPlugin 替代
43
+ */
44
+ export type IPlugin = IGPXPlugin;
45
+ /**
46
+ * @deprecated 使用 IGPXConverterPlugin 替代
47
+ */
48
+ export type IConverterPlugin = IGPXConverterPlugin;
49
+ /**
50
+ * @deprecated 使用 IGPXMiddlewarePlugin 替代
51
+ */
52
+ export type IMiddlewarePlugin = IGPXMiddlewarePlugin;
53
+ /**
54
+ * @deprecated 使用 BaseGPXConverter 替代
55
+ */
56
+ export declare const BaseConverter: typeof BaseGPXConverter;
57
+ /**
58
+ * @deprecated 使用 BaseGPXMiddleware 替代
59
+ */
60
+ export declare const BaseMiddleware: typeof BaseGPXMiddleware;
package/dist/GPX/base.js CHANGED
@@ -1,83 +1,56 @@
1
- // ============ 基础工具类 ============
1
+ import { BaseConverter as CoreBaseConverter, BaseMiddleware as CoreBaseMiddleware, } from "../core/base.js";
2
+ // ============ GPX 特定基础类 ============
2
3
  /**
3
- * 基础转换器抽象类
4
+ * GPX 基础转换器抽象类(继承通用基础转换器)
4
5
  */
5
- export class BaseConverter {
6
- constructor() {
7
- this.version = "1.0.0";
8
- this.priority = 100;
9
- }
10
- supports(tag) {
11
- return this.supportedTags.includes(tag);
12
- }
13
- async initialize(context) {
14
- context.metadata.set(`plugin:${this.name}:initialized`, true);
15
- }
16
- async destroy(context) {
17
- context.metadata.delete(`plugin:${this.name}:initialized`);
18
- }
19
- async validate(context) {
20
- return true;
21
- }
22
- // 工具方法
23
- parseFloat(value) {
24
- if (typeof value === "number")
25
- return value;
26
- if (typeof value === "string")
27
- return parseFloat(value) || 0;
28
- return 0;
29
- }
30
- parseString(value) {
31
- return String(value || "");
32
- }
33
- hasRequiredAttributes(ast, required) {
34
- return required.every((attr) => ast.attributes?.[attr]);
35
- }
36
- extractAttributes(ast, target, mapping) {
6
+ export class BaseGPXConverter extends CoreBaseConverter {
7
+ // GPX 特定的工具方法可以在这里添加
8
+ /**
9
+ * 解析 GPX 坐标值(经纬度)
10
+ */
11
+ parseCoordinate(value) {
12
+ const coord = this.parseFloat(value);
13
+ return coord === 0 ? undefined : coord;
14
+ }
15
+ /**
16
+ * 解析 GPX 时间格式
17
+ */
18
+ parseGPXTime(value) {
19
+ if (!value)
20
+ return undefined;
21
+ // GPX 使用 ISO 8601 格式
22
+ const date = new Date(value);
23
+ return isNaN(date.getTime()) ? undefined : date;
24
+ }
25
+ /**
26
+ * 提取数值属性(GPX 常用的处理方式)
27
+ */
28
+ extractNumericAttributes(ast, target, mapping) {
37
29
  if (!ast.attributes)
38
30
  return;
39
31
  Object.entries(ast.attributes).forEach(([key, value]) => {
40
32
  const targetKey = mapping[key];
41
- if (targetKey && targetKey in target) {
33
+ if (targetKey && targetKey in target && typeof value !== "undefined") {
42
34
  target[targetKey] = this.parseFloat(value);
43
35
  }
44
36
  });
45
37
  }
46
- processChildren(ast, target, processors) {
47
- ast.children?.forEach((child) => {
48
- const processor = processors[child.tag];
49
- if (processor) {
50
- processor(child, target);
51
- }
52
- });
53
- }
54
38
  }
55
39
  /**
56
- * 基础中间件抽象类
40
+ * GPX 基础中间件抽象类(继承通用基础中间件)
57
41
  */
58
- export class BaseMiddleware {
59
- constructor() {
60
- this.version = "1.0.0";
61
- this.description = "";
62
- }
63
- async initialize(context) { }
64
- async destroy(context) { }
65
- async validate(context) {
66
- return true;
67
- }
68
- async onTokenize(tokens, context) {
69
- return tokens;
70
- }
71
- async onAstGenerate(ast, context) {
72
- return ast;
73
- }
74
- async onConvert(result, context) {
75
- return result;
76
- }
77
- async onComplete(result, context) {
78
- return result;
79
- }
42
+ export class BaseGPXMiddleware extends CoreBaseMiddleware {
43
+ // GPX 特定的中间件逻辑可以在这里添加
80
44
  async onError(error, context) {
81
- console.error(`中间件 ${this.name} 处理错误:`, error);
45
+ console.error(`GPX中间件 ${this.name} 处理错误:`, error);
46
+ context.warnings.push(`中间件 ${this.name} 错误: ${error.message}`);
82
47
  }
83
48
  }
49
+ /**
50
+ * @deprecated 使用 BaseGPXConverter 替代
51
+ */
52
+ export const BaseConverter = BaseGPXConverter;
53
+ /**
54
+ * @deprecated 使用 BaseGPXMiddleware 替代
55
+ */
56
+ export const BaseMiddleware = BaseGPXMiddleware;
@@ -1,10 +1,10 @@
1
- import { BaseConverter, BaseMiddleware } from "./base.js";
2
- import { TokenAST, Token } from "../types.js";
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
4
  /**
5
5
  * WPT转换器
6
6
  */
7
- export declare class WptConverter extends BaseConverter {
7
+ export declare class WptConverter extends BaseGPXConverter {
8
8
  name: string;
9
9
  supportedTags: string[];
10
10
  version: string;
@@ -13,7 +13,7 @@ export declare class WptConverter extends BaseConverter {
13
13
  /**
14
14
  * Route转换器
15
15
  */
16
- export declare class RteConverter extends BaseConverter {
16
+ export declare class RteConverter extends BaseGPXConverter {
17
17
  name: string;
18
18
  supportedTags: string[];
19
19
  convert(ast: TokenAST, context: DecoderContext): RteType | undefined;
@@ -21,7 +21,7 @@ export declare class RteConverter extends BaseConverter {
21
21
  /**
22
22
  * Track转换器
23
23
  */
24
- export declare class TrkConverter extends BaseConverter {
24
+ export declare class TrkConverter extends BaseGPXConverter {
25
25
  name: string;
26
26
  supportedTags: string[];
27
27
  convert(ast: TokenAST, context: DecoderContext): TrkType | undefined;
@@ -29,7 +29,7 @@ export declare class TrkConverter extends BaseConverter {
29
29
  /**
30
30
  * Track Segment转换器
31
31
  */
32
- export declare class TrksegConverter extends BaseConverter {
32
+ export declare class TrksegConverter extends BaseGPXConverter {
33
33
  name: string;
34
34
  supportedTags: string[];
35
35
  convert(ast: TokenAST, context: DecoderContext): TrksegType | undefined;
@@ -37,7 +37,7 @@ export declare class TrksegConverter extends BaseConverter {
37
37
  /**
38
38
  * Link转换器
39
39
  */
40
- export declare class LinkConverter extends BaseConverter {
40
+ export declare class LinkConverter extends BaseGPXConverter {
41
41
  name: string;
42
42
  supportedTags: string[];
43
43
  convert(ast: TokenAST, context: DecoderContext): LinkType | undefined;
@@ -45,7 +45,7 @@ export declare class LinkConverter extends BaseConverter {
45
45
  /**
46
46
  * Metadata转换器
47
47
  */
48
- export declare class MetadataConverter extends BaseConverter {
48
+ export declare class MetadataConverter extends BaseGPXConverter {
49
49
  name: string;
50
50
  supportedTags: string[];
51
51
  convert(ast: TokenAST, context: DecoderContext): MetadataType | undefined;
@@ -53,7 +53,7 @@ export declare class MetadataConverter extends BaseConverter {
53
53
  /**
54
54
  * Person转换器
55
55
  */
56
- export declare class PersonConverter extends BaseConverter {
56
+ export declare class PersonConverter extends BaseGPXConverter {
57
57
  name: string;
58
58
  supportedTags: string[];
59
59
  convert(ast: TokenAST, context: DecoderContext): PersonType | undefined;
@@ -61,7 +61,7 @@ export declare class PersonConverter extends BaseConverter {
61
61
  /**
62
62
  * Email转换器
63
63
  */
64
- export declare class EmailConverter extends BaseConverter {
64
+ export declare class EmailConverter extends BaseGPXConverter {
65
65
  name: string;
66
66
  supportedTags: string[];
67
67
  convert(ast: TokenAST, context: DecoderContext): EmailType | undefined;
@@ -69,7 +69,7 @@ export declare class EmailConverter extends BaseConverter {
69
69
  /**
70
70
  * Copyright转换器
71
71
  */
72
- export declare class CopyrightConverter extends BaseConverter {
72
+ export declare class CopyrightConverter extends BaseGPXConverter {
73
73
  name: string;
74
74
  supportedTags: string[];
75
75
  convert(ast: TokenAST, context: DecoderContext): CopyrightType | undefined;
@@ -77,32 +77,8 @@ export declare class CopyrightConverter extends BaseConverter {
77
77
  /**
78
78
  * Bounds转换器
79
79
  */
80
- export declare class BoundsConverter extends BaseConverter {
80
+ export declare class BoundsConverter extends BaseGPXConverter {
81
81
  name: string;
82
82
  supportedTags: string[];
83
83
  convert(ast: TokenAST, context: DecoderContext): BoundsType | undefined;
84
84
  }
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>;