@aneuhold/core-ts-db-lib 4.1.11 → 4.1.12

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 (63) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/lib/browser.d.ts +9 -3
  3. package/lib/browser.d.ts.map +1 -1
  4. package/lib/browser.js +4 -1
  5. package/lib/browser.js.map +1 -1
  6. package/lib/browser.ts +13 -5
  7. package/lib/ctos/workout/WorkoutExerciseCTO.d.ts +121 -0
  8. package/lib/ctos/workout/WorkoutExerciseCTO.d.ts.map +1 -0
  9. package/lib/ctos/workout/WorkoutExerciseCTO.js +58 -0
  10. package/lib/ctos/workout/WorkoutExerciseCTO.js.map +1 -0
  11. package/lib/ctos/workout/WorkoutExerciseCTO.ts +71 -0
  12. package/lib/ctos/workout/WorkoutMuscleGroupVolumeCTO.d.ts +36 -0
  13. package/lib/ctos/workout/WorkoutMuscleGroupVolumeCTO.d.ts.map +1 -0
  14. package/lib/ctos/workout/WorkoutMuscleGroupVolumeCTO.js +21 -0
  15. package/lib/ctos/workout/WorkoutMuscleGroupVolumeCTO.js.map +1 -0
  16. package/lib/ctos/workout/WorkoutMuscleGroupVolumeCTO.ts +29 -0
  17. package/lib/documents/workout/README.md +5 -5
  18. package/lib/documents/workout/WorkoutExerciseCalibration.d.ts +1 -8
  19. package/lib/documents/workout/WorkoutExerciseCalibration.d.ts.map +1 -1
  20. package/lib/documents/workout/WorkoutExerciseCalibration.js +12 -1
  21. package/lib/documents/workout/WorkoutExerciseCalibration.js.map +1 -1
  22. package/lib/documents/workout/WorkoutExerciseCalibration.ts +12 -10
  23. package/lib/documents/workout/WorkoutSessionExercise.js +4 -4
  24. package/lib/documents/workout/WorkoutSessionExercise.ts +4 -4
  25. package/lib/embedded-types/workout/MesocycleVolumeSummary.d.ts +27 -0
  26. package/lib/embedded-types/workout/MesocycleVolumeSummary.d.ts.map +1 -0
  27. package/lib/embedded-types/workout/MesocycleVolumeSummary.js +39 -0
  28. package/lib/embedded-types/workout/MesocycleVolumeSummary.js.map +1 -0
  29. package/lib/embedded-types/workout/MesocycleVolumeSummary.ts +55 -0
  30. package/lib/services/workout/ExerciseCalibration/WorkoutExerciseCalibrationService.d.ts +33 -2
  31. package/lib/services/workout/ExerciseCalibration/WorkoutExerciseCalibrationService.d.ts.map +1 -1
  32. package/lib/services/workout/ExerciseCalibration/WorkoutExerciseCalibrationService.js +55 -4
  33. package/lib/services/workout/ExerciseCalibration/WorkoutExerciseCalibrationService.js.map +1 -1
  34. package/lib/services/workout/ExerciseCalibration/WorkoutExerciseCalibrationService.ts +69 -4
  35. package/lib/services/workout/Mesocycle/WorkoutMesocyclePlanContext.d.ts +8 -9
  36. package/lib/services/workout/Mesocycle/WorkoutMesocyclePlanContext.d.ts.map +1 -1
  37. package/lib/services/workout/Mesocycle/WorkoutMesocyclePlanContext.js +24 -25
  38. package/lib/services/workout/Mesocycle/WorkoutMesocyclePlanContext.js.map +1 -1
  39. package/lib/services/workout/Mesocycle/WorkoutMesocyclePlanContext.ts +29 -35
  40. package/lib/services/workout/Mesocycle/WorkoutMesocycleService.d.ts +4 -9
  41. package/lib/services/workout/Mesocycle/WorkoutMesocycleService.d.ts.map +1 -1
  42. package/lib/services/workout/Mesocycle/WorkoutMesocycleService.js +12 -8
  43. package/lib/services/workout/Mesocycle/WorkoutMesocycleService.js.map +1 -1
  44. package/lib/services/workout/Mesocycle/WorkoutMesocycleService.ts +17 -17
  45. package/lib/services/workout/Microcycle/WorkoutMicrocycleService.d.ts +3 -6
  46. package/lib/services/workout/Microcycle/WorkoutMicrocycleService.d.ts.map +1 -1
  47. package/lib/services/workout/Microcycle/WorkoutMicrocycleService.js +22 -34
  48. package/lib/services/workout/Microcycle/WorkoutMicrocycleService.js.map +1 -1
  49. package/lib/services/workout/Microcycle/WorkoutMicrocycleService.ts +30 -52
  50. package/lib/services/workout/Session/WorkoutSessionService.d.ts +7 -7
  51. package/lib/services/workout/Session/WorkoutSessionService.d.ts.map +1 -1
  52. package/lib/services/workout/Session/WorkoutSessionService.js +32 -31
  53. package/lib/services/workout/Session/WorkoutSessionService.js.map +1 -1
  54. package/lib/services/workout/Session/WorkoutSessionService.ts +38 -36
  55. package/lib/services/workout/SessionExercise/WorkoutSessionExerciseService.d.ts +3 -3
  56. package/lib/services/workout/SessionExercise/WorkoutSessionExerciseService.d.ts.map +1 -1
  57. package/lib/services/workout/SessionExercise/WorkoutSessionExerciseService.js +4 -4
  58. package/lib/services/workout/SessionExercise/WorkoutSessionExerciseService.js.map +1 -1
  59. package/lib/services/workout/SessionExercise/WorkoutSessionExerciseService.ts +4 -4
  60. package/lib/services/workout/util/VolumePlanning/WorkoutVolumePlanningService.js +21 -21
  61. package/lib/services/workout/util/VolumePlanning/WorkoutVolumePlanningService.js.map +1 -1
  62. package/lib/services/workout/util/VolumePlanning/WorkoutVolumePlanningService.ts +22 -22
  63. package/package.json +3 -3
@@ -1 +1 @@
1
- {"version":3,"file":"WorkoutSessionExerciseService.d.ts","sourceRoot":"","sources":["../../../../src/services/workout/SessionExercise/WorkoutSessionExerciseService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAG3E;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,6BAA6B;IAChD;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,eAAe,EAAE,sBAAsB,GAAG,MAAM,GAAG,IAAI;IAI1E;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,eAAe,EAAE,sBAAsB,GAAG,MAAM,GAAG,IAAI;IAI9E;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,sBAAsB,GAAG,MAAM,GAAG,IAAI;IAIrE;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,GAAG,IAAI;IAqC7D;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,oCAAoC,CACzC,sBAAsB,EAAE,sBAAsB,GAC7C,MAAM,GAAG,IAAI;IAsBhB;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,OAAO;IAI5D;;;;;OAKG;IACH,MAAM,CAAC,0BAA0B,CAC/B,eAAe,EAAE,sBAAsB,EACvC,YAAY,EAAE,UAAU,EAAE,GACzB,OAAO;IAWV;;;;OAIG;IACH,MAAM,CAAC,0BAA0B,CAC/B,eAAe,EAAE,sBAAsB,EACvC,YAAY,EAAE,UAAU,EAAE,GACzB,OAAO;CAWX"}
1
+ {"version":3,"file":"WorkoutSessionExerciseService.d.ts","sourceRoot":"","sources":["../../../../src/services/workout/SessionExercise/WorkoutSessionExerciseService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sDAAsD,CAAC;AACnG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAG3E;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,6BAA6B;IAChD;;;;OAIG;IACH,MAAM,CAAC,WAAW,CAAC,eAAe,EAAE,sBAAsB,GAAG,MAAM,GAAG,IAAI;IAI1E;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,eAAe,EAAE,sBAAsB,GAAG,MAAM,GAAG,IAAI;IAI9E;;;;OAIG;IACH,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,sBAAsB,GAAG,MAAM,GAAG,IAAI;IAIrE;;;;;;;;;;;;OAYG;IACH,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,MAAM,GAAG,IAAI;IAqC7D;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,oCAAoC,CACzC,sBAAsB,EAAE,sBAAsB,GAC7C,MAAM,GAAG,IAAI;IAsBhB;;OAEG;IACH,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,EAAE,GAAG,OAAO;IAI5D;;;;;OAKG;IACH,MAAM,CAAC,0BAA0B,CAC/B,eAAe,EAAE,sBAAsB,EACvC,YAAY,EAAE,UAAU,EAAE,GACzB,OAAO;IAUV;;;;OAIG;IACH,MAAM,CAAC,0BAA0B,CAC/B,eAAe,EAAE,sBAAsB,EACvC,YAAY,EAAE,UAAU,EAAE,GACzB,OAAO;CAYX"}
@@ -117,7 +117,7 @@ export default class WorkoutSessionExerciseService {
117
117
  /**
118
118
  * Returns true if all mid-session metrics are filled out for the session exercise.
119
119
  * Mid-session metrics are filled out right after performing the exercise:
120
- * mindMuscleConnection, pump, unusedMusclePerformance, perceivedEffort,
120
+ * mindMuscleConnection, pump, unusedMusclePerformance,
121
121
  * and performanceScore. Deload exercises are always considered filled.
122
122
  */
123
123
  static hasMidSessionMetricsFilled(sessionExercise, exerciseSets) {
@@ -126,13 +126,12 @@ export default class WorkoutSessionExerciseService {
126
126
  return (sessionExercise.rsm?.mindMuscleConnection != null &&
127
127
  sessionExercise.rsm.pump != null &&
128
128
  sessionExercise.fatigue?.unusedMusclePerformance != null &&
129
- sessionExercise.fatigue.perceivedEffort != null &&
130
129
  sessionExercise.performanceScore != null);
131
130
  }
132
131
  /**
133
132
  * Returns true if all session metrics (both mid-session and post-session) are filled out.
134
- * Post-session metrics are disruption, jointAndTissueDisruption, and sorenessScore.
135
- * Deload exercises are always considered filled.
133
+ * Post-session metrics are disruption, jointAndTissueDisruption, perceivedEffort,
134
+ * and sorenessScore. Deload exercises are always considered filled.
136
135
  */
137
136
  static hasAllSessionMetricsFilled(sessionExercise, exerciseSets) {
138
137
  if (!WorkoutSessionExerciseService.hasMidSessionMetricsFilled(sessionExercise, exerciseSets)) {
@@ -142,6 +141,7 @@ export default class WorkoutSessionExerciseService {
142
141
  return true;
143
142
  return (sessionExercise.rsm?.disruption != null &&
144
143
  sessionExercise.fatigue?.jointAndTissueDisruption != null &&
144
+ sessionExercise.fatigue.perceivedEffort != null &&
145
145
  sessionExercise.sorenessScore != null);
146
146
  }
147
147
  }
@@ -1 +1 @@
1
- {"version":3,"file":"WorkoutSessionExerciseService.js","sourceRoot":"","sources":["../../../../src/services/workout/SessionExercise/WorkoutSessionExerciseService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkoutSessionExerciseService.js","sourceRoot":"","sources":["../../../../src/services/workout/SessionExercise/WorkoutSessionExerciseService.ts"],"names":[],"mappings":"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"}
@@ -136,7 +136,7 @@ export default class WorkoutSessionExerciseService {
136
136
  /**
137
137
  * Returns true if all mid-session metrics are filled out for the session exercise.
138
138
  * Mid-session metrics are filled out right after performing the exercise:
139
- * mindMuscleConnection, pump, unusedMusclePerformance, perceivedEffort,
139
+ * mindMuscleConnection, pump, unusedMusclePerformance,
140
140
  * and performanceScore. Deload exercises are always considered filled.
141
141
  */
142
142
  static hasMidSessionMetricsFilled(
@@ -148,15 +148,14 @@ export default class WorkoutSessionExerciseService {
148
148
  sessionExercise.rsm?.mindMuscleConnection != null &&
149
149
  sessionExercise.rsm.pump != null &&
150
150
  sessionExercise.fatigue?.unusedMusclePerformance != null &&
151
- sessionExercise.fatigue.perceivedEffort != null &&
152
151
  sessionExercise.performanceScore != null
153
152
  );
154
153
  }
155
154
 
156
155
  /**
157
156
  * Returns true if all session metrics (both mid-session and post-session) are filled out.
158
- * Post-session metrics are disruption, jointAndTissueDisruption, and sorenessScore.
159
- * Deload exercises are always considered filled.
157
+ * Post-session metrics are disruption, jointAndTissueDisruption, perceivedEffort,
158
+ * and sorenessScore. Deload exercises are always considered filled.
160
159
  */
161
160
  static hasAllSessionMetricsFilled(
162
161
  sessionExercise: WorkoutSessionExercise,
@@ -169,6 +168,7 @@ export default class WorkoutSessionExerciseService {
169
168
  return (
170
169
  sessionExercise.rsm?.disruption != null &&
171
170
  sessionExercise.fatigue?.jointAndTissueDisruption != null &&
171
+ sessionExercise.fatigue.perceivedEffort != null &&
172
172
  sessionExercise.sorenessScore != null
173
173
  );
174
174
  }
@@ -22,13 +22,13 @@ export default class WorkoutVolumePlanningService {
22
22
  * Calculates the set plan for an entire microcycle.
23
23
  */
24
24
  static calculateSetPlanForMicrocycle(context, microcycleIndex, isDeloadMicrocycle) {
25
- if (!context.muscleGroupToExercisePairsMap) {
26
- throw new Error('WorkoutMesocyclePlanContext.muscleGroupToExercisePairsMap is not initialized. This should be set during mesocycle planning.');
25
+ if (!context.muscleGroupToExerciseCTOsMap) {
26
+ throw new Error('WorkoutMesocyclePlanContext.muscleGroupToExerciseCTOsMap is not initialized. This should be set during mesocycle planning.');
27
27
  }
28
28
  const exerciseIdToSetCount = new Map();
29
29
  const recoveryExerciseIds = new Set();
30
- context.muscleGroupToExercisePairsMap.values().forEach((muscleGroupExercisePairs) => {
31
- const result = this.calculateSetCountForEachExerciseInMuscleGroup(context, microcycleIndex, muscleGroupExercisePairs, isDeloadMicrocycle);
30
+ context.muscleGroupToExerciseCTOsMap.values().forEach((muscleGroupExerciseCTOs) => {
31
+ const result = this.calculateSetCountForEachExerciseInMuscleGroup(context, microcycleIndex, muscleGroupExerciseCTOs, isDeloadMicrocycle);
32
32
  for (const [workoutExerciseId, setCount] of result.exerciseIdToSetCount) {
33
33
  exerciseIdToSetCount.set(workoutExerciseId, setCount);
34
34
  }
@@ -44,23 +44,23 @@ export default class WorkoutVolumePlanningService {
44
44
  * If there is no previous microcycle data for the muscle group, this falls back to
45
45
  * the baseline progression rules.
46
46
  */
47
- static calculateSetCountForEachExerciseInMuscleGroup(context, microcycleIndex, muscleGroupExercisePairs, isDeloadMicrocycle) {
47
+ static calculateSetCountForEachExerciseInMuscleGroup(context, microcycleIndex, muscleGroupExerciseCTOs, isDeloadMicrocycle) {
48
48
  const exerciseIdToSetCount = new Map();
49
49
  const recoveryExerciseIds = new Set();
50
50
  const sessionIndexToExerciseIds = new Map();
51
51
  // 1. Calculate baselines for all exercises in muscle group
52
- muscleGroupExercisePairs.forEach((pair, index) => {
53
- const baseline = this.calculateBaselineSetCount(microcycleIndex, muscleGroupExercisePairs.length, index, isDeloadMicrocycle);
54
- exerciseIdToSetCount.set(pair.exercise._id, Math.min(baseline, this.MAX_SETS_PER_EXERCISE));
52
+ muscleGroupExerciseCTOs.forEach((cto, index) => {
53
+ const baseline = this.calculateBaselineSetCount(microcycleIndex, muscleGroupExerciseCTOs.length, index, isDeloadMicrocycle);
54
+ exerciseIdToSetCount.set(cto._id, Math.min(baseline, this.MAX_SETS_PER_EXERCISE));
55
55
  // Build out the map for session indices to the array of exercise IDs as it pertains to this
56
56
  // muscle group.
57
57
  if (!context.exerciseIdToSessionIndex)
58
58
  return;
59
- const exerciseSessionIndex = context.exerciseIdToSessionIndex.get(pair.exercise._id);
59
+ const exerciseSessionIndex = context.exerciseIdToSessionIndex.get(cto._id);
60
60
  if (exerciseSessionIndex === undefined)
61
61
  return;
62
62
  const existingExerciseIdsForSession = sessionIndexToExerciseIds.get(exerciseSessionIndex) || [];
63
- existingExerciseIdsForSession.push(pair.exercise._id);
63
+ existingExerciseIdsForSession.push(cto._id);
64
64
  sessionIndexToExerciseIds.set(exerciseSessionIndex, existingExerciseIdsForSession);
65
65
  });
66
66
  // 2. Resolve historical performance data
@@ -70,7 +70,7 @@ export default class WorkoutVolumePlanningService {
70
70
  if (!previousMicrocycle)
71
71
  return { exerciseIdToSetCount, recoveryExerciseIds };
72
72
  // Map previous session exercises
73
- const exerciseIds = new Set(muscleGroupExercisePairs.map((p) => p.exercise._id));
73
+ const exerciseIds = new Set(muscleGroupExerciseCTOs.map((cto) => cto._id));
74
74
  const exerciseIdToPrevSessionExercise = new Map();
75
75
  const foundExerciseIds = new Set();
76
76
  const exercisesThatWerePreviouslyInRecovery = new Set();
@@ -113,14 +113,14 @@ export default class WorkoutVolumePlanningService {
113
113
  // For deload microcycles, halve the historical count (minimum 1 set). We don't use baseline
114
114
  // because the user may have adjusted over the mesocycle in a way that the baseline is actually
115
115
  // a higher set count than what would be calculated by halving the previous microcycle's sets.
116
- muscleGroupExercisePairs.forEach((pair) => {
117
- const previousSessionExercise = exerciseIdToPrevSessionExercise.get(pair.exercise._id);
116
+ muscleGroupExerciseCTOs.forEach((cto) => {
117
+ const previousSessionExercise = exerciseIdToPrevSessionExercise.get(cto._id);
118
118
  if (previousSessionExercise) {
119
119
  let setCount = Math.min(previousSessionExercise.setOrder.length, this.MAX_SETS_PER_EXERCISE);
120
120
  if (isDeloadMicrocycle) {
121
121
  setCount = Math.max(1, Math.floor(setCount / 2));
122
122
  }
123
- exerciseIdToSetCount.set(pair.exercise._id, setCount);
123
+ exerciseIdToSetCount.set(cto._id, setCount);
124
124
  }
125
125
  });
126
126
  // Deload microcycles use reduced volume — skip SFR-based set additions
@@ -150,12 +150,12 @@ export default class WorkoutVolumePlanningService {
150
150
  // 3. Determine sets to add and valid candidates
151
151
  let totalSetsToAdd = 0;
152
152
  const candidates = [];
153
- muscleGroupExercisePairs.forEach((pair, muscleGroupIndex) => {
154
- const previousSessionExercise = exerciseIdToPrevSessionExercise.get(pair.exercise._id);
153
+ muscleGroupExerciseCTOs.forEach((cto, muscleGroupIndex) => {
154
+ const previousSessionExercise = exerciseIdToPrevSessionExercise.get(cto._id);
155
155
  if (!previousSessionExercise)
156
156
  return;
157
157
  let recommendation;
158
- if (!exercisesThatWerePreviouslyInRecovery.has(pair.exercise._id)) {
158
+ if (!exercisesThatWerePreviouslyInRecovery.has(cto._id)) {
159
159
  recommendation =
160
160
  WorkoutSessionExerciseService.getRecommendedSetAdditionsOrRecovery(previousSessionExercise);
161
161
  }
@@ -167,19 +167,19 @@ export default class WorkoutVolumePlanningService {
167
167
  recommendation = 0;
168
168
  }
169
169
  if (recommendation === -1) {
170
- recoveryExerciseIds.add(pair.exercise._id);
170
+ recoveryExerciseIds.add(cto._id);
171
171
  // Cut sets in half (rounded down, minimum 1) for recovery
172
172
  const previousSetCount = previousSessionExercise.setOrder.length;
173
173
  const recoverySets = Math.max(1, Math.floor(previousSetCount / 2));
174
- exerciseIdToSetCount.set(pair.exercise._id, recoverySets);
174
+ exerciseIdToSetCount.set(cto._id, recoverySets);
175
175
  }
176
176
  else if (recommendation != null && recommendation >= 0) {
177
177
  totalSetsToAdd += recommendation;
178
178
  // Consider as candidate if session is not already capped
179
179
  if (previousSessionExercise.setOrder.length < this.MAX_SETS_PER_EXERCISE &&
180
- !sessionIsCapped(pair.exercise._id)) {
180
+ !sessionIsCapped(cto._id)) {
181
181
  candidates.push({
182
- exerciseId: pair.exercise._id,
182
+ exerciseId: cto._id,
183
183
  // Don't error if SFR is null for now, just treat as very low
184
184
  sfr: WorkoutSessionExerciseService.getSFR(previousSessionExercise) ??
185
185
  Number.NEGATIVE_INFINITY,
@@ -1 +1 @@
1
- {"version":3,"file":"WorkoutVolumePlanningService.js","sourceRoot":"","sources":["../../../../../src/services/workout/util/VolumePlanning/WorkoutVolumePlanningService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WorkoutVolumePlanningService.js","sourceRoot":"","sources":["../../../../../src/services/workout/util/VolumePlanning/WorkoutVolumePlanningService.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { UUID } from 'crypto';
2
- import type { CalibrationExercisePair } from '../../../../documents/workout/WorkoutExerciseCalibration.js';
2
+ import type { WorkoutExerciseCTO } from '../../../../ctos/workout/WorkoutExerciseCTO.js';
3
3
  import type { WorkoutSessionExercise } from '../../../../documents/workout/WorkoutSessionExercise.js';
4
4
  import type WorkoutMesocyclePlanContext from '../../Mesocycle/WorkoutMesocyclePlanContext.js';
5
5
  import WorkoutSessionExerciseService from '../../SessionExercise/WorkoutSessionExerciseService.js';
@@ -32,20 +32,20 @@ export default class WorkoutVolumePlanningService {
32
32
  microcycleIndex: number,
33
33
  isDeloadMicrocycle: boolean
34
34
  ): { exerciseIdToSetCount: Map<UUID, number>; recoveryExerciseIds: Set<UUID> } {
35
- if (!context.muscleGroupToExercisePairsMap) {
35
+ if (!context.muscleGroupToExerciseCTOsMap) {
36
36
  throw new Error(
37
- 'WorkoutMesocyclePlanContext.muscleGroupToExercisePairsMap is not initialized. This should be set during mesocycle planning.'
37
+ 'WorkoutMesocyclePlanContext.muscleGroupToExerciseCTOsMap is not initialized. This should be set during mesocycle planning.'
38
38
  );
39
39
  }
40
40
 
41
41
  const exerciseIdToSetCount = new Map<UUID, number>();
42
42
  const recoveryExerciseIds = new Set<UUID>();
43
43
 
44
- context.muscleGroupToExercisePairsMap.values().forEach((muscleGroupExercisePairs) => {
44
+ context.muscleGroupToExerciseCTOsMap.values().forEach((muscleGroupExerciseCTOs) => {
45
45
  const result = this.calculateSetCountForEachExerciseInMuscleGroup(
46
46
  context,
47
47
  microcycleIndex,
48
- muscleGroupExercisePairs,
48
+ muscleGroupExerciseCTOs,
49
49
  isDeloadMicrocycle
50
50
  );
51
51
  for (const [workoutExerciseId, setCount] of result.exerciseIdToSetCount) {
@@ -68,7 +68,7 @@ export default class WorkoutVolumePlanningService {
68
68
  private static calculateSetCountForEachExerciseInMuscleGroup(
69
69
  context: WorkoutMesocyclePlanContext,
70
70
  microcycleIndex: number,
71
- muscleGroupExercisePairs: CalibrationExercisePair[],
71
+ muscleGroupExerciseCTOs: WorkoutExerciseCTO[],
72
72
  isDeloadMicrocycle: boolean
73
73
  ): { exerciseIdToSetCount: Map<UUID, number>; recoveryExerciseIds: Set<UUID> } {
74
74
  const exerciseIdToSetCount = new Map<UUID, number>();
@@ -76,23 +76,23 @@ export default class WorkoutVolumePlanningService {
76
76
  const sessionIndexToExerciseIds = new Map<number, UUID[]>();
77
77
 
78
78
  // 1. Calculate baselines for all exercises in muscle group
79
- muscleGroupExercisePairs.forEach((pair, index) => {
79
+ muscleGroupExerciseCTOs.forEach((cto, index) => {
80
80
  const baseline = this.calculateBaselineSetCount(
81
81
  microcycleIndex,
82
- muscleGroupExercisePairs.length,
82
+ muscleGroupExerciseCTOs.length,
83
83
  index,
84
84
  isDeloadMicrocycle
85
85
  );
86
- exerciseIdToSetCount.set(pair.exercise._id, Math.min(baseline, this.MAX_SETS_PER_EXERCISE));
86
+ exerciseIdToSetCount.set(cto._id, Math.min(baseline, this.MAX_SETS_PER_EXERCISE));
87
87
 
88
88
  // Build out the map for session indices to the array of exercise IDs as it pertains to this
89
89
  // muscle group.
90
90
  if (!context.exerciseIdToSessionIndex) return;
91
- const exerciseSessionIndex = context.exerciseIdToSessionIndex.get(pair.exercise._id);
91
+ const exerciseSessionIndex = context.exerciseIdToSessionIndex.get(cto._id);
92
92
  if (exerciseSessionIndex === undefined) return;
93
93
  const existingExerciseIdsForSession =
94
94
  sessionIndexToExerciseIds.get(exerciseSessionIndex) || [];
95
- existingExerciseIdsForSession.push(pair.exercise._id);
95
+ existingExerciseIdsForSession.push(cto._id);
96
96
  sessionIndexToExerciseIds.set(exerciseSessionIndex, existingExerciseIdsForSession);
97
97
  });
98
98
 
@@ -103,7 +103,7 @@ export default class WorkoutVolumePlanningService {
103
103
  if (!previousMicrocycle) return { exerciseIdToSetCount, recoveryExerciseIds };
104
104
 
105
105
  // Map previous session exercises
106
- const exerciseIds = new Set(muscleGroupExercisePairs.map((p) => p.exercise._id));
106
+ const exerciseIds = new Set(muscleGroupExerciseCTOs.map((cto) => cto._id));
107
107
  const exerciseIdToPrevSessionExercise = new Map<UUID, WorkoutSessionExercise>();
108
108
  const foundExerciseIds = new Set<UUID>();
109
109
  const exercisesThatWerePreviouslyInRecovery = new Set<UUID>();
@@ -150,8 +150,8 @@ export default class WorkoutVolumePlanningService {
150
150
  // For deload microcycles, halve the historical count (minimum 1 set). We don't use baseline
151
151
  // because the user may have adjusted over the mesocycle in a way that the baseline is actually
152
152
  // a higher set count than what would be calculated by halving the previous microcycle's sets.
153
- muscleGroupExercisePairs.forEach((pair) => {
154
- const previousSessionExercise = exerciseIdToPrevSessionExercise.get(pair.exercise._id);
153
+ muscleGroupExerciseCTOs.forEach((cto) => {
154
+ const previousSessionExercise = exerciseIdToPrevSessionExercise.get(cto._id);
155
155
  if (previousSessionExercise) {
156
156
  let setCount = Math.min(
157
157
  previousSessionExercise.setOrder.length,
@@ -160,7 +160,7 @@ export default class WorkoutVolumePlanningService {
160
160
  if (isDeloadMicrocycle) {
161
161
  setCount = Math.max(1, Math.floor(setCount / 2));
162
162
  }
163
- exerciseIdToSetCount.set(pair.exercise._id, setCount);
163
+ exerciseIdToSetCount.set(cto._id, setCount);
164
164
  }
165
165
  });
166
166
 
@@ -201,12 +201,12 @@ export default class WorkoutVolumePlanningService {
201
201
  muscleGroupIndex: number;
202
202
  previousSetCount: number;
203
203
  }[] = [];
204
- muscleGroupExercisePairs.forEach((pair, muscleGroupIndex) => {
205
- const previousSessionExercise = exerciseIdToPrevSessionExercise.get(pair.exercise._id);
204
+ muscleGroupExerciseCTOs.forEach((cto, muscleGroupIndex) => {
205
+ const previousSessionExercise = exerciseIdToPrevSessionExercise.get(cto._id);
206
206
  if (!previousSessionExercise) return;
207
207
 
208
208
  let recommendation: number | null;
209
- if (!exercisesThatWerePreviouslyInRecovery.has(pair.exercise._id)) {
209
+ if (!exercisesThatWerePreviouslyInRecovery.has(cto._id)) {
210
210
  recommendation =
211
211
  WorkoutSessionExerciseService.getRecommendedSetAdditionsOrRecovery(
212
212
  previousSessionExercise
@@ -220,21 +220,21 @@ export default class WorkoutVolumePlanningService {
220
220
  }
221
221
 
222
222
  if (recommendation === -1) {
223
- recoveryExerciseIds.add(pair.exercise._id);
223
+ recoveryExerciseIds.add(cto._id);
224
224
  // Cut sets in half (rounded down, minimum 1) for recovery
225
225
  const previousSetCount = previousSessionExercise.setOrder.length;
226
226
  const recoverySets = Math.max(1, Math.floor(previousSetCount / 2));
227
- exerciseIdToSetCount.set(pair.exercise._id, recoverySets);
227
+ exerciseIdToSetCount.set(cto._id, recoverySets);
228
228
  } else if (recommendation != null && recommendation >= 0) {
229
229
  totalSetsToAdd += recommendation;
230
230
 
231
231
  // Consider as candidate if session is not already capped
232
232
  if (
233
233
  previousSessionExercise.setOrder.length < this.MAX_SETS_PER_EXERCISE &&
234
- !sessionIsCapped(pair.exercise._id)
234
+ !sessionIsCapped(cto._id)
235
235
  ) {
236
236
  candidates.push({
237
- exerciseId: pair.exercise._id,
237
+ exerciseId: cto._id,
238
238
  // Don't error if SFR is null for now, just treat as very low
239
239
  sfr:
240
240
  WorkoutSessionExerciseService.getSFR(previousSessionExercise) ??
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@aneuhold/core-ts-db-lib",
3
3
  "author": "Anton G. Neuhold Jr.",
4
4
  "license": "MIT",
5
- "version": "4.1.11",
5
+ "version": "4.1.12",
6
6
  "description": "A core database library used for personal projects",
7
7
  "packageManager": "pnpm@10.25.0",
8
8
  "type": "module",
@@ -72,12 +72,12 @@
72
72
  "Node.js"
73
73
  ],
74
74
  "dependencies": {
75
- "@aneuhold/core-ts-lib": "^2.4.0",
75
+ "@aneuhold/core-ts-lib": "^2.4.1",
76
76
  "uuid": "^13.0.0",
77
77
  "zod": "^4.1.13"
78
78
  },
79
79
  "devDependencies": {
80
- "@aneuhold/local-npm-registry": "^0.2.27",
80
+ "@aneuhold/local-npm-registry": "^0.2.28",
81
81
  "@aneuhold/main-scripts": "^2.8.3",
82
82
  "@types/node": "^25.0.2",
83
83
  "eslint": "^9.39.2",