@runnerpro/backend 1.19.9 → 1.19.11

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.
@@ -1 +1 @@
1
- {"version":3,"file":"garmin.d.ts","sourceRoot":"","sources":["../../../../src/workout/garmin.ts"],"names":[],"mappings":"AAkOA,QAAA,MAAM,mBAAmB;;;EAWxB,CAAC;AAEF,QAAA,MAAM,mBAAmB,6CASxB,CAAC;AAEF,QAAA,MAAM,mBAAmB,6CAMxB,CAAC;AAEF,QAAA,MAAM,qBAAqB,6CAU1B,CAAC;AAEF,QAAA,MAAM,2BAA2B,4DAWhC,CAAC;AAIF,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,CAAC"}
1
+ {"version":3,"file":"garmin.d.ts","sourceRoot":"","sources":["../../../../src/workout/garmin.ts"],"names":[],"mappings":"AAgRA,QAAA,MAAM,mBAAmB;;;EAWxB,CAAC;AAEF,QAAA,MAAM,mBAAmB,6CASxB,CAAC;AAEF,QAAA,MAAM,mBAAmB,6CAMxB,CAAC;AAEF,QAAA,MAAM,qBAAqB,6CAU1B,CAAC;AAEF,QAAA,MAAM,2BAA2B,4DAWhC,CAAC;AAIF,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,2BAA2B,EAAE,CAAC"}
@@ -65,6 +65,26 @@ const garminOauthActivity = ({ url, httpMethod, userid, params = {} }) => __awai
65
65
  const secondsPerKmToMetersPerSecond = (secondsPerKm) => {
66
66
  return Math.round((1000 / secondsPerKm) * 100) / 100;
67
67
  };
68
+ const getWorkoutGarminDuration = (workout) => {
69
+ const rangePlanning = (0, common_1.getWorkoutRangePlanning)({
70
+ workoutType: workout.type,
71
+ distancePlanned: workout.distancePlanned,
72
+ durationPlanned: workout.durationPlanned,
73
+ zonePlanned: workout.zonePlanned,
74
+ });
75
+ if (rangePlanning.fixedMetric === common_1.WORKOUT_FIXED_METRIC.TIME) {
76
+ return {
77
+ type: 'TIME',
78
+ value: Number(workout.durationPlanned),
79
+ valueType: 'SECOND',
80
+ };
81
+ }
82
+ return {
83
+ type: 'DISTANCE',
84
+ value: Number(workout.distancePlanned),
85
+ valueType: 'METER',
86
+ };
87
+ };
68
88
  const typeTranslateWorkoutGarmin = (type) => {
69
89
  if (type === common_1.WORKOUT_TYPE.FUERZA)
70
90
  return 'STRENGTH_TRAINING';
@@ -111,13 +131,14 @@ const translateWorkoutGarmin = (workout) => {
111
131
  return null;
112
132
  const targetType = getWorkoutGarminTargetType(workout, null);
113
133
  const targetValue = getWorkoutGarminTargetValue(workout, null);
134
+ const duration = getWorkoutGarminDuration(workout);
114
135
  workoutGarmin.steps.push({
115
136
  type: 'WorkoutStep',
116
137
  stepOrder: 1,
117
138
  intensity: 'ACTIVE',
118
- durationType: 'DISTANCE',
119
- durationValue: workout.distancePlanned,
120
- durationValueType: 'METER',
139
+ durationType: duration.type,
140
+ durationValue: duration.value,
141
+ durationValueType: duration.valueType,
121
142
  targetType,
122
143
  targetValue: targetValue.value,
123
144
  targetValueLow: targetValue.low,
@@ -174,6 +195,7 @@ const getWorkoutGarminTargetType = (workout, row) => {
174
195
  };
175
196
  const getWorkoutGarminTargetValue = (workout, row) => {
176
197
  let value;
198
+ let paceRange = null;
177
199
  if (!row) {
178
200
  // Si es entrenamiento de bicicleta y tiene potencia -> value = potencia
179
201
  // if (workout.type === WORKOUT_TYPE.BIKE && workout.powerPlanned) {
@@ -182,6 +204,12 @@ const getWorkoutGarminTargetValue = (workout, row) => {
182
204
  // El resto calcular el ritmo
183
205
  // No se puede añadir potencia ya que el valor que hay que dar es una zona, no absoluto
184
206
  value = Number(workout.distancePlanned) / Number(workout.durationPlanned);
207
+ paceRange = (0, common_1.getWorkoutRangePlanning)({
208
+ workoutType: workout.type,
209
+ distancePlanned: workout.distancePlanned,
210
+ durationPlanned: workout.durationPlanned,
211
+ zonePlanned: workout.zonePlanned,
212
+ }).paceRange;
185
213
  // }
186
214
  }
187
215
  else {
@@ -192,8 +220,15 @@ const getWorkoutGarminTargetValue = (workout, row) => {
192
220
  else if (Number(row.typeMetric2) === 3)
193
221
  value = Number(row.valueMetric2);
194
222
  // El resto de casos se calcula el ritmo
195
- else
223
+ else {
196
224
  value = secondsPerKmToMetersPerSecond(row.valueMetric2);
225
+ if ([common_1.WORKOUT_TYPE.CORRER, common_1.WORKOUT_TYPE.COMPETICION].includes(workout.type)) {
226
+ paceRange = (0, common_1.getWorkoutPaceRangeByZone)({
227
+ pace: Number(row.valueMetric2),
228
+ zonePlanned: row.zoneMetric2,
229
+ });
230
+ }
231
+ }
197
232
  }
198
233
  if (!value) {
199
234
  return {
@@ -205,8 +240,8 @@ const getWorkoutGarminTargetValue = (workout, row) => {
205
240
  else {
206
241
  return {
207
242
  value,
208
- low: value - value * 0.02,
209
- high: value + value * 0.02,
243
+ low: paceRange ? secondsPerKmToMetersPerSecond(paceRange.max) : value - value * 0.02,
244
+ high: paceRange ? secondsPerKmToMetersPerSecond(paceRange.min) : value + value * 0.02,
210
245
  };
211
246
  }
212
247
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@runnerpro/backend",
3
- "version": "1.19.9",
3
+ "version": "1.19.11",
4
4
  "description": "A collection of common backend functions",
5
5
  "exports": {
6
6
  ".": "./lib/cjs/index.js"
@@ -52,7 +52,7 @@
52
52
  },
53
53
  "peerDependencies": {
54
54
  "@napi-rs/canvas": "^0.1.53",
55
- "@runnerpro/common": "^1.5.10",
55
+ "@runnerpro/common": "^1.7.0",
56
56
  "axios": "^1.6.7",
57
57
  "image-size": "^1.0.2",
58
58
  "jimp": "^0.22.10",