hevy-shared 1.0.1060 → 1.0.1062
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/exerciseLocaleUtils.d.ts +1 -2
- package/built/index.d.ts +26 -7
- package/built/index.js +1 -1
- package/built/typeUtils.d.ts +1 -4
- package/built/typeUtils.js +2 -11
- package/built/workout/index.d.ts +6 -2
- package/built/workout/index.js +6 -1
- package/built/workout/publicWorkout.d.ts +15 -3
- package/built/workout/userWorkout.d.ts +41 -4
- package/built/workout/workout.d.ts +50 -4
- package/package.json +1 -1
- package/built/geography.d.ts +0 -1
- package/built/geography.js +0 -15
- package/built/tests/geography.test.d.ts +0 -1
- package/built/tests/geography.test.js +0 -25
- package/built/workout/shared.d.ts +0 -13
- package/built/workout/shared.js +0 -2
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { LibraryExercise, Lookup } from '.';
|
|
2
2
|
import { Language } from './translations';
|
|
3
|
-
import { LocalizedExerciseTitles } from './workout/shared';
|
|
4
3
|
/** Keeping exercise instruction/title localization utils here instead of translations
|
|
5
4
|
* so I don't need to import exercise types from here in translations (translations was
|
|
6
5
|
* created so that hevy-web can import utils from shared without importing something from
|
|
@@ -9,7 +8,7 @@ import { LocalizedExerciseTitles } from './workout/shared';
|
|
|
9
8
|
export declare const supportedInstructionsLanguages: readonly ["en", "it", "de", "es", "fr", "pt"];
|
|
10
9
|
export type InstructionsLanguage = Lookup<typeof supportedInstructionsLanguages>;
|
|
11
10
|
export declare const isSupportedInstructionsLanguage: (lang: string) => lang is InstructionsLanguage;
|
|
12
|
-
type LocalizableExerciseTemplate = Pick<LibraryExercise, 'title' |
|
|
11
|
+
type LocalizableExerciseTemplate = Pick<LibraryExercise, 'title' | 'es_title' | 'de_title' | 'fr_title' | 'it_title' | 'ja_title' | 'ko_title' | 'pt_title' | 'ru_title' | 'tr_title' | 'zh_cn_title' | 'zh_tw_title' | 'localised_instructions' | 'is_custom'>;
|
|
13
12
|
export declare const localisedExerciseTitle: (locale: Language, template: LocalizableExerciseTemplate) => string;
|
|
14
13
|
export declare const localisedExerciseInstructions: (locale: Language, exerciseTemplate: LocalizableExerciseTemplate) => string;
|
|
15
14
|
export declare const localeSelect: <T>(locale: Language, options: {
|
package/built/index.d.ts
CHANGED
|
@@ -5,7 +5,6 @@ import { Language } from './translations';
|
|
|
5
5
|
import { Lookup } from './typeUtils';
|
|
6
6
|
import { z } from 'zod';
|
|
7
7
|
import { UserWorkout } from './workout';
|
|
8
|
-
import { LocalizedExerciseTitles } from './workout/shared';
|
|
9
8
|
export * from './schemas';
|
|
10
9
|
export * from './constants';
|
|
11
10
|
export * from './utils';
|
|
@@ -30,7 +29,6 @@ export * from './hevyTrainer';
|
|
|
30
29
|
export * from './translations';
|
|
31
30
|
export * from './exerciseLocaleUtils';
|
|
32
31
|
export * from './getVolumeComparison';
|
|
33
|
-
export * from './geography';
|
|
34
32
|
export type WeightUnit = 'kg' | 'lbs';
|
|
35
33
|
export declare const isWeightUnit: (x: string) => x is WeightUnit;
|
|
36
34
|
export type DistanceUnit = 'kilometers' | 'miles';
|
|
@@ -703,7 +701,7 @@ export interface BaseExerciseTemplate {
|
|
|
703
701
|
* They are stored on the database and downloaded to the client
|
|
704
702
|
* They have additional properties like translations, leaderboard eligibility, etc.
|
|
705
703
|
*/
|
|
706
|
-
export interface LibraryExercise extends BaseExerciseTemplate
|
|
704
|
+
export interface LibraryExercise extends BaseExerciseTemplate {
|
|
707
705
|
is_custom: false;
|
|
708
706
|
aka?: string;
|
|
709
707
|
manual_tag?: string;
|
|
@@ -711,6 +709,17 @@ export interface LibraryExercise extends BaseExerciseTemplate, LocalizedExercise
|
|
|
711
709
|
leaderboard_exercise?: boolean;
|
|
712
710
|
hundred_percent_bodyweight_exercise?: boolean;
|
|
713
711
|
strength_level_exercise?: boolean;
|
|
712
|
+
es_title?: string;
|
|
713
|
+
de_title?: string;
|
|
714
|
+
fr_title?: string;
|
|
715
|
+
it_title?: string;
|
|
716
|
+
pt_title?: string;
|
|
717
|
+
ko_title?: string;
|
|
718
|
+
ja_title?: string;
|
|
719
|
+
tr_title?: string;
|
|
720
|
+
ru_title?: string;
|
|
721
|
+
zh_cn_title?: string;
|
|
722
|
+
zh_tw_title?: string;
|
|
714
723
|
localised_instructions?: {
|
|
715
724
|
[language in InstructionsLanguage]?: string;
|
|
716
725
|
};
|
|
@@ -828,7 +837,7 @@ export interface RoutineSet {
|
|
|
828
837
|
rpe?: RPE | null;
|
|
829
838
|
rep_range?: RepRange;
|
|
830
839
|
}
|
|
831
|
-
export interface RoutineExercise
|
|
840
|
+
export interface RoutineExercise {
|
|
832
841
|
id: string;
|
|
833
842
|
/** This is the username of the exercise_template */
|
|
834
843
|
username: string;
|
|
@@ -836,6 +845,17 @@ export interface RoutineExercise extends LocalizedExerciseTitles {
|
|
|
836
845
|
warmup_set_count: number;
|
|
837
846
|
normal_set_count: number;
|
|
838
847
|
title: string;
|
|
848
|
+
es_title?: string | null;
|
|
849
|
+
de_title?: string | null;
|
|
850
|
+
fr_title?: string | null;
|
|
851
|
+
it_title?: string | null;
|
|
852
|
+
pt_title?: string | null;
|
|
853
|
+
ko_title?: string | null;
|
|
854
|
+
ja_title?: string | null;
|
|
855
|
+
tr_title?: string | null;
|
|
856
|
+
ru_title?: string | null;
|
|
857
|
+
zh_cn_title?: string | null;
|
|
858
|
+
zh_tw_title?: string | null;
|
|
839
859
|
muscle_group: MuscleGroup;
|
|
840
860
|
other_muscles: MuscleGroup[];
|
|
841
861
|
exercise_type: ExerciseType;
|
|
@@ -1507,8 +1527,7 @@ type CommercialGym = {
|
|
|
1507
1527
|
name: string;
|
|
1508
1528
|
fullAddress: string;
|
|
1509
1529
|
city: string;
|
|
1510
|
-
|
|
1511
|
-
longitude: number;
|
|
1530
|
+
distanceM: number;
|
|
1512
1531
|
};
|
|
1513
1532
|
export type Gym = CommercialGym;
|
|
1514
1533
|
export interface StripePrice {
|
|
@@ -1753,7 +1772,7 @@ export interface BackofficeAppLogIndexResponse {
|
|
|
1753
1772
|
fileSizeBytes: number;
|
|
1754
1773
|
}[];
|
|
1755
1774
|
}
|
|
1756
|
-
declare const _suggestedUserSources: readonly ["popular", "local", "contact", "mutual_follows", "follows_you", "featured", "hyper_local"];
|
|
1775
|
+
declare const _suggestedUserSources: readonly ["popular", "local", "contact", "mutual_follows", "follows_you", "featured", "hyper_local", "top_discovery"];
|
|
1757
1776
|
export type SuggestedUserSource = Lookup<typeof _suggestedUserSources>;
|
|
1758
1777
|
export declare const isSuggestedUserSource: (source: string) => source is SuggestedUserSource;
|
|
1759
1778
|
export type SuggestedUserLabel = 'contact' | 'mutual_friends' | 'follows_you' | 'featured';
|
package/built/index.js
CHANGED
|
@@ -41,7 +41,6 @@ __exportStar(require("./hevyTrainer"), exports);
|
|
|
41
41
|
__exportStar(require("./translations"), exports);
|
|
42
42
|
__exportStar(require("./exerciseLocaleUtils"), exports);
|
|
43
43
|
__exportStar(require("./getVolumeComparison"), exports);
|
|
44
|
-
__exportStar(require("./geography"), exports);
|
|
45
44
|
const isWeightUnit = (x) => {
|
|
46
45
|
return x === 'kg' || x === 'lbs';
|
|
47
46
|
};
|
|
@@ -357,6 +356,7 @@ const _suggestedUserSources = [
|
|
|
357
356
|
'follows_you',
|
|
358
357
|
'featured',
|
|
359
358
|
'hyper_local',
|
|
359
|
+
'top_discovery',
|
|
360
360
|
];
|
|
361
361
|
const isSuggestedUserSource = (source) => (0, typeUtils_1.isInArray)(source, _suggestedUserSources);
|
|
362
362
|
exports.isSuggestedUserSource = isSuggestedUserSource;
|
package/built/typeUtils.d.ts
CHANGED
|
@@ -4,10 +4,7 @@ export type DeepReadonly<T> = {
|
|
|
4
4
|
readonly [P in keyof T]: T[P] extends (...args: any[]) => any ? T[P] : DeepReadonly<T[P]>;
|
|
5
5
|
};
|
|
6
6
|
export declare const exhaustiveTypeCheck: (_: never) => undefined;
|
|
7
|
-
export declare
|
|
8
|
-
constructor(type: never);
|
|
9
|
-
}
|
|
10
|
-
export declare const exhaustiveTypeException: (type: never) => ExhaustiveTypeException;
|
|
7
|
+
export declare const exhaustiveTypeException: (type: never) => Error;
|
|
11
8
|
export type Some<T> = {
|
|
12
9
|
hasValue: true;
|
|
13
10
|
value: T;
|
package/built/typeUtils.js
CHANGED
|
@@ -1,21 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TODO = exports.typeSafeIndex = exports.parseJSON = exports.assertNonNullish = exports.dangerousUncheckedTypeCast = exports.exhaustiveTypeException = exports.
|
|
3
|
+
exports.TODO = exports.typeSafeIndex = exports.parseJSON = exports.assertNonNullish = exports.dangerousUncheckedTypeCast = exports.exhaustiveTypeException = exports.exhaustiveTypeCheck = exports.isInArray = void 0;
|
|
4
4
|
exports.isNonNullish = isNonNullish;
|
|
5
5
|
const isInArray = (value, array) => array.includes(value);
|
|
6
6
|
exports.isInArray = isInArray;
|
|
7
7
|
const exhaustiveTypeCheck = (_) => void _;
|
|
8
8
|
exports.exhaustiveTypeCheck = exhaustiveTypeCheck;
|
|
9
|
-
|
|
10
|
-
constructor(type) {
|
|
11
|
-
const message = `Assertion failed: "unreachable" code reached with unknown type: ${typeof type === 'object' ? JSON.stringify(type) : String(type)}`;
|
|
12
|
-
super(message);
|
|
13
|
-
this.name = 'ExhaustiveTypeException';
|
|
14
|
-
this.message = message;
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
exports.ExhaustiveTypeException = ExhaustiveTypeException;
|
|
18
|
-
const exhaustiveTypeException = (type) => new ExhaustiveTypeException(type);
|
|
9
|
+
const exhaustiveTypeException = (type) => new Error(`Assertion failed: "unreachable" code reached with unknown type: ${typeof type === 'object' ? JSON.stringify(type) : String(type)}`);
|
|
19
10
|
exports.exhaustiveTypeException = exhaustiveTypeException;
|
|
20
11
|
/**
|
|
21
12
|
* Please use this instead of using the 'as' keyword directly, so it's easier
|
package/built/workout/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { OwnedWorkout } from './workout';
|
|
2
|
-
|
|
1
|
+
import { OwnedWorkout, OwnedWorkoutExercise, OwnedWorkoutExerciseSet } from './workout';
|
|
2
|
+
import { UserWorkout, UserWorkoutExercise, UserWorkoutExerciseSet } from './userWorkout';
|
|
3
3
|
export * from './workout';
|
|
4
4
|
export * from './userWorkout';
|
|
5
5
|
export * from './publicWorkout';
|
|
@@ -11,3 +11,7 @@ export interface WorkoutSync {
|
|
|
11
11
|
isMore: boolean;
|
|
12
12
|
updated_at?: string;
|
|
13
13
|
}
|
|
14
|
+
export type Workout = OwnedWorkout & Partial<UserWorkout>;
|
|
15
|
+
export type WorkoutExercise = OwnedWorkoutExercise & Partial<UserWorkoutExercise>;
|
|
16
|
+
export type WorkoutExerciseSet = OwnedWorkoutExerciseSet & Partial<UserWorkoutExerciseSet>;
|
|
17
|
+
export declare function isOwnedWorkout(workout: OwnedWorkout | UserWorkout): workout is OwnedWorkout;
|
package/built/workout/index.js
CHANGED
|
@@ -14,9 +14,14 @@ 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
|
-
|
|
17
|
+
exports.isOwnedWorkout = isOwnedWorkout;
|
|
18
18
|
__exportStar(require("./workout"), exports);
|
|
19
19
|
__exportStar(require("./userWorkout"), exports);
|
|
20
20
|
__exportStar(require("./publicWorkout"), exports);
|
|
21
21
|
__exportStar(require("./normalizedWorkout"), exports);
|
|
22
22
|
__exportStar(require("./postWorkoutRequest"), exports);
|
|
23
|
+
// Stub
|
|
24
|
+
function isOwnedWorkout(workout) {
|
|
25
|
+
void workout;
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { DistanceUnit, ExerciseType, MuscleGroup, RPE, SetPersonalRecordType, SetType, WeightUnit } from '..';
|
|
2
|
-
import { LocalizedExerciseTitles } from './shared';
|
|
1
|
+
import { DistanceUnit, Equipment, ExerciseType, MuscleGroup, RPE, SetPersonalRecordType, SetType, WeightUnit } from '..';
|
|
3
2
|
export declare const isPublicWorkout: (x: any) => x is PublicWorkout;
|
|
4
3
|
export interface PublicWorkout {
|
|
5
4
|
type: 'public';
|
|
@@ -22,16 +21,29 @@ export interface PublicWorkout {
|
|
|
22
21
|
distance_unit: DistanceUnit;
|
|
23
22
|
estimated_volume_kg: number;
|
|
24
23
|
}
|
|
25
|
-
export interface PublicWorkoutExercise
|
|
24
|
+
export interface PublicWorkoutExercise {
|
|
26
25
|
id: string;
|
|
27
26
|
exercise_template_id: string;
|
|
28
27
|
title: string;
|
|
28
|
+
es_title?: string | null;
|
|
29
|
+
de_title?: string | null;
|
|
30
|
+
fr_title?: string | null;
|
|
31
|
+
it_title?: string | null;
|
|
32
|
+
pt_title?: string | null;
|
|
33
|
+
ko_title?: string | null;
|
|
34
|
+
ja_title?: string | null;
|
|
35
|
+
tr_title?: string | null;
|
|
36
|
+
ru_title?: string | null;
|
|
37
|
+
zh_cn_title?: string | null;
|
|
38
|
+
zh_tw_title?: string | null;
|
|
29
39
|
superset_id: number | null;
|
|
30
40
|
rest_seconds: number | null;
|
|
31
41
|
notes: string;
|
|
42
|
+
priority: number;
|
|
32
43
|
muscle_group: MuscleGroup;
|
|
33
44
|
other_muscles: MuscleGroup[];
|
|
34
45
|
exercise_type: ExerciseType;
|
|
46
|
+
equipment_category: Equipment;
|
|
35
47
|
url?: string;
|
|
36
48
|
media_type?: string;
|
|
37
49
|
custom_exercise_image_url?: string | null;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { ExerciseType, MuscleGroup, PreviewWorkoutLike, RPE, SetPersonalRecordType, SetType, WorkoutBiometrics, WorkoutComment, WorkoutMedia } from '..';
|
|
2
|
-
import { LocalizedExerciseTitles } from './shared';
|
|
1
|
+
import { Equipment, ExerciseType, MuscleGroup, PreviewWorkoutLike, RPE, SetPersonalRecordType, SetType, WorkoutBiometrics, WorkoutComment, WorkoutMedia } from '..';
|
|
3
2
|
export interface UserWorkout {
|
|
4
3
|
id: string;
|
|
5
4
|
short_id: string | null;
|
|
@@ -7,9 +6,13 @@ export interface UserWorkout {
|
|
|
7
6
|
name: string;
|
|
8
7
|
description?: string;
|
|
9
8
|
like_count: number;
|
|
9
|
+
/** @deprecated 2.3.4 */
|
|
10
|
+
like_images: string[];
|
|
10
11
|
preview_workout_likes: PreviewWorkoutLike[];
|
|
11
12
|
comment_count: number;
|
|
12
13
|
comments: WorkoutComment[];
|
|
14
|
+
/** @deprecated 1.28.13 */
|
|
15
|
+
image_urls?: string[];
|
|
13
16
|
media: WorkoutMedia[];
|
|
14
17
|
is_liked_by_user: boolean;
|
|
15
18
|
start_time: number;
|
|
@@ -22,6 +25,7 @@ export interface UserWorkout {
|
|
|
22
25
|
apple_watch: boolean;
|
|
23
26
|
wearos_watch: boolean;
|
|
24
27
|
verified: boolean;
|
|
28
|
+
created_at: string;
|
|
25
29
|
updated_at: string;
|
|
26
30
|
nth_workout: number;
|
|
27
31
|
/**
|
|
@@ -35,22 +39,45 @@ export interface UserWorkout {
|
|
|
35
39
|
*/
|
|
36
40
|
include_warmup_sets: boolean;
|
|
37
41
|
is_private: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* If applicable, the user ID of the coach who logged this workout
|
|
44
|
+
*/
|
|
45
|
+
logged_by_coach_id?: string;
|
|
38
46
|
biometrics?: WorkoutBiometrics;
|
|
39
47
|
is_biometrics_public: boolean;
|
|
48
|
+
trainer_program_id: string | undefined;
|
|
49
|
+
trainer_workout_template_id: string | undefined;
|
|
40
50
|
gym: UserWorkoutGym | undefined;
|
|
41
|
-
is_home_gym: boolean;
|
|
42
51
|
}
|
|
43
|
-
export interface UserWorkoutExercise
|
|
52
|
+
export interface UserWorkoutExercise {
|
|
44
53
|
id: string;
|
|
45
54
|
exercise_template_id: string;
|
|
46
55
|
title: string;
|
|
56
|
+
es_title?: string | null;
|
|
57
|
+
de_title?: string | null;
|
|
58
|
+
fr_title?: string | null;
|
|
59
|
+
it_title?: string | null;
|
|
60
|
+
pt_title?: string | null;
|
|
61
|
+
ko_title?: string | null;
|
|
62
|
+
ja_title?: string | null;
|
|
63
|
+
tr_title?: string | null;
|
|
64
|
+
ru_title?: string | null;
|
|
65
|
+
zh_cn_title?: string | null;
|
|
66
|
+
zh_tw_title?: string | null;
|
|
47
67
|
superset_id: number | null;
|
|
48
68
|
rest_seconds: number | null;
|
|
49
69
|
notes: string;
|
|
70
|
+
priority: number;
|
|
50
71
|
muscle_group: MuscleGroup;
|
|
51
72
|
other_muscles: MuscleGroup[];
|
|
52
73
|
exercise_type: ExerciseType;
|
|
74
|
+
equipment_category: Equipment;
|
|
75
|
+
url?: string;
|
|
76
|
+
media_type?: string;
|
|
77
|
+
custom_exercise_image_url?: string | null;
|
|
53
78
|
thumbnail_url?: string | null;
|
|
79
|
+
manual_tag?: string;
|
|
80
|
+
aka?: string;
|
|
54
81
|
/**
|
|
55
82
|
* for exercises with two dumbbells
|
|
56
83
|
*
|
|
@@ -76,6 +103,16 @@ export interface UserWorkoutExerciseSet {
|
|
|
76
103
|
duration_seconds?: number | null;
|
|
77
104
|
custom_metric?: number | null;
|
|
78
105
|
rpe?: RPE | null;
|
|
106
|
+
/**
|
|
107
|
+
* @deprecated 1.29.17 -
|
|
108
|
+
* we can only set this to `best_weight`, `best_reps`, `best_duration` or
|
|
109
|
+
* `best_distance`. sending anything else would cause older clients to crash.
|
|
110
|
+
* newer clients will ignore this field and use the `prs` field instead.
|
|
111
|
+
*/
|
|
112
|
+
personalRecords?: Array<{
|
|
113
|
+
type: 'best_weight' | 'best_reps' | 'best_duration' | 'best_distance';
|
|
114
|
+
value: number;
|
|
115
|
+
}>;
|
|
79
116
|
prs: {
|
|
80
117
|
type: SetPersonalRecordType;
|
|
81
118
|
value: number;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { ExerciseType, MuscleGroup, PreviewWorkoutLike, RPE, SetPersonalRecordType, SetType, WorkoutBiometrics, WorkoutComment, WorkoutMedia } from '..';
|
|
2
|
-
import { LocalizedExerciseTitles } from './shared';
|
|
1
|
+
import { Equipment, ExerciseType, MuscleGroup, PreviewWorkoutLike, RPE, SetPersonalRecordType, SetType, WorkoutBiometrics, WorkoutComment, WorkoutMedia } from '..';
|
|
3
2
|
export interface OwnedWorkout {
|
|
4
3
|
id: string;
|
|
5
4
|
short_id: string | null;
|
|
@@ -7,9 +6,13 @@ export interface OwnedWorkout {
|
|
|
7
6
|
name: string;
|
|
8
7
|
description?: string;
|
|
9
8
|
like_count: number;
|
|
9
|
+
/** @deprecated 2.3.4 */
|
|
10
|
+
like_images: string[];
|
|
10
11
|
preview_workout_likes: PreviewWorkoutLike[];
|
|
11
12
|
comment_count: number;
|
|
12
13
|
comments: WorkoutComment[];
|
|
14
|
+
/** @deprecated 1.28.13 */
|
|
15
|
+
image_urls?: string[];
|
|
13
16
|
media: WorkoutMedia[];
|
|
14
17
|
is_liked_by_user: boolean;
|
|
15
18
|
start_time: number;
|
|
@@ -25,27 +28,60 @@ export interface OwnedWorkout {
|
|
|
25
28
|
created_at: string;
|
|
26
29
|
updated_at: string;
|
|
27
30
|
nth_workout: number;
|
|
31
|
+
/**
|
|
32
|
+
* See https://github.com/hevyapp/hevy-backend/pull/193 to understand
|
|
33
|
+
* why we added estimated_volume_kg
|
|
34
|
+
*/
|
|
35
|
+
estimated_volume_kg: number;
|
|
36
|
+
/**
|
|
37
|
+
* Whether to include warmup sets in various calculations.
|
|
38
|
+
* https://github.com/hevyapp/hevy-shared/pull/312
|
|
39
|
+
*/
|
|
40
|
+
include_warmup_sets: boolean;
|
|
28
41
|
is_private: boolean;
|
|
42
|
+
/**
|
|
43
|
+
* If applicable, the user ID of the coach who logged this workout
|
|
44
|
+
*/
|
|
45
|
+
logged_by_coach_id?: string;
|
|
29
46
|
biometrics?: WorkoutBiometrics;
|
|
30
47
|
is_biometrics_public: boolean;
|
|
48
|
+
trainer_program_id: string | undefined;
|
|
31
49
|
trainer_workout_template_id: string | undefined;
|
|
32
50
|
gym_id: string | undefined;
|
|
33
51
|
is_home_gym: boolean;
|
|
34
52
|
}
|
|
35
53
|
export interface TrainerWorkout extends OwnedWorkout {
|
|
36
|
-
|
|
54
|
+
trainer_program_id: string;
|
|
37
55
|
}
|
|
38
|
-
export interface OwnedWorkoutExercise
|
|
56
|
+
export interface OwnedWorkoutExercise {
|
|
39
57
|
id: string;
|
|
40
58
|
exercise_template_id: string;
|
|
41
59
|
title: string;
|
|
60
|
+
es_title?: string | null;
|
|
61
|
+
de_title?: string | null;
|
|
62
|
+
fr_title?: string | null;
|
|
63
|
+
it_title?: string | null;
|
|
64
|
+
pt_title?: string | null;
|
|
65
|
+
ko_title?: string | null;
|
|
66
|
+
ja_title?: string | null;
|
|
67
|
+
tr_title?: string | null;
|
|
68
|
+
ru_title?: string | null;
|
|
69
|
+
zh_cn_title?: string | null;
|
|
70
|
+
zh_tw_title?: string | null;
|
|
42
71
|
superset_id: number | null;
|
|
43
72
|
rest_seconds: number | null;
|
|
44
73
|
notes: string;
|
|
74
|
+
priority: number;
|
|
45
75
|
muscle_group: MuscleGroup;
|
|
46
76
|
other_muscles: MuscleGroup[];
|
|
47
77
|
exercise_type: ExerciseType;
|
|
78
|
+
equipment_category: Equipment;
|
|
79
|
+
url?: string;
|
|
80
|
+
media_type?: string;
|
|
81
|
+
custom_exercise_image_url?: string | null;
|
|
48
82
|
thumbnail_url?: string | null;
|
|
83
|
+
manual_tag?: string;
|
|
84
|
+
aka?: string;
|
|
49
85
|
/**
|
|
50
86
|
* for exercises with two dumbbells
|
|
51
87
|
*
|
|
@@ -71,6 +107,16 @@ export interface OwnedWorkoutExerciseSet {
|
|
|
71
107
|
duration_seconds?: number | null;
|
|
72
108
|
custom_metric?: number | null;
|
|
73
109
|
rpe?: RPE | null;
|
|
110
|
+
/**
|
|
111
|
+
* @deprecated 1.29.17 -
|
|
112
|
+
* we can only set this to `best_weight`, `best_reps`, `best_duration` or
|
|
113
|
+
* `best_distance`. sending anything else would cause older clients to crash.
|
|
114
|
+
* newer clients will ignore this field and use the `prs` field instead.
|
|
115
|
+
*/
|
|
116
|
+
personalRecords?: Array<{
|
|
117
|
+
type: 'best_weight' | 'best_reps' | 'best_duration' | 'best_distance';
|
|
118
|
+
value: number;
|
|
119
|
+
}>;
|
|
74
120
|
prs: {
|
|
75
121
|
type: SetPersonalRecordType;
|
|
76
122
|
value: number;
|
package/package.json
CHANGED
package/built/geography.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const distanceMBetween: (lat1: number, lon1: number, lat2: number, lon2: number) => number;
|
package/built/geography.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.distanceMBetween = void 0;
|
|
4
|
-
const haversineDistance = (lat1, lon1, lat2, lon2) => {
|
|
5
|
-
const R = 6371;
|
|
6
|
-
const dLat = ((lat2 - lat1) * Math.PI) / 180;
|
|
7
|
-
const dLon = ((lon2 - lon1) * Math.PI) / 180;
|
|
8
|
-
const a = Math.sin(dLat / 2) ** 2 +
|
|
9
|
-
Math.cos((lat1 * Math.PI) / 180) *
|
|
10
|
-
Math.cos((lat2 * Math.PI) / 180) *
|
|
11
|
-
Math.sin(dLon / 2) ** 2;
|
|
12
|
-
return R * 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
|
|
13
|
-
};
|
|
14
|
-
const distanceMBetween = (lat1, lon1, lat2, lon2) => Math.round(haversineDistance(lat1, lon1, lat2, lon2) * 1000);
|
|
15
|
-
exports.distanceMBetween = distanceMBetween;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
const geography_1 = require("../geography");
|
|
13
|
-
describe('Geography utils', () => {
|
|
14
|
-
describe('distanceMBetween', () => {
|
|
15
|
-
it('Calculates the distance between two sets of coordinates', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
16
|
-
expect((0, geography_1.distanceMBetween)(51.001, 52, 51, 52)).toBe(111);
|
|
17
|
-
expect((0, geography_1.distanceMBetween)(51.002, 52, 51, 52)).toBe(222);
|
|
18
|
-
expect((0, geography_1.distanceMBetween)(50.999, 52, 51, 52)).toBe(111);
|
|
19
|
-
expect((0, geography_1.distanceMBetween)(51.01, 52, 51, 52)).toBe(1112);
|
|
20
|
-
expect((0, geography_1.distanceMBetween)(51.04, 52, 51, 52)).toBe(4448);
|
|
21
|
-
expect((0, geography_1.distanceMBetween)(51.035, 52.035, 51, 52)).toBe(4598);
|
|
22
|
-
expect((0, geography_1.distanceMBetween)(50.965, 51.965, 51, 52)).toBe(4599);
|
|
23
|
-
}));
|
|
24
|
-
});
|
|
25
|
-
});
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export interface LocalizedExerciseTitles {
|
|
2
|
-
es_title?: string | null;
|
|
3
|
-
de_title?: string | null;
|
|
4
|
-
fr_title?: string | null;
|
|
5
|
-
it_title?: string | null;
|
|
6
|
-
pt_title?: string | null;
|
|
7
|
-
ko_title?: string | null;
|
|
8
|
-
ja_title?: string | null;
|
|
9
|
-
tr_title?: string | null;
|
|
10
|
-
ru_title?: string | null;
|
|
11
|
-
zh_cn_title?: string | null;
|
|
12
|
-
zh_tw_title?: string | null;
|
|
13
|
-
}
|
package/built/workout/shared.js
DELETED