@aneuhold/core-ts-db-lib 5.0.8 → 5.0.10
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/CHANGELOG.md +19 -0
- package/lib/browser.d.ts +14 -14
- package/lib/browser.d.ts.map +1 -1
- package/lib/browser.js +12 -12
- package/lib/browser.js.map +1 -1
- package/lib/browser.ts +14 -14
- package/lib/documents/BaseDocument.js +1 -1
- package/lib/documents/BaseDocument.js.map +1 -1
- package/lib/documents/BaseDocument.ts +1 -1
- package/lib/documents/dashboard/Task.d.ts +1 -1
- package/lib/documents/dashboard/Task.d.ts.map +1 -1
- package/lib/documents/dashboard/Task.ts +1 -1
- package/lib/documents/dashboard/UserConfig.d.ts +1 -0
- package/lib/documents/dashboard/UserConfig.d.ts.map +1 -1
- package/lib/documents/dashboard/UserConfig.js +2 -0
- package/lib/documents/dashboard/UserConfig.js.map +1 -1
- package/lib/documents/dashboard/UserConfig.ts +2 -0
- package/lib/schemas/UUIDSchema.js +1 -1
- package/lib/schemas/UUIDSchema.js.map +1 -1
- package/lib/schemas/UUIDSchema.ts +1 -1
- package/lib/services/{DocumentService.d.ts → Document.service.d.ts} +1 -1
- package/lib/services/Document.service.d.ts.map +1 -0
- package/lib/services/{DocumentService.js → Document.service.js} +1 -1
- package/lib/services/Document.service.js.map +1 -0
- package/lib/services/dashboard/Task/{TaskService.d.ts → Task.service.d.ts} +2 -10
- package/lib/services/dashboard/Task/Task.service.d.ts.map +1 -0
- package/lib/services/dashboard/Task/{TaskService.js → Task.service.js} +8 -8
- package/lib/services/dashboard/Task/Task.service.js.map +1 -0
- package/lib/services/dashboard/Task/{TaskService.ts → Task.service.ts} +8 -8
- package/lib/services/dashboard/Task/{TaskFilterService.d.ts → TaskFilter.service.d.ts} +1 -1
- package/lib/services/dashboard/Task/TaskFilter.service.d.ts.map +1 -0
- package/lib/services/dashboard/Task/{TaskFilterService.js → TaskFilter.service.js} +1 -1
- package/lib/services/dashboard/Task/TaskFilter.service.js.map +1 -0
- package/lib/services/dashboard/Task/{TaskRecurrenceService.d.ts → TaskRecurrence.service.d.ts} +2 -9
- package/lib/services/dashboard/Task/TaskRecurrence.service.d.ts.map +1 -0
- package/lib/services/dashboard/Task/{TaskRecurrenceService.js → TaskRecurrence.service.js} +6 -6
- package/lib/services/dashboard/Task/TaskRecurrence.service.js.map +1 -0
- package/lib/services/dashboard/Task/{TaskRecurrenceService.ts → TaskRecurrence.service.ts} +5 -8
- package/lib/services/dashboard/Task/{TaskSortService.d.ts → TaskSort.service.d.ts} +2 -42
- package/lib/services/dashboard/Task/TaskSort.service.d.ts.map +1 -0
- package/lib/services/dashboard/Task/{TaskSortService.js → TaskSort.service.js} +12 -12
- package/lib/services/dashboard/Task/TaskSort.service.js.map +1 -0
- package/lib/services/dashboard/Task/{TaskSortService.ts → TaskSort.service.ts} +11 -11
- package/lib/services/workout/EquipmentType/{WorkoutEquipmentTypeService.d.ts → WorkoutEquipmentType.service.d.ts} +1 -1
- package/lib/services/workout/EquipmentType/WorkoutEquipmentType.service.d.ts.map +1 -0
- package/lib/services/workout/EquipmentType/{WorkoutEquipmentTypeService.js → WorkoutEquipmentType.service.js} +1 -1
- package/lib/services/workout/EquipmentType/WorkoutEquipmentType.service.js.map +1 -0
- package/lib/services/workout/Exercise/WorkoutExercise.service.d.ts +52 -0
- package/lib/services/workout/Exercise/WorkoutExercise.service.d.ts.map +1 -0
- package/lib/services/workout/Exercise/{WorkoutExerciseService.js → WorkoutExercise.service.js} +18 -18
- package/lib/services/workout/Exercise/WorkoutExercise.service.js.map +1 -0
- package/lib/services/workout/Exercise/{WorkoutExerciseService.ts → WorkoutExercise.service.ts} +17 -17
- package/lib/services/workout/ExerciseCalibration/{WorkoutExerciseCalibrationService.d.ts → WorkoutExerciseCalibration.service.d.ts} +2 -12
- package/lib/services/workout/ExerciseCalibration/WorkoutExerciseCalibration.service.d.ts.map +1 -0
- package/lib/services/workout/ExerciseCalibration/{WorkoutExerciseCalibrationService.js → WorkoutExerciseCalibration.service.js} +10 -7
- package/lib/services/workout/ExerciseCalibration/WorkoutExerciseCalibration.service.js.map +1 -0
- package/lib/services/workout/ExerciseCalibration/{WorkoutExerciseCalibrationService.ts → WorkoutExerciseCalibration.service.ts} +10 -7
- package/lib/services/workout/Mesocycle/{WorkoutMesocycleService.d.ts → WorkoutMesocycle.service.d.ts} +3 -41
- package/lib/services/workout/Mesocycle/WorkoutMesocycle.service.d.ts.map +1 -0
- package/lib/services/workout/Mesocycle/{WorkoutMesocycleService.js → WorkoutMesocycle.service.js} +21 -21
- package/lib/services/workout/Mesocycle/WorkoutMesocycle.service.js.map +1 -0
- package/lib/services/workout/Mesocycle/{WorkoutMesocycleService.ts → WorkoutMesocycle.service.ts} +21 -21
- package/lib/services/workout/Mesocycle/WorkoutMesocyclePlanContext.d.ts +1 -10
- package/lib/services/workout/Mesocycle/WorkoutMesocyclePlanContext.d.ts.map +1 -1
- package/lib/services/workout/Mesocycle/WorkoutMesocyclePlanContext.js +3 -3
- package/lib/services/workout/Mesocycle/WorkoutMesocyclePlanContext.js.map +1 -1
- package/lib/services/workout/Mesocycle/WorkoutMesocyclePlanContext.ts +3 -3
- package/lib/services/workout/Microcycle/{WorkoutMicrocycleService.d.ts → WorkoutMicrocycle.service.d.ts} +1 -1
- package/lib/services/workout/Microcycle/WorkoutMicrocycle.service.d.ts.map +1 -0
- package/lib/services/workout/Microcycle/{WorkoutMicrocycleService.js → WorkoutMicrocycle.service.js} +4 -4
- package/lib/services/workout/Microcycle/WorkoutMicrocycle.service.js.map +1 -0
- package/lib/services/workout/Microcycle/{WorkoutMicrocycleService.ts → WorkoutMicrocycle.service.ts} +3 -3
- package/lib/services/workout/Session/{WorkoutSessionService.d.ts → WorkoutSession.service.d.ts} +2 -6
- package/lib/services/workout/Session/WorkoutSession.service.d.ts.map +1 -0
- package/lib/services/workout/Session/{WorkoutSessionService.js → WorkoutSession.service.js} +5 -5
- package/lib/services/workout/Session/WorkoutSession.service.js.map +1 -0
- package/lib/services/workout/Session/{WorkoutSessionService.ts → WorkoutSession.service.ts} +4 -4
- package/lib/services/workout/SessionExercise/{WorkoutSessionExerciseService.d.ts → WorkoutSessionExercise.service.d.ts} +2 -8
- package/lib/services/workout/SessionExercise/WorkoutSessionExercise.service.d.ts.map +1 -0
- package/lib/services/workout/SessionExercise/{WorkoutSessionExerciseService.js → WorkoutSessionExercise.service.js} +5 -5
- package/lib/services/workout/SessionExercise/WorkoutSessionExercise.service.js.map +1 -0
- package/lib/services/workout/SessionExercise/{WorkoutSessionExerciseService.ts → WorkoutSessionExercise.service.ts} +4 -4
- package/lib/services/workout/Set/{WorkoutSetService.d.ts → WorkoutSet.service.d.ts} +2 -23
- package/lib/services/workout/Set/WorkoutSet.service.d.ts.map +1 -0
- package/lib/services/workout/Set/{WorkoutSetService.js → WorkoutSet.service.js} +7 -7
- package/lib/services/workout/Set/WorkoutSet.service.js.map +1 -0
- package/lib/services/workout/Set/{WorkoutSetService.ts → WorkoutSet.service.ts} +6 -6
- package/lib/services/workout/util/SFR/{WorkoutSFRService.d.ts → WorkoutSFR.service.d.ts} +1 -1
- package/lib/services/workout/util/SFR/WorkoutSFR.service.d.ts.map +1 -0
- package/lib/services/workout/util/SFR/{WorkoutSFRService.js → WorkoutSFR.service.js} +1 -1
- package/lib/services/workout/util/SFR/WorkoutSFR.service.js.map +1 -0
- package/lib/services/workout/util/VolumePlanning/WorkoutVolumePlanning.service.d.ts +53 -0
- package/lib/services/workout/util/VolumePlanning/WorkoutVolumePlanning.service.d.ts.map +1 -0
- package/lib/services/workout/util/VolumePlanning/{WorkoutVolumePlanningService.js → WorkoutVolumePlanning.service.js} +53 -53
- package/lib/services/workout/util/VolumePlanning/WorkoutVolumePlanning.service.js.map +1 -0
- package/lib/services/workout/util/VolumePlanning/{WorkoutVolumePlanningService.ts → WorkoutVolumePlanning.service.ts} +52 -52
- package/package.json +4 -4
- package/lib/services/DocumentService.d.ts.map +0 -1
- package/lib/services/DocumentService.js.map +0 -1
- package/lib/services/dashboard/Task/TaskFilterService.d.ts.map +0 -1
- package/lib/services/dashboard/Task/TaskFilterService.js.map +0 -1
- package/lib/services/dashboard/Task/TaskRecurrenceService.d.ts.map +0 -1
- package/lib/services/dashboard/Task/TaskRecurrenceService.js.map +0 -1
- package/lib/services/dashboard/Task/TaskService.d.ts.map +0 -1
- package/lib/services/dashboard/Task/TaskService.js.map +0 -1
- package/lib/services/dashboard/Task/TaskSortService.d.ts.map +0 -1
- package/lib/services/dashboard/Task/TaskSortService.js.map +0 -1
- package/lib/services/workout/EquipmentType/WorkoutEquipmentTypeService.d.ts.map +0 -1
- package/lib/services/workout/EquipmentType/WorkoutEquipmentTypeService.js.map +0 -1
- package/lib/services/workout/Exercise/WorkoutExerciseService.d.ts +0 -99
- package/lib/services/workout/Exercise/WorkoutExerciseService.d.ts.map +0 -1
- package/lib/services/workout/Exercise/WorkoutExerciseService.js.map +0 -1
- package/lib/services/workout/ExerciseCalibration/WorkoutExerciseCalibrationService.d.ts.map +0 -1
- package/lib/services/workout/ExerciseCalibration/WorkoutExerciseCalibrationService.js.map +0 -1
- package/lib/services/workout/Mesocycle/WorkoutMesocycleService.d.ts.map +0 -1
- package/lib/services/workout/Mesocycle/WorkoutMesocycleService.js.map +0 -1
- package/lib/services/workout/Microcycle/WorkoutMicrocycleService.d.ts.map +0 -1
- package/lib/services/workout/Microcycle/WorkoutMicrocycleService.js.map +0 -1
- package/lib/services/workout/Session/WorkoutSessionService.d.ts.map +0 -1
- package/lib/services/workout/Session/WorkoutSessionService.js.map +0 -1
- package/lib/services/workout/SessionExercise/WorkoutSessionExerciseService.d.ts.map +0 -1
- package/lib/services/workout/SessionExercise/WorkoutSessionExerciseService.js.map +0 -1
- package/lib/services/workout/Set/WorkoutSetService.d.ts.map +0 -1
- package/lib/services/workout/Set/WorkoutSetService.js.map +0 -1
- package/lib/services/workout/util/SFR/WorkoutSFRService.d.ts.map +0 -1
- package/lib/services/workout/util/SFR/WorkoutSFRService.js.map +0 -1
- package/lib/services/workout/util/VolumePlanning/WorkoutVolumePlanningService.d.ts +0 -198
- package/lib/services/workout/util/VolumePlanning/WorkoutVolumePlanningService.d.ts.map +0 -1
- package/lib/services/workout/util/VolumePlanning/WorkoutVolumePlanningService.js.map +0 -1
- /package/lib/services/{DocumentService.ts → Document.service.ts} +0 -0
- /package/lib/services/dashboard/Task/{TaskFilterService.ts → TaskFilter.service.ts} +0 -0
- /package/lib/services/workout/EquipmentType/{WorkoutEquipmentTypeService.ts → WorkoutEquipmentType.service.ts} +0 -0
- /package/lib/services/workout/util/SFR/{WorkoutSFRService.ts → WorkoutSFR.service.ts} +0 -0
|
@@ -5,6 +5,7 @@ import type { WorkoutExerciseCalibration } from '../../../documents/workout/Work
|
|
|
5
5
|
* A service for handling operations related to {@link WorkoutExerciseCalibration}s.
|
|
6
6
|
*/
|
|
7
7
|
export default class WorkoutExerciseCalibrationService {
|
|
8
|
+
#private;
|
|
8
9
|
/**
|
|
9
10
|
* Calculates the 1 Rep Max using the NASM formula.
|
|
10
11
|
*
|
|
@@ -73,16 +74,5 @@ export default class WorkoutExerciseCalibrationService {
|
|
|
73
74
|
* @param dateRecorded The date to use as dateRecorded for new calibrations.
|
|
74
75
|
*/
|
|
75
76
|
static generateAutoCalibrations(exerciseCTOs: WorkoutExerciseCTO[], userId: UUID, dateRecorded: Date): WorkoutExerciseCalibration[];
|
|
76
|
-
/**
|
|
77
|
-
* Calculates the target percentage of 1RM for a given target rep count.
|
|
78
|
-
*
|
|
79
|
-
* Uses the formula: targetPercentage = 85 - ((targetReps - 5) * 2.2)
|
|
80
|
-
*
|
|
81
|
-
* This ensures training stays within the 85%-30% 1RM range (5 reps to 30 reps).
|
|
82
|
-
* Higher rep counts produce lower percentages of 1RM.
|
|
83
|
-
*
|
|
84
|
-
* @param targetReps The target number of reps.
|
|
85
|
-
*/
|
|
86
|
-
private static getTargetPercentage;
|
|
87
77
|
}
|
|
88
|
-
//# sourceMappingURL=
|
|
78
|
+
//# sourceMappingURL=WorkoutExerciseCalibration.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkoutExerciseCalibration.service.d.ts","sourceRoot":"","sources":["../../../../src/services/workout/ExerciseCalibration/WorkoutExerciseCalibration.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0DAA0D,CAAC;AAG3G;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,iCAAiC;;IAIpD;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,0BAA0B,GAAG,MAAM;IAI9D;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM;IAItD;;;;;;;OAOG;IACH,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;;;;;;;IAS7D;;;;;;;;OAQG;IACH,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,0BAA0B,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAK3F;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAK/E;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,wBAAwB,CAC7B,YAAY,EAAE,kBAAkB,EAAE,EAClC,MAAM,EAAE,IAAI,EACZ,YAAY,EAAE,IAAI,GACjB,0BAA0B,EAAE;CAyChC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { WorkoutExerciseCalibrationSchema } from '../../../documents/workout/WorkoutExerciseCalibration.js';
|
|
2
|
-
/** Divisor used in the NASM 1RM formula: 1RM = (weight × reps / 30.48) + weight */
|
|
3
|
-
const NASM_1RM_DIVISOR = 30.48;
|
|
4
2
|
/**
|
|
5
3
|
* A service for handling operations related to {@link WorkoutExerciseCalibration}s.
|
|
6
4
|
*/
|
|
7
5
|
export default class WorkoutExerciseCalibrationService {
|
|
6
|
+
/** Divisor used in the NASM 1RM formula: 1RM = (weight × reps / 30.48) + weight */
|
|
7
|
+
static #NASM_1RM_DIVISOR = 30.48;
|
|
8
8
|
/**
|
|
9
9
|
* Calculates the 1 Rep Max using the NASM formula.
|
|
10
10
|
*
|
|
@@ -22,7 +22,7 @@ export default class WorkoutExerciseCalibrationService {
|
|
|
22
22
|
* @param reps The number of reps performed.
|
|
23
23
|
*/
|
|
24
24
|
static get1RMRaw(weight, reps) {
|
|
25
|
-
return (weight * reps) / NASM_1RM_DIVISOR + weight;
|
|
25
|
+
return (weight * reps) / this.#NASM_1RM_DIVISOR + weight;
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
28
|
* Returns the NASM 1RM formula as a MongoDB aggregation expression.
|
|
@@ -34,7 +34,10 @@ export default class WorkoutExerciseCalibrationService {
|
|
|
34
34
|
*/
|
|
35
35
|
static get1RMMongoExpr(weightField, repsField) {
|
|
36
36
|
return {
|
|
37
|
-
$add: [
|
|
37
|
+
$add: [
|
|
38
|
+
{ $divide: [{ $multiply: [weightField, repsField] }, this.#NASM_1RM_DIVISOR] },
|
|
39
|
+
weightField
|
|
40
|
+
]
|
|
38
41
|
};
|
|
39
42
|
}
|
|
40
43
|
/**
|
|
@@ -65,7 +68,7 @@ export default class WorkoutExerciseCalibrationService {
|
|
|
65
68
|
* @param targetReps The target number of reps.
|
|
66
69
|
*/
|
|
67
70
|
static getTargetWeightFrom1RM(effective1RM, targetReps) {
|
|
68
|
-
const targetPercentage = this
|
|
71
|
+
const targetPercentage = this.#getTargetPercentage(targetReps);
|
|
69
72
|
return (targetPercentage / 100) * effective1RM;
|
|
70
73
|
}
|
|
71
74
|
/**
|
|
@@ -112,8 +115,8 @@ export default class WorkoutExerciseCalibrationService {
|
|
|
112
115
|
*
|
|
113
116
|
* @param targetReps The target number of reps.
|
|
114
117
|
*/
|
|
115
|
-
static getTargetPercentage(targetReps) {
|
|
118
|
+
static #getTargetPercentage(targetReps) {
|
|
116
119
|
return 85 - (targetReps - 5) * 2.2;
|
|
117
120
|
}
|
|
118
121
|
}
|
|
119
|
-
//# sourceMappingURL=
|
|
122
|
+
//# sourceMappingURL=WorkoutExerciseCalibration.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkoutExerciseCalibration.service.js","sourceRoot":"","sources":["../../../../src/services/workout/ExerciseCalibration/WorkoutExerciseCalibration.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gCAAgC,EAAE,MAAM,0DAA0D,CAAC;AAE5G;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,iCAAiC;IACpD,mFAAmF;IACnF,MAAM,CAAU,iBAAiB,GAAG,KAAK,CAAC;IAE1C;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,CAAC,WAAuC;QACnD,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CAAC,MAAc,EAAE,IAAY;QAC3C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC;IAC3D,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,eAAe,CAAC,WAAmB,EAAE,SAAiB;QAC3D,OAAO;YACL,IAAI,EAAE;gBACJ,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,iBAAiB,CAAC,EAAE;gBAC9E,WAAW;aACZ;SACF,CAAC;IACJ,CAAC;IAED;;;;;;;;OAQG;IACH,MAAM,CAAC,eAAe,CAAC,WAAuC,EAAE,UAAkB;QAChF,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,sBAAsB,CAAC,YAAoB,EAAE,UAAkB;QACpE,MAAM,gBAAgB,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;QAC/D,OAAO,CAAC,gBAAgB,GAAG,GAAG,CAAC,GAAG,YAAY,CAAC;IACjD,CAAC;IAED;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,wBAAwB,CAC7B,YAAkC,EAClC,MAAY,EACZ,YAAkB;QAElB,MAAM,eAAe,GAAiC,EAAE,CAAC;QAEzD,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;YAC/B,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,GAAG,CAAC;YACzC,IAAI,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,IAAI,CAAC;gBAAE,SAAS;YAEvF,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YACxE,MAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAElE,IAAI,MAAM,GAAG,MAAM,EAAE,CAAC;gBACpB,eAAe,CAAC,IAAI,CAClB,gCAAgC,CAAC,KAAK,CAAC;oBACrC,MAAM;oBACN,iBAAiB,EAAE,GAAG,CAAC,GAAG;oBAC1B,MAAM,EAAE,OAAO,CAAC,YAAY;oBAC5B,IAAI,EAAE,OAAO,CAAC,UAAU;oBACxB,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;oBAC9C,YAAY;oBACZ,sBAAsB,EAAE,OAAO,CAAC,GAAG;iBACpC,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO,eAAe,CAAC;IACzB,CAAC;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,oBAAoB,CAAC,UAAkB;QAC5C,OAAO,EAAE,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;IACrC,CAAC"}
|
|
@@ -3,13 +3,13 @@ import type { WorkoutExerciseCTO } from '../../../ctos/workout/WorkoutExerciseCT
|
|
|
3
3
|
import type { WorkoutExerciseCalibration } from '../../../documents/workout/WorkoutExerciseCalibration.js';
|
|
4
4
|
import { WorkoutExerciseCalibrationSchema } from '../../../documents/workout/WorkoutExerciseCalibration.js';
|
|
5
5
|
|
|
6
|
-
/** Divisor used in the NASM 1RM formula: 1RM = (weight × reps / 30.48) + weight */
|
|
7
|
-
const NASM_1RM_DIVISOR = 30.48;
|
|
8
|
-
|
|
9
6
|
/**
|
|
10
7
|
* A service for handling operations related to {@link WorkoutExerciseCalibration}s.
|
|
11
8
|
*/
|
|
12
9
|
export default class WorkoutExerciseCalibrationService {
|
|
10
|
+
/** Divisor used in the NASM 1RM formula: 1RM = (weight × reps / 30.48) + weight */
|
|
11
|
+
static readonly #NASM_1RM_DIVISOR = 30.48;
|
|
12
|
+
|
|
13
13
|
/**
|
|
14
14
|
* Calculates the 1 Rep Max using the NASM formula.
|
|
15
15
|
*
|
|
@@ -28,7 +28,7 @@ export default class WorkoutExerciseCalibrationService {
|
|
|
28
28
|
* @param reps The number of reps performed.
|
|
29
29
|
*/
|
|
30
30
|
static get1RMRaw(weight: number, reps: number): number {
|
|
31
|
-
return (weight * reps) / NASM_1RM_DIVISOR + weight;
|
|
31
|
+
return (weight * reps) / this.#NASM_1RM_DIVISOR + weight;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
/**
|
|
@@ -41,7 +41,10 @@ export default class WorkoutExerciseCalibrationService {
|
|
|
41
41
|
*/
|
|
42
42
|
static get1RMMongoExpr(weightField: string, repsField: string) {
|
|
43
43
|
return {
|
|
44
|
-
$add: [
|
|
44
|
+
$add: [
|
|
45
|
+
{ $divide: [{ $multiply: [weightField, repsField] }, this.#NASM_1RM_DIVISOR] },
|
|
46
|
+
weightField
|
|
47
|
+
]
|
|
45
48
|
};
|
|
46
49
|
}
|
|
47
50
|
|
|
@@ -74,7 +77,7 @@ export default class WorkoutExerciseCalibrationService {
|
|
|
74
77
|
* @param targetReps The target number of reps.
|
|
75
78
|
*/
|
|
76
79
|
static getTargetWeightFrom1RM(effective1RM: number, targetReps: number): number {
|
|
77
|
-
const targetPercentage = this
|
|
80
|
+
const targetPercentage = this.#getTargetPercentage(targetReps);
|
|
78
81
|
return (targetPercentage / 100) * effective1RM;
|
|
79
82
|
}
|
|
80
83
|
|
|
@@ -132,7 +135,7 @@ export default class WorkoutExerciseCalibrationService {
|
|
|
132
135
|
*
|
|
133
136
|
* @param targetReps The target number of reps.
|
|
134
137
|
*/
|
|
135
|
-
|
|
138
|
+
static #getTargetPercentage(targetReps: number): number {
|
|
136
139
|
return 85 - (targetReps - 5) * 2.2;
|
|
137
140
|
}
|
|
138
141
|
}
|
|
@@ -6,24 +6,13 @@ import type { WorkoutMicrocycle } from '../../../documents/workout/WorkoutMicroc
|
|
|
6
6
|
import type { WorkoutSession } from '../../../documents/workout/WorkoutSession.js';
|
|
7
7
|
import type { WorkoutSessionExercise } from '../../../documents/workout/WorkoutSessionExercise.js';
|
|
8
8
|
import type { WorkoutSet } from '../../../documents/workout/WorkoutSet.js';
|
|
9
|
-
import type { DocumentOperations } from '../../
|
|
9
|
+
import type { DocumentOperations } from '../../Document.service.js';
|
|
10
10
|
import type { WorkoutDeloadRecommendation } from './WorkoutMesocycleService.types.js';
|
|
11
11
|
/**
|
|
12
12
|
* A service for handling operations related to {@link WorkoutMesocycle}s.
|
|
13
13
|
*/
|
|
14
14
|
export default class WorkoutMesocycleService {
|
|
15
|
-
|
|
16
|
-
private static readonly MIN_MICROCYCLE_INDEX_FOR_DELOAD;
|
|
17
|
-
/** Recovery ratio above which a deload is Recommended. */
|
|
18
|
-
private static readonly RECOVERY_RATIO_RECOMMENDED;
|
|
19
|
-
/** Recovery ratio at or above which a deload is Suggested. */
|
|
20
|
-
private static readonly RECOVERY_RATIO_SUGGESTED;
|
|
21
|
-
/** Set surplus at or below which a performance drop is counted. */
|
|
22
|
-
private static readonly PERFORMANCE_DROP_SURPLUS_THRESHOLD;
|
|
23
|
-
/** Number of consecutive performance drops needed to trigger the rule. */
|
|
24
|
-
private static readonly CONSECUTIVE_DROPS_REQUIRED;
|
|
25
|
-
/** Number of exercises with consecutive drops needed for Recommended severity. */
|
|
26
|
-
private static readonly EXERCISES_WITH_DROPS_FOR_RECOMMENDED;
|
|
15
|
+
#private;
|
|
27
16
|
/**
|
|
28
17
|
* Generates or updates the workout plan for a mesocycle.
|
|
29
18
|
*
|
|
@@ -110,32 +99,5 @@ export default class WorkoutMesocycleService {
|
|
|
110
99
|
* needed data.
|
|
111
100
|
*/
|
|
112
101
|
static shouldTriggerEarlyDeload(mesocycle: WorkoutMesocycle, exerciseCTOs: WorkoutExerciseCTO[], currentMicrocycleId: UUID, existingMicrocycles: WorkoutMicrocycle[], existingSessions: WorkoutSession[], existingSessionExercises: WorkoutSessionExercise[], existingSets: WorkoutSet[]): WorkoutDeloadRecommendation;
|
|
113
|
-
/**
|
|
114
|
-
* Checks whether the ratio of muscle groups in recovery mode exceeds the
|
|
115
|
-
* deload thresholds. Derives the trained muscle group list and per-exercise
|
|
116
|
-
* muscle group mapping from the exercise map built by
|
|
117
|
-
* {@link WorkoutMesocyclePlanContext}.
|
|
118
|
-
*
|
|
119
|
-
* @param recentSessionExercises Session exercises from the last 2 microcycles.
|
|
120
|
-
* @param exerciseMap Map of exercise ID to exercise (from context).
|
|
121
|
-
*/
|
|
122
|
-
private static evaluateRecoverySessionThreshold;
|
|
123
|
-
/**
|
|
124
|
-
* Checks whether exercises show consecutive performance drops (negative set
|
|
125
|
-
* surplus) across recent session exercises. Uses the context's set map for
|
|
126
|
-
* O(1) set lookups instead of building a local map.
|
|
127
|
-
*
|
|
128
|
-
* @param recentSessionExercises Session exercises from the last 2 microcycles.
|
|
129
|
-
* @param setMap Map of set ID to set (from context).
|
|
130
|
-
*/
|
|
131
|
-
private static evaluateConsecutivePerformanceDrops;
|
|
132
|
-
/**
|
|
133
|
-
* Cleans up incomplete microcycles and their associated documents.
|
|
134
|
-
*
|
|
135
|
-
* Finds the first microcycle where the last session is not complete, validates that it
|
|
136
|
-
* hasn't started (first session incomplete), and returns IDs of all documents that should
|
|
137
|
-
* be deleted (microcycles from that point forward and all their associated data).
|
|
138
|
-
*/
|
|
139
|
-
private static cleanUpIncompleteMicrocycles;
|
|
140
102
|
}
|
|
141
|
-
//# sourceMappingURL=
|
|
103
|
+
//# sourceMappingURL=WorkoutMesocycle.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkoutMesocycle.service.d.ts","sourceRoot":"","sources":["../../../../src/services/workout/Mesocycle/WorkoutMesocycle.service.ts"],"names":[],"mappings":"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"}
|
package/lib/services/workout/Mesocycle/{WorkoutMesocycleService.js → WorkoutMesocycle.service.js}
RENAMED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { DateService } from '@aneuhold/core-ts-lib';
|
|
2
2
|
import { CycleType } from '../../../documents/workout/WorkoutMesocycle.js';
|
|
3
3
|
import { WorkoutMicrocycleSchema } from '../../../documents/workout/WorkoutMicrocycle.js';
|
|
4
|
-
import WorkoutMicrocycleService from '../Microcycle/
|
|
5
|
-
import WorkoutSessionExerciseService from '../SessionExercise/
|
|
4
|
+
import WorkoutMicrocycleService from '../Microcycle/WorkoutMicrocycle.service.js';
|
|
5
|
+
import WorkoutSessionExerciseService from '../SessionExercise/WorkoutSessionExercise.service.js';
|
|
6
6
|
import WorkoutMesocyclePlanContext from './WorkoutMesocyclePlanContext.js';
|
|
7
7
|
import { WorkoutDeloadSeverity, WorkoutDeloadTriggerRule } from './WorkoutMesocycleService.types.js';
|
|
8
8
|
/**
|
|
@@ -10,17 +10,17 @@ import { WorkoutDeloadSeverity, WorkoutDeloadTriggerRule } from './WorkoutMesocy
|
|
|
10
10
|
*/
|
|
11
11
|
export default class WorkoutMesocycleService {
|
|
12
12
|
/** Minimum microcycle index (0-based) before deload detection is active. */
|
|
13
|
-
static MIN_MICROCYCLE_INDEX_FOR_DELOAD = 2;
|
|
13
|
+
static #MIN_MICROCYCLE_INDEX_FOR_DELOAD = 2;
|
|
14
14
|
/** Recovery ratio above which a deload is Recommended. */
|
|
15
|
-
static RECOVERY_RATIO_RECOMMENDED = 0.5;
|
|
15
|
+
static #RECOVERY_RATIO_RECOMMENDED = 0.5;
|
|
16
16
|
/** Recovery ratio at or above which a deload is Suggested. */
|
|
17
|
-
static RECOVERY_RATIO_SUGGESTED = 0.4;
|
|
17
|
+
static #RECOVERY_RATIO_SUGGESTED = 0.4;
|
|
18
18
|
/** Set surplus at or below which a performance drop is counted. */
|
|
19
|
-
static PERFORMANCE_DROP_SURPLUS_THRESHOLD = -3;
|
|
19
|
+
static #PERFORMANCE_DROP_SURPLUS_THRESHOLD = -3;
|
|
20
20
|
/** Number of consecutive performance drops needed to trigger the rule. */
|
|
21
|
-
static CONSECUTIVE_DROPS_REQUIRED = 2;
|
|
21
|
+
static #CONSECUTIVE_DROPS_REQUIRED = 2;
|
|
22
22
|
/** Number of exercises with consecutive drops needed for Recommended severity. */
|
|
23
|
-
static EXERCISES_WITH_DROPS_FOR_RECOMMENDED = 2;
|
|
23
|
+
static #EXERCISES_WITH_DROPS_FOR_RECOMMENDED = 2;
|
|
24
24
|
/**
|
|
25
25
|
* Generates or updates the workout plan for a mesocycle.
|
|
26
26
|
*
|
|
@@ -57,7 +57,7 @@ export default class WorkoutMesocycleService {
|
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
// Clean up incomplete microcycles before creating context
|
|
60
|
-
const cleanupResult = this
|
|
60
|
+
const cleanupResult = this.#cleanUpIncompleteMicrocycles(mesocycle, existingMicrocycles, existingSessions, existingSessionExercises, existingSets);
|
|
61
61
|
// Filter out documents that will be deleted
|
|
62
62
|
const cleanMicrocycles = existingMicrocycles.filter((m) => !cleanupResult.microcyclesToDelete.includes(m._id));
|
|
63
63
|
const cleanSessions = existingSessions.filter((s) => !cleanupResult.sessionsToDelete.includes(s._id));
|
|
@@ -259,7 +259,7 @@ export default class WorkoutMesocycleService {
|
|
|
259
259
|
// Find current microcycle index
|
|
260
260
|
const currentMicrocycleIndex = context.microcyclesInOrder.findIndex((mc) => mc._id === currentMicrocycleId);
|
|
261
261
|
// Guard: don't trigger before enough microcycles have been completed
|
|
262
|
-
if (currentMicrocycleIndex < this
|
|
262
|
+
if (currentMicrocycleIndex < this.#MIN_MICROCYCLE_INDEX_FOR_DELOAD) {
|
|
263
263
|
return noDeload;
|
|
264
264
|
}
|
|
265
265
|
// Guard: don't suggest a deload if already on the deload microcycle
|
|
@@ -279,13 +279,13 @@ export default class WorkoutMesocycleService {
|
|
|
279
279
|
let recoverySeverity = WorkoutDeloadSeverity.None;
|
|
280
280
|
let performanceSeverity = WorkoutDeloadSeverity.None;
|
|
281
281
|
// --- Rule 1: Recovery Session Threshold ---
|
|
282
|
-
const recoveryResult = this
|
|
282
|
+
const recoveryResult = this.#evaluateRecoverySessionThreshold(recentSessionExercises, context.exerciseMap);
|
|
283
283
|
if (recoveryResult !== WorkoutDeloadSeverity.None) {
|
|
284
284
|
triggeredRules.push(WorkoutDeloadTriggerRule.RecoverySessionThreshold);
|
|
285
285
|
recoverySeverity = recoveryResult;
|
|
286
286
|
}
|
|
287
287
|
// --- Rule 2: Consecutive Performance Drops ---
|
|
288
|
-
const performanceResult = this
|
|
288
|
+
const performanceResult = this.#evaluateConsecutivePerformanceDrops(recentSessionExercises, context.setMap);
|
|
289
289
|
if (performanceResult !== WorkoutDeloadSeverity.None) {
|
|
290
290
|
triggeredRules.push(WorkoutDeloadTriggerRule.ConsecutivePerformanceDrop);
|
|
291
291
|
performanceSeverity = performanceResult;
|
|
@@ -317,7 +317,7 @@ export default class WorkoutMesocycleService {
|
|
|
317
317
|
* @param recentSessionExercises Session exercises from the last 2 microcycles.
|
|
318
318
|
* @param exerciseMap Map of exercise ID to exercise (from context).
|
|
319
319
|
*/
|
|
320
|
-
static evaluateRecoverySessionThreshold(recentSessionExercises, exerciseMap) {
|
|
320
|
+
static #evaluateRecoverySessionThreshold(recentSessionExercises, exerciseMap) {
|
|
321
321
|
// Derive unique trained muscle groups from all exercises in the plan
|
|
322
322
|
const trainedMuscleGroupIds = new Set();
|
|
323
323
|
for (const exercise of exerciseMap.values()) {
|
|
@@ -340,10 +340,10 @@ export default class WorkoutMesocycleService {
|
|
|
340
340
|
}
|
|
341
341
|
}
|
|
342
342
|
const ratio = recoveryMuscleGroups.size / trainedMuscleGroupIds.size;
|
|
343
|
-
if (ratio > this
|
|
343
|
+
if (ratio > this.#RECOVERY_RATIO_RECOMMENDED) {
|
|
344
344
|
return WorkoutDeloadSeverity.Recommended;
|
|
345
345
|
}
|
|
346
|
-
if (ratio >= this
|
|
346
|
+
if (ratio >= this.#RECOVERY_RATIO_SUGGESTED) {
|
|
347
347
|
return WorkoutDeloadSeverity.Suggested;
|
|
348
348
|
}
|
|
349
349
|
return WorkoutDeloadSeverity.None;
|
|
@@ -356,7 +356,7 @@ export default class WorkoutMesocycleService {
|
|
|
356
356
|
* @param recentSessionExercises Session exercises from the last 2 microcycles.
|
|
357
357
|
* @param setMap Map of set ID to set (from context).
|
|
358
358
|
*/
|
|
359
|
-
static evaluateConsecutivePerformanceDrops(recentSessionExercises, setMap) {
|
|
359
|
+
static #evaluateConsecutivePerformanceDrops(recentSessionExercises, setMap) {
|
|
360
360
|
// Group session exercises by exercise ID
|
|
361
361
|
const exerciseGroups = new Map();
|
|
362
362
|
for (const se of recentSessionExercises) {
|
|
@@ -388,13 +388,13 @@ export default class WorkoutMesocycleService {
|
|
|
388
388
|
consecutiveDrops = 0;
|
|
389
389
|
continue;
|
|
390
390
|
}
|
|
391
|
-
if (surplus <= this
|
|
391
|
+
if (surplus <= this.#PERFORMANCE_DROP_SURPLUS_THRESHOLD) {
|
|
392
392
|
consecutiveDrops++;
|
|
393
393
|
}
|
|
394
394
|
else {
|
|
395
395
|
consecutiveDrops = 0;
|
|
396
396
|
}
|
|
397
|
-
if (consecutiveDrops >= this
|
|
397
|
+
if (consecutiveDrops >= this.#CONSECUTIVE_DROPS_REQUIRED) {
|
|
398
398
|
hasConsecutiveDrops = true;
|
|
399
399
|
break;
|
|
400
400
|
}
|
|
@@ -406,7 +406,7 @@ export default class WorkoutMesocycleService {
|
|
|
406
406
|
if (exercisesWithDropsCount === 0) {
|
|
407
407
|
return WorkoutDeloadSeverity.None;
|
|
408
408
|
}
|
|
409
|
-
if (exercisesWithDropsCount >= this
|
|
409
|
+
if (exercisesWithDropsCount >= this.#EXERCISES_WITH_DROPS_FOR_RECOMMENDED) {
|
|
410
410
|
return WorkoutDeloadSeverity.Recommended;
|
|
411
411
|
}
|
|
412
412
|
return WorkoutDeloadSeverity.Suggested;
|
|
@@ -418,7 +418,7 @@ export default class WorkoutMesocycleService {
|
|
|
418
418
|
* hasn't started (first session incomplete), and returns IDs of all documents that should
|
|
419
419
|
* be deleted (microcycles from that point forward and all their associated data).
|
|
420
420
|
*/
|
|
421
|
-
static cleanUpIncompleteMicrocycles(mesocycle, existingMicrocycles, existingSessions, existingSessionExercises, existingSets) {
|
|
421
|
+
static #cleanUpIncompleteMicrocycles(mesocycle, existingMicrocycles, existingSessions, existingSessionExercises, existingSets) {
|
|
422
422
|
const microcyclesToDelete = [];
|
|
423
423
|
const sessionsToDelete = [];
|
|
424
424
|
const sessionExercisesToDelete = [];
|
|
@@ -483,4 +483,4 @@ export default class WorkoutMesocycleService {
|
|
|
483
483
|
return { microcyclesToDelete, sessionsToDelete, sessionExercisesToDelete, setsToDelete };
|
|
484
484
|
}
|
|
485
485
|
}
|
|
486
|
-
//# sourceMappingURL=
|
|
486
|
+
//# sourceMappingURL=WorkoutMesocycle.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WorkoutMesocycle.service.js","sourceRoot":"","sources":["../../../../src/services/workout/Mesocycle/WorkoutMesocycle.service.ts"],"names":[],"mappings":"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"}
|
package/lib/services/workout/Mesocycle/{WorkoutMesocycleService.ts → WorkoutMesocycle.service.ts}
RENAMED
|
@@ -9,9 +9,9 @@ import { WorkoutMicrocycleSchema } from '../../../documents/workout/WorkoutMicro
|
|
|
9
9
|
import type { WorkoutSession } from '../../../documents/workout/WorkoutSession.js';
|
|
10
10
|
import type { WorkoutSessionExercise } from '../../../documents/workout/WorkoutSessionExercise.js';
|
|
11
11
|
import type { WorkoutSet } from '../../../documents/workout/WorkoutSet.js';
|
|
12
|
-
import type { DocumentOperations } from '../../
|
|
13
|
-
import WorkoutMicrocycleService from '../Microcycle/
|
|
14
|
-
import WorkoutSessionExerciseService from '../SessionExercise/
|
|
12
|
+
import type { DocumentOperations } from '../../Document.service.js';
|
|
13
|
+
import WorkoutMicrocycleService from '../Microcycle/WorkoutMicrocycle.service.js';
|
|
14
|
+
import WorkoutSessionExerciseService from '../SessionExercise/WorkoutSessionExercise.service.js';
|
|
15
15
|
import WorkoutMesocyclePlanContext from './WorkoutMesocyclePlanContext.js';
|
|
16
16
|
import type { WorkoutDeloadRecommendation } from './WorkoutMesocycleService.types.js';
|
|
17
17
|
import {
|
|
@@ -24,22 +24,22 @@ import {
|
|
|
24
24
|
*/
|
|
25
25
|
export default class WorkoutMesocycleService {
|
|
26
26
|
/** Minimum microcycle index (0-based) before deload detection is active. */
|
|
27
|
-
|
|
27
|
+
static readonly #MIN_MICROCYCLE_INDEX_FOR_DELOAD = 2;
|
|
28
28
|
|
|
29
29
|
/** Recovery ratio above which a deload is Recommended. */
|
|
30
|
-
|
|
30
|
+
static readonly #RECOVERY_RATIO_RECOMMENDED = 0.5;
|
|
31
31
|
|
|
32
32
|
/** Recovery ratio at or above which a deload is Suggested. */
|
|
33
|
-
|
|
33
|
+
static readonly #RECOVERY_RATIO_SUGGESTED = 0.4;
|
|
34
34
|
|
|
35
35
|
/** Set surplus at or below which a performance drop is counted. */
|
|
36
|
-
|
|
36
|
+
static readonly #PERFORMANCE_DROP_SURPLUS_THRESHOLD = -3;
|
|
37
37
|
|
|
38
38
|
/** Number of consecutive performance drops needed to trigger the rule. */
|
|
39
|
-
|
|
39
|
+
static readonly #CONSECUTIVE_DROPS_REQUIRED = 2;
|
|
40
40
|
|
|
41
41
|
/** Number of exercises with consecutive drops needed for Recommended severity. */
|
|
42
|
-
|
|
42
|
+
static readonly #EXERCISES_WITH_DROPS_FOR_RECOMMENDED = 2;
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
45
|
* Generates or updates the workout plan for a mesocycle.
|
|
@@ -96,7 +96,7 @@ export default class WorkoutMesocycleService {
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
// Clean up incomplete microcycles before creating context
|
|
99
|
-
const cleanupResult = this
|
|
99
|
+
const cleanupResult = this.#cleanUpIncompleteMicrocycles(
|
|
100
100
|
mesocycle,
|
|
101
101
|
existingMicrocycles,
|
|
102
102
|
existingSessions,
|
|
@@ -395,7 +395,7 @@ export default class WorkoutMesocycleService {
|
|
|
395
395
|
);
|
|
396
396
|
|
|
397
397
|
// Guard: don't trigger before enough microcycles have been completed
|
|
398
|
-
if (currentMicrocycleIndex < this
|
|
398
|
+
if (currentMicrocycleIndex < this.#MIN_MICROCYCLE_INDEX_FOR_DELOAD) {
|
|
399
399
|
return noDeload;
|
|
400
400
|
}
|
|
401
401
|
|
|
@@ -423,7 +423,7 @@ export default class WorkoutMesocycleService {
|
|
|
423
423
|
let performanceSeverity = WorkoutDeloadSeverity.None;
|
|
424
424
|
|
|
425
425
|
// --- Rule 1: Recovery Session Threshold ---
|
|
426
|
-
const recoveryResult = this
|
|
426
|
+
const recoveryResult = this.#evaluateRecoverySessionThreshold(
|
|
427
427
|
recentSessionExercises,
|
|
428
428
|
context.exerciseMap
|
|
429
429
|
);
|
|
@@ -433,7 +433,7 @@ export default class WorkoutMesocycleService {
|
|
|
433
433
|
}
|
|
434
434
|
|
|
435
435
|
// --- Rule 2: Consecutive Performance Drops ---
|
|
436
|
-
const performanceResult = this
|
|
436
|
+
const performanceResult = this.#evaluateConsecutivePerformanceDrops(
|
|
437
437
|
recentSessionExercises,
|
|
438
438
|
context.setMap
|
|
439
439
|
);
|
|
@@ -471,7 +471,7 @@ export default class WorkoutMesocycleService {
|
|
|
471
471
|
* @param recentSessionExercises Session exercises from the last 2 microcycles.
|
|
472
472
|
* @param exerciseMap Map of exercise ID to exercise (from context).
|
|
473
473
|
*/
|
|
474
|
-
|
|
474
|
+
static #evaluateRecoverySessionThreshold(
|
|
475
475
|
recentSessionExercises: WorkoutSessionExercise[],
|
|
476
476
|
exerciseMap: ReadonlyMap<UUID, WorkoutExercise>
|
|
477
477
|
): WorkoutDeloadSeverity {
|
|
@@ -501,10 +501,10 @@ export default class WorkoutMesocycleService {
|
|
|
501
501
|
|
|
502
502
|
const ratio = recoveryMuscleGroups.size / trainedMuscleGroupIds.size;
|
|
503
503
|
|
|
504
|
-
if (ratio > this
|
|
504
|
+
if (ratio > this.#RECOVERY_RATIO_RECOMMENDED) {
|
|
505
505
|
return WorkoutDeloadSeverity.Recommended;
|
|
506
506
|
}
|
|
507
|
-
if (ratio >= this
|
|
507
|
+
if (ratio >= this.#RECOVERY_RATIO_SUGGESTED) {
|
|
508
508
|
return WorkoutDeloadSeverity.Suggested;
|
|
509
509
|
}
|
|
510
510
|
return WorkoutDeloadSeverity.None;
|
|
@@ -518,7 +518,7 @@ export default class WorkoutMesocycleService {
|
|
|
518
518
|
* @param recentSessionExercises Session exercises from the last 2 microcycles.
|
|
519
519
|
* @param setMap Map of set ID to set (from context).
|
|
520
520
|
*/
|
|
521
|
-
|
|
521
|
+
static #evaluateConsecutivePerformanceDrops(
|
|
522
522
|
recentSessionExercises: WorkoutSessionExercise[],
|
|
523
523
|
setMap: ReadonlyMap<UUID, WorkoutSet>
|
|
524
524
|
): WorkoutDeloadSeverity {
|
|
@@ -561,13 +561,13 @@ export default class WorkoutMesocycleService {
|
|
|
561
561
|
continue;
|
|
562
562
|
}
|
|
563
563
|
|
|
564
|
-
if (surplus <= this
|
|
564
|
+
if (surplus <= this.#PERFORMANCE_DROP_SURPLUS_THRESHOLD) {
|
|
565
565
|
consecutiveDrops++;
|
|
566
566
|
} else {
|
|
567
567
|
consecutiveDrops = 0;
|
|
568
568
|
}
|
|
569
569
|
|
|
570
|
-
if (consecutiveDrops >= this
|
|
570
|
+
if (consecutiveDrops >= this.#CONSECUTIVE_DROPS_REQUIRED) {
|
|
571
571
|
hasConsecutiveDrops = true;
|
|
572
572
|
break;
|
|
573
573
|
}
|
|
@@ -582,7 +582,7 @@ export default class WorkoutMesocycleService {
|
|
|
582
582
|
return WorkoutDeloadSeverity.None;
|
|
583
583
|
}
|
|
584
584
|
|
|
585
|
-
if (exercisesWithDropsCount >= this
|
|
585
|
+
if (exercisesWithDropsCount >= this.#EXERCISES_WITH_DROPS_FOR_RECOMMENDED) {
|
|
586
586
|
return WorkoutDeloadSeverity.Recommended;
|
|
587
587
|
}
|
|
588
588
|
return WorkoutDeloadSeverity.Suggested;
|
|
@@ -595,7 +595,7 @@ export default class WorkoutMesocycleService {
|
|
|
595
595
|
* hasn't started (first session incomplete), and returns IDs of all documents that should
|
|
596
596
|
* be deleted (microcycles from that point forward and all their associated data).
|
|
597
597
|
*/
|
|
598
|
-
|
|
598
|
+
static #cleanUpIncompleteMicrocycles(
|
|
599
599
|
mesocycle: WorkoutMesocycle,
|
|
600
600
|
existingMicrocycles: WorkoutMicrocycle[],
|
|
601
601
|
existingSessions: WorkoutSession[],
|
|
@@ -16,6 +16,7 @@ import type { WorkoutSet } from '../../../documents/workout/WorkoutSet.js';
|
|
|
16
16
|
* every method.
|
|
17
17
|
*/
|
|
18
18
|
export default class WorkoutMesocyclePlanContext {
|
|
19
|
+
#private;
|
|
19
20
|
mesocycle: WorkoutMesocycle;
|
|
20
21
|
existingMicrocycles: WorkoutMicrocycle[];
|
|
21
22
|
existingSessions: WorkoutSession[];
|
|
@@ -101,15 +102,5 @@ export default class WorkoutMesocyclePlanContext {
|
|
|
101
102
|
* the muscle-group-wide ordering used for set progression.
|
|
102
103
|
*/
|
|
103
104
|
setPlannedSessionExerciseCTOs(plannedSessionExerciseCTOs: WorkoutExerciseCTO[][]): void;
|
|
104
|
-
/**
|
|
105
|
-
* Builds and stores a map of primary muscle group -> ordered exercise CTOs for the mesocycle plan.
|
|
106
|
-
*
|
|
107
|
-
* Also builds a map of exercise ID -> session index for use during session generation.
|
|
108
|
-
*
|
|
109
|
-
* The ordering is determined by flattening the planned sessions in order, then the exercises within
|
|
110
|
-
* each session in order. This allows set progression to be distributed evenly across a muscle group
|
|
111
|
-
* for the entire microcycle, even when exercises are split across sessions.
|
|
112
|
-
*/
|
|
113
|
-
private buildSessionCTOMaps;
|
|
114
105
|
}
|
|
115
106
|
//# sourceMappingURL=WorkoutMesocyclePlanContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkoutMesocyclePlanContext.d.ts","sourceRoot":"","sources":["../../../../src/services/workout/Mesocycle/WorkoutMesocyclePlanContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,KAAK,EACV,2BAA2B,EAC3B,6BAA6B,EAC9B,MAAM,sDAAsD,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAEvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AACzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAG3E;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,2BAA2B
|
|
1
|
+
{"version":3,"file":"WorkoutMesocyclePlanContext.d.ts","sourceRoot":"","sources":["../../../../src/services/workout/Mesocycle/WorkoutMesocyclePlanContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,KAAK,EACV,2BAA2B,EAC3B,6BAA6B,EAC9B,MAAM,sDAAsD,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gDAAgD,CAAC;AAEvF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AACzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAG3E;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,OAAO,2BAA2B;;IAmErC,SAAS,EAAE,gBAAgB;IAG3B,mBAAmB,EAAE,iBAAiB,EAAE;IACxC,gBAAgB,EAAE,cAAc,EAAE;IAClC,wBAAwB,EAAE,sBAAsB,EAAE;IAClD,YAAY,EAAE,UAAU,EAAE;IAxEnC;;;OAGG;IACH,SAAgB,kBAAkB,EAAE,MAAM,CAAC;IAE3C;;;OAGG;IACH,SAAgB,mBAAmB,EAAE,MAAM,CAAC;IAE5C;;;OAGG;IACH,SAAgB,UAAU,EAAE,OAAO,CAAC;IAEpC;;;OAGG;IACH,SAAgB,2BAA2B,EAAE,MAAM,CAAC;IAEpD,SAAgB,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACxD,SAAgB,YAAY,EAAE,GAAG,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IAC9D,SAAgB,UAAU,EAAE,GAAG,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACtD,SAAgB,kBAAkB,EAAE,GAAG,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;IACtE,SAAgB,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAE9C,SAAgB,mBAAmB,EAAE,iBAAiB,EAAE,CAAM;IAC9D;;;;;OAKG;IACH,SAAgB,kBAAkB,EAAE,iBAAiB,EAAE,CAAM;IAC7D,SAAgB,gBAAgB,EAAE,cAAc,EAAE,CAAM;IACxD,SAAgB,wBAAwB,EAAE,sBAAsB,EAAE,CAAM;IACxE,SAAgB,YAAY,EAAE,UAAU,EAAE,CAAM;IAEhD;;;OAGG;IACI,0BAA0B,EAAE,kBAAkB,EAAE,EAAE,GAAG,SAAS,CAAC;IACtE;;;;;;OAMG;IACI,4BAA4B,EAAE,GAAG,CAAC,IAAI,EAAE,kBAAkB,EAAE,CAAC,GAAG,SAAS,CAAC;IACjF;;;OAGG;IACI,8BAA8B,EAAE,GAAG,CAAC,IAAI,EAAE,6BAA6B,CAAC,CAAC;IACzE,wBAAwB,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,SAAS,CAAC;IAE/D;;OAEG;gBAEM,SAAS,EAAE,gBAAgB,EAClC,YAAY,EAAE,kBAAkB,EAAE,EAClC,UAAU,GAAE,2BAA2B,EAAO,EACvC,mBAAmB,GAAE,iBAAiB,EAAO,EAC7C,gBAAgB,GAAE,cAAc,EAAO,EACvC,wBAAwB,GAAE,sBAAsB,EAAO,EACvD,YAAY,GAAE,UAAU,EAAO;IA4CxC;;OAEG;IACI,aAAa,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAKvD;;OAEG;IACI,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAKhD;;OAEG;IACI,kBAAkB,CAAC,eAAe,EAAE,sBAAsB,GAAG,IAAI;IAKxE;;OAEG;IACI,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,IAAI;IAOxC;;;OAGG;IACI,6BAA6B,CAAC,0BAA0B,EAAE,kBAAkB,EAAE,EAAE,GAAG,IAAI;CAwC/F"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { CycleType } from '../../../documents/workout/WorkoutMesocycle.js';
|
|
2
|
-
import WorkoutVolumePlanningService from '../util/VolumePlanning/
|
|
2
|
+
import WorkoutVolumePlanningService from '../util/VolumePlanning/WorkoutVolumePlanning.service.js';
|
|
3
3
|
/**
|
|
4
4
|
* Central shared context for generating or updating a {@link WorkoutMesocycle}.
|
|
5
5
|
*
|
|
@@ -146,7 +146,7 @@ export default class WorkoutMesocyclePlanContext {
|
|
|
146
146
|
*/
|
|
147
147
|
setPlannedSessionExerciseCTOs(plannedSessionExerciseCTOs) {
|
|
148
148
|
this.plannedSessionExerciseCTOs = plannedSessionExerciseCTOs;
|
|
149
|
-
this
|
|
149
|
+
this.#buildSessionCTOMaps(plannedSessionExerciseCTOs);
|
|
150
150
|
}
|
|
151
151
|
/**
|
|
152
152
|
* Builds and stores a map of primary muscle group -> ordered exercise CTOs for the mesocycle plan.
|
|
@@ -157,7 +157,7 @@ export default class WorkoutMesocyclePlanContext {
|
|
|
157
157
|
* each session in order. This allows set progression to be distributed evenly across a muscle group
|
|
158
158
|
* for the entire microcycle, even when exercises are split across sessions.
|
|
159
159
|
*/
|
|
160
|
-
buildSessionCTOMaps(sessionsToCTOs) {
|
|
160
|
+
#buildSessionCTOMaps(sessionsToCTOs) {
|
|
161
161
|
const muscleGroupToCTOsMap = new Map();
|
|
162
162
|
const exerciseIdToSessionIndex = new Map();
|
|
163
163
|
for (let sessionIndex = 0; sessionIndex < sessionsToCTOs.length; sessionIndex++) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkoutMesocyclePlanContext.js","sourceRoot":"","sources":["../../../../src/services/workout/Mesocycle/WorkoutMesocyclePlanContext.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,SAAS,EAAE,MAAM,gDAAgD,CAAC;AAK3E,OAAO,4BAA4B,MAAM,
|
|
1
|
+
{"version":3,"file":"WorkoutMesocyclePlanContext.js","sourceRoot":"","sources":["../../../../src/services/workout/Mesocycle/WorkoutMesocyclePlanContext.ts"],"names":[],"mappings":"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"}
|