@dgpholdings/greatoak-shared 1.1.57 → 1.1.59

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.
@@ -74,6 +74,7 @@ export type TExerciseLatestRecord = {
74
74
  enableAuxWeight: boolean;
75
75
  enableTimeIntervalMode: boolean;
76
76
  enableSetNote: boolean;
77
+ enableDistance: boolean;
77
78
  enableExerciseNote: boolean;
78
79
  enableEffort: "rir" | "rpe" | "none";
79
80
  };
@@ -49,6 +49,7 @@ export type TTemplateConfig = {
49
49
  enableAuxWeight?: boolean;
50
50
  enableRir?: boolean;
51
51
  enableRpe?: boolean;
52
+ enableDistance?: boolean;
52
53
  enableSetNote?: boolean;
53
54
  enableExerciseNote?: boolean;
54
55
  enableTimeIntervalMode?: boolean;
@@ -27,8 +27,8 @@ export type TRefinedBodyWeightRecord = RefinedBase & {
27
27
  export type TRefinedCardioMachineRecord = RefinedBase & {
28
28
  type: "cardio-machine";
29
29
  speed: number;
30
- resistance: number;
31
30
  durationSecs: number;
31
+ distance: number;
32
32
  intensityScore?: number;
33
33
  };
34
34
  export type TRefinedCardioFreeRecord = RefinedBase & {
@@ -3,8 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.refineRecordEntry = void 0;
4
4
  const isDefined_utils_1 = require("./isDefined.utils");
5
5
  const number_util_1 = require("./number.util");
6
+ const time_util_1 = require("./time.util");
6
7
  const refineRecordEntry = (entry) => {
7
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
8
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
8
9
  const base = Object.assign(Object.assign(Object.assign(Object.assign({ isDone: entry.isDone, isStrictMode: entry.isStrictMode }, ((0, isDefined_utils_1.isDefinedNumber)((0, number_util_1.toNumber)(entry.rpe)) && { rpe: (0, number_util_1.toNumber)(entry.rpe) })), ((0, isDefined_utils_1.isDefinedNumber)(entry.workDurationSecs) && {
9
10
  workDurationSecs: entry.workDurationSecs,
10
11
  })), ((0, isDefined_utils_1.isDefinedNumber)(entry.restDurationSecs) && {
@@ -24,18 +25,19 @@ const refineRecordEntry = (entry) => {
24
25
  : undefined });
25
26
  }
26
27
  if (entry.type === "cardio-machine") {
27
- const speed = (_g = (0, number_util_1.toNumber)(entry.speedMin)) !== null && _g !== void 0 ? _g : 1;
28
+ const speed = (_g = (0, number_util_1.toNumber)(entry.speedMax)) !== null && _g !== void 0 ? _g : 1;
28
29
  const resistance = (_h = (0, number_util_1.toNumber)(entry.rpe)) !== null && _h !== void 0 ? _h : 1;
29
- const durationSecs = (_j = (0, number_util_1.toNumber)(entry.durationSecs)) !== null && _j !== void 0 ? _j : 0;
30
+ const durationSecs = (_j = (0, number_util_1.toNumber)((0, time_util_1.mmssToSecs)(entry.durationSecs))) !== null && _j !== void 0 ? _j : 0; // entry.durationSecs comes as mm:ss value naming issue
31
+ const distance = (_k = (0, number_util_1.toNumber)(entry.distanceKm)) !== null && _k !== void 0 ? _k : 1;
30
32
  // Calculate intensity score for progress tracking
31
33
  const intensityScore = speed > 0 && resistance > 0 ? speed * resistance : undefined;
32
34
  return Object.assign(Object.assign(Object.assign({}, base), { type: "cardio-machine", speed,
33
- resistance,
35
+ distance,
34
36
  durationSecs }), ((0, isDefined_utils_1.isDefinedNumber)(intensityScore) && { intensityScore }));
35
37
  }
36
38
  if (entry.type === "cardio-free") {
37
- const distanceKm = (_k = (0, number_util_1.toNumber)(entry.distanceKm)) !== null && _k !== void 0 ? _k : 0;
38
- const durationSecs = (_l = (0, number_util_1.toNumber)(entry.durationSecs)) !== null && _l !== void 0 ? _l : 0;
39
+ const distanceKm = (_l = (0, number_util_1.toNumber)(entry.distanceKm)) !== null && _l !== void 0 ? _l : 0;
40
+ const durationSecs = (_m = (0, number_util_1.toNumber)(entry.durationSecs)) !== null && _m !== void 0 ? _m : 0;
39
41
  // Calculate pace (seconds per km)
40
42
  const avgPaceSecsPerKm = distanceKm > 0 && durationSecs > 0
41
43
  ? durationSecs / distanceKm
@@ -58,7 +58,7 @@ const calculateBMR = (userProfile) => {
58
58
  * Calculate precise MET value using exercise metabolic data
59
59
  */
60
60
  const calculateMETValue = (record, exercise, effortFactor, userProfile) => {
61
- var _a, _b;
61
+ var _a, _b, _c;
62
62
  const { metabolicData } = exercise;
63
63
  const userWeight = (_a = userProfile.weightKg) !== null && _a !== void 0 ? _a : 70;
64
64
  const fitnessLevel = (_b = userProfile.fitnessLevel) !== null && _b !== void 0 ? _b : 3;
@@ -117,7 +117,7 @@ const calculateMETValue = (record, exercise, effortFactor, userProfile) => {
117
117
  }
118
118
  case "cardio-machine": {
119
119
  const speed = record.speed;
120
- const resistance = record.resistance;
120
+ const resistance = (_c = record.rpe) !== null && _c !== void 0 ? _c : 1;
121
121
  const durationSecs = record.durationSecs;
122
122
  // Calculate intensity from speed and resistance combination
123
123
  const intensityFactor = (speed * resistance) / 100; // Normalize intensity
@@ -107,6 +107,7 @@ exports.calculateWorkoutSummary = calculateWorkoutSummary;
107
107
  * Generate human-readable set description
108
108
  */
109
109
  const generateSetDescription = (record, exercise, scoreBreakdown) => {
110
+ var _a;
110
111
  const effort = record.rpe
111
112
  ? `RPE ${record.rpe}`
112
113
  : "rir" in record && record.rir
@@ -130,7 +131,8 @@ const generateSetDescription = (record, exercise, scoreBreakdown) => {
130
131
  : `${seconds}s`;
131
132
  return `${timeStr}${auxWeightDur} ${effort} • ${calories}`;
132
133
  case "cardio-machine":
133
- const resistance = record.resistance > 0 ? ` R${record.resistance}` : "";
134
+ const rpe = (_a = record.rpe) !== null && _a !== void 0 ? _a : 1;
135
+ const resistance = rpe > 0 ? ` R${rpe}` : "";
134
136
  const minutes_cm = Math.floor(record.durationSecs / 60);
135
137
  const seconds_cm = record.durationSecs % 60;
136
138
  const timeStr_cm = minutes_cm > 0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dgpholdings/greatoak-shared",
3
- "version": "1.1.57",
3
+ "version": "1.1.59",
4
4
  "description": "Shared TypeScript types and utilities for @dgpholdings projects",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",