@dofek/training 0.1.0 → 0.1.2
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/README.md +15 -2
- package/dist/activity-heatmap.d.ts +19 -0
- package/dist/activity-heatmap.d.ts.map +1 -0
- package/dist/activity-heatmap.js +74 -0
- package/dist/activity-heatmap.js.map +1 -0
- package/dist/activity-icons.d.ts.map +1 -1
- package/dist/activity-icons.js +2 -1
- package/dist/activity-icons.js.map +1 -1
- package/dist/activity-types.d.ts +524 -0
- package/dist/activity-types.d.ts.map +1 -0
- package/dist/activity-types.js +399 -0
- package/dist/activity-types.js.map +1 -0
- package/dist/derived-cardio.d.ts.map +1 -1
- package/dist/derived-cardio.js +1 -6
- package/dist/derived-cardio.js.map +1 -1
- package/dist/endurance-types.d.ts +5 -5
- package/dist/endurance-types.d.ts.map +1 -1
- package/dist/endurance-types.js +4 -14
- package/dist/endurance-types.js.map +1 -1
- package/dist/terminology.d.ts +70 -0
- package/dist/terminology.d.ts.map +1 -0
- package/dist/terminology.js +64 -0
- package/dist/terminology.js.map +1 -0
- package/dist/training-distribution.d.ts +1 -0
- package/dist/training-distribution.d.ts.map +1 -1
- package/dist/training-distribution.js +11 -7
- package/dist/training-distribution.js.map +1 -1
- package/dist/training.d.ts +13 -17
- package/dist/training.d.ts.map +1 -1
- package/dist/training.js +17 -162
- package/dist/training.js.map +1 -1
- package/dist/workout-recommendation.d.ts +0 -1
- package/dist/workout-recommendation.d.ts.map +1 -1
- package/dist/workout-recommendation.js +2 -7
- package/dist/workout-recommendation.js.map +1 -1
- package/package.json +5 -7
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* User-facing names for training metrics. Plain labels belong in headings and
|
|
3
|
+
* chart series; technical names and calculation descriptions belong in details.
|
|
4
|
+
*/
|
|
5
|
+
export const TRAINING_TERMINOLOGY = {
|
|
6
|
+
intensityDistribution: {
|
|
7
|
+
plainLabel: "Heart-rate zone distribution",
|
|
8
|
+
plainDescription: "Shows how recorded heart-rate time is distributed across effort zones.",
|
|
9
|
+
technicalName: "Karvonen five-zone model",
|
|
10
|
+
details: "Heart-rate time is grouped into five intensity zones using heart-rate reserve.",
|
|
11
|
+
},
|
|
12
|
+
workloadRatio: {
|
|
13
|
+
plainLabel: "Recent-to-baseline workload ratio",
|
|
14
|
+
plainDescription: "Compares recent training load with the latest baseline period.",
|
|
15
|
+
technicalName: "Acute-to-chronic workload ratio (ACWR)",
|
|
16
|
+
details: "Compares load from the latest 7 days with an equivalent 7-day baseline from the latest 28 days. This is descriptive context, not a safe range or an injury prediction.",
|
|
17
|
+
},
|
|
18
|
+
normalizedPower: {
|
|
19
|
+
plainLabel: "Effort-adjusted power",
|
|
20
|
+
plainDescription: "Power adjusted to reflect the extra effort of variable cycling.",
|
|
21
|
+
technicalName: "Normalized Power",
|
|
22
|
+
details: "Uses 30-second rolling average power and fourth-power weighting to represent variable cycling effort.",
|
|
23
|
+
},
|
|
24
|
+
criticalPower: {
|
|
25
|
+
plainLabel: "Sustainable cycling power",
|
|
26
|
+
plainDescription: "Shows the cycling power estimated for longer efforts.",
|
|
27
|
+
technicalName: "Critical Power",
|
|
28
|
+
details: "A power-duration model estimates the longer-effort power level and the finite work available above it.",
|
|
29
|
+
},
|
|
30
|
+
anaerobicWorkCapacity: {
|
|
31
|
+
plainLabel: "Short-burst power reserve",
|
|
32
|
+
plainDescription: "Shows the estimated power reserve available for short bursts.",
|
|
33
|
+
technicalName: "W′ (anaerobic work capacity)",
|
|
34
|
+
details: "The model's finite work term represents the estimated power reserve above sustainable power.",
|
|
35
|
+
},
|
|
36
|
+
polarization: {
|
|
37
|
+
plainLabel: "Easy-to-hard training balance",
|
|
38
|
+
plainDescription: "Shows the balance of easy, threshold, and high-intensity cycling.",
|
|
39
|
+
valueLabel: "Easy-to-hard balance",
|
|
40
|
+
technicalName: "Polarization Index (Treff three-zone model)",
|
|
41
|
+
details: "Summarizes the recorded distribution of easy, threshold, and high-intensity cycling.",
|
|
42
|
+
},
|
|
43
|
+
monotony: {
|
|
44
|
+
plainLabel: "Training variety and total load",
|
|
45
|
+
plainDescription: "Shows how varied your weekly training load is.",
|
|
46
|
+
valueLabel: "Training variety",
|
|
47
|
+
strainLabel: "Weekly load strain",
|
|
48
|
+
technicalName: "Training Monotony (Foster method)",
|
|
49
|
+
details: "Describes how evenly cycling training load is distributed across each calendar week.",
|
|
50
|
+
},
|
|
51
|
+
gradeAdjustedPace: {
|
|
52
|
+
plainLabel: "Effort-adjusted pace for grade",
|
|
53
|
+
plainDescription: "Shows walking or hiking pace adjusted for slopes.",
|
|
54
|
+
technicalName: "Grade-adjusted pace (Minetti slope-cost model)",
|
|
55
|
+
details: "Adjusts walking or hiking pace for the estimated energy cost of the recorded slope.",
|
|
56
|
+
},
|
|
57
|
+
estimatedOneRepMax: {
|
|
58
|
+
plainLabel: "Estimated single-rep strength",
|
|
59
|
+
plainDescription: "Shows the estimated maximum weight for one repetition.",
|
|
60
|
+
technicalName: "Estimated 1-Rep Max (e1RM)",
|
|
61
|
+
details: "Uses the Epley formula: estimated max = weight × (1 + repetitions ÷ 30).",
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
//# sourceMappingURL=terminology.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminology.js","sourceRoot":"","sources":["../src/terminology.ts"],"names":[],"mappings":"AAOA;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,qBAAqB,EAAE;QACrB,UAAU,EAAE,8BAA8B;QAC1C,gBAAgB,EAAE,wEAAwE;QAC1F,aAAa,EAAE,0BAA0B;QACzC,OAAO,EAAE,gFAAgF;KAC1F;IACD,aAAa,EAAE;QACb,UAAU,EAAE,mCAAmC;QAC/C,gBAAgB,EAAE,gEAAgE;QAClF,aAAa,EAAE,wCAAwC;QACvD,OAAO,EACL,wKAAwK;KAC3K;IACD,eAAe,EAAE;QACf,UAAU,EAAE,uBAAuB;QACnC,gBAAgB,EAAE,iEAAiE;QACnF,aAAa,EAAE,kBAAkB;QACjC,OAAO,EACL,uGAAuG;KAC1G;IACD,aAAa,EAAE;QACb,UAAU,EAAE,2BAA2B;QACvC,gBAAgB,EAAE,uDAAuD;QACzE,aAAa,EAAE,gBAAgB;QAC/B,OAAO,EACL,wGAAwG;KAC3G;IACD,qBAAqB,EAAE;QACrB,UAAU,EAAE,2BAA2B;QACvC,gBAAgB,EAAE,+DAA+D;QACjF,aAAa,EAAE,8BAA8B;QAC7C,OAAO,EACL,8FAA8F;KACjG;IACD,YAAY,EAAE;QACZ,UAAU,EAAE,+BAA+B;QAC3C,gBAAgB,EAAE,mEAAmE;QACrF,UAAU,EAAE,sBAAsB;QAClC,aAAa,EAAE,6CAA6C;QAC5D,OAAO,EAAE,sFAAsF;KAChG;IACD,QAAQ,EAAE;QACR,UAAU,EAAE,iCAAiC;QAC7C,gBAAgB,EAAE,gDAAgD;QAClE,UAAU,EAAE,kBAAkB;QAC9B,WAAW,EAAE,oBAAoB;QACjC,aAAa,EAAE,mCAAmC;QAClD,OAAO,EAAE,sFAAsF;KAChG;IACD,iBAAiB,EAAE;QACjB,UAAU,EAAE,gCAAgC;QAC5C,gBAAgB,EAAE,mDAAmD;QACrE,aAAa,EAAE,gDAAgD;QAC/D,OAAO,EAAE,qFAAqF;KAC/F;IACD,kBAAkB,EAAE;QAClB,UAAU,EAAE,+BAA+B;QAC3C,gBAAgB,EAAE,wDAAwD;QAC1E,aAAa,EAAE,4BAA4B;QAC3C,OAAO,EAAE,0EAA0E;KACpF;CACmF,CAAC"}
|
|
@@ -38,6 +38,7 @@ export interface TreffPolarizationWeek extends TreffPolarizationWeekInput {
|
|
|
38
38
|
statusLabel: string;
|
|
39
39
|
explanation: string;
|
|
40
40
|
}
|
|
41
|
+
export declare const DEFAULT_POLARIZATION_THRESHOLD = 2;
|
|
41
42
|
export declare function buildKarvonenIntensityDistribution(weeks: KarvonenZoneWeek[]): IntensityDistribution;
|
|
42
43
|
export declare function buildTreffPolarizationWeek(input: TreffPolarizationWeekInput): TreffPolarizationWeek;
|
|
43
44
|
//# sourceMappingURL=training-distribution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"training-distribution.d.ts","sourceRoot":"","sources":["../src/training-distribution.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,aAAa,EAAE,WAAW,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,yBAAyB,EAAE,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,eAAe,GAAG,mBAAmB,CAAC;AAErF,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,qBAAsB,SAAQ,0BAA0B;IACvE,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE;QACf,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"training-distribution.d.ts","sourceRoot":"","sources":["../src/training-distribution.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,oBAAoB,CAAC;IAC5B,aAAa,EAAE,WAAW,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,yBAAyB,EAAE,CAAC;IACnC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,eAAe,GAAG,mBAAmB,CAAC;AAErF,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,qBAAsB,SAAQ,0BAA0B;IACvE,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE;QACf,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC;IACF,MAAM,EAAE,kBAAkB,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAKD,eAAO,MAAM,8BAA8B,IAAI,CAAC;AAMhD,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,gBAAgB,EAAE,GACxB,qBAAqB,CA0BvB;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,0BAA0B,GAChC,qBAAqB,CA4CvB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { HEART_RATE_ZONES } from "@dofek/zones/zones";
|
|
2
2
|
const INTENSITY_EXPLANATION = "A descriptive view of endurance training time across the Karvonen five-zone heart-rate model. It does not classify training polarization.";
|
|
3
|
+
export const DEFAULT_POLARIZATION_THRESHOLD = 2;
|
|
3
4
|
function roundedPercent(seconds, totalSeconds) {
|
|
4
5
|
return totalSeconds > 0 ? Math.round((seconds / totalSeconds) * 1000) / 10 : 0;
|
|
5
6
|
}
|
|
@@ -37,23 +38,26 @@ export function buildTreffPolarizationWeek(input) {
|
|
|
37
38
|
z3: roundedPercent(input.z3Seconds, totalSeconds),
|
|
38
39
|
};
|
|
39
40
|
if (input.polarizationIndex === null) {
|
|
41
|
+
const explanation = input.z3Seconds > input.z1Seconds
|
|
42
|
+
? "The index is not calculated because recorded Zone 3 time exceeds Zone 1, which is outside Treff's valid definition."
|
|
43
|
+
: "The index is not calculated because Dofek requires recorded cycling time in all three Treff heart-rate zones.";
|
|
40
44
|
return {
|
|
41
45
|
...input,
|
|
42
46
|
totalSeconds,
|
|
43
47
|
zonePercentages,
|
|
44
48
|
status: "insufficient_data",
|
|
45
|
-
statusLabel: "
|
|
46
|
-
explanation
|
|
49
|
+
statusLabel: "Not calculated",
|
|
50
|
+
explanation,
|
|
47
51
|
};
|
|
48
52
|
}
|
|
49
|
-
if (input.polarizationIndex >
|
|
53
|
+
if (input.polarizationIndex > DEFAULT_POLARIZATION_THRESHOLD) {
|
|
50
54
|
return {
|
|
51
55
|
...input,
|
|
52
56
|
totalSeconds,
|
|
53
57
|
zonePercentages,
|
|
54
58
|
status: "polarized",
|
|
55
|
-
statusLabel: "
|
|
56
|
-
explanation: "This cycling
|
|
59
|
+
statusLabel: "Matches polarized-pattern heuristic",
|
|
60
|
+
explanation: "This week's recorded cycling distribution is above Treff's descriptive 2.00 heuristic. It is not a physiological or medical assessment.",
|
|
57
61
|
};
|
|
58
62
|
}
|
|
59
63
|
return {
|
|
@@ -61,8 +65,8 @@ export function buildTreffPolarizationWeek(input) {
|
|
|
61
65
|
totalSeconds,
|
|
62
66
|
zonePercentages,
|
|
63
67
|
status: "not_polarized",
|
|
64
|
-
statusLabel: "
|
|
65
|
-
explanation: "This cycling
|
|
68
|
+
statusLabel: "Does not match polarized-pattern heuristic",
|
|
69
|
+
explanation: "This week's recorded cycling distribution is at or below Treff's descriptive 2.00 heuristic. It is not a physiological or medical assessment.",
|
|
66
70
|
};
|
|
67
71
|
}
|
|
68
72
|
//# sourceMappingURL=training-distribution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"training-distribution.js","sourceRoot":"","sources":["../src/training-distribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAgDtD,MAAM,qBAAqB,GACzB,2IAA2I,CAAC;AAE9I,SAAS,cAAc,CAAC,OAAe,EAAE,YAAoB;IAC3D,OAAO,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,KAAyB;IAEzB,MAAM,WAAW,GAAG;QAClB,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACjD,CAAC;IACF,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;IAE5E,OAAO;QACL,KAAK,EAAE,oBAAoB;QAC3B,aAAa,EAAE,WAAW;QAC1B,YAAY;QACZ,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,OAAO;gBACL,IAAI,EAAE,cAAc,CAAC,IAAI;gBACzB,KAAK,EAAE,cAAc,CAAC,KAAK;gBAC3B,OAAO;gBACP,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC;aAC/C,CAAC;QACJ,CAAC,CAAC;QACF,WAAW,EAAE,qBAAqB;KACnC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,KAAiC;IAEjC,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACzE,MAAM,eAAe,GAAG;QACtB,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC;QACjD,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC;QACjD,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC;KAClD,CAAC;IAEF,IAAI,KAAK,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;QACrC,OAAO;YACL,GAAG,KAAK;YACR,YAAY;YACZ,eAAe;YACf,MAAM,EAAE,mBAAmB;YAC3B,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"training-distribution.js","sourceRoot":"","sources":["../src/training-distribution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAgDtD,MAAM,qBAAqB,GACzB,2IAA2I,CAAC;AAE9I,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC;AAEhD,SAAS,cAAc,CAAC,OAAe,EAAE,YAAoB;IAC3D,OAAO,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,kCAAkC,CAChD,KAAyB;IAEzB,MAAM,WAAW,GAAG;QAClB,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QAChD,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KACjD,CAAC;IACF,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,GAAG,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;IAE5E,OAAO;QACL,KAAK,EAAE,oBAAoB;QAC3B,aAAa,EAAE,WAAW;QAC1B,YAAY;QACZ,KAAK,EAAE,gBAAgB,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,WAAW,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,OAAO;gBACL,IAAI,EAAE,cAAc,CAAC,IAAI;gBACzB,KAAK,EAAE,cAAc,CAAC,KAAK;gBAC3B,OAAO;gBACP,OAAO,EAAE,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC;aAC/C,CAAC;QACJ,CAAC,CAAC;QACF,WAAW,EAAE,qBAAqB;KACnC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,KAAiC;IAEjC,MAAM,YAAY,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;IACzE,MAAM,eAAe,GAAG;QACtB,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC;QACjD,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC;QACjD,EAAE,EAAE,cAAc,CAAC,KAAK,CAAC,SAAS,EAAE,YAAY,CAAC;KAClD,CAAC;IAEF,IAAI,KAAK,CAAC,iBAAiB,KAAK,IAAI,EAAE,CAAC;QACrC,MAAM,WAAW,GACf,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS;YAC/B,CAAC,CAAC,qHAAqH;YACvH,CAAC,CAAC,+GAA+G,CAAC;QACtH,OAAO;YACL,GAAG,KAAK;YACR,YAAY;YACZ,eAAe;YACf,MAAM,EAAE,mBAAmB;YAC3B,WAAW,EAAE,gBAAgB;YAC7B,WAAW;SACZ,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,iBAAiB,GAAG,8BAA8B,EAAE,CAAC;QAC7D,OAAO;YACL,GAAG,KAAK;YACR,YAAY;YACZ,eAAe;YACf,MAAM,EAAE,WAAW;YACnB,WAAW,EAAE,qCAAqC;YAClD,WAAW,EACT,yIAAyI;SAC5I,CAAC;IACJ,CAAC;IAED,OAAO;QACL,GAAG,KAAK;QACR,YAAY;QACZ,eAAe;QACf,MAAM,EAAE,eAAe;QACvB,WAAW,EAAE,4CAA4C;QACzD,WAAW,EACT,+IAA+I;KAClJ,CAAC;AACJ,CAAC"}
|
package/dist/training.d.ts
CHANGED
|
@@ -1,16 +1,12 @@
|
|
|
1
|
+
import { type ActivityModality, type LegacyActivityType, type ProviderActivityType } from "./activity-types.ts";
|
|
1
2
|
export declare const OTHER_ACTIVITY_TYPE = "__other__";
|
|
2
|
-
|
|
3
|
-
* Superset of all valid internal activity types across all providers.
|
|
4
|
-
* Providers map their domain-specific types to one of these canonical values.
|
|
5
|
-
*/
|
|
6
|
-
export declare const CANONICAL_ACTIVITY_TYPES: readonly ["cycling", "road_cycling", "mountain_biking", "gravel_cycling", "indoor_cycling", "virtual_cycling", "e_bike_cycling", "cyclocross", "track_cycling", "bmx", "running", "swimming", "walking", "hiking", "strength", "strength_training", "functional_strength", "yoga", "pilates", "elliptical", "rowing", "skiing", "skating", "climbing", "cardio", "hiit", "cross_training", "trail_running", "stair_climbing", "stairmaster", "stretching", "dance", "martial_arts", "tennis", "basketball", "soccer", "golf", "ice_hockey", "snowboarding", "rock_climbing", "surfing", "kayaking", "functional_fitness", "bootcamp", "boxing", "core", "aqua_fitness", "circuit_training", "group_exercise", "triathlon", "dancing", "american_football", "archery", "australian_football", "badminton", "baseball", "bowling", "cricket", "curling", "equestrian", "fencing", "fishing", "gymnastics", "handball", "hockey", "hunting", "lacrosse", "mind_and_body", "mixed_cardio", "paddle_sports", "play", "preparation_and_recovery", "racquetball", "rugby", "sailing", "snow_sports", "softball", "squash", "table_tennis", "track_and_field", "volleyball", "water_fitness", "water_polo", "water_sports", "wrestling", "barre", "core_training", "flexibility", "jump_rope", "kickboxing", "stairs", "step_training", "wheelchair_walk", "wheelchair_run", "tai_chi", "mixed_metabolic_cardio", "hand_cycling", "disc_sports", "fitness_gaming", "cardio_dance", "social_dance", "paddle_racquet", "cooldown", "transition", "underwater_diving", "cross_country_skiing", "downhill_skiing", "breathwork", "meditation", "paddleboarding", "snowshoeing", "pickleball", "padel", "football", "multisport", "disc_golf", "skydiving", "paragliding", "diving", "snorkeling", "navigation", "geocaching", "paddling", "gym", "open_water_swimming", "other"];
|
|
7
|
-
export type CanonicalActivityType = (typeof CANONICAL_ACTIVITY_TYPES)[number];
|
|
3
|
+
export declare const STRENGTH_ACTIVITY_TYPES: readonly ["strength"];
|
|
8
4
|
/**
|
|
9
5
|
* All canonical activity types considered "cycling" for consolidated views.
|
|
10
6
|
* Individual activities show the specific subtype, but aggregated views
|
|
11
7
|
* (weekly volume, PMC, cycling page) treat them as one sport.
|
|
12
8
|
*/
|
|
13
|
-
export declare const CYCLING_ACTIVITY_TYPES: readonly ["cycling"
|
|
9
|
+
export declare const CYCLING_ACTIVITY_TYPES: readonly ["cycling"];
|
|
14
10
|
export type CyclingActivityType = (typeof CYCLING_ACTIVITY_TYPES)[number];
|
|
15
11
|
/** Check whether an activity type is a cycling variant. */
|
|
16
12
|
export declare function isCyclingActivity(activityType: string): activityType is CyclingActivityType;
|
|
@@ -22,24 +18,24 @@ export declare function cadenceAxisLabel(activityType: string): string;
|
|
|
22
18
|
* Creates a mapping function from provider-specific types to canonical types.
|
|
23
19
|
* Unknown provider types default to "other".
|
|
24
20
|
*/
|
|
25
|
-
export declare function createActivityTypeMapper<K extends string | number>(providerMappings: Record<K,
|
|
21
|
+
export declare function createActivityTypeMapper<K extends string | number>(providerMappings: Record<K, LegacyActivityType>): (providerType: K) => ProviderActivityType;
|
|
26
22
|
/** Strava sport_type → canonical activity type */
|
|
27
|
-
export declare const STRAVA_ACTIVITY_TYPE_MAP: Record<string,
|
|
23
|
+
export declare const STRAVA_ACTIVITY_TYPE_MAP: Record<string, LegacyActivityType>;
|
|
28
24
|
/** Wahoo workout_type_id (numeric) → canonical activity type */
|
|
29
|
-
export declare const WAHOO_WORKOUT_TYPE_MAP: Record<number,
|
|
25
|
+
export declare const WAHOO_WORKOUT_TYPE_MAP: Record<number, LegacyActivityType>;
|
|
30
26
|
/** Polar sport (lowercased) → canonical activity type */
|
|
31
|
-
export declare const POLAR_SPORT_MAP: Record<string,
|
|
27
|
+
export declare const POLAR_SPORT_MAP: Record<string, LegacyActivityType>;
|
|
32
28
|
/** Garmin activityType → canonical activity type */
|
|
33
|
-
export declare const GARMIN_ACTIVITY_TYPE_MAP: Record<string,
|
|
29
|
+
export declare const GARMIN_ACTIVITY_TYPE_MAP: Record<string, LegacyActivityType>;
|
|
34
30
|
/** Oura activity (lowercased) → canonical activity type */
|
|
35
|
-
export declare const OURA_ACTIVITY_TYPE_MAP: Record<string,
|
|
31
|
+
export declare const OURA_ACTIVITY_TYPE_MAP: Record<string, LegacyActivityType>;
|
|
36
32
|
/** RideWithGPS activity_type → canonical activity type */
|
|
37
|
-
export declare const RIDE_WITH_GPS_ACTIVITY_TYPE_MAP: Record<string,
|
|
33
|
+
export declare const RIDE_WITH_GPS_ACTIVITY_TYPE_MAP: Record<string, LegacyActivityType>;
|
|
38
34
|
/** Apple Health HKWorkoutActivityType → normalized lowercase name */
|
|
39
|
-
export declare const APPLE_HEALTH_WORKOUT_TYPE_MAP: Record<string,
|
|
35
|
+
export declare const APPLE_HEALTH_WORKOUT_TYPE_MAP: Record<string, LegacyActivityType>;
|
|
40
36
|
export interface WeeklyVolumeChartRow {
|
|
41
37
|
week: string;
|
|
42
|
-
|
|
38
|
+
canonical_type: string;
|
|
43
39
|
count: number;
|
|
44
40
|
hours: number;
|
|
45
41
|
}
|
|
@@ -49,7 +45,7 @@ export interface DailyLoadRow {
|
|
|
49
45
|
}
|
|
50
46
|
export type VerticalAscentActivityTypeGroup = "road_cycling" | "mountain_biking" | "gravel_cycling" | "other_cycling";
|
|
51
47
|
export declare function formatActivityTypeLabel(activityType: string): string;
|
|
52
|
-
export declare function getVerticalAscentActivityTypeGroup(
|
|
48
|
+
export declare function getVerticalAscentActivityTypeGroup(modality: ActivityModality | null): VerticalAscentActivityTypeGroup;
|
|
53
49
|
export declare function formatVerticalAscentActivityTypeGroupLabel(activityTypeGroup: VerticalAscentActivityTypeGroup): string;
|
|
54
50
|
export declare function collapseWeeklyVolumeActivityTypes(rows: WeeklyVolumeChartRow[], maxLegendItems?: number): WeeklyVolumeChartRow[];
|
|
55
51
|
/**
|
package/dist/training.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"training.d.ts","sourceRoot":"","sources":["../src/training.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"training.d.ts","sourceRoot":"","sources":["../src/training.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,gBAAgB,EACrB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EAE1B,MAAM,qBAAqB,CAAC;AAE7B,eAAO,MAAM,mBAAmB,cAAc,CAAC;AAE/C,eAAO,MAAM,uBAAuB,uBAAwB,CAAC;AAM7D;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,sBAAuB,CAAC;AAE3D,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1E,2DAA2D;AAC3D,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,IAAI,mBAAmB,CAE3F;AAED,uDAAuD;AACvD,wBAAgB,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,KAAK,GAAG,WAAW,CAErE;AAED,uCAAuC;AACvC,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAE7D;AAUD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAChE,gBAAgB,EAAE,MAAM,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAC9C,CAAC,YAAY,EAAE,CAAC,KAAK,oBAAoB,CAI3C;AAMD,kDAAkD;AAClD,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CA2BvE,CAAC;AAEF,gEAAgE;AAChE,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAerE,CAAC;AAEF,yDAAyD;AACzD,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CA2C9D,CAAC;AAEF,oDAAoD;AACpD,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CA4BvE,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAgBrE,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,+BAA+B,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAkB9E,CAAC;AAEF,qEAAqE;AACrE,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAoF5E,CAAC;AAEF,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAiCD,MAAM,MAAM,+BAA+B,GACvC,cAAc,GACd,iBAAiB,GACjB,gBAAgB,GAChB,eAAe,CAAC;AA8BpB,wBAAgB,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAMpE;AAED,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,gBAAgB,GAAG,IAAI,GAChC,+BAA+B,CAKjC;AAED,wBAAgB,0CAA0C,CACxD,iBAAiB,EAAE,+BAA+B,GACjD,MAAM,CAER;AAED,wBAAgB,iCAAiC,CAC/C,IAAI,EAAE,oBAAoB,EAAE,EAC5B,cAAc,SAAI,GACjB,oBAAoB,EAAE,CAkDxB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,SAAS,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,IAAI,CAGjF"}
|
package/dist/training.js
CHANGED
|
@@ -1,141 +1,6 @@
|
|
|
1
|
+
import { resolveProviderActivityType, } from "./activity-types.js";
|
|
1
2
|
export const OTHER_ACTIVITY_TYPE = "__other__";
|
|
2
|
-
|
|
3
|
-
// Canonical activity types
|
|
4
|
-
// ============================================================
|
|
5
|
-
/**
|
|
6
|
-
* Superset of all valid internal activity types across all providers.
|
|
7
|
-
* Providers map their domain-specific types to one of these canonical values.
|
|
8
|
-
*/
|
|
9
|
-
export const CANONICAL_ACTIVITY_TYPES = [
|
|
10
|
-
"cycling",
|
|
11
|
-
"road_cycling",
|
|
12
|
-
"mountain_biking",
|
|
13
|
-
"gravel_cycling",
|
|
14
|
-
"indoor_cycling",
|
|
15
|
-
"virtual_cycling",
|
|
16
|
-
"e_bike_cycling",
|
|
17
|
-
"cyclocross",
|
|
18
|
-
"track_cycling",
|
|
19
|
-
"bmx",
|
|
20
|
-
"running",
|
|
21
|
-
"swimming",
|
|
22
|
-
"walking",
|
|
23
|
-
"hiking",
|
|
24
|
-
"strength",
|
|
25
|
-
"strength_training",
|
|
26
|
-
"functional_strength",
|
|
27
|
-
"yoga",
|
|
28
|
-
"pilates",
|
|
29
|
-
"elliptical",
|
|
30
|
-
"rowing",
|
|
31
|
-
"skiing",
|
|
32
|
-
"skating",
|
|
33
|
-
"climbing",
|
|
34
|
-
"cardio",
|
|
35
|
-
"hiit",
|
|
36
|
-
"cross_training",
|
|
37
|
-
"trail_running",
|
|
38
|
-
"stair_climbing",
|
|
39
|
-
"stairmaster",
|
|
40
|
-
"stretching",
|
|
41
|
-
"dance",
|
|
42
|
-
"martial_arts",
|
|
43
|
-
"tennis",
|
|
44
|
-
"basketball",
|
|
45
|
-
"soccer",
|
|
46
|
-
"golf",
|
|
47
|
-
"ice_hockey",
|
|
48
|
-
"snowboarding",
|
|
49
|
-
"rock_climbing",
|
|
50
|
-
"surfing",
|
|
51
|
-
"kayaking",
|
|
52
|
-
"functional_fitness",
|
|
53
|
-
"bootcamp",
|
|
54
|
-
"boxing",
|
|
55
|
-
"core",
|
|
56
|
-
"aqua_fitness",
|
|
57
|
-
"circuit_training",
|
|
58
|
-
"group_exercise",
|
|
59
|
-
"triathlon",
|
|
60
|
-
"dancing",
|
|
61
|
-
// Apple Health granular types
|
|
62
|
-
"american_football",
|
|
63
|
-
"archery",
|
|
64
|
-
"australian_football",
|
|
65
|
-
"badminton",
|
|
66
|
-
"baseball",
|
|
67
|
-
"bowling",
|
|
68
|
-
"cricket",
|
|
69
|
-
"curling",
|
|
70
|
-
"equestrian",
|
|
71
|
-
"fencing",
|
|
72
|
-
"fishing",
|
|
73
|
-
"gymnastics",
|
|
74
|
-
"handball",
|
|
75
|
-
"hockey",
|
|
76
|
-
"hunting",
|
|
77
|
-
"lacrosse",
|
|
78
|
-
"mind_and_body",
|
|
79
|
-
"mixed_cardio",
|
|
80
|
-
"paddle_sports",
|
|
81
|
-
"play",
|
|
82
|
-
"preparation_and_recovery",
|
|
83
|
-
"racquetball",
|
|
84
|
-
"rugby",
|
|
85
|
-
"sailing",
|
|
86
|
-
"snow_sports",
|
|
87
|
-
"softball",
|
|
88
|
-
"squash",
|
|
89
|
-
"table_tennis",
|
|
90
|
-
"track_and_field",
|
|
91
|
-
"volleyball",
|
|
92
|
-
"water_fitness",
|
|
93
|
-
"water_polo",
|
|
94
|
-
"water_sports",
|
|
95
|
-
"wrestling",
|
|
96
|
-
"barre",
|
|
97
|
-
"core_training",
|
|
98
|
-
"flexibility",
|
|
99
|
-
"jump_rope",
|
|
100
|
-
"kickboxing",
|
|
101
|
-
"stairs",
|
|
102
|
-
"step_training",
|
|
103
|
-
"wheelchair_walk",
|
|
104
|
-
"wheelchair_run",
|
|
105
|
-
"tai_chi",
|
|
106
|
-
"mixed_metabolic_cardio",
|
|
107
|
-
"hand_cycling",
|
|
108
|
-
"disc_sports",
|
|
109
|
-
"fitness_gaming",
|
|
110
|
-
"cardio_dance",
|
|
111
|
-
"social_dance",
|
|
112
|
-
"paddle_racquet",
|
|
113
|
-
"cooldown",
|
|
114
|
-
"transition",
|
|
115
|
-
"underwater_diving",
|
|
116
|
-
"cross_country_skiing",
|
|
117
|
-
"downhill_skiing",
|
|
118
|
-
// Provider-specific types (Garmin, Peloton, Komoot, Decathlon)
|
|
119
|
-
"breathwork",
|
|
120
|
-
"meditation",
|
|
121
|
-
"paddleboarding",
|
|
122
|
-
"snowshoeing",
|
|
123
|
-
"pickleball",
|
|
124
|
-
"padel",
|
|
125
|
-
"football",
|
|
126
|
-
"multisport",
|
|
127
|
-
"disc_golf",
|
|
128
|
-
"skydiving",
|
|
129
|
-
"paragliding",
|
|
130
|
-
"diving",
|
|
131
|
-
"snorkeling",
|
|
132
|
-
"navigation",
|
|
133
|
-
"geocaching",
|
|
134
|
-
"paddling",
|
|
135
|
-
"gym",
|
|
136
|
-
"open_water_swimming",
|
|
137
|
-
"other",
|
|
138
|
-
];
|
|
3
|
+
export const STRENGTH_ACTIVITY_TYPES = ["strength"];
|
|
139
4
|
// ============================================================
|
|
140
5
|
// Cycling activity types
|
|
141
6
|
// ============================================================
|
|
@@ -144,19 +9,7 @@ export const CANONICAL_ACTIVITY_TYPES = [
|
|
|
144
9
|
* Individual activities show the specific subtype, but aggregated views
|
|
145
10
|
* (weekly volume, PMC, cycling page) treat them as one sport.
|
|
146
11
|
*/
|
|
147
|
-
export const CYCLING_ACTIVITY_TYPES = [
|
|
148
|
-
"cycling",
|
|
149
|
-
"road_cycling",
|
|
150
|
-
"mountain_biking",
|
|
151
|
-
"gravel_cycling",
|
|
152
|
-
"indoor_cycling",
|
|
153
|
-
"virtual_cycling",
|
|
154
|
-
"e_bike_cycling",
|
|
155
|
-
"cyclocross",
|
|
156
|
-
"track_cycling",
|
|
157
|
-
"bmx",
|
|
158
|
-
"hand_cycling",
|
|
159
|
-
];
|
|
12
|
+
export const CYCLING_ACTIVITY_TYPES = ["cycling"];
|
|
160
13
|
/** Check whether an activity type is a cycling variant. */
|
|
161
14
|
export function isCyclingActivity(activityType) {
|
|
162
15
|
return CYCLING_ACTIVITY_TYPES.some((t) => t === activityType);
|
|
@@ -181,7 +34,7 @@ export function cadenceAxisLabel(activityType) {
|
|
|
181
34
|
*/
|
|
182
35
|
export function createActivityTypeMapper(providerMappings) {
|
|
183
36
|
return (providerType) => {
|
|
184
|
-
return providerMappings[providerType] ?? "other";
|
|
37
|
+
return resolveProviderActivityType(providerType, providerMappings[providerType] ?? "other");
|
|
185
38
|
};
|
|
186
39
|
}
|
|
187
40
|
// ============================================================
|
|
@@ -455,6 +308,7 @@ const ACTIVITY_TYPE_LABELS = {
|
|
|
455
308
|
strength: "Strength",
|
|
456
309
|
strength_training: "Strength Training",
|
|
457
310
|
functional_strength: "Functional Strength",
|
|
311
|
+
hangboard: "Hangboard",
|
|
458
312
|
stair_climbing: "Stair Climbing",
|
|
459
313
|
cross_training: "Cross Training",
|
|
460
314
|
hiit: "HIIT",
|
|
@@ -493,13 +347,12 @@ export function formatActivityTypeLabel(activityType) {
|
|
|
493
347
|
}
|
|
494
348
|
return ACTIVITY_TYPE_LABELS[normalized] ?? toTitleCase(normalized);
|
|
495
349
|
}
|
|
496
|
-
export function getVerticalAscentActivityTypeGroup(
|
|
497
|
-
|
|
498
|
-
if (normalized === "road_cycling")
|
|
350
|
+
export function getVerticalAscentActivityTypeGroup(modality) {
|
|
351
|
+
if (modality === "road")
|
|
499
352
|
return "road_cycling";
|
|
500
|
-
if (
|
|
353
|
+
if (modality === "mountain")
|
|
501
354
|
return "mountain_biking";
|
|
502
|
-
if (
|
|
355
|
+
if (modality === "gravel")
|
|
503
356
|
return "gravel_cycling";
|
|
504
357
|
return "other_cycling";
|
|
505
358
|
}
|
|
@@ -511,15 +364,15 @@ export function collapseWeeklyVolumeActivityTypes(rows, maxLegendItems = 6) {
|
|
|
511
364
|
return rows;
|
|
512
365
|
// Consolidate all cycling subtypes into generic "cycling" before grouping
|
|
513
366
|
const normalizedRows = rows.map((row) => {
|
|
514
|
-
const normalized = normalizeActivityType(row.
|
|
367
|
+
const normalized = normalizeActivityType(row.canonical_type);
|
|
515
368
|
return {
|
|
516
369
|
...row,
|
|
517
|
-
|
|
370
|
+
canonical_type: isCyclingActivity(normalized) ? "cycling" : normalized,
|
|
518
371
|
};
|
|
519
372
|
});
|
|
520
373
|
const totalsByType = new Map();
|
|
521
374
|
for (const row of normalizedRows) {
|
|
522
|
-
totalsByType.set(row.
|
|
375
|
+
totalsByType.set(row.canonical_type, (totalsByType.get(row.canonical_type) ?? 0) + row.hours);
|
|
523
376
|
}
|
|
524
377
|
const orderedTypes = [...totalsByType.entries()]
|
|
525
378
|
.sort((a, b) => b[1] - a[1])
|
|
@@ -530,7 +383,9 @@ export function collapseWeeklyVolumeActivityTypes(rows, maxLegendItems = 6) {
|
|
|
530
383
|
: new Set(orderedTypes);
|
|
531
384
|
const aggregated = new Map();
|
|
532
385
|
for (const row of normalizedRows) {
|
|
533
|
-
const groupedType = keepTypes.has(row.
|
|
386
|
+
const groupedType = keepTypes.has(row.canonical_type)
|
|
387
|
+
? row.canonical_type
|
|
388
|
+
: OTHER_ACTIVITY_TYPE;
|
|
534
389
|
const key = `${row.week}::${groupedType}`;
|
|
535
390
|
const existing = aggregated.get(key);
|
|
536
391
|
if (existing) {
|
|
@@ -540,7 +395,7 @@ export function collapseWeeklyVolumeActivityTypes(rows, maxLegendItems = 6) {
|
|
|
540
395
|
}
|
|
541
396
|
aggregated.set(key, {
|
|
542
397
|
week: row.week,
|
|
543
|
-
|
|
398
|
+
canonical_type: groupedType,
|
|
544
399
|
count: row.count,
|
|
545
400
|
hours: row.hours,
|
|
546
401
|
});
|
|
@@ -548,7 +403,7 @@ export function collapseWeeklyVolumeActivityTypes(rows, maxLegendItems = 6) {
|
|
|
548
403
|
return [...aggregated.values()].sort((a, b) => {
|
|
549
404
|
if (a.week !== b.week)
|
|
550
405
|
return a.week.localeCompare(b.week);
|
|
551
|
-
return a.
|
|
406
|
+
return a.canonical_type.localeCompare(b.canonical_type);
|
|
552
407
|
});
|
|
553
408
|
}
|
|
554
409
|
/**
|
package/dist/training.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"training.js","sourceRoot":"","sources":["../src/training.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"training.js","sourceRoot":"","sources":["../src/training.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,7 +72,6 @@ export interface MuscleGroupFreshness {
|
|
|
72
72
|
export interface RecommendationInput {
|
|
73
73
|
today: string;
|
|
74
74
|
readinessScore: number | null;
|
|
75
|
-
workloadRatio: number | null;
|
|
76
75
|
trainingStressBalance: number | null;
|
|
77
76
|
sleepDebtMinutes: number;
|
|
78
77
|
recentActivities: RecentActivity[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workout-recommendation.d.ts","sourceRoot":"","sources":["../src/workout-recommendation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,iBAAiB,GACjB,aAAa,GACb,kBAAkB,GAClB,UAAU,CAAC;AAEf,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,qBAAqB,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACrD;AAID,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,
|
|
1
|
+
{"version":3,"file":"workout-recommendation.d.ts","sourceRoot":"","sources":["../src/workout-recommendation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH,MAAM,MAAM,WAAW,GACnB,MAAM,GACN,iBAAiB,GACjB,aAAa,GACb,kBAAkB,GAClB,UAAU,CAAC;AAEf,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,wBAAwB,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,aAAa,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,qBAAqB,EAAE,qBAAqB,GAAG,IAAI,CAAC;CACrD;AAID,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,cAAc,EAAE,CAAC;IACnC,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,oBAAoB,EAAE,oBAAoB,EAAE,CAAC;IAC7C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAyCD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtD;AA8BD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,qBAAqB,CAsEtF"}
|
|
@@ -86,19 +86,14 @@ export function recommendNextWorkout(input) {
|
|
|
86
86
|
reasoning.push(`Recovery score is ${input.readinessScore}/100 — keep it light today`);
|
|
87
87
|
return makeActiveRecovery(reasoning);
|
|
88
88
|
}
|
|
89
|
-
// Step 2:
|
|
90
|
-
if (input.workloadRatio != null && input.workloadRatio > 1.5) {
|
|
91
|
-
reasoning.push(`Workload ratio is ${input.workloadRatio.toFixed(2)} — high injury risk zone`);
|
|
92
|
-
return makeActiveRecovery(reasoning);
|
|
93
|
-
}
|
|
94
|
-
// Step 3: Hard/easy alternation — was yesterday hard?
|
|
89
|
+
// Step 2: Hard/easy alternation — was yesterday hard?
|
|
95
90
|
const yesterdayWasHard = wasYesterdayHard(input);
|
|
96
91
|
const isModerateReadiness = input.readinessScore != null && input.readinessScore < READINESS_MODERATE;
|
|
97
92
|
if (yesterdayWasHard && isModerateReadiness) {
|
|
98
93
|
reasoning.push("Yesterday was a hard training day and recovery is moderate");
|
|
99
94
|
return makeCardioEasy(input, reasoning);
|
|
100
95
|
}
|
|
101
|
-
// Step
|
|
96
|
+
// Step 3: Decide between strength and cardio
|
|
102
97
|
const daysSinceStrength = daysSinceActivityType(input, "strength");
|
|
103
98
|
const daysSinceCardio = daysSinceActivityType(input, "cardio");
|
|
104
99
|
const freshMuscleGroups = getFreshMuscleGroups(input);
|