trackswap 0.0.2 → 0.0.4
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 +328 -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 +6 -50
- 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 -2
- package/dist/TCX/middleware.d.ts +11 -13
- package/dist/TCX/processor.d.ts +13 -21
- package/dist/TCX/types.d.ts +1 -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.cjs +26 -0
- package/dist/index.js +26 -5
- package/dist/sport/base.d.ts +64 -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 +23 -5
- 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/types/index.js
DELETED
|
@@ -1,297 +0,0 @@
|
|
|
1
|
-
// FIT types mapping
|
|
2
|
-
// 简化的枚举映射
|
|
3
|
-
const enum_maps = {
|
|
4
|
-
file: {
|
|
5
|
-
course: 6,
|
|
6
|
-
device: 1,
|
|
7
|
-
settings: 2,
|
|
8
|
-
sport: 3,
|
|
9
|
-
activity: 4,
|
|
10
|
-
workout: 5,
|
|
11
|
-
schedules: 7,
|
|
12
|
-
weight: 9,
|
|
13
|
-
totals: 10,
|
|
14
|
-
goals: 11,
|
|
15
|
-
blood_pressure: 14,
|
|
16
|
-
monitoring_a: 15,
|
|
17
|
-
activity_summary: 20,
|
|
18
|
-
monitoring_daily: 28,
|
|
19
|
-
monitoring_b: 32,
|
|
20
|
-
segment_list: 35,
|
|
21
|
-
exd_configuration: 40,
|
|
22
|
-
invalid: 0,
|
|
23
|
-
},
|
|
24
|
-
sport: {
|
|
25
|
-
generic: 0,
|
|
26
|
-
running: 1,
|
|
27
|
-
cycling: 2,
|
|
28
|
-
transition: 3,
|
|
29
|
-
fitness_equipment: 4,
|
|
30
|
-
swimming: 5,
|
|
31
|
-
basketball: 6,
|
|
32
|
-
soccer: 7,
|
|
33
|
-
tennis: 8,
|
|
34
|
-
american_football: 9,
|
|
35
|
-
training: 10,
|
|
36
|
-
walking: 11,
|
|
37
|
-
cross_country_skiing: 12,
|
|
38
|
-
alpine_skiing: 13,
|
|
39
|
-
snowboarding: 14,
|
|
40
|
-
rowing: 15,
|
|
41
|
-
mountaineering: 16,
|
|
42
|
-
hiking: 17,
|
|
43
|
-
multisport: 18,
|
|
44
|
-
paddling: 19,
|
|
45
|
-
invalid: 254,
|
|
46
|
-
},
|
|
47
|
-
event: {
|
|
48
|
-
timer: 0,
|
|
49
|
-
workout: 3,
|
|
50
|
-
workout_step: 4,
|
|
51
|
-
power_down: 5,
|
|
52
|
-
power_up: 6,
|
|
53
|
-
off_course: 7,
|
|
54
|
-
session: 8,
|
|
55
|
-
lap: 9,
|
|
56
|
-
course_point: 10,
|
|
57
|
-
battery: 11,
|
|
58
|
-
virtual_partner_pace: 12,
|
|
59
|
-
hr_high_alert: 13,
|
|
60
|
-
hr_low_alert: 14,
|
|
61
|
-
speed_high_alert: 15,
|
|
62
|
-
speed_low_alert: 16,
|
|
63
|
-
cad_high_alert: 17,
|
|
64
|
-
cad_low_alert: 18,
|
|
65
|
-
power_high_alert: 19,
|
|
66
|
-
power_low_alert: 20,
|
|
67
|
-
recovery_hr: 21,
|
|
68
|
-
battery_low: 22,
|
|
69
|
-
time_duration_alert: 23,
|
|
70
|
-
distance_duration_alert: 24,
|
|
71
|
-
calorie_duration_alert: 25,
|
|
72
|
-
activity: 26,
|
|
73
|
-
fitness_equipment: 27,
|
|
74
|
-
length: 28,
|
|
75
|
-
user_marker: 32,
|
|
76
|
-
sport_point: 33,
|
|
77
|
-
calibration: 36,
|
|
78
|
-
front_gear_change: 42,
|
|
79
|
-
rear_gear_change: 43,
|
|
80
|
-
rider_position_change: 44,
|
|
81
|
-
elev_high_alert: 45,
|
|
82
|
-
elev_low_alert: 46,
|
|
83
|
-
comm_timeout: 47,
|
|
84
|
-
invalid: 255,
|
|
85
|
-
},
|
|
86
|
-
event_type: {
|
|
87
|
-
start: 0,
|
|
88
|
-
stop: 1,
|
|
89
|
-
consecutive_depreciated: 2,
|
|
90
|
-
marker: 3,
|
|
91
|
-
stop_all: 4,
|
|
92
|
-
begin_depreciated: 5,
|
|
93
|
-
end_depreciated: 6,
|
|
94
|
-
end_all_depreciated: 7,
|
|
95
|
-
stop_disable: 8,
|
|
96
|
-
stop_disable_all: 9,
|
|
97
|
-
invalid: 255,
|
|
98
|
-
},
|
|
99
|
-
course_point: {
|
|
100
|
-
generic: 0,
|
|
101
|
-
summit: 1,
|
|
102
|
-
valley: 2,
|
|
103
|
-
water: 3,
|
|
104
|
-
food: 4,
|
|
105
|
-
danger: 5,
|
|
106
|
-
left: 6,
|
|
107
|
-
right: 7,
|
|
108
|
-
straight: 8,
|
|
109
|
-
first_aid: 9,
|
|
110
|
-
fourth_category: 10,
|
|
111
|
-
third_category: 11,
|
|
112
|
-
second_category: 12,
|
|
113
|
-
first_category: 13,
|
|
114
|
-
hors_category: 14,
|
|
115
|
-
sprint: 15,
|
|
116
|
-
left_fork: 16,
|
|
117
|
-
right_fork: 17,
|
|
118
|
-
middle_fork: 18,
|
|
119
|
-
slight_left: 19,
|
|
120
|
-
sharp_left: 20,
|
|
121
|
-
slight_right: 21,
|
|
122
|
-
sharp_right: 22,
|
|
123
|
-
u_turn: 23,
|
|
124
|
-
segment_start: 24,
|
|
125
|
-
segment_end: 25,
|
|
126
|
-
invalid: 255,
|
|
127
|
-
},
|
|
128
|
-
};
|
|
129
|
-
const _enum = (name) => {
|
|
130
|
-
const enum_map = enum_maps[name];
|
|
131
|
-
return {
|
|
132
|
-
size: 1,
|
|
133
|
-
baseType: 0,
|
|
134
|
-
mapValue: (value) => {
|
|
135
|
-
if (typeof value === "string") {
|
|
136
|
-
return enum_map[value] ?? 255;
|
|
137
|
-
}
|
|
138
|
-
return value;
|
|
139
|
-
},
|
|
140
|
-
setValue: function (byteOffset, value) {
|
|
141
|
-
this.setUint8(byteOffset, value);
|
|
142
|
-
},
|
|
143
|
-
};
|
|
144
|
-
};
|
|
145
|
-
export const types = {
|
|
146
|
-
enum_file: _enum("file"),
|
|
147
|
-
enum_activity: _enum("sport"),
|
|
148
|
-
enum_sport: _enum("sport"),
|
|
149
|
-
enum_sub_sport: _enum("sport"),
|
|
150
|
-
enum_event: _enum("event"),
|
|
151
|
-
enum_event_type: _enum("event_type"),
|
|
152
|
-
enum_course_point: _enum("course_point"),
|
|
153
|
-
uint8: {
|
|
154
|
-
size: 1,
|
|
155
|
-
baseType: 2,
|
|
156
|
-
setValue: DataView.prototype.setUint8,
|
|
157
|
-
},
|
|
158
|
-
sint8: {
|
|
159
|
-
size: 1,
|
|
160
|
-
baseType: 1,
|
|
161
|
-
setValue: DataView.prototype.setInt8,
|
|
162
|
-
},
|
|
163
|
-
uint16: {
|
|
164
|
-
size: 2,
|
|
165
|
-
baseType: 0x84,
|
|
166
|
-
setValue: DataView.prototype.setUint16,
|
|
167
|
-
},
|
|
168
|
-
sint16: {
|
|
169
|
-
size: 2,
|
|
170
|
-
baseType: 0x83,
|
|
171
|
-
setValue: DataView.prototype.setInt16,
|
|
172
|
-
},
|
|
173
|
-
uint32: {
|
|
174
|
-
size: 4,
|
|
175
|
-
baseType: 0x86,
|
|
176
|
-
setValue: DataView.prototype.setUint32,
|
|
177
|
-
},
|
|
178
|
-
sint32: {
|
|
179
|
-
size: 4,
|
|
180
|
-
baseType: 0x85,
|
|
181
|
-
setValue: DataView.prototype.setInt32,
|
|
182
|
-
},
|
|
183
|
-
string: {
|
|
184
|
-
size: 0, // Variable size
|
|
185
|
-
baseType: 7,
|
|
186
|
-
mapValue: (value) => Array.from(encodedStr(value)),
|
|
187
|
-
setValue: dvSetUint8Array,
|
|
188
|
-
},
|
|
189
|
-
distance: {
|
|
190
|
-
size: 4,
|
|
191
|
-
baseType: 0x86,
|
|
192
|
-
setValue: DataView.prototype.setUint32,
|
|
193
|
-
mapValue: (value) => Math.round(value * 1000),
|
|
194
|
-
},
|
|
195
|
-
speed: {
|
|
196
|
-
size: 2,
|
|
197
|
-
baseType: 0x84,
|
|
198
|
-
setValue: DataView.prototype.setUint16,
|
|
199
|
-
mapValue: (value) => Math.round(value * 100),
|
|
200
|
-
},
|
|
201
|
-
altitude: {
|
|
202
|
-
size: 2,
|
|
203
|
-
baseType: 0x84,
|
|
204
|
-
setValue: DataView.prototype.setUint16,
|
|
205
|
-
mapValue: (value) => Math.round((value + 500) * 5),
|
|
206
|
-
},
|
|
207
|
-
seconds: {
|
|
208
|
-
size: 4,
|
|
209
|
-
baseType: 0x86,
|
|
210
|
-
setValue: DataView.prototype.setUint32,
|
|
211
|
-
mapValue: (value) => Math.round(value * 1000),
|
|
212
|
-
},
|
|
213
|
-
date_time: {
|
|
214
|
-
size: 4,
|
|
215
|
-
baseType: 0x86,
|
|
216
|
-
setValue: DataView.prototype.setUint32,
|
|
217
|
-
mapValue: (value) => {
|
|
218
|
-
let timestamp;
|
|
219
|
-
if (value instanceof Date) {
|
|
220
|
-
timestamp = Math.floor(value.getTime() / 1000);
|
|
221
|
-
// 转换为FIT时间戳:Unix时间戳 - FIT epoch偏移量
|
|
222
|
-
return timestamp - 631065600;
|
|
223
|
-
}
|
|
224
|
-
else if (typeof value === "string") {
|
|
225
|
-
timestamp = Math.floor(new Date(value).getTime() / 1000);
|
|
226
|
-
// 转换为FIT时间戳:Unix时间戳 - FIT epoch偏移量
|
|
227
|
-
return timestamp - 631065600;
|
|
228
|
-
}
|
|
229
|
-
else {
|
|
230
|
-
// 如果输入的数字值看起来像是FIT时间戳(小于Unix时间戳),直接返回
|
|
231
|
-
// FIT时间戳从1989开始,所以值通常比较小
|
|
232
|
-
if (value < 631065600) {
|
|
233
|
-
// 直接返回,假设已经是FIT时间戳
|
|
234
|
-
return Math.floor(value);
|
|
235
|
-
}
|
|
236
|
-
// 否则处理为Unix时间戳
|
|
237
|
-
if (value > 9999999999) {
|
|
238
|
-
// 毫秒级时间戳
|
|
239
|
-
timestamp = Math.floor(value / 1000);
|
|
240
|
-
}
|
|
241
|
-
else {
|
|
242
|
-
// 秒级时间戳
|
|
243
|
-
timestamp = Math.floor(value);
|
|
244
|
-
}
|
|
245
|
-
// 转换为FIT时间戳:Unix时间戳 - FIT epoch偏移量
|
|
246
|
-
return timestamp - 631065600;
|
|
247
|
-
}
|
|
248
|
-
}, // "1989-12-31T00:00" epoch
|
|
249
|
-
},
|
|
250
|
-
semicircles: {
|
|
251
|
-
size: 4,
|
|
252
|
-
baseType: 0x85,
|
|
253
|
-
setValue: DataView.prototype.setInt32,
|
|
254
|
-
mapValue: (value) => Math.round((value / 180) * 0x80000000),
|
|
255
|
-
},
|
|
256
|
-
};
|
|
257
|
-
export function encodedStrlen(str) {
|
|
258
|
-
// Calculate the byte length of a UTF-8 encoded string
|
|
259
|
-
return Array.from(encodedStr(str)).length + 1; // +1 for null terminator
|
|
260
|
-
}
|
|
261
|
-
function* encodedStr(s) {
|
|
262
|
-
for (const codePoint of codePoints(s)) {
|
|
263
|
-
if (codePoint < 0x80) {
|
|
264
|
-
yield codePoint;
|
|
265
|
-
}
|
|
266
|
-
else if (codePoint < 0x800) {
|
|
267
|
-
yield 0xc0 | (codePoint >> 6);
|
|
268
|
-
yield 0x80 | (codePoint & 0x3f);
|
|
269
|
-
}
|
|
270
|
-
else if (codePoint < 0x10000) {
|
|
271
|
-
yield 0xe0 | (codePoint >> 12);
|
|
272
|
-
yield 0x80 | ((codePoint >> 6) & 0x3f);
|
|
273
|
-
yield 0x80 | (codePoint & 0x3f);
|
|
274
|
-
}
|
|
275
|
-
else {
|
|
276
|
-
yield 0xf0 | (codePoint >> 18);
|
|
277
|
-
yield 0x80 | ((codePoint >> 12) & 0x3f);
|
|
278
|
-
yield 0x80 | ((codePoint >> 6) & 0x3f);
|
|
279
|
-
yield 0x80 | (codePoint & 0x3f);
|
|
280
|
-
}
|
|
281
|
-
}
|
|
282
|
-
yield 0; // null terminator
|
|
283
|
-
}
|
|
284
|
-
function* codePoints(s) {
|
|
285
|
-
for (let i = 0; i < s.length;) {
|
|
286
|
-
const cp = s.codePointAt(i);
|
|
287
|
-
if (cp === undefined)
|
|
288
|
-
break;
|
|
289
|
-
yield cp;
|
|
290
|
-
i += cp > 0xffff ? 2 : 1;
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
function dvSetUint8Array(offset, values) {
|
|
294
|
-
for (let i = 0; i < values.length; i++) {
|
|
295
|
-
this.setUint8(offset + i, values[i]);
|
|
296
|
-
}
|
|
297
|
-
}
|
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
export var MesgNum;
|
|
2
|
-
(function (MesgNum) {
|
|
3
|
-
MesgNum[MesgNum["FILE_ID"] = 0] = "FILE_ID";
|
|
4
|
-
MesgNum[MesgNum["CAPABILITIES"] = 1] = "CAPABILITIES";
|
|
5
|
-
MesgNum[MesgNum["DEVICE_SETTINGS"] = 2] = "DEVICE_SETTINGS";
|
|
6
|
-
MesgNum[MesgNum["USER_PROFILE"] = 3] = "USER_PROFILE";
|
|
7
|
-
MesgNum[MesgNum["HRM_PROFILE"] = 4] = "HRM_PROFILE";
|
|
8
|
-
MesgNum[MesgNum["SDM_PROFILE"] = 5] = "SDM_PROFILE";
|
|
9
|
-
MesgNum[MesgNum["BIKE_PROFILE"] = 6] = "BIKE_PROFILE";
|
|
10
|
-
MesgNum[MesgNum["ZONES_TARGET"] = 7] = "ZONES_TARGET";
|
|
11
|
-
MesgNum[MesgNum["HR_ZONE"] = 8] = "HR_ZONE";
|
|
12
|
-
MesgNum[MesgNum["POWER_ZONE"] = 9] = "POWER_ZONE";
|
|
13
|
-
MesgNum[MesgNum["MET_ZONE"] = 10] = "MET_ZONE";
|
|
14
|
-
MesgNum[MesgNum["SPORT"] = 12] = "SPORT";
|
|
15
|
-
MesgNum[MesgNum["GOAL"] = 15] = "GOAL";
|
|
16
|
-
MesgNum[MesgNum["SESSION"] = 18] = "SESSION";
|
|
17
|
-
MesgNum[MesgNum["LAP"] = 19] = "LAP";
|
|
18
|
-
MesgNum[MesgNum["RECORD"] = 20] = "RECORD";
|
|
19
|
-
MesgNum[MesgNum["EVENT"] = 21] = "EVENT";
|
|
20
|
-
MesgNum[MesgNum["DEVICE_INFO"] = 23] = "DEVICE_INFO";
|
|
21
|
-
MesgNum[MesgNum["WORKOUT"] = 26] = "WORKOUT";
|
|
22
|
-
MesgNum[MesgNum["WORKOUT_STEP"] = 27] = "WORKOUT_STEP";
|
|
23
|
-
MesgNum[MesgNum["SCHEDULE"] = 28] = "SCHEDULE";
|
|
24
|
-
MesgNum[MesgNum["WEIGHT_SCALE"] = 30] = "WEIGHT_SCALE";
|
|
25
|
-
MesgNum[MesgNum["COURSE"] = 31] = "COURSE";
|
|
26
|
-
MesgNum[MesgNum["COURSE_POINT"] = 32] = "COURSE_POINT";
|
|
27
|
-
MesgNum[MesgNum["TOTALS"] = 33] = "TOTALS";
|
|
28
|
-
MesgNum[MesgNum["ACTIVITY"] = 34] = "ACTIVITY";
|
|
29
|
-
MesgNum[MesgNum["SOFTWARE"] = 35] = "SOFTWARE";
|
|
30
|
-
MesgNum[MesgNum["FILE_CAPABILITIES"] = 37] = "FILE_CAPABILITIES";
|
|
31
|
-
MesgNum[MesgNum["MESG_CAPABILITIES"] = 38] = "MESG_CAPABILITIES";
|
|
32
|
-
MesgNum[MesgNum["FIELD_CAPABILITIES"] = 39] = "FIELD_CAPABILITIES";
|
|
33
|
-
MesgNum[MesgNum["FILE_CREATOR"] = 49] = "FILE_CREATOR";
|
|
34
|
-
MesgNum[MesgNum["BLOOD_PRESSURE"] = 51] = "BLOOD_PRESSURE";
|
|
35
|
-
MesgNum[MesgNum["SPEED_ZONE"] = 53] = "SPEED_ZONE";
|
|
36
|
-
MesgNum[MesgNum["MONITORING"] = 55] = "MONITORING";
|
|
37
|
-
MesgNum[MesgNum["TRAINING_FILE"] = 72] = "TRAINING_FILE";
|
|
38
|
-
MesgNum[MesgNum["HRV"] = 78] = "HRV";
|
|
39
|
-
MesgNum[MesgNum["ANT_RX"] = 80] = "ANT_RX";
|
|
40
|
-
MesgNum[MesgNum["ANT_TX"] = 81] = "ANT_TX";
|
|
41
|
-
MesgNum[MesgNum["ANT_CHANNEL_ID"] = 82] = "ANT_CHANNEL_ID";
|
|
42
|
-
MesgNum[MesgNum["LENGTH"] = 101] = "LENGTH";
|
|
43
|
-
MesgNum[MesgNum["MONITORING_INFO"] = 103] = "MONITORING_INFO";
|
|
44
|
-
MesgNum[MesgNum["PAD"] = 105] = "PAD";
|
|
45
|
-
MesgNum[MesgNum["SLAVE_DEVICE"] = 106] = "SLAVE_DEVICE";
|
|
46
|
-
MesgNum[MesgNum["CONNECTIVITY"] = 127] = "CONNECTIVITY";
|
|
47
|
-
MesgNum[MesgNum["WEATHER_CONDITIONS"] = 128] = "WEATHER_CONDITIONS";
|
|
48
|
-
MesgNum[MesgNum["WEATHER_ALERT"] = 129] = "WEATHER_ALERT";
|
|
49
|
-
MesgNum[MesgNum["CADENCE_ZONE"] = 131] = "CADENCE_ZONE";
|
|
50
|
-
MesgNum[MesgNum["HR"] = 132] = "HR";
|
|
51
|
-
MesgNum[MesgNum["SEGMENT_LAP"] = 142] = "SEGMENT_LAP";
|
|
52
|
-
MesgNum[MesgNum["MEMO_GLOB"] = 145] = "MEMO_GLOB";
|
|
53
|
-
MesgNum[MesgNum["SEGMENT_ID"] = 148] = "SEGMENT_ID";
|
|
54
|
-
MesgNum[MesgNum["SEGMENT_LEADERBOARD_ENTRY"] = 149] = "SEGMENT_LEADERBOARD_ENTRY";
|
|
55
|
-
MesgNum[MesgNum["SEGMENT_POINT"] = 150] = "SEGMENT_POINT";
|
|
56
|
-
MesgNum[MesgNum["SEGMENT_FILE"] = 151] = "SEGMENT_FILE";
|
|
57
|
-
MesgNum[MesgNum["WORKOUT_SESSION"] = 158] = "WORKOUT_SESSION";
|
|
58
|
-
MesgNum[MesgNum["WATCHFACE_SETTINGS"] = 159] = "WATCHFACE_SETTINGS";
|
|
59
|
-
MesgNum[MesgNum["GPS_METADATA"] = 160] = "GPS_METADATA";
|
|
60
|
-
MesgNum[MesgNum["CAMERA_EVENT"] = 161] = "CAMERA_EVENT";
|
|
61
|
-
MesgNum[MesgNum["TIMESTAMP_CORRELATION"] = 162] = "TIMESTAMP_CORRELATION";
|
|
62
|
-
MesgNum[MesgNum["GYROSCOPE_DATA"] = 164] = "GYROSCOPE_DATA";
|
|
63
|
-
MesgNum[MesgNum["ACCELEROMETER_DATA"] = 165] = "ACCELEROMETER_DATA";
|
|
64
|
-
MesgNum[MesgNum["THREE_D_SENSOR_CALIBRATION"] = 167] = "THREE_D_SENSOR_CALIBRATION";
|
|
65
|
-
MesgNum[MesgNum["VIDEO_FRAME"] = 169] = "VIDEO_FRAME";
|
|
66
|
-
MesgNum[MesgNum["OBDII_DATA"] = 174] = "OBDII_DATA";
|
|
67
|
-
MesgNum[MesgNum["NMEA_SENTENCE"] = 177] = "NMEA_SENTENCE";
|
|
68
|
-
MesgNum[MesgNum["AVIATION_ATTITUDE"] = 178] = "AVIATION_ATTITUDE";
|
|
69
|
-
MesgNum[MesgNum["VIDEO"] = 184] = "VIDEO";
|
|
70
|
-
MesgNum[MesgNum["VIDEO_TITLE"] = 185] = "VIDEO_TITLE";
|
|
71
|
-
MesgNum[MesgNum["VIDEO_DESCRIPTION"] = 186] = "VIDEO_DESCRIPTION";
|
|
72
|
-
MesgNum[MesgNum["VIDEO_CLIP"] = 187] = "VIDEO_CLIP";
|
|
73
|
-
MesgNum[MesgNum["SET"] = 225] = "SET";
|
|
74
|
-
MesgNum[MesgNum["JUMP"] = 285] = "JUMP";
|
|
75
|
-
MesgNum[MesgNum["CLIMB_PRO"] = 317] = "CLIMB_PRO";
|
|
76
|
-
MesgNum[MesgNum["FIELD_DESCRIPTION"] = 206] = "FIELD_DESCRIPTION";
|
|
77
|
-
MesgNum[MesgNum["DEVELOPER_DATA_ID"] = 207] = "DEVELOPER_DATA_ID";
|
|
78
|
-
MesgNum[MesgNum["MAGNETOMETER_DATA"] = 208] = "MAGNETOMETER_DATA";
|
|
79
|
-
MesgNum[MesgNum["BAROMETER_DATA"] = 209] = "BAROMETER_DATA";
|
|
80
|
-
MesgNum[MesgNum["ONE_D_SENSOR_CALIBRATION"] = 210] = "ONE_D_SENSOR_CALIBRATION";
|
|
81
|
-
MesgNum[MesgNum["MONITORING_HR_DATA"] = 211] = "MONITORING_HR_DATA";
|
|
82
|
-
MesgNum[MesgNum["TIME_IN_ZONE"] = 216] = "TIME_IN_ZONE";
|
|
83
|
-
MesgNum[MesgNum["DIVE_SETTINGS"] = 258] = "DIVE_SETTINGS";
|
|
84
|
-
MesgNum[MesgNum["DIVE_GAS"] = 259] = "DIVE_GAS";
|
|
85
|
-
MesgNum[MesgNum["DIVE_ALARM"] = 262] = "DIVE_ALARM";
|
|
86
|
-
MesgNum[MesgNum["EXERCISE_TITLE"] = 264] = "EXERCISE_TITLE";
|
|
87
|
-
MesgNum[MesgNum["DIVE_SUMMARY"] = 268] = "DIVE_SUMMARY";
|
|
88
|
-
MesgNum[MesgNum["SPLIT"] = 312] = "SPLIT";
|
|
89
|
-
MesgNum[MesgNum["SPLIT_SUMMARY"] = 313] = "SPLIT_SUMMARY";
|
|
90
|
-
MesgNum[MesgNum["HSA_BODY_BATTERY_DATA"] = 314] = "HSA_BODY_BATTERY_DATA";
|
|
91
|
-
MesgNum[MesgNum["HSA_EVENT"] = 315] = "HSA_EVENT";
|
|
92
|
-
MesgNum[MesgNum["TANK_UPDATE"] = 319] = "TANK_UPDATE";
|
|
93
|
-
MesgNum[MesgNum["TANK_SUMMARY"] = 323] = "TANK_SUMMARY";
|
|
94
|
-
MesgNum[MesgNum["SLEEP_ASSESSMENT"] = 346] = "SLEEP_ASSESSMENT";
|
|
95
|
-
MesgNum[MesgNum["HRV_STATUS_SUMMARY"] = 370] = "HRV_STATUS_SUMMARY";
|
|
96
|
-
MesgNum[MesgNum["HRV_VALUE"] = 371] = "HRV_VALUE";
|
|
97
|
-
MesgNum[MesgNum["RAW_BBI"] = 372] = "RAW_BBI";
|
|
98
|
-
MesgNum[MesgNum["DEVICE_AUX_BATTERY_INFO"] = 375] = "DEVICE_AUX_BATTERY_INFO";
|
|
99
|
-
MesgNum[MesgNum["HSA_GYROSCOPE_DATA"] = 376] = "HSA_GYROSCOPE_DATA";
|
|
100
|
-
MesgNum[MesgNum["CHRONO_SHOT_SESSION"] = 387] = "CHRONO_SHOT_SESSION";
|
|
101
|
-
MesgNum[MesgNum["CHRONO_SHOT_DATA"] = 388] = "CHRONO_SHOT_DATA";
|
|
102
|
-
MesgNum[MesgNum["HSA_CONFIGURATION_DATA"] = 389] = "HSA_CONFIGURATION_DATA";
|
|
103
|
-
MesgNum[MesgNum["DIVE_APNEA_ALARM"] = 393] = "DIVE_APNEA_ALARM";
|
|
104
|
-
MesgNum[MesgNum["SKIN_TEMP_OVERNIGHT"] = 398] = "SKIN_TEMP_OVERNIGHT";
|
|
105
|
-
MesgNum[MesgNum["HSA_WRIST_TEMPERATURE_DATA"] = 409] = "HSA_WRIST_TEMPERATURE_DATA";
|
|
106
|
-
})(MesgNum || (MesgNum = {}));
|
package/dist/FIT/types/sport.js
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
export var Sport;
|
|
2
|
-
(function (Sport) {
|
|
3
|
-
Sport[Sport["GENERIC"] = 0] = "GENERIC";
|
|
4
|
-
Sport[Sport["RUNNING"] = 1] = "RUNNING";
|
|
5
|
-
Sport[Sport["CYCLING"] = 2] = "CYCLING";
|
|
6
|
-
Sport[Sport["TRANSITION"] = 3] = "TRANSITION";
|
|
7
|
-
Sport[Sport["FITNESS_EQUIPMENT"] = 4] = "FITNESS_EQUIPMENT";
|
|
8
|
-
Sport[Sport["SWIMMING"] = 5] = "SWIMMING";
|
|
9
|
-
Sport[Sport["BASKETBALL"] = 6] = "BASKETBALL";
|
|
10
|
-
Sport[Sport["SOCCER"] = 7] = "SOCCER";
|
|
11
|
-
Sport[Sport["TENNIS"] = 8] = "TENNIS";
|
|
12
|
-
Sport[Sport["AMERICAN_FOOTBALL"] = 9] = "AMERICAN_FOOTBALL";
|
|
13
|
-
Sport[Sport["TRAINING"] = 10] = "TRAINING";
|
|
14
|
-
Sport[Sport["WALKING"] = 11] = "WALKING";
|
|
15
|
-
Sport[Sport["CROSS_COUNTRY_SKIING"] = 12] = "CROSS_COUNTRY_SKIING";
|
|
16
|
-
Sport[Sport["ALPINE_SKIING"] = 13] = "ALPINE_SKIING";
|
|
17
|
-
Sport[Sport["SNOWBOARDING"] = 14] = "SNOWBOARDING";
|
|
18
|
-
Sport[Sport["ROWING"] = 15] = "ROWING";
|
|
19
|
-
Sport[Sport["MOUNTAINEERING"] = 16] = "MOUNTAINEERING";
|
|
20
|
-
Sport[Sport["HIKING"] = 17] = "HIKING";
|
|
21
|
-
Sport[Sport["MULTISPORT"] = 18] = "MULTISPORT";
|
|
22
|
-
Sport[Sport["PADDLING"] = 19] = "PADDLING";
|
|
23
|
-
Sport[Sport["FLYING"] = 20] = "FLYING";
|
|
24
|
-
Sport[Sport["E_BIKING"] = 21] = "E_BIKING";
|
|
25
|
-
Sport[Sport["MOTORCYCLING"] = 22] = "MOTORCYCLING";
|
|
26
|
-
Sport[Sport["BOATING"] = 23] = "BOATING";
|
|
27
|
-
Sport[Sport["DRIVING"] = 24] = "DRIVING";
|
|
28
|
-
Sport[Sport["GOLF"] = 25] = "GOLF";
|
|
29
|
-
Sport[Sport["HANG_GLIDING"] = 26] = "HANG_GLIDING";
|
|
30
|
-
Sport[Sport["HORSEBACK_RIDING"] = 27] = "HORSEBACK_RIDING";
|
|
31
|
-
Sport[Sport["HUNTING"] = 28] = "HUNTING";
|
|
32
|
-
Sport[Sport["FISHING"] = 29] = "FISHING";
|
|
33
|
-
Sport[Sport["INLINE_SKATING"] = 30] = "INLINE_SKATING";
|
|
34
|
-
Sport[Sport["ROCK_CLIMBING"] = 31] = "ROCK_CLIMBING";
|
|
35
|
-
Sport[Sport["SAILING"] = 32] = "SAILING";
|
|
36
|
-
Sport[Sport["ICE_SKATING"] = 33] = "ICE_SKATING";
|
|
37
|
-
Sport[Sport["SKY_DIVING"] = 34] = "SKY_DIVING";
|
|
38
|
-
Sport[Sport["SNOWSHOEING"] = 35] = "SNOWSHOEING";
|
|
39
|
-
Sport[Sport["SNOWMOBILING"] = 36] = "SNOWMOBILING";
|
|
40
|
-
Sport[Sport["STAND_UP_PADDLEBOARDING"] = 37] = "STAND_UP_PADDLEBOARDING";
|
|
41
|
-
Sport[Sport["SURFING"] = 38] = "SURFING";
|
|
42
|
-
Sport[Sport["WAKEBOARDING"] = 39] = "WAKEBOARDING";
|
|
43
|
-
Sport[Sport["WATER_SKIING"] = 40] = "WATER_SKIING";
|
|
44
|
-
Sport[Sport["YOGA"] = 41] = "YOGA";
|
|
45
|
-
Sport[Sport["PILATES"] = 42] = "PILATES";
|
|
46
|
-
Sport[Sport["CALISTHENICS"] = 43] = "CALISTHENICS";
|
|
47
|
-
Sport[Sport["ALL"] = 254] = "ALL";
|
|
48
|
-
})(Sport || (Sport = {}));
|
package/dist/FIT/types.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/FIT/util.js
DELETED
package/dist/GPX/base.js
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import { BaseConverter as CoreBaseConverter, BaseMiddleware as CoreBaseMiddleware, } from "../core/base.js";
|
|
2
|
-
// ============ GPX 特定基础类 ============
|
|
3
|
-
/**
|
|
4
|
-
* GPX 基础转换器抽象类(继承通用基础转换器)
|
|
5
|
-
*/
|
|
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) {
|
|
29
|
-
if (!ast.attributes)
|
|
30
|
-
return;
|
|
31
|
-
Object.entries(ast.attributes).forEach(([key, value]) => {
|
|
32
|
-
const targetKey = mapping[key];
|
|
33
|
-
if (targetKey && targetKey in target && typeof value !== "undefined") {
|
|
34
|
-
target[targetKey] = this.parseFloat(value);
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* GPX 基础中间件抽象类(继承通用基础中间件)
|
|
41
|
-
*/
|
|
42
|
-
export class BaseGPXMiddleware extends CoreBaseMiddleware {
|
|
43
|
-
// GPX 特定的中间件逻辑可以在这里添加
|
|
44
|
-
async onError(error, context) {
|
|
45
|
-
console.error(`GPX中间件 ${this.name} 处理错误:`, error);
|
|
46
|
-
context.warnings.push(`中间件 ${this.name} 错误: ${error.message}`);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* @deprecated 使用 BaseGPXConverter 替代
|
|
51
|
-
*/
|
|
52
|
-
export const BaseConverter = BaseGPXConverter;
|
|
53
|
-
/**
|
|
54
|
-
* @deprecated 使用 BaseGPXMiddleware 替代
|
|
55
|
-
*/
|
|
56
|
-
export const BaseMiddleware = BaseGPXMiddleware;
|