@openlifelog/sdk 1.0.6 → 1.0.8
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.d.mts +22 -1
- package/dist/index.d.ts +22 -1
- package/dist/index.js +52 -0
- package/dist/index.mjs +52 -0
- package/package.json +1 -1
- package/resources/exercises.ts +28 -0
- package/resources/goals.ts +37 -1
- package/types/exercise.ts +26 -0
package/dist/index.d.mts
CHANGED
|
@@ -247,6 +247,24 @@ interface QuickEntryFoodLogRequest {
|
|
|
247
247
|
loggedAt?: DateTime;
|
|
248
248
|
}
|
|
249
249
|
|
|
250
|
+
interface MuscleGroupEntity {
|
|
251
|
+
id: UUID;
|
|
252
|
+
name: string;
|
|
253
|
+
medicalName?: string;
|
|
254
|
+
bodyPart?: string;
|
|
255
|
+
description?: string;
|
|
256
|
+
createdAt: DateTime;
|
|
257
|
+
deletedAt?: DateTime;
|
|
258
|
+
}
|
|
259
|
+
interface ExerciseEquipmentEntity {
|
|
260
|
+
id: UUID;
|
|
261
|
+
name: string;
|
|
262
|
+
category?: string;
|
|
263
|
+
description?: string;
|
|
264
|
+
isActive: boolean;
|
|
265
|
+
createdAt: DateTime;
|
|
266
|
+
deletedAt?: DateTime;
|
|
267
|
+
}
|
|
250
268
|
interface ExerciseCapabilities {
|
|
251
269
|
supportsWeight: boolean;
|
|
252
270
|
isBodyweight: boolean;
|
|
@@ -912,6 +930,8 @@ declare class ExercisesResource {
|
|
|
912
930
|
getFavorites(params?: ListExercisesParams): Promise<ListResponse<Exercise>>;
|
|
913
931
|
addToFavorites(exerciseId: string): Promise<void>;
|
|
914
932
|
removeFromFavorites(exerciseId: string): Promise<void>;
|
|
933
|
+
getMuscleGroups(): Promise<MuscleGroupEntity[]>;
|
|
934
|
+
getEquipment(): Promise<ExerciseEquipmentEntity[]>;
|
|
915
935
|
}
|
|
916
936
|
|
|
917
937
|
declare class WorkoutsResource {
|
|
@@ -1018,6 +1038,7 @@ declare class GoalsResource {
|
|
|
1018
1038
|
getNutritionGoalsHistory(params?: ListNutritionGoalsHistoryParams): Promise<ListResponse<UserNutritionGoals>>;
|
|
1019
1039
|
getNutritionProgress(): Promise<DailyNutritionProgress>;
|
|
1020
1040
|
getNutritionProgressByDate(date: string): Promise<DailyNutritionProgress>;
|
|
1041
|
+
private convertNutritionProgressFromMetric;
|
|
1021
1042
|
}
|
|
1022
1043
|
|
|
1023
1044
|
declare class AIResource {
|
|
@@ -1108,4 +1129,4 @@ declare class UnitConversionError extends OpenLifeLogError {
|
|
|
1108
1129
|
constructor(message?: string, rawError?: any);
|
|
1109
1130
|
}
|
|
1110
1131
|
|
|
1111
|
-
export { ACTIVITY_METRICS, ALL_METRICS, type AddExerciseItem, type AddExercisesToWorkoutRequest, type AuthResponse, AuthenticationError, AuthorizationError, BODY_METRICS, type BulkCreateMetricEventsRequest, type BulkCreateNutritionGoalsRequest, type CopyNutritionGoalsRequest, type CountResponse, type CreateExerciseRequest, type CreateFoodLogRequest, type CreateFoodRequest, type CreateMetricEventRequest, type CreateNutritionGoalsRequest, type CreateProgramRequest, type CreateUserGoalRequest, type CreateWorkoutRequest, type CreateWorkoutSessionRequest, type CurrentWeekSchedule, type DailyGoalProgress, type DailyMetricAggregate, type DailyNutritionProgress, type DailyNutritionSummary, type DateRangeParams, type DateString, type DateTime, DistanceConverter, type EnrollInProgramRequest, type EnrollmentProgress, type Equipment, type ErrorResponse, type Exercise, type ExerciseCapabilities, type ExerciseCategory, type ExerciseHistory, type ExerciseHistoryEntry, type Food, type FoodInsightsResponse, type FoodLog, type ForceDirection, type GetDailyMetricParams, type GetDailySummaryParams, type GetFoodInsightsParams, type GoalProgress, type GoalProgressStatus, type GoalTargetType, HeightConverter, type Insight, type InsightSeverity, type InsightType, type ListExercisesParams, type ListFoodLogsParams, type ListFoodsParams, type ListMetricEventsParams, type ListNutritionGoalsHistoryParams, type ListParams, type ListResponse, type ListWorkoutSessionsParams, type ListWorkoutsParams, type LoginRequest, type MealType, type MeasurementSystem, type Metric, type MetricAggregationType, type MetricCategory, type MetricDefinition, type MetricEvent, type MovementPattern, type MuscleGroup, NetworkError, NotFoundError, type NutritionGoal, type NutritionGoalType, type NutritionProgress, type NutritionalInformation, OpenLifeLog, type OpenLifeLogConfig, OpenLifeLogError, type PageInfo, PaginatedIterator, type PasswordResetConfirm, type PasswordResetRequest, type PersonalRecord, type PersonalRecordHistory, type PersonalRecordHistoryEntry, type Program, type ProgramEnrollment, type ProgramMetadata, type ProgramScheduleDay, type ProgramScheduleExercise, type QuickEntryFoodLogRequest, RateLimitError, type Recommendation, type RecordType, SLEEP_METRICS, type SearchParams, ServerError, type ServingSize, type SessionExerciseDetail, type SessionStatus, type SetData, type SignupRequest, type SuccessResponse, TimeoutError, type UUID, UnitConversionError, UnitConverter, type UpdateEnrollmentRequest, type UpdateExerciseItem, type UpdateExerciseRequest, type UpdateFoodLogRequest, type UpdateFoodRequest, type UpdateMetricEventRequest, type UpdateNutritionGoalsRequest, type UpdatePreferencesRequest, type UpdateProgramRequest, type UpdateUserGoalRequest, type UpdateUserRequest, type UpdateWorkoutExerciseRequest, type UpdateWorkoutRequest, type UpdateWorkoutSessionRequest, type User, type UserGoal, type UserNutritionGoals, type UserPreferences, VITAL_METRICS, ValidationError, WELLNESS_METRICS, WeightConverter, type Workout, type WorkoutExercise, type WorkoutFormat, type WorkoutSession, createPaginatedIterator, createUnitConverter, OpenLifeLog as default, fetchAllPages, getMetricDefinition, getMetricsByCategory, hasMorePages };
|
|
1132
|
+
export { ACTIVITY_METRICS, ALL_METRICS, type AddExerciseItem, type AddExercisesToWorkoutRequest, type AuthResponse, AuthenticationError, AuthorizationError, BODY_METRICS, type BulkCreateMetricEventsRequest, type BulkCreateNutritionGoalsRequest, type CopyNutritionGoalsRequest, type CountResponse, type CreateExerciseRequest, type CreateFoodLogRequest, type CreateFoodRequest, type CreateMetricEventRequest, type CreateNutritionGoalsRequest, type CreateProgramRequest, type CreateUserGoalRequest, type CreateWorkoutRequest, type CreateWorkoutSessionRequest, type CurrentWeekSchedule, type DailyGoalProgress, type DailyMetricAggregate, type DailyNutritionProgress, type DailyNutritionSummary, type DateRangeParams, type DateString, type DateTime, DistanceConverter, type EnrollInProgramRequest, type EnrollmentProgress, type Equipment, type ErrorResponse, type Exercise, type ExerciseCapabilities, type ExerciseCategory, type ExerciseEquipmentEntity, type ExerciseHistory, type ExerciseHistoryEntry, type Food, type FoodInsightsResponse, type FoodLog, type ForceDirection, type GetDailyMetricParams, type GetDailySummaryParams, type GetFoodInsightsParams, type GoalProgress, type GoalProgressStatus, type GoalTargetType, HeightConverter, type Insight, type InsightSeverity, type InsightType, type ListExercisesParams, type ListFoodLogsParams, type ListFoodsParams, type ListMetricEventsParams, type ListNutritionGoalsHistoryParams, type ListParams, type ListResponse, type ListWorkoutSessionsParams, type ListWorkoutsParams, type LoginRequest, type MealType, type MeasurementSystem, type Metric, type MetricAggregationType, type MetricCategory, type MetricDefinition, type MetricEvent, type MovementPattern, type MuscleGroup, type MuscleGroupEntity, NetworkError, NotFoundError, type NutritionGoal, type NutritionGoalType, type NutritionProgress, type NutritionalInformation, OpenLifeLog, type OpenLifeLogConfig, OpenLifeLogError, type PageInfo, PaginatedIterator, type PasswordResetConfirm, type PasswordResetRequest, type PersonalRecord, type PersonalRecordHistory, type PersonalRecordHistoryEntry, type Program, type ProgramEnrollment, type ProgramMetadata, type ProgramScheduleDay, type ProgramScheduleExercise, type QuickEntryFoodLogRequest, RateLimitError, type Recommendation, type RecordType, SLEEP_METRICS, type SearchParams, ServerError, type ServingSize, type SessionExerciseDetail, type SessionStatus, type SetData, type SignupRequest, type SuccessResponse, TimeoutError, type UUID, UnitConversionError, UnitConverter, type UpdateEnrollmentRequest, type UpdateExerciseItem, type UpdateExerciseRequest, type UpdateFoodLogRequest, type UpdateFoodRequest, type UpdateMetricEventRequest, type UpdateNutritionGoalsRequest, type UpdatePreferencesRequest, type UpdateProgramRequest, type UpdateUserGoalRequest, type UpdateUserRequest, type UpdateWorkoutExerciseRequest, type UpdateWorkoutRequest, type UpdateWorkoutSessionRequest, type User, type UserGoal, type UserNutritionGoals, type UserPreferences, VITAL_METRICS, ValidationError, WELLNESS_METRICS, WeightConverter, type Workout, type WorkoutExercise, type WorkoutFormat, type WorkoutSession, createPaginatedIterator, createUnitConverter, OpenLifeLog as default, fetchAllPages, getMetricDefinition, getMetricsByCategory, hasMorePages };
|
package/dist/index.d.ts
CHANGED
|
@@ -247,6 +247,24 @@ interface QuickEntryFoodLogRequest {
|
|
|
247
247
|
loggedAt?: DateTime;
|
|
248
248
|
}
|
|
249
249
|
|
|
250
|
+
interface MuscleGroupEntity {
|
|
251
|
+
id: UUID;
|
|
252
|
+
name: string;
|
|
253
|
+
medicalName?: string;
|
|
254
|
+
bodyPart?: string;
|
|
255
|
+
description?: string;
|
|
256
|
+
createdAt: DateTime;
|
|
257
|
+
deletedAt?: DateTime;
|
|
258
|
+
}
|
|
259
|
+
interface ExerciseEquipmentEntity {
|
|
260
|
+
id: UUID;
|
|
261
|
+
name: string;
|
|
262
|
+
category?: string;
|
|
263
|
+
description?: string;
|
|
264
|
+
isActive: boolean;
|
|
265
|
+
createdAt: DateTime;
|
|
266
|
+
deletedAt?: DateTime;
|
|
267
|
+
}
|
|
250
268
|
interface ExerciseCapabilities {
|
|
251
269
|
supportsWeight: boolean;
|
|
252
270
|
isBodyweight: boolean;
|
|
@@ -912,6 +930,8 @@ declare class ExercisesResource {
|
|
|
912
930
|
getFavorites(params?: ListExercisesParams): Promise<ListResponse<Exercise>>;
|
|
913
931
|
addToFavorites(exerciseId: string): Promise<void>;
|
|
914
932
|
removeFromFavorites(exerciseId: string): Promise<void>;
|
|
933
|
+
getMuscleGroups(): Promise<MuscleGroupEntity[]>;
|
|
934
|
+
getEquipment(): Promise<ExerciseEquipmentEntity[]>;
|
|
915
935
|
}
|
|
916
936
|
|
|
917
937
|
declare class WorkoutsResource {
|
|
@@ -1018,6 +1038,7 @@ declare class GoalsResource {
|
|
|
1018
1038
|
getNutritionGoalsHistory(params?: ListNutritionGoalsHistoryParams): Promise<ListResponse<UserNutritionGoals>>;
|
|
1019
1039
|
getNutritionProgress(): Promise<DailyNutritionProgress>;
|
|
1020
1040
|
getNutritionProgressByDate(date: string): Promise<DailyNutritionProgress>;
|
|
1041
|
+
private convertNutritionProgressFromMetric;
|
|
1021
1042
|
}
|
|
1022
1043
|
|
|
1023
1044
|
declare class AIResource {
|
|
@@ -1108,4 +1129,4 @@ declare class UnitConversionError extends OpenLifeLogError {
|
|
|
1108
1129
|
constructor(message?: string, rawError?: any);
|
|
1109
1130
|
}
|
|
1110
1131
|
|
|
1111
|
-
export { ACTIVITY_METRICS, ALL_METRICS, type AddExerciseItem, type AddExercisesToWorkoutRequest, type AuthResponse, AuthenticationError, AuthorizationError, BODY_METRICS, type BulkCreateMetricEventsRequest, type BulkCreateNutritionGoalsRequest, type CopyNutritionGoalsRequest, type CountResponse, type CreateExerciseRequest, type CreateFoodLogRequest, type CreateFoodRequest, type CreateMetricEventRequest, type CreateNutritionGoalsRequest, type CreateProgramRequest, type CreateUserGoalRequest, type CreateWorkoutRequest, type CreateWorkoutSessionRequest, type CurrentWeekSchedule, type DailyGoalProgress, type DailyMetricAggregate, type DailyNutritionProgress, type DailyNutritionSummary, type DateRangeParams, type DateString, type DateTime, DistanceConverter, type EnrollInProgramRequest, type EnrollmentProgress, type Equipment, type ErrorResponse, type Exercise, type ExerciseCapabilities, type ExerciseCategory, type ExerciseHistory, type ExerciseHistoryEntry, type Food, type FoodInsightsResponse, type FoodLog, type ForceDirection, type GetDailyMetricParams, type GetDailySummaryParams, type GetFoodInsightsParams, type GoalProgress, type GoalProgressStatus, type GoalTargetType, HeightConverter, type Insight, type InsightSeverity, type InsightType, type ListExercisesParams, type ListFoodLogsParams, type ListFoodsParams, type ListMetricEventsParams, type ListNutritionGoalsHistoryParams, type ListParams, type ListResponse, type ListWorkoutSessionsParams, type ListWorkoutsParams, type LoginRequest, type MealType, type MeasurementSystem, type Metric, type MetricAggregationType, type MetricCategory, type MetricDefinition, type MetricEvent, type MovementPattern, type MuscleGroup, NetworkError, NotFoundError, type NutritionGoal, type NutritionGoalType, type NutritionProgress, type NutritionalInformation, OpenLifeLog, type OpenLifeLogConfig, OpenLifeLogError, type PageInfo, PaginatedIterator, type PasswordResetConfirm, type PasswordResetRequest, type PersonalRecord, type PersonalRecordHistory, type PersonalRecordHistoryEntry, type Program, type ProgramEnrollment, type ProgramMetadata, type ProgramScheduleDay, type ProgramScheduleExercise, type QuickEntryFoodLogRequest, RateLimitError, type Recommendation, type RecordType, SLEEP_METRICS, type SearchParams, ServerError, type ServingSize, type SessionExerciseDetail, type SessionStatus, type SetData, type SignupRequest, type SuccessResponse, TimeoutError, type UUID, UnitConversionError, UnitConverter, type UpdateEnrollmentRequest, type UpdateExerciseItem, type UpdateExerciseRequest, type UpdateFoodLogRequest, type UpdateFoodRequest, type UpdateMetricEventRequest, type UpdateNutritionGoalsRequest, type UpdatePreferencesRequest, type UpdateProgramRequest, type UpdateUserGoalRequest, type UpdateUserRequest, type UpdateWorkoutExerciseRequest, type UpdateWorkoutRequest, type UpdateWorkoutSessionRequest, type User, type UserGoal, type UserNutritionGoals, type UserPreferences, VITAL_METRICS, ValidationError, WELLNESS_METRICS, WeightConverter, type Workout, type WorkoutExercise, type WorkoutFormat, type WorkoutSession, createPaginatedIterator, createUnitConverter, OpenLifeLog as default, fetchAllPages, getMetricDefinition, getMetricsByCategory, hasMorePages };
|
|
1132
|
+
export { ACTIVITY_METRICS, ALL_METRICS, type AddExerciseItem, type AddExercisesToWorkoutRequest, type AuthResponse, AuthenticationError, AuthorizationError, BODY_METRICS, type BulkCreateMetricEventsRequest, type BulkCreateNutritionGoalsRequest, type CopyNutritionGoalsRequest, type CountResponse, type CreateExerciseRequest, type CreateFoodLogRequest, type CreateFoodRequest, type CreateMetricEventRequest, type CreateNutritionGoalsRequest, type CreateProgramRequest, type CreateUserGoalRequest, type CreateWorkoutRequest, type CreateWorkoutSessionRequest, type CurrentWeekSchedule, type DailyGoalProgress, type DailyMetricAggregate, type DailyNutritionProgress, type DailyNutritionSummary, type DateRangeParams, type DateString, type DateTime, DistanceConverter, type EnrollInProgramRequest, type EnrollmentProgress, type Equipment, type ErrorResponse, type Exercise, type ExerciseCapabilities, type ExerciseCategory, type ExerciseEquipmentEntity, type ExerciseHistory, type ExerciseHistoryEntry, type Food, type FoodInsightsResponse, type FoodLog, type ForceDirection, type GetDailyMetricParams, type GetDailySummaryParams, type GetFoodInsightsParams, type GoalProgress, type GoalProgressStatus, type GoalTargetType, HeightConverter, type Insight, type InsightSeverity, type InsightType, type ListExercisesParams, type ListFoodLogsParams, type ListFoodsParams, type ListMetricEventsParams, type ListNutritionGoalsHistoryParams, type ListParams, type ListResponse, type ListWorkoutSessionsParams, type ListWorkoutsParams, type LoginRequest, type MealType, type MeasurementSystem, type Metric, type MetricAggregationType, type MetricCategory, type MetricDefinition, type MetricEvent, type MovementPattern, type MuscleGroup, type MuscleGroupEntity, NetworkError, NotFoundError, type NutritionGoal, type NutritionGoalType, type NutritionProgress, type NutritionalInformation, OpenLifeLog, type OpenLifeLogConfig, OpenLifeLogError, type PageInfo, PaginatedIterator, type PasswordResetConfirm, type PasswordResetRequest, type PersonalRecord, type PersonalRecordHistory, type PersonalRecordHistoryEntry, type Program, type ProgramEnrollment, type ProgramMetadata, type ProgramScheduleDay, type ProgramScheduleExercise, type QuickEntryFoodLogRequest, RateLimitError, type Recommendation, type RecordType, SLEEP_METRICS, type SearchParams, ServerError, type ServingSize, type SessionExerciseDetail, type SessionStatus, type SetData, type SignupRequest, type SuccessResponse, TimeoutError, type UUID, UnitConversionError, UnitConverter, type UpdateEnrollmentRequest, type UpdateExerciseItem, type UpdateExerciseRequest, type UpdateFoodLogRequest, type UpdateFoodRequest, type UpdateMetricEventRequest, type UpdateNutritionGoalsRequest, type UpdatePreferencesRequest, type UpdateProgramRequest, type UpdateUserGoalRequest, type UpdateUserRequest, type UpdateWorkoutExerciseRequest, type UpdateWorkoutRequest, type UpdateWorkoutSessionRequest, type User, type UserGoal, type UserNutritionGoals, type UserPreferences, VITAL_METRICS, ValidationError, WELLNESS_METRICS, WeightConverter, type Workout, type WorkoutExercise, type WorkoutFormat, type WorkoutSession, createPaginatedIterator, createUnitConverter, OpenLifeLog as default, fetchAllPages, getMetricDefinition, getMetricsByCategory, hasMorePages };
|
package/dist/index.js
CHANGED
|
@@ -1469,6 +1469,30 @@ var ExercisesResource = class {
|
|
|
1469
1469
|
async removeFromFavorites(exerciseId) {
|
|
1470
1470
|
await this.http.delete(`/v1/exercises/${exerciseId}/favorite`);
|
|
1471
1471
|
}
|
|
1472
|
+
/**
|
|
1473
|
+
* Get all muscle groups
|
|
1474
|
+
*
|
|
1475
|
+
* @example
|
|
1476
|
+
* ```typescript
|
|
1477
|
+
* const muscleGroups = await client.exercises.getMuscleGroups();
|
|
1478
|
+
* ```
|
|
1479
|
+
*/
|
|
1480
|
+
async getMuscleGroups() {
|
|
1481
|
+
const response = await this.http.get("/v1/exercises/muscle-groups");
|
|
1482
|
+
return response.data;
|
|
1483
|
+
}
|
|
1484
|
+
/**
|
|
1485
|
+
* Get all exercise equipment
|
|
1486
|
+
*
|
|
1487
|
+
* @example
|
|
1488
|
+
* ```typescript
|
|
1489
|
+
* const equipment = await client.exercises.getEquipment();
|
|
1490
|
+
* ```
|
|
1491
|
+
*/
|
|
1492
|
+
async getEquipment() {
|
|
1493
|
+
const response = await this.http.get("/v1/exercises/equipment");
|
|
1494
|
+
return response.data;
|
|
1495
|
+
}
|
|
1472
1496
|
};
|
|
1473
1497
|
|
|
1474
1498
|
// resources/workouts.ts
|
|
@@ -2163,6 +2187,9 @@ var GoalsResource = class {
|
|
|
2163
2187
|
*/
|
|
2164
2188
|
async getNutritionProgress() {
|
|
2165
2189
|
const response = await this.http.get("/v1/nutrition/progress/today");
|
|
2190
|
+
if (this.config.autoConvertUnits) {
|
|
2191
|
+
return this.convertNutritionProgressFromMetric(response.data);
|
|
2192
|
+
}
|
|
2166
2193
|
return response.data;
|
|
2167
2194
|
}
|
|
2168
2195
|
/**
|
|
@@ -2170,8 +2197,33 @@ var GoalsResource = class {
|
|
|
2170
2197
|
*/
|
|
2171
2198
|
async getNutritionProgressByDate(date) {
|
|
2172
2199
|
const response = await this.http.get(`/v1/nutrition/progress/date/${date}`);
|
|
2200
|
+
if (this.config.autoConvertUnits) {
|
|
2201
|
+
return this.convertNutritionProgressFromMetric(response.data);
|
|
2202
|
+
}
|
|
2173
2203
|
return response.data;
|
|
2174
2204
|
}
|
|
2205
|
+
/**
|
|
2206
|
+
* Convert nutrition progress data from metric to user's preferred units
|
|
2207
|
+
* Handles water values in the progress data
|
|
2208
|
+
*/
|
|
2209
|
+
convertNutritionProgressFromMetric(data) {
|
|
2210
|
+
if (!data || !data.progress) {
|
|
2211
|
+
return data;
|
|
2212
|
+
}
|
|
2213
|
+
const converted = { ...data };
|
|
2214
|
+
converted.progress = data.progress.map((nutrient) => {
|
|
2215
|
+
if (nutrient.nutrientKey === "water" && this.config.measurementSystem === "imperial") {
|
|
2216
|
+
return {
|
|
2217
|
+
...nutrient,
|
|
2218
|
+
current: nutrient.current ? VolumeConverter.fromMetric(nutrient.current, this.config.measurementSystem) : nutrient.current,
|
|
2219
|
+
target: nutrient.target ? VolumeConverter.fromMetric(nutrient.target, this.config.measurementSystem) : nutrient.target,
|
|
2220
|
+
remaining: nutrient.remaining ? VolumeConverter.fromMetric(nutrient.remaining, this.config.measurementSystem) : nutrient.remaining
|
|
2221
|
+
};
|
|
2222
|
+
}
|
|
2223
|
+
return nutrient;
|
|
2224
|
+
});
|
|
2225
|
+
return converted;
|
|
2226
|
+
}
|
|
2175
2227
|
};
|
|
2176
2228
|
|
|
2177
2229
|
// resources/ai.ts
|
package/dist/index.mjs
CHANGED
|
@@ -1415,6 +1415,30 @@ var ExercisesResource = class {
|
|
|
1415
1415
|
async removeFromFavorites(exerciseId) {
|
|
1416
1416
|
await this.http.delete(`/v1/exercises/${exerciseId}/favorite`);
|
|
1417
1417
|
}
|
|
1418
|
+
/**
|
|
1419
|
+
* Get all muscle groups
|
|
1420
|
+
*
|
|
1421
|
+
* @example
|
|
1422
|
+
* ```typescript
|
|
1423
|
+
* const muscleGroups = await client.exercises.getMuscleGroups();
|
|
1424
|
+
* ```
|
|
1425
|
+
*/
|
|
1426
|
+
async getMuscleGroups() {
|
|
1427
|
+
const response = await this.http.get("/v1/exercises/muscle-groups");
|
|
1428
|
+
return response.data;
|
|
1429
|
+
}
|
|
1430
|
+
/**
|
|
1431
|
+
* Get all exercise equipment
|
|
1432
|
+
*
|
|
1433
|
+
* @example
|
|
1434
|
+
* ```typescript
|
|
1435
|
+
* const equipment = await client.exercises.getEquipment();
|
|
1436
|
+
* ```
|
|
1437
|
+
*/
|
|
1438
|
+
async getEquipment() {
|
|
1439
|
+
const response = await this.http.get("/v1/exercises/equipment");
|
|
1440
|
+
return response.data;
|
|
1441
|
+
}
|
|
1418
1442
|
};
|
|
1419
1443
|
|
|
1420
1444
|
// resources/workouts.ts
|
|
@@ -2109,6 +2133,9 @@ var GoalsResource = class {
|
|
|
2109
2133
|
*/
|
|
2110
2134
|
async getNutritionProgress() {
|
|
2111
2135
|
const response = await this.http.get("/v1/nutrition/progress/today");
|
|
2136
|
+
if (this.config.autoConvertUnits) {
|
|
2137
|
+
return this.convertNutritionProgressFromMetric(response.data);
|
|
2138
|
+
}
|
|
2112
2139
|
return response.data;
|
|
2113
2140
|
}
|
|
2114
2141
|
/**
|
|
@@ -2116,8 +2143,33 @@ var GoalsResource = class {
|
|
|
2116
2143
|
*/
|
|
2117
2144
|
async getNutritionProgressByDate(date) {
|
|
2118
2145
|
const response = await this.http.get(`/v1/nutrition/progress/date/${date}`);
|
|
2146
|
+
if (this.config.autoConvertUnits) {
|
|
2147
|
+
return this.convertNutritionProgressFromMetric(response.data);
|
|
2148
|
+
}
|
|
2119
2149
|
return response.data;
|
|
2120
2150
|
}
|
|
2151
|
+
/**
|
|
2152
|
+
* Convert nutrition progress data from metric to user's preferred units
|
|
2153
|
+
* Handles water values in the progress data
|
|
2154
|
+
*/
|
|
2155
|
+
convertNutritionProgressFromMetric(data) {
|
|
2156
|
+
if (!data || !data.progress) {
|
|
2157
|
+
return data;
|
|
2158
|
+
}
|
|
2159
|
+
const converted = { ...data };
|
|
2160
|
+
converted.progress = data.progress.map((nutrient) => {
|
|
2161
|
+
if (nutrient.nutrientKey === "water" && this.config.measurementSystem === "imperial") {
|
|
2162
|
+
return {
|
|
2163
|
+
...nutrient,
|
|
2164
|
+
current: nutrient.current ? VolumeConverter.fromMetric(nutrient.current, this.config.measurementSystem) : nutrient.current,
|
|
2165
|
+
target: nutrient.target ? VolumeConverter.fromMetric(nutrient.target, this.config.measurementSystem) : nutrient.target,
|
|
2166
|
+
remaining: nutrient.remaining ? VolumeConverter.fromMetric(nutrient.remaining, this.config.measurementSystem) : nutrient.remaining
|
|
2167
|
+
};
|
|
2168
|
+
}
|
|
2169
|
+
return nutrient;
|
|
2170
|
+
});
|
|
2171
|
+
return converted;
|
|
2172
|
+
}
|
|
2121
2173
|
};
|
|
2122
2174
|
|
|
2123
2175
|
// resources/ai.ts
|
package/package.json
CHANGED
package/resources/exercises.ts
CHANGED
|
@@ -6,6 +6,8 @@ import type {
|
|
|
6
6
|
ListExercisesParams,
|
|
7
7
|
ListResponse,
|
|
8
8
|
CountResponse,
|
|
9
|
+
MuscleGroupEntity,
|
|
10
|
+
ExerciseEquipmentEntity,
|
|
9
11
|
} from '../types';
|
|
10
12
|
import { createPaginatedIterator, type PaginatedIterator } from '../utils/pagination';
|
|
11
13
|
|
|
@@ -109,4 +111,30 @@ export class ExercisesResource {
|
|
|
109
111
|
async removeFromFavorites(exerciseId: string): Promise<void> {
|
|
110
112
|
await this.http.delete(`/v1/exercises/${exerciseId}/favorite`);
|
|
111
113
|
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* Get all muscle groups
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* const muscleGroups = await client.exercises.getMuscleGroups();
|
|
121
|
+
* ```
|
|
122
|
+
*/
|
|
123
|
+
async getMuscleGroups(): Promise<MuscleGroupEntity[]> {
|
|
124
|
+
const response = await this.http.get<MuscleGroupEntity[]>('/v1/exercises/muscle-groups');
|
|
125
|
+
return response.data;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Get all exercise equipment
|
|
130
|
+
*
|
|
131
|
+
* @example
|
|
132
|
+
* ```typescript
|
|
133
|
+
* const equipment = await client.exercises.getEquipment();
|
|
134
|
+
* ```
|
|
135
|
+
*/
|
|
136
|
+
async getEquipment(): Promise<ExerciseEquipmentEntity[]> {
|
|
137
|
+
const response = await this.http.get<ExerciseEquipmentEntity[]>('/v1/exercises/equipment');
|
|
138
|
+
return response.data;
|
|
139
|
+
}
|
|
112
140
|
}
|
package/resources/goals.ts
CHANGED
|
@@ -14,7 +14,7 @@ import type {
|
|
|
14
14
|
ListNutritionGoalsHistoryParams,
|
|
15
15
|
ListResponse,
|
|
16
16
|
} from '../types';
|
|
17
|
-
import { convertNutritionGoalsToMetric, convertNutritionGoalsFromMetric } from '../utils/units';
|
|
17
|
+
import { convertNutritionGoalsToMetric, convertNutritionGoalsFromMetric, VolumeConverter } from '../utils/units';
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* Goals resource
|
|
@@ -177,6 +177,11 @@ export class GoalsResource {
|
|
|
177
177
|
*/
|
|
178
178
|
async getNutritionProgress(): Promise<DailyNutritionProgress> {
|
|
179
179
|
const response = await this.http.get<DailyNutritionProgress>('/v1/nutrition/progress/today');
|
|
180
|
+
|
|
181
|
+
if (this.config.autoConvertUnits) {
|
|
182
|
+
return this.convertNutritionProgressFromMetric(response.data);
|
|
183
|
+
}
|
|
184
|
+
|
|
180
185
|
return response.data;
|
|
181
186
|
}
|
|
182
187
|
|
|
@@ -185,6 +190,37 @@ export class GoalsResource {
|
|
|
185
190
|
*/
|
|
186
191
|
async getNutritionProgressByDate(date: string): Promise<DailyNutritionProgress> {
|
|
187
192
|
const response = await this.http.get<DailyNutritionProgress>(`/v1/nutrition/progress/date/${date}`);
|
|
193
|
+
|
|
194
|
+
if (this.config.autoConvertUnits) {
|
|
195
|
+
return this.convertNutritionProgressFromMetric(response.data);
|
|
196
|
+
}
|
|
197
|
+
|
|
188
198
|
return response.data;
|
|
189
199
|
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Convert nutrition progress data from metric to user's preferred units
|
|
203
|
+
* Handles water values in the progress data
|
|
204
|
+
*/
|
|
205
|
+
private convertNutritionProgressFromMetric(data: DailyNutritionProgress): DailyNutritionProgress {
|
|
206
|
+
if (!data || !data.progress) {
|
|
207
|
+
return data;
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
const converted = { ...data };
|
|
211
|
+
converted.progress = data.progress.map(nutrient => {
|
|
212
|
+
// Only convert water from ml to oz/fl oz for imperial users
|
|
213
|
+
if (nutrient.nutrientKey === 'water' && this.config.measurementSystem === 'imperial') {
|
|
214
|
+
return {
|
|
215
|
+
...nutrient,
|
|
216
|
+
current: nutrient.current ? VolumeConverter.fromMetric(nutrient.current, this.config.measurementSystem) : nutrient.current,
|
|
217
|
+
target: nutrient.target ? VolumeConverter.fromMetric(nutrient.target, this.config.measurementSystem) : nutrient.target,
|
|
218
|
+
remaining: nutrient.remaining ? VolumeConverter.fromMetric(nutrient.remaining, this.config.measurementSystem) : nutrient.remaining,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
return nutrient;
|
|
222
|
+
});
|
|
223
|
+
|
|
224
|
+
return converted;
|
|
225
|
+
}
|
|
190
226
|
}
|
package/types/exercise.ts
CHANGED
|
@@ -13,6 +13,32 @@ import type {
|
|
|
13
13
|
* Exercise types
|
|
14
14
|
*/
|
|
15
15
|
|
|
16
|
+
/**
|
|
17
|
+
* Muscle group entity from database
|
|
18
|
+
*/
|
|
19
|
+
export interface MuscleGroupEntity {
|
|
20
|
+
id: UUID;
|
|
21
|
+
name: string;
|
|
22
|
+
medicalName?: string;
|
|
23
|
+
bodyPart?: string;
|
|
24
|
+
description?: string;
|
|
25
|
+
createdAt: DateTime;
|
|
26
|
+
deletedAt?: DateTime;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Exercise equipment entity from database
|
|
31
|
+
*/
|
|
32
|
+
export interface ExerciseEquipmentEntity {
|
|
33
|
+
id: UUID;
|
|
34
|
+
name: string;
|
|
35
|
+
category?: string;
|
|
36
|
+
description?: string;
|
|
37
|
+
isActive: boolean;
|
|
38
|
+
createdAt: DateTime;
|
|
39
|
+
deletedAt?: DateTime;
|
|
40
|
+
}
|
|
41
|
+
|
|
16
42
|
/**
|
|
17
43
|
* Exercise capabilities
|
|
18
44
|
*/
|