@beorchid-llc/thrivo-contracts 0.9.0 → 0.11.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.
@@ -127,4 +127,16 @@ export declare const checkinListResponse: z.ZodObject<{
127
127
  }[];
128
128
  }>;
129
129
  export type CheckinListResponse = z.infer<typeof checkinListResponse>;
130
+ export declare const checkinRoutes: {
131
+ create: {
132
+ method: "POST";
133
+ path: "/api/v1/checkins";
134
+ auth: "user";
135
+ };
136
+ list: {
137
+ method: "GET";
138
+ path: "/api/v1/checkins";
139
+ auth: "user";
140
+ };
141
+ };
130
142
  //# sourceMappingURL=checkins.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkins.d.ts","sourceRoot":"","sources":["../src/checkins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,UAAU,kDAAgD,CAAC;AACxE,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAE9C,eAAO,MAAM,aAAa;;;;;IAKxB,yEAAyE;;;;;;;;;;;;;;;;;EAGzE,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAI/B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,eAAO,MAAM,eAAe;;;;;;QAb1B,yEAAyE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAaR,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,mBAAmB;;;;;;QAhB9B,yEAAyE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBM,CAAC;AAClF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"checkins.d.ts","sourceRoot":"","sources":["../src/checkins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB,eAAO,MAAM,UAAU,kDAAgD,CAAC;AACxE,MAAM,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,CAAC;AAE9C,eAAO,MAAM,aAAa;;;;;IAKxB,yEAAyE;;;;;;;;;;;;;;;;;EAGzE,CAAC;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAI/B,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAExE,eAAO,MAAM,eAAe;;;;;;QAb1B,yEAAyE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAaR,CAAC;AACpE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE9D,eAAO,MAAM,mBAAmB;;;;;;QAhB9B,yEAAyE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBM,CAAC;AAClF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAMtE,eAAO,MAAM,aAAa;;;;;;;;;;;CAWe,CAAC"}
package/dist/checkins.js CHANGED
@@ -20,4 +20,20 @@ export const createCheckinPayload = z.object({
20
20
  });
21
21
  export const checkinResponse = z.object({ checkin: checkinSchema });
22
22
  export const checkinListResponse = z.object({ checkins: z.array(checkinSchema) });
23
+ // Both routes require a user session AND an active premium subscription
24
+ // (`requireAuth` + `requirePremium` in src/routes/checkins.ts) — `auth: "user"`
25
+ // is the closest fit in RouteContract's auth union, which has no "premium"
26
+ // tier of its own; checkins is the only route pair that needs one.
27
+ export const checkinRoutes = {
28
+ create: {
29
+ method: "POST",
30
+ path: "/api/v1/checkins",
31
+ auth: "user",
32
+ },
33
+ list: {
34
+ method: "GET",
35
+ path: "/api/v1/checkins",
36
+ auth: "user",
37
+ },
38
+ };
23
39
  //# sourceMappingURL=checkins.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"checkins.js","sourceRoot":"","sources":["../src/checkins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEnE,mEAAmE;AACnE,6EAA6E;AAC7E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAGxE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,cAAc;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,yEAAyE;IACzE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,SAAS,EAAE,aAAa;CACzB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,cAAc;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;AAGpE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"checkins.js","sourceRoot":"","sources":["../src/checkins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAsB,MAAM,UAAU,CAAC;AAEvF,mEAAmE;AACnE,6EAA6E;AAC7E,8EAA8E;AAC9E,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AAGxE,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,EAAE,EAAE,QAAQ;IACZ,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,cAAc;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,yEAAyE;IACzE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,SAAS,EAAE,aAAa;CACzB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,IAAI,EAAE,UAAU;IAChB,GAAG,EAAE,cAAc;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC,CAAC;AAGpE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAGlF,wEAAwE;AACxE,gFAAgF;AAChF,2EAA2E;AAC3E,mEAAmE;AACnE,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,MAAM,EAAE;QACN,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,MAAM;KACb;IACD,IAAI,EAAE;QACJ,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,MAAM;KACb;CACsC,CAAC"}
package/dist/foods.d.ts CHANGED
@@ -20,6 +20,22 @@ export declare const nutrientsSchema: z.ZodObject<{
20
20
  fatG: number;
21
21
  }>;
22
22
  export type Nutrients = z.infer<typeof nutrientsSchema>;
23
+ export declare const boundedNutrientsSchema: z.ZodObject<{
24
+ calories: z.ZodNumber;
25
+ proteinG: z.ZodNumber;
26
+ carbsG: z.ZodNumber;
27
+ fatG: z.ZodNumber;
28
+ }, "strip", z.ZodTypeAny, {
29
+ calories: number;
30
+ proteinG: number;
31
+ carbsG: number;
32
+ fatG: number;
33
+ }, {
34
+ calories: number;
35
+ proteinG: number;
36
+ carbsG: number;
37
+ fatG: number;
38
+ }>;
23
39
  export declare const servingOptionSchema: z.ZodObject<{
24
40
  id: z.ZodNullable<z.ZodString>;
25
41
  measure: z.ZodEnum<["serving", "weight", "cup", "tbsp", "piece"]>;
@@ -767,7 +783,7 @@ export declare const foodLogHistoryResponseSchema: z.ZodObject<{
767
783
  };
768
784
  }>;
769
785
  export declare const foodLookupQuerySchema: z.ZodObject<{
770
- barcode: z.ZodString;
786
+ barcode: z.ZodPipeline<z.ZodEffects<z.ZodString, string, string>, z.ZodString>;
771
787
  }, "strip", z.ZodTypeAny, {
772
788
  barcode: string;
773
789
  }, {
@@ -984,23 +1000,76 @@ export declare const foodLookupResponseSchema: z.ZodObject<{
984
1000
  }>;
985
1001
  export declare const foodSearchQuerySchema: z.ZodObject<{
986
1002
  q: z.ZodString;
987
- cursor: z.ZodOptional<z.ZodString>;
1003
+ limit: z.ZodOptional<z.ZodNumber>;
988
1004
  }, "strip", z.ZodTypeAny, {
989
1005
  q: string;
990
- cursor?: string | undefined;
1006
+ limit?: number | undefined;
991
1007
  }, {
992
1008
  q: string;
993
- cursor?: string | undefined;
1009
+ limit?: number | undefined;
1010
+ }>;
1011
+ export declare const foodSearchResultSchema: z.ZodObject<{
1012
+ externalId: z.ZodString;
1013
+ name: z.ZodString;
1014
+ brand: z.ZodNullable<z.ZodString>;
1015
+ barcode: z.ZodNullable<z.ZodString>;
1016
+ servingLabel: z.ZodString;
1017
+ servingGrams: z.ZodNullable<z.ZodNumber>;
1018
+ nutrients: z.ZodObject<{
1019
+ calories: z.ZodNumber;
1020
+ proteinG: z.ZodNumber;
1021
+ carbsG: z.ZodNumber;
1022
+ fatG: z.ZodNumber;
1023
+ }, "strip", z.ZodTypeAny, {
1024
+ calories: number;
1025
+ proteinG: number;
1026
+ carbsG: number;
1027
+ fatG: number;
1028
+ }, {
1029
+ calories: number;
1030
+ proteinG: number;
1031
+ carbsG: number;
1032
+ fatG: number;
1033
+ }>;
1034
+ source: z.ZodLiteral<"openfoodfacts">;
1035
+ }, "strip", z.ZodTypeAny, {
1036
+ name: string;
1037
+ barcode: string | null;
1038
+ brand: string | null;
1039
+ source: "openfoodfacts";
1040
+ servingLabel: string;
1041
+ servingGrams: number | null;
1042
+ nutrients: {
1043
+ calories: number;
1044
+ proteinG: number;
1045
+ carbsG: number;
1046
+ fatG: number;
1047
+ };
1048
+ externalId: string;
1049
+ }, {
1050
+ name: string;
1051
+ barcode: string | null;
1052
+ brand: string | null;
1053
+ source: "openfoodfacts";
1054
+ servingLabel: string;
1055
+ servingGrams: number | null;
1056
+ nutrients: {
1057
+ calories: number;
1058
+ proteinG: number;
1059
+ carbsG: number;
1060
+ fatG: number;
1061
+ };
1062
+ externalId: string;
994
1063
  }>;
1064
+ export type FoodSearchResult = z.infer<typeof foodSearchResultSchema>;
995
1065
  export declare const foodSearchResponseSchema: z.ZodObject<{
996
1066
  success: z.ZodLiteral<true>;
997
1067
  data: z.ZodObject<{
998
1068
  items: z.ZodArray<z.ZodObject<{
999
- id: z.ZodString;
1069
+ externalId: z.ZodString;
1000
1070
  name: z.ZodString;
1001
1071
  brand: z.ZodNullable<z.ZodString>;
1002
1072
  barcode: z.ZodNullable<z.ZodString>;
1003
- source: z.ZodEnum<["authoritative", "personal", "community"]>;
1004
1073
  servingLabel: z.ZodString;
1005
1074
  servingGrams: z.ZodNullable<z.ZodNumber>;
1006
1075
  nutrients: z.ZodObject<{
@@ -1019,33 +1088,12 @@ export declare const foodSearchResponseSchema: z.ZodObject<{
1019
1088
  carbsG: number;
1020
1089
  fatG: number;
1021
1090
  }>;
1022
- servingOptions: z.ZodArray<z.ZodObject<{
1023
- id: z.ZodNullable<z.ZodString>;
1024
- measure: z.ZodEnum<["serving", "weight", "cup", "tbsp", "piece"]>;
1025
- label: z.ZodString;
1026
- grams: z.ZodNullable<z.ZodNumber>;
1027
- isDefault: z.ZodBoolean;
1028
- }, "strip", z.ZodTypeAny, {
1029
- id: string | null;
1030
- measure: "serving" | "weight" | "cup" | "tbsp" | "piece";
1031
- label: string;
1032
- grams: number | null;
1033
- isDefault: boolean;
1034
- }, {
1035
- id: string | null;
1036
- measure: "serving" | "weight" | "cup" | "tbsp" | "piece";
1037
- label: string;
1038
- grams: number | null;
1039
- isDefault: boolean;
1040
- }>, "many">;
1041
- isPersonal: z.ZodBoolean;
1042
- isEstimated: z.ZodBoolean;
1091
+ source: z.ZodLiteral<"openfoodfacts">;
1043
1092
  }, "strip", z.ZodTypeAny, {
1044
1093
  name: string;
1045
- id: string;
1046
1094
  barcode: string | null;
1047
1095
  brand: string | null;
1048
- source: "authoritative" | "personal" | "community";
1096
+ source: "openfoodfacts";
1049
1097
  servingLabel: string;
1050
1098
  servingGrams: number | null;
1051
1099
  nutrients: {
@@ -1054,21 +1102,12 @@ export declare const foodSearchResponseSchema: z.ZodObject<{
1054
1102
  carbsG: number;
1055
1103
  fatG: number;
1056
1104
  };
1057
- servingOptions: {
1058
- id: string | null;
1059
- measure: "serving" | "weight" | "cup" | "tbsp" | "piece";
1060
- label: string;
1061
- grams: number | null;
1062
- isDefault: boolean;
1063
- }[];
1064
- isPersonal: boolean;
1065
- isEstimated: boolean;
1105
+ externalId: string;
1066
1106
  }, {
1067
1107
  name: string;
1068
- id: string;
1069
1108
  barcode: string | null;
1070
1109
  brand: string | null;
1071
- source: "authoritative" | "personal" | "community";
1110
+ source: "openfoodfacts";
1072
1111
  servingLabel: string;
1073
1112
  servingGrams: number | null;
1074
1113
  nutrients: {
@@ -1077,23 +1116,15 @@ export declare const foodSearchResponseSchema: z.ZodObject<{
1077
1116
  carbsG: number;
1078
1117
  fatG: number;
1079
1118
  };
1080
- servingOptions: {
1081
- id: string | null;
1082
- measure: "serving" | "weight" | "cup" | "tbsp" | "piece";
1083
- label: string;
1084
- grams: number | null;
1085
- isDefault: boolean;
1086
- }[];
1087
- isPersonal: boolean;
1088
- isEstimated: boolean;
1119
+ externalId: string;
1089
1120
  }>, "many">;
1121
+ cached: z.ZodBoolean;
1090
1122
  }, "strip", z.ZodTypeAny, {
1091
1123
  items: {
1092
1124
  name: string;
1093
- id: string;
1094
1125
  barcode: string | null;
1095
1126
  brand: string | null;
1096
- source: "authoritative" | "personal" | "community";
1127
+ source: "openfoodfacts";
1097
1128
  servingLabel: string;
1098
1129
  servingGrams: number | null;
1099
1130
  nutrients: {
@@ -1102,23 +1133,15 @@ export declare const foodSearchResponseSchema: z.ZodObject<{
1102
1133
  carbsG: number;
1103
1134
  fatG: number;
1104
1135
  };
1105
- servingOptions: {
1106
- id: string | null;
1107
- measure: "serving" | "weight" | "cup" | "tbsp" | "piece";
1108
- label: string;
1109
- grams: number | null;
1110
- isDefault: boolean;
1111
- }[];
1112
- isPersonal: boolean;
1113
- isEstimated: boolean;
1136
+ externalId: string;
1114
1137
  }[];
1138
+ cached: boolean;
1115
1139
  }, {
1116
1140
  items: {
1117
1141
  name: string;
1118
- id: string;
1119
1142
  barcode: string | null;
1120
1143
  brand: string | null;
1121
- source: "authoritative" | "personal" | "community";
1144
+ source: "openfoodfacts";
1122
1145
  servingLabel: string;
1123
1146
  servingGrams: number | null;
1124
1147
  nutrients: {
@@ -1127,16 +1150,9 @@ export declare const foodSearchResponseSchema: z.ZodObject<{
1127
1150
  carbsG: number;
1128
1151
  fatG: number;
1129
1152
  };
1130
- servingOptions: {
1131
- id: string | null;
1132
- measure: "serving" | "weight" | "cup" | "tbsp" | "piece";
1133
- label: string;
1134
- grams: number | null;
1135
- isDefault: boolean;
1136
- }[];
1137
- isPersonal: boolean;
1138
- isEstimated: boolean;
1153
+ externalId: string;
1139
1154
  }[];
1155
+ cached: boolean;
1140
1156
  }>;
1141
1157
  responseCode: z.ZodNumber;
1142
1158
  message: z.ZodString;
@@ -1147,10 +1163,9 @@ export declare const foodSearchResponseSchema: z.ZodObject<{
1147
1163
  data: {
1148
1164
  items: {
1149
1165
  name: string;
1150
- id: string;
1151
1166
  barcode: string | null;
1152
1167
  brand: string | null;
1153
- source: "authoritative" | "personal" | "community";
1168
+ source: "openfoodfacts";
1154
1169
  servingLabel: string;
1155
1170
  servingGrams: number | null;
1156
1171
  nutrients: {
@@ -1159,16 +1174,9 @@ export declare const foodSearchResponseSchema: z.ZodObject<{
1159
1174
  carbsG: number;
1160
1175
  fatG: number;
1161
1176
  };
1162
- servingOptions: {
1163
- id: string | null;
1164
- measure: "serving" | "weight" | "cup" | "tbsp" | "piece";
1165
- label: string;
1166
- grams: number | null;
1167
- isDefault: boolean;
1168
- }[];
1169
- isPersonal: boolean;
1170
- isEstimated: boolean;
1177
+ externalId: string;
1171
1178
  }[];
1179
+ cached: boolean;
1172
1180
  };
1173
1181
  }, {
1174
1182
  message: string;
@@ -1177,10 +1185,9 @@ export declare const foodSearchResponseSchema: z.ZodObject<{
1177
1185
  data: {
1178
1186
  items: {
1179
1187
  name: string;
1180
- id: string;
1181
1188
  barcode: string | null;
1182
1189
  brand: string | null;
1183
- source: "authoritative" | "personal" | "community";
1190
+ source: "openfoodfacts";
1184
1191
  servingLabel: string;
1185
1192
  servingGrams: number | null;
1186
1193
  nutrients: {
@@ -1189,16 +1196,9 @@ export declare const foodSearchResponseSchema: z.ZodObject<{
1189
1196
  carbsG: number;
1190
1197
  fatG: number;
1191
1198
  };
1192
- servingOptions: {
1193
- id: string | null;
1194
- measure: "serving" | "weight" | "cup" | "tbsp" | "piece";
1195
- label: string;
1196
- grams: number | null;
1197
- isDefault: boolean;
1198
- }[];
1199
- isPersonal: boolean;
1200
- isEstimated: boolean;
1199
+ externalId: string;
1201
1200
  }[];
1201
+ cached: boolean;
1202
1202
  };
1203
1203
  }>;
1204
1204
  export declare const foodDetailParamsSchema: z.ZodObject<{
@@ -1465,7 +1465,211 @@ export declare const upsertFoodPayloadSchema: z.ZodObject<{
1465
1465
  servingGrams?: number | undefined;
1466
1466
  }>;
1467
1467
  export type UpsertFoodPayload = z.infer<typeof upsertFoodPayloadSchema>;
1468
- export declare const logFoodPayloadSchema: z.ZodObject<{
1468
+ export declare const externalFoodSnapshotSchema: z.ZodObject<{
1469
+ externalId: z.ZodString;
1470
+ name: z.ZodString;
1471
+ brand: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1472
+ barcode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1473
+ servingLabel: z.ZodString;
1474
+ servingGrams: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1475
+ nutrients: z.ZodObject<{
1476
+ calories: z.ZodNumber;
1477
+ proteinG: z.ZodNumber;
1478
+ carbsG: z.ZodNumber;
1479
+ fatG: z.ZodNumber;
1480
+ }, "strip", z.ZodTypeAny, {
1481
+ calories: number;
1482
+ proteinG: number;
1483
+ carbsG: number;
1484
+ fatG: number;
1485
+ }, {
1486
+ calories: number;
1487
+ proteinG: number;
1488
+ carbsG: number;
1489
+ fatG: number;
1490
+ }>;
1491
+ source: z.ZodLiteral<"openfoodfacts">;
1492
+ }, "strip", z.ZodTypeAny, {
1493
+ name: string;
1494
+ source: "openfoodfacts";
1495
+ servingLabel: string;
1496
+ nutrients: {
1497
+ calories: number;
1498
+ proteinG: number;
1499
+ carbsG: number;
1500
+ fatG: number;
1501
+ };
1502
+ externalId: string;
1503
+ barcode?: string | null | undefined;
1504
+ brand?: string | null | undefined;
1505
+ servingGrams?: number | null | undefined;
1506
+ }, {
1507
+ name: string;
1508
+ source: "openfoodfacts";
1509
+ servingLabel: string;
1510
+ nutrients: {
1511
+ calories: number;
1512
+ proteinG: number;
1513
+ carbsG: number;
1514
+ fatG: number;
1515
+ };
1516
+ externalId: string;
1517
+ barcode?: string | null | undefined;
1518
+ brand?: string | null | undefined;
1519
+ servingGrams?: number | null | undefined;
1520
+ }>;
1521
+ export type ExternalFoodSnapshot = z.infer<typeof externalFoodSnapshotSchema>;
1522
+ export declare const logFoodPayloadSchema: z.ZodEffects<z.ZodObject<{
1523
+ foodItemId: z.ZodOptional<z.ZodString>;
1524
+ externalFood: z.ZodOptional<z.ZodObject<{
1525
+ externalId: z.ZodString;
1526
+ name: z.ZodString;
1527
+ brand: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1528
+ barcode: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1529
+ servingLabel: z.ZodString;
1530
+ servingGrams: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1531
+ nutrients: z.ZodObject<{
1532
+ calories: z.ZodNumber;
1533
+ proteinG: z.ZodNumber;
1534
+ carbsG: z.ZodNumber;
1535
+ fatG: z.ZodNumber;
1536
+ }, "strip", z.ZodTypeAny, {
1537
+ calories: number;
1538
+ proteinG: number;
1539
+ carbsG: number;
1540
+ fatG: number;
1541
+ }, {
1542
+ calories: number;
1543
+ proteinG: number;
1544
+ carbsG: number;
1545
+ fatG: number;
1546
+ }>;
1547
+ source: z.ZodLiteral<"openfoodfacts">;
1548
+ }, "strip", z.ZodTypeAny, {
1549
+ name: string;
1550
+ source: "openfoodfacts";
1551
+ servingLabel: string;
1552
+ nutrients: {
1553
+ calories: number;
1554
+ proteinG: number;
1555
+ carbsG: number;
1556
+ fatG: number;
1557
+ };
1558
+ externalId: string;
1559
+ barcode?: string | null | undefined;
1560
+ brand?: string | null | undefined;
1561
+ servingGrams?: number | null | undefined;
1562
+ }, {
1563
+ name: string;
1564
+ source: "openfoodfacts";
1565
+ servingLabel: string;
1566
+ nutrients: {
1567
+ calories: number;
1568
+ proteinG: number;
1569
+ carbsG: number;
1570
+ fatG: number;
1571
+ };
1572
+ externalId: string;
1573
+ barcode?: string | null | undefined;
1574
+ brand?: string | null | undefined;
1575
+ servingGrams?: number | null | undefined;
1576
+ }>>;
1577
+ day: z.ZodString;
1578
+ servings: z.ZodNumber;
1579
+ servingId: z.ZodOptional<z.ZodString>;
1580
+ servingUnit: z.ZodOptional<z.ZodString>;
1581
+ consumedAt: z.ZodOptional<z.ZodString>;
1582
+ }, "strip", z.ZodTypeAny, {
1583
+ day: string;
1584
+ servings: number;
1585
+ foodItemId?: string | undefined;
1586
+ servingUnit?: string | undefined;
1587
+ consumedAt?: string | undefined;
1588
+ externalFood?: {
1589
+ name: string;
1590
+ source: "openfoodfacts";
1591
+ servingLabel: string;
1592
+ nutrients: {
1593
+ calories: number;
1594
+ proteinG: number;
1595
+ carbsG: number;
1596
+ fatG: number;
1597
+ };
1598
+ externalId: string;
1599
+ barcode?: string | null | undefined;
1600
+ brand?: string | null | undefined;
1601
+ servingGrams?: number | null | undefined;
1602
+ } | undefined;
1603
+ servingId?: string | undefined;
1604
+ }, {
1605
+ day: string;
1606
+ servings: number;
1607
+ foodItemId?: string | undefined;
1608
+ servingUnit?: string | undefined;
1609
+ consumedAt?: string | undefined;
1610
+ externalFood?: {
1611
+ name: string;
1612
+ source: "openfoodfacts";
1613
+ servingLabel: string;
1614
+ nutrients: {
1615
+ calories: number;
1616
+ proteinG: number;
1617
+ carbsG: number;
1618
+ fatG: number;
1619
+ };
1620
+ externalId: string;
1621
+ barcode?: string | null | undefined;
1622
+ brand?: string | null | undefined;
1623
+ servingGrams?: number | null | undefined;
1624
+ } | undefined;
1625
+ servingId?: string | undefined;
1626
+ }>, {
1627
+ day: string;
1628
+ servings: number;
1629
+ foodItemId?: string | undefined;
1630
+ servingUnit?: string | undefined;
1631
+ consumedAt?: string | undefined;
1632
+ externalFood?: {
1633
+ name: string;
1634
+ source: "openfoodfacts";
1635
+ servingLabel: string;
1636
+ nutrients: {
1637
+ calories: number;
1638
+ proteinG: number;
1639
+ carbsG: number;
1640
+ fatG: number;
1641
+ };
1642
+ externalId: string;
1643
+ barcode?: string | null | undefined;
1644
+ brand?: string | null | undefined;
1645
+ servingGrams?: number | null | undefined;
1646
+ } | undefined;
1647
+ servingId?: string | undefined;
1648
+ }, {
1649
+ day: string;
1650
+ servings: number;
1651
+ foodItemId?: string | undefined;
1652
+ servingUnit?: string | undefined;
1653
+ consumedAt?: string | undefined;
1654
+ externalFood?: {
1655
+ name: string;
1656
+ source: "openfoodfacts";
1657
+ servingLabel: string;
1658
+ nutrients: {
1659
+ calories: number;
1660
+ proteinG: number;
1661
+ carbsG: number;
1662
+ fatG: number;
1663
+ };
1664
+ externalId: string;
1665
+ barcode?: string | null | undefined;
1666
+ brand?: string | null | undefined;
1667
+ servingGrams?: number | null | undefined;
1668
+ } | undefined;
1669
+ servingId?: string | undefined;
1670
+ }>;
1671
+ export type LogFoodPayload = z.infer<typeof logFoodPayloadSchema>;
1672
+ export declare const storedLogFoodPayloadSchema: z.ZodObject<{
1469
1673
  foodItemId: z.ZodString;
1470
1674
  day: z.ZodString;
1471
1675
  servings: z.ZodNumber;
@@ -1487,7 +1691,6 @@ export declare const logFoodPayloadSchema: z.ZodObject<{
1487
1691
  consumedAt?: string | undefined;
1488
1692
  servingId?: string | undefined;
1489
1693
  }>;
1490
- export type LogFoodPayload = z.infer<typeof logFoodPayloadSchema>;
1491
1694
  export declare const updateLogPayloadSchema: z.ZodObject<{
1492
1695
  servings: z.ZodOptional<z.ZodNumber>;
1493
1696
  servingId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
@@ -1 +1 @@
1
- {"version":3,"file":"foods.d.ts","sourceRoot":"","sources":["../src/foods.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"foods.d.ts","sourceRoot":"","sources":["../src/foods.ts"],"names":[],"mappings":"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"}
package/dist/foods.js CHANGED
@@ -8,6 +8,12 @@ export const nutrientsSchema = z.object({
8
8
  carbsG: z.number(),
9
9
  fatG: z.number(),
10
10
  });
11
+ export const boundedNutrientsSchema = z.object({
12
+ calories: z.number().min(0).max(5000),
13
+ proteinG: z.number().min(0).max(500),
14
+ carbsG: z.number().min(0).max(800),
15
+ fatG: z.number().min(0).max(500),
16
+ });
11
17
  export const servingOptionSchema = z.object({
12
18
  id: idSchema.nullable(),
13
19
  measure: portionMeasureSchema,
@@ -71,14 +77,28 @@ export const foodLogHistoryResponseSchema = apiSuccessSchema(z.object({
71
77
  historyLimitDays: z.number().int(),
72
78
  }));
73
79
  export const foodLookupQuerySchema = z.object({
74
- barcode: z.string().min(3),
80
+ barcode: z
81
+ .string()
82
+ .trim()
83
+ .transform((value) => value.replace(/[\s-]/g, ""))
84
+ .pipe(z.string().regex(/^\d{8,14}$/, "Barcode must be 8 to 14 digits")),
75
85
  });
76
86
  export const foodLookupResponseSchema = apiSuccessSchema(z.object({ food: foodItemSchema.nullable() }));
77
87
  export const foodSearchQuerySchema = z.object({
78
- q: z.string().trim().min(1),
79
- cursor: z.string().optional(),
88
+ q: z.string().trim().min(2).max(80),
89
+ limit: z.coerce.number().int().positive().max(25).optional(),
90
+ });
91
+ export const foodSearchResultSchema = z.object({
92
+ externalId: z.string(),
93
+ name: z.string(),
94
+ brand: z.string().nullable(),
95
+ barcode: z.string().nullable(),
96
+ servingLabel: z.string(),
97
+ servingGrams: z.number().nullable(),
98
+ nutrients: nutrientsSchema,
99
+ source: z.literal("openfoodfacts"),
80
100
  });
81
- export const foodSearchResponseSchema = apiSuccessSchema(z.object({ items: z.array(foodItemSchema) }));
101
+ export const foodSearchResponseSchema = apiSuccessSchema(z.object({ items: z.array(foodSearchResultSchema), cached: z.boolean() }));
82
102
  export const foodDetailParamsSchema = z.object({ id: idSchema });
83
103
  export const foodItemResponseSchema = apiSuccessSchema(z.object({ food: foodItemSchema }));
84
104
  export const upsertFoodPayloadSchema = z.object({
@@ -89,7 +109,36 @@ export const upsertFoodPayloadSchema = z.object({
89
109
  servingGrams: z.number().positive().optional(),
90
110
  nutrients: nutrientsSchema,
91
111
  });
92
- export const logFoodPayloadSchema = z.object({
112
+ export const externalFoodSnapshotSchema = z.object({
113
+ externalId: z.string().trim().min(1).max(128),
114
+ name: z.string().trim().min(1).max(160),
115
+ brand: z.string().trim().max(120).nullable().optional(),
116
+ barcode: z.string().trim().max(32).nullable().optional(),
117
+ servingLabel: z.string().trim().min(1).max(80),
118
+ servingGrams: z.number().positive().nullable().optional(),
119
+ nutrients: boundedNutrientsSchema,
120
+ source: z.literal("openfoodfacts"),
121
+ });
122
+ export const logFoodPayloadSchema = z
123
+ .object({
124
+ foodItemId: idSchema.optional(),
125
+ externalFood: externalFoodSnapshotSchema.optional(),
126
+ day: localDaySchema,
127
+ servings: z.number().positive().max(100),
128
+ servingId: idSchema.optional(),
129
+ servingUnit: z.string().trim().max(80).optional(),
130
+ consumedAt: isoDateSchema.optional(),
131
+ })
132
+ .superRefine((payload, ctx) => {
133
+ if (Boolean(payload.foodItemId) === Boolean(payload.externalFood)) {
134
+ ctx.addIssue({
135
+ code: z.ZodIssueCode.custom,
136
+ path: ["foodItemId"],
137
+ message: "Provide exactly one of foodItemId or externalFood",
138
+ });
139
+ }
140
+ });
141
+ export const storedLogFoodPayloadSchema = z.object({
93
142
  foodItemId: idSchema,
94
143
  day: localDaySchema,
95
144
  servings: z.number().positive(),
@@ -117,11 +166,11 @@ export const favoritesResponseSchema = apiSuccessSchema(z.object({ items: z.arra
117
166
  export const addFavoritePayloadSchema = z.object({ foodItemId: idSchema });
118
167
  export const favoriteParamsSchema = z.object({ id: idSchema });
119
168
  export const estimateFoodPayloadSchema = z.object({
120
- name: z.string().trim().min(1),
121
- ingredients: z.string().trim().optional(),
122
- cookingMethod: z.string().trim().optional(),
169
+ name: z.string().trim().min(1).max(120),
170
+ ingredients: z.string().trim().max(600).optional(),
171
+ cookingMethod: z.string().trim().max(160).optional(),
123
172
  portionMeasure: portionMeasureSchema,
124
- quantity: z.number().positive(),
173
+ quantity: z.number().positive().max(5000),
125
174
  consumedAt: isoDateSchema.optional(),
126
175
  });
127
176
  export const estimateFoodResponseSchema = apiSuccessSchema(z.object({
@@ -135,8 +184,8 @@ export const estimateFoodResponseSchema = apiSuccessSchema(z.object({
135
184
  }));
136
185
  export const logEstimatePayloadSchema = estimateFoodPayloadSchema.extend({
137
186
  day: localDaySchema,
138
- nutrients: nutrientsSchema,
139
- servingUnit: z.string().trim().optional(),
187
+ nutrients: boundedNutrientsSchema,
188
+ servingUnit: z.string().trim().max(80).optional(),
140
189
  });
141
190
  export const foodRoutes = {
142
191
  lookup: {
package/dist/foods.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"foods.js","sourceRoot":"","sources":["../src/foods.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"foods.js","sourceRoot":"","sources":["../src/foods.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -6,6 +6,7 @@ export * from "./admin-analytics";
6
6
  export * from "./admin-content";
7
7
  export * from "./admin-logs";
8
8
  export * from "./admin-subscriptions";
9
+ export * from "./leads";
9
10
  export * from "./dashboard";
10
11
  export * from "./foods";
11
12
  export * from "./metrics";
@@ -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,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"}
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ export * from "./admin-analytics";
6
6
  export * from "./admin-content";
7
7
  export * from "./admin-logs";
8
8
  export * from "./admin-subscriptions";
9
+ export * from "./leads";
9
10
  export * from "./dashboard";
10
11
  export * from "./foods";
11
12
  export * from "./metrics";
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,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"}
@@ -0,0 +1,247 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Lead capture (pre-signup email captures -- "leads"). Extend this enum as new
4
+ * capture points are added; the DB column itself stays plain text so new
5
+ * sources don't require a migration, only a contract minor-bump.
6
+ */
7
+ export declare const leadSourceSchema: z.ZodEnum<["cta", "landing", "waitlist"]>;
8
+ export type LeadSource = z.infer<typeof leadSourceSchema>;
9
+ /** POST /leads/capture payload -- public, unauthenticated. */
10
+ export declare const leadCapturePayloadSchema: z.ZodObject<{
11
+ email: z.ZodEffects<z.ZodString, string, string>;
12
+ source: z.ZodEnum<["cta", "landing", "waitlist"]>;
13
+ utmSource: z.ZodOptional<z.ZodString>;
14
+ utmMedium: z.ZodOptional<z.ZodString>;
15
+ utmCampaign: z.ZodOptional<z.ZodString>;
16
+ }, "strip", z.ZodTypeAny, {
17
+ email: string;
18
+ source: "cta" | "landing" | "waitlist";
19
+ utmSource?: string | undefined;
20
+ utmMedium?: string | undefined;
21
+ utmCampaign?: string | undefined;
22
+ }, {
23
+ email: string;
24
+ source: "cta" | "landing" | "waitlist";
25
+ utmSource?: string | undefined;
26
+ utmMedium?: string | undefined;
27
+ utmCampaign?: string | undefined;
28
+ }>;
29
+ export type LeadCapturePayload = z.infer<typeof leadCapturePayloadSchema>;
30
+ /**
31
+ * Deliberately minimal -- identical on first submission and every resubmission,
32
+ * so the response never reveals whether an email was already registered.
33
+ */
34
+ export declare const leadCaptureResponseSchema: z.ZodObject<{
35
+ captured: z.ZodLiteral<true>;
36
+ }, "strip", z.ZodTypeAny, {
37
+ captured: true;
38
+ }, {
39
+ captured: true;
40
+ }>;
41
+ export type LeadCaptureResponse = z.infer<typeof leadCaptureResponseSchema>;
42
+ /** Admin list/detail row -- full email_captures shape (minus the raw user-agent). */
43
+ export declare const adminLeadSchema: z.ZodObject<{
44
+ id: z.ZodString;
45
+ email: z.ZodString;
46
+ source: z.ZodNullable<z.ZodString>;
47
+ reconciledUserId: z.ZodNullable<z.ZodString>;
48
+ capturedAt: z.ZodString;
49
+ lastSubmittedAt: z.ZodString;
50
+ submissionCount: z.ZodNumber;
51
+ country: z.ZodNullable<z.ZodString>;
52
+ deviceType: z.ZodNullable<z.ZodString>;
53
+ osName: z.ZodNullable<z.ZodString>;
54
+ osVersion: z.ZodNullable<z.ZodString>;
55
+ browserName: z.ZodNullable<z.ZodString>;
56
+ browserVersion: z.ZodNullable<z.ZodString>;
57
+ referrer: z.ZodNullable<z.ZodString>;
58
+ utmSource: z.ZodNullable<z.ZodString>;
59
+ utmMedium: z.ZodNullable<z.ZodString>;
60
+ utmCampaign: z.ZodNullable<z.ZodString>;
61
+ }, "strip", z.ZodTypeAny, {
62
+ id: string;
63
+ email: string;
64
+ source: string | null;
65
+ utmSource: string | null;
66
+ utmMedium: string | null;
67
+ utmCampaign: string | null;
68
+ reconciledUserId: string | null;
69
+ capturedAt: string;
70
+ lastSubmittedAt: string;
71
+ submissionCount: number;
72
+ country: string | null;
73
+ deviceType: string | null;
74
+ osName: string | null;
75
+ osVersion: string | null;
76
+ browserName: string | null;
77
+ browserVersion: string | null;
78
+ referrer: string | null;
79
+ }, {
80
+ id: string;
81
+ email: string;
82
+ source: string | null;
83
+ utmSource: string | null;
84
+ utmMedium: string | null;
85
+ utmCampaign: string | null;
86
+ reconciledUserId: string | null;
87
+ capturedAt: string;
88
+ lastSubmittedAt: string;
89
+ submissionCount: number;
90
+ country: string | null;
91
+ deviceType: string | null;
92
+ osName: string | null;
93
+ osVersion: string | null;
94
+ browserName: string | null;
95
+ browserVersion: string | null;
96
+ referrer: string | null;
97
+ }>;
98
+ export type AdminLead = z.infer<typeof adminLeadSchema>;
99
+ export declare const adminLeadListResponseSchema: z.ZodObject<{
100
+ items: z.ZodArray<z.ZodObject<{
101
+ id: z.ZodString;
102
+ email: z.ZodString;
103
+ source: z.ZodNullable<z.ZodString>;
104
+ reconciledUserId: z.ZodNullable<z.ZodString>;
105
+ capturedAt: z.ZodString;
106
+ lastSubmittedAt: z.ZodString;
107
+ submissionCount: z.ZodNumber;
108
+ country: z.ZodNullable<z.ZodString>;
109
+ deviceType: z.ZodNullable<z.ZodString>;
110
+ osName: z.ZodNullable<z.ZodString>;
111
+ osVersion: z.ZodNullable<z.ZodString>;
112
+ browserName: z.ZodNullable<z.ZodString>;
113
+ browserVersion: z.ZodNullable<z.ZodString>;
114
+ referrer: z.ZodNullable<z.ZodString>;
115
+ utmSource: z.ZodNullable<z.ZodString>;
116
+ utmMedium: z.ZodNullable<z.ZodString>;
117
+ utmCampaign: z.ZodNullable<z.ZodString>;
118
+ }, "strip", z.ZodTypeAny, {
119
+ id: string;
120
+ email: string;
121
+ source: string | null;
122
+ utmSource: string | null;
123
+ utmMedium: string | null;
124
+ utmCampaign: string | null;
125
+ reconciledUserId: string | null;
126
+ capturedAt: string;
127
+ lastSubmittedAt: string;
128
+ submissionCount: number;
129
+ country: string | null;
130
+ deviceType: string | null;
131
+ osName: string | null;
132
+ osVersion: string | null;
133
+ browserName: string | null;
134
+ browserVersion: string | null;
135
+ referrer: string | null;
136
+ }, {
137
+ id: string;
138
+ email: string;
139
+ source: string | null;
140
+ utmSource: string | null;
141
+ utmMedium: string | null;
142
+ utmCampaign: string | null;
143
+ reconciledUserId: string | null;
144
+ capturedAt: string;
145
+ lastSubmittedAt: string;
146
+ submissionCount: number;
147
+ country: string | null;
148
+ deviceType: string | null;
149
+ osName: string | null;
150
+ osVersion: string | null;
151
+ browserName: string | null;
152
+ browserVersion: string | null;
153
+ referrer: string | null;
154
+ }>, "many">;
155
+ pagination: z.ZodObject<{
156
+ page: z.ZodNumber;
157
+ pageSize: z.ZodNumber;
158
+ total: z.ZodNumber;
159
+ totalPages: z.ZodNumber;
160
+ }, "strip", z.ZodTypeAny, {
161
+ page: number;
162
+ pageSize: number;
163
+ total: number;
164
+ totalPages: number;
165
+ }, {
166
+ page: number;
167
+ pageSize: number;
168
+ total: number;
169
+ totalPages: number;
170
+ }>;
171
+ }, "strip", z.ZodTypeAny, {
172
+ items: {
173
+ id: string;
174
+ email: string;
175
+ source: string | null;
176
+ utmSource: string | null;
177
+ utmMedium: string | null;
178
+ utmCampaign: string | null;
179
+ reconciledUserId: string | null;
180
+ capturedAt: string;
181
+ lastSubmittedAt: string;
182
+ submissionCount: number;
183
+ country: string | null;
184
+ deviceType: string | null;
185
+ osName: string | null;
186
+ osVersion: string | null;
187
+ browserName: string | null;
188
+ browserVersion: string | null;
189
+ referrer: string | null;
190
+ }[];
191
+ pagination: {
192
+ page: number;
193
+ pageSize: number;
194
+ total: number;
195
+ totalPages: number;
196
+ };
197
+ }, {
198
+ items: {
199
+ id: string;
200
+ email: string;
201
+ source: string | null;
202
+ utmSource: string | null;
203
+ utmMedium: string | null;
204
+ utmCampaign: string | null;
205
+ reconciledUserId: string | null;
206
+ capturedAt: string;
207
+ lastSubmittedAt: string;
208
+ submissionCount: number;
209
+ country: string | null;
210
+ deviceType: string | null;
211
+ osName: string | null;
212
+ osVersion: string | null;
213
+ browserName: string | null;
214
+ browserVersion: string | null;
215
+ referrer: string | null;
216
+ }[];
217
+ pagination: {
218
+ page: number;
219
+ pageSize: number;
220
+ total: number;
221
+ totalPages: number;
222
+ };
223
+ }>;
224
+ export type AdminLeadListResponse = z.infer<typeof adminLeadListResponseSchema>;
225
+ export declare const leadRoutes: {
226
+ capture: {
227
+ method: "POST";
228
+ path: "/api/v1/leads/capture";
229
+ auth: "public";
230
+ };
231
+ adminList: {
232
+ method: "GET";
233
+ path: "/api/v1/admin/leads";
234
+ auth: "admin";
235
+ };
236
+ adminDelete: {
237
+ method: "DELETE";
238
+ path: "/api/v1/admin/leads/:id";
239
+ auth: "admin";
240
+ };
241
+ adminExport: {
242
+ method: "GET";
243
+ path: "/api/v1/admin/leads/export";
244
+ auth: "admin";
245
+ };
246
+ };
247
+ //# sourceMappingURL=leads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leads.d.ts","sourceRoot":"","sources":["../src/leads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,2CAAyC,CAAC;AACvE,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAE1D,8DAA8D;AAC9D,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;EAUnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;;GAGG;AACH,eAAO,MAAM,yBAAyB;;;;;;EAA0C,CAAC;AACjF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,qFAAqF;AACrF,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkB1B,CAAC;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAkC,CAAC;AAC3E,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;CAsBkB,CAAC"}
package/dist/leads.js ADDED
@@ -0,0 +1,71 @@
1
+ import { z } from "zod";
2
+ import { idSchema, isoDateSchema } from "./common";
3
+ import { adminPaginated } from "./admin";
4
+ /**
5
+ * Lead capture (pre-signup email captures -- "leads"). Extend this enum as new
6
+ * capture points are added; the DB column itself stays plain text so new
7
+ * sources don't require a migration, only a contract minor-bump.
8
+ */
9
+ export const leadSourceSchema = z.enum(["cta", "landing", "waitlist"]);
10
+ /** POST /leads/capture payload -- public, unauthenticated. */
11
+ export const leadCapturePayloadSchema = z.object({
12
+ email: z
13
+ .string()
14
+ .email()
15
+ .max(254)
16
+ .transform((e) => e.toLowerCase()),
17
+ source: leadSourceSchema,
18
+ utmSource: z.string().max(255).optional(),
19
+ utmMedium: z.string().max(255).optional(),
20
+ utmCampaign: z.string().max(255).optional(),
21
+ });
22
+ /**
23
+ * Deliberately minimal -- identical on first submission and every resubmission,
24
+ * so the response never reveals whether an email was already registered.
25
+ */
26
+ export const leadCaptureResponseSchema = z.object({ captured: z.literal(true) });
27
+ /** Admin list/detail row -- full email_captures shape (minus the raw user-agent). */
28
+ export const adminLeadSchema = z.object({
29
+ id: idSchema,
30
+ email: z.string().email(),
31
+ source: z.string().nullable(),
32
+ reconciledUserId: z.string().nullable(),
33
+ capturedAt: isoDateSchema,
34
+ lastSubmittedAt: isoDateSchema,
35
+ submissionCount: z.number().int(),
36
+ country: z.string().nullable(),
37
+ deviceType: z.string().nullable(),
38
+ osName: z.string().nullable(),
39
+ osVersion: z.string().nullable(),
40
+ browserName: z.string().nullable(),
41
+ browserVersion: z.string().nullable(),
42
+ referrer: z.string().nullable(),
43
+ utmSource: z.string().nullable(),
44
+ utmMedium: z.string().nullable(),
45
+ utmCampaign: z.string().nullable(),
46
+ });
47
+ export const adminLeadListResponseSchema = adminPaginated(adminLeadSchema);
48
+ export const leadRoutes = {
49
+ capture: {
50
+ method: "POST",
51
+ path: "/api/v1/leads/capture",
52
+ auth: "public",
53
+ },
54
+ adminList: {
55
+ method: "GET",
56
+ path: "/api/v1/admin/leads",
57
+ auth: "admin",
58
+ },
59
+ adminDelete: {
60
+ method: "DELETE",
61
+ path: "/api/v1/admin/leads/:id",
62
+ auth: "admin",
63
+ },
64
+ // CSV body, not JSON -- no response schema; route metadata only.
65
+ adminExport: {
66
+ method: "GET",
67
+ path: "/api/v1/admin/leads/export",
68
+ auth: "admin",
69
+ },
70
+ };
71
+ //# sourceMappingURL=leads.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"leads.js","sourceRoot":"","sources":["../src/leads.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beorchid-llc/thrivo-contracts",
3
- "version": "0.9.0",
3
+ "version": "0.11.0",
4
4
  "description": "Shared Thrivo API request and response contracts.",
5
5
  "type": "module",
6
6
  "private": false,