@sunsteel/contracts 0.64.0 → 0.65.0
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/dist/index.cjs +100 -0
- package/dist/index.d.cts +294 -171
- package/dist/index.d.ts +294 -171
- package/dist/index.js +89 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -44,6 +44,13 @@ __export(index_exports, {
|
|
|
44
44
|
COMEBACK_REQUIRED_ACTIVE_DAYS: () => COMEBACK_REQUIRED_ACTIVE_DAYS,
|
|
45
45
|
COMEBACK_SESSION_LOOKBACK: () => COMEBACK_SESSION_LOOKBACK,
|
|
46
46
|
COMEBACK_WINDOW_DAYS: () => COMEBACK_WINDOW_DAYS,
|
|
47
|
+
DELOAD_DEFAULT_DAYS: () => DELOAD_DEFAULT_DAYS,
|
|
48
|
+
DELOAD_DEFAULT_LOAD_REDUCTION: () => DELOAD_DEFAULT_LOAD_REDUCTION,
|
|
49
|
+
DELOAD_DEFAULT_SET_MODE: () => DELOAD_DEFAULT_SET_MODE,
|
|
50
|
+
DELOAD_LOAD_REDUCTIONS: () => DELOAD_LOAD_REDUCTIONS,
|
|
51
|
+
DELOAD_MAX_DAYS: () => DELOAD_MAX_DAYS,
|
|
52
|
+
DELOAD_NOT_LIGHTER: () => DELOAD_NOT_LIGHTER,
|
|
53
|
+
DELOAD_SET_MODES: () => DELOAD_SET_MODES,
|
|
47
54
|
EXERCISE_EQUIPMENT: () => EXERCISE_EQUIPMENT,
|
|
48
55
|
EXERCISE_MECHANICS: () => EXERCISE_MECHANICS,
|
|
49
56
|
FEATURED_PROFILE_ITEMS_MAX: () => FEATURED_PROFILE_ITEMS_MAX,
|
|
@@ -132,6 +139,8 @@ __export(index_exports, {
|
|
|
132
139
|
SHARED_ROUTINE_SOURCES: () => SHARED_ROUTINE_SOURCES,
|
|
133
140
|
STARRED_EXERCISES_MAX: () => STARRED_EXERCISES_MAX,
|
|
134
141
|
STREAK_MAX_GAP_DAYS: () => STREAK_MAX_GAP_DAYS,
|
|
142
|
+
TEMPORARY_OVERRIDE_KINDS: () => TEMPORARY_OVERRIDE_KINDS,
|
|
143
|
+
TEMPORARY_OVERRIDE_SOURCE_KINDS: () => TEMPORARY_OVERRIDE_SOURCE_KINDS,
|
|
135
144
|
TRAINING_DISCIPLINE_VALUES: () => TRAINING_DISCIPLINE_VALUES,
|
|
136
145
|
TRAINING_EVENT_TYPES: () => TRAINING_EVENT_TYPES,
|
|
137
146
|
TRAINING_EXPERIENCE_LEVEL_VALUES: () => TRAINING_EXPERIENCE_LEVEL_VALUES,
|
|
@@ -148,6 +157,8 @@ __export(index_exports, {
|
|
|
148
157
|
WEIGHT_UNITS: () => WEIGHT_UNITS,
|
|
149
158
|
WORKOUT_SESSION_STATUSES: () => WORKOUT_SESSION_STATUSES,
|
|
150
159
|
accountExportFileName: () => accountExportFileName,
|
|
160
|
+
applyDeload: () => applyDeload,
|
|
161
|
+
deloadLengthDays: () => deloadLengthDays,
|
|
151
162
|
isWithinQuietHours: () => isWithinQuietHours,
|
|
152
163
|
matchesDeletionConfirmation: () => matchesDeletionConfirmation,
|
|
153
164
|
resolveActiveTrainingBlock: () => resolveActiveTrainingBlock,
|
|
@@ -532,8 +543,34 @@ function resolveActiveTrainingBlock(blocks, date) {
|
|
|
532
543
|
}
|
|
533
544
|
function resolveRoutinePlan(routine, date) {
|
|
534
545
|
const block = resolveActiveTrainingBlock(routine.trainingBlocks, date);
|
|
546
|
+
const deload = resolveActiveTrainingBlock(routine.temporaryOverrides, date);
|
|
547
|
+
const blockInForce = block ? {
|
|
548
|
+
id: block.id,
|
|
549
|
+
seriesId: block.seriesId,
|
|
550
|
+
revision: block.revision,
|
|
551
|
+
name: block.name,
|
|
552
|
+
startDate: block.startDate,
|
|
553
|
+
endDate: block.endDate
|
|
554
|
+
} : null;
|
|
555
|
+
if (deload) {
|
|
556
|
+
return {
|
|
557
|
+
block: blockInForce,
|
|
558
|
+
override: {
|
|
559
|
+
id: deload.id,
|
|
560
|
+
kind: deload.kind,
|
|
561
|
+
startDate: deload.startDate,
|
|
562
|
+
endDate: deload.endDate
|
|
563
|
+
},
|
|
564
|
+
scheduleMode: deload.scheduleMode,
|
|
565
|
+
restDays: deload.restDays,
|
|
566
|
+
rotationWeekdays: deload.rotationWeekdays,
|
|
567
|
+
nextRotationDayId: deload.nextRotationDayId,
|
|
568
|
+
days: deload.days
|
|
569
|
+
};
|
|
570
|
+
}
|
|
535
571
|
if (block) {
|
|
536
572
|
return {
|
|
573
|
+
override: null,
|
|
537
574
|
block: {
|
|
538
575
|
id: block.id,
|
|
539
576
|
seriesId: block.seriesId,
|
|
@@ -551,6 +588,7 @@ function resolveRoutinePlan(routine, date) {
|
|
|
551
588
|
}
|
|
552
589
|
return {
|
|
553
590
|
block: null,
|
|
591
|
+
override: null,
|
|
554
592
|
scheduleMode: routine.scheduleMode,
|
|
555
593
|
restDays: routine.restDays,
|
|
556
594
|
rotationWeekdays: routine.rotationWeekdays ?? [],
|
|
@@ -559,6 +597,57 @@ function resolveRoutinePlan(routine, date) {
|
|
|
559
597
|
};
|
|
560
598
|
}
|
|
561
599
|
|
|
600
|
+
// src/deloads.ts
|
|
601
|
+
var DELOAD_MAX_DAYS = 14;
|
|
602
|
+
var DELOAD_DEFAULT_DAYS = 7;
|
|
603
|
+
var DELOAD_LOAD_REDUCTIONS = [0, 10, 20, 30, 40];
|
|
604
|
+
var DELOAD_DEFAULT_LOAD_REDUCTION = 10;
|
|
605
|
+
var DELOAD_SET_MODES = ["ALL", "HALF"];
|
|
606
|
+
var DELOAD_DEFAULT_SET_MODE = "HALF";
|
|
607
|
+
var TEMPORARY_OVERRIDE_KINDS = ["DELOAD"];
|
|
608
|
+
var TEMPORARY_OVERRIDE_SOURCE_KINDS = [
|
|
609
|
+
"BASELINE",
|
|
610
|
+
"TRAINING_BLOCK"
|
|
611
|
+
];
|
|
612
|
+
var DELOAD_NOT_LIGHTER = "Those options leave every set as it is: choose a lighter load or fewer sets";
|
|
613
|
+
var lighterOnGrid = (original, target, increment) => {
|
|
614
|
+
const step = increment > 0 ? increment : 2.5;
|
|
615
|
+
const stepped = Math.round(Math.round(target / step) * step * 1e3) / 1e3;
|
|
616
|
+
return stepped > 0 && stepped < original ? stepped : original;
|
|
617
|
+
};
|
|
618
|
+
function applyDeload(setup, options) {
|
|
619
|
+
const factor = 1 - options.loadReductionPercent / 100;
|
|
620
|
+
let lighter = false;
|
|
621
|
+
const days = setup.days.map((day) => ({
|
|
622
|
+
...day,
|
|
623
|
+
exercises: day.exercises.map((exercise) => {
|
|
624
|
+
const kept = options.setMode === "HALF" ? exercise.sets.slice(0, Math.ceil(exercise.sets.length / 2)) : exercise.sets;
|
|
625
|
+
if (kept.length < exercise.sets.length) lighter = true;
|
|
626
|
+
return {
|
|
627
|
+
...exercise,
|
|
628
|
+
sets: kept.map((set) => {
|
|
629
|
+
if (typeof set.weight !== "number" || set.weight <= 0) {
|
|
630
|
+
return { ...set };
|
|
631
|
+
}
|
|
632
|
+
if (factor === 1) return { ...set };
|
|
633
|
+
const weight = lighterOnGrid(
|
|
634
|
+
set.weight,
|
|
635
|
+
set.weight * factor,
|
|
636
|
+
exercise.minWeightIncrement
|
|
637
|
+
);
|
|
638
|
+
if (weight < set.weight) lighter = true;
|
|
639
|
+
return { ...set, weight };
|
|
640
|
+
})
|
|
641
|
+
};
|
|
642
|
+
})
|
|
643
|
+
}));
|
|
644
|
+
return lighter ? { ...setup, days } : null;
|
|
645
|
+
}
|
|
646
|
+
function deloadLengthDays(startDate, endDate) {
|
|
647
|
+
const ms = (date) => Date.parse(`${date}T00:00:00Z`);
|
|
648
|
+
return Math.round((ms(endDate) - ms(startDate)) / 864e5) + 1;
|
|
649
|
+
}
|
|
650
|
+
|
|
562
651
|
// src/routine-sharing.ts
|
|
563
652
|
var ROUTINE_VISIBILITY_VALUES = [
|
|
564
653
|
"PRIVATE",
|
|
@@ -798,6 +887,13 @@ function accountExportFileName(username, exportedAt) {
|
|
|
798
887
|
COMEBACK_REQUIRED_ACTIVE_DAYS,
|
|
799
888
|
COMEBACK_SESSION_LOOKBACK,
|
|
800
889
|
COMEBACK_WINDOW_DAYS,
|
|
890
|
+
DELOAD_DEFAULT_DAYS,
|
|
891
|
+
DELOAD_DEFAULT_LOAD_REDUCTION,
|
|
892
|
+
DELOAD_DEFAULT_SET_MODE,
|
|
893
|
+
DELOAD_LOAD_REDUCTIONS,
|
|
894
|
+
DELOAD_MAX_DAYS,
|
|
895
|
+
DELOAD_NOT_LIGHTER,
|
|
896
|
+
DELOAD_SET_MODES,
|
|
801
897
|
EXERCISE_EQUIPMENT,
|
|
802
898
|
EXERCISE_MECHANICS,
|
|
803
899
|
FEATURED_PROFILE_ITEMS_MAX,
|
|
@@ -886,6 +982,8 @@ function accountExportFileName(username, exportedAt) {
|
|
|
886
982
|
SHARED_ROUTINE_SOURCES,
|
|
887
983
|
STARRED_EXERCISES_MAX,
|
|
888
984
|
STREAK_MAX_GAP_DAYS,
|
|
985
|
+
TEMPORARY_OVERRIDE_KINDS,
|
|
986
|
+
TEMPORARY_OVERRIDE_SOURCE_KINDS,
|
|
889
987
|
TRAINING_DISCIPLINE_VALUES,
|
|
890
988
|
TRAINING_EVENT_TYPES,
|
|
891
989
|
TRAINING_EXPERIENCE_LEVEL_VALUES,
|
|
@@ -902,6 +1000,8 @@ function accountExportFileName(username, exportedAt) {
|
|
|
902
1000
|
WEIGHT_UNITS,
|
|
903
1001
|
WORKOUT_SESSION_STATUSES,
|
|
904
1002
|
accountExportFileName,
|
|
1003
|
+
applyDeload,
|
|
1004
|
+
deloadLengthDays,
|
|
905
1005
|
isWithinQuietHours,
|
|
906
1006
|
matchesDeletionConfirmation,
|
|
907
1007
|
resolveActiveTrainingBlock,
|