@sports-alliance/sports-lib 7.1.2 → 7.2.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 (62) hide show
  1. package/lib/cjs/data/data-ground-contact-time-balance-left.d.ts +4 -0
  2. package/lib/cjs/data/data-ground-contact-time-balance-left.js +8 -0
  3. package/lib/cjs/data/data-ground-contact-time-balance-right.d.ts +4 -0
  4. package/lib/cjs/data/data-ground-contact-time-balance-right.js +8 -0
  5. package/lib/cjs/data/data-ground-contact-time-balance.d.ts +3 -0
  6. package/lib/cjs/data/data-ground-contact-time-balance.js +7 -0
  7. package/lib/cjs/data/data-stance-time-balance-left.d.ts +1 -0
  8. package/lib/cjs/data/data-stance-time-balance-left.js +1 -0
  9. package/lib/cjs/data/data-stance-time-balance-right.d.ts +1 -0
  10. package/lib/cjs/data/data-stance-time-balance-right.js +1 -0
  11. package/lib/cjs/data/data-stance-time-balance.d.ts +1 -0
  12. package/lib/cjs/data/data-stance-time-balance.js +1 -0
  13. package/lib/cjs/data/data.depth-max.d.ts +5 -0
  14. package/lib/cjs/data/data.depth-max.js +9 -0
  15. package/lib/cjs/data/data.depth.d.ts +5 -0
  16. package/lib/cjs/data/data.depth.js +9 -0
  17. package/lib/cjs/data/data.fitness-age.d.ts +5 -0
  18. package/lib/cjs/data/data.fitness-age.js +9 -0
  19. package/lib/cjs/data/data.ground-contact-time-avg.d.ts +5 -0
  20. package/lib/cjs/data/data.ground-contact-time-avg.js +9 -0
  21. package/lib/cjs/data/data.ground-contact-time-max.d.ts +5 -0
  22. package/lib/cjs/data/data.ground-contact-time-max.js +9 -0
  23. package/lib/cjs/data/data.ground-contact-time-min.d.ts +5 -0
  24. package/lib/cjs/data/data.ground-contact-time-min.js +9 -0
  25. package/lib/cjs/data/data.ground-contact-time.d.ts +5 -0
  26. package/lib/cjs/data/data.ground-contact-time.js +9 -0
  27. package/lib/cjs/data/data.max-hr-setting.d.ts +5 -0
  28. package/lib/cjs/data/data.max-hr-setting.js +9 -0
  29. package/lib/cjs/data/data.stance-time.d.ts +1 -0
  30. package/lib/cjs/data/data.stance-time.js +1 -0
  31. package/lib/cjs/data/data.store.js +39 -1
  32. package/lib/cjs/data/data.vertical-oscillation-avg.d.ts +5 -0
  33. package/lib/cjs/data/data.vertical-oscillation-avg.js +9 -0
  34. package/lib/cjs/data/data.vertical-oscillation-max.d.ts +5 -0
  35. package/lib/cjs/data/data.vertical-oscillation-max.js +9 -0
  36. package/lib/cjs/data/data.vertical-oscillation-min.d.ts +5 -0
  37. package/lib/cjs/data/data.vertical-oscillation-min.js +9 -0
  38. package/lib/cjs/events/adapters/importers/fit/importer.fit.js +5 -0
  39. package/lib/cjs/events/adapters/importers/fit/importer.fit.mapper.js +23 -0
  40. package/lib/cjs/events/adapters/importers/suunto/importer.suunto.integration.spec.js +87 -3
  41. package/lib/cjs/events/adapters/importers/suunto/importer.suunto.json.js +86 -6
  42. package/lib/cjs/events/utilities/activity.utilities.js +38 -2
  43. package/lib/esm/data/data-ground-contact-time-balance-left.d.ts +4 -0
  44. package/lib/esm/data/data-ground-contact-time-balance-right.d.ts +4 -0
  45. package/lib/esm/data/data-ground-contact-time-balance.d.ts +3 -0
  46. package/lib/esm/data/data-stance-time-balance-left.d.ts +1 -0
  47. package/lib/esm/data/data-stance-time-balance-right.d.ts +1 -0
  48. package/lib/esm/data/data-stance-time-balance.d.ts +1 -0
  49. package/lib/esm/data/data.depth-max.d.ts +5 -0
  50. package/lib/esm/data/data.depth.d.ts +5 -0
  51. package/lib/esm/data/data.fitness-age.d.ts +5 -0
  52. package/lib/esm/data/data.ground-contact-time-avg.d.ts +5 -0
  53. package/lib/esm/data/data.ground-contact-time-max.d.ts +5 -0
  54. package/lib/esm/data/data.ground-contact-time-min.d.ts +5 -0
  55. package/lib/esm/data/data.ground-contact-time.d.ts +5 -0
  56. package/lib/esm/data/data.max-hr-setting.d.ts +5 -0
  57. package/lib/esm/data/data.stance-time.d.ts +1 -0
  58. package/lib/esm/data/data.vertical-oscillation-avg.d.ts +5 -0
  59. package/lib/esm/data/data.vertical-oscillation-max.d.ts +5 -0
  60. package/lib/esm/data/data.vertical-oscillation-min.d.ts +5 -0
  61. package/lib/esm/index.js +258 -5
  62. package/package.json +2 -2
@@ -0,0 +1,4 @@
1
+ import { DataGroundContactTimeBalance } from './data-ground-contact-time-balance';
2
+ export declare class DataGroundContactTimeBalanceLeft extends DataGroundContactTimeBalance {
3
+ static type: string;
4
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataGroundContactTimeBalanceLeft = void 0;
4
+ const data_ground_contact_time_balance_1 = require("./data-ground-contact-time-balance");
5
+ class DataGroundContactTimeBalanceLeft extends data_ground_contact_time_balance_1.DataGroundContactTimeBalance {
6
+ }
7
+ exports.DataGroundContactTimeBalanceLeft = DataGroundContactTimeBalanceLeft;
8
+ DataGroundContactTimeBalanceLeft.type = 'Ground Contact Time Balance Left';
@@ -0,0 +1,4 @@
1
+ import { DataGroundContactTimeBalance } from './data-ground-contact-time-balance';
2
+ export declare class DataGroundContactTimeBalanceRight extends DataGroundContactTimeBalance {
3
+ static type: string;
4
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataGroundContactTimeBalanceRight = void 0;
4
+ const data_ground_contact_time_balance_1 = require("./data-ground-contact-time-balance");
5
+ class DataGroundContactTimeBalanceRight extends data_ground_contact_time_balance_1.DataGroundContactTimeBalance {
6
+ }
7
+ exports.DataGroundContactTimeBalanceRight = DataGroundContactTimeBalanceRight;
8
+ DataGroundContactTimeBalanceRight.type = 'Ground Contact Time Balance Right';
@@ -0,0 +1,3 @@
1
+ import { DataPercent } from './data.percent';
2
+ export declare abstract class DataGroundContactTimeBalance extends DataPercent {
3
+ }
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataGroundContactTimeBalance = void 0;
4
+ const data_percent_1 = require("./data.percent");
5
+ class DataGroundContactTimeBalance extends data_percent_1.DataPercent {
6
+ }
7
+ exports.DataGroundContactTimeBalance = DataGroundContactTimeBalance;
@@ -1,4 +1,5 @@
1
1
  import { DataStanceTimeBalance } from './data-stance-time-balance';
2
+ /** @deprecated Use DataGroundContactTimeBalanceLeft instead */
2
3
  export declare class DataStanceTimeBalanceLeft extends DataStanceTimeBalance {
3
4
  static type: string;
4
5
  }
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DataStanceTimeBalanceLeft = void 0;
4
4
  const data_stance_time_balance_1 = require("./data-stance-time-balance");
5
+ /** @deprecated Use DataGroundContactTimeBalanceLeft instead */
5
6
  class DataStanceTimeBalanceLeft extends data_stance_time_balance_1.DataStanceTimeBalance {
6
7
  }
7
8
  exports.DataStanceTimeBalanceLeft = DataStanceTimeBalanceLeft;
@@ -1,4 +1,5 @@
1
1
  import { DataStanceTimeBalance } from './data-stance-time-balance';
2
+ /** @deprecated Use DataGroundContactTimeBalanceRight instead */
2
3
  export declare class DataStanceTimeBalanceRight extends DataStanceTimeBalance {
3
4
  static type: string;
4
5
  }
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DataStanceTimeBalanceRight = void 0;
4
4
  const data_stance_time_balance_1 = require("./data-stance-time-balance");
5
+ /** @deprecated Use DataGroundContactTimeBalanceRight instead */
5
6
  class DataStanceTimeBalanceRight extends data_stance_time_balance_1.DataStanceTimeBalance {
6
7
  }
7
8
  exports.DataStanceTimeBalanceRight = DataStanceTimeBalanceRight;
@@ -1,3 +1,4 @@
1
1
  import { DataPercent } from './data.percent';
2
+ /** @deprecated Use DataGroundContactTimeBalance instead */
2
3
  export declare abstract class DataStanceTimeBalance extends DataPercent {
3
4
  }
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DataStanceTimeBalance = void 0;
4
4
  const data_percent_1 = require("./data.percent");
5
+ /** @deprecated Use DataGroundContactTimeBalance instead */
5
6
  class DataStanceTimeBalance extends data_percent_1.DataPercent {
6
7
  }
7
8
  exports.DataStanceTimeBalance = DataStanceTimeBalance;
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataDepthMax extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataDepthMax = void 0;
4
+ const data_number_1 = require("./data.number");
5
+ class DataDepthMax extends data_number_1.DataNumber {
6
+ }
7
+ exports.DataDepthMax = DataDepthMax;
8
+ DataDepthMax.type = 'Maximum Depth';
9
+ DataDepthMax.unit = 'm';
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataDepth extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataDepth = void 0;
4
+ const data_number_1 = require("./data.number");
5
+ class DataDepth extends data_number_1.DataNumber {
6
+ }
7
+ exports.DataDepth = DataDepth;
8
+ DataDepth.type = 'Depth';
9
+ DataDepth.unit = 'm';
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataFitnessAge extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataFitnessAge = void 0;
4
+ const data_number_1 = require("./data.number");
5
+ class DataFitnessAge extends data_number_1.DataNumber {
6
+ }
7
+ exports.DataFitnessAge = DataFitnessAge;
8
+ DataFitnessAge.type = 'Fitness Age';
9
+ DataFitnessAge.unit = 'years';
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataGroundContactTimeAvg extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataGroundContactTimeAvg = void 0;
4
+ const data_number_1 = require("./data.number");
5
+ class DataGroundContactTimeAvg extends data_number_1.DataNumber {
6
+ }
7
+ exports.DataGroundContactTimeAvg = DataGroundContactTimeAvg;
8
+ DataGroundContactTimeAvg.type = 'Ground Contact Time Avg';
9
+ DataGroundContactTimeAvg.unit = 'ms';
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataGroundContactTimeMax extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataGroundContactTimeMax = void 0;
4
+ const data_number_1 = require("./data.number");
5
+ class DataGroundContactTimeMax extends data_number_1.DataNumber {
6
+ }
7
+ exports.DataGroundContactTimeMax = DataGroundContactTimeMax;
8
+ DataGroundContactTimeMax.type = 'Ground Contact Time Max';
9
+ DataGroundContactTimeMax.unit = 'ms';
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataGroundContactTimeMin extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataGroundContactTimeMin = void 0;
4
+ const data_number_1 = require("./data.number");
5
+ class DataGroundContactTimeMin extends data_number_1.DataNumber {
6
+ }
7
+ exports.DataGroundContactTimeMin = DataGroundContactTimeMin;
8
+ DataGroundContactTimeMin.type = 'Ground Contact Time Min';
9
+ DataGroundContactTimeMin.unit = 'ms';
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataGroundContactTime extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataGroundContactTime = void 0;
4
+ const data_number_1 = require("./data.number");
5
+ class DataGroundContactTime extends data_number_1.DataNumber {
6
+ }
7
+ exports.DataGroundContactTime = DataGroundContactTime;
8
+ DataGroundContactTime.type = 'Ground Contact Time';
9
+ DataGroundContactTime.unit = 'ms';
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataMaxHRSetting extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataMaxHRSetting = void 0;
4
+ const data_number_1 = require("./data.number");
5
+ class DataMaxHRSetting extends data_number_1.DataNumber {
6
+ }
7
+ exports.DataMaxHRSetting = DataMaxHRSetting;
8
+ DataMaxHRSetting.type = 'Max HR Setting';
9
+ DataMaxHRSetting.unit = 'bpm';
@@ -1,4 +1,5 @@
1
1
  import { DataNumber } from './data.number';
2
+ /** @deprecated Use DataGroundContactTime instead */
2
3
  export declare class DataStanceTime extends DataNumber {
3
4
  static type: string;
4
5
  static unit: string;
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DataStanceTime = void 0;
4
4
  const data_number_1 = require("./data.number");
5
+ /** @deprecated Use DataGroundContactTime instead */
5
6
  class DataStanceTime extends data_number_1.DataNumber {
6
7
  }
7
8
  exports.DataStanceTime = DataStanceTime;
@@ -102,6 +102,7 @@ const data_power_right_1 = require("./data.power-right");
102
102
  const data_power_left_1 = require("./data.power-left");
103
103
  const data_stance_time_1 = require("./data.stance-time");
104
104
  const data_stance_time_balance_left_1 = require("./data-stance-time-balance-left");
105
+ const data_ground_contact_time_balance_left_1 = require("./data-ground-contact-time-balance-left");
105
106
  const data_step_length_1 = require("./data.step-length");
106
107
  const data_vertical_ratio_1 = require("./data.vertical-ratio");
107
108
  const data_description_1 = require("./data.description");
@@ -167,6 +168,8 @@ const data_target_speed_zone_1 = require("./data.target-speed-zone");
167
168
  const data_target_distance_1 = require("./data.target-distance");
168
169
  const data_target_time_1 = require("./data.target-time");
169
170
  const data_stance_time_balance_right_1 = require("./data-stance-time-balance-right");
171
+ const data_ground_contact_time_balance_right_1 = require("./data-ground-contact-time-balance-right");
172
+ const data_ground_contact_time_balance_1 = require("./data-ground-contact-time-balance");
170
173
  const data_rider_position_change_event_1 = require("./data.rider-position-change-event");
171
174
  const data_sport_profile_name_1 = require("./data.sport-profile-name");
172
175
  const data_balance_1 = require("./data.balance");
@@ -199,6 +202,17 @@ const data_right_torque_effectiveness_1 = require("./data.right-torque-effective
199
202
  const data_total_flow_1 = require("./data.total-flow");
200
203
  const data_total_grit_1 = require("./data.total-grit");
201
204
  const data_training_load_peak_1 = require("./data.training-load-peak");
205
+ const data_ground_contact_time_1 = require("./data.ground-contact-time");
206
+ const data_ground_contact_time_avg_1 = require("./data.ground-contact-time-avg");
207
+ const data_ground_contact_time_max_1 = require("./data.ground-contact-time-max");
208
+ const data_ground_contact_time_min_1 = require("./data.ground-contact-time-min");
209
+ const data_vertical_oscillation_avg_1 = require("./data.vertical-oscillation-avg");
210
+ const data_vertical_oscillation_max_1 = require("./data.vertical-oscillation-max");
211
+ const data_vertical_oscillation_min_1 = require("./data.vertical-oscillation-min");
212
+ const data_fitness_age_1 = require("./data.fitness-age");
213
+ const data_max_hr_setting_1 = require("./data.max-hr-setting");
214
+ const data_depth_1 = require("./data.depth");
215
+ const data_depth_max_1 = require("./data.depth-max");
202
216
  // "Total Training effect" was renamed to "Aerobic Training Effect" in sports-lib 6.0
203
217
  class DataTotalTrainingEffectLegacy extends data_aerobic_training_effect_1.DataAerobicTrainingEffect {
204
218
  }
@@ -496,10 +510,34 @@ exports.DataStore = {
496
510
  DataRightTorqueEffectiveness: data_right_torque_effectiveness_1.DataRightTorqueEffectiveness,
497
511
  DataTotalFlow: data_total_flow_1.DataTotalFlow,
498
512
  DataTotalGrit: data_total_grit_1.DataTotalGrit,
499
- DataTrainingLoadPeak: data_training_load_peak_1.DataTrainingLoadPeak
513
+ DataTrainingLoadPeak: data_training_load_peak_1.DataTrainingLoadPeak,
514
+ DataGroundContactTime: data_ground_contact_time_1.DataGroundContactTime,
515
+ DataGroundContactTimeAvg: data_ground_contact_time_avg_1.DataGroundContactTimeAvg,
516
+ DataGroundContactTimeMax: data_ground_contact_time_max_1.DataGroundContactTimeMax,
517
+ DataGroundContactTimeMin: data_ground_contact_time_min_1.DataGroundContactTimeMin,
518
+ DataGroundContactTimeBalance: data_ground_contact_time_balance_1.DataGroundContactTimeBalance,
519
+ DataGroundContactTimeBalanceLeft: data_ground_contact_time_balance_left_1.DataGroundContactTimeBalanceLeft,
520
+ DataGroundContactTimeBalanceRight: data_ground_contact_time_balance_right_1.DataGroundContactTimeBalanceRight,
521
+ DataVerticalOscillationAvg: data_vertical_oscillation_avg_1.DataVerticalOscillationAvg,
522
+ DataVerticalOscillationMax: data_vertical_oscillation_max_1.DataVerticalOscillationMax,
523
+ DataVerticalOscillationMin: data_vertical_oscillation_min_1.DataVerticalOscillationMin,
524
+ DataFitnessAge: data_fitness_age_1.DataFitnessAge,
525
+ DataMaxHRSetting: data_max_hr_setting_1.DataMaxHRSetting,
526
+ DataDepth: data_depth_1.DataDepth,
527
+ DataDepthMax: data_depth_max_1.DataDepthMax
500
528
  };
501
529
  class DynamicDataLoader {
502
530
  static getDataInstanceFromDataType(dataType, opts) {
531
+ // Redirect legacy Stance Time types to Ground Contact Time
532
+ if (dataType === data_stance_time_1.DataStanceTime.type) {
533
+ dataType = data_ground_contact_time_1.DataGroundContactTime.type;
534
+ }
535
+ else if (dataType === data_stance_time_balance_left_1.DataStanceTimeBalanceLeft.type) {
536
+ dataType = data_ground_contact_time_balance_left_1.DataGroundContactTimeBalanceLeft.type;
537
+ }
538
+ else if (dataType === data_stance_time_balance_right_1.DataStanceTimeBalanceRight.type) {
539
+ dataType = data_ground_contact_time_balance_right_1.DataGroundContactTimeBalanceRight.type;
540
+ }
503
541
  const className = Object.keys(exports.DataStore).find(dataClass => {
504
542
  return exports.DataStore[dataClass] && exports.DataStore[dataClass].type && exports.DataStore[dataClass].type === dataType;
505
543
  });
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataVerticalOscillationAvg extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataVerticalOscillationAvg = void 0;
4
+ const data_number_1 = require("./data.number");
5
+ class DataVerticalOscillationAvg extends data_number_1.DataNumber {
6
+ }
7
+ exports.DataVerticalOscillationAvg = DataVerticalOscillationAvg;
8
+ DataVerticalOscillationAvg.type = 'Average Vertical Oscillation';
9
+ DataVerticalOscillationAvg.unit = 'mm';
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataVerticalOscillationMax extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataVerticalOscillationMax = void 0;
4
+ const data_number_1 = require("./data.number");
5
+ class DataVerticalOscillationMax extends data_number_1.DataNumber {
6
+ }
7
+ exports.DataVerticalOscillationMax = DataVerticalOscillationMax;
8
+ DataVerticalOscillationMax.type = 'Maximum Vertical Oscillation';
9
+ DataVerticalOscillationMax.unit = 'mm';
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataVerticalOscillationMin extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DataVerticalOscillationMin = void 0;
4
+ const data_number_1 = require("./data.number");
5
+ class DataVerticalOscillationMin extends data_number_1.DataNumber {
6
+ }
7
+ exports.DataVerticalOscillationMin = DataVerticalOscillationMin;
8
+ DataVerticalOscillationMin.type = 'Minimum Vertical Oscillation';
9
+ DataVerticalOscillationMin.unit = 'mm';
@@ -129,6 +129,7 @@ const data_cycling_standing_time_1 = require("../../../../data/data.cycling-stan
129
129
  const data_cycling_seated_time_1 = require("../../../../data/data.cycling-seated-time");
130
130
  const data_cycling_position_1 = require("../../../../data/data.cycling-position");
131
131
  const data_rider_position_change_event_1 = require("../../../../data/data.rider-position-change-event");
132
+ const data_ground_contact_time_avg_1 = require("../../../../data/data.ground-contact-time-avg");
132
133
  const data_stance_time_1 = require("../../../../data/data.stance-time");
133
134
  const data_vertical_oscillation_1 = require("../../../../data/data.vertical-oscillation");
134
135
  const data_vertical_ratio_1 = require("../../../../data/data.vertical-ratio");
@@ -1008,7 +1009,11 @@ class EventImporterFIT {
1008
1009
  stats.push(new data_cycling_seated_time_1.DataCyclingSeatedTime(seatedTime));
1009
1010
  }
1010
1011
  // Running dynamics
1012
+ // Stance Time
1011
1013
  if (Number.isFinite(object.avg_stance_time)) {
1014
+ stats.push(new data_ground_contact_time_avg_1.DataGroundContactTimeAvg(object.avg_stance_time));
1015
+ // Keep DataStanceTime for backward compatibility (if needed, though logically it's an Avg)
1016
+ // The original code mapped avg_stance_time to DataStanceTime, which was arguably incorrect naming or type usage
1012
1017
  stats.push(new data_stance_time_1.DataStanceTime(object.avg_stance_time));
1013
1018
  }
1014
1019
  if (Number.isFinite(object.avg_vertical_oscillation)) {
@@ -21,6 +21,9 @@ const data_stryd_distance_1 = require("../../../../data/data.stryd-distance");
21
21
  const data_stryd_speed_1 = require("../../../../data/data.stryd-speed");
22
22
  const data_right_balance_1 = require("../../../../data/data.right-balance");
23
23
  const data_left_balance_1 = require("../../../../data/data.left-balance");
24
+ const data_ground_contact_time_1 = require("../../../../data/data.ground-contact-time");
25
+ const data_ground_contact_time_balance_left_1 = require("../../../../data/data-ground-contact-time-balance-left");
26
+ const data_ground_contact_time_balance_right_1 = require("../../../../data/data-ground-contact-time-balance-right");
24
27
  const data_stance_time_1 = require("../../../../data/data.stance-time");
25
28
  const data_stance_time_balance_left_1 = require("../../../../data/data-stance-time-balance-left");
26
29
  const data_step_length_1 = require("../../../../data/data.step-length");
@@ -213,12 +216,32 @@ exports.FITSampleMapper = [
213
216
  : 100 - sample.left_right_balance.value;
214
217
  }
215
218
  },
219
+ {
220
+ dataType: data_ground_contact_time_1.DataGroundContactTime.type,
221
+ getSampleValue: (sample) => {
222
+ return sample.stance_time;
223
+ }
224
+ },
225
+ // Keep DataStanceTime for backward compatibility
216
226
  {
217
227
  dataType: data_stance_time_1.DataStanceTime.type,
218
228
  getSampleValue: (sample) => {
219
229
  return sample.stance_time;
220
230
  }
221
231
  },
232
+ {
233
+ dataType: data_ground_contact_time_balance_left_1.DataGroundContactTimeBalanceLeft.type,
234
+ getSampleValue: (sample) => {
235
+ return sample.stance_time_balance; // The field sample refers to the balance on left leg
236
+ }
237
+ },
238
+ {
239
+ dataType: data_ground_contact_time_balance_right_1.DataGroundContactTimeBalanceRight.type,
240
+ getSampleValue: (sample) => {
241
+ return (0, helpers_1.isNumber)(sample.stance_time_balance) ? 100 - sample.stance_time_balance : null;
242
+ }
243
+ },
244
+ // Keep DataStanceTimeBalanceLeft for backward compatibility
222
245
  {
223
246
  dataType: data_stance_time_balance_left_1.DataStanceTimeBalanceLeft.type,
224
247
  getSampleValue: (sample) => {
@@ -45,6 +45,16 @@ Object.defineProperty(exports, "__esModule", { value: true });
45
45
  const fs = __importStar(require("fs"));
46
46
  const path = __importStar(require("path"));
47
47
  const importer_suunto_json_1 = require("./importer.suunto.json");
48
+ const data_ground_contact_time_1 = require("../../../../data/data.ground-contact-time");
49
+ const data_ground_contact_time_avg_1 = require("../../../../data/data.ground-contact-time-avg");
50
+ const data_ground_contact_time_max_1 = require("../../../../data/data.ground-contact-time-max");
51
+ const data_ground_contact_time_min_1 = require("../../../../data/data.ground-contact-time-min");
52
+ const data_vertical_oscillation_1 = require("../../../../data/data.vertical-oscillation");
53
+ const data_vertical_oscillation_avg_1 = require("../../../../data/data.vertical-oscillation-avg");
54
+ const data_vertical_oscillation_max_1 = require("../../../../data/data.vertical-oscillation-max");
55
+ const data_vertical_oscillation_min_1 = require("../../../../data/data.vertical-oscillation-min");
56
+ const data_fitness_age_1 = require("../../../../data/data.fitness-age");
57
+ const data_max_hr_setting_1 = require("../../../../data/data.max-hr-setting");
48
58
  describe('EventImporterSuuntoJSON Integration', () => {
49
59
  // Go up 5 levels from src/events/adapters/importers/suunto -> sports-lib root
50
60
  const samplesDir = path.resolve(__dirname, '../../../../../samples/suunto');
@@ -58,7 +68,6 @@ describe('EventImporterSuuntoJSON Integration', () => {
58
68
  console.warn('No .json files found in samples directory.');
59
69
  return;
60
70
  }
61
- console.log(`Found ${files.length} .json files to test:`, files);
62
71
  for (const file of files) {
63
72
  const filePath = path.join(samplesDir, file);
64
73
  const fileString = fs.readFileSync(filePath, 'utf-8');
@@ -67,7 +76,6 @@ describe('EventImporterSuuntoJSON Integration', () => {
67
76
  const event = yield importer_suunto_json_1.EventImporterSuuntoJSON.getFromJSONString(fileString);
68
77
  expect(event).toBeDefined();
69
78
  expect(event.getActivities().length).toBeGreaterThan(0);
70
- console.log(`✅ Successfully parsed ${file}`);
71
79
  }
72
80
  catch (error) {
73
81
  console.error(`❌ Failed to parse ${file}:`, error);
@@ -75,5 +83,81 @@ describe('EventImporterSuuntoJSON Integration', () => {
75
83
  }
76
84
  }
77
85
  }));
78
- // Note: If SML/XML files existed, we would test EventImporterSuuntoSML here too.
86
+ describe('running-with-extra-data.json', () => {
87
+ let event;
88
+ let activity;
89
+ beforeAll(() => __awaiter(void 0, void 0, void 0, function* () {
90
+ const filePath = path.join(samplesDir, 'running-with-extra-data.json');
91
+ if (!fs.existsSync(filePath)) {
92
+ console.warn('running-with-extra-data.json not found. Skipping detailed tests.');
93
+ return;
94
+ }
95
+ const fileString = fs.readFileSync(filePath, 'utf-8');
96
+ event = yield importer_suunto_json_1.EventImporterSuuntoJSON.getFromJSONString(fileString);
97
+ // DEBUG: print one sample's date from the source file just blindly
98
+ // (we can't easily access json here again without parsing, but we can infer from activity)
99
+ // Find the main running activity (longest duration)
100
+ activity = event.getActivities().reduce((prev, current) => (prev.getDuration().getValue() > current.getDuration().getValue()) ? prev : current);
101
+ }));
102
+ it('should parse Ground Contact Time stream', () => {
103
+ if (!activity)
104
+ return;
105
+ // Depending on the file structure, GCT might be in the first or second activity.
106
+ // We selected the longest one.
107
+ const hasStream = activity.hasStreamData(data_ground_contact_time_1.DataGroundContactTime.type);
108
+ expect(hasStream).toBe(true);
109
+ if (hasStream) {
110
+ const stream = activity.getStreamData(data_ground_contact_time_1.DataGroundContactTime.type);
111
+ expect(stream.length).toBeGreaterThan(0);
112
+ }
113
+ });
114
+ it('should parse Ground Contact Time stats (avg, max, min)', () => {
115
+ if (!activity)
116
+ return;
117
+ const avgStat = activity.getStat(data_ground_contact_time_avg_1.DataGroundContactTimeAvg.type);
118
+ const maxStat = activity.getStat(data_ground_contact_time_max_1.DataGroundContactTimeMax.type);
119
+ const minStat = activity.getStat(data_ground_contact_time_min_1.DataGroundContactTimeMin.type);
120
+ expect(avgStat).toBeDefined();
121
+ expect(avgStat === null || avgStat === void 0 ? void 0 : avgStat.getValue()).toBeCloseTo(255.969, 3);
122
+ expect(maxStat).toBeDefined();
123
+ expect(maxStat === null || maxStat === void 0 ? void 0 : maxStat.getValue()).toBe(339);
124
+ expect(minStat).toBeDefined();
125
+ expect(minStat === null || minStat === void 0 ? void 0 : minStat.getValue()).toBe(219);
126
+ });
127
+ it('should parse Vertical Oscillation stream', () => {
128
+ if (!activity)
129
+ return;
130
+ const hasStream = activity.hasStreamData(data_vertical_oscillation_1.DataVerticalOscillation.type);
131
+ expect(hasStream).toBe(true);
132
+ });
133
+ it('should parse Vertical Oscillation stats (avg, max, min)', () => {
134
+ if (!activity)
135
+ return;
136
+ const avgStat = activity.getStat(data_vertical_oscillation_avg_1.DataVerticalOscillationAvg.type);
137
+ const maxStat = activity.getStat(data_vertical_oscillation_max_1.DataVerticalOscillationMax.type);
138
+ const minStat = activity.getStat(data_vertical_oscillation_min_1.DataVerticalOscillationMin.type);
139
+ expect(avgStat).toBeDefined();
140
+ expect(avgStat === null || avgStat === void 0 ? void 0 : avgStat.getValue()).toBeCloseTo(74.359, 3);
141
+ expect(maxStat).toBeDefined();
142
+ expect(maxStat === null || maxStat === void 0 ? void 0 : maxStat.getValue()).toBe(87);
143
+ expect(minStat).toBeDefined();
144
+ expect(minStat === null || minStat === void 0 ? void 0 : minStat.getValue()).toBe(42);
145
+ });
146
+ it('should parse Fitness Age from header (Event or Activity)', () => {
147
+ let stat = event.getStat(data_fitness_age_1.DataFitnessAge.type);
148
+ if (!stat && activity) {
149
+ stat = activity.getStat(data_fitness_age_1.DataFitnessAge.type);
150
+ }
151
+ expect(stat).toBeDefined();
152
+ expect(stat === null || stat === void 0 ? void 0 : stat.getValue()).toBe(25);
153
+ });
154
+ it('should parse Personal MaxHR from header (Event or Activity)', () => {
155
+ let stat = event.getStat(data_max_hr_setting_1.DataMaxHRSetting.type);
156
+ if (!stat && activity) {
157
+ stat = activity.getStat(data_max_hr_setting_1.DataMaxHRSetting.type);
158
+ }
159
+ expect(stat).toBeDefined();
160
+ expect(stat === null || stat === void 0 ? void 0 : stat.getValue()).toBe(171);
161
+ });
162
+ });
79
163
  });