@beorchid-llc/thrivo-contracts 0.14.0 → 0.15.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/auth.d.ts.map +1 -1
- package/dist/auth.js +5 -3
- package/dist/auth.js.map +1 -1
- package/dist/common.d.ts +5 -5
- package/dist/common.js +1 -1
- package/dist/common.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/tdee.d.ts +53 -0
- package/dist/tdee.d.ts.map +1 -0
- package/dist/tdee.js +50 -0
- package/dist/tdee.js.map +1 -0
- package/package.json +5 -1
package/dist/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,6GAA6G;AAC7G,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAI5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,mGAAmG;AACnG,eAAO,MAAM,WAAW,2CAIY,CAAC;AAErC,qCAAqC;AACrC,eAAO,MAAM,uBAAuB;;;;;;EAElC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,oCAAoC;AACpC,eAAO,MAAM,sBAAsB;;;;;;;;;EAGjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;GAGG;AACH,eAAO,MAAM,6BAA6B;;;;;;EAExC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;;;;;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,6GAA6G;AAC7G,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAI5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,mGAAmG;AACnG,eAAO,MAAM,WAAW,2CAIY,CAAC;AAErC,qCAAqC;AACrC,eAAO,MAAM,uBAAuB;;;;;;EAElC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,oCAAoC;AACpC,eAAO,MAAM,sBAAsB;;;;;;;;;EAGjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE;;;GAGG;AACH,eAAO,MAAM,6BAA6B;;;;;;EAExC,CAAC;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAEpF;;;GAGG;AACH,eAAO,MAAM,4BAA4B;;;;;;EAGvC,CAAC;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF,qDAAqD;AACrD,eAAO,MAAM,oBAAoB;;;;;;EAG/B,CAAC;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;;;GAIG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;EAGnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,kFAAkF;AAClF,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;EAK5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAA2C,CAAC;AAClF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DkB,CAAC"}
|
package/dist/auth.js
CHANGED
|
@@ -19,7 +19,7 @@ export const otpRequestPayloadSchema = z.object({
|
|
|
19
19
|
/** POST /auth/otp/verify payload */
|
|
20
20
|
export const otpVerifyPayloadSchema = z.object({
|
|
21
21
|
email: emailSchema,
|
|
22
|
-
code: z.string().regex(/^\d{6}
|
|
22
|
+
code: z.string().regex(/^\d{6}$/, "Enter the 6-digit code"),
|
|
23
23
|
});
|
|
24
24
|
/**
|
|
25
25
|
* POST /auth/magic-link/request payload
|
|
@@ -33,11 +33,13 @@ export const magicLinkRequestPayloadSchema = z.object({
|
|
|
33
33
|
* @deprecated Magic-link auth remains API-supported but is hidden in mobile while the UX is revisited.
|
|
34
34
|
*/
|
|
35
35
|
export const magicLinkVerifyPayloadSchema = z.object({
|
|
36
|
-
token
|
|
36
|
+
// Capped defensively — the issued token is a short opaque ID, never near this size.
|
|
37
|
+
token: z.string().min(1).max(512),
|
|
37
38
|
});
|
|
38
39
|
/** POST /auth/refresh + POST /auth/logout payload */
|
|
39
40
|
export const refreshPayloadSchema = z.object({
|
|
40
|
-
|
|
41
|
+
// Capped defensively — the issued token is a short opaque ID, never near this size.
|
|
42
|
+
refreshToken: z.string().min(1).max(512),
|
|
41
43
|
});
|
|
42
44
|
/**
|
|
43
45
|
* POST /auth/oauth/apple payload — native Sign in with Apple. The app posts the
|
package/dist/auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE9C,6GAA6G;AAC7G,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW;CAC1C,CAAC,CAAC;AAGH,mGAAmG;AACnG,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC;KACzB,MAAM,EAAE;KACR,KAAK,EAAE;KACP,GAAG,CAAC,GAAG,CAAC;KACR,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;AAErC,qCAAqC;AACrC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,KAAK,EAAE,WAAW;CACnB,CAAC,CAAC;AAGH,oCAAoC;AACpC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC7C,KAAK,EAAE,WAAW;IAClB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
|
package/dist/common.d.ts
CHANGED
|
@@ -12,15 +12,15 @@ export type Meta = z.infer<typeof metaSchema>;
|
|
|
12
12
|
export declare const apiErrorSchema: z.ZodObject<{
|
|
13
13
|
success: z.ZodLiteral<false>;
|
|
14
14
|
error: z.ZodObject<{
|
|
15
|
-
code: z.
|
|
15
|
+
code: z.ZodEnum<["VALIDATION_ERROR", "UNAUTHENTICATED", "FORBIDDEN", "PREMIUM_REQUIRED", "NOT_FOUND", "CONFLICT", "RATE_LIMITED", "PAYLOAD_TOO_LARGE", "UPSTREAM_ERROR", "INTERNAL_ERROR"]>;
|
|
16
16
|
message: z.ZodString;
|
|
17
17
|
details: z.ZodOptional<z.ZodUnknown>;
|
|
18
18
|
}, "strip", z.ZodTypeAny, {
|
|
19
|
-
code:
|
|
19
|
+
code: "VALIDATION_ERROR" | "UNAUTHENTICATED" | "FORBIDDEN" | "PREMIUM_REQUIRED" | "NOT_FOUND" | "CONFLICT" | "RATE_LIMITED" | "PAYLOAD_TOO_LARGE" | "UPSTREAM_ERROR" | "INTERNAL_ERROR";
|
|
20
20
|
message: string;
|
|
21
21
|
details?: unknown;
|
|
22
22
|
}, {
|
|
23
|
-
code:
|
|
23
|
+
code: "VALIDATION_ERROR" | "UNAUTHENTICATED" | "FORBIDDEN" | "PREMIUM_REQUIRED" | "NOT_FOUND" | "CONFLICT" | "RATE_LIMITED" | "PAYLOAD_TOO_LARGE" | "UPSTREAM_ERROR" | "INTERNAL_ERROR";
|
|
24
24
|
message: string;
|
|
25
25
|
details?: unknown;
|
|
26
26
|
}>;
|
|
@@ -30,7 +30,7 @@ export declare const apiErrorSchema: z.ZodObject<{
|
|
|
30
30
|
message: string;
|
|
31
31
|
success: false;
|
|
32
32
|
error: {
|
|
33
|
-
code:
|
|
33
|
+
code: "VALIDATION_ERROR" | "UNAUTHENTICATED" | "FORBIDDEN" | "PREMIUM_REQUIRED" | "NOT_FOUND" | "CONFLICT" | "RATE_LIMITED" | "PAYLOAD_TOO_LARGE" | "UPSTREAM_ERROR" | "INTERNAL_ERROR";
|
|
34
34
|
message: string;
|
|
35
35
|
details?: unknown;
|
|
36
36
|
};
|
|
@@ -39,7 +39,7 @@ export declare const apiErrorSchema: z.ZodObject<{
|
|
|
39
39
|
message: string;
|
|
40
40
|
success: false;
|
|
41
41
|
error: {
|
|
42
|
-
code:
|
|
42
|
+
code: "VALIDATION_ERROR" | "UNAUTHENTICATED" | "FORBIDDEN" | "PREMIUM_REQUIRED" | "NOT_FOUND" | "CONFLICT" | "RATE_LIMITED" | "PAYLOAD_TOO_LARGE" | "UPSTREAM_ERROR" | "INTERNAL_ERROR";
|
|
43
43
|
message: string;
|
|
44
44
|
details?: unknown;
|
|
45
45
|
};
|
package/dist/common.js
CHANGED
package/dist/common.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACpC,kBAAkB;IAClB,iBAAiB;IACjB,WAAW;IACX,kBAAkB;IAClB,WAAW;IACX,UAAU;IACV,cAAc;IACd,mBAAmB;IACnB,gBAAgB;IAChB,gBAAgB;CACjB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC;KACxB,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC7C,CAAC;KACD,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAIzB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../src/common.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACpC,kBAAkB;IAClB,iBAAiB;IACjB,WAAW;IACX,kBAAkB;IAClB,WAAW;IACX,UAAU;IACV,cAAc;IACd,mBAAmB;IACnB,gBAAgB;IAChB,gBAAgB;CACjB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC;KACxB,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC7C,CAAC;KACD,QAAQ,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAIzB,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACd,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KAChC,CAAC;IACF,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;IACxB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAIH,MAAM,UAAU,gBAAgB,CAAyB,IAAO;IAC9D,OAAO,CAAC,CAAC,MAAM,CAAC;QACd,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QACxB,IAAI;QACJ,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE;QACxB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;KACpB,CAAC,CAAC;AACL,CAAC;AAiBD,8EAA8E;AAC9E,gDAAgD;AAChD,8EAA8E;AAE9E,6FAA6F;AAC7F,MAAM,CAAC,MAAM,eAAe,GAAG,gBAAgB,CAAC;AAEhD;;;;GAIG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;AAGlC,oEAAoE;AACpE,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC1C,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;AACxC,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;AAEtE,8DAA8D;AAC9D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,QAAQ,CAAC"}
|
package/dist/tdee.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { z } from "zod";
|
|
2
|
+
import { activityLevelSchema, goalSchema, sexSchema } from "./users";
|
|
3
|
+
/**
|
|
4
|
+
* Single source of truth for calorie/macro math (Mifflin-St Jeor + activity
|
|
5
|
+
* factor + goal adjustment + macro split). Backend and mobile each had their
|
|
6
|
+
* own copy that rounded BMR at a different point (backend: round only the
|
|
7
|
+
* final TDEE; mobile: round BMR before multiplying by the activity factor),
|
|
8
|
+
* so onboarding's preview could disagree with the persisted dashboard target
|
|
9
|
+
* by several kcal at some inputs (R6 I19). This module keeps the backend's
|
|
10
|
+
* order — round only the final TDEE, never the intermediate BMR.
|
|
11
|
+
*/
|
|
12
|
+
export type Goal = z.infer<typeof goalSchema>;
|
|
13
|
+
export type Sex = z.infer<typeof sexSchema>;
|
|
14
|
+
export type ActivityLevel = z.infer<typeof activityLevelSchema>;
|
|
15
|
+
/** Standard Mifflin-St Jeor activity multipliers. */
|
|
16
|
+
export declare const ACTIVITY_FACTORS: Record<ActivityLevel, number>;
|
|
17
|
+
/** Daily kcal delta for the goal: ~0.5 kg/week deficit for loss, surplus for gain. */
|
|
18
|
+
export declare const GOAL_ADJUSTMENTS: Record<Goal, number>;
|
|
19
|
+
export interface BmrInput {
|
|
20
|
+
sex: Sex;
|
|
21
|
+
weightKg: number;
|
|
22
|
+
heightCm: number;
|
|
23
|
+
ageYears: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Mifflin-St Jeor basal metabolic rate (kcal/day). Deliberately left
|
|
27
|
+
* unrounded — callers round only the final TDEE (see `calculateTdee`), never
|
|
28
|
+
* this intermediate value.
|
|
29
|
+
*/
|
|
30
|
+
export declare function bmrMifflinStJeor({ sex, weightKg, heightCm, ageYears }: BmrInput): number;
|
|
31
|
+
export declare const round10: (n: number) => number;
|
|
32
|
+
export interface TdeeInput extends BmrInput {
|
|
33
|
+
goal: Goal;
|
|
34
|
+
activityLevel?: ActivityLevel | null;
|
|
35
|
+
}
|
|
36
|
+
export interface TdeeResult {
|
|
37
|
+
/** Rounded for display only — the multiply below uses the unrounded BMR. */
|
|
38
|
+
bmr: number;
|
|
39
|
+
activityLevel: ActivityLevel;
|
|
40
|
+
tdeeKcal: number;
|
|
41
|
+
goalAdjustmentKcal: number;
|
|
42
|
+
/** TDEE + goal adjustment, rounded to the nearest 10 kcal. */
|
|
43
|
+
dailyTargetKcal: number;
|
|
44
|
+
}
|
|
45
|
+
export declare function calculateTdee(input: TdeeInput): TdeeResult;
|
|
46
|
+
export interface MacroSplit {
|
|
47
|
+
proteinG: number;
|
|
48
|
+
carbsG: number;
|
|
49
|
+
fatG: number;
|
|
50
|
+
}
|
|
51
|
+
/** Balanced 30% protein / 40% carbs / 30% fat split (4/4/9 kcal per gram). */
|
|
52
|
+
export declare function macroSplitFromKcal(kcal: number): MacroSplit;
|
|
53
|
+
//# sourceMappingURL=tdee.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tdee.d.ts","sourceRoot":"","sources":["../src/tdee.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,EAAE,mBAAmB,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAErE;;;;;;;;GAQG;AAEH,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAC9C,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC,CAAC;AAC5C,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,qDAAqD;AACrD,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAM1D,CAAC;AAEF,sFAAsF;AACtF,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAIjD,CAAC;AAEF,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,GAAG,CAAC;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,QAAQ,GAAG,MAAM,CAKxF;AAED,eAAO,MAAM,OAAO,GAAI,GAAG,MAAM,KAAG,MAAiC,CAAC;AAEtE,MAAM,WAAW,SAAU,SAAQ,QAAQ;IACzC,IAAI,EAAE,IAAI,CAAC;IACX,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,UAAU;IACzB,4EAA4E;IAC5E,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,aAAa,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,8DAA8D;IAC9D,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,UAAU,CAY1D;AAED,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAM3D"}
|
package/dist/tdee.js
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/** Standard Mifflin-St Jeor activity multipliers. */
|
|
2
|
+
export const ACTIVITY_FACTORS = {
|
|
3
|
+
sedentary: 1.2,
|
|
4
|
+
light: 1.375,
|
|
5
|
+
moderate: 1.55,
|
|
6
|
+
active: 1.725,
|
|
7
|
+
very_active: 1.9,
|
|
8
|
+
};
|
|
9
|
+
/** Daily kcal delta for the goal: ~0.5 kg/week deficit for loss, surplus for gain. */
|
|
10
|
+
export const GOAL_ADJUSTMENTS = {
|
|
11
|
+
lose: -500,
|
|
12
|
+
maintain: 0,
|
|
13
|
+
gain: 300,
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Mifflin-St Jeor basal metabolic rate (kcal/day). Deliberately left
|
|
17
|
+
* unrounded — callers round only the final TDEE (see `calculateTdee`), never
|
|
18
|
+
* this intermediate value.
|
|
19
|
+
*/
|
|
20
|
+
export function bmrMifflinStJeor({ sex, weightKg, heightCm, ageYears }) {
|
|
21
|
+
const base = 10 * weightKg + 6.25 * heightCm - 5 * ageYears;
|
|
22
|
+
if (sex === "male")
|
|
23
|
+
return base + 5;
|
|
24
|
+
if (sex === "female")
|
|
25
|
+
return base - 161;
|
|
26
|
+
return base - 78;
|
|
27
|
+
}
|
|
28
|
+
export const round10 = (n) => Math.round(n / 10) * 10;
|
|
29
|
+
export function calculateTdee(input) {
|
|
30
|
+
const activityLevel = input.activityLevel ?? "sedentary";
|
|
31
|
+
const rawBmr = bmrMifflinStJeor(input);
|
|
32
|
+
const tdeeKcal = Math.round(rawBmr * ACTIVITY_FACTORS[activityLevel]);
|
|
33
|
+
const goalAdjustmentKcal = GOAL_ADJUSTMENTS[input.goal];
|
|
34
|
+
return {
|
|
35
|
+
bmr: Math.round(rawBmr),
|
|
36
|
+
activityLevel,
|
|
37
|
+
tdeeKcal,
|
|
38
|
+
goalAdjustmentKcal,
|
|
39
|
+
dailyTargetKcal: round10(tdeeKcal + goalAdjustmentKcal),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/** Balanced 30% protein / 40% carbs / 30% fat split (4/4/9 kcal per gram). */
|
|
43
|
+
export function macroSplitFromKcal(kcal) {
|
|
44
|
+
return {
|
|
45
|
+
proteinG: Math.round((kcal * 0.3) / 4),
|
|
46
|
+
carbsG: Math.round((kcal * 0.4) / 4),
|
|
47
|
+
fatG: Math.round((kcal * 0.3) / 9),
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=tdee.js.map
|
package/dist/tdee.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tdee.js","sourceRoot":"","sources":["../src/tdee.ts"],"names":[],"mappings":"AAiBA,qDAAqD;AACrD,MAAM,CAAC,MAAM,gBAAgB,GAAkC;IAC7D,SAAS,EAAE,GAAG;IACd,KAAK,EAAE,KAAK;IACZ,QAAQ,EAAE,IAAI;IACd,MAAM,EAAE,KAAK;IACb,WAAW,EAAE,GAAG;CACjB,CAAC;AAEF,sFAAsF;AACtF,MAAM,CAAC,MAAM,gBAAgB,GAAyB;IACpD,IAAI,EAAE,CAAC,GAAG;IACV,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,GAAG;CACV,CAAC;AASF;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAY;IAC9E,MAAM,IAAI,GAAG,EAAE,GAAG,QAAQ,GAAG,IAAI,GAAG,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC;IAC5D,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,IAAI,GAAG,CAAC,CAAC;IACpC,IAAI,GAAG,KAAK,QAAQ;QAAE,OAAO,IAAI,GAAG,GAAG,CAAC;IACxC,OAAO,IAAI,GAAG,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;AAiBtE,MAAM,UAAU,aAAa,CAAC,KAAgB;IAC5C,MAAM,aAAa,GAAG,KAAK,CAAC,aAAa,IAAI,WAAW,CAAC;IACzD,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAAC;IACtE,MAAM,kBAAkB,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxD,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACvB,aAAa;QACb,QAAQ;QACR,kBAAkB;QAClB,eAAe,EAAE,OAAO,CAAC,QAAQ,GAAG,kBAAkB,CAAC;KACxD,CAAC;AACJ,CAAC;AAQD,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;KACnC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beorchid-llc/thrivo-contracts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.15.0",
|
|
4
4
|
"description": "Shared Thrivo API request and response contracts.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
@@ -51,6 +51,10 @@
|
|
|
51
51
|
"./uploads": {
|
|
52
52
|
"types": "./dist/uploads.d.ts",
|
|
53
53
|
"import": "./dist/uploads.js"
|
|
54
|
+
},
|
|
55
|
+
"./tdee": {
|
|
56
|
+
"types": "./dist/tdee.d.ts",
|
|
57
|
+
"import": "./dist/tdee.js"
|
|
54
58
|
}
|
|
55
59
|
},
|
|
56
60
|
"files": [
|