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.
Files changed (82) hide show
  1. package/README.md +322 -281
  2. package/dist/FIT/base.d.ts +0 -30
  3. package/dist/FIT/decoder.d.ts +0 -48
  4. package/dist/FIT/encoder.d.ts +0 -97
  5. package/dist/FIT/mesg.d.ts +0 -3
  6. package/dist/FIT/middleware.d.ts +0 -15
  7. package/dist/FIT/plugins.d.ts +0 -9
  8. package/dist/FIT/processor.d.ts +0 -24
  9. package/dist/FIT/types/mesg_num.d.ts +102 -102
  10. package/dist/FIT/types/sport.d.ts +44 -44
  11. package/dist/FIT/types.d.ts +0 -35
  12. package/dist/GPX/base.d.ts +0 -39
  13. package/dist/GPX/converters.d.ts +0 -30
  14. package/dist/GPX/decoder.d.ts +0 -66
  15. package/dist/GPX/encoder.d.ts +0 -109
  16. package/dist/GPX/middleware.d.ts +0 -9
  17. package/dist/GPX/processor.d.ts +0 -18
  18. package/dist/GPX/types.d.ts +0 -108
  19. package/dist/TCX/base.d.ts +0 -33
  20. package/dist/TCX/converters.d.ts +0 -24
  21. package/dist/TCX/decoder.d.ts +0 -54
  22. package/dist/TCX/encoder.d.ts +0 -109
  23. package/dist/TCX/index.d.ts +4 -1
  24. package/dist/TCX/middleware.d.ts +0 -9
  25. package/dist/TCX/processor.d.ts +0 -18
  26. package/dist/TCX/types.d.ts +0 -13
  27. package/dist/TrackSwap.d.ts +37 -33
  28. package/dist/core/base.d.ts +0 -46
  29. package/dist/core/xml-utils.d.ts +0 -24
  30. package/dist/index.js +24 -5
  31. package/dist/sport/base.d.ts +63 -0
  32. package/dist/sport/converters.d.ts +33 -0
  33. package/dist/sport/encoders.d.ts +34 -0
  34. package/dist/sport/index.d.ts +17 -0
  35. package/dist/sport/processor.d.ts +19 -0
  36. package/dist/types.d.ts +91 -13
  37. package/package.json +18 -3
  38. package/dist/FIT/base.js +0 -101
  39. package/dist/FIT/crc.js +0 -16
  40. package/dist/FIT/decoder.js +0 -323
  41. package/dist/FIT/encoder.js +0 -445
  42. package/dist/FIT/index.js +0 -13
  43. package/dist/FIT/mesg.js +0 -208
  44. package/dist/FIT/middleware.js +0 -206
  45. package/dist/FIT/plugins.js +0 -104
  46. package/dist/FIT/processor.js +0 -170
  47. package/dist/FIT/types/course_point.js +0 -58
  48. package/dist/FIT/types/event.js +0 -50
  49. package/dist/FIT/types/event_type.js +0 -19
  50. package/dist/FIT/types/file.js +0 -24
  51. package/dist/FIT/types/index.js +0 -297
  52. package/dist/FIT/types/mesg_num.js +0 -106
  53. package/dist/FIT/types/sport.js +0 -48
  54. package/dist/FIT/types.js +0 -1
  55. package/dist/FIT/util.js +0 -7
  56. package/dist/GPX/base.js +0 -56
  57. package/dist/GPX/converters.js +0 -352
  58. package/dist/GPX/decoder.js +0 -409
  59. package/dist/GPX/encoder.js +0 -513
  60. package/dist/GPX/extensions/index.js +0 -14
  61. package/dist/GPX/index.js +0 -11
  62. package/dist/GPX/middleware.js +0 -93
  63. package/dist/GPX/processor.js +0 -188
  64. package/dist/GPX/types.js +0 -1
  65. package/dist/GPX/util.js +0 -18
  66. package/dist/TCX/base.js +0 -62
  67. package/dist/TCX/converters.js +0 -333
  68. package/dist/TCX/decoder.js +0 -350
  69. package/dist/TCX/encoder.js +0 -513
  70. package/dist/TCX/index.js +0 -9
  71. package/dist/TCX/middleware.js +0 -93
  72. package/dist/TCX/processor.js +0 -197
  73. package/dist/TCX/types.js +0 -1
  74. package/dist/TrackSwap.js +0 -84
  75. package/dist/core/base.js +0 -138
  76. package/dist/core/decoder.d.ts +0 -66
  77. package/dist/core/decoder.js +0 -90
  78. package/dist/core/index.js +0 -4
  79. package/dist/core/processor.d.ts +0 -69
  80. package/dist/core/processor.js +0 -265
  81. package/dist/core/xml-utils.js +0 -140
  82. package/dist/types.js +0 -1
@@ -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 = {}));
@@ -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
@@ -1,7 +0,0 @@
1
- export const FITRecordOriginKey = [
2
- 'speed',
3
- 'power',
4
- 'cadence',
5
- 'temperature',
6
- 'heartRate',
7
- ];
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;