@runnerpro/backend 1.21.1 → 1.21.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.
- package/lib/cjs/types/workout/estructuraWorkout.d.ts.map +1 -1
- package/lib/cjs/types/workout/saveWorkoutAplication.d.ts.map +1 -1
- package/lib/cjs/types/workout/saveWorkoutLaps.d.ts.map +1 -1
- package/lib/cjs/workout/estructuraWorkout.js +19 -9
- package/lib/cjs/workout/saveWorkoutAplication.js +1 -0
- package/lib/cjs/workout/saveWorkoutLaps.js +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estructuraWorkout.d.ts","sourceRoot":"","sources":["../../../../src/workout/estructuraWorkout.ts"],"names":[],"mappings":"AAuCA,QAAA,MAAM,mBAAmB,YAAa,GAAG,cAAc,GAAG,QAiCzD,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,QAAA,MAAM,wBAAwB,cAAqB,GAAG,kBAkBrD,CAAC;
|
|
1
|
+
{"version":3,"file":"estructuraWorkout.d.ts","sourceRoot":"","sources":["../../../../src/workout/estructuraWorkout.ts"],"names":[],"mappings":"AAuCA,QAAA,MAAM,mBAAmB,YAAa,GAAG,cAAc,GAAG,QAiCzD,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,QAAA,MAAM,wBAAwB,cAAqB,GAAG,kBAkBrD,CAAC;AAkPF,OAAO,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saveWorkoutAplication.d.ts","sourceRoot":"","sources":["../../../../src/workout/saveWorkoutAplication.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"saveWorkoutAplication.d.ts","sourceRoot":"","sources":["../../../../src/workout/saveWorkoutAplication.ts"],"names":[],"mappings":"AAwPA;;;;;;;;;GASG;AACH,QAAA,MAAM,qBAAqB,SACnB,GAAG,UAED,GAAG,KACV,QAAQ,MAAM,GAAG,IAAI,CA0DvB,CAAC;AA+DF,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"saveWorkoutLaps.d.ts","sourceRoot":"","sources":["../../../../src/workout/saveWorkoutLaps.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;
|
|
1
|
+
{"version":3,"file":"saveWorkoutLaps.d.ts","sourceRoot":"","sources":["../../../../src/workout/saveWorkoutLaps.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,QAAA,MAAM,eAAe,cAAqB,GAAG,QAAQ,GAAG,EAAE,mBAAmB,GAAG,KAAG,QAAQ,IAAI,CAuB9F,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -11,7 +11,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.saveDoneStructuraWorkout = exports.getStructuraWorkout = void 0;
|
|
13
13
|
const db_1 = require("../db");
|
|
14
|
-
const sendMail_1 = require("../sendMail");
|
|
15
14
|
const common_1 = require("@runnerpro/common");
|
|
16
15
|
const calculateZone = (values) => {
|
|
17
16
|
const percentage = Number(values.pacePercentage);
|
|
@@ -116,13 +115,18 @@ const saveDoneStructuraWorkoutWatch = (idWorkout, streamData, laps, workout, est
|
|
|
116
115
|
});
|
|
117
116
|
const numPasos = estructura.length;
|
|
118
117
|
const numLaps = laps.length;
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
118
|
+
// Casos aceptados:
|
|
119
|
+
// - numLaps === numPasos: cada paso tiene su lap (1:1).
|
|
120
|
+
// - numLaps === numPasos - 1: el cooldown no se marcó como lap aparte
|
|
121
|
+
// (típico cuando el plan acaba en el último intervalo de trabajo y el
|
|
122
|
+
// runner enfría sin pulsar lap).
|
|
123
|
+
// - numLaps === numPasos + 1: el runner siguió moviéndose tras la vuelta
|
|
124
|
+
// a la calma planeada antes de parar el reloj → el lap "extra" final
|
|
125
|
+
// se absorbe en el último paso del plan (ver bucle abajo).
|
|
126
|
+
// Cualquier otra desviación es anómala (faltan laps en medio, doble extra,
|
|
127
|
+
// etc.) y se reporta para auditoría manual.
|
|
128
|
+
if (numPasos !== numLaps && numPasos !== numLaps + 1 && numLaps !== numPasos + 1) {
|
|
129
|
+
return;
|
|
126
130
|
}
|
|
127
131
|
for (let i = 0; i < estructura.length; i++) {
|
|
128
132
|
const row = estructura[i];
|
|
@@ -155,7 +159,13 @@ const saveDoneStructuraWorkoutWatch = (idWorkout, streamData, laps, workout, est
|
|
|
155
159
|
}
|
|
156
160
|
if (lapIndex !== null && lapIndex >= 0 && lapIndex < laps.length) {
|
|
157
161
|
const currentLap = laps[lapIndex];
|
|
158
|
-
|
|
162
|
+
// Si hay un lap más que pasos y estamos en el último paso (cooldown),
|
|
163
|
+
// absorbemos el lap extra (post-cooldown): ignoramos laps[lapIndex+1]
|
|
164
|
+
// como límite y consideramos toda la actividad hasta workout.duration
|
|
165
|
+
// como parte de este paso. La duración resultante = cooldown planeado
|
|
166
|
+
// + lo que el runner siguió moviéndose después.
|
|
167
|
+
const isLastStepAbsorbingExtraLap = numLaps === numPasos + 1 && i === numPasos - 1;
|
|
168
|
+
const nextLap = isLastStepAbsorbingExtraLap ? null : laps[lapIndex + 1];
|
|
159
169
|
if (nextLap) {
|
|
160
170
|
duration = nextLap.durationStartLap - currentLap.durationStartLap;
|
|
161
171
|
}
|
|
@@ -95,6 +95,7 @@ function camelizeRow(row) {
|
|
|
95
95
|
});
|
|
96
96
|
return aux;
|
|
97
97
|
}
|
|
98
|
+
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
|
|
98
99
|
const withTx = (fn) => __awaiter(void 0, void 0, void 0, function* () {
|
|
99
100
|
const client = yield db_1.pool.connect();
|
|
100
101
|
try {
|
|
@@ -37,6 +37,7 @@ const estructuraWorkout_1 = require("./estructuraWorkout");
|
|
|
37
37
|
* @param {{index:number,durationStartLap:number}[]} laps
|
|
38
38
|
* @param {number} aplicationType TIPO_APLICACION.* (reservado para trazabilidad)
|
|
39
39
|
*/
|
|
40
|
+
// eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars
|
|
40
41
|
const saveWorkoutLaps = (idWorkout, laps, aplicationType) => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
42
|
if (!idWorkout)
|
|
42
43
|
return;
|