@aneuhold/core-ts-db-lib 4.1.12 → 4.1.13
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 +21 -0
- package/lib/browser.d.ts +11 -8
- package/lib/browser.d.ts.map +1 -1
- package/lib/browser.js +6 -4
- package/lib/browser.js.map +1 -1
- package/lib/browser.ts +23 -9
- package/lib/ctos/workout/WorkoutMuscleGroupVolumeCTO.d.ts +14 -0
- package/lib/ctos/workout/WorkoutMuscleGroupVolumeCTO.d.ts.map +1 -1
- package/lib/ctos/workout/WorkoutMuscleGroupVolumeCTO.ts +18 -0
- package/lib/documents/workout/WorkoutSet.d.ts +8 -0
- package/lib/documents/workout/WorkoutSet.d.ts.map +1 -1
- package/lib/documents/workout/WorkoutSet.ts +9 -0
- package/lib/services/workout/Exercise/WorkoutExerciseService.d.ts +40 -0
- package/lib/services/workout/Exercise/WorkoutExerciseService.d.ts.map +1 -1
- package/lib/services/workout/Exercise/WorkoutExerciseService.js +134 -1
- package/lib/services/workout/Exercise/WorkoutExerciseService.js.map +1 -1
- package/lib/services/workout/Exercise/WorkoutExerciseService.ts +204 -1
- package/lib/services/workout/ExerciseCalibration/WorkoutExerciseCalibrationService.d.ts +15 -0
- package/lib/services/workout/ExerciseCalibration/WorkoutExerciseCalibrationService.d.ts.map +1 -1
- package/lib/services/workout/ExerciseCalibration/WorkoutExerciseCalibrationService.js +18 -1
- package/lib/services/workout/ExerciseCalibration/WorkoutExerciseCalibrationService.js.map +1 -1
- package/lib/services/workout/ExerciseCalibration/WorkoutExerciseCalibrationService.ts +19 -1
- package/lib/services/workout/Mesocycle/WorkoutMesocyclePlanContext.d.ts +26 -4
- package/lib/services/workout/Mesocycle/WorkoutMesocyclePlanContext.d.ts.map +1 -1
- package/lib/services/workout/Mesocycle/WorkoutMesocyclePlanContext.js +51 -4
- package/lib/services/workout/Mesocycle/WorkoutMesocyclePlanContext.js.map +1 -1
- package/lib/services/workout/Mesocycle/WorkoutMesocyclePlanContext.ts +58 -3
- package/lib/services/workout/Mesocycle/WorkoutMesocycleService.d.ts +45 -1
- package/lib/services/workout/Mesocycle/WorkoutMesocycleService.d.ts.map +1 -1
- package/lib/services/workout/Mesocycle/WorkoutMesocycleService.js +201 -11
- package/lib/services/workout/Mesocycle/WorkoutMesocycleService.js.map +1 -1
- package/lib/services/workout/Mesocycle/WorkoutMesocycleService.ts +285 -9
- package/lib/services/workout/Mesocycle/WorkoutMesocycleService.types.d.ts +33 -0
- package/lib/services/workout/Mesocycle/WorkoutMesocycleService.types.d.ts.map +1 -0
- package/lib/services/workout/Mesocycle/WorkoutMesocycleService.types.js +24 -0
- package/lib/services/workout/Mesocycle/WorkoutMesocycleService.types.js.map +1 -0
- package/lib/services/workout/Mesocycle/WorkoutMesocycleService.types.ts +36 -0
- package/lib/services/workout/Session/WorkoutSessionService.d.ts.map +1 -1
- package/lib/services/workout/Session/WorkoutSessionService.js +1 -11
- package/lib/services/workout/Session/WorkoutSessionService.js.map +1 -1
- package/lib/services/workout/Session/WorkoutSessionService.ts +1 -17
- package/lib/services/workout/SessionExercise/WorkoutSessionExerciseService.d.ts +14 -2
- package/lib/services/workout/SessionExercise/WorkoutSessionExerciseService.d.ts.map +1 -1
- package/lib/services/workout/SessionExercise/WorkoutSessionExerciseService.js +17 -3
- package/lib/services/workout/SessionExercise/WorkoutSessionExerciseService.js.map +1 -1
- package/lib/services/workout/SessionExercise/WorkoutSessionExerciseService.ts +28 -3
- package/lib/services/workout/Set/WorkoutSetService.d.ts +17 -5
- package/lib/services/workout/Set/WorkoutSetService.d.ts.map +1 -1
- package/lib/services/workout/Set/WorkoutSetService.js +83 -16
- package/lib/services/workout/Set/WorkoutSetService.js.map +1 -1
- package/lib/services/workout/Set/WorkoutSetService.ts +107 -24
- package/lib/services/workout/util/VolumePlanning/WorkoutVolumePlanningService.d.ts +72 -2
- package/lib/services/workout/util/VolumePlanning/WorkoutVolumePlanningService.d.ts.map +1 -1
- package/lib/services/workout/util/VolumePlanning/WorkoutVolumePlanningService.js +202 -15
- package/lib/services/workout/util/VolumePlanning/WorkoutVolumePlanningService.js.map +1 -1
- package/lib/services/workout/util/VolumePlanning/WorkoutVolumePlanningService.ts +268 -18
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,26 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## 🔖 [4.1.13] (2026-02-28)
|
|
9
|
+
|
|
10
|
+
### ✅ Added
|
|
11
|
+
|
|
12
|
+
- Added `WorkoutVolumePlanningService` with `estimateVolumeLandmarks()` and `evaluateMevProximity()` static methods for computing MEV/MRV/MAV landmarks from historical mesocycle data and assessing first-microcycle RSM proximity.
|
|
13
|
+
- Added `WorkoutDeloadSeverity` and `WorkoutDeloadTriggerRule` enums, and `WorkoutDeloadRecommendation` type for structured early-deload evaluation.
|
|
14
|
+
- Added `WorkoutMesocycleService.shouldTriggerEarlyDeload()` to detect when recovery session counts or consecutive performance drops warrant an early deload.
|
|
15
|
+
- Added `WorkoutSetService.calculateSetSurplus()` static method computing the signed difference between actual and planned reps/RIR for a single set.
|
|
16
|
+
- Added `WorkoutExerciseService.getTargetWeightFrom1RM()` static method to compute target weight directly from a precomputed effective 1RM.
|
|
17
|
+
- Added `CompletedWorkoutSet` type: a `WorkoutSet` with all nullable fields guaranteed non-null.
|
|
18
|
+
- Added `WorkoutVolumeLandmarkEstimate` type for estimated MEV, MRV, and MAV derived from historical mesocycle volume CTOs.
|
|
19
|
+
|
|
20
|
+
### 🏗️ Changed
|
|
21
|
+
|
|
22
|
+
- `WorkoutMesocycleService.planMesocycle()` now accepts an optional `volumeCTOs: WorkoutMuscleGroupVolumeCTO[]` parameter to seed volume landmark estimates for the plan.
|
|
23
|
+
- `WorkoutMesocyclePlanContext` now exposes `firstMicrocycleRir`, `progressionInterval`, `skipDeload`, and `muscleGroupToVolumeLandmarkMap`; constructor accepts `volumeCTOs` to populate landmark estimates.
|
|
24
|
+
- `WorkoutExerciseService.calculateTargetRepsAndWeightForFirstSet()` now applies autoregulation: accelerates rep target when surplus ≥ 3, holds when −2 to −1, and regresses when surplus ≤ −3.
|
|
25
|
+
- `WorkoutSessionExerciseService` now uses per-exercise previous-microcycle first-set lookup to drive autoregulated progression across all planned microcycles.
|
|
26
|
+
- MEV proximity adjustments from the first microcycle are now applied when generating the second microcycle via `WorkoutVolumePlanningService.evaluateMevProximity()`.
|
|
27
|
+
|
|
8
28
|
## 🔖 [4.1.12] (2026-02-28)
|
|
9
29
|
|
|
10
30
|
### ✅ Added
|
|
@@ -339,6 +359,7 @@ Updated dependency: now requires `@aneuhold/core-ts-lib@^2.3.11`.
|
|
|
339
359
|
|
|
340
360
|
<!-- Link References -->
|
|
341
361
|
|
|
362
|
+
[4.1.13]: https://github.com/aneuhold/ts-libs/compare/core-ts-db-lib-v4.1.12...core-ts-db-lib-v4.1.13
|
|
342
363
|
[4.1.12]: https://github.com/aneuhold/ts-libs/compare/core-ts-db-lib-v4.1.11...core-ts-db-lib-v4.1.12
|
|
343
364
|
[4.1.11]: https://github.com/aneuhold/ts-libs/compare/core-ts-db-lib-v4.1.10...core-ts-db-lib-v4.1.11
|
|
344
365
|
[4.1.10]: https://github.com/aneuhold/ts-libs/compare/core-ts-db-lib-v4.1.9...core-ts-db-lib-v4.1.10
|
package/lib/browser.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import type { WorkoutExerciseCTO } from './ctos/workout/WorkoutExerciseCTO.js';
|
|
2
|
+
import { WorkoutExerciseCTOSchema } from './ctos/workout/WorkoutExerciseCTO.js';
|
|
3
|
+
import type { WorkoutMuscleGroupVolumeCTO, WorkoutVolumeLandmarkEstimate } from './ctos/workout/WorkoutMuscleGroupVolumeCTO.js';
|
|
4
|
+
import { WorkoutMuscleGroupVolumeCTOSchema } from './ctos/workout/WorkoutMuscleGroupVolumeCTO.js';
|
|
1
5
|
import type { BaseDocument, BaseDocumentWithType, BaseDocumentWithUpdatedAndCreatedDates } from './documents/BaseDocument.js';
|
|
2
6
|
import { BaseDocumentSchema, BaseDocumentWithTypeSchema, BaseDocumentWithUpdatedAndCreatedDatesSchema } from './documents/BaseDocument.js';
|
|
3
7
|
import type { ApiKey } from './documents/common/ApiKey.js';
|
|
@@ -18,12 +22,6 @@ import type { ExerciseProperty, WorkoutExercise } from './documents/workout/Work
|
|
|
18
22
|
import { ExerciseProgressionType, ExercisePropertySchema, ExercisePropertyType, ExerciseRepRange, WorkoutExercise_docType, WorkoutExerciseSchema } from './documents/workout/WorkoutExercise.js';
|
|
19
23
|
import type { WorkoutExerciseCalibration } from './documents/workout/WorkoutExerciseCalibration.js';
|
|
20
24
|
import { WorkoutExerciseCalibration_docType, WorkoutExerciseCalibrationSchema } from './documents/workout/WorkoutExerciseCalibration.js';
|
|
21
|
-
import type { WorkoutExerciseCTO } from './ctos/workout/WorkoutExerciseCTO.js';
|
|
22
|
-
import { WorkoutExerciseCTOSchema } from './ctos/workout/WorkoutExerciseCTO.js';
|
|
23
|
-
import type { WorkoutMuscleGroupVolumeCTO } from './ctos/workout/WorkoutMuscleGroupVolumeCTO.js';
|
|
24
|
-
import { WorkoutMuscleGroupVolumeCTOSchema } from './ctos/workout/WorkoutMuscleGroupVolumeCTO.js';
|
|
25
|
-
import type { MesocycleVolumeSummary } from './embedded-types/workout/MesocycleVolumeSummary.js';
|
|
26
|
-
import { MesocycleVolumeSummarySchema } from './embedded-types/workout/MesocycleVolumeSummary.js';
|
|
27
25
|
import type { WorkoutMesocycle } from './documents/workout/WorkoutMesocycle.js';
|
|
28
26
|
import { CycleType, WorkoutMesocycle_docType, WorkoutMesocycleSchema } from './documents/workout/WorkoutMesocycle.js';
|
|
29
27
|
import type { WorkoutMicrocycle } from './documents/workout/WorkoutMicrocycle.js';
|
|
@@ -46,8 +44,12 @@ import type { DashboardTaskListGlobalSortSettings, DashboardTaskListSortSettings
|
|
|
46
44
|
import { DashboardTaskListGlobalSortSettingsSchema, DashboardTaskListSortSettingsSchema, DashboardTaskSortBy, DashboardTaskSortBySchema, DashboardTaskSortDirection, DashboardTaskSortDirectionSchema, DashboardTaskSortSettingSchema, DashboardTaskSortSettingsSchema } from './embedded-types/dashboard/task/SortSettings.js';
|
|
47
45
|
import type { DashboardTagSetting, DashboardTagSettings } from './embedded-types/dashboard/userConfig/Tags.js';
|
|
48
46
|
import { DashboardTagSettingSchema, DashboardTagSettingsSchema } from './embedded-types/dashboard/userConfig/Tags.js';
|
|
47
|
+
import { WorkoutDeloadSeverity, WorkoutDeloadTriggerRule } from './services/workout/Mesocycle/WorkoutMesocycleService.types.js';
|
|
48
|
+
import type { WorkoutDeloadRecommendation } from './services/workout/Mesocycle/WorkoutMesocycleService.types.js';
|
|
49
49
|
import type { Fatigue } from './embedded-types/workout/Fatigue.js';
|
|
50
50
|
import { FatigueSchema } from './embedded-types/workout/Fatigue.js';
|
|
51
|
+
import type { MesocycleVolumeSummary } from './embedded-types/workout/MesocycleVolumeSummary.js';
|
|
52
|
+
import { MesocycleVolumeSummarySchema } from './embedded-types/workout/MesocycleVolumeSummary.js';
|
|
51
53
|
import type { RSM } from './embedded-types/workout/Rsm.js';
|
|
52
54
|
import { RsmSchema } from './embedded-types/workout/Rsm.js';
|
|
53
55
|
import type { RequiredUserId } from './schemas/required-refs/RequiredUserId.js';
|
|
@@ -66,6 +68,7 @@ import WorkoutSessionService, { WorkoutSessionLockReason } from './services/work
|
|
|
66
68
|
import WorkoutSessionExerciseService from './services/workout/SessionExercise/WorkoutSessionExerciseService.js';
|
|
67
69
|
import WorkoutSetService from './services/workout/Set/WorkoutSetService.js';
|
|
68
70
|
import WorkoutSFRService from './services/workout/util/SFR/WorkoutSFRService.js';
|
|
69
|
-
|
|
70
|
-
export
|
|
71
|
+
import WorkoutVolumePlanningService from './services/workout/util/VolumePlanning/WorkoutVolumePlanningService.js';
|
|
72
|
+
export { ApiKeySchema, BaseDocumentSchema, BaseDocumentWithTypeSchema, BaseDocumentWithUpdatedAndCreatedDatesSchema, CycleType, WorkoutDeloadSeverity, WorkoutDeloadTriggerRule, DashboardTagSettingSchema, DashboardTagSettingsSchema, DashboardTask_docType, DashboardTaskFilterSettingsSchema, DashboardTaskListFilterSettingsSchema, DashboardTaskListGlobalFilterSettingsSchema, DashboardTaskListGlobalSortSettingsSchema, DashboardTaskListSortSettingsSchema, DashboardTaskSchema, DashboardTaskService, DashboardTaskSortBy, DashboardTaskSortBySchema, DashboardTaskSortDirection, DashboardTaskSortDirectionSchema, DashboardTaskSortSettingSchema, DashboardTaskSortSettingsSchema, DashboardUserConfig_docType, DashboardUserConfigSchema, DocumentService, ExerciseProgressionType, ExercisePropertySchema, ExercisePropertyType, ExerciseRepRange, FatigueSchema, MesocycleVolumeSummarySchema, NonogramKatanaItem_docType, NonogramKatanaItemName, NonogramKatanaItemNameSchema, NonogramKatanaItemSchema, NonogramKatanaUpgrade_docType, NonogramKatanaUpgradeName, NonogramKatanaUpgradeNameSchema, NonogramKatanaUpgradeSchema, ParentRecurringTaskInfoSchema, RecurrenceBasis, RecurrenceBasisSchema, RecurrenceEffect, RecurrenceEffectSchema, RecurrenceFrequencySchema, RecurrenceFrequencyType, RecurrenceFrequencyTypeSchema, RecurrenceInfoSchema, RequiredUserIdSchema, RsmSchema, StandardFilterSettingSchema, UserCTOSchema, UserSchema, WorkoutEquipmentType_docType, WorkoutEquipmentTypeSchema, WorkoutEquipmentTypeService, WorkoutExercise_docType, WorkoutExerciseCalibration_docType, WorkoutExerciseCalibrationSchema, WorkoutExerciseCalibrationService, WorkoutExerciseCTOSchema, WorkoutExerciseSchema, WorkoutExerciseService, WorkoutMesocycle_docType, WorkoutMesocyclePlanContext, WorkoutMesocycleSchema, WorkoutMesocycleService, WorkoutMicrocycle_docType, WorkoutMicrocycleSchema, WorkoutMicrocycleService, WorkoutMuscleGroup_docType, WorkoutMuscleGroupSchema, WorkoutMuscleGroupVolumeCTOSchema, WorkoutSession_docType, WorkoutSessionExercise_docType, WorkoutSessionExerciseSchema, WorkoutSessionExerciseService, WorkoutSessionLockReason, WorkoutSessionSchema, WorkoutSessionService, WorkoutSet_docType, WorkoutSetSchema, WorkoutSetService, WorkoutSFRService, WorkoutVolumePlanningService };
|
|
73
|
+
export type { ApiKey, BaseDocument, WorkoutDeloadRecommendation, BaseDocumentWithType, BaseDocumentWithUpdatedAndCreatedDates, DashboardTagSetting, DashboardTagSettings, DashboardTask, DashboardTaskFilterAndSortResult, DashboardTaskFilterSettings, DashboardTaskListFilterSettings, DashboardTaskListGlobalFilterSettings, DashboardTaskListGlobalSortSettings, DashboardTaskListSortSettings, DashboardTaskMap, DashboardTaskSortSetting, DashboardTaskSortSettings, DashboardUserConfig, DocumentMap, ExerciseProperty, Fatigue, MesocycleVolumeSummary, NonogramKatanaItem, NonogramKatanaUpgrade, ParentRecurringTaskInfo, RecurrenceFrequency, RecurrenceInfo, RequiredUserId, RSM, StandardFilterSetting, User, UserCTO, WorkoutEquipmentType, WorkoutExercise, WorkoutExerciseCalibration, WorkoutExerciseCTO, WorkoutMesocycle, WorkoutMicrocycle, WorkoutMuscleGroup, WorkoutMuscleGroupVolumeCTO, WorkoutSession, WorkoutSessionExercise, WorkoutSet, WorkoutVolumeLandmarkEstimate };
|
|
71
74
|
//# sourceMappingURL=browser.d.ts.map
|
package/lib/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,oBAAoB,EACpB,sCAAsC,EACvC,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,4CAA4C,EAC7C,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACzB,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAC5F,OAAO,EACL,6BAA6B,EAC7B,2BAA2B,EAC5B,MAAM,gDAAgD,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AAC3F,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,EAC1B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6CAA6C,CAAC;AACxF,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,EAC3B,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAChG,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mDAAmD,CAAC;AACpG,OAAO,EACL,kCAAkC,EAClC,gCAAgC,EACjC,MAAM,mDAAmD,CAAC;AAC3D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
package/lib/browser.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { WorkoutExerciseCTOSchema } from './ctos/workout/WorkoutExerciseCTO.js';
|
|
2
|
+
import { WorkoutMuscleGroupVolumeCTOSchema } from './ctos/workout/WorkoutMuscleGroupVolumeCTO.js';
|
|
1
3
|
import { BaseDocumentSchema, BaseDocumentWithTypeSchema, BaseDocumentWithUpdatedAndCreatedDatesSchema } from './documents/BaseDocument.js';
|
|
2
4
|
import { ApiKeySchema } from './documents/common/ApiKey.js';
|
|
3
5
|
import { UserCTOSchema, UserSchema } from './documents/common/User.js';
|
|
@@ -8,9 +10,6 @@ import { DashboardUserConfig_docType, DashboardUserConfigSchema } from './docume
|
|
|
8
10
|
import { WorkoutEquipmentType_docType, WorkoutEquipmentTypeSchema } from './documents/workout/WorkoutEquipmentType.js';
|
|
9
11
|
import { ExerciseProgressionType, ExercisePropertySchema, ExercisePropertyType, ExerciseRepRange, WorkoutExercise_docType, WorkoutExerciseSchema } from './documents/workout/WorkoutExercise.js';
|
|
10
12
|
import { WorkoutExerciseCalibration_docType, WorkoutExerciseCalibrationSchema } from './documents/workout/WorkoutExerciseCalibration.js';
|
|
11
|
-
import { WorkoutExerciseCTOSchema } from './ctos/workout/WorkoutExerciseCTO.js';
|
|
12
|
-
import { WorkoutMuscleGroupVolumeCTOSchema } from './ctos/workout/WorkoutMuscleGroupVolumeCTO.js';
|
|
13
|
-
import { MesocycleVolumeSummarySchema } from './embedded-types/workout/MesocycleVolumeSummary.js';
|
|
14
13
|
import { CycleType, WorkoutMesocycle_docType, WorkoutMesocycleSchema } from './documents/workout/WorkoutMesocycle.js';
|
|
15
14
|
import { WorkoutMicrocycle_docType, WorkoutMicrocycleSchema } from './documents/workout/WorkoutMicrocycle.js';
|
|
16
15
|
import { WorkoutMuscleGroup_docType, WorkoutMuscleGroupSchema } from './documents/workout/WorkoutMuscleGroup.js';
|
|
@@ -23,7 +22,9 @@ import { DashboardTaskFilterSettingsSchema, DashboardTaskListFilterSettingsSchem
|
|
|
23
22
|
import { ParentRecurringTaskInfoSchema, RecurrenceBasis, RecurrenceBasisSchema, RecurrenceEffect, RecurrenceEffectSchema, RecurrenceFrequencySchema, RecurrenceFrequencyType, RecurrenceFrequencyTypeSchema, RecurrenceInfoSchema } from './embedded-types/dashboard/task/RecurrenceInfo.js';
|
|
24
23
|
import { DashboardTaskListGlobalSortSettingsSchema, DashboardTaskListSortSettingsSchema, DashboardTaskSortBy, DashboardTaskSortBySchema, DashboardTaskSortDirection, DashboardTaskSortDirectionSchema, DashboardTaskSortSettingSchema, DashboardTaskSortSettingsSchema } from './embedded-types/dashboard/task/SortSettings.js';
|
|
25
24
|
import { DashboardTagSettingSchema, DashboardTagSettingsSchema } from './embedded-types/dashboard/userConfig/Tags.js';
|
|
25
|
+
import { WorkoutDeloadSeverity, WorkoutDeloadTriggerRule } from './services/workout/Mesocycle/WorkoutMesocycleService.types.js';
|
|
26
26
|
import { FatigueSchema } from './embedded-types/workout/Fatigue.js';
|
|
27
|
+
import { MesocycleVolumeSummarySchema } from './embedded-types/workout/MesocycleVolumeSummary.js';
|
|
27
28
|
import { RsmSchema } from './embedded-types/workout/Rsm.js';
|
|
28
29
|
import { RequiredUserIdSchema } from './schemas/required-refs/RequiredUserId.js';
|
|
29
30
|
import DocumentService from './services/DocumentService.js';
|
|
@@ -38,6 +39,7 @@ import WorkoutSessionService, { WorkoutSessionLockReason } from './services/work
|
|
|
38
39
|
import WorkoutSessionExerciseService from './services/workout/SessionExercise/WorkoutSessionExerciseService.js';
|
|
39
40
|
import WorkoutSetService from './services/workout/Set/WorkoutSetService.js';
|
|
40
41
|
import WorkoutSFRService from './services/workout/util/SFR/WorkoutSFRService.js';
|
|
42
|
+
import WorkoutVolumePlanningService from './services/workout/util/VolumePlanning/WorkoutVolumePlanningService.js';
|
|
41
43
|
// Export all browser-safe functions and classes from this library
|
|
42
|
-
export { ApiKeySchema, BaseDocumentSchema, BaseDocumentWithTypeSchema, BaseDocumentWithUpdatedAndCreatedDatesSchema, CycleType, DashboardTagSettingSchema, DashboardTagSettingsSchema, DashboardTask_docType, DashboardTaskFilterSettingsSchema, DashboardTaskListFilterSettingsSchema, DashboardTaskListGlobalFilterSettingsSchema, DashboardTaskListGlobalSortSettingsSchema, DashboardTaskListSortSettingsSchema, DashboardTaskSchema, DashboardTaskService, DashboardTaskSortBy, DashboardTaskSortBySchema, DashboardTaskSortDirection, DashboardTaskSortDirectionSchema, DashboardTaskSortSettingSchema, DashboardTaskSortSettingsSchema, DashboardUserConfig_docType, DashboardUserConfigSchema, DocumentService, ExerciseProgressionType, ExercisePropertySchema, ExercisePropertyType, ExerciseRepRange, FatigueSchema, MesocycleVolumeSummarySchema, NonogramKatanaItem_docType, NonogramKatanaItemName, NonogramKatanaItemNameSchema, NonogramKatanaItemSchema, NonogramKatanaUpgrade_docType, NonogramKatanaUpgradeName, NonogramKatanaUpgradeNameSchema, NonogramKatanaUpgradeSchema, ParentRecurringTaskInfoSchema, RecurrenceBasis, RecurrenceBasisSchema, RecurrenceEffect, RecurrenceEffectSchema, RecurrenceFrequencySchema, RecurrenceFrequencyType, RecurrenceFrequencyTypeSchema, RecurrenceInfoSchema, RequiredUserIdSchema, RsmSchema,
|
|
44
|
+
export { ApiKeySchema, BaseDocumentSchema, BaseDocumentWithTypeSchema, BaseDocumentWithUpdatedAndCreatedDatesSchema, CycleType, WorkoutDeloadSeverity, WorkoutDeloadTriggerRule, DashboardTagSettingSchema, DashboardTagSettingsSchema, DashboardTask_docType, DashboardTaskFilterSettingsSchema, DashboardTaskListFilterSettingsSchema, DashboardTaskListGlobalFilterSettingsSchema, DashboardTaskListGlobalSortSettingsSchema, DashboardTaskListSortSettingsSchema, DashboardTaskSchema, DashboardTaskService, DashboardTaskSortBy, DashboardTaskSortBySchema, DashboardTaskSortDirection, DashboardTaskSortDirectionSchema, DashboardTaskSortSettingSchema, DashboardTaskSortSettingsSchema, DashboardUserConfig_docType, DashboardUserConfigSchema, DocumentService, ExerciseProgressionType, ExercisePropertySchema, ExercisePropertyType, ExerciseRepRange, FatigueSchema, MesocycleVolumeSummarySchema, NonogramKatanaItem_docType, NonogramKatanaItemName, NonogramKatanaItemNameSchema, NonogramKatanaItemSchema, NonogramKatanaUpgrade_docType, NonogramKatanaUpgradeName, NonogramKatanaUpgradeNameSchema, NonogramKatanaUpgradeSchema, ParentRecurringTaskInfoSchema, RecurrenceBasis, RecurrenceBasisSchema, RecurrenceEffect, RecurrenceEffectSchema, RecurrenceFrequencySchema, RecurrenceFrequencyType, RecurrenceFrequencyTypeSchema, RecurrenceInfoSchema, RequiredUserIdSchema, RsmSchema, StandardFilterSettingSchema, UserCTOSchema, UserSchema, WorkoutEquipmentType_docType, WorkoutEquipmentTypeSchema, WorkoutEquipmentTypeService, WorkoutExercise_docType, WorkoutExerciseCalibration_docType, WorkoutExerciseCalibrationSchema, WorkoutExerciseCalibrationService, WorkoutExerciseCTOSchema, WorkoutExerciseSchema, WorkoutExerciseService, WorkoutMesocycle_docType, WorkoutMesocyclePlanContext, WorkoutMesocycleSchema, WorkoutMesocycleService, WorkoutMicrocycle_docType, WorkoutMicrocycleSchema, WorkoutMicrocycleService, WorkoutMuscleGroup_docType, WorkoutMuscleGroupSchema, WorkoutMuscleGroupVolumeCTOSchema, WorkoutSession_docType, WorkoutSessionExercise_docType, WorkoutSessionExerciseSchema, WorkoutSessionExerciseService, WorkoutSessionLockReason, WorkoutSessionSchema, WorkoutSessionService, WorkoutSet_docType, WorkoutSetSchema, WorkoutSetService, WorkoutSFRService, WorkoutVolumePlanningService };
|
|
43
45
|
//# sourceMappingURL=browser.js.map
|
package/lib/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
package/lib/browser.ts
CHANGED
|
@@ -1,3 +1,10 @@
|
|
|
1
|
+
import type { WorkoutExerciseCTO } from './ctos/workout/WorkoutExerciseCTO.js';
|
|
2
|
+
import { WorkoutExerciseCTOSchema } from './ctos/workout/WorkoutExerciseCTO.js';
|
|
3
|
+
import type {
|
|
4
|
+
WorkoutMuscleGroupVolumeCTO,
|
|
5
|
+
WorkoutVolumeLandmarkEstimate
|
|
6
|
+
} from './ctos/workout/WorkoutMuscleGroupVolumeCTO.js';
|
|
7
|
+
import { WorkoutMuscleGroupVolumeCTOSchema } from './ctos/workout/WorkoutMuscleGroupVolumeCTO.js';
|
|
1
8
|
import type {
|
|
2
9
|
BaseDocument,
|
|
3
10
|
BaseDocumentWithType,
|
|
@@ -48,12 +55,6 @@ import {
|
|
|
48
55
|
WorkoutExerciseCalibration_docType,
|
|
49
56
|
WorkoutExerciseCalibrationSchema
|
|
50
57
|
} from './documents/workout/WorkoutExerciseCalibration.js';
|
|
51
|
-
import type { WorkoutExerciseCTO } from './ctos/workout/WorkoutExerciseCTO.js';
|
|
52
|
-
import { WorkoutExerciseCTOSchema } from './ctos/workout/WorkoutExerciseCTO.js';
|
|
53
|
-
import type { WorkoutMuscleGroupVolumeCTO } from './ctos/workout/WorkoutMuscleGroupVolumeCTO.js';
|
|
54
|
-
import { WorkoutMuscleGroupVolumeCTOSchema } from './ctos/workout/WorkoutMuscleGroupVolumeCTO.js';
|
|
55
|
-
import type { MesocycleVolumeSummary } from './embedded-types/workout/MesocycleVolumeSummary.js';
|
|
56
|
-
import { MesocycleVolumeSummarySchema } from './embedded-types/workout/MesocycleVolumeSummary.js';
|
|
57
58
|
import type { WorkoutMesocycle } from './documents/workout/WorkoutMesocycle.js';
|
|
58
59
|
import {
|
|
59
60
|
CycleType,
|
|
@@ -140,8 +141,15 @@ import {
|
|
|
140
141
|
DashboardTagSettingSchema,
|
|
141
142
|
DashboardTagSettingsSchema
|
|
142
143
|
} from './embedded-types/dashboard/userConfig/Tags.js';
|
|
144
|
+
import {
|
|
145
|
+
WorkoutDeloadSeverity,
|
|
146
|
+
WorkoutDeloadTriggerRule
|
|
147
|
+
} from './services/workout/Mesocycle/WorkoutMesocycleService.types.js';
|
|
148
|
+
import type { WorkoutDeloadRecommendation } from './services/workout/Mesocycle/WorkoutMesocycleService.types.js';
|
|
143
149
|
import type { Fatigue } from './embedded-types/workout/Fatigue.js';
|
|
144
150
|
import { FatigueSchema } from './embedded-types/workout/Fatigue.js';
|
|
151
|
+
import type { MesocycleVolumeSummary } from './embedded-types/workout/MesocycleVolumeSummary.js';
|
|
152
|
+
import { MesocycleVolumeSummarySchema } from './embedded-types/workout/MesocycleVolumeSummary.js';
|
|
145
153
|
import type { RSM } from './embedded-types/workout/Rsm.js';
|
|
146
154
|
import { RsmSchema } from './embedded-types/workout/Rsm.js';
|
|
147
155
|
import type { RequiredUserId } from './schemas/required-refs/RequiredUserId.js';
|
|
@@ -162,6 +170,7 @@ import WorkoutSessionService, {
|
|
|
162
170
|
import WorkoutSessionExerciseService from './services/workout/SessionExercise/WorkoutSessionExerciseService.js';
|
|
163
171
|
import WorkoutSetService from './services/workout/Set/WorkoutSetService.js';
|
|
164
172
|
import WorkoutSFRService from './services/workout/util/SFR/WorkoutSFRService.js';
|
|
173
|
+
import WorkoutVolumePlanningService from './services/workout/util/VolumePlanning/WorkoutVolumePlanningService.js';
|
|
165
174
|
|
|
166
175
|
// Export all browser-safe functions and classes from this library
|
|
167
176
|
export {
|
|
@@ -170,6 +179,8 @@ export {
|
|
|
170
179
|
BaseDocumentWithTypeSchema,
|
|
171
180
|
BaseDocumentWithUpdatedAndCreatedDatesSchema,
|
|
172
181
|
CycleType,
|
|
182
|
+
WorkoutDeloadSeverity,
|
|
183
|
+
WorkoutDeloadTriggerRule,
|
|
173
184
|
DashboardTagSettingSchema,
|
|
174
185
|
DashboardTagSettingsSchema,
|
|
175
186
|
DashboardTask_docType,
|
|
@@ -214,7 +225,6 @@ export {
|
|
|
214
225
|
RecurrenceInfoSchema,
|
|
215
226
|
RequiredUserIdSchema,
|
|
216
227
|
RsmSchema,
|
|
217
|
-
WorkoutSessionLockReason,
|
|
218
228
|
StandardFilterSettingSchema,
|
|
219
229
|
UserCTOSchema,
|
|
220
230
|
UserSchema,
|
|
@@ -242,18 +252,21 @@ export {
|
|
|
242
252
|
WorkoutSessionExercise_docType,
|
|
243
253
|
WorkoutSessionExerciseSchema,
|
|
244
254
|
WorkoutSessionExerciseService,
|
|
255
|
+
WorkoutSessionLockReason,
|
|
245
256
|
WorkoutSessionSchema,
|
|
246
257
|
WorkoutSessionService,
|
|
247
258
|
WorkoutSet_docType,
|
|
248
259
|
WorkoutSetSchema,
|
|
249
260
|
WorkoutSetService,
|
|
250
|
-
WorkoutSFRService
|
|
261
|
+
WorkoutSFRService,
|
|
262
|
+
WorkoutVolumePlanningService
|
|
251
263
|
};
|
|
252
264
|
|
|
253
265
|
// Export TypeScript types where needed
|
|
254
266
|
export type {
|
|
255
267
|
ApiKey,
|
|
256
268
|
BaseDocument,
|
|
269
|
+
WorkoutDeloadRecommendation,
|
|
257
270
|
BaseDocumentWithType,
|
|
258
271
|
BaseDocumentWithUpdatedAndCreatedDates,
|
|
259
272
|
DashboardTagSetting,
|
|
@@ -293,5 +306,6 @@ export type {
|
|
|
293
306
|
WorkoutMuscleGroupVolumeCTO,
|
|
294
307
|
WorkoutSession,
|
|
295
308
|
WorkoutSessionExercise,
|
|
296
|
-
WorkoutSet
|
|
309
|
+
WorkoutSet,
|
|
310
|
+
WorkoutVolumeLandmarkEstimate
|
|
297
311
|
};
|
|
@@ -33,4 +33,18 @@ export declare const WorkoutMuscleGroupVolumeCTOSchema: z.ZodObject<{
|
|
|
33
33
|
* recovery session counts across completed mesocycles.
|
|
34
34
|
*/
|
|
35
35
|
export type WorkoutMuscleGroupVolumeCTO = z.infer<typeof WorkoutMuscleGroupVolumeCTOSchema>;
|
|
36
|
+
/**
|
|
37
|
+
* Estimated volume landmarks (MEV, MRV, MAV) for a muscle group derived
|
|
38
|
+
* from historical mesocycle data.
|
|
39
|
+
*/
|
|
40
|
+
export type WorkoutVolumeLandmarkEstimate = {
|
|
41
|
+
/** Estimated minimum effective volume (sets per muscle group per session). */
|
|
42
|
+
estimatedMev: number;
|
|
43
|
+
/** Estimated maximum recoverable volume. */
|
|
44
|
+
estimatedMrv: number;
|
|
45
|
+
/** Estimated maximum adaptive volume (midpoint of MEV and MRV). */
|
|
46
|
+
estimatedMav: number;
|
|
47
|
+
/** Number of completed mesocycles used to derive these estimates. */
|
|
48
|
+
mesocycleCount: number;
|
|
49
|
+
};
|
|
36
50
|
//# sourceMappingURL=WorkoutMuscleGroupVolumeCTO.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkoutMuscleGroupVolumeCTO.d.ts","sourceRoot":"","sources":["../../../src/ctos/workout/WorkoutMuscleGroupVolumeCTO.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;iBAS5C,CAAC;AAEH;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"WorkoutMuscleGroupVolumeCTO.d.ts","sourceRoot":"","sources":["../../../src/ctos/workout/WorkoutMuscleGroupVolumeCTO.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB;;;;;;;GAOG;AACH,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;iBAS5C,CAAC;AAEH;;;;GAIG;AACH,MAAM,MAAM,2BAA2B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC;AAE5F;;;GAGG;AACH,MAAM,MAAM,6BAA6B,GAAG;IAC1C,8EAA8E;IAC9E,YAAY,EAAE,MAAM,CAAC;IAErB,4CAA4C;IAC5C,YAAY,EAAE,MAAM,CAAC;IAErB,mEAAmE;IACnE,YAAY,EAAE,MAAM,CAAC;IAErB,qEAAqE;IACrE,cAAc,EAAE,MAAM,CAAC;CACxB,CAAC"}
|
|
@@ -27,3 +27,21 @@ export const WorkoutMuscleGroupVolumeCTOSchema = z.object({
|
|
|
27
27
|
* recovery session counts across completed mesocycles.
|
|
28
28
|
*/
|
|
29
29
|
export type WorkoutMuscleGroupVolumeCTO = z.infer<typeof WorkoutMuscleGroupVolumeCTOSchema>;
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Estimated volume landmarks (MEV, MRV, MAV) for a muscle group derived
|
|
33
|
+
* from historical mesocycle data.
|
|
34
|
+
*/
|
|
35
|
+
export type WorkoutVolumeLandmarkEstimate = {
|
|
36
|
+
/** Estimated minimum effective volume (sets per muscle group per session). */
|
|
37
|
+
estimatedMev: number;
|
|
38
|
+
|
|
39
|
+
/** Estimated maximum recoverable volume. */
|
|
40
|
+
estimatedMrv: number;
|
|
41
|
+
|
|
42
|
+
/** Estimated maximum adaptive volume (midpoint of MEV and MRV). */
|
|
43
|
+
estimatedMav: number;
|
|
44
|
+
|
|
45
|
+
/** Number of completed mesocycles used to derive these estimates. */
|
|
46
|
+
mesocycleCount: number;
|
|
47
|
+
};
|
|
@@ -38,4 +38,12 @@ export declare const WorkoutSetSchema: z.ZodObject<{
|
|
|
38
38
|
* The recommended average RIR is 2-3 to balance stimulus and fatigue.
|
|
39
39
|
*/
|
|
40
40
|
export type WorkoutSet = z.infer<typeof WorkoutSetSchema>;
|
|
41
|
+
/**
|
|
42
|
+
* A {@link WorkoutSet} with all nullable fields guaranteed to be defined.
|
|
43
|
+
* Zod's `.nullish()` produces `T | null | undefined`, so `Required` alone
|
|
44
|
+
* only strips the optional `?` — `NonNullable` is needed to also strip `null`.
|
|
45
|
+
*/
|
|
46
|
+
export type CompletedWorkoutSet = Required<{
|
|
47
|
+
[K in keyof WorkoutSet]: NonNullable<WorkoutSet[K]>;
|
|
48
|
+
}>;
|
|
41
49
|
//# sourceMappingURL=WorkoutSet.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkoutSet.d.ts","sourceRoot":"","sources":["../../../src/documents/workout/WorkoutSet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB;;GAEG;AACH,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;iBAyD3B,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"WorkoutSet.d.ts","sourceRoot":"","sources":["../../../src/documents/workout/WorkoutSet.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB;;GAEG;AACH,eAAO,MAAM,kBAAkB,eAAe,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;iBAyD3B,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAAG,QAAQ,CAAC;KACxC,CAAC,IAAI,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;CACpD,CAAC,CAAC"}
|
|
@@ -88,3 +88,12 @@ export const WorkoutSetSchema = z.object({
|
|
|
88
88
|
* The recommended average RIR is 2-3 to balance stimulus and fatigue.
|
|
89
89
|
*/
|
|
90
90
|
export type WorkoutSet = z.infer<typeof WorkoutSetSchema>;
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* A {@link WorkoutSet} with all nullable fields guaranteed to be defined.
|
|
94
|
+
* Zod's `.nullish()` produces `T | null | undefined`, so `Required` alone
|
|
95
|
+
* only strips the optional `?` — `NonNullable` is needed to also strip `null`.
|
|
96
|
+
*/
|
|
97
|
+
export type CompletedWorkoutSet = Required<{
|
|
98
|
+
[K in keyof WorkoutSet]: NonNullable<WorkoutSet[K]>;
|
|
99
|
+
}>;
|
|
@@ -2,6 +2,7 @@ import type { WorkoutEquipmentType } from '../../../documents/workout/WorkoutEqu
|
|
|
2
2
|
import type { WorkoutExercise } from '../../../documents/workout/WorkoutExercise.js';
|
|
3
3
|
import { ExerciseRepRange } from '../../../documents/workout/WorkoutExercise.js';
|
|
4
4
|
import type { WorkoutExerciseCalibration } from '../../../documents/workout/WorkoutExerciseCalibration.js';
|
|
5
|
+
import type { WorkoutSet } from '../../../documents/workout/WorkoutSet.js';
|
|
5
6
|
/**
|
|
6
7
|
* A service for handling operations related to {@link WorkoutExercise}s.
|
|
7
8
|
*/
|
|
@@ -33,6 +34,10 @@ export default class WorkoutExerciseService {
|
|
|
33
34
|
* This method applies either rep-based or load-based progression depending on the exercise's
|
|
34
35
|
* preferred progression type, then rounds the weight to available equipment options.
|
|
35
36
|
*
|
|
37
|
+
* When a `previousFirstSet` is provided, autoregulation adjusts progression based on the
|
|
38
|
+
* surplus between planned and actual performance. Without it, the calibration-based formula
|
|
39
|
+
* is used as a baseline.
|
|
40
|
+
*
|
|
36
41
|
* Rep progression: The weight is calculated based on reps at microcycle 0, and reps increase
|
|
37
42
|
* by 2 per microcycle to reach max reps at the final accumulation microcycle (ideally),
|
|
38
43
|
* or drop back down and increase weight by 2%.
|
|
@@ -46,10 +51,45 @@ export default class WorkoutExerciseService {
|
|
|
46
51
|
equipment: WorkoutEquipmentType;
|
|
47
52
|
microcycleIndex: number;
|
|
48
53
|
firstMicrocycleRir: number;
|
|
54
|
+
previousFirstSet?: WorkoutSet;
|
|
49
55
|
}): {
|
|
50
56
|
targetWeight: number;
|
|
51
57
|
targetReps: number;
|
|
52
58
|
};
|
|
59
|
+
/**
|
|
60
|
+
* Calculates targets using auto-regulation based on actual performance from a previous set.
|
|
61
|
+
*/
|
|
62
|
+
private static calculateAutoRegulatedTargets;
|
|
63
|
+
/**
|
|
64
|
+
* Auto-regulated rep progression. Weight stays the same, reps adjust based on surplus.
|
|
65
|
+
*
|
|
66
|
+
* | Surplus | Action |
|
|
67
|
+
* |---:|---|
|
|
68
|
+
* | >= 3 | Accelerate: actualReps + 2 (progress from actual, not planned) |
|
|
69
|
+
* | 0 to 2 | Normal: plannedReps + 2 |
|
|
70
|
+
* | -1 to -2 | Hold: plannedReps (don't add reps) |
|
|
71
|
+
* | <= -3 | Regress: actualReps (use actual as new baseline) |
|
|
72
|
+
*/
|
|
73
|
+
private static calculateAutoRegulatedRepTargets;
|
|
74
|
+
/**
|
|
75
|
+
* Auto-regulated load progression. Reps stay at rep range max, weight adjusts based on surplus.
|
|
76
|
+
*
|
|
77
|
+
* | Surplus | Action |
|
|
78
|
+
* |---:|---|
|
|
79
|
+
* | >= 2 | Accelerate: increase weight by ~4% |
|
|
80
|
+
* | 0 to 1 | Normal: increase weight by 2% |
|
|
81
|
+
* | -1 to -2 | Hold weight (no increase) |
|
|
82
|
+
* | <= -3 | Reduce weight by minimum equipment increment |
|
|
83
|
+
*/
|
|
84
|
+
private static calculateAutoRegulatedLoadTargets;
|
|
85
|
+
/**
|
|
86
|
+
* Checks whether a set has all the data needed for autoregulation calculations.
|
|
87
|
+
*/
|
|
88
|
+
private static hasCompleteAutoRegulationData;
|
|
89
|
+
/**
|
|
90
|
+
* Calculates targets using the calibration-based formula (original behavior).
|
|
91
|
+
*/
|
|
92
|
+
private static calculateCalibrationBasedTargets;
|
|
53
93
|
private static findNextTwoPercentWeight;
|
|
54
94
|
}
|
|
55
95
|
//# sourceMappingURL=WorkoutExerciseService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkoutExerciseService.d.ts","sourceRoot":"","sources":["../../../../src/services/workout/Exercise/WorkoutExerciseService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAEL,gBAAgB,EACjB,MAAM,+CAA+C,CAAC;AACvD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0DAA0D,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkoutExerciseService.d.ts","sourceRoot":"","sources":["../../../../src/services/workout/Exercise/WorkoutExerciseService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oDAAoD,CAAC;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAEL,gBAAgB,EACjB,MAAM,+CAA+C,CAAC;AACvD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,0DAA0D,CAAC;AAC3G,OAAO,KAAK,EAAuB,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAMhG;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,sBAAsB;IACzC;;;;;;;;OAQG;IACH,MAAM,CAAC,iBAAiB,CAAC,QAAQ,EAAE,gBAAgB,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE;IAWlF;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM;IAIzD;;;;;;;;;;;;;;;;;;OAkBG;IACH,MAAM,CAAC,uCAAuC,CAAC,MAAM,EAAE;QACrD,QAAQ,EAAE,eAAe,CAAC;QAC1B,WAAW,EAAE,0BAA0B,CAAC;QACxC,SAAS,EAAE,oBAAoB,CAAC;QAChC,eAAe,EAAE,MAAM,CAAC;QACxB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,gBAAgB,CAAC,EAAE,UAAU,CAAC;KAC/B,GAAG;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IA2ChD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAsB5C;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,gCAAgC;IA4C/C;;;;;;;;;OASG;IACH,OAAO,CAAC,MAAM,CAAC,iCAAiC;IA2ChD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,6BAA6B;IAU5C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,gCAAgC;IAgG/C,OAAO,CAAC,MAAM,CAAC,wBAAwB;CAgBxC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ExerciseProgressionType, ExerciseRepRange } from '../../../documents/workout/WorkoutExercise.js';
|
|
2
2
|
import WorkoutEquipmentTypeService from '../EquipmentType/WorkoutEquipmentTypeService.js';
|
|
3
3
|
import WorkoutExerciseCalibrationService from '../ExerciseCalibration/WorkoutExerciseCalibrationService.js';
|
|
4
|
+
import WorkoutSessionExerciseService from '../SessionExercise/WorkoutSessionExerciseService.js';
|
|
4
5
|
import WorkoutSFRService from '../util/SFR/WorkoutSFRService.js';
|
|
5
6
|
/**
|
|
6
7
|
* A service for handling operations related to {@link WorkoutExercise}s.
|
|
@@ -41,6 +42,10 @@ export default class WorkoutExerciseService {
|
|
|
41
42
|
* This method applies either rep-based or load-based progression depending on the exercise's
|
|
42
43
|
* preferred progression type, then rounds the weight to available equipment options.
|
|
43
44
|
*
|
|
45
|
+
* When a `previousFirstSet` is provided, autoregulation adjusts progression based on the
|
|
46
|
+
* surplus between planned and actual performance. Without it, the calibration-based formula
|
|
47
|
+
* is used as a baseline.
|
|
48
|
+
*
|
|
44
49
|
* Rep progression: The weight is calculated based on reps at microcycle 0, and reps increase
|
|
45
50
|
* by 2 per microcycle to reach max reps at the final accumulation microcycle (ideally),
|
|
46
51
|
* or drop back down and increase weight by 2%.
|
|
@@ -49,7 +54,7 @@ export default class WorkoutExerciseService {
|
|
|
49
54
|
* If weight can't be increased, adds 2 reps instead.
|
|
50
55
|
*/
|
|
51
56
|
static calculateTargetRepsAndWeightForFirstSet(params) {
|
|
52
|
-
const { exercise, calibration, equipment, microcycleIndex, firstMicrocycleRir } = params;
|
|
57
|
+
const { exercise, calibration, equipment, microcycleIndex, firstMicrocycleRir, previousFirstSet } = params;
|
|
53
58
|
// Validate equipment has weight options
|
|
54
59
|
if (!equipment.weightOptions || equipment.weightOptions.length === 0) {
|
|
55
60
|
throw new Error(`No weight options defined for equipment type ${equipment._id}, ${equipment.title}`);
|
|
@@ -57,6 +62,134 @@ export default class WorkoutExerciseService {
|
|
|
57
62
|
// Get rep range for this exercise
|
|
58
63
|
const repRange = this.getRepRangeValues(exercise.repRange);
|
|
59
64
|
const repRangeMidpoint = Math.floor((repRange.min + repRange.max) / 2);
|
|
65
|
+
// If we have a previous set with complete data, use autoregulation
|
|
66
|
+
if (previousFirstSet && this.hasCompleteAutoRegulationData(previousFirstSet)) {
|
|
67
|
+
return this.calculateAutoRegulatedTargets({
|
|
68
|
+
exercise,
|
|
69
|
+
equipment,
|
|
70
|
+
previousFirstSet,
|
|
71
|
+
repRange
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
// Calibration-based formula (no previous set available)
|
|
75
|
+
return this.calculateCalibrationBasedTargets({
|
|
76
|
+
exercise,
|
|
77
|
+
calibration,
|
|
78
|
+
equipment,
|
|
79
|
+
microcycleIndex,
|
|
80
|
+
firstMicrocycleRir,
|
|
81
|
+
repRange,
|
|
82
|
+
repRangeMidpoint
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Calculates targets using auto-regulation based on actual performance from a previous set.
|
|
87
|
+
*/
|
|
88
|
+
static calculateAutoRegulatedTargets(params) {
|
|
89
|
+
const { exercise, equipment, previousFirstSet, repRange } = params;
|
|
90
|
+
const surplus = WorkoutSessionExerciseService.calculateSetSurplus(previousFirstSet.actualReps, previousFirstSet.plannedReps, previousFirstSet.rir, previousFirstSet.plannedRir);
|
|
91
|
+
if (exercise.preferredProgressionType === ExerciseProgressionType.Rep) {
|
|
92
|
+
return this.calculateAutoRegulatedRepTargets(previousFirstSet, surplus, repRange, equipment);
|
|
93
|
+
}
|
|
94
|
+
return this.calculateAutoRegulatedLoadTargets(previousFirstSet, surplus, repRange, equipment);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Auto-regulated rep progression. Weight stays the same, reps adjust based on surplus.
|
|
98
|
+
*
|
|
99
|
+
* | Surplus | Action |
|
|
100
|
+
* |---:|---|
|
|
101
|
+
* | >= 3 | Accelerate: actualReps + 2 (progress from actual, not planned) |
|
|
102
|
+
* | 0 to 2 | Normal: plannedReps + 2 |
|
|
103
|
+
* | -1 to -2 | Hold: plannedReps (don't add reps) |
|
|
104
|
+
* | <= -3 | Regress: actualReps (use actual as new baseline) |
|
|
105
|
+
*/
|
|
106
|
+
static calculateAutoRegulatedRepTargets(previousSet, surplus, repRange, equipment) {
|
|
107
|
+
let targetReps;
|
|
108
|
+
let targetWeight = previousSet.plannedWeight;
|
|
109
|
+
if (surplus >= 3) {
|
|
110
|
+
targetReps = previousSet.actualReps + 2;
|
|
111
|
+
}
|
|
112
|
+
else if (surplus >= 0) {
|
|
113
|
+
targetReps = previousSet.plannedReps + 2;
|
|
114
|
+
}
|
|
115
|
+
else if (surplus >= -2) {
|
|
116
|
+
targetReps = previousSet.plannedReps;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
targetReps = previousSet.actualReps;
|
|
120
|
+
}
|
|
121
|
+
// Clamp to rep range floor (never target below min, even if actual was 0)
|
|
122
|
+
targetReps = Math.max(targetReps, repRange.min);
|
|
123
|
+
// Handle rep range ceiling: if target exceeds max, reset and bump weight
|
|
124
|
+
if (targetReps > repRange.max) {
|
|
125
|
+
targetReps = repRange.max;
|
|
126
|
+
const nextWeight = this.findNextTwoPercentWeight(targetWeight, equipment);
|
|
127
|
+
if (nextWeight !== null) {
|
|
128
|
+
targetWeight = nextWeight;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
// Round weight to equipment
|
|
132
|
+
const roundedWeight = WorkoutEquipmentTypeService.findNearestWeight(equipment, targetWeight, 'prefer-down');
|
|
133
|
+
if (roundedWeight !== null) {
|
|
134
|
+
targetWeight = roundedWeight;
|
|
135
|
+
}
|
|
136
|
+
return { targetWeight, targetReps };
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Auto-regulated load progression. Reps stay at rep range max, weight adjusts based on surplus.
|
|
140
|
+
*
|
|
141
|
+
* | Surplus | Action |
|
|
142
|
+
* |---:|---|
|
|
143
|
+
* | >= 2 | Accelerate: increase weight by ~4% |
|
|
144
|
+
* | 0 to 1 | Normal: increase weight by 2% |
|
|
145
|
+
* | -1 to -2 | Hold weight (no increase) |
|
|
146
|
+
* | <= -3 | Reduce weight by minimum equipment increment |
|
|
147
|
+
*/
|
|
148
|
+
static calculateAutoRegulatedLoadTargets(previousSet, surplus, repRange, equipment) {
|
|
149
|
+
const targetReps = repRange.max;
|
|
150
|
+
let targetWeight = previousSet.plannedWeight;
|
|
151
|
+
if (surplus >= 2) {
|
|
152
|
+
// Accelerate: increase by ~4%
|
|
153
|
+
const fourPercentIncrease = targetWeight * 1.04;
|
|
154
|
+
const nextWeight = WorkoutEquipmentTypeService.findNearestWeight(equipment, fourPercentIncrease, 'up');
|
|
155
|
+
if (nextWeight !== null) {
|
|
156
|
+
targetWeight = nextWeight;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
else if (surplus >= 0) {
|
|
160
|
+
// Normal: increase by 2%
|
|
161
|
+
const nextWeight = this.findNextTwoPercentWeight(targetWeight, equipment);
|
|
162
|
+
if (nextWeight !== null) {
|
|
163
|
+
targetWeight = nextWeight;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
else if (surplus >= -2) {
|
|
167
|
+
// Hold weight - no change
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
// Reduce by minimum equipment increment
|
|
171
|
+
const reducedWeight = WorkoutEquipmentTypeService.findNearestWeight(equipment, targetWeight - 0.01, 'down');
|
|
172
|
+
if (reducedWeight !== null) {
|
|
173
|
+
targetWeight = reducedWeight;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return { targetWeight, targetReps };
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Checks whether a set has all the data needed for autoregulation calculations.
|
|
180
|
+
*/
|
|
181
|
+
static hasCompleteAutoRegulationData(set) {
|
|
182
|
+
return (set.actualReps != null &&
|
|
183
|
+
set.plannedReps != null &&
|
|
184
|
+
set.rir != null &&
|
|
185
|
+
set.plannedRir != null &&
|
|
186
|
+
set.plannedWeight != null);
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Calculates targets using the calibration-based formula (original behavior).
|
|
190
|
+
*/
|
|
191
|
+
static calculateCalibrationBasedTargets(params) {
|
|
192
|
+
const { exercise, calibration, equipment, microcycleIndex, firstMicrocycleRir, repRange, repRangeMidpoint } = params;
|
|
60
193
|
// For rep progression, calculate weight based on reps at microcycle 0
|
|
61
194
|
// For load progression, use max reps
|
|
62
195
|
let baseRepsForWeight;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkoutExerciseService.js","sourceRoot":"","sources":["../../../../src/services/workout/Exercise/WorkoutExerciseService.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EACjB,MAAM,+CAA+C,CAAC;
|
|
1
|
+
{"version":3,"file":"WorkoutExerciseService.js","sourceRoot":"","sources":["../../../../src/services/workout/Exercise/WorkoutExerciseService.ts"],"names":[],"mappings":"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"}
|