@sunsteel/contracts 0.73.0 → 0.74.0
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.cjs +102 -0
- package/dist/index.d.cts +120 -2
- package/dist/index.d.ts +120 -2
- package/dist/index.js +94 -0
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -40,6 +40,9 @@ __export(index_exports, {
|
|
|
40
40
|
BAR_CHOICES_KG: () => BAR_CHOICES_KG,
|
|
41
41
|
BAR_WARM_UP_STEPS: () => BAR_WARM_UP_STEPS,
|
|
42
42
|
BLOCKED_MEMBERS_MAX: () => BLOCKED_MEMBERS_MAX,
|
|
43
|
+
BODY_MEASUREMENT_FIELDS: () => BODY_MEASUREMENT_FIELDS,
|
|
44
|
+
BODY_MEASUREMENT_FIELD_KEYS: () => BODY_MEASUREMENT_FIELD_KEYS,
|
|
45
|
+
BODY_PROGRESS_RANGES: () => BODY_PROGRESS_RANGES,
|
|
43
46
|
CLONE_ROUTINE_REFUSALS: () => CLONE_ROUTINE_REFUSALS,
|
|
44
47
|
COMEBACK_MIN_INACTIVE_DAYS: () => COMEBACK_MIN_INACTIVE_DAYS,
|
|
45
48
|
COMEBACK_RECOGNITION_LIMIT: () => COMEBACK_RECOGNITION_LIMIT,
|
|
@@ -190,6 +193,8 @@ __export(index_exports, {
|
|
|
190
193
|
WORKOUT_SESSION_STATUSES: () => WORKOUT_SESSION_STATUSES,
|
|
191
194
|
accountExportFileName: () => accountExportFileName,
|
|
192
195
|
applyDeload: () => applyDeload,
|
|
196
|
+
bodyMeasurementProblems: () => bodyMeasurementProblems,
|
|
197
|
+
bodyProgressRangeStart: () => bodyProgressRangeStart,
|
|
193
198
|
buildWarmUpRamp: () => buildWarmUpRamp,
|
|
194
199
|
calculatePlateLoading: () => calculatePlateLoading,
|
|
195
200
|
canLinkToNext: () => canLinkToNext,
|
|
@@ -205,8 +210,10 @@ __export(index_exports, {
|
|
|
205
210
|
followWorkingLoad: () => followWorkingLoad,
|
|
206
211
|
hasOversizedGroup: () => hasOversizedGroup,
|
|
207
212
|
isBarLoaded: () => isBarLoaded,
|
|
213
|
+
isBodyMeasurementDate: () => isBodyMeasurementDate,
|
|
208
214
|
isSetKind: () => isSetKind,
|
|
209
215
|
isWithinQuietHours: () => isWithinQuietHours,
|
|
216
|
+
latestBodyWeight: () => latestBodyWeight,
|
|
210
217
|
leadWorkingWeight: () => leadWorkingWeight,
|
|
211
218
|
matchesDeletionConfirmation: () => matchesDeletionConfirmation,
|
|
212
219
|
normalizeExerciseLinks: () => normalizeExerciseLinks,
|
|
@@ -219,6 +226,7 @@ __export(index_exports, {
|
|
|
219
226
|
sessionCorrectionWindow: () => sessionCorrectionWindow,
|
|
220
227
|
setKindOf: () => setKindOf,
|
|
221
228
|
setLogValuesDiffer: () => setLogValuesDiffer,
|
|
229
|
+
summarizeBodyProgress: () => summarizeBodyProgress,
|
|
222
230
|
trainingBlockCovers: () => trainingBlockCovers,
|
|
223
231
|
warmUpLoad: () => warmUpLoad
|
|
224
232
|
});
|
|
@@ -490,6 +498,92 @@ var MEASURABLE_GOAL_TYPES = [
|
|
|
490
498
|
var MEASURABLE_GOAL_DIRECTIONS = ["AT_LEAST", "AT_MOST"];
|
|
491
499
|
var MEASURABLE_GOALS_MAX = 8;
|
|
492
500
|
|
|
501
|
+
// src/body-measurements.ts
|
|
502
|
+
var BODY_MEASUREMENT_FIELDS = [
|
|
503
|
+
{ key: "weightKg", label: "Weight", unit: "kg", min: 20, max: 1e3 },
|
|
504
|
+
{ key: "waistCm", label: "Waist", unit: "cm", min: 10, max: 300 },
|
|
505
|
+
{ key: "hipsCm", label: "Hips", unit: "cm", min: 10, max: 300 },
|
|
506
|
+
{ key: "chestCm", label: "Chest", unit: "cm", min: 10, max: 300 },
|
|
507
|
+
{ key: "armCm", label: "Arm", unit: "cm", min: 10, max: 300 },
|
|
508
|
+
{ key: "thighCm", label: "Thigh", unit: "cm", min: 10, max: 300 },
|
|
509
|
+
{ key: "bodyFatPercent", label: "Body fat", unit: "%", min: 2, max: 75 }
|
|
510
|
+
];
|
|
511
|
+
var BODY_MEASUREMENT_FIELD_KEYS = BODY_MEASUREMENT_FIELDS.map((field) => field.key);
|
|
512
|
+
var BODY_PROGRESS_RANGES = ["30D", "90D", "1Y", "ALL"];
|
|
513
|
+
var DATE_PATTERN = /^(\d{4})-(\d{2})-(\d{2})$/;
|
|
514
|
+
function isBodyMeasurementDate(value) {
|
|
515
|
+
const match = DATE_PATTERN.exec(value);
|
|
516
|
+
if (!match) return false;
|
|
517
|
+
const date = /* @__PURE__ */ new Date(`${value}T00:00:00Z`);
|
|
518
|
+
return !Number.isNaN(date.getTime()) && date.toISOString().slice(0, 10) === value;
|
|
519
|
+
}
|
|
520
|
+
function shiftDate(date, days) {
|
|
521
|
+
const shifted = /* @__PURE__ */ new Date(`${date}T00:00:00Z`);
|
|
522
|
+
shifted.setUTCDate(shifted.getUTCDate() + days);
|
|
523
|
+
return shifted.toISOString().slice(0, 10);
|
|
524
|
+
}
|
|
525
|
+
function bodyProgressRangeStart(range, today) {
|
|
526
|
+
switch (range) {
|
|
527
|
+
case "30D":
|
|
528
|
+
return shiftDate(today, -29);
|
|
529
|
+
case "90D":
|
|
530
|
+
return shiftDate(today, -89);
|
|
531
|
+
case "1Y":
|
|
532
|
+
return shiftDate(today, -364);
|
|
533
|
+
case "ALL":
|
|
534
|
+
return null;
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
function bodyMeasurementProblems(input) {
|
|
538
|
+
const problems = [];
|
|
539
|
+
let values = 0;
|
|
540
|
+
for (const field of BODY_MEASUREMENT_FIELDS) {
|
|
541
|
+
const value = input[field.key];
|
|
542
|
+
if (value === void 0 || value === null) continue;
|
|
543
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
544
|
+
problems.push({ field: field.key, message: `${field.label} must be a number` });
|
|
545
|
+
continue;
|
|
546
|
+
}
|
|
547
|
+
values += 1;
|
|
548
|
+
if (value < field.min || value > field.max) {
|
|
549
|
+
problems.push({
|
|
550
|
+
field: field.key,
|
|
551
|
+
message: `${field.label} must be between ${field.min} and ${field.max} ${field.unit}`
|
|
552
|
+
});
|
|
553
|
+
}
|
|
554
|
+
}
|
|
555
|
+
if (values === 0 && problems.length === 0) {
|
|
556
|
+
problems.push({ field: null, message: "Add at least one measurement" });
|
|
557
|
+
}
|
|
558
|
+
return problems;
|
|
559
|
+
}
|
|
560
|
+
function summarizeBodyProgress(entries, rangeStart) {
|
|
561
|
+
const ordered = [...entries].sort((a, b) => a.date.localeCompare(b.date));
|
|
562
|
+
return BODY_MEASUREMENT_FIELD_KEYS.map((field) => {
|
|
563
|
+
const recorded = ordered.filter((entry) => entry[field] !== null);
|
|
564
|
+
const latestEntry = recorded[recorded.length - 1] ?? null;
|
|
565
|
+
const firstInRange = recorded.find((entry) => rangeStart === null || entry.date >= rangeStart) ?? null;
|
|
566
|
+
const hasChange = latestEntry !== null && firstInRange !== null && firstInRange.date !== latestEntry.date;
|
|
567
|
+
return {
|
|
568
|
+
field,
|
|
569
|
+
latest: latestEntry?.[field] ?? null,
|
|
570
|
+
latestDate: latestEntry?.date ?? null,
|
|
571
|
+
change: hasChange ? Math.round((latestEntry[field] - firstInRange[field]) * 100) / 100 : null,
|
|
572
|
+
changeSince: hasChange ? firstInRange.date : null
|
|
573
|
+
};
|
|
574
|
+
});
|
|
575
|
+
}
|
|
576
|
+
function latestBodyWeight(entries) {
|
|
577
|
+
let latest = null;
|
|
578
|
+
for (const entry of entries) {
|
|
579
|
+
if (entry.weightKg === null) continue;
|
|
580
|
+
if (latest === null || entry.date > latest.date) {
|
|
581
|
+
latest = { date: entry.date, weightKg: entry.weightKg };
|
|
582
|
+
}
|
|
583
|
+
}
|
|
584
|
+
return latest?.weightKg ?? null;
|
|
585
|
+
}
|
|
586
|
+
|
|
493
587
|
// src/achievements.ts
|
|
494
588
|
var ACHIEVEMENT_CATEGORIES = [
|
|
495
589
|
"SESSIONS",
|
|
@@ -1353,6 +1447,9 @@ function accountExportFileName(username, exportedAt) {
|
|
|
1353
1447
|
BAR_CHOICES_KG,
|
|
1354
1448
|
BAR_WARM_UP_STEPS,
|
|
1355
1449
|
BLOCKED_MEMBERS_MAX,
|
|
1450
|
+
BODY_MEASUREMENT_FIELDS,
|
|
1451
|
+
BODY_MEASUREMENT_FIELD_KEYS,
|
|
1452
|
+
BODY_PROGRESS_RANGES,
|
|
1356
1453
|
CLONE_ROUTINE_REFUSALS,
|
|
1357
1454
|
COMEBACK_MIN_INACTIVE_DAYS,
|
|
1358
1455
|
COMEBACK_RECOGNITION_LIMIT,
|
|
@@ -1503,6 +1600,8 @@ function accountExportFileName(username, exportedAt) {
|
|
|
1503
1600
|
WORKOUT_SESSION_STATUSES,
|
|
1504
1601
|
accountExportFileName,
|
|
1505
1602
|
applyDeload,
|
|
1603
|
+
bodyMeasurementProblems,
|
|
1604
|
+
bodyProgressRangeStart,
|
|
1506
1605
|
buildWarmUpRamp,
|
|
1507
1606
|
calculatePlateLoading,
|
|
1508
1607
|
canLinkToNext,
|
|
@@ -1518,8 +1617,10 @@ function accountExportFileName(username, exportedAt) {
|
|
|
1518
1617
|
followWorkingLoad,
|
|
1519
1618
|
hasOversizedGroup,
|
|
1520
1619
|
isBarLoaded,
|
|
1620
|
+
isBodyMeasurementDate,
|
|
1521
1621
|
isSetKind,
|
|
1522
1622
|
isWithinQuietHours,
|
|
1623
|
+
latestBodyWeight,
|
|
1523
1624
|
leadWorkingWeight,
|
|
1524
1625
|
matchesDeletionConfirmation,
|
|
1525
1626
|
normalizeExerciseLinks,
|
|
@@ -1532,6 +1633,7 @@ function accountExportFileName(username, exportedAt) {
|
|
|
1532
1633
|
sessionCorrectionWindow,
|
|
1533
1634
|
setKindOf,
|
|
1534
1635
|
setLogValuesDiffer,
|
|
1636
|
+
summarizeBodyProgress,
|
|
1535
1637
|
trainingBlockCovers,
|
|
1536
1638
|
warmUpLoad
|
|
1537
1639
|
});
|
package/dist/index.d.cts
CHANGED
|
@@ -1773,6 +1773,8 @@ interface ProfilePrivacySettings {
|
|
|
1773
1773
|
routines: ProfileVisibility;
|
|
1774
1774
|
achievements: ProfileVisibility;
|
|
1775
1775
|
bodyMetrics: ProfileVisibility;
|
|
1776
|
+
/** PROG-12: the dated weight and measurement history, separate from bodyMetrics. */
|
|
1777
|
+
bodyProgress: ProfileVisibility;
|
|
1776
1778
|
}
|
|
1777
1779
|
interface ProfileDiscoverySettings {
|
|
1778
1780
|
discoverableByName: boolean;
|
|
@@ -1788,6 +1790,7 @@ interface ProfileViewerAccess {
|
|
|
1788
1790
|
routines: boolean;
|
|
1789
1791
|
achievements: boolean;
|
|
1790
1792
|
bodyMetrics: boolean;
|
|
1793
|
+
bodyProgress: boolean;
|
|
1791
1794
|
}
|
|
1792
1795
|
interface PublicTrainingSummary {
|
|
1793
1796
|
completedWorkouts: number;
|
|
@@ -1929,8 +1932,13 @@ interface UpdateProfileRequest {
|
|
|
1929
1932
|
weight?: number | null;
|
|
1930
1933
|
height?: number | null;
|
|
1931
1934
|
weightUnit?: WeightUnit;
|
|
1935
|
+
/**
|
|
1936
|
+
* PROG-12: the member's local date (YYYY-MM-DD). A changed weight is also
|
|
1937
|
+
* recorded as that date's body measurement; without it the server uses UTC.
|
|
1938
|
+
*/
|
|
1939
|
+
localDate?: string;
|
|
1932
1940
|
}
|
|
1933
|
-
type UpdateProfilePrivacyRequest = Omit<ProfilePrivacySettings, 'biography' | 'location' | 'trainingIdentity'> & Partial<Pick<ProfilePrivacySettings, 'biography' | 'location' | 'trainingIdentity'>>;
|
|
1941
|
+
type UpdateProfilePrivacyRequest = Omit<ProfilePrivacySettings, 'biography' | 'location' | 'trainingIdentity' | 'bodyProgress'> & Partial<Pick<ProfilePrivacySettings, 'biography' | 'location' | 'trainingIdentity' | 'bodyProgress'>>;
|
|
1934
1942
|
type UpdateProfileDiscoveryRequest = ProfileDiscoverySettings;
|
|
1935
1943
|
interface PlatePairInventory {
|
|
1936
1944
|
weightKg: number;
|
|
@@ -2188,6 +2196,108 @@ interface PersonalGoalsResponse {
|
|
|
2188
2196
|
goals: PersonalGoalProgress[];
|
|
2189
2197
|
}
|
|
2190
2198
|
|
|
2199
|
+
/**
|
|
2200
|
+
* PROG-12: dated body weight and measurements. One entry per member per local
|
|
2201
|
+
* date; every value is optional but an entry holds at least one. Weight is
|
|
2202
|
+
* kilograms whatever unit the account displays, lengths are centimetres.
|
|
2203
|
+
*/
|
|
2204
|
+
declare const BODY_MEASUREMENT_FIELDS: readonly [{
|
|
2205
|
+
readonly key: "weightKg";
|
|
2206
|
+
readonly label: "Weight";
|
|
2207
|
+
readonly unit: "kg";
|
|
2208
|
+
readonly min: 20;
|
|
2209
|
+
readonly max: 1000;
|
|
2210
|
+
}, {
|
|
2211
|
+
readonly key: "waistCm";
|
|
2212
|
+
readonly label: "Waist";
|
|
2213
|
+
readonly unit: "cm";
|
|
2214
|
+
readonly min: 10;
|
|
2215
|
+
readonly max: 300;
|
|
2216
|
+
}, {
|
|
2217
|
+
readonly key: "hipsCm";
|
|
2218
|
+
readonly label: "Hips";
|
|
2219
|
+
readonly unit: "cm";
|
|
2220
|
+
readonly min: 10;
|
|
2221
|
+
readonly max: 300;
|
|
2222
|
+
}, {
|
|
2223
|
+
readonly key: "chestCm";
|
|
2224
|
+
readonly label: "Chest";
|
|
2225
|
+
readonly unit: "cm";
|
|
2226
|
+
readonly min: 10;
|
|
2227
|
+
readonly max: 300;
|
|
2228
|
+
}, {
|
|
2229
|
+
readonly key: "armCm";
|
|
2230
|
+
readonly label: "Arm";
|
|
2231
|
+
readonly unit: "cm";
|
|
2232
|
+
readonly min: 10;
|
|
2233
|
+
readonly max: 300;
|
|
2234
|
+
}, {
|
|
2235
|
+
readonly key: "thighCm";
|
|
2236
|
+
readonly label: "Thigh";
|
|
2237
|
+
readonly unit: "cm";
|
|
2238
|
+
readonly min: 10;
|
|
2239
|
+
readonly max: 300;
|
|
2240
|
+
}, {
|
|
2241
|
+
readonly key: "bodyFatPercent";
|
|
2242
|
+
readonly label: "Body fat";
|
|
2243
|
+
readonly unit: "%";
|
|
2244
|
+
readonly min: 2;
|
|
2245
|
+
readonly max: 75;
|
|
2246
|
+
}];
|
|
2247
|
+
type BodyMeasurementField = (typeof BODY_MEASUREMENT_FIELDS)[number]["key"];
|
|
2248
|
+
declare const BODY_MEASUREMENT_FIELD_KEYS: readonly BodyMeasurementField[];
|
|
2249
|
+
type BodyMeasurementValues = {
|
|
2250
|
+
[K in BodyMeasurementField]: number | null;
|
|
2251
|
+
};
|
|
2252
|
+
interface BodyMeasurement extends BodyMeasurementValues {
|
|
2253
|
+
/** The member's local date, YYYY-MM-DD. */
|
|
2254
|
+
date: string;
|
|
2255
|
+
updatedAt: IsoDateString;
|
|
2256
|
+
}
|
|
2257
|
+
/** PUT /body-measurements/:date. A missing or null value clears that field. */
|
|
2258
|
+
type UpsertBodyMeasurementRequest = Partial<BodyMeasurementValues>;
|
|
2259
|
+
declare const BODY_PROGRESS_RANGES: readonly ["30D", "90D", "1Y", "ALL"];
|
|
2260
|
+
type BodyProgressRange = (typeof BODY_PROGRESS_RANGES)[number];
|
|
2261
|
+
interface BodyFieldSummary {
|
|
2262
|
+
field: BodyMeasurementField;
|
|
2263
|
+
/** The most recent value ever recorded, and its date. */
|
|
2264
|
+
latest: number | null;
|
|
2265
|
+
latestDate: string | null;
|
|
2266
|
+
/**
|
|
2267
|
+
* Latest minus the first value recorded inside the range, when both exist
|
|
2268
|
+
* on different dates inside it; otherwise null.
|
|
2269
|
+
*/
|
|
2270
|
+
change: number | null;
|
|
2271
|
+
changeSince: string | null;
|
|
2272
|
+
}
|
|
2273
|
+
/**
|
|
2274
|
+
* GET /body-measurements (the owner) and
|
|
2275
|
+
* GET /users/:identifier/body-measurements (another member, when their
|
|
2276
|
+
* `bodyProgress` visibility allows it). Entries are the range's, oldest first.
|
|
2277
|
+
*/
|
|
2278
|
+
interface BodyProgressResponse {
|
|
2279
|
+
range: BodyProgressRange;
|
|
2280
|
+
rangeStart: string | null;
|
|
2281
|
+
entries: BodyMeasurement[];
|
|
2282
|
+
summary: BodyFieldSummary[];
|
|
2283
|
+
}
|
|
2284
|
+
declare function isBodyMeasurementDate(value: string): boolean;
|
|
2285
|
+
/** The first date a range covers, counting today; null for ALL. */
|
|
2286
|
+
declare function bodyProgressRangeStart(range: BodyProgressRange, today: string): string | null;
|
|
2287
|
+
/** The field a value is out of bounds for, with the reason in words. */
|
|
2288
|
+
interface BodyMeasurementProblem {
|
|
2289
|
+
field: BodyMeasurementField | null;
|
|
2290
|
+
message: string;
|
|
2291
|
+
}
|
|
2292
|
+
declare function bodyMeasurementProblems(input: UpsertBodyMeasurementRequest): BodyMeasurementProblem[];
|
|
2293
|
+
/**
|
|
2294
|
+
* Per field: the latest value ever recorded and its change over the range.
|
|
2295
|
+
* `entries` is every entry the member has, in any order.
|
|
2296
|
+
*/
|
|
2297
|
+
declare function summarizeBodyProgress(entries: ReadonlyArray<Pick<BodyMeasurement, "date"> & BodyMeasurementValues>, rangeStart: string | null): BodyFieldSummary[];
|
|
2298
|
+
/** The date `User.weight` follows: the latest entry that records a weight. */
|
|
2299
|
+
declare function latestBodyWeight(entries: ReadonlyArray<Pick<BodyMeasurement, "date" | "weightKg">>): number | null;
|
|
2300
|
+
|
|
2191
2301
|
interface PlateLoadingItem {
|
|
2192
2302
|
weightKg: number;
|
|
2193
2303
|
platesPerSide: number;
|
|
@@ -3581,6 +3691,12 @@ interface AccountExportTrainingEvent {
|
|
|
3581
3691
|
schemaVersion: number;
|
|
3582
3692
|
payload: unknown;
|
|
3583
3693
|
}
|
|
3694
|
+
/** Weight in kilograms, lengths in centimetres. */
|
|
3695
|
+
interface AccountExportBodyMeasurement extends BodyMeasurementValues {
|
|
3696
|
+
date: string;
|
|
3697
|
+
createdAt: IsoDateString;
|
|
3698
|
+
updatedAt: IsoDateString;
|
|
3699
|
+
}
|
|
3584
3700
|
interface AccountExportGoal {
|
|
3585
3701
|
type: string;
|
|
3586
3702
|
direction: string;
|
|
@@ -3640,6 +3756,8 @@ interface AccountExportV1 {
|
|
|
3640
3756
|
personalRecords: AccountExportPersonalRecord[];
|
|
3641
3757
|
trainingEvents: AccountExportTrainingEvent[];
|
|
3642
3758
|
goals: AccountExportGoal[];
|
|
3759
|
+
/** PROG-12: every dated body weight and measurement entry. */
|
|
3760
|
+
bodyMeasurements?: AccountExportBodyMeasurement[];
|
|
3643
3761
|
trainingLocations: AccountExportTrainingLocation[];
|
|
3644
3762
|
scheduleOverrides: AccountExportScheduleOverride[];
|
|
3645
3763
|
exercises: {
|
|
@@ -3704,4 +3822,4 @@ interface AccountExportV1 {
|
|
|
3704
3822
|
/** The file name a download of the export is saved under. */
|
|
3705
3823
|
declare function accountExportFileName(username: string, exportedAt: string): string;
|
|
3706
3824
|
|
|
3707
|
-
export { ACCOUNT_EXPORT_FORMAT, ACCOUNT_EXPORT_VERSION, ACHIEVEMENT_CATEGORIES, ACHIEVEMENT_DEFINITIONS, ACTIVITY_CAPS, ACTIVITY_COMMENTS_PAGE_SIZE, ACTIVITY_COMMENTS_PER_DAY_MAX, ACTIVITY_COMMENT_MAX_LENGTH, ACTIVITY_DEFAULT_AUDIENCE, ACTIVITY_ENTRY_ID_MAX_LENGTH, ACTIVITY_FEED_FOLLOWED_MAX, ACTIVITY_PAGE_DEFAULT_LIMIT, ACTIVITY_PAGE_MAX_LIMIT, ACTIVITY_PREVIEW_AUDIENCES, ACTIVITY_REACTIONS, ACTIVITY_TYPES, ACTIVITY_TYPE_SECTIONS, type AccountExportGoal, type AccountExportMember, type AccountExportPersonalRecord, type AccountExportRoutine, type AccountExportScheduleOverride, type AccountExportTrainingEvent, type AccountExportTrainingLocation, type AccountExportV1, type AchievementActivity, type AchievementCategory, type AchievementCategoryProgress, type AchievementDefinition, type AchievementNotification, type AchievementUnlockedEventPayload, type AchievementsResponse, type ActivityAudience, type ActivityCap, type ActivityComment, type ActivityCommentNotification, type ActivityCommentSummary, type ActivityCommentsQuery, type ActivityCommentsResponse, type ActivityEntry, type ActivityEntrySharing, type ActivityFeedResponse, type ActivityLink, type ActivityPage, type ActivityPageQuery, type ActivityPreviewAudience, type ActivityPreviewQuery, type ActivityReaction, type ActivityReactionSummary, type ActivitySection, type ActivitySharingSettings, type ActivityType, type AppNotification, BAR_CHOICES_KG, BAR_WARM_UP_STEPS, BLOCKED_MEMBERS_MAX, type BlockComparisonLift, type BlockComparisonLiftBest, type BlockComparisonPeriod, type BlockComparisonPeriodKind, type BlockedMember, type BlockedMembersResponse, type Brand, CLONE_ROUTINE_REFUSALS, COMEBACK_MIN_INACTIVE_DAYS, COMEBACK_RECOGNITION_LIMIT, COMEBACK_REQUIRED_ACTIVE_DAYS, COMEBACK_SESSION_LOOKBACK, COMEBACK_WINDOW_DAYS, CUSTOM_EXERCISES_MAX, CUSTOM_EXERCISE_NAME_MAX, CUSTOM_EXERCISE_NOTE_MAX, CUSTOM_EXERCISE_PROBLEM_MESSAGES, CUSTOM_EXERCISE_REFUSALS, type CalendarDate, type CloneRoutineRefusal, type CloneRoutineRequest, type ComebackActivity, type ComebackRecognition, type ComebackRecognitionSummary, type CorrectSessionRequest, type CorrectSessionResponse, type CorrectSessionSetRequest, type CreateActivityCommentRequest, type CreateActivityCommentResponse, type CreateDeloadRequest, type CreateReportRequest, type CreateReportResponse, type CreateRoutineDayInput, type CreateRoutineExerciseInput, type CreateRoutineRequest, type CreateRoutineVersionRequest, type CreateSessionShareRequest, type CustomExerciseInput, type CustomExerciseProblem, type CustomExerciseRefusal, DELOAD_DEFAULT_DAYS, DELOAD_DEFAULT_LOAD_REDUCTION, DELOAD_DEFAULT_SET_MODE, DELOAD_LOAD_REDUCTIONS, DELOAD_MAX_DAYS, DELOAD_NOT_LIGHTER, DELOAD_SET_MODES, DELOAD_SUGGESTION_COOLDOWN_DAYS, DELOAD_SUGGESTION_EARLIER_DAYS, DELOAD_SUGGESTION_MIN_MARKED_TODAY, DELOAD_SUGGESTION_ROUTINE_DAYS, DELOAD_SUGGESTION_SIGNALS, type DeclineSignal, type DecliningLift, type DecliningLiftSession, type DeleteAccountRequest, type DeleteAccountResponse, type DeleteActivityCommentResponse, type DeletePushSubscriptionRequest, type DeloadLoadReduction, type DeloadOptions, type DeloadSetMode, type DeloadSuggestion, type DeloadSuggestionEvidence, type DeloadSuggestionResponse, type DeloadSuggestionSignal, type DeloadSuggestionUnavailableReason, type DiscoverableRoutine, EXERCISE_EQUIPMENT, EXERCISE_GROUP_KIND_LABELS, EXERCISE_GROUP_MAX, EXERCISE_MECHANICS, type EarnedAchievement, type EarnedPersonalRecord, type EffortPeriod, type EffortSignal, type Exercise, type ExerciseEquipment, type ExerciseGroup, type ExerciseGroupKind, type ExerciseGroupPosition, type ExerciseId, type ExerciseMechanic, type ExercisePerformanceHistoryQuery, type ExercisePerformanceHistoryResponse, type ExercisePerformancePrescription, type ExercisePerformancePrescriptionSet, type ExercisePerformanceSession, type ExercisePerformanceSet, type ExercisePerformanceSummary, type ExercisePlateau, type ExerciseStrengthSummary, type ExerciseStrengthTrendPoint, type ExerciseStrengthTrendQuery, type ExerciseStrengthTrendResponse, FEATURED_PROFILE_ITEMS_MAX, FEATURED_PROFILE_ITEM_KINDS, FEATURED_PROFILE_REFERENCE_MAX_LENGTH, FOLLOW_SUGGESTIONS_DEFAULT_LIMIT, FOLLOW_SUGGESTIONS_MAX_LIMIT, FOLLOW_SUGGESTION_REASONS, type FeaturedProfileAchievementItem, type FeaturedProfileItem, type FeaturedProfileItemKind, type FeaturedProfileRankItem, type FeaturedProfileRecordItem, type FeaturedProfileRoutineItem, type FeaturedProfileSelection, type FeaturedProfileSelectionInput, type FeaturedProfileSelectionsResponse, type FinishStatus, type FinishWorkoutRequest, type FinishWorkoutResponse, type FollowSuggestion, type FollowSuggestionReason, type FollowSuggestionsResponse, type IsoDateString, LIMITED_SHORTFALL_KG, type ListSessionsParams, MAX_SETS_PER_EXERCISE, MEASURABLE_GOALS_MAX, MEASURABLE_GOAL_DIRECTIONS, MEASURABLE_GOAL_TYPES, MINUTES_IN_DAY, MODERATION_ACTION_KINDS, MODERATION_HISTORY_PAGE_SIZE, MODERATION_NOTE_MAX_LENGTH, MODERATION_QUEUE_PAGE_SIZE, MOVEMENT_PATTERNS, MUSCLE_GROUPS, type MarkNotificationsReadRequest, type MarkNotificationsReadResponse, type MeasurableGoal, type MeasurableGoalDirection, type MeasurableGoalExercise, type MeasurableGoalInput, type MeasurableGoalType, type MemberActivityResponse, type MemberModerationState, type MemberRoutinesResponse, type ModerationActionKind, type ModerationActionRecord, type ModerationHistoryQuery, type ModerationHistoryResponse, type ModerationQueueQuery, type ModerationQueueResponse, type ModerationReport, type ModeratorState, type MoveOccurrenceRequest, type MovementPattern, type MuscleGroup, type MuscleGroupHeatmapQuery, type MuscleGroupHeatmapResponse, type MuscleGroupHeatmapValue, type MuscleGroupHeatmapWeek, type MuscleVolumeTrendSeries, NOTIFICATIONS_LIST_LIMIT, NOTIFICATIONS_LOOKBACK_DAYS, NOTIFICATIONS_RETENTION_DAYS, NOTIFICATION_CATEGORIES, NOTIFICATION_KINDS, type NewFollowerNotification, type NotificationCategory, type NotificationKind, type NotificationPreferences, type NotificationPreferencesResponse, type NotificationsResponse, OTHER_WARM_UP_STEPS, type OwnActivityEntry, type OwnActivityResponse, PLATEAU_MIN_DAYS_SINCE_BEST, PLATEAU_MIN_SESSIONS, PLATEAU_MIN_SESSIONS_MAX, PLATEAU_MIN_SESSIONS_MIN, PLATEAU_RECENT_DAYS, PLATEAU_WINDOW_DAYS, PLATE_SETS, PREFERRED_TRAINING_STYLE_VALUES, PROFILE_BIO_MAX_LENGTH, PROFILE_FAVORITE_EXERCISES_MAX, PROFILE_LOCATION_MAX_LENGTH, PROFILE_TRAINING_DISCIPLINES_MAX, PROFILE_TRAINING_GOALS_MAX, PROFILE_VISIBILITY_VALUES, PROGRESSION_SCHEMES, PROGRESS_TIMELINE_EVENT_TYPES, PUSH_PAYLOAD_KINDS, PUSH_SUBSCRIPTIONS_MAX, type PaginatedResponse, type PersonalGoalProgress, type PersonalGoalsResponse, type PersonalRecordActivity, type PersonalRecordEntry, type PersonalRecordKind, type PlannedReminder, type PlateLoadingItem, type PlateLoadingResult, type PlatePairInventory, type PlateSetChoice, type PlateauPreferences, type PlateauSet, type PlateausResponse, type PreferredTrainingStyle, type PreviousPerformanceResponse, type PreviousSessionRecap, type PreviousSetPerformance, type ProfileDiscoverySettings, type ProfileFavoriteExercise, type ProfilePrivacySettings, type ProfileViewerAccess, type ProfileVisibility, type ProgressTimelineEventType, type ProgressTimelineItem, type ProgressTimelinePersonalRecordItem, type ProgressTimelineProgressionItem, type ProgressTimelineQuery, type ProgressTimelineRecordPerformance, type ProgressTimelineRecordReason, type ProgressTimelineResponse, type ProgressTimelineSessionContext, type ProgressionActivity, type ProgressionChange, type ProgressionRule, type ProgressionScheme, type ProgressionSetChange, type PublicBodyMetrics, type PublicProfileAchievements, type PublicTrainingSummary, type PublicUserProfile, type PushPayload, type PushPayloadKind, type PushSubscriptionKeys, type PushSubscriptionSummary, type PushSubscriptionsResponse, type QuietHours, RELATIONSHIP_LIST_DEFAULT_LIMIT, RELATIONSHIP_LIST_KINDS, RELATIONSHIP_LIST_MAX_LIMIT, RENAISSANCE_RANK_DEFINITIONS, REPORTS_PER_DAY_MAX, REPORT_DETAILS_MAX_LENGTH, REPORT_REASONS, REPORT_STATUSES, REPORT_SUBJECT_KINDS, REP_TYPES, RESERVED_USERNAMES, REST_ALERT_MAX_LEAD_SECONDS, REST_ALERT_MIN_LEAD_SECONDS, REST_ALERT_REFUSALS, ROUTINE_DAYS_MAX, ROUTINE_DAY_NAME_MAX, ROUTINE_DISCOVERY_DEFAULT_LIMIT, ROUTINE_DISCOVERY_MAX_LIMIT, ROUTINE_DISCOVERY_SCAN_LIMIT, ROUTINE_DURATION_BANDS, ROUTINE_DURATION_BAND_MAX_MINUTES, ROUTINE_SCHEDULE_MODES, ROUTINE_SHARE_MAX_ACTIVE_LINKS, ROUTINE_TRAINING_BLOCKS_MAX, ROUTINE_TRAINING_BLOCK_NAME_MAX, ROUTINE_TRAINING_BLOCK_REVISIONS_MAX, ROUTINE_TRAINING_BLOCK_SOURCE_KINDS, ROUTINE_TRAINING_BLOCK_STATES, ROUTINE_VERSIONS_MAX, ROUTINE_VERSION_KINDS, ROUTINE_VERSION_NAME_MAX, ROUTINE_VISIBILITY_VALUES, type RecentActivityEntry, type RegisterPushSubscriptionRequest, type RelationshipListKind, type RelationshipListQuery, type RelationshipListResponse, type RelationshipMember, type RenaissanceRankDefinition, type RenaissanceRankProgress, type RepTargetPeriod, type RepTargetSignal, type RepType, type ReplaceFeaturedProfileItemsRequest, type ReplaceMeasurableGoalsRequest, type ReplaceTrainingLocationsRequest, type ReportReason, type ReportStatus, type ReportSubjectKind, type ReportSubjectPreview, type ResolvedRoutinePlan, type RestAlertPushPayload, type RestAlertRefusal, type RestoreRoutineVersionResponse, type ReviewReportRequest, type ReviewReportResponse, type Routine, type RoutineClassification, type RoutineDay, type RoutineDayId, type RoutineDiscoveryQuery, type RoutineDiscoveryResponse, type RoutineDurationBand, type RoutineExercise, type RoutineFacets, type RoutineId, type RoutineLineage, type RoutinePlanSource, type RoutineScheduleMode, type RoutineSet, type RoutineShare, type RoutineShareListResponse, type RoutineSharedActivity, type RoutineTemporaryOverride, type RoutineTemporaryOverridePlan, type RoutineTemporaryOverridesResponse, type RoutineTrainingBlock, type RoutineTrainingBlockPlan, type RoutineTrainingBlockRevision, type RoutineTrainingBlockRevisionsResponse, type RoutineTrainingBlockSource, type RoutineTrainingBlockSourceKind, type RoutineTrainingBlockState, type RoutineTrainingBlocksResponse, type RoutineVersion, type RoutineVersionDay, type RoutineVersionExercise, type RoutineVersionKind, type RoutineVersionSetup, type RoutineVersionsResponse, type RoutineVisibility, SCHEDULE_MOVE_MAX_DAYS, SCHEDULE_OVERRIDES_MAX_RANGE_DAYS, SCHEDULE_OVERRIDE_KINDS, SCHEDULE_SKIP_PAST_DAYS, SESSION_CORRECTIONS_MAX, SESSION_CORRECTION_LIMITS, SESSION_CORRECTION_WINDOW_HOURS, SESSION_EXERCISE_NOTE_MAX_LENGTH, SESSION_NOTE_MAX_LENGTH, SESSION_SHARE_DEFAULT_FIELDS, SESSION_SHARE_FIELDS, SESSION_SHARE_MAX_ACTIVE_LINKS, SET_KINDS, SET_KIND_LABELS, SEXES, SHARED_ROUTINE_SOURCES, STARRED_EXERCISES_MAX, STREAK_MAX_GAP_DAYS, type ScheduleOverride, type ScheduleOverrideKind, type ScheduleOverridesQuery, type ScheduleOverridesResponse, type ScheduleRestAlertRequest, type ScheduleRestAlertResponse, type SendTrainingPartnerEncouragementRequest, type SendTrainingPartnerEncouragementResponse, type SessionComparisonExercise, type SessionComparisonQuery, type SessionComparisonResponse, type SessionComparisonRoutineDay, type SessionComparisonSession, type SessionComparisonSet, type SessionCompletedActivity, type SessionCorrection, type SessionCorrectionClosedReason, type SessionCorrectionWindow, type SessionCorrectionsResponse, type SessionExerciseNote, type SessionExerciseSubstitution, type SessionProgressNotification, type SessionRecapExerciseNote, type SessionRecapRecord, type SessionSetCorrection, type SessionShare, type SessionShareField, type SessionShareListResponse, type SessionTemporaryOverride, type SessionTrainingBlock, type SetAccountTimeZoneRequest, type SetActivityEntryAudienceRequest, type SetActivityEntryAudienceResponse, type SetActivityReactionRequest, type SetActivityReactionResponse, type SetKind, type SetLog, type SetLogValues, type Sex, type SharedRoutine, type SharedRoutineOwner, type SharedRoutineSource, type SharedRoutineSummary, type SharedSessionOwner, type SharedSessionRecap, type SkipOccurrenceRequest, type StarredExercise, type StarredExercisesResponse, type StartWorkoutRequest, type StartWorkoutResponse, type StreakAtRiskPushPayload, type StreakMilestoneActivity, type StreakMilestoneEventPayload, type SubstituteSessionExerciseRequest, type SubstituteSessionExerciseResponse, type SupabaseAuthResponse, type SupabaseAuthUser, type SupabaseMigrationResponse, TEMPORARY_OVERRIDE_KINDS, TEMPORARY_OVERRIDE_SOURCE_KINDS, TRAINING_BLOCK_COMPARISON_MAX_DAYS, TRAINING_DISCIPLINE_VALUES, TRAINING_EVENT_TYPES, TRAINING_EXPERIENCE_LEVEL_VALUES, TRAINING_GOAL_VALUES, TRAINING_PARTNERSHIP_STATUSES, TRAINING_PARTNERS_MAX, TRAINING_PARTNER_ENCOURAGEMENTS_PER_24_HOURS_MAX, TRAINING_PARTNER_ENCOURAGEMENT_KINDS, TRAINING_PARTNER_PERMISSION_KEYS, TRAINING_PARTNER_REQUESTS_PER_DAY_MAX, TRAINING_SIGNAL_DECLINES_MAX, TRAINING_SIGNAL_DECLINE_SESSIONS, TRAINING_SIGNAL_MIN_DECLINE, TRAINING_SIGNAL_MIN_RPE_SETS, TRAINING_SIGNAL_MIN_SHORT_SETS, TRAINING_SIGNAL_MIN_TARGET_SETS, TRAINING_SIGNAL_PERIOD_DAYS, TRAINING_SIGNAL_RPE_RISE, TRAINING_SIGNAL_SHORT_LIFTS_MAX, TRAINING_SIGNAL_SHORT_POINTS_RISE, TRAINING_SIGNAL_WORKOUT_DROP, type TemporaryOverrideKind, type TemporaryOverrideSource, type TemporaryOverrideSourceKind, type TrainingBlockComparisonResponse, type TrainingDiscipline, type TrainingEventType, type TrainingExperienceLevel, type TrainingGoal, type TrainingIdentity, type TrainingLocationPreference, type TrainingLocationPreferenceInput, type TrainingPartnerAchievementNotification, type TrainingPartnerAchievementPushPayload, type TrainingPartnerEncouragementKind, type TrainingPartnerEncouragementNotification, type TrainingPartnerPermissions, type TrainingPartnerScheduleDay, type TrainingPartnerScheduleResponse, type TrainingPartnerSessionNotification, type TrainingPartnerSessionPushPayload, type TrainingPartnership, type TrainingPartnershipStatus, type TrainingPartnershipsResponse, type TrainingReminderPreference, type TrainingReminderPushPayload, type TrainingSignalPeriod, type TrainingSignalsResponse, USERNAME_MAX_LENGTH, USERNAME_MIN_LENGTH, USERNAME_PATTERN_SOURCE, type UpdateActivitySharingRequest, type UpdateCustomExerciseRequest, type UpdateNotificationPreferencesRequest, type UpdateProfileDiscoveryRequest, type UpdateProfilePrivacyRequest, type UpdateProfileRequest, type UpdateRoutineRequest, type UpdateRoutineVisibilityRequest, type UpdateSessionNotesRequest, type UpdateSessionNotesResponse, type UpdateTrainingPartnerPermissionsRequest, type UpsertRoutineTrainingBlockRequest, type UpsertSetLogRequest, type UpsertSetLogResponse, type UserId, type UserProfile, type UserSearchResponse, type VolumeTrendPoint, type VolumeTrendQuery, type VolumeTrendResponse, type VolumeTrendSeries, WEIGHT_UNITS, WORKOUT_SESSION_STATUSES, type WarmUpEquipment, type WarmUpLoad, type WarmUpRamp, type WarmUpSet, type WarmUpStep, type WeightUnit, type WorkoutAnalyticsStatus, type WorkoutPeriod, type WorkoutProgressQuery, type WorkoutProgressResponse, type WorkoutSession, type WorkoutSessionId, type WorkoutSessionListResponse, type WorkoutSessionRecap, type WorkoutSessionSnapshotV1, type WorkoutSessionStatus, type WorkoutSessionSummary, type WorkoutSignal, type WorkoutStatsQuery, type WorkoutStatsResponse, accountExportFileName, applyDeload, buildWarmUpRamp, calculatePlateLoading, canLinkToNext, countsAsWork, countsForProgression, customExerciseProblem, defaultWarmUpEquipment, deloadLengthDays, exerciseGroupLabel, exerciseGroupPosition, exerciseGroups, exerciseNameKey, followWorkingLoad, hasOversizedGroup, isBarLoaded, isSetKind, isWithinQuietHours, leadWorkingWeight, matchesDeletionConfirmation, normalizeExerciseLinks, normalizeExerciseName, primaryEquipment, requiredToFinish, resolveActiveTrainingBlock, resolveRoutinePlan, routineDayLabel, sessionCorrectionWindow, setKindOf, setLogValuesDiffer, trainingBlockCovers, warmUpLoad };
|
|
3825
|
+
export { ACCOUNT_EXPORT_FORMAT, ACCOUNT_EXPORT_VERSION, ACHIEVEMENT_CATEGORIES, ACHIEVEMENT_DEFINITIONS, ACTIVITY_CAPS, ACTIVITY_COMMENTS_PAGE_SIZE, ACTIVITY_COMMENTS_PER_DAY_MAX, ACTIVITY_COMMENT_MAX_LENGTH, ACTIVITY_DEFAULT_AUDIENCE, ACTIVITY_ENTRY_ID_MAX_LENGTH, ACTIVITY_FEED_FOLLOWED_MAX, ACTIVITY_PAGE_DEFAULT_LIMIT, ACTIVITY_PAGE_MAX_LIMIT, ACTIVITY_PREVIEW_AUDIENCES, ACTIVITY_REACTIONS, ACTIVITY_TYPES, ACTIVITY_TYPE_SECTIONS, type AccountExportBodyMeasurement, type AccountExportGoal, type AccountExportMember, type AccountExportPersonalRecord, type AccountExportRoutine, type AccountExportScheduleOverride, type AccountExportTrainingEvent, type AccountExportTrainingLocation, type AccountExportV1, type AchievementActivity, type AchievementCategory, type AchievementCategoryProgress, type AchievementDefinition, type AchievementNotification, type AchievementUnlockedEventPayload, type AchievementsResponse, type ActivityAudience, type ActivityCap, type ActivityComment, type ActivityCommentNotification, type ActivityCommentSummary, type ActivityCommentsQuery, type ActivityCommentsResponse, type ActivityEntry, type ActivityEntrySharing, type ActivityFeedResponse, type ActivityLink, type ActivityPage, type ActivityPageQuery, type ActivityPreviewAudience, type ActivityPreviewQuery, type ActivityReaction, type ActivityReactionSummary, type ActivitySection, type ActivitySharingSettings, type ActivityType, type AppNotification, BAR_CHOICES_KG, BAR_WARM_UP_STEPS, BLOCKED_MEMBERS_MAX, BODY_MEASUREMENT_FIELDS, BODY_MEASUREMENT_FIELD_KEYS, BODY_PROGRESS_RANGES, type BlockComparisonLift, type BlockComparisonLiftBest, type BlockComparisonPeriod, type BlockComparisonPeriodKind, type BlockedMember, type BlockedMembersResponse, type BodyFieldSummary, type BodyMeasurement, type BodyMeasurementField, type BodyMeasurementProblem, type BodyMeasurementValues, type BodyProgressRange, type BodyProgressResponse, type Brand, CLONE_ROUTINE_REFUSALS, COMEBACK_MIN_INACTIVE_DAYS, COMEBACK_RECOGNITION_LIMIT, COMEBACK_REQUIRED_ACTIVE_DAYS, COMEBACK_SESSION_LOOKBACK, COMEBACK_WINDOW_DAYS, CUSTOM_EXERCISES_MAX, CUSTOM_EXERCISE_NAME_MAX, CUSTOM_EXERCISE_NOTE_MAX, CUSTOM_EXERCISE_PROBLEM_MESSAGES, CUSTOM_EXERCISE_REFUSALS, type CalendarDate, type CloneRoutineRefusal, type CloneRoutineRequest, type ComebackActivity, type ComebackRecognition, type ComebackRecognitionSummary, type CorrectSessionRequest, type CorrectSessionResponse, type CorrectSessionSetRequest, type CreateActivityCommentRequest, type CreateActivityCommentResponse, type CreateDeloadRequest, type CreateReportRequest, type CreateReportResponse, type CreateRoutineDayInput, type CreateRoutineExerciseInput, type CreateRoutineRequest, type CreateRoutineVersionRequest, type CreateSessionShareRequest, type CustomExerciseInput, type CustomExerciseProblem, type CustomExerciseRefusal, DELOAD_DEFAULT_DAYS, DELOAD_DEFAULT_LOAD_REDUCTION, DELOAD_DEFAULT_SET_MODE, DELOAD_LOAD_REDUCTIONS, DELOAD_MAX_DAYS, DELOAD_NOT_LIGHTER, DELOAD_SET_MODES, DELOAD_SUGGESTION_COOLDOWN_DAYS, DELOAD_SUGGESTION_EARLIER_DAYS, DELOAD_SUGGESTION_MIN_MARKED_TODAY, DELOAD_SUGGESTION_ROUTINE_DAYS, DELOAD_SUGGESTION_SIGNALS, type DeclineSignal, type DecliningLift, type DecliningLiftSession, type DeleteAccountRequest, type DeleteAccountResponse, type DeleteActivityCommentResponse, type DeletePushSubscriptionRequest, type DeloadLoadReduction, type DeloadOptions, type DeloadSetMode, type DeloadSuggestion, type DeloadSuggestionEvidence, type DeloadSuggestionResponse, type DeloadSuggestionSignal, type DeloadSuggestionUnavailableReason, type DiscoverableRoutine, EXERCISE_EQUIPMENT, EXERCISE_GROUP_KIND_LABELS, EXERCISE_GROUP_MAX, EXERCISE_MECHANICS, type EarnedAchievement, type EarnedPersonalRecord, type EffortPeriod, type EffortSignal, type Exercise, type ExerciseEquipment, type ExerciseGroup, type ExerciseGroupKind, type ExerciseGroupPosition, type ExerciseId, type ExerciseMechanic, type ExercisePerformanceHistoryQuery, type ExercisePerformanceHistoryResponse, type ExercisePerformancePrescription, type ExercisePerformancePrescriptionSet, type ExercisePerformanceSession, type ExercisePerformanceSet, type ExercisePerformanceSummary, type ExercisePlateau, type ExerciseStrengthSummary, type ExerciseStrengthTrendPoint, type ExerciseStrengthTrendQuery, type ExerciseStrengthTrendResponse, FEATURED_PROFILE_ITEMS_MAX, FEATURED_PROFILE_ITEM_KINDS, FEATURED_PROFILE_REFERENCE_MAX_LENGTH, FOLLOW_SUGGESTIONS_DEFAULT_LIMIT, FOLLOW_SUGGESTIONS_MAX_LIMIT, FOLLOW_SUGGESTION_REASONS, type FeaturedProfileAchievementItem, type FeaturedProfileItem, type FeaturedProfileItemKind, type FeaturedProfileRankItem, type FeaturedProfileRecordItem, type FeaturedProfileRoutineItem, type FeaturedProfileSelection, type FeaturedProfileSelectionInput, type FeaturedProfileSelectionsResponse, type FinishStatus, type FinishWorkoutRequest, type FinishWorkoutResponse, type FollowSuggestion, type FollowSuggestionReason, type FollowSuggestionsResponse, type IsoDateString, LIMITED_SHORTFALL_KG, type ListSessionsParams, MAX_SETS_PER_EXERCISE, MEASURABLE_GOALS_MAX, MEASURABLE_GOAL_DIRECTIONS, MEASURABLE_GOAL_TYPES, MINUTES_IN_DAY, MODERATION_ACTION_KINDS, MODERATION_HISTORY_PAGE_SIZE, MODERATION_NOTE_MAX_LENGTH, MODERATION_QUEUE_PAGE_SIZE, MOVEMENT_PATTERNS, MUSCLE_GROUPS, type MarkNotificationsReadRequest, type MarkNotificationsReadResponse, type MeasurableGoal, type MeasurableGoalDirection, type MeasurableGoalExercise, type MeasurableGoalInput, type MeasurableGoalType, type MemberActivityResponse, type MemberModerationState, type MemberRoutinesResponse, type ModerationActionKind, type ModerationActionRecord, type ModerationHistoryQuery, type ModerationHistoryResponse, type ModerationQueueQuery, type ModerationQueueResponse, type ModerationReport, type ModeratorState, type MoveOccurrenceRequest, type MovementPattern, type MuscleGroup, type MuscleGroupHeatmapQuery, type MuscleGroupHeatmapResponse, type MuscleGroupHeatmapValue, type MuscleGroupHeatmapWeek, type MuscleVolumeTrendSeries, NOTIFICATIONS_LIST_LIMIT, NOTIFICATIONS_LOOKBACK_DAYS, NOTIFICATIONS_RETENTION_DAYS, NOTIFICATION_CATEGORIES, NOTIFICATION_KINDS, type NewFollowerNotification, type NotificationCategory, type NotificationKind, type NotificationPreferences, type NotificationPreferencesResponse, type NotificationsResponse, OTHER_WARM_UP_STEPS, type OwnActivityEntry, type OwnActivityResponse, PLATEAU_MIN_DAYS_SINCE_BEST, PLATEAU_MIN_SESSIONS, PLATEAU_MIN_SESSIONS_MAX, PLATEAU_MIN_SESSIONS_MIN, PLATEAU_RECENT_DAYS, PLATEAU_WINDOW_DAYS, PLATE_SETS, PREFERRED_TRAINING_STYLE_VALUES, PROFILE_BIO_MAX_LENGTH, PROFILE_FAVORITE_EXERCISES_MAX, PROFILE_LOCATION_MAX_LENGTH, PROFILE_TRAINING_DISCIPLINES_MAX, PROFILE_TRAINING_GOALS_MAX, PROFILE_VISIBILITY_VALUES, PROGRESSION_SCHEMES, PROGRESS_TIMELINE_EVENT_TYPES, PUSH_PAYLOAD_KINDS, PUSH_SUBSCRIPTIONS_MAX, type PaginatedResponse, type PersonalGoalProgress, type PersonalGoalsResponse, type PersonalRecordActivity, type PersonalRecordEntry, type PersonalRecordKind, type PlannedReminder, type PlateLoadingItem, type PlateLoadingResult, type PlatePairInventory, type PlateSetChoice, type PlateauPreferences, type PlateauSet, type PlateausResponse, type PreferredTrainingStyle, type PreviousPerformanceResponse, type PreviousSessionRecap, type PreviousSetPerformance, type ProfileDiscoverySettings, type ProfileFavoriteExercise, type ProfilePrivacySettings, type ProfileViewerAccess, type ProfileVisibility, type ProgressTimelineEventType, type ProgressTimelineItem, type ProgressTimelinePersonalRecordItem, type ProgressTimelineProgressionItem, type ProgressTimelineQuery, type ProgressTimelineRecordPerformance, type ProgressTimelineRecordReason, type ProgressTimelineResponse, type ProgressTimelineSessionContext, type ProgressionActivity, type ProgressionChange, type ProgressionRule, type ProgressionScheme, type ProgressionSetChange, type PublicBodyMetrics, type PublicProfileAchievements, type PublicTrainingSummary, type PublicUserProfile, type PushPayload, type PushPayloadKind, type PushSubscriptionKeys, type PushSubscriptionSummary, type PushSubscriptionsResponse, type QuietHours, RELATIONSHIP_LIST_DEFAULT_LIMIT, RELATIONSHIP_LIST_KINDS, RELATIONSHIP_LIST_MAX_LIMIT, RENAISSANCE_RANK_DEFINITIONS, REPORTS_PER_DAY_MAX, REPORT_DETAILS_MAX_LENGTH, REPORT_REASONS, REPORT_STATUSES, REPORT_SUBJECT_KINDS, REP_TYPES, RESERVED_USERNAMES, REST_ALERT_MAX_LEAD_SECONDS, REST_ALERT_MIN_LEAD_SECONDS, REST_ALERT_REFUSALS, ROUTINE_DAYS_MAX, ROUTINE_DAY_NAME_MAX, ROUTINE_DISCOVERY_DEFAULT_LIMIT, ROUTINE_DISCOVERY_MAX_LIMIT, ROUTINE_DISCOVERY_SCAN_LIMIT, ROUTINE_DURATION_BANDS, ROUTINE_DURATION_BAND_MAX_MINUTES, ROUTINE_SCHEDULE_MODES, ROUTINE_SHARE_MAX_ACTIVE_LINKS, ROUTINE_TRAINING_BLOCKS_MAX, ROUTINE_TRAINING_BLOCK_NAME_MAX, ROUTINE_TRAINING_BLOCK_REVISIONS_MAX, ROUTINE_TRAINING_BLOCK_SOURCE_KINDS, ROUTINE_TRAINING_BLOCK_STATES, ROUTINE_VERSIONS_MAX, ROUTINE_VERSION_KINDS, ROUTINE_VERSION_NAME_MAX, ROUTINE_VISIBILITY_VALUES, type RecentActivityEntry, type RegisterPushSubscriptionRequest, type RelationshipListKind, type RelationshipListQuery, type RelationshipListResponse, type RelationshipMember, type RenaissanceRankDefinition, type RenaissanceRankProgress, type RepTargetPeriod, type RepTargetSignal, type RepType, type ReplaceFeaturedProfileItemsRequest, type ReplaceMeasurableGoalsRequest, type ReplaceTrainingLocationsRequest, type ReportReason, type ReportStatus, type ReportSubjectKind, type ReportSubjectPreview, type ResolvedRoutinePlan, type RestAlertPushPayload, type RestAlertRefusal, type RestoreRoutineVersionResponse, type ReviewReportRequest, type ReviewReportResponse, type Routine, type RoutineClassification, type RoutineDay, type RoutineDayId, type RoutineDiscoveryQuery, type RoutineDiscoveryResponse, type RoutineDurationBand, type RoutineExercise, type RoutineFacets, type RoutineId, type RoutineLineage, type RoutinePlanSource, type RoutineScheduleMode, type RoutineSet, type RoutineShare, type RoutineShareListResponse, type RoutineSharedActivity, type RoutineTemporaryOverride, type RoutineTemporaryOverridePlan, type RoutineTemporaryOverridesResponse, type RoutineTrainingBlock, type RoutineTrainingBlockPlan, type RoutineTrainingBlockRevision, type RoutineTrainingBlockRevisionsResponse, type RoutineTrainingBlockSource, type RoutineTrainingBlockSourceKind, type RoutineTrainingBlockState, type RoutineTrainingBlocksResponse, type RoutineVersion, type RoutineVersionDay, type RoutineVersionExercise, type RoutineVersionKind, type RoutineVersionSetup, type RoutineVersionsResponse, type RoutineVisibility, SCHEDULE_MOVE_MAX_DAYS, SCHEDULE_OVERRIDES_MAX_RANGE_DAYS, SCHEDULE_OVERRIDE_KINDS, SCHEDULE_SKIP_PAST_DAYS, SESSION_CORRECTIONS_MAX, SESSION_CORRECTION_LIMITS, SESSION_CORRECTION_WINDOW_HOURS, SESSION_EXERCISE_NOTE_MAX_LENGTH, SESSION_NOTE_MAX_LENGTH, SESSION_SHARE_DEFAULT_FIELDS, SESSION_SHARE_FIELDS, SESSION_SHARE_MAX_ACTIVE_LINKS, SET_KINDS, SET_KIND_LABELS, SEXES, SHARED_ROUTINE_SOURCES, STARRED_EXERCISES_MAX, STREAK_MAX_GAP_DAYS, type ScheduleOverride, type ScheduleOverrideKind, type ScheduleOverridesQuery, type ScheduleOverridesResponse, type ScheduleRestAlertRequest, type ScheduleRestAlertResponse, type SendTrainingPartnerEncouragementRequest, type SendTrainingPartnerEncouragementResponse, type SessionComparisonExercise, type SessionComparisonQuery, type SessionComparisonResponse, type SessionComparisonRoutineDay, type SessionComparisonSession, type SessionComparisonSet, type SessionCompletedActivity, type SessionCorrection, type SessionCorrectionClosedReason, type SessionCorrectionWindow, type SessionCorrectionsResponse, type SessionExerciseNote, type SessionExerciseSubstitution, type SessionProgressNotification, type SessionRecapExerciseNote, type SessionRecapRecord, type SessionSetCorrection, type SessionShare, type SessionShareField, type SessionShareListResponse, type SessionTemporaryOverride, type SessionTrainingBlock, type SetAccountTimeZoneRequest, type SetActivityEntryAudienceRequest, type SetActivityEntryAudienceResponse, type SetActivityReactionRequest, type SetActivityReactionResponse, type SetKind, type SetLog, type SetLogValues, type Sex, type SharedRoutine, type SharedRoutineOwner, type SharedRoutineSource, type SharedRoutineSummary, type SharedSessionOwner, type SharedSessionRecap, type SkipOccurrenceRequest, type StarredExercise, type StarredExercisesResponse, type StartWorkoutRequest, type StartWorkoutResponse, type StreakAtRiskPushPayload, type StreakMilestoneActivity, type StreakMilestoneEventPayload, type SubstituteSessionExerciseRequest, type SubstituteSessionExerciseResponse, type SupabaseAuthResponse, type SupabaseAuthUser, type SupabaseMigrationResponse, TEMPORARY_OVERRIDE_KINDS, TEMPORARY_OVERRIDE_SOURCE_KINDS, TRAINING_BLOCK_COMPARISON_MAX_DAYS, TRAINING_DISCIPLINE_VALUES, TRAINING_EVENT_TYPES, TRAINING_EXPERIENCE_LEVEL_VALUES, TRAINING_GOAL_VALUES, TRAINING_PARTNERSHIP_STATUSES, TRAINING_PARTNERS_MAX, TRAINING_PARTNER_ENCOURAGEMENTS_PER_24_HOURS_MAX, TRAINING_PARTNER_ENCOURAGEMENT_KINDS, TRAINING_PARTNER_PERMISSION_KEYS, TRAINING_PARTNER_REQUESTS_PER_DAY_MAX, TRAINING_SIGNAL_DECLINES_MAX, TRAINING_SIGNAL_DECLINE_SESSIONS, TRAINING_SIGNAL_MIN_DECLINE, TRAINING_SIGNAL_MIN_RPE_SETS, TRAINING_SIGNAL_MIN_SHORT_SETS, TRAINING_SIGNAL_MIN_TARGET_SETS, TRAINING_SIGNAL_PERIOD_DAYS, TRAINING_SIGNAL_RPE_RISE, TRAINING_SIGNAL_SHORT_LIFTS_MAX, TRAINING_SIGNAL_SHORT_POINTS_RISE, TRAINING_SIGNAL_WORKOUT_DROP, type TemporaryOverrideKind, type TemporaryOverrideSource, type TemporaryOverrideSourceKind, type TrainingBlockComparisonResponse, type TrainingDiscipline, type TrainingEventType, type TrainingExperienceLevel, type TrainingGoal, type TrainingIdentity, type TrainingLocationPreference, type TrainingLocationPreferenceInput, type TrainingPartnerAchievementNotification, type TrainingPartnerAchievementPushPayload, type TrainingPartnerEncouragementKind, type TrainingPartnerEncouragementNotification, type TrainingPartnerPermissions, type TrainingPartnerScheduleDay, type TrainingPartnerScheduleResponse, type TrainingPartnerSessionNotification, type TrainingPartnerSessionPushPayload, type TrainingPartnership, type TrainingPartnershipStatus, type TrainingPartnershipsResponse, type TrainingReminderPreference, type TrainingReminderPushPayload, type TrainingSignalPeriod, type TrainingSignalsResponse, USERNAME_MAX_LENGTH, USERNAME_MIN_LENGTH, USERNAME_PATTERN_SOURCE, type UpdateActivitySharingRequest, type UpdateCustomExerciseRequest, type UpdateNotificationPreferencesRequest, type UpdateProfileDiscoveryRequest, type UpdateProfilePrivacyRequest, type UpdateProfileRequest, type UpdateRoutineRequest, type UpdateRoutineVisibilityRequest, type UpdateSessionNotesRequest, type UpdateSessionNotesResponse, type UpdateTrainingPartnerPermissionsRequest, type UpsertBodyMeasurementRequest, type UpsertRoutineTrainingBlockRequest, type UpsertSetLogRequest, type UpsertSetLogResponse, type UserId, type UserProfile, type UserSearchResponse, type VolumeTrendPoint, type VolumeTrendQuery, type VolumeTrendResponse, type VolumeTrendSeries, WEIGHT_UNITS, WORKOUT_SESSION_STATUSES, type WarmUpEquipment, type WarmUpLoad, type WarmUpRamp, type WarmUpSet, type WarmUpStep, type WeightUnit, type WorkoutAnalyticsStatus, type WorkoutPeriod, type WorkoutProgressQuery, type WorkoutProgressResponse, type WorkoutSession, type WorkoutSessionId, type WorkoutSessionListResponse, type WorkoutSessionRecap, type WorkoutSessionSnapshotV1, type WorkoutSessionStatus, type WorkoutSessionSummary, type WorkoutSignal, type WorkoutStatsQuery, type WorkoutStatsResponse, accountExportFileName, applyDeload, bodyMeasurementProblems, bodyProgressRangeStart, buildWarmUpRamp, calculatePlateLoading, canLinkToNext, countsAsWork, countsForProgression, customExerciseProblem, defaultWarmUpEquipment, deloadLengthDays, exerciseGroupLabel, exerciseGroupPosition, exerciseGroups, exerciseNameKey, followWorkingLoad, hasOversizedGroup, isBarLoaded, isBodyMeasurementDate, isSetKind, isWithinQuietHours, latestBodyWeight, leadWorkingWeight, matchesDeletionConfirmation, normalizeExerciseLinks, normalizeExerciseName, primaryEquipment, requiredToFinish, resolveActiveTrainingBlock, resolveRoutinePlan, routineDayLabel, sessionCorrectionWindow, setKindOf, setLogValuesDiffer, summarizeBodyProgress, trainingBlockCovers, warmUpLoad };
|
package/dist/index.d.ts
CHANGED
|
@@ -1773,6 +1773,8 @@ interface ProfilePrivacySettings {
|
|
|
1773
1773
|
routines: ProfileVisibility;
|
|
1774
1774
|
achievements: ProfileVisibility;
|
|
1775
1775
|
bodyMetrics: ProfileVisibility;
|
|
1776
|
+
/** PROG-12: the dated weight and measurement history, separate from bodyMetrics. */
|
|
1777
|
+
bodyProgress: ProfileVisibility;
|
|
1776
1778
|
}
|
|
1777
1779
|
interface ProfileDiscoverySettings {
|
|
1778
1780
|
discoverableByName: boolean;
|
|
@@ -1788,6 +1790,7 @@ interface ProfileViewerAccess {
|
|
|
1788
1790
|
routines: boolean;
|
|
1789
1791
|
achievements: boolean;
|
|
1790
1792
|
bodyMetrics: boolean;
|
|
1793
|
+
bodyProgress: boolean;
|
|
1791
1794
|
}
|
|
1792
1795
|
interface PublicTrainingSummary {
|
|
1793
1796
|
completedWorkouts: number;
|
|
@@ -1929,8 +1932,13 @@ interface UpdateProfileRequest {
|
|
|
1929
1932
|
weight?: number | null;
|
|
1930
1933
|
height?: number | null;
|
|
1931
1934
|
weightUnit?: WeightUnit;
|
|
1935
|
+
/**
|
|
1936
|
+
* PROG-12: the member's local date (YYYY-MM-DD). A changed weight is also
|
|
1937
|
+
* recorded as that date's body measurement; without it the server uses UTC.
|
|
1938
|
+
*/
|
|
1939
|
+
localDate?: string;
|
|
1932
1940
|
}
|
|
1933
|
-
type UpdateProfilePrivacyRequest = Omit<ProfilePrivacySettings, 'biography' | 'location' | 'trainingIdentity'> & Partial<Pick<ProfilePrivacySettings, 'biography' | 'location' | 'trainingIdentity'>>;
|
|
1941
|
+
type UpdateProfilePrivacyRequest = Omit<ProfilePrivacySettings, 'biography' | 'location' | 'trainingIdentity' | 'bodyProgress'> & Partial<Pick<ProfilePrivacySettings, 'biography' | 'location' | 'trainingIdentity' | 'bodyProgress'>>;
|
|
1934
1942
|
type UpdateProfileDiscoveryRequest = ProfileDiscoverySettings;
|
|
1935
1943
|
interface PlatePairInventory {
|
|
1936
1944
|
weightKg: number;
|
|
@@ -2188,6 +2196,108 @@ interface PersonalGoalsResponse {
|
|
|
2188
2196
|
goals: PersonalGoalProgress[];
|
|
2189
2197
|
}
|
|
2190
2198
|
|
|
2199
|
+
/**
|
|
2200
|
+
* PROG-12: dated body weight and measurements. One entry per member per local
|
|
2201
|
+
* date; every value is optional but an entry holds at least one. Weight is
|
|
2202
|
+
* kilograms whatever unit the account displays, lengths are centimetres.
|
|
2203
|
+
*/
|
|
2204
|
+
declare const BODY_MEASUREMENT_FIELDS: readonly [{
|
|
2205
|
+
readonly key: "weightKg";
|
|
2206
|
+
readonly label: "Weight";
|
|
2207
|
+
readonly unit: "kg";
|
|
2208
|
+
readonly min: 20;
|
|
2209
|
+
readonly max: 1000;
|
|
2210
|
+
}, {
|
|
2211
|
+
readonly key: "waistCm";
|
|
2212
|
+
readonly label: "Waist";
|
|
2213
|
+
readonly unit: "cm";
|
|
2214
|
+
readonly min: 10;
|
|
2215
|
+
readonly max: 300;
|
|
2216
|
+
}, {
|
|
2217
|
+
readonly key: "hipsCm";
|
|
2218
|
+
readonly label: "Hips";
|
|
2219
|
+
readonly unit: "cm";
|
|
2220
|
+
readonly min: 10;
|
|
2221
|
+
readonly max: 300;
|
|
2222
|
+
}, {
|
|
2223
|
+
readonly key: "chestCm";
|
|
2224
|
+
readonly label: "Chest";
|
|
2225
|
+
readonly unit: "cm";
|
|
2226
|
+
readonly min: 10;
|
|
2227
|
+
readonly max: 300;
|
|
2228
|
+
}, {
|
|
2229
|
+
readonly key: "armCm";
|
|
2230
|
+
readonly label: "Arm";
|
|
2231
|
+
readonly unit: "cm";
|
|
2232
|
+
readonly min: 10;
|
|
2233
|
+
readonly max: 300;
|
|
2234
|
+
}, {
|
|
2235
|
+
readonly key: "thighCm";
|
|
2236
|
+
readonly label: "Thigh";
|
|
2237
|
+
readonly unit: "cm";
|
|
2238
|
+
readonly min: 10;
|
|
2239
|
+
readonly max: 300;
|
|
2240
|
+
}, {
|
|
2241
|
+
readonly key: "bodyFatPercent";
|
|
2242
|
+
readonly label: "Body fat";
|
|
2243
|
+
readonly unit: "%";
|
|
2244
|
+
readonly min: 2;
|
|
2245
|
+
readonly max: 75;
|
|
2246
|
+
}];
|
|
2247
|
+
type BodyMeasurementField = (typeof BODY_MEASUREMENT_FIELDS)[number]["key"];
|
|
2248
|
+
declare const BODY_MEASUREMENT_FIELD_KEYS: readonly BodyMeasurementField[];
|
|
2249
|
+
type BodyMeasurementValues = {
|
|
2250
|
+
[K in BodyMeasurementField]: number | null;
|
|
2251
|
+
};
|
|
2252
|
+
interface BodyMeasurement extends BodyMeasurementValues {
|
|
2253
|
+
/** The member's local date, YYYY-MM-DD. */
|
|
2254
|
+
date: string;
|
|
2255
|
+
updatedAt: IsoDateString;
|
|
2256
|
+
}
|
|
2257
|
+
/** PUT /body-measurements/:date. A missing or null value clears that field. */
|
|
2258
|
+
type UpsertBodyMeasurementRequest = Partial<BodyMeasurementValues>;
|
|
2259
|
+
declare const BODY_PROGRESS_RANGES: readonly ["30D", "90D", "1Y", "ALL"];
|
|
2260
|
+
type BodyProgressRange = (typeof BODY_PROGRESS_RANGES)[number];
|
|
2261
|
+
interface BodyFieldSummary {
|
|
2262
|
+
field: BodyMeasurementField;
|
|
2263
|
+
/** The most recent value ever recorded, and its date. */
|
|
2264
|
+
latest: number | null;
|
|
2265
|
+
latestDate: string | null;
|
|
2266
|
+
/**
|
|
2267
|
+
* Latest minus the first value recorded inside the range, when both exist
|
|
2268
|
+
* on different dates inside it; otherwise null.
|
|
2269
|
+
*/
|
|
2270
|
+
change: number | null;
|
|
2271
|
+
changeSince: string | null;
|
|
2272
|
+
}
|
|
2273
|
+
/**
|
|
2274
|
+
* GET /body-measurements (the owner) and
|
|
2275
|
+
* GET /users/:identifier/body-measurements (another member, when their
|
|
2276
|
+
* `bodyProgress` visibility allows it). Entries are the range's, oldest first.
|
|
2277
|
+
*/
|
|
2278
|
+
interface BodyProgressResponse {
|
|
2279
|
+
range: BodyProgressRange;
|
|
2280
|
+
rangeStart: string | null;
|
|
2281
|
+
entries: BodyMeasurement[];
|
|
2282
|
+
summary: BodyFieldSummary[];
|
|
2283
|
+
}
|
|
2284
|
+
declare function isBodyMeasurementDate(value: string): boolean;
|
|
2285
|
+
/** The first date a range covers, counting today; null for ALL. */
|
|
2286
|
+
declare function bodyProgressRangeStart(range: BodyProgressRange, today: string): string | null;
|
|
2287
|
+
/** The field a value is out of bounds for, with the reason in words. */
|
|
2288
|
+
interface BodyMeasurementProblem {
|
|
2289
|
+
field: BodyMeasurementField | null;
|
|
2290
|
+
message: string;
|
|
2291
|
+
}
|
|
2292
|
+
declare function bodyMeasurementProblems(input: UpsertBodyMeasurementRequest): BodyMeasurementProblem[];
|
|
2293
|
+
/**
|
|
2294
|
+
* Per field: the latest value ever recorded and its change over the range.
|
|
2295
|
+
* `entries` is every entry the member has, in any order.
|
|
2296
|
+
*/
|
|
2297
|
+
declare function summarizeBodyProgress(entries: ReadonlyArray<Pick<BodyMeasurement, "date"> & BodyMeasurementValues>, rangeStart: string | null): BodyFieldSummary[];
|
|
2298
|
+
/** The date `User.weight` follows: the latest entry that records a weight. */
|
|
2299
|
+
declare function latestBodyWeight(entries: ReadonlyArray<Pick<BodyMeasurement, "date" | "weightKg">>): number | null;
|
|
2300
|
+
|
|
2191
2301
|
interface PlateLoadingItem {
|
|
2192
2302
|
weightKg: number;
|
|
2193
2303
|
platesPerSide: number;
|
|
@@ -3581,6 +3691,12 @@ interface AccountExportTrainingEvent {
|
|
|
3581
3691
|
schemaVersion: number;
|
|
3582
3692
|
payload: unknown;
|
|
3583
3693
|
}
|
|
3694
|
+
/** Weight in kilograms, lengths in centimetres. */
|
|
3695
|
+
interface AccountExportBodyMeasurement extends BodyMeasurementValues {
|
|
3696
|
+
date: string;
|
|
3697
|
+
createdAt: IsoDateString;
|
|
3698
|
+
updatedAt: IsoDateString;
|
|
3699
|
+
}
|
|
3584
3700
|
interface AccountExportGoal {
|
|
3585
3701
|
type: string;
|
|
3586
3702
|
direction: string;
|
|
@@ -3640,6 +3756,8 @@ interface AccountExportV1 {
|
|
|
3640
3756
|
personalRecords: AccountExportPersonalRecord[];
|
|
3641
3757
|
trainingEvents: AccountExportTrainingEvent[];
|
|
3642
3758
|
goals: AccountExportGoal[];
|
|
3759
|
+
/** PROG-12: every dated body weight and measurement entry. */
|
|
3760
|
+
bodyMeasurements?: AccountExportBodyMeasurement[];
|
|
3643
3761
|
trainingLocations: AccountExportTrainingLocation[];
|
|
3644
3762
|
scheduleOverrides: AccountExportScheduleOverride[];
|
|
3645
3763
|
exercises: {
|
|
@@ -3704,4 +3822,4 @@ interface AccountExportV1 {
|
|
|
3704
3822
|
/** The file name a download of the export is saved under. */
|
|
3705
3823
|
declare function accountExportFileName(username: string, exportedAt: string): string;
|
|
3706
3824
|
|
|
3707
|
-
export { ACCOUNT_EXPORT_FORMAT, ACCOUNT_EXPORT_VERSION, ACHIEVEMENT_CATEGORIES, ACHIEVEMENT_DEFINITIONS, ACTIVITY_CAPS, ACTIVITY_COMMENTS_PAGE_SIZE, ACTIVITY_COMMENTS_PER_DAY_MAX, ACTIVITY_COMMENT_MAX_LENGTH, ACTIVITY_DEFAULT_AUDIENCE, ACTIVITY_ENTRY_ID_MAX_LENGTH, ACTIVITY_FEED_FOLLOWED_MAX, ACTIVITY_PAGE_DEFAULT_LIMIT, ACTIVITY_PAGE_MAX_LIMIT, ACTIVITY_PREVIEW_AUDIENCES, ACTIVITY_REACTIONS, ACTIVITY_TYPES, ACTIVITY_TYPE_SECTIONS, type AccountExportGoal, type AccountExportMember, type AccountExportPersonalRecord, type AccountExportRoutine, type AccountExportScheduleOverride, type AccountExportTrainingEvent, type AccountExportTrainingLocation, type AccountExportV1, type AchievementActivity, type AchievementCategory, type AchievementCategoryProgress, type AchievementDefinition, type AchievementNotification, type AchievementUnlockedEventPayload, type AchievementsResponse, type ActivityAudience, type ActivityCap, type ActivityComment, type ActivityCommentNotification, type ActivityCommentSummary, type ActivityCommentsQuery, type ActivityCommentsResponse, type ActivityEntry, type ActivityEntrySharing, type ActivityFeedResponse, type ActivityLink, type ActivityPage, type ActivityPageQuery, type ActivityPreviewAudience, type ActivityPreviewQuery, type ActivityReaction, type ActivityReactionSummary, type ActivitySection, type ActivitySharingSettings, type ActivityType, type AppNotification, BAR_CHOICES_KG, BAR_WARM_UP_STEPS, BLOCKED_MEMBERS_MAX, type BlockComparisonLift, type BlockComparisonLiftBest, type BlockComparisonPeriod, type BlockComparisonPeriodKind, type BlockedMember, type BlockedMembersResponse, type Brand, CLONE_ROUTINE_REFUSALS, COMEBACK_MIN_INACTIVE_DAYS, COMEBACK_RECOGNITION_LIMIT, COMEBACK_REQUIRED_ACTIVE_DAYS, COMEBACK_SESSION_LOOKBACK, COMEBACK_WINDOW_DAYS, CUSTOM_EXERCISES_MAX, CUSTOM_EXERCISE_NAME_MAX, CUSTOM_EXERCISE_NOTE_MAX, CUSTOM_EXERCISE_PROBLEM_MESSAGES, CUSTOM_EXERCISE_REFUSALS, type CalendarDate, type CloneRoutineRefusal, type CloneRoutineRequest, type ComebackActivity, type ComebackRecognition, type ComebackRecognitionSummary, type CorrectSessionRequest, type CorrectSessionResponse, type CorrectSessionSetRequest, type CreateActivityCommentRequest, type CreateActivityCommentResponse, type CreateDeloadRequest, type CreateReportRequest, type CreateReportResponse, type CreateRoutineDayInput, type CreateRoutineExerciseInput, type CreateRoutineRequest, type CreateRoutineVersionRequest, type CreateSessionShareRequest, type CustomExerciseInput, type CustomExerciseProblem, type CustomExerciseRefusal, DELOAD_DEFAULT_DAYS, DELOAD_DEFAULT_LOAD_REDUCTION, DELOAD_DEFAULT_SET_MODE, DELOAD_LOAD_REDUCTIONS, DELOAD_MAX_DAYS, DELOAD_NOT_LIGHTER, DELOAD_SET_MODES, DELOAD_SUGGESTION_COOLDOWN_DAYS, DELOAD_SUGGESTION_EARLIER_DAYS, DELOAD_SUGGESTION_MIN_MARKED_TODAY, DELOAD_SUGGESTION_ROUTINE_DAYS, DELOAD_SUGGESTION_SIGNALS, type DeclineSignal, type DecliningLift, type DecliningLiftSession, type DeleteAccountRequest, type DeleteAccountResponse, type DeleteActivityCommentResponse, type DeletePushSubscriptionRequest, type DeloadLoadReduction, type DeloadOptions, type DeloadSetMode, type DeloadSuggestion, type DeloadSuggestionEvidence, type DeloadSuggestionResponse, type DeloadSuggestionSignal, type DeloadSuggestionUnavailableReason, type DiscoverableRoutine, EXERCISE_EQUIPMENT, EXERCISE_GROUP_KIND_LABELS, EXERCISE_GROUP_MAX, EXERCISE_MECHANICS, type EarnedAchievement, type EarnedPersonalRecord, type EffortPeriod, type EffortSignal, type Exercise, type ExerciseEquipment, type ExerciseGroup, type ExerciseGroupKind, type ExerciseGroupPosition, type ExerciseId, type ExerciseMechanic, type ExercisePerformanceHistoryQuery, type ExercisePerformanceHistoryResponse, type ExercisePerformancePrescription, type ExercisePerformancePrescriptionSet, type ExercisePerformanceSession, type ExercisePerformanceSet, type ExercisePerformanceSummary, type ExercisePlateau, type ExerciseStrengthSummary, type ExerciseStrengthTrendPoint, type ExerciseStrengthTrendQuery, type ExerciseStrengthTrendResponse, FEATURED_PROFILE_ITEMS_MAX, FEATURED_PROFILE_ITEM_KINDS, FEATURED_PROFILE_REFERENCE_MAX_LENGTH, FOLLOW_SUGGESTIONS_DEFAULT_LIMIT, FOLLOW_SUGGESTIONS_MAX_LIMIT, FOLLOW_SUGGESTION_REASONS, type FeaturedProfileAchievementItem, type FeaturedProfileItem, type FeaturedProfileItemKind, type FeaturedProfileRankItem, type FeaturedProfileRecordItem, type FeaturedProfileRoutineItem, type FeaturedProfileSelection, type FeaturedProfileSelectionInput, type FeaturedProfileSelectionsResponse, type FinishStatus, type FinishWorkoutRequest, type FinishWorkoutResponse, type FollowSuggestion, type FollowSuggestionReason, type FollowSuggestionsResponse, type IsoDateString, LIMITED_SHORTFALL_KG, type ListSessionsParams, MAX_SETS_PER_EXERCISE, MEASURABLE_GOALS_MAX, MEASURABLE_GOAL_DIRECTIONS, MEASURABLE_GOAL_TYPES, MINUTES_IN_DAY, MODERATION_ACTION_KINDS, MODERATION_HISTORY_PAGE_SIZE, MODERATION_NOTE_MAX_LENGTH, MODERATION_QUEUE_PAGE_SIZE, MOVEMENT_PATTERNS, MUSCLE_GROUPS, type MarkNotificationsReadRequest, type MarkNotificationsReadResponse, type MeasurableGoal, type MeasurableGoalDirection, type MeasurableGoalExercise, type MeasurableGoalInput, type MeasurableGoalType, type MemberActivityResponse, type MemberModerationState, type MemberRoutinesResponse, type ModerationActionKind, type ModerationActionRecord, type ModerationHistoryQuery, type ModerationHistoryResponse, type ModerationQueueQuery, type ModerationQueueResponse, type ModerationReport, type ModeratorState, type MoveOccurrenceRequest, type MovementPattern, type MuscleGroup, type MuscleGroupHeatmapQuery, type MuscleGroupHeatmapResponse, type MuscleGroupHeatmapValue, type MuscleGroupHeatmapWeek, type MuscleVolumeTrendSeries, NOTIFICATIONS_LIST_LIMIT, NOTIFICATIONS_LOOKBACK_DAYS, NOTIFICATIONS_RETENTION_DAYS, NOTIFICATION_CATEGORIES, NOTIFICATION_KINDS, type NewFollowerNotification, type NotificationCategory, type NotificationKind, type NotificationPreferences, type NotificationPreferencesResponse, type NotificationsResponse, OTHER_WARM_UP_STEPS, type OwnActivityEntry, type OwnActivityResponse, PLATEAU_MIN_DAYS_SINCE_BEST, PLATEAU_MIN_SESSIONS, PLATEAU_MIN_SESSIONS_MAX, PLATEAU_MIN_SESSIONS_MIN, PLATEAU_RECENT_DAYS, PLATEAU_WINDOW_DAYS, PLATE_SETS, PREFERRED_TRAINING_STYLE_VALUES, PROFILE_BIO_MAX_LENGTH, PROFILE_FAVORITE_EXERCISES_MAX, PROFILE_LOCATION_MAX_LENGTH, PROFILE_TRAINING_DISCIPLINES_MAX, PROFILE_TRAINING_GOALS_MAX, PROFILE_VISIBILITY_VALUES, PROGRESSION_SCHEMES, PROGRESS_TIMELINE_EVENT_TYPES, PUSH_PAYLOAD_KINDS, PUSH_SUBSCRIPTIONS_MAX, type PaginatedResponse, type PersonalGoalProgress, type PersonalGoalsResponse, type PersonalRecordActivity, type PersonalRecordEntry, type PersonalRecordKind, type PlannedReminder, type PlateLoadingItem, type PlateLoadingResult, type PlatePairInventory, type PlateSetChoice, type PlateauPreferences, type PlateauSet, type PlateausResponse, type PreferredTrainingStyle, type PreviousPerformanceResponse, type PreviousSessionRecap, type PreviousSetPerformance, type ProfileDiscoverySettings, type ProfileFavoriteExercise, type ProfilePrivacySettings, type ProfileViewerAccess, type ProfileVisibility, type ProgressTimelineEventType, type ProgressTimelineItem, type ProgressTimelinePersonalRecordItem, type ProgressTimelineProgressionItem, type ProgressTimelineQuery, type ProgressTimelineRecordPerformance, type ProgressTimelineRecordReason, type ProgressTimelineResponse, type ProgressTimelineSessionContext, type ProgressionActivity, type ProgressionChange, type ProgressionRule, type ProgressionScheme, type ProgressionSetChange, type PublicBodyMetrics, type PublicProfileAchievements, type PublicTrainingSummary, type PublicUserProfile, type PushPayload, type PushPayloadKind, type PushSubscriptionKeys, type PushSubscriptionSummary, type PushSubscriptionsResponse, type QuietHours, RELATIONSHIP_LIST_DEFAULT_LIMIT, RELATIONSHIP_LIST_KINDS, RELATIONSHIP_LIST_MAX_LIMIT, RENAISSANCE_RANK_DEFINITIONS, REPORTS_PER_DAY_MAX, REPORT_DETAILS_MAX_LENGTH, REPORT_REASONS, REPORT_STATUSES, REPORT_SUBJECT_KINDS, REP_TYPES, RESERVED_USERNAMES, REST_ALERT_MAX_LEAD_SECONDS, REST_ALERT_MIN_LEAD_SECONDS, REST_ALERT_REFUSALS, ROUTINE_DAYS_MAX, ROUTINE_DAY_NAME_MAX, ROUTINE_DISCOVERY_DEFAULT_LIMIT, ROUTINE_DISCOVERY_MAX_LIMIT, ROUTINE_DISCOVERY_SCAN_LIMIT, ROUTINE_DURATION_BANDS, ROUTINE_DURATION_BAND_MAX_MINUTES, ROUTINE_SCHEDULE_MODES, ROUTINE_SHARE_MAX_ACTIVE_LINKS, ROUTINE_TRAINING_BLOCKS_MAX, ROUTINE_TRAINING_BLOCK_NAME_MAX, ROUTINE_TRAINING_BLOCK_REVISIONS_MAX, ROUTINE_TRAINING_BLOCK_SOURCE_KINDS, ROUTINE_TRAINING_BLOCK_STATES, ROUTINE_VERSIONS_MAX, ROUTINE_VERSION_KINDS, ROUTINE_VERSION_NAME_MAX, ROUTINE_VISIBILITY_VALUES, type RecentActivityEntry, type RegisterPushSubscriptionRequest, type RelationshipListKind, type RelationshipListQuery, type RelationshipListResponse, type RelationshipMember, type RenaissanceRankDefinition, type RenaissanceRankProgress, type RepTargetPeriod, type RepTargetSignal, type RepType, type ReplaceFeaturedProfileItemsRequest, type ReplaceMeasurableGoalsRequest, type ReplaceTrainingLocationsRequest, type ReportReason, type ReportStatus, type ReportSubjectKind, type ReportSubjectPreview, type ResolvedRoutinePlan, type RestAlertPushPayload, type RestAlertRefusal, type RestoreRoutineVersionResponse, type ReviewReportRequest, type ReviewReportResponse, type Routine, type RoutineClassification, type RoutineDay, type RoutineDayId, type RoutineDiscoveryQuery, type RoutineDiscoveryResponse, type RoutineDurationBand, type RoutineExercise, type RoutineFacets, type RoutineId, type RoutineLineage, type RoutinePlanSource, type RoutineScheduleMode, type RoutineSet, type RoutineShare, type RoutineShareListResponse, type RoutineSharedActivity, type RoutineTemporaryOverride, type RoutineTemporaryOverridePlan, type RoutineTemporaryOverridesResponse, type RoutineTrainingBlock, type RoutineTrainingBlockPlan, type RoutineTrainingBlockRevision, type RoutineTrainingBlockRevisionsResponse, type RoutineTrainingBlockSource, type RoutineTrainingBlockSourceKind, type RoutineTrainingBlockState, type RoutineTrainingBlocksResponse, type RoutineVersion, type RoutineVersionDay, type RoutineVersionExercise, type RoutineVersionKind, type RoutineVersionSetup, type RoutineVersionsResponse, type RoutineVisibility, SCHEDULE_MOVE_MAX_DAYS, SCHEDULE_OVERRIDES_MAX_RANGE_DAYS, SCHEDULE_OVERRIDE_KINDS, SCHEDULE_SKIP_PAST_DAYS, SESSION_CORRECTIONS_MAX, SESSION_CORRECTION_LIMITS, SESSION_CORRECTION_WINDOW_HOURS, SESSION_EXERCISE_NOTE_MAX_LENGTH, SESSION_NOTE_MAX_LENGTH, SESSION_SHARE_DEFAULT_FIELDS, SESSION_SHARE_FIELDS, SESSION_SHARE_MAX_ACTIVE_LINKS, SET_KINDS, SET_KIND_LABELS, SEXES, SHARED_ROUTINE_SOURCES, STARRED_EXERCISES_MAX, STREAK_MAX_GAP_DAYS, type ScheduleOverride, type ScheduleOverrideKind, type ScheduleOverridesQuery, type ScheduleOverridesResponse, type ScheduleRestAlertRequest, type ScheduleRestAlertResponse, type SendTrainingPartnerEncouragementRequest, type SendTrainingPartnerEncouragementResponse, type SessionComparisonExercise, type SessionComparisonQuery, type SessionComparisonResponse, type SessionComparisonRoutineDay, type SessionComparisonSession, type SessionComparisonSet, type SessionCompletedActivity, type SessionCorrection, type SessionCorrectionClosedReason, type SessionCorrectionWindow, type SessionCorrectionsResponse, type SessionExerciseNote, type SessionExerciseSubstitution, type SessionProgressNotification, type SessionRecapExerciseNote, type SessionRecapRecord, type SessionSetCorrection, type SessionShare, type SessionShareField, type SessionShareListResponse, type SessionTemporaryOverride, type SessionTrainingBlock, type SetAccountTimeZoneRequest, type SetActivityEntryAudienceRequest, type SetActivityEntryAudienceResponse, type SetActivityReactionRequest, type SetActivityReactionResponse, type SetKind, type SetLog, type SetLogValues, type Sex, type SharedRoutine, type SharedRoutineOwner, type SharedRoutineSource, type SharedRoutineSummary, type SharedSessionOwner, type SharedSessionRecap, type SkipOccurrenceRequest, type StarredExercise, type StarredExercisesResponse, type StartWorkoutRequest, type StartWorkoutResponse, type StreakAtRiskPushPayload, type StreakMilestoneActivity, type StreakMilestoneEventPayload, type SubstituteSessionExerciseRequest, type SubstituteSessionExerciseResponse, type SupabaseAuthResponse, type SupabaseAuthUser, type SupabaseMigrationResponse, TEMPORARY_OVERRIDE_KINDS, TEMPORARY_OVERRIDE_SOURCE_KINDS, TRAINING_BLOCK_COMPARISON_MAX_DAYS, TRAINING_DISCIPLINE_VALUES, TRAINING_EVENT_TYPES, TRAINING_EXPERIENCE_LEVEL_VALUES, TRAINING_GOAL_VALUES, TRAINING_PARTNERSHIP_STATUSES, TRAINING_PARTNERS_MAX, TRAINING_PARTNER_ENCOURAGEMENTS_PER_24_HOURS_MAX, TRAINING_PARTNER_ENCOURAGEMENT_KINDS, TRAINING_PARTNER_PERMISSION_KEYS, TRAINING_PARTNER_REQUESTS_PER_DAY_MAX, TRAINING_SIGNAL_DECLINES_MAX, TRAINING_SIGNAL_DECLINE_SESSIONS, TRAINING_SIGNAL_MIN_DECLINE, TRAINING_SIGNAL_MIN_RPE_SETS, TRAINING_SIGNAL_MIN_SHORT_SETS, TRAINING_SIGNAL_MIN_TARGET_SETS, TRAINING_SIGNAL_PERIOD_DAYS, TRAINING_SIGNAL_RPE_RISE, TRAINING_SIGNAL_SHORT_LIFTS_MAX, TRAINING_SIGNAL_SHORT_POINTS_RISE, TRAINING_SIGNAL_WORKOUT_DROP, type TemporaryOverrideKind, type TemporaryOverrideSource, type TemporaryOverrideSourceKind, type TrainingBlockComparisonResponse, type TrainingDiscipline, type TrainingEventType, type TrainingExperienceLevel, type TrainingGoal, type TrainingIdentity, type TrainingLocationPreference, type TrainingLocationPreferenceInput, type TrainingPartnerAchievementNotification, type TrainingPartnerAchievementPushPayload, type TrainingPartnerEncouragementKind, type TrainingPartnerEncouragementNotification, type TrainingPartnerPermissions, type TrainingPartnerScheduleDay, type TrainingPartnerScheduleResponse, type TrainingPartnerSessionNotification, type TrainingPartnerSessionPushPayload, type TrainingPartnership, type TrainingPartnershipStatus, type TrainingPartnershipsResponse, type TrainingReminderPreference, type TrainingReminderPushPayload, type TrainingSignalPeriod, type TrainingSignalsResponse, USERNAME_MAX_LENGTH, USERNAME_MIN_LENGTH, USERNAME_PATTERN_SOURCE, type UpdateActivitySharingRequest, type UpdateCustomExerciseRequest, type UpdateNotificationPreferencesRequest, type UpdateProfileDiscoveryRequest, type UpdateProfilePrivacyRequest, type UpdateProfileRequest, type UpdateRoutineRequest, type UpdateRoutineVisibilityRequest, type UpdateSessionNotesRequest, type UpdateSessionNotesResponse, type UpdateTrainingPartnerPermissionsRequest, type UpsertRoutineTrainingBlockRequest, type UpsertSetLogRequest, type UpsertSetLogResponse, type UserId, type UserProfile, type UserSearchResponse, type VolumeTrendPoint, type VolumeTrendQuery, type VolumeTrendResponse, type VolumeTrendSeries, WEIGHT_UNITS, WORKOUT_SESSION_STATUSES, type WarmUpEquipment, type WarmUpLoad, type WarmUpRamp, type WarmUpSet, type WarmUpStep, type WeightUnit, type WorkoutAnalyticsStatus, type WorkoutPeriod, type WorkoutProgressQuery, type WorkoutProgressResponse, type WorkoutSession, type WorkoutSessionId, type WorkoutSessionListResponse, type WorkoutSessionRecap, type WorkoutSessionSnapshotV1, type WorkoutSessionStatus, type WorkoutSessionSummary, type WorkoutSignal, type WorkoutStatsQuery, type WorkoutStatsResponse, accountExportFileName, applyDeload, buildWarmUpRamp, calculatePlateLoading, canLinkToNext, countsAsWork, countsForProgression, customExerciseProblem, defaultWarmUpEquipment, deloadLengthDays, exerciseGroupLabel, exerciseGroupPosition, exerciseGroups, exerciseNameKey, followWorkingLoad, hasOversizedGroup, isBarLoaded, isSetKind, isWithinQuietHours, leadWorkingWeight, matchesDeletionConfirmation, normalizeExerciseLinks, normalizeExerciseName, primaryEquipment, requiredToFinish, resolveActiveTrainingBlock, resolveRoutinePlan, routineDayLabel, sessionCorrectionWindow, setKindOf, setLogValuesDiffer, trainingBlockCovers, warmUpLoad };
|
|
3825
|
+
export { ACCOUNT_EXPORT_FORMAT, ACCOUNT_EXPORT_VERSION, ACHIEVEMENT_CATEGORIES, ACHIEVEMENT_DEFINITIONS, ACTIVITY_CAPS, ACTIVITY_COMMENTS_PAGE_SIZE, ACTIVITY_COMMENTS_PER_DAY_MAX, ACTIVITY_COMMENT_MAX_LENGTH, ACTIVITY_DEFAULT_AUDIENCE, ACTIVITY_ENTRY_ID_MAX_LENGTH, ACTIVITY_FEED_FOLLOWED_MAX, ACTIVITY_PAGE_DEFAULT_LIMIT, ACTIVITY_PAGE_MAX_LIMIT, ACTIVITY_PREVIEW_AUDIENCES, ACTIVITY_REACTIONS, ACTIVITY_TYPES, ACTIVITY_TYPE_SECTIONS, type AccountExportBodyMeasurement, type AccountExportGoal, type AccountExportMember, type AccountExportPersonalRecord, type AccountExportRoutine, type AccountExportScheduleOverride, type AccountExportTrainingEvent, type AccountExportTrainingLocation, type AccountExportV1, type AchievementActivity, type AchievementCategory, type AchievementCategoryProgress, type AchievementDefinition, type AchievementNotification, type AchievementUnlockedEventPayload, type AchievementsResponse, type ActivityAudience, type ActivityCap, type ActivityComment, type ActivityCommentNotification, type ActivityCommentSummary, type ActivityCommentsQuery, type ActivityCommentsResponse, type ActivityEntry, type ActivityEntrySharing, type ActivityFeedResponse, type ActivityLink, type ActivityPage, type ActivityPageQuery, type ActivityPreviewAudience, type ActivityPreviewQuery, type ActivityReaction, type ActivityReactionSummary, type ActivitySection, type ActivitySharingSettings, type ActivityType, type AppNotification, BAR_CHOICES_KG, BAR_WARM_UP_STEPS, BLOCKED_MEMBERS_MAX, BODY_MEASUREMENT_FIELDS, BODY_MEASUREMENT_FIELD_KEYS, BODY_PROGRESS_RANGES, type BlockComparisonLift, type BlockComparisonLiftBest, type BlockComparisonPeriod, type BlockComparisonPeriodKind, type BlockedMember, type BlockedMembersResponse, type BodyFieldSummary, type BodyMeasurement, type BodyMeasurementField, type BodyMeasurementProblem, type BodyMeasurementValues, type BodyProgressRange, type BodyProgressResponse, type Brand, CLONE_ROUTINE_REFUSALS, COMEBACK_MIN_INACTIVE_DAYS, COMEBACK_RECOGNITION_LIMIT, COMEBACK_REQUIRED_ACTIVE_DAYS, COMEBACK_SESSION_LOOKBACK, COMEBACK_WINDOW_DAYS, CUSTOM_EXERCISES_MAX, CUSTOM_EXERCISE_NAME_MAX, CUSTOM_EXERCISE_NOTE_MAX, CUSTOM_EXERCISE_PROBLEM_MESSAGES, CUSTOM_EXERCISE_REFUSALS, type CalendarDate, type CloneRoutineRefusal, type CloneRoutineRequest, type ComebackActivity, type ComebackRecognition, type ComebackRecognitionSummary, type CorrectSessionRequest, type CorrectSessionResponse, type CorrectSessionSetRequest, type CreateActivityCommentRequest, type CreateActivityCommentResponse, type CreateDeloadRequest, type CreateReportRequest, type CreateReportResponse, type CreateRoutineDayInput, type CreateRoutineExerciseInput, type CreateRoutineRequest, type CreateRoutineVersionRequest, type CreateSessionShareRequest, type CustomExerciseInput, type CustomExerciseProblem, type CustomExerciseRefusal, DELOAD_DEFAULT_DAYS, DELOAD_DEFAULT_LOAD_REDUCTION, DELOAD_DEFAULT_SET_MODE, DELOAD_LOAD_REDUCTIONS, DELOAD_MAX_DAYS, DELOAD_NOT_LIGHTER, DELOAD_SET_MODES, DELOAD_SUGGESTION_COOLDOWN_DAYS, DELOAD_SUGGESTION_EARLIER_DAYS, DELOAD_SUGGESTION_MIN_MARKED_TODAY, DELOAD_SUGGESTION_ROUTINE_DAYS, DELOAD_SUGGESTION_SIGNALS, type DeclineSignal, type DecliningLift, type DecliningLiftSession, type DeleteAccountRequest, type DeleteAccountResponse, type DeleteActivityCommentResponse, type DeletePushSubscriptionRequest, type DeloadLoadReduction, type DeloadOptions, type DeloadSetMode, type DeloadSuggestion, type DeloadSuggestionEvidence, type DeloadSuggestionResponse, type DeloadSuggestionSignal, type DeloadSuggestionUnavailableReason, type DiscoverableRoutine, EXERCISE_EQUIPMENT, EXERCISE_GROUP_KIND_LABELS, EXERCISE_GROUP_MAX, EXERCISE_MECHANICS, type EarnedAchievement, type EarnedPersonalRecord, type EffortPeriod, type EffortSignal, type Exercise, type ExerciseEquipment, type ExerciseGroup, type ExerciseGroupKind, type ExerciseGroupPosition, type ExerciseId, type ExerciseMechanic, type ExercisePerformanceHistoryQuery, type ExercisePerformanceHistoryResponse, type ExercisePerformancePrescription, type ExercisePerformancePrescriptionSet, type ExercisePerformanceSession, type ExercisePerformanceSet, type ExercisePerformanceSummary, type ExercisePlateau, type ExerciseStrengthSummary, type ExerciseStrengthTrendPoint, type ExerciseStrengthTrendQuery, type ExerciseStrengthTrendResponse, FEATURED_PROFILE_ITEMS_MAX, FEATURED_PROFILE_ITEM_KINDS, FEATURED_PROFILE_REFERENCE_MAX_LENGTH, FOLLOW_SUGGESTIONS_DEFAULT_LIMIT, FOLLOW_SUGGESTIONS_MAX_LIMIT, FOLLOW_SUGGESTION_REASONS, type FeaturedProfileAchievementItem, type FeaturedProfileItem, type FeaturedProfileItemKind, type FeaturedProfileRankItem, type FeaturedProfileRecordItem, type FeaturedProfileRoutineItem, type FeaturedProfileSelection, type FeaturedProfileSelectionInput, type FeaturedProfileSelectionsResponse, type FinishStatus, type FinishWorkoutRequest, type FinishWorkoutResponse, type FollowSuggestion, type FollowSuggestionReason, type FollowSuggestionsResponse, type IsoDateString, LIMITED_SHORTFALL_KG, type ListSessionsParams, MAX_SETS_PER_EXERCISE, MEASURABLE_GOALS_MAX, MEASURABLE_GOAL_DIRECTIONS, MEASURABLE_GOAL_TYPES, MINUTES_IN_DAY, MODERATION_ACTION_KINDS, MODERATION_HISTORY_PAGE_SIZE, MODERATION_NOTE_MAX_LENGTH, MODERATION_QUEUE_PAGE_SIZE, MOVEMENT_PATTERNS, MUSCLE_GROUPS, type MarkNotificationsReadRequest, type MarkNotificationsReadResponse, type MeasurableGoal, type MeasurableGoalDirection, type MeasurableGoalExercise, type MeasurableGoalInput, type MeasurableGoalType, type MemberActivityResponse, type MemberModerationState, type MemberRoutinesResponse, type ModerationActionKind, type ModerationActionRecord, type ModerationHistoryQuery, type ModerationHistoryResponse, type ModerationQueueQuery, type ModerationQueueResponse, type ModerationReport, type ModeratorState, type MoveOccurrenceRequest, type MovementPattern, type MuscleGroup, type MuscleGroupHeatmapQuery, type MuscleGroupHeatmapResponse, type MuscleGroupHeatmapValue, type MuscleGroupHeatmapWeek, type MuscleVolumeTrendSeries, NOTIFICATIONS_LIST_LIMIT, NOTIFICATIONS_LOOKBACK_DAYS, NOTIFICATIONS_RETENTION_DAYS, NOTIFICATION_CATEGORIES, NOTIFICATION_KINDS, type NewFollowerNotification, type NotificationCategory, type NotificationKind, type NotificationPreferences, type NotificationPreferencesResponse, type NotificationsResponse, OTHER_WARM_UP_STEPS, type OwnActivityEntry, type OwnActivityResponse, PLATEAU_MIN_DAYS_SINCE_BEST, PLATEAU_MIN_SESSIONS, PLATEAU_MIN_SESSIONS_MAX, PLATEAU_MIN_SESSIONS_MIN, PLATEAU_RECENT_DAYS, PLATEAU_WINDOW_DAYS, PLATE_SETS, PREFERRED_TRAINING_STYLE_VALUES, PROFILE_BIO_MAX_LENGTH, PROFILE_FAVORITE_EXERCISES_MAX, PROFILE_LOCATION_MAX_LENGTH, PROFILE_TRAINING_DISCIPLINES_MAX, PROFILE_TRAINING_GOALS_MAX, PROFILE_VISIBILITY_VALUES, PROGRESSION_SCHEMES, PROGRESS_TIMELINE_EVENT_TYPES, PUSH_PAYLOAD_KINDS, PUSH_SUBSCRIPTIONS_MAX, type PaginatedResponse, type PersonalGoalProgress, type PersonalGoalsResponse, type PersonalRecordActivity, type PersonalRecordEntry, type PersonalRecordKind, type PlannedReminder, type PlateLoadingItem, type PlateLoadingResult, type PlatePairInventory, type PlateSetChoice, type PlateauPreferences, type PlateauSet, type PlateausResponse, type PreferredTrainingStyle, type PreviousPerformanceResponse, type PreviousSessionRecap, type PreviousSetPerformance, type ProfileDiscoverySettings, type ProfileFavoriteExercise, type ProfilePrivacySettings, type ProfileViewerAccess, type ProfileVisibility, type ProgressTimelineEventType, type ProgressTimelineItem, type ProgressTimelinePersonalRecordItem, type ProgressTimelineProgressionItem, type ProgressTimelineQuery, type ProgressTimelineRecordPerformance, type ProgressTimelineRecordReason, type ProgressTimelineResponse, type ProgressTimelineSessionContext, type ProgressionActivity, type ProgressionChange, type ProgressionRule, type ProgressionScheme, type ProgressionSetChange, type PublicBodyMetrics, type PublicProfileAchievements, type PublicTrainingSummary, type PublicUserProfile, type PushPayload, type PushPayloadKind, type PushSubscriptionKeys, type PushSubscriptionSummary, type PushSubscriptionsResponse, type QuietHours, RELATIONSHIP_LIST_DEFAULT_LIMIT, RELATIONSHIP_LIST_KINDS, RELATIONSHIP_LIST_MAX_LIMIT, RENAISSANCE_RANK_DEFINITIONS, REPORTS_PER_DAY_MAX, REPORT_DETAILS_MAX_LENGTH, REPORT_REASONS, REPORT_STATUSES, REPORT_SUBJECT_KINDS, REP_TYPES, RESERVED_USERNAMES, REST_ALERT_MAX_LEAD_SECONDS, REST_ALERT_MIN_LEAD_SECONDS, REST_ALERT_REFUSALS, ROUTINE_DAYS_MAX, ROUTINE_DAY_NAME_MAX, ROUTINE_DISCOVERY_DEFAULT_LIMIT, ROUTINE_DISCOVERY_MAX_LIMIT, ROUTINE_DISCOVERY_SCAN_LIMIT, ROUTINE_DURATION_BANDS, ROUTINE_DURATION_BAND_MAX_MINUTES, ROUTINE_SCHEDULE_MODES, ROUTINE_SHARE_MAX_ACTIVE_LINKS, ROUTINE_TRAINING_BLOCKS_MAX, ROUTINE_TRAINING_BLOCK_NAME_MAX, ROUTINE_TRAINING_BLOCK_REVISIONS_MAX, ROUTINE_TRAINING_BLOCK_SOURCE_KINDS, ROUTINE_TRAINING_BLOCK_STATES, ROUTINE_VERSIONS_MAX, ROUTINE_VERSION_KINDS, ROUTINE_VERSION_NAME_MAX, ROUTINE_VISIBILITY_VALUES, type RecentActivityEntry, type RegisterPushSubscriptionRequest, type RelationshipListKind, type RelationshipListQuery, type RelationshipListResponse, type RelationshipMember, type RenaissanceRankDefinition, type RenaissanceRankProgress, type RepTargetPeriod, type RepTargetSignal, type RepType, type ReplaceFeaturedProfileItemsRequest, type ReplaceMeasurableGoalsRequest, type ReplaceTrainingLocationsRequest, type ReportReason, type ReportStatus, type ReportSubjectKind, type ReportSubjectPreview, type ResolvedRoutinePlan, type RestAlertPushPayload, type RestAlertRefusal, type RestoreRoutineVersionResponse, type ReviewReportRequest, type ReviewReportResponse, type Routine, type RoutineClassification, type RoutineDay, type RoutineDayId, type RoutineDiscoveryQuery, type RoutineDiscoveryResponse, type RoutineDurationBand, type RoutineExercise, type RoutineFacets, type RoutineId, type RoutineLineage, type RoutinePlanSource, type RoutineScheduleMode, type RoutineSet, type RoutineShare, type RoutineShareListResponse, type RoutineSharedActivity, type RoutineTemporaryOverride, type RoutineTemporaryOverridePlan, type RoutineTemporaryOverridesResponse, type RoutineTrainingBlock, type RoutineTrainingBlockPlan, type RoutineTrainingBlockRevision, type RoutineTrainingBlockRevisionsResponse, type RoutineTrainingBlockSource, type RoutineTrainingBlockSourceKind, type RoutineTrainingBlockState, type RoutineTrainingBlocksResponse, type RoutineVersion, type RoutineVersionDay, type RoutineVersionExercise, type RoutineVersionKind, type RoutineVersionSetup, type RoutineVersionsResponse, type RoutineVisibility, SCHEDULE_MOVE_MAX_DAYS, SCHEDULE_OVERRIDES_MAX_RANGE_DAYS, SCHEDULE_OVERRIDE_KINDS, SCHEDULE_SKIP_PAST_DAYS, SESSION_CORRECTIONS_MAX, SESSION_CORRECTION_LIMITS, SESSION_CORRECTION_WINDOW_HOURS, SESSION_EXERCISE_NOTE_MAX_LENGTH, SESSION_NOTE_MAX_LENGTH, SESSION_SHARE_DEFAULT_FIELDS, SESSION_SHARE_FIELDS, SESSION_SHARE_MAX_ACTIVE_LINKS, SET_KINDS, SET_KIND_LABELS, SEXES, SHARED_ROUTINE_SOURCES, STARRED_EXERCISES_MAX, STREAK_MAX_GAP_DAYS, type ScheduleOverride, type ScheduleOverrideKind, type ScheduleOverridesQuery, type ScheduleOverridesResponse, type ScheduleRestAlertRequest, type ScheduleRestAlertResponse, type SendTrainingPartnerEncouragementRequest, type SendTrainingPartnerEncouragementResponse, type SessionComparisonExercise, type SessionComparisonQuery, type SessionComparisonResponse, type SessionComparisonRoutineDay, type SessionComparisonSession, type SessionComparisonSet, type SessionCompletedActivity, type SessionCorrection, type SessionCorrectionClosedReason, type SessionCorrectionWindow, type SessionCorrectionsResponse, type SessionExerciseNote, type SessionExerciseSubstitution, type SessionProgressNotification, type SessionRecapExerciseNote, type SessionRecapRecord, type SessionSetCorrection, type SessionShare, type SessionShareField, type SessionShareListResponse, type SessionTemporaryOverride, type SessionTrainingBlock, type SetAccountTimeZoneRequest, type SetActivityEntryAudienceRequest, type SetActivityEntryAudienceResponse, type SetActivityReactionRequest, type SetActivityReactionResponse, type SetKind, type SetLog, type SetLogValues, type Sex, type SharedRoutine, type SharedRoutineOwner, type SharedRoutineSource, type SharedRoutineSummary, type SharedSessionOwner, type SharedSessionRecap, type SkipOccurrenceRequest, type StarredExercise, type StarredExercisesResponse, type StartWorkoutRequest, type StartWorkoutResponse, type StreakAtRiskPushPayload, type StreakMilestoneActivity, type StreakMilestoneEventPayload, type SubstituteSessionExerciseRequest, type SubstituteSessionExerciseResponse, type SupabaseAuthResponse, type SupabaseAuthUser, type SupabaseMigrationResponse, TEMPORARY_OVERRIDE_KINDS, TEMPORARY_OVERRIDE_SOURCE_KINDS, TRAINING_BLOCK_COMPARISON_MAX_DAYS, TRAINING_DISCIPLINE_VALUES, TRAINING_EVENT_TYPES, TRAINING_EXPERIENCE_LEVEL_VALUES, TRAINING_GOAL_VALUES, TRAINING_PARTNERSHIP_STATUSES, TRAINING_PARTNERS_MAX, TRAINING_PARTNER_ENCOURAGEMENTS_PER_24_HOURS_MAX, TRAINING_PARTNER_ENCOURAGEMENT_KINDS, TRAINING_PARTNER_PERMISSION_KEYS, TRAINING_PARTNER_REQUESTS_PER_DAY_MAX, TRAINING_SIGNAL_DECLINES_MAX, TRAINING_SIGNAL_DECLINE_SESSIONS, TRAINING_SIGNAL_MIN_DECLINE, TRAINING_SIGNAL_MIN_RPE_SETS, TRAINING_SIGNAL_MIN_SHORT_SETS, TRAINING_SIGNAL_MIN_TARGET_SETS, TRAINING_SIGNAL_PERIOD_DAYS, TRAINING_SIGNAL_RPE_RISE, TRAINING_SIGNAL_SHORT_LIFTS_MAX, TRAINING_SIGNAL_SHORT_POINTS_RISE, TRAINING_SIGNAL_WORKOUT_DROP, type TemporaryOverrideKind, type TemporaryOverrideSource, type TemporaryOverrideSourceKind, type TrainingBlockComparisonResponse, type TrainingDiscipline, type TrainingEventType, type TrainingExperienceLevel, type TrainingGoal, type TrainingIdentity, type TrainingLocationPreference, type TrainingLocationPreferenceInput, type TrainingPartnerAchievementNotification, type TrainingPartnerAchievementPushPayload, type TrainingPartnerEncouragementKind, type TrainingPartnerEncouragementNotification, type TrainingPartnerPermissions, type TrainingPartnerScheduleDay, type TrainingPartnerScheduleResponse, type TrainingPartnerSessionNotification, type TrainingPartnerSessionPushPayload, type TrainingPartnership, type TrainingPartnershipStatus, type TrainingPartnershipsResponse, type TrainingReminderPreference, type TrainingReminderPushPayload, type TrainingSignalPeriod, type TrainingSignalsResponse, USERNAME_MAX_LENGTH, USERNAME_MIN_LENGTH, USERNAME_PATTERN_SOURCE, type UpdateActivitySharingRequest, type UpdateCustomExerciseRequest, type UpdateNotificationPreferencesRequest, type UpdateProfileDiscoveryRequest, type UpdateProfilePrivacyRequest, type UpdateProfileRequest, type UpdateRoutineRequest, type UpdateRoutineVisibilityRequest, type UpdateSessionNotesRequest, type UpdateSessionNotesResponse, type UpdateTrainingPartnerPermissionsRequest, type UpsertBodyMeasurementRequest, type UpsertRoutineTrainingBlockRequest, type UpsertSetLogRequest, type UpsertSetLogResponse, type UserId, type UserProfile, type UserSearchResponse, type VolumeTrendPoint, type VolumeTrendQuery, type VolumeTrendResponse, type VolumeTrendSeries, WEIGHT_UNITS, WORKOUT_SESSION_STATUSES, type WarmUpEquipment, type WarmUpLoad, type WarmUpRamp, type WarmUpSet, type WarmUpStep, type WeightUnit, type WorkoutAnalyticsStatus, type WorkoutPeriod, type WorkoutProgressQuery, type WorkoutProgressResponse, type WorkoutSession, type WorkoutSessionId, type WorkoutSessionListResponse, type WorkoutSessionRecap, type WorkoutSessionSnapshotV1, type WorkoutSessionStatus, type WorkoutSessionSummary, type WorkoutSignal, type WorkoutStatsQuery, type WorkoutStatsResponse, accountExportFileName, applyDeload, bodyMeasurementProblems, bodyProgressRangeStart, buildWarmUpRamp, calculatePlateLoading, canLinkToNext, countsAsWork, countsForProgression, customExerciseProblem, defaultWarmUpEquipment, deloadLengthDays, exerciseGroupLabel, exerciseGroupPosition, exerciseGroups, exerciseNameKey, followWorkingLoad, hasOversizedGroup, isBarLoaded, isBodyMeasurementDate, isSetKind, isWithinQuietHours, latestBodyWeight, leadWorkingWeight, matchesDeletionConfirmation, normalizeExerciseLinks, normalizeExerciseName, primaryEquipment, requiredToFinish, resolveActiveTrainingBlock, resolveRoutinePlan, routineDayLabel, sessionCorrectionWindow, setKindOf, setLogValuesDiffer, summarizeBodyProgress, trainingBlockCovers, warmUpLoad };
|
package/dist/index.js
CHANGED
|
@@ -264,6 +264,92 @@ var MEASURABLE_GOAL_TYPES = [
|
|
|
264
264
|
var MEASURABLE_GOAL_DIRECTIONS = ["AT_LEAST", "AT_MOST"];
|
|
265
265
|
var MEASURABLE_GOALS_MAX = 8;
|
|
266
266
|
|
|
267
|
+
// src/body-measurements.ts
|
|
268
|
+
var BODY_MEASUREMENT_FIELDS = [
|
|
269
|
+
{ key: "weightKg", label: "Weight", unit: "kg", min: 20, max: 1e3 },
|
|
270
|
+
{ key: "waistCm", label: "Waist", unit: "cm", min: 10, max: 300 },
|
|
271
|
+
{ key: "hipsCm", label: "Hips", unit: "cm", min: 10, max: 300 },
|
|
272
|
+
{ key: "chestCm", label: "Chest", unit: "cm", min: 10, max: 300 },
|
|
273
|
+
{ key: "armCm", label: "Arm", unit: "cm", min: 10, max: 300 },
|
|
274
|
+
{ key: "thighCm", label: "Thigh", unit: "cm", min: 10, max: 300 },
|
|
275
|
+
{ key: "bodyFatPercent", label: "Body fat", unit: "%", min: 2, max: 75 }
|
|
276
|
+
];
|
|
277
|
+
var BODY_MEASUREMENT_FIELD_KEYS = BODY_MEASUREMENT_FIELDS.map((field) => field.key);
|
|
278
|
+
var BODY_PROGRESS_RANGES = ["30D", "90D", "1Y", "ALL"];
|
|
279
|
+
var DATE_PATTERN = /^(\d{4})-(\d{2})-(\d{2})$/;
|
|
280
|
+
function isBodyMeasurementDate(value) {
|
|
281
|
+
const match = DATE_PATTERN.exec(value);
|
|
282
|
+
if (!match) return false;
|
|
283
|
+
const date = /* @__PURE__ */ new Date(`${value}T00:00:00Z`);
|
|
284
|
+
return !Number.isNaN(date.getTime()) && date.toISOString().slice(0, 10) === value;
|
|
285
|
+
}
|
|
286
|
+
function shiftDate(date, days) {
|
|
287
|
+
const shifted = /* @__PURE__ */ new Date(`${date}T00:00:00Z`);
|
|
288
|
+
shifted.setUTCDate(shifted.getUTCDate() + days);
|
|
289
|
+
return shifted.toISOString().slice(0, 10);
|
|
290
|
+
}
|
|
291
|
+
function bodyProgressRangeStart(range, today) {
|
|
292
|
+
switch (range) {
|
|
293
|
+
case "30D":
|
|
294
|
+
return shiftDate(today, -29);
|
|
295
|
+
case "90D":
|
|
296
|
+
return shiftDate(today, -89);
|
|
297
|
+
case "1Y":
|
|
298
|
+
return shiftDate(today, -364);
|
|
299
|
+
case "ALL":
|
|
300
|
+
return null;
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
function bodyMeasurementProblems(input) {
|
|
304
|
+
const problems = [];
|
|
305
|
+
let values = 0;
|
|
306
|
+
for (const field of BODY_MEASUREMENT_FIELDS) {
|
|
307
|
+
const value = input[field.key];
|
|
308
|
+
if (value === void 0 || value === null) continue;
|
|
309
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
310
|
+
problems.push({ field: field.key, message: `${field.label} must be a number` });
|
|
311
|
+
continue;
|
|
312
|
+
}
|
|
313
|
+
values += 1;
|
|
314
|
+
if (value < field.min || value > field.max) {
|
|
315
|
+
problems.push({
|
|
316
|
+
field: field.key,
|
|
317
|
+
message: `${field.label} must be between ${field.min} and ${field.max} ${field.unit}`
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
if (values === 0 && problems.length === 0) {
|
|
322
|
+
problems.push({ field: null, message: "Add at least one measurement" });
|
|
323
|
+
}
|
|
324
|
+
return problems;
|
|
325
|
+
}
|
|
326
|
+
function summarizeBodyProgress(entries, rangeStart) {
|
|
327
|
+
const ordered = [...entries].sort((a, b) => a.date.localeCompare(b.date));
|
|
328
|
+
return BODY_MEASUREMENT_FIELD_KEYS.map((field) => {
|
|
329
|
+
const recorded = ordered.filter((entry) => entry[field] !== null);
|
|
330
|
+
const latestEntry = recorded[recorded.length - 1] ?? null;
|
|
331
|
+
const firstInRange = recorded.find((entry) => rangeStart === null || entry.date >= rangeStart) ?? null;
|
|
332
|
+
const hasChange = latestEntry !== null && firstInRange !== null && firstInRange.date !== latestEntry.date;
|
|
333
|
+
return {
|
|
334
|
+
field,
|
|
335
|
+
latest: latestEntry?.[field] ?? null,
|
|
336
|
+
latestDate: latestEntry?.date ?? null,
|
|
337
|
+
change: hasChange ? Math.round((latestEntry[field] - firstInRange[field]) * 100) / 100 : null,
|
|
338
|
+
changeSince: hasChange ? firstInRange.date : null
|
|
339
|
+
};
|
|
340
|
+
});
|
|
341
|
+
}
|
|
342
|
+
function latestBodyWeight(entries) {
|
|
343
|
+
let latest = null;
|
|
344
|
+
for (const entry of entries) {
|
|
345
|
+
if (entry.weightKg === null) continue;
|
|
346
|
+
if (latest === null || entry.date > latest.date) {
|
|
347
|
+
latest = { date: entry.date, weightKg: entry.weightKg };
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return latest?.weightKg ?? null;
|
|
351
|
+
}
|
|
352
|
+
|
|
267
353
|
// src/achievements.ts
|
|
268
354
|
var ACHIEVEMENT_CATEGORIES = [
|
|
269
355
|
"SESSIONS",
|
|
@@ -1126,6 +1212,9 @@ export {
|
|
|
1126
1212
|
BAR_CHOICES_KG,
|
|
1127
1213
|
BAR_WARM_UP_STEPS,
|
|
1128
1214
|
BLOCKED_MEMBERS_MAX,
|
|
1215
|
+
BODY_MEASUREMENT_FIELDS,
|
|
1216
|
+
BODY_MEASUREMENT_FIELD_KEYS,
|
|
1217
|
+
BODY_PROGRESS_RANGES,
|
|
1129
1218
|
CLONE_ROUTINE_REFUSALS,
|
|
1130
1219
|
COMEBACK_MIN_INACTIVE_DAYS,
|
|
1131
1220
|
COMEBACK_RECOGNITION_LIMIT,
|
|
@@ -1276,6 +1365,8 @@ export {
|
|
|
1276
1365
|
WORKOUT_SESSION_STATUSES,
|
|
1277
1366
|
accountExportFileName,
|
|
1278
1367
|
applyDeload,
|
|
1368
|
+
bodyMeasurementProblems,
|
|
1369
|
+
bodyProgressRangeStart,
|
|
1279
1370
|
buildWarmUpRamp,
|
|
1280
1371
|
calculatePlateLoading,
|
|
1281
1372
|
canLinkToNext,
|
|
@@ -1291,8 +1382,10 @@ export {
|
|
|
1291
1382
|
followWorkingLoad,
|
|
1292
1383
|
hasOversizedGroup,
|
|
1293
1384
|
isBarLoaded,
|
|
1385
|
+
isBodyMeasurementDate,
|
|
1294
1386
|
isSetKind,
|
|
1295
1387
|
isWithinQuietHours,
|
|
1388
|
+
latestBodyWeight,
|
|
1296
1389
|
leadWorkingWeight,
|
|
1297
1390
|
matchesDeletionConfirmation,
|
|
1298
1391
|
normalizeExerciseLinks,
|
|
@@ -1305,6 +1398,7 @@ export {
|
|
|
1305
1398
|
sessionCorrectionWindow,
|
|
1306
1399
|
setKindOf,
|
|
1307
1400
|
setLogValuesDiffer,
|
|
1401
|
+
summarizeBodyProgress,
|
|
1308
1402
|
trainingBlockCovers,
|
|
1309
1403
|
warmUpLoad
|
|
1310
1404
|
};
|