@sports-alliance/sports-lib 7.0.13 → 7.1.0

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 (99) hide show
  1. package/check-metrics.js +30 -0
  2. package/find-values.js +33 -0
  3. package/inspect-devices.js +21 -0
  4. package/inspect-session.js +27 -0
  5. package/lib/cjs/activities/devices/device.d.ts +1 -0
  6. package/lib/cjs/activities/devices/device.interface.d.ts +1 -0
  7. package/lib/cjs/activities/devices/device.js +1 -0
  8. package/lib/cjs/activities/devices/device.json.interface.d.ts +1 -0
  9. package/lib/cjs/data/data.age.d.ts +6 -0
  10. package/lib/cjs/data/data.age.js +12 -0
  11. package/lib/cjs/data/data.avg-flow.d.ts +5 -0
  12. package/lib/cjs/data/data.avg-flow.js +9 -0
  13. package/lib/cjs/data/data.avg-grit.d.ts +5 -0
  14. package/lib/cjs/data/data.avg-grit.js +9 -0
  15. package/lib/cjs/data/data.avg-respiration-rate.d.ts +5 -0
  16. package/lib/cjs/data/data.avg-respiration-rate.js +9 -0
  17. package/lib/cjs/data/data.avg-vam.d.ts +5 -0
  18. package/lib/cjs/data/data.avg-vam.js +9 -0
  19. package/lib/cjs/data/data.est-sweat-loss.d.ts +6 -0
  20. package/lib/cjs/data/data.est-sweat-loss.js +12 -0
  21. package/lib/cjs/data/data.flow.d.ts +5 -0
  22. package/lib/cjs/data/data.flow.js +9 -0
  23. package/lib/cjs/data/data.gender.d.ts +4 -0
  24. package/lib/cjs/data/data.gender.js +8 -0
  25. package/lib/cjs/data/data.grit.d.ts +5 -0
  26. package/lib/cjs/data/data.grit.js +9 -0
  27. package/lib/cjs/data/data.height.d.ts +6 -0
  28. package/lib/cjs/data/data.height.js +12 -0
  29. package/lib/cjs/data/data.jump-count.d.ts +6 -0
  30. package/lib/cjs/data/data.jump-count.js +12 -0
  31. package/lib/cjs/data/data.jump-event.d.ts +12 -0
  32. package/lib/cjs/data/data.jump-event.js +16 -0
  33. package/lib/cjs/data/data.left-pedal-smoothness.d.ts +6 -0
  34. package/lib/cjs/data/data.left-pedal-smoothness.js +12 -0
  35. package/lib/cjs/data/data.left-torque-effectiveness.d.ts +6 -0
  36. package/lib/cjs/data/data.left-torque-effectiveness.js +12 -0
  37. package/lib/cjs/data/data.max-respiration-rate.d.ts +5 -0
  38. package/lib/cjs/data/data.max-respiration-rate.js +9 -0
  39. package/lib/cjs/data/data.min-respiration-rate.d.ts +5 -0
  40. package/lib/cjs/data/data.min-respiration-rate.js +9 -0
  41. package/lib/cjs/data/data.primary-benefit.d.ts +6 -0
  42. package/lib/cjs/data/data.primary-benefit.js +12 -0
  43. package/lib/cjs/data/data.resting-calories.d.ts +5 -0
  44. package/lib/cjs/data/data.resting-calories.js +9 -0
  45. package/lib/cjs/data/data.right-pedal-smoothness.d.ts +6 -0
  46. package/lib/cjs/data/data.right-pedal-smoothness.js +12 -0
  47. package/lib/cjs/data/data.right-torque-effectiveness.d.ts +6 -0
  48. package/lib/cjs/data/data.right-torque-effectiveness.js +12 -0
  49. package/lib/cjs/data/data.store.js +54 -2
  50. package/lib/cjs/data/data.total-flow.d.ts +5 -0
  51. package/lib/cjs/data/data.total-flow.js +9 -0
  52. package/lib/cjs/data/data.total-grit.d.ts +5 -0
  53. package/lib/cjs/data/data.total-grit.js +9 -0
  54. package/lib/cjs/data/data.training-load-peak.d.ts +5 -0
  55. package/lib/cjs/data/data.training-load-peak.js +9 -0
  56. package/lib/cjs/data/data.weight.d.ts +6 -0
  57. package/lib/cjs/data/data.weight.js +12 -0
  58. package/lib/cjs/events/adapters/importers/fit/importer.fit.d.ts +3 -1
  59. package/lib/cjs/events/adapters/importers/fit/importer.fit.js +209 -1
  60. package/lib/cjs/events/adapters/importers/fit/importer.fit.mapper.js +42 -0
  61. package/lib/cjs/events/adapters/importers/fit/importer.fit.mtb.spec.d.ts +1 -0
  62. package/lib/cjs/events/adapters/importers/fit/importer.fit.mtb.spec.js +217 -0
  63. package/lib/cjs/events/adapters/importers/fit/importer.fit.road.spec.d.ts +1 -0
  64. package/lib/cjs/events/adapters/importers/fit/importer.fit.road.spec.js +103 -0
  65. package/lib/cjs/index.d.ts +4 -0
  66. package/lib/cjs/index.js +4 -0
  67. package/lib/esm/activities/devices/device.d.ts +1 -0
  68. package/lib/esm/activities/devices/device.interface.d.ts +1 -0
  69. package/lib/esm/activities/devices/device.json.interface.d.ts +1 -0
  70. package/lib/esm/data/data.age.d.ts +6 -0
  71. package/lib/esm/data/data.avg-flow.d.ts +5 -0
  72. package/lib/esm/data/data.avg-grit.d.ts +5 -0
  73. package/lib/esm/data/data.avg-respiration-rate.d.ts +5 -0
  74. package/lib/esm/data/data.avg-vam.d.ts +5 -0
  75. package/lib/esm/data/data.est-sweat-loss.d.ts +6 -0
  76. package/lib/esm/data/data.flow.d.ts +5 -0
  77. package/lib/esm/data/data.gender.d.ts +4 -0
  78. package/lib/esm/data/data.grit.d.ts +5 -0
  79. package/lib/esm/data/data.height.d.ts +6 -0
  80. package/lib/esm/data/data.jump-count.d.ts +6 -0
  81. package/lib/esm/data/data.jump-event.d.ts +12 -0
  82. package/lib/esm/data/data.left-pedal-smoothness.d.ts +6 -0
  83. package/lib/esm/data/data.left-torque-effectiveness.d.ts +6 -0
  84. package/lib/esm/data/data.max-respiration-rate.d.ts +5 -0
  85. package/lib/esm/data/data.min-respiration-rate.d.ts +5 -0
  86. package/lib/esm/data/data.primary-benefit.d.ts +6 -0
  87. package/lib/esm/data/data.resting-calories.d.ts +5 -0
  88. package/lib/esm/data/data.right-pedal-smoothness.d.ts +6 -0
  89. package/lib/esm/data/data.right-torque-effectiveness.d.ts +6 -0
  90. package/lib/esm/data/data.total-flow.d.ts +5 -0
  91. package/lib/esm/data/data.total-grit.d.ts +5 -0
  92. package/lib/esm/data/data.training-load-peak.d.ts +5 -0
  93. package/lib/esm/data/data.weight.d.ts +6 -0
  94. package/lib/esm/events/adapters/importers/fit/importer.fit.d.ts +3 -1
  95. package/lib/esm/events/adapters/importers/fit/importer.fit.mtb.spec.d.ts +1 -0
  96. package/lib/esm/events/adapters/importers/fit/importer.fit.road.spec.d.ts +1 -0
  97. package/lib/esm/index.d.ts +4 -0
  98. package/lib/esm/index.js +514 -3
  99. package/package.json +2 -2
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ /* eslint-disable @typescript-eslint/no-var-requires */
46
+ const fs = __importStar(require("fs"));
47
+ const path = __importStar(require("path"));
48
+ const importer_fit_1 = require("./importer.fit");
49
+ const data_left_torque_effectiveness_1 = require("../../../../data/data.left-torque-effectiveness");
50
+ const data_right_torque_effectiveness_1 = require("../../../../data/data.right-torque-effectiveness");
51
+ const data_left_pedal_smoothness_1 = require("../../../../data/data.left-pedal-smoothness");
52
+ const data_right_pedal_smoothness_1 = require("../../../../data/data.right-pedal-smoothness");
53
+ const activity_parsing_options_1 = require("../../../../activities/activity-parsing-options");
54
+ describe('EventImporterFIT Road with Power', () => {
55
+ const fitFilePath = path.join(__dirname, '../../../../../samples/fit/road-with-power.fit');
56
+ it('should parse road-with-power.fit and extract torque effectiveness and pedal smoothness', () => __awaiter(void 0, void 0, void 0, function* () {
57
+ const fileContent = fs.readFileSync(fitFilePath);
58
+ const arrayBuffer = fileContent.buffer.slice(fileContent.byteOffset, fileContent.byteOffset + fileContent.byteLength);
59
+ const options = new activity_parsing_options_1.ActivityParsingOptions({ generateUnitStreams: false });
60
+ const event = yield importer_fit_1.EventImporterFIT.getFromArrayBuffer(arrayBuffer, options, 'Test Road Activity');
61
+ const activity = event.getFirstActivity();
62
+ // Check for Left Torque Effectiveness
63
+ const leftTEStream = activity.getStreamData(data_left_torque_effectiveness_1.DataLeftTorqueEffectiveness.type);
64
+ expect(leftTEStream).toBeDefined();
65
+ expect(leftTEStream.some((val) => val !== null && val > 0)).toBe(true);
66
+ // data contains 82
67
+ expect(leftTEStream.find((val) => val === 82)).toBe(82);
68
+ // Check for Right Torque Effectiveness
69
+ const rightTEStream = activity.getStreamData(data_right_torque_effectiveness_1.DataRightTorqueEffectiveness.type);
70
+ expect(rightTEStream).toBeDefined();
71
+ // Right side having data (can be 0)
72
+ expect(rightTEStream.length).toBeGreaterThan(0);
73
+ // Check for Left Pedal Smoothness
74
+ const leftPSStream = activity.getStreamData(data_left_pedal_smoothness_1.DataLeftPedalSmoothness.type);
75
+ expect(leftPSStream).toBeDefined();
76
+ expect(leftPSStream.some((val) => val !== null && val > 0)).toBe(true);
77
+ // data contains 24.5
78
+ expect(leftPSStream.find((val) => val === 24.5)).toBe(24.5);
79
+ // Check for Right Pedal Smoothness
80
+ const rightPSStream = activity.getStreamData(data_right_pedal_smoothness_1.DataRightPedalSmoothness.type);
81
+ expect(rightPSStream).toBeDefined();
82
+ // Just check we have data points
83
+ expect(rightPSStream.length).toBeGreaterThan(0);
84
+ // Check for Device Infos
85
+ const devices = activity.creator.devices;
86
+ expect(devices).toBeDefined();
87
+ expect(devices.length).toBeGreaterThan(0);
88
+ // Find Stages Cycling (Index 4)
89
+ const stages = devices.find(d => d.index === 4);
90
+ expect(stages).toBeDefined();
91
+ expect(stages === null || stages === void 0 ? void 0 : stages.manufacturer).toBe('stages_cycling');
92
+ expect(stages === null || stages === void 0 ? void 0 : stages.antId).toBe('0-5-0B-31CD');
93
+ // Find Lezyne Bike Light (Index 5)
94
+ const lezyneLight = devices.find(d => d.index === 5);
95
+ expect(lezyneLight).toBeDefined();
96
+ expect(lezyneLight === null || lezyneLight === void 0 ? void 0 : lezyneLight.manufacturer).toBe('lezyne');
97
+ expect(lezyneLight === null || lezyneLight === void 0 ? void 0 : lezyneLight.antId).toBe('E-1-23-B088');
98
+ // Find Lezyne Bike Radar (Index 6)
99
+ const lezyneRadar = devices.find(d => d.index === 6);
100
+ expect(lezyneRadar).toBeDefined();
101
+ expect(lezyneRadar === null || lezyneRadar === void 0 ? void 0 : lezyneRadar.antId).toBe('E-1-28-B088');
102
+ }));
103
+ });
@@ -74,6 +74,8 @@ export * from './data/data.ibi';
74
74
  export * from './data/data.interface';
75
75
  export * from './data/data.latitude-degrees';
76
76
  export * from './data/data.left-balance';
77
+ export * from './data/data.left-pedal-smoothness';
78
+ export * from './data/data.left-torque-effectiveness';
77
79
  export * from './data/data.longitude-degrees';
78
80
  export * from './data/data.moving-time';
79
81
  export * from './data/data.pace';
@@ -89,6 +91,8 @@ export * from './data/data.power-min';
89
91
  export * from './data/data.power-right';
90
92
  export * from './data/data.recovery-time';
91
93
  export * from './data/data.right-balance';
94
+ export * from './data/data.right-pedal-smoothness';
95
+ export * from './data/data.right-torque-effectiveness';
92
96
  export * from './data/data.rpe';
93
97
  export * from './data/data.sea-level-pressure';
94
98
  export * from './data/data.speed';
package/lib/cjs/index.js CHANGED
@@ -104,6 +104,8 @@ __exportStar(require("./data/data.ibi"), exports);
104
104
  __exportStar(require("./data/data.interface"), exports);
105
105
  __exportStar(require("./data/data.latitude-degrees"), exports);
106
106
  __exportStar(require("./data/data.left-balance"), exports);
107
+ __exportStar(require("./data/data.left-pedal-smoothness"), exports);
108
+ __exportStar(require("./data/data.left-torque-effectiveness"), exports);
107
109
  __exportStar(require("./data/data.longitude-degrees"), exports);
108
110
  __exportStar(require("./data/data.moving-time"), exports);
109
111
  __exportStar(require("./data/data.pace"), exports);
@@ -119,6 +121,8 @@ __exportStar(require("./data/data.power-min"), exports);
119
121
  __exportStar(require("./data/data.power-right"), exports);
120
122
  __exportStar(require("./data/data.recovery-time"), exports);
121
123
  __exportStar(require("./data/data.right-balance"), exports);
124
+ __exportStar(require("./data/data.right-pedal-smoothness"), exports);
125
+ __exportStar(require("./data/data.right-torque-effectiveness"), exports);
122
126
  __exportStar(require("./data/data.rpe"), exports);
123
127
  __exportStar(require("./data/data.sea-level-pressure"), exports);
124
128
  __exportStar(require("./data/data.speed"), exports);
@@ -16,6 +16,7 @@ export declare class Device implements DeviceInterface {
16
16
  antTransmissionType?: number;
17
17
  antNetwork?: string;
18
18
  sourceType?: string;
19
+ antId?: string;
19
20
  cumOperatingTime?: number;
20
21
  constructor(type: string);
21
22
  toJSON(): DeviceJsonInterface;
@@ -15,5 +15,6 @@ export interface DeviceInterface extends SerializableClassInterface {
15
15
  antTransmissionType?: number;
16
16
  antNetwork?: string;
17
17
  sourceType?: string;
18
+ antId?: string;
18
19
  cumOperatingTime?: number;
19
20
  }
@@ -14,5 +14,6 @@ export interface DeviceJsonInterface {
14
14
  antTransmissionType: number | null;
15
15
  antNetwork: string | null;
16
16
  sourceType: string | null;
17
+ antId: string | null;
17
18
  cumOperatingTime: number | null;
18
19
  }
@@ -0,0 +1,6 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataAge extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ getDisplayValue(): string;
6
+ }
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataAvgFlow extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataAvgGrit extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataAvgRespirationRate extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataAvgVAM extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,6 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataEstSweatLoss extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ constructor(value: number);
6
+ }
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataFlow extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,4 @@
1
+ import { DataString } from './data.string';
2
+ export declare class DataGender extends DataString {
3
+ static type: string;
4
+ }
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataGrit extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,6 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataHeight extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ getDisplayValue(): string;
6
+ }
@@ -0,0 +1,6 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataJumpCount extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ constructor(jumpCount: number);
6
+ }
@@ -0,0 +1,12 @@
1
+ import { DataEvent } from './data.event';
2
+ export interface JumpEventInterface {
3
+ distance: number;
4
+ height: number;
5
+ score: number;
6
+ }
7
+ export declare class DataJumpEvent extends DataEvent {
8
+ jumpData: JumpEventInterface;
9
+ static type: string;
10
+ constructor(timestamp: number, jumpData: JumpEventInterface);
11
+ toJSON(): any;
12
+ }
@@ -0,0 +1,6 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataLeftPedalSmoothness extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ getDisplayValue(): number;
6
+ }
@@ -0,0 +1,6 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataLeftTorqueEffectiveness extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ getDisplayValue(): number;
6
+ }
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataMaxRespirationRate extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataMinRespirationRate extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,6 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataPrimaryBenefit extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ constructor(value: number);
6
+ }
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataRestingCalories extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,6 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataRightPedalSmoothness extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ getDisplayValue(): number;
6
+ }
@@ -0,0 +1,6 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataRightTorqueEffectiveness extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ getDisplayValue(): number;
6
+ }
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataTotalFlow extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataTotalGrit extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,5 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataTrainingLoadPeak extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ }
@@ -0,0 +1,6 @@
1
+ import { DataNumber } from './data.number';
2
+ export declare class DataWeight extends DataNumber {
3
+ static type: string;
4
+ static unit: string;
5
+ getDisplayValue(): string;
6
+ }
@@ -1,5 +1,7 @@
1
1
  import { EventInterface } from '../../../event.interface';
2
2
  import { CreatorInterface } from '../../../../creators/creator.interface';
3
+ import { ActivityInterface } from '../../../../activities/activity.interface';
4
+ import { DataInterface } from '../../../../data/data.interface';
3
5
  import { ActivityParsingOptions } from '../../../../activities/activity-parsing-options';
4
6
  import { Buffer } from 'buffer';
5
7
  export declare class EventImporterFIT {
@@ -27,7 +29,7 @@ export declare class EventImporterFIT {
27
29
  */
28
30
  private static swapTimesIfRequired;
29
31
  private static getActivityTypeFromSessionObject;
30
- private static getStatsFromObject;
32
+ static getStatsFromObject(object: any, activity: ActivityInterface, isLap: boolean): DataInterface[];
31
33
  static getCreatorFromFitDataObject(fitDataObject: any): CreatorInterface;
32
34
  }
33
35
  export interface FITFileActivityEvent {
@@ -74,6 +74,8 @@ export * from './data/data.ibi';
74
74
  export * from './data/data.interface';
75
75
  export * from './data/data.latitude-degrees';
76
76
  export * from './data/data.left-balance';
77
+ export * from './data/data.left-pedal-smoothness';
78
+ export * from './data/data.left-torque-effectiveness';
77
79
  export * from './data/data.longitude-degrees';
78
80
  export * from './data/data.moving-time';
79
81
  export * from './data/data.pace';
@@ -89,6 +91,8 @@ export * from './data/data.power-min';
89
91
  export * from './data/data.power-right';
90
92
  export * from './data/data.recovery-time';
91
93
  export * from './data/data.right-balance';
94
+ export * from './data/data.right-pedal-smoothness';
95
+ export * from './data/data.right-torque-effectiveness';
92
96
  export * from './data/data.rpe';
93
97
  export * from './data/data.sea-level-pressure';
94
98
  export * from './data/data.speed';