hevy-shared 1.0.646 → 1.0.648

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/built/index.d.ts CHANGED
@@ -444,7 +444,6 @@ export interface UserHevyProSubcription {
444
444
  managing_store: UserHevyProSubcriptionStore;
445
445
  type: 'monthly' | 'yearly' | 'lifetime' | 'custom';
446
446
  expires_date?: string;
447
- grace_period_expires_date?: string | null;
448
447
  /**
449
448
  * Set if the user has paused/cancelled their subscription
450
449
  */
@@ -550,10 +549,20 @@ export interface PublicUserProfile {
550
549
  weekly_workout_durations: WeeklyWorkoutDuration[];
551
550
  last_workout?: Workout;
552
551
  }
553
- export declare const muscleGroups: readonly ["abdominals", "abductors", "adductors", "biceps", "lower_back", "upper_back", "cardio", "chest", "calves", "forearms", "glutes", "hamstrings", "lats", "quadriceps", "shoulders", "triceps", "traps", "neck", "full_body", "other"];
552
+ export declare const coreMuscles: readonly ["abdominals"];
553
+ export declare const shoulderMuscles: readonly ["shoulders"];
554
+ export declare const armMuscles: readonly ["biceps", "triceps", "forearms"];
555
+ export declare const legMuscles: readonly ["quadriceps", "hamstrings", "calves", "glutes", "abductors", "adductors"];
556
+ export declare const backMuscles: readonly ["lats", "traps", "lower_back", "upper_back"];
557
+ export declare const chestMuscles: readonly ["chest"];
558
+ export declare const miscellaneousMuscles: readonly ["cardio", "neck", "full_body", "other"];
559
+ export declare const simplifiedMuscleGroups: readonly ["core", "shoulders", "arms", "legs", "back", "chest"];
560
+ export type SimplifiedMuscleGroup = Lookup<typeof simplifiedMuscleGroups>;
561
+ export declare const isSimplifiedMuscleGroup: (x: string) => x is SimplifiedMuscleGroup;
562
+ export declare const muscleGroups: readonly ["abdominals", "shoulders", "biceps", "triceps", "forearms", "quadriceps", "hamstrings", "calves", "glutes", "abductors", "adductors", "lats", "traps", "lower_back", "upper_back", "chest", "cardio", "neck", "full_body", "other"];
554
563
  export type MuscleGroup = Lookup<typeof muscleGroups>;
555
564
  export declare const isMuscleGroup: (x: string) => x is MuscleGroup;
556
- export declare const muscleGroupFilters: readonly ["all_muscles", "abdominals", "abductors", "adductors", "biceps", "lower_back", "upper_back", "cardio", "chest", "calves", "forearms", "glutes", "hamstrings", "lats", "quadriceps", "shoulders", "triceps", "traps", "neck", "full_body", "other"];
565
+ export declare const muscleGroupFilters: readonly ["all_muscles", "abdominals", "shoulders", "biceps", "triceps", "forearms", "quadriceps", "hamstrings", "calves", "glutes", "abductors", "adductors", "lats", "traps", "lower_back", "upper_back", "chest", "cardio", "neck", "full_body", "other"];
557
566
  export type MuscleGroupFilter = Lookup<typeof muscleGroupFilters>;
558
567
  export declare const isMuscleGroupFilter: (x: string) => x is MuscleGroupFilter;
559
568
  /**
@@ -763,6 +772,10 @@ export interface WorkoutVideo {
763
772
  thumbnail_url: string;
764
773
  }
765
774
  export type WorkoutMedia = WorkoutImage | WorkoutVideo;
775
+ export type PreviewWorkoutLike = {
776
+ username: string;
777
+ profile_pic: string;
778
+ };
766
779
  export interface Workout {
767
780
  id: string;
768
781
  short_id: string | null;
@@ -770,7 +783,9 @@ export interface Workout {
770
783
  name: string;
771
784
  description?: string;
772
785
  like_count: number;
786
+ /** @deprecated 2.3.4 */
773
787
  like_images: string[];
788
+ preview_workout_likes: PreviewWorkoutLike[];
774
789
  comment_count: number;
775
790
  comments: WorkoutComment[];
776
791
  /** @deprecated 1.28.13 */
package/built/index.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.isValidUserWorkoutMetricsType = exports.isBodyMeasurementKey = exports.measurementsList = exports.isWorkoutBiometrics = exports.isHeartRateSamples = exports.isPublicWorkout = exports.isSetType = exports.isRPE = exports.validRpeValues = exports.isSetPersonalRecordType = exports.supportedInstructionsLanguages = exports.exerciseCategories = exports.trainingLevels = exports.trainingGoals = exports.isCustomExerciseType = exports.customExericseTypes = exports.isExerciseType = exports.exerciseTypes = exports.isExerciseRepType = exports.exerciseRepTypes = exports.isEquipmentFilter = exports.equipmentFilters = exports.isEquipment = exports.equipments = exports.isMuscleGroupFilter = exports.muscleGroupFilters = exports.isMuscleGroup = exports.muscleGroups = exports.DefaultClientConfiguration = exports.isCoachRole = exports.isErrorResponse = exports.isLivePRVolumeOption = exports.isTimerVolumeOption = exports.isWeekday = exports.orderedWeekdays = exports.isBodyMeasurementUnit = exports.isDistanceUnitShort = exports.isDistanceUnit = exports.isWeightUnit = exports.isLanguage = exports.supportedLanguages = void 0;
17
+ exports.isValidUserWorkoutMetricsType = exports.isBodyMeasurementKey = exports.measurementsList = exports.isWorkoutBiometrics = exports.isHeartRateSamples = exports.isPublicWorkout = exports.isSetType = exports.isRPE = exports.validRpeValues = exports.isSetPersonalRecordType = exports.supportedInstructionsLanguages = exports.exerciseCategories = exports.trainingLevels = exports.trainingGoals = exports.isCustomExerciseType = exports.customExericseTypes = exports.isExerciseType = exports.exerciseTypes = exports.isExerciseRepType = exports.exerciseRepTypes = exports.isEquipmentFilter = exports.equipmentFilters = exports.isEquipment = exports.equipments = exports.isMuscleGroupFilter = exports.muscleGroupFilters = exports.isMuscleGroup = exports.muscleGroups = exports.isSimplifiedMuscleGroup = exports.simplifiedMuscleGroups = exports.miscellaneousMuscles = exports.chestMuscles = exports.backMuscles = exports.legMuscles = exports.armMuscles = exports.shoulderMuscles = exports.coreMuscles = exports.DefaultClientConfiguration = exports.isCoachRole = exports.isErrorResponse = exports.isLivePRVolumeOption = exports.isTimerVolumeOption = exports.isWeekday = exports.orderedWeekdays = exports.isBodyMeasurementUnit = exports.isDistanceUnitShort = exports.isDistanceUnit = exports.isWeightUnit = exports.isLanguage = exports.supportedLanguages = void 0;
18
18
  const typeUtils_1 = require("./typeUtils");
19
19
  __exportStar(require("./constants"), exports);
20
20
  __exportStar(require("./utils"), exports);
@@ -104,28 +104,49 @@ const _supportedProStores = [
104
104
  'paddle',
105
105
  'hevy-coach',
106
106
  ];
107
- exports.muscleGroups = [
108
- 'abdominals',
107
+ exports.coreMuscles = ['abdominals'];
108
+ exports.shoulderMuscles = ['shoulders'];
109
+ exports.armMuscles = ['biceps', 'triceps', 'forearms'];
110
+ exports.legMuscles = [
111
+ 'quadriceps',
112
+ 'hamstrings',
113
+ 'calves',
114
+ 'glutes',
109
115
  'abductors',
110
116
  'adductors',
111
- 'biceps',
117
+ ];
118
+ exports.backMuscles = [
119
+ 'lats',
120
+ 'traps',
112
121
  'lower_back',
113
122
  'upper_back',
123
+ ];
124
+ exports.chestMuscles = ['chest'];
125
+ exports.miscellaneousMuscles = [
114
126
  'cardio',
115
- 'chest',
116
- 'calves',
117
- 'forearms',
118
- 'glutes',
119
- 'hamstrings',
120
- 'lats',
121
- 'quadriceps',
122
- 'shoulders',
123
- 'triceps',
124
- 'traps',
125
127
  'neck',
126
128
  'full_body',
127
129
  'other',
128
130
  ];
131
+ exports.simplifiedMuscleGroups = [
132
+ 'core',
133
+ 'shoulders',
134
+ 'arms',
135
+ 'legs',
136
+ 'back',
137
+ 'chest',
138
+ ];
139
+ const isSimplifiedMuscleGroup = (x) => (0, typeUtils_1.isInArray)(x, exports.simplifiedMuscleGroups);
140
+ exports.isSimplifiedMuscleGroup = isSimplifiedMuscleGroup;
141
+ exports.muscleGroups = [
142
+ ...exports.coreMuscles,
143
+ ...exports.shoulderMuscles,
144
+ ...exports.armMuscles,
145
+ ...exports.legMuscles,
146
+ ...exports.backMuscles,
147
+ ...exports.chestMuscles,
148
+ ...exports.miscellaneousMuscles,
149
+ ];
129
150
  const isMuscleGroup = (x) => (0, typeUtils_1.isInArray)(x, exports.muscleGroups);
130
151
  exports.isMuscleGroup = isMuscleGroup;
131
152
  exports.muscleGroupFilters = ['all_muscles', ...exports.muscleGroups];
@@ -1,5 +1,16 @@
1
- import { Workout, BaseRoutine } from '.';
2
- export declare const calculateMuscleSplit: (workoutsOrRoutines: Workout[] | BaseRoutine[]) => {
1
+ import { MuscleGroup, SetType } from '.';
2
+ interface SetCountableSet {
3
+ indicator: SetType;
4
+ }
5
+ interface SetCountableExercise {
6
+ muscle_group: MuscleGroup;
7
+ other_muscles: MuscleGroup[];
8
+ sets: SetCountableSet[];
9
+ }
10
+ interface SetCountableWorkoutOrRoutine {
11
+ exercises: SetCountableExercise[];
12
+ }
13
+ export declare const getSetContributionsForMuscleGroups: (muscle_group: MuscleGroup, other_muscles: MuscleGroup[]) => {
3
14
  core: number;
4
15
  shoulders: number;
5
16
  arms: number;
@@ -7,3 +18,13 @@ export declare const calculateMuscleSplit: (workoutsOrRoutines: Workout[] | Base
7
18
  back: number;
8
19
  chest: number;
9
20
  };
21
+ export declare const calculateSimplifiedMuscleSplit: (workoutsOrRoutines: SetCountableWorkoutOrRoutine[], shouldIncludeWarmupSets: boolean) => {
22
+ core: number;
23
+ shoulders: number;
24
+ arms: number;
25
+ legs: number;
26
+ back: number;
27
+ chest: number;
28
+ };
29
+ export declare const getSetCountPerMuscleGroups: (workout: SetCountableWorkoutOrRoutine, shouldIncludeWarmupSets: boolean) => Partial<{ [key in MuscleGroup]: number; }>;
30
+ export {};
@@ -3,63 +3,69 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.calculateMuscleSplit = void 0;
6
+ exports.getSetCountPerMuscleGroups = exports.calculateSimplifiedMuscleSplit = exports.getSetContributionsForMuscleGroups = void 0;
7
7
  const intersection_1 = __importDefault(require("lodash/intersection"));
8
- const calculateMuscleSplit = (workoutsOrRoutines) => {
9
- const coreMuscles = ['abdominals'];
10
- const shoulderMuscles = ['shoulders'];
11
- const armMuscles = ['biceps', 'triceps', 'forearms'];
12
- const legMuscles = [
13
- 'quadriceps',
14
- 'hamstrings',
15
- 'glutes',
16
- 'calves',
17
- 'abductors',
18
- 'adductors',
19
- ];
20
- const backMuscles = [
21
- 'lower_back',
22
- 'upper_back',
23
- 'lats',
24
- 'traps',
25
- ];
26
- const chestMuscles = ['chest'];
27
- let core = 0;
28
- let shoulders = 0;
29
- let arms = 0;
30
- let legs = 0;
31
- let back = 0;
32
- let chest = 0;
33
- const muscleGroupValueIncrement = (e, mg) => {
34
- let increment = 0;
35
- if (mg.includes(e.muscle_group)) {
36
- increment += e.sets.length;
8
+ const _1 = require(".");
9
+ const getSetContributionsForMuscleGroups = (muscle_group, other_muscles) => {
10
+ const getContribution = (mg) => {
11
+ if (mg.includes(muscle_group)) {
12
+ return 1;
37
13
  }
38
- else if ((0, intersection_1.default)(mg, e.other_muscles).length) {
39
- increment += e.sets.length / 2;
14
+ else if ((0, intersection_1.default)(mg, other_muscles).length) {
15
+ return 0.5;
40
16
  }
41
- else if (e.muscle_group === 'full_body') {
42
- increment += e.sets.length / 6;
17
+ else if (muscle_group === 'full_body') {
18
+ return 1 / 6;
43
19
  }
44
- return increment;
20
+ return 0;
45
21
  };
46
- for (const workout of workoutsOrRoutines) {
47
- for (const exercise of workout.exercises) {
48
- core += muscleGroupValueIncrement(exercise, coreMuscles);
49
- shoulders += muscleGroupValueIncrement(exercise, shoulderMuscles);
50
- arms += muscleGroupValueIncrement(exercise, armMuscles);
51
- legs += muscleGroupValueIncrement(exercise, legMuscles);
52
- back += muscleGroupValueIncrement(exercise, backMuscles);
53
- chest += muscleGroupValueIncrement(exercise, chestMuscles);
54
- }
55
- }
56
22
  return {
57
- core,
58
- shoulders,
59
- arms,
60
- legs,
61
- back,
62
- chest,
23
+ core: getContribution(_1.coreMuscles),
24
+ shoulders: getContribution(_1.shoulderMuscles),
25
+ arms: getContribution(_1.armMuscles),
26
+ legs: getContribution(_1.legMuscles),
27
+ back: getContribution(_1.backMuscles),
28
+ chest: getContribution(_1.chestMuscles),
29
+ };
30
+ };
31
+ exports.getSetContributionsForMuscleGroups = getSetContributionsForMuscleGroups;
32
+ const calculateSimplifiedMuscleSplit = (workoutsOrRoutines, shouldIncludeWarmupSets) => {
33
+ const totals = {
34
+ core: 0,
35
+ shoulders: 0,
36
+ arms: 0,
37
+ legs: 0,
38
+ back: 0,
39
+ chest: 0,
63
40
  };
41
+ for (const workoutOrRoutine of workoutsOrRoutines) {
42
+ for (const exercise of workoutOrRoutine.exercises) {
43
+ const trimmedSets = shouldIncludeWarmupSets
44
+ ? exercise.sets
45
+ : exercise.sets.filter((s) => s.indicator !== 'warmup');
46
+ const setCount = trimmedSets.length;
47
+ const contributions = (0, exports.getSetContributionsForMuscleGroups)(exercise.muscle_group, exercise.other_muscles);
48
+ totals.core += contributions.core * setCount;
49
+ totals.shoulders += contributions.shoulders * setCount;
50
+ totals.arms += contributions.arms * setCount;
51
+ totals.legs += contributions.legs * setCount;
52
+ totals.back += contributions.back * setCount;
53
+ totals.chest += contributions.chest * setCount;
54
+ }
55
+ }
56
+ return totals;
57
+ };
58
+ exports.calculateSimplifiedMuscleSplit = calculateSimplifiedMuscleSplit;
59
+ const getSetCountPerMuscleGroups = (workout, shouldIncludeWarmupSets) => {
60
+ return workout.exercises.reduce((acc, e) => {
61
+ const trimmedSets = shouldIncludeWarmupSets
62
+ ? e.sets
63
+ : e.sets.filter((s) => s.indicator !== 'warmup');
64
+ acc[e.muscle_group] = (acc[e.muscle_group] || 0) + trimmedSets.length;
65
+ e.other_muscles.forEach((muscle) => {
66
+ acc[muscle] = (acc[muscle] || 0) + trimmedSets.length / 2;
67
+ });
68
+ return acc;
69
+ }, {});
64
70
  };
65
- exports.calculateMuscleSplit = calculateMuscleSplit;
71
+ exports.getSetCountPerMuscleGroups = getSetCountPerMuscleGroups;
@@ -7,8 +7,8 @@
7
7
  */
8
8
  import { ClientsCoachData, Program } from '.';
9
9
  import { HevyChatUpdateMobilePushData } from './chat';
10
- export type Notification = WorkoutCompleteNotification | WorkoutMentionNotification | WorkoutCommentNotification | WorkoutCommentMentionNotification | WorkoutCommentReplyNotification | WorkoutCommentDiscussionNotification | WorkoutLikeNotification | WorkoutCommentLikeNotification | FollowNotification | FollowRequestNotification | AcceptFollowRequestNotification | GracePeriodStatusNotification | CoachClientInviteNotification | ContactOnHevyNotification;
11
- export type NotificationType = 'workout-complete' | 'workout-mention' | 'workout-comment' | 'workout-comment-mention' | 'workout-comment-reply' | 'workout-comment-reply-v2' | 'workout-like' | 'workout-comment-like' | 'follow' | 'follow-request' | 'accept-follow-request' | 'grace-period-status' | 'coach-client-invite' | 'contact-on-hevy';
10
+ export type Notification = WorkoutCompleteNotification | WorkoutMentionNotification | WorkoutCommentNotification | WorkoutCommentMentionNotification | WorkoutCommentReplyNotification | WorkoutCommentDiscussionNotification | WorkoutLikeNotification | WorkoutCommentLikeNotification | FollowNotification | FollowRequestNotification | AcceptFollowRequestNotification | CoachClientInviteNotification | ContactOnHevyNotification;
11
+ export type NotificationType = 'workout-complete' | 'workout-mention' | 'workout-comment' | 'workout-comment-mention' | 'workout-comment-reply' | 'workout-comment-reply-v2' | 'workout-like' | 'workout-comment-like' | 'follow' | 'follow-request' | 'accept-follow-request' | 'coach-client-invite' | 'contact-on-hevy';
12
12
  export interface BaseNotification {
13
13
  id: number;
14
14
  type: NotificationType;
@@ -111,12 +111,6 @@ export interface AcceptFollowRequestNotification extends BaseNotification {
111
111
  export interface AcceptFollowRequestMobilePushData extends BaseMobilePushData {
112
112
  type: 'accept-follow-request';
113
113
  }
114
- export interface GracePeriodStatusMobilePushData extends BaseMobilePushData {
115
- type: 'grace-period-status';
116
- }
117
- export interface GracePeriodStatusNotification extends BaseNotification {
118
- type: 'grace-period-status';
119
- }
120
114
  export interface CoachClientInviteNotification extends BaseNotification {
121
115
  type: 'coach-client-invite';
122
116
  from_full_name?: string;
@@ -201,4 +195,4 @@ export interface MonthlyReportMobilePushData extends BaseMobilePushData {
201
195
  type: 'monthly-report';
202
196
  deeplink: string;
203
197
  }
204
- export type MobilePushData = ChatUpdateMobilePushData | SyncCustomExercisesAndCoachCustomizationsMobilePushData | SyncWorkoutsMobilePushData | SyncRoutineFoldersMobilePushData | SyncRoutinesMobilePushData | ProStatusChangedPushMobilePushData | HevyProSubscriptionRenewedMobilePushData | CoachProgramChangedMobilePushData | CoachDataChangedMobilePushData | ContactOnHevyMobilePushData | CoachClientInviteMobilePushData | AcceptFollowRequestMobilePushData | FollowRequestMobilePushData | FollowMobilePushData | WorkoutLikeMobilePushData | WorkoutCommentLikeMobilePushData | WorkoutCommentMentionMobilePushData | WorkoutCommentDiscussionMobilePushData | WorkoutCommentReplyMobilePushData | WorkoutCommentMobilePushData | WorkoutMentionMobilePushData | WorkoutCompleteMobilePushData | GracePeriodStatusMobilePushData | CoachProgramFinishesNextWeekMobilePushData | CoachProgramStartsTodayMobilePushData | CoachLoggedYourWorkoutMobilePushData | CoachLoggedYourMeasurementsMobilePushData | MonthlyReportMobilePushData;
198
+ export type MobilePushData = ChatUpdateMobilePushData | SyncCustomExercisesAndCoachCustomizationsMobilePushData | SyncWorkoutsMobilePushData | SyncRoutineFoldersMobilePushData | SyncRoutinesMobilePushData | ProStatusChangedPushMobilePushData | HevyProSubscriptionRenewedMobilePushData | CoachProgramChangedMobilePushData | CoachDataChangedMobilePushData | ContactOnHevyMobilePushData | CoachClientInviteMobilePushData | AcceptFollowRequestMobilePushData | FollowRequestMobilePushData | FollowMobilePushData | WorkoutLikeMobilePushData | WorkoutCommentLikeMobilePushData | WorkoutCommentMentionMobilePushData | WorkoutCommentDiscussionMobilePushData | WorkoutCommentReplyMobilePushData | WorkoutCommentMobilePushData | WorkoutMentionMobilePushData | WorkoutCompleteMobilePushData | CoachProgramFinishesNextWeekMobilePushData | CoachProgramStartsTodayMobilePushData | CoachLoggedYourWorkoutMobilePushData | CoachLoggedYourMeasurementsMobilePushData | MonthlyReportMobilePushData;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hevy-shared",
3
- "version": "1.0.646",
3
+ "version": "1.0.648",
4
4
  "description": "",
5
5
  "main": "built/index.js",
6
6
  "types": "built/index.d.ts",