trackswap 0.0.2 → 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 +0 -30
- package/dist/FIT/decoder.d.ts +0 -48
- package/dist/FIT/encoder.d.ts +0 -97
- package/dist/FIT/mesg.d.ts +0 -3
- package/dist/FIT/middleware.d.ts +0 -15
- package/dist/FIT/plugins.d.ts +0 -9
- package/dist/FIT/processor.d.ts +0 -24
- package/dist/FIT/types/mesg_num.d.ts +102 -102
- package/dist/FIT/types/sport.d.ts +44 -44
- package/dist/FIT/types.d.ts +0 -35
- package/dist/GPX/base.d.ts +0 -39
- package/dist/GPX/converters.d.ts +0 -30
- package/dist/GPX/decoder.d.ts +0 -66
- package/dist/GPX/encoder.d.ts +0 -109
- package/dist/GPX/middleware.d.ts +0 -9
- package/dist/GPX/processor.d.ts +0 -18
- package/dist/GPX/types.d.ts +0 -108
- package/dist/TCX/base.d.ts +0 -33
- package/dist/TCX/converters.d.ts +0 -24
- package/dist/TCX/decoder.d.ts +0 -54
- package/dist/TCX/encoder.d.ts +0 -109
- package/dist/TCX/index.d.ts +4 -1
- package/dist/TCX/middleware.d.ts +0 -9
- package/dist/TCX/processor.d.ts +0 -18
- package/dist/TCX/types.d.ts +0 -13
- package/dist/TrackSwap.d.ts +37 -33
- package/dist/core/base.d.ts +0 -46
- package/dist/core/xml-utils.d.ts +0 -24
- 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 +18 -3
- package/dist/FIT/base.js +0 -101
- package/dist/FIT/crc.js +0 -16
- package/dist/FIT/decoder.js +0 -323
- package/dist/FIT/encoder.js +0 -445
- package/dist/FIT/index.js +0 -13
- package/dist/FIT/mesg.js +0 -208
- package/dist/FIT/middleware.js +0 -206
- package/dist/FIT/plugins.js +0 -104
- package/dist/FIT/processor.js +0 -170
- package/dist/FIT/types/course_point.js +0 -58
- package/dist/FIT/types/event.js +0 -50
- package/dist/FIT/types/event_type.js +0 -19
- package/dist/FIT/types/file.js +0 -24
- package/dist/FIT/types/index.js +0 -297
- package/dist/FIT/types/mesg_num.js +0 -106
- package/dist/FIT/types/sport.js +0 -48
- package/dist/FIT/types.js +0 -1
- package/dist/FIT/util.js +0 -7
- package/dist/GPX/base.js +0 -56
- package/dist/GPX/converters.js +0 -352
- package/dist/GPX/decoder.js +0 -409
- package/dist/GPX/encoder.js +0 -513
- package/dist/GPX/extensions/index.js +0 -14
- package/dist/GPX/index.js +0 -11
- package/dist/GPX/middleware.js +0 -93
- package/dist/GPX/processor.js +0 -188
- package/dist/GPX/types.js +0 -1
- package/dist/GPX/util.js +0 -18
- package/dist/TCX/base.js +0 -62
- package/dist/TCX/converters.js +0 -333
- package/dist/TCX/decoder.js +0 -350
- package/dist/TCX/encoder.js +0 -513
- package/dist/TCX/index.js +0 -9
- package/dist/TCX/middleware.js +0 -93
- package/dist/TCX/processor.js +0 -197
- package/dist/TCX/types.js +0 -1
- package/dist/TrackSwap.js +0 -84
- package/dist/core/base.js +0 -138
- package/dist/core/decoder.d.ts +0 -66
- package/dist/core/decoder.js +0 -90
- package/dist/core/index.js +0 -4
- package/dist/core/processor.d.ts +0 -69
- package/dist/core/processor.js +0 -265
- package/dist/core/xml-utils.js +0 -140
- package/dist/types.js +0 -1
package/dist/FIT/base.d.ts
CHANGED
|
@@ -1,47 +1,23 @@
|
|
|
1
1
|
import { IPlugin } from "../core/base.js";
|
|
2
2
|
import { FITContext, FITDecoderMesgs, FITFileType } from "./types.js";
|
|
3
|
-
/**
|
|
4
|
-
* FIT 消息转换器插件接口
|
|
5
|
-
*/
|
|
6
3
|
export interface IFITMessageConverter extends IPlugin<FITContext> {
|
|
7
|
-
/** 支持的消息类型 */
|
|
8
4
|
supportedMessageTypes: string[];
|
|
9
|
-
/** 转换消息 */
|
|
10
5
|
convertMessages(messages: any[], context: FITContext): any;
|
|
11
|
-
/** 是否支持该消息类型 */
|
|
12
6
|
supports(messageType: string): boolean;
|
|
13
|
-
/** 优先级 */
|
|
14
7
|
priority?: number;
|
|
15
8
|
}
|
|
16
|
-
/**
|
|
17
|
-
* FIT 数据结构化插件接口
|
|
18
|
-
*/
|
|
19
9
|
export interface IFITStructurePlugin extends IPlugin<FITContext> {
|
|
20
|
-
/** 结构化数据 */
|
|
21
10
|
structureData(messages: FITDecoderMesgs, context: FITContext): Partial<FITFileType>;
|
|
22
|
-
/** 优先级 */
|
|
23
11
|
priority?: number;
|
|
24
12
|
}
|
|
25
|
-
/**
|
|
26
|
-
* FIT 中间件插件接口
|
|
27
|
-
*/
|
|
28
13
|
export interface IFITMiddlewarePlugin extends IPlugin<FITContext> {
|
|
29
|
-
/** 优先级 */
|
|
30
14
|
priority?: number;
|
|
31
|
-
/** 在解析阶段执行 */
|
|
32
15
|
onParse?(buffer: Buffer, context: FITContext): Promise<Buffer> | Buffer;
|
|
33
|
-
/** 在消息提取阶段执行 */
|
|
34
16
|
onExtractMessages?(messages: FITDecoderMesgs, context: FITContext): Promise<FITDecoderMesgs> | FITDecoderMesgs;
|
|
35
|
-
/** 在数据结构化阶段执行 */
|
|
36
17
|
onStructure?(result: Partial<FITFileType>, context: FITContext): Promise<Partial<FITFileType>> | Partial<FITFileType>;
|
|
37
|
-
/** 在完成阶段执行 */
|
|
38
18
|
onComplete?(result: FITFileType, context: FITContext): Promise<FITFileType> | FITFileType;
|
|
39
|
-
/** 错误处理 */
|
|
40
19
|
onError?(error: Error, context: FITContext): Promise<void> | void;
|
|
41
20
|
}
|
|
42
|
-
/**
|
|
43
|
-
* FIT 消息转换器基类
|
|
44
|
-
*/
|
|
45
21
|
export declare abstract class BaseFITMessageConverter implements IFITMessageConverter {
|
|
46
22
|
abstract name: string;
|
|
47
23
|
abstract supportedMessageTypes: string[];
|
|
@@ -60,9 +36,6 @@ export declare abstract class BaseFITMessageConverter implements IFITMessageConv
|
|
|
60
36
|
records: any[];
|
|
61
37
|
}>;
|
|
62
38
|
}
|
|
63
|
-
/**
|
|
64
|
-
* FIT 数据结构化插件基类
|
|
65
|
-
*/
|
|
66
39
|
export declare abstract class BaseFITStructurePlugin implements IFITStructurePlugin {
|
|
67
40
|
abstract name: string;
|
|
68
41
|
version: string;
|
|
@@ -72,9 +45,6 @@ export declare abstract class BaseFITStructurePlugin implements IFITStructurePlu
|
|
|
72
45
|
destroy(context: FITContext): Promise<void>;
|
|
73
46
|
validate(context: FITContext): Promise<boolean>;
|
|
74
47
|
}
|
|
75
|
-
/**
|
|
76
|
-
* FIT 中间件基类
|
|
77
|
-
*/
|
|
78
48
|
export declare abstract class BaseFITMiddleware implements IFITMiddlewarePlugin {
|
|
79
49
|
abstract name: string;
|
|
80
50
|
version: string;
|
package/dist/FIT/decoder.d.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import { IFITMessageConverter, IFITStructurePlugin, IFITMiddlewarePlugin } from "./base.js";
|
|
2
2
|
import { FITFileType } from "./types.js";
|
|
3
|
-
/**
|
|
4
|
-
* FIT 解码器 - 遵循 GPX 风格的插件架构
|
|
5
|
-
*/
|
|
6
3
|
export declare class FITDecoder {
|
|
7
4
|
private converterPlugins;
|
|
8
5
|
private registeredPlugins;
|
|
@@ -12,65 +9,20 @@ export declare class FITDecoder {
|
|
|
12
9
|
private initialized;
|
|
13
10
|
private defaultPluginsRegistered;
|
|
14
11
|
constructor();
|
|
15
|
-
/**
|
|
16
|
-
* 初始化流水线 - 注册固定的核心处理器
|
|
17
|
-
*/
|
|
18
12
|
private initializePipeline;
|
|
19
|
-
/**
|
|
20
|
-
* 自动注册默认插件
|
|
21
|
-
*/
|
|
22
13
|
private registerDefaultPlugins;
|
|
23
|
-
/**
|
|
24
|
-
* 为指定消息类型添加转换器,按优先级排序
|
|
25
|
-
*/
|
|
26
14
|
private addConverterForMessageType;
|
|
27
|
-
/**
|
|
28
|
-
* 添加结构化插件
|
|
29
|
-
*/
|
|
30
15
|
private addStructurePlugin;
|
|
31
|
-
/**
|
|
32
|
-
* 注册消息转换器插件
|
|
33
|
-
*/
|
|
34
16
|
registerMessageConverter(plugin: IFITMessageConverter): Promise<void>;
|
|
35
|
-
/**
|
|
36
|
-
* 注册结构化插件
|
|
37
|
-
*/
|
|
38
17
|
registerStructurePlugin(plugin: IFITStructurePlugin): Promise<void>;
|
|
39
|
-
/**
|
|
40
|
-
* 注册中间件插件
|
|
41
|
-
*/
|
|
42
18
|
registerMiddleware(plugin: IFITMiddlewarePlugin): Promise<void>;
|
|
43
|
-
/**
|
|
44
|
-
* 获取消息类型转换器(返回优先级最高的)
|
|
45
|
-
*/
|
|
46
19
|
getConverter(messageType: string): IFITMessageConverter | undefined;
|
|
47
|
-
/**
|
|
48
|
-
* 获取指定消息类型的所有转换器(按优先级排序)
|
|
49
|
-
*/
|
|
50
20
|
getConverters(messageType: string): IFITMessageConverter[];
|
|
51
|
-
/**
|
|
52
|
-
* 移除插件
|
|
53
|
-
*/
|
|
54
21
|
unregisterPlugin(pluginName: string): boolean;
|
|
55
|
-
/**
|
|
56
|
-
* 初始化解码器
|
|
57
|
-
*/
|
|
58
22
|
initialize(): Promise<void>;
|
|
59
|
-
/**
|
|
60
|
-
* 销毁解码器
|
|
61
|
-
*/
|
|
62
23
|
destroy(): Promise<void>;
|
|
63
|
-
/**
|
|
64
|
-
* 创建解码上下文
|
|
65
|
-
*/
|
|
66
24
|
private createContext;
|
|
67
|
-
/**
|
|
68
|
-
* 执行中间件钩子
|
|
69
|
-
*/
|
|
70
25
|
private executeMiddlewareHook;
|
|
71
|
-
/**
|
|
72
|
-
* 主解析方法 - 固定的流水线 + 灵活的中间件
|
|
73
|
-
*/
|
|
74
26
|
parseByBuffer(buffer: Buffer, options?: {
|
|
75
27
|
skipValidation?: boolean;
|
|
76
28
|
enableStats?: boolean;
|
package/dist/FIT/encoder.d.ts
CHANGED
|
@@ -1,139 +1,42 @@
|
|
|
1
1
|
import { FITFileType } from "./types.js";
|
|
2
|
-
/**
|
|
3
|
-
* FIT 编码器选项
|
|
4
|
-
*/
|
|
5
2
|
export interface FITEncoderOptions {
|
|
6
|
-
/** 是否启用紧凑模式 */
|
|
7
3
|
compact?: boolean;
|
|
8
|
-
/** 默认运动类型 */
|
|
9
4
|
defaultSport?: string;
|
|
10
|
-
/** 默认子运动类型 */
|
|
11
5
|
defaultSubSport?: string;
|
|
12
6
|
}
|
|
13
|
-
/**
|
|
14
|
-
* FIT 编码器 - 将 FITFileType 数据编码为 FIT 二进制格式
|
|
15
|
-
*/
|
|
16
7
|
export declare class FITEncoder {
|
|
17
8
|
private localNum;
|
|
18
9
|
private mesgDefn;
|
|
19
10
|
private messages;
|
|
20
11
|
private options;
|
|
21
|
-
/**
|
|
22
|
-
* 构造函数
|
|
23
|
-
* @param options 编码器选项
|
|
24
|
-
*/
|
|
25
12
|
constructor(options?: FITEncoderOptions);
|
|
26
|
-
/**
|
|
27
|
-
* 编码 FIT 数据为 Buffer - Activity 文件类型
|
|
28
|
-
*/
|
|
29
13
|
encode(fitData: FITFileType): Promise<Buffer>;
|
|
30
|
-
/**
|
|
31
|
-
* 编码 FIT 数据为 Buffer - Course 文件类型
|
|
32
|
-
*/
|
|
33
14
|
encodeCourse(fitData: FITFileType): Promise<Buffer>;
|
|
34
|
-
/**
|
|
35
|
-
* 编码 FIT 数据为 Blob
|
|
36
|
-
*/
|
|
37
15
|
encodeToBlob(fitData: FITFileType, fileType?: "activity" | "course"): Promise<Blob>;
|
|
38
|
-
/**
|
|
39
|
-
* 重置编码器状态
|
|
40
|
-
*/
|
|
41
16
|
private reset;
|
|
42
|
-
/**
|
|
43
|
-
* 构建 FIT 文件内容
|
|
44
|
-
*/
|
|
45
17
|
private buildFITContent;
|
|
46
|
-
/**
|
|
47
|
-
* 构建 Activity 文件内容
|
|
48
|
-
*/
|
|
49
18
|
private buildActivityContent;
|
|
50
|
-
/**
|
|
51
|
-
* 构建 Course 文件内容
|
|
52
|
-
*/
|
|
53
19
|
private buildCourseContent;
|
|
54
|
-
/**
|
|
55
|
-
* 构建文件ID
|
|
56
|
-
*/
|
|
57
20
|
private buildFileId;
|
|
58
|
-
/**
|
|
59
|
-
* 构建Session
|
|
60
|
-
*/
|
|
61
21
|
private buildSession;
|
|
62
|
-
/**
|
|
63
|
-
* 构建Laps
|
|
64
|
-
*/
|
|
65
22
|
private buildLaps;
|
|
66
|
-
/**
|
|
67
|
-
* 构建单个Lap
|
|
68
|
-
*/
|
|
69
23
|
private buildLap;
|
|
70
|
-
/**
|
|
71
|
-
* 构建Records
|
|
72
|
-
*/
|
|
73
24
|
private buildRecords;
|
|
74
|
-
/**
|
|
75
|
-
* 构建单个Record
|
|
76
|
-
*/
|
|
77
25
|
private buildRecord;
|
|
78
|
-
/**
|
|
79
|
-
* 构建Event
|
|
80
|
-
*/
|
|
81
26
|
private buildEvent;
|
|
82
|
-
/**
|
|
83
|
-
* 构建Activity
|
|
84
|
-
*/
|
|
85
27
|
private buildActivity;
|
|
86
|
-
/**
|
|
87
|
-
* 构建Course
|
|
88
|
-
*/
|
|
89
28
|
private buildCourse;
|
|
90
|
-
/**
|
|
91
|
-
* 从Laps构建Events
|
|
92
|
-
*/
|
|
93
29
|
private buildEventsFromLaps;
|
|
94
|
-
/**
|
|
95
|
-
* 从Session构建Activity
|
|
96
|
-
*/
|
|
97
30
|
private buildActivityFromSession;
|
|
98
|
-
/**
|
|
99
|
-
* 解析时间戳
|
|
100
|
-
*/
|
|
101
31
|
private parseTimestamp;
|
|
102
|
-
/**
|
|
103
|
-
* 转换坐标为半圆单位
|
|
104
|
-
*/
|
|
105
32
|
private convertToSemicircles;
|
|
106
|
-
/**
|
|
107
|
-
* 验证必要字段
|
|
108
|
-
*/
|
|
109
33
|
private validateRequiredFields;
|
|
110
|
-
/**
|
|
111
|
-
* 写入消息
|
|
112
|
-
*/
|
|
113
34
|
private writeMesg;
|
|
114
|
-
/**
|
|
115
|
-
* 获取Blob对象
|
|
116
|
-
*/
|
|
117
35
|
get blob(): Blob;
|
|
118
|
-
/**
|
|
119
|
-
* 获取数据长度
|
|
120
|
-
*/
|
|
121
36
|
get dataLen(): number;
|
|
122
|
-
/**
|
|
123
|
-
* 获取数据CRC
|
|
124
|
-
*/
|
|
125
37
|
get dataCrc(): number;
|
|
126
|
-
/**
|
|
127
|
-
* 获取文件头
|
|
128
|
-
*/
|
|
129
38
|
get header(): ArrayBuffer;
|
|
130
|
-
/**
|
|
131
|
-
* 获取文件尾
|
|
132
|
-
*/
|
|
133
39
|
get trailer(): ArrayBuffer;
|
|
134
|
-
/**
|
|
135
|
-
* @deprecated 使用 encode() 替代
|
|
136
|
-
*/
|
|
137
40
|
encoder(fitData: FITFileType): Promise<Buffer>;
|
|
138
41
|
}
|
|
139
42
|
declare const _default: {
|
package/dist/FIT/mesg.d.ts
CHANGED
|
@@ -29,9 +29,6 @@ export declare class Mesg {
|
|
|
29
29
|
constructor(localNum: number, mesgName: string, values: {
|
|
30
30
|
[key: string]: any;
|
|
31
31
|
});
|
|
32
|
-
/**
|
|
33
|
-
* 获取 defns,并获取了 size
|
|
34
|
-
*/
|
|
35
32
|
get mesgDefn(): ProcessedMesgDefn;
|
|
36
33
|
isSameDefn(mesgDefn: ProcessedMesgDefn): boolean;
|
|
37
34
|
get defnRecord(): ArrayBuffer;
|
package/dist/FIT/middleware.d.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import { BaseFITMiddleware } from "./base.js";
|
|
2
2
|
import { FITDecoderMesgs, FITFileType, FITContext } from "./types.js";
|
|
3
|
-
/**
|
|
4
|
-
* 性能监控中间件
|
|
5
|
-
*/
|
|
6
3
|
export declare class PerformanceMiddleware extends BaseFITMiddleware {
|
|
7
4
|
name: string;
|
|
8
5
|
description: string;
|
|
@@ -15,34 +12,22 @@ export declare class PerformanceMiddleware extends BaseFITMiddleware {
|
|
|
15
12
|
private analyzeStructure;
|
|
16
13
|
private getSummary;
|
|
17
14
|
}
|
|
18
|
-
/**
|
|
19
|
-
* 数据验证中间件
|
|
20
|
-
*/
|
|
21
15
|
export declare class ValidationMiddleware extends BaseFITMiddleware {
|
|
22
16
|
name: string;
|
|
23
17
|
description: string;
|
|
24
18
|
onComplete(result: FITFileType, context: FITContext): Promise<FITFileType>;
|
|
25
19
|
private validateFIT;
|
|
26
20
|
}
|
|
27
|
-
/**
|
|
28
|
-
* 数据清理中间件
|
|
29
|
-
*/
|
|
30
21
|
export declare class DataCleanupMiddleware extends BaseFITMiddleware {
|
|
31
22
|
name: string;
|
|
32
23
|
description: string;
|
|
33
24
|
onStructure(result: Partial<FITFileType>, context: FITContext): Promise<Partial<FITFileType>>;
|
|
34
25
|
private cleanupData;
|
|
35
26
|
}
|
|
36
|
-
/**
|
|
37
|
-
* 文件信息提取中间件
|
|
38
|
-
*/
|
|
39
27
|
export declare class FileInfoMiddleware extends BaseFITMiddleware {
|
|
40
28
|
name: string;
|
|
41
29
|
description: string;
|
|
42
30
|
onExtractMessages(messages: FITDecoderMesgs, context: FITContext): Promise<FITDecoderMesgs>;
|
|
43
31
|
private extractFileInfo;
|
|
44
32
|
}
|
|
45
|
-
/**
|
|
46
|
-
* 注册所有默认中间件
|
|
47
|
-
*/
|
|
48
33
|
export declare function registerDefaultMiddlewares(decoder: any): Promise<void>;
|
package/dist/FIT/plugins.d.ts
CHANGED
|
@@ -1,24 +1,15 @@
|
|
|
1
1
|
import { BaseFITStructurePlugin } from "./base.js";
|
|
2
2
|
import { FITDecoderMesgs, FITFileType, FITContext } from "./types.js";
|
|
3
|
-
/**
|
|
4
|
-
* Session 数据结构化插件
|
|
5
|
-
*/
|
|
6
3
|
export declare class SessionStructurePlugin extends BaseFITStructurePlugin {
|
|
7
4
|
name: string;
|
|
8
5
|
priority: number;
|
|
9
6
|
structureData(messages: FITDecoderMesgs, context: FITContext): Partial<FITFileType>;
|
|
10
7
|
}
|
|
11
|
-
/**
|
|
12
|
-
* Course 数据结构化插件
|
|
13
|
-
*/
|
|
14
8
|
export declare class CourseStructurePlugin extends BaseFITStructurePlugin {
|
|
15
9
|
name: string;
|
|
16
10
|
priority: number;
|
|
17
11
|
structureData(messages: FITDecoderMesgs, context: FITContext): Partial<FITFileType>;
|
|
18
12
|
}
|
|
19
|
-
/**
|
|
20
|
-
* 文件头信息提取插件
|
|
21
|
-
*/
|
|
22
13
|
export declare class FileHeaderPlugin extends BaseFITStructurePlugin {
|
|
23
14
|
name: string;
|
|
24
15
|
priority: number;
|
package/dist/FIT/processor.d.ts
CHANGED
|
@@ -1,58 +1,34 @@
|
|
|
1
1
|
import { IFITMessageConverter, IFITStructurePlugin } from "./base.js";
|
|
2
2
|
import { FITContext } from "./types.js";
|
|
3
|
-
/**
|
|
4
|
-
* FIT 流水线阶段
|
|
5
|
-
*/
|
|
6
3
|
export declare enum FITPipelineStage {
|
|
7
4
|
PARSE = "parse",
|
|
8
5
|
EXTRACT = "extract",
|
|
9
6
|
STRUCTURE = "structure",
|
|
10
7
|
COMPLETE = "complete"
|
|
11
8
|
}
|
|
12
|
-
/**
|
|
13
|
-
* FIT 流水线处理器接口
|
|
14
|
-
*/
|
|
15
9
|
export interface IFITPipelineProcessor {
|
|
16
10
|
stage: FITPipelineStage;
|
|
17
11
|
process(context: FITContext): Promise<FITContext>;
|
|
18
12
|
}
|
|
19
|
-
/**
|
|
20
|
-
* Parse处理器 - 解析二进制FIT数据为消息
|
|
21
|
-
*/
|
|
22
13
|
export declare class ParseProcessor implements IFITPipelineProcessor {
|
|
23
14
|
stage: FITPipelineStage;
|
|
24
15
|
process(context: FITContext): Promise<FITContext>;
|
|
25
|
-
/**
|
|
26
|
-
* 使用 FIT SDK 解析二进制数据
|
|
27
|
-
*/
|
|
28
16
|
private parseWithFitSDK;
|
|
29
17
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Extract处理器 - 提取和转换消息
|
|
32
|
-
*/
|
|
33
18
|
export declare class ExtractProcessor implements IFITPipelineProcessor {
|
|
34
19
|
private getConverters;
|
|
35
20
|
stage: FITPipelineStage;
|
|
36
21
|
constructor(getConverters: (messageType: string) => IFITMessageConverter[]);
|
|
37
22
|
process(context: FITContext): Promise<FITContext>;
|
|
38
23
|
}
|
|
39
|
-
/**
|
|
40
|
-
* Structure处理器 - 数据结构化
|
|
41
|
-
*/
|
|
42
24
|
export declare class StructureProcessor implements IFITPipelineProcessor {
|
|
43
25
|
private getStructurePlugins;
|
|
44
26
|
stage: FITPipelineStage;
|
|
45
27
|
constructor(getStructurePlugins: () => IFITStructurePlugin[]);
|
|
46
28
|
process(context: FITContext): Promise<FITContext>;
|
|
47
29
|
}
|
|
48
|
-
/**
|
|
49
|
-
* Complete处理器 - 最终处理和清理
|
|
50
|
-
*/
|
|
51
30
|
export declare class CompleteProcessor implements IFITPipelineProcessor {
|
|
52
31
|
stage: FITPipelineStage;
|
|
53
32
|
process(context: FITContext): Promise<FITContext>;
|
|
54
|
-
/**
|
|
55
|
-
* 计算消息总数
|
|
56
|
-
*/
|
|
57
33
|
private countTotalMessages;
|
|
58
34
|
}
|
|
@@ -1,105 +1,105 @@
|
|
|
1
1
|
export declare enum MesgNum {
|
|
2
|
-
FILE_ID = 0
|
|
3
|
-
CAPABILITIES = 1
|
|
4
|
-
DEVICE_SETTINGS = 2
|
|
5
|
-
USER_PROFILE = 3
|
|
6
|
-
HRM_PROFILE = 4
|
|
7
|
-
SDM_PROFILE = 5
|
|
8
|
-
BIKE_PROFILE = 6
|
|
9
|
-
ZONES_TARGET = 7
|
|
10
|
-
HR_ZONE = 8
|
|
11
|
-
POWER_ZONE = 9
|
|
12
|
-
MET_ZONE = 10
|
|
13
|
-
SPORT = 12
|
|
14
|
-
GOAL = 15
|
|
15
|
-
SESSION = 18
|
|
16
|
-
LAP = 19
|
|
17
|
-
RECORD = 20
|
|
18
|
-
EVENT = 21
|
|
19
|
-
DEVICE_INFO = 23
|
|
20
|
-
WORKOUT = 26
|
|
21
|
-
WORKOUT_STEP = 27
|
|
22
|
-
SCHEDULE = 28
|
|
23
|
-
WEIGHT_SCALE = 30
|
|
24
|
-
COURSE = 31
|
|
25
|
-
COURSE_POINT = 32
|
|
26
|
-
TOTALS = 33
|
|
27
|
-
ACTIVITY = 34
|
|
28
|
-
SOFTWARE = 35
|
|
29
|
-
FILE_CAPABILITIES = 37
|
|
30
|
-
MESG_CAPABILITIES = 38
|
|
31
|
-
FIELD_CAPABILITIES = 39
|
|
32
|
-
FILE_CREATOR = 49
|
|
33
|
-
BLOOD_PRESSURE = 51
|
|
34
|
-
SPEED_ZONE = 53
|
|
35
|
-
MONITORING = 55
|
|
36
|
-
TRAINING_FILE = 72
|
|
37
|
-
HRV = 78
|
|
38
|
-
ANT_RX = 80
|
|
39
|
-
ANT_TX = 81
|
|
40
|
-
ANT_CHANNEL_ID = 82
|
|
41
|
-
LENGTH = 101
|
|
42
|
-
MONITORING_INFO = 103
|
|
43
|
-
PAD = 105
|
|
44
|
-
SLAVE_DEVICE = 106
|
|
45
|
-
CONNECTIVITY = 127
|
|
46
|
-
WEATHER_CONDITIONS = 128
|
|
47
|
-
WEATHER_ALERT = 129
|
|
48
|
-
CADENCE_ZONE = 131
|
|
49
|
-
HR = 132
|
|
50
|
-
SEGMENT_LAP = 142
|
|
51
|
-
MEMO_GLOB = 145
|
|
52
|
-
SEGMENT_ID = 148
|
|
53
|
-
SEGMENT_LEADERBOARD_ENTRY = 149
|
|
54
|
-
SEGMENT_POINT = 150
|
|
55
|
-
SEGMENT_FILE = 151
|
|
56
|
-
WORKOUT_SESSION = 158
|
|
57
|
-
WATCHFACE_SETTINGS = 159
|
|
58
|
-
GPS_METADATA = 160
|
|
59
|
-
CAMERA_EVENT = 161
|
|
60
|
-
TIMESTAMP_CORRELATION = 162
|
|
61
|
-
GYROSCOPE_DATA = 164
|
|
62
|
-
ACCELEROMETER_DATA = 165
|
|
63
|
-
THREE_D_SENSOR_CALIBRATION = 167
|
|
64
|
-
VIDEO_FRAME = 169
|
|
65
|
-
OBDII_DATA = 174
|
|
66
|
-
NMEA_SENTENCE = 177
|
|
67
|
-
AVIATION_ATTITUDE = 178
|
|
68
|
-
VIDEO = 184
|
|
69
|
-
VIDEO_TITLE = 185
|
|
70
|
-
VIDEO_DESCRIPTION = 186
|
|
71
|
-
VIDEO_CLIP = 187
|
|
72
|
-
SET = 225
|
|
73
|
-
JUMP = 285
|
|
74
|
-
CLIMB_PRO = 317
|
|
75
|
-
FIELD_DESCRIPTION = 206
|
|
76
|
-
DEVELOPER_DATA_ID = 207
|
|
77
|
-
MAGNETOMETER_DATA = 208
|
|
78
|
-
BAROMETER_DATA = 209
|
|
79
|
-
ONE_D_SENSOR_CALIBRATION = 210
|
|
80
|
-
MONITORING_HR_DATA = 211
|
|
81
|
-
TIME_IN_ZONE = 216
|
|
82
|
-
DIVE_SETTINGS = 258
|
|
83
|
-
DIVE_GAS = 259
|
|
84
|
-
DIVE_ALARM = 262
|
|
85
|
-
EXERCISE_TITLE = 264
|
|
86
|
-
DIVE_SUMMARY = 268
|
|
87
|
-
SPLIT = 312
|
|
88
|
-
SPLIT_SUMMARY = 313
|
|
89
|
-
HSA_BODY_BATTERY_DATA = 314
|
|
90
|
-
HSA_EVENT = 315
|
|
91
|
-
TANK_UPDATE = 319
|
|
92
|
-
TANK_SUMMARY = 323
|
|
93
|
-
SLEEP_ASSESSMENT = 346
|
|
94
|
-
HRV_STATUS_SUMMARY = 370
|
|
95
|
-
HRV_VALUE = 371
|
|
96
|
-
RAW_BBI = 372
|
|
97
|
-
DEVICE_AUX_BATTERY_INFO = 375
|
|
98
|
-
HSA_GYROSCOPE_DATA = 376
|
|
99
|
-
CHRONO_SHOT_SESSION = 387
|
|
100
|
-
CHRONO_SHOT_DATA = 388
|
|
101
|
-
HSA_CONFIGURATION_DATA = 389
|
|
102
|
-
DIVE_APNEA_ALARM = 393
|
|
103
|
-
SKIN_TEMP_OVERNIGHT = 398
|
|
2
|
+
FILE_ID = 0,
|
|
3
|
+
CAPABILITIES = 1,
|
|
4
|
+
DEVICE_SETTINGS = 2,
|
|
5
|
+
USER_PROFILE = 3,
|
|
6
|
+
HRM_PROFILE = 4,
|
|
7
|
+
SDM_PROFILE = 5,
|
|
8
|
+
BIKE_PROFILE = 6,
|
|
9
|
+
ZONES_TARGET = 7,
|
|
10
|
+
HR_ZONE = 8,
|
|
11
|
+
POWER_ZONE = 9,
|
|
12
|
+
MET_ZONE = 10,
|
|
13
|
+
SPORT = 12,
|
|
14
|
+
GOAL = 15,
|
|
15
|
+
SESSION = 18,
|
|
16
|
+
LAP = 19,
|
|
17
|
+
RECORD = 20,
|
|
18
|
+
EVENT = 21,
|
|
19
|
+
DEVICE_INFO = 23,
|
|
20
|
+
WORKOUT = 26,
|
|
21
|
+
WORKOUT_STEP = 27,
|
|
22
|
+
SCHEDULE = 28,
|
|
23
|
+
WEIGHT_SCALE = 30,
|
|
24
|
+
COURSE = 31,
|
|
25
|
+
COURSE_POINT = 32,
|
|
26
|
+
TOTALS = 33,
|
|
27
|
+
ACTIVITY = 34,
|
|
28
|
+
SOFTWARE = 35,
|
|
29
|
+
FILE_CAPABILITIES = 37,
|
|
30
|
+
MESG_CAPABILITIES = 38,
|
|
31
|
+
FIELD_CAPABILITIES = 39,
|
|
32
|
+
FILE_CREATOR = 49,
|
|
33
|
+
BLOOD_PRESSURE = 51,
|
|
34
|
+
SPEED_ZONE = 53,
|
|
35
|
+
MONITORING = 55,
|
|
36
|
+
TRAINING_FILE = 72,
|
|
37
|
+
HRV = 78,
|
|
38
|
+
ANT_RX = 80,
|
|
39
|
+
ANT_TX = 81,
|
|
40
|
+
ANT_CHANNEL_ID = 82,
|
|
41
|
+
LENGTH = 101,
|
|
42
|
+
MONITORING_INFO = 103,
|
|
43
|
+
PAD = 105,
|
|
44
|
+
SLAVE_DEVICE = 106,
|
|
45
|
+
CONNECTIVITY = 127,
|
|
46
|
+
WEATHER_CONDITIONS = 128,
|
|
47
|
+
WEATHER_ALERT = 129,
|
|
48
|
+
CADENCE_ZONE = 131,
|
|
49
|
+
HR = 132,
|
|
50
|
+
SEGMENT_LAP = 142,
|
|
51
|
+
MEMO_GLOB = 145,
|
|
52
|
+
SEGMENT_ID = 148,
|
|
53
|
+
SEGMENT_LEADERBOARD_ENTRY = 149,
|
|
54
|
+
SEGMENT_POINT = 150,
|
|
55
|
+
SEGMENT_FILE = 151,
|
|
56
|
+
WORKOUT_SESSION = 158,
|
|
57
|
+
WATCHFACE_SETTINGS = 159,
|
|
58
|
+
GPS_METADATA = 160,
|
|
59
|
+
CAMERA_EVENT = 161,
|
|
60
|
+
TIMESTAMP_CORRELATION = 162,
|
|
61
|
+
GYROSCOPE_DATA = 164,
|
|
62
|
+
ACCELEROMETER_DATA = 165,
|
|
63
|
+
THREE_D_SENSOR_CALIBRATION = 167,
|
|
64
|
+
VIDEO_FRAME = 169,
|
|
65
|
+
OBDII_DATA = 174,
|
|
66
|
+
NMEA_SENTENCE = 177,
|
|
67
|
+
AVIATION_ATTITUDE = 178,
|
|
68
|
+
VIDEO = 184,
|
|
69
|
+
VIDEO_TITLE = 185,
|
|
70
|
+
VIDEO_DESCRIPTION = 186,
|
|
71
|
+
VIDEO_CLIP = 187,
|
|
72
|
+
SET = 225,
|
|
73
|
+
JUMP = 285,
|
|
74
|
+
CLIMB_PRO = 317,
|
|
75
|
+
FIELD_DESCRIPTION = 206,
|
|
76
|
+
DEVELOPER_DATA_ID = 207,
|
|
77
|
+
MAGNETOMETER_DATA = 208,
|
|
78
|
+
BAROMETER_DATA = 209,
|
|
79
|
+
ONE_D_SENSOR_CALIBRATION = 210,
|
|
80
|
+
MONITORING_HR_DATA = 211,
|
|
81
|
+
TIME_IN_ZONE = 216,
|
|
82
|
+
DIVE_SETTINGS = 258,
|
|
83
|
+
DIVE_GAS = 259,
|
|
84
|
+
DIVE_ALARM = 262,
|
|
85
|
+
EXERCISE_TITLE = 264,
|
|
86
|
+
DIVE_SUMMARY = 268,
|
|
87
|
+
SPLIT = 312,
|
|
88
|
+
SPLIT_SUMMARY = 313,
|
|
89
|
+
HSA_BODY_BATTERY_DATA = 314,
|
|
90
|
+
HSA_EVENT = 315,
|
|
91
|
+
TANK_UPDATE = 319,
|
|
92
|
+
TANK_SUMMARY = 323,
|
|
93
|
+
SLEEP_ASSESSMENT = 346,
|
|
94
|
+
HRV_STATUS_SUMMARY = 370,
|
|
95
|
+
HRV_VALUE = 371,
|
|
96
|
+
RAW_BBI = 372,
|
|
97
|
+
DEVICE_AUX_BATTERY_INFO = 375,
|
|
98
|
+
HSA_GYROSCOPE_DATA = 376,
|
|
99
|
+
CHRONO_SHOT_SESSION = 387,
|
|
100
|
+
CHRONO_SHOT_DATA = 388,
|
|
101
|
+
HSA_CONFIGURATION_DATA = 389,
|
|
102
|
+
DIVE_APNEA_ALARM = 393,
|
|
103
|
+
SKIN_TEMP_OVERNIGHT = 398,
|
|
104
104
|
HSA_WRIST_TEMPERATURE_DATA = 409
|
|
105
105
|
}
|