@nativesquare/soma 0.1.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.
Files changed (194) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +142 -0
  3. package/dist/client/_generated/_ignore.d.ts +1 -0
  4. package/dist/client/_generated/_ignore.d.ts.map +1 -0
  5. package/dist/client/_generated/_ignore.js +3 -0
  6. package/dist/client/_generated/_ignore.js.map +1 -0
  7. package/dist/client/index.d.ts +279 -0
  8. package/dist/client/index.d.ts.map +1 -0
  9. package/dist/client/index.js +264 -0
  10. package/dist/client/index.js.map +1 -0
  11. package/dist/client/types.d.ts +5 -0
  12. package/dist/client/types.d.ts.map +1 -0
  13. package/dist/client/types.js +2 -0
  14. package/dist/client/types.js.map +1 -0
  15. package/dist/component/_generated/api.d.ts +62 -0
  16. package/dist/component/_generated/api.d.ts.map +1 -0
  17. package/dist/component/_generated/api.js +31 -0
  18. package/dist/component/_generated/api.js.map +1 -0
  19. package/dist/component/_generated/component.d.ts +1063 -0
  20. package/dist/component/_generated/component.d.ts.map +1 -0
  21. package/dist/component/_generated/component.js +11 -0
  22. package/dist/component/_generated/component.js.map +1 -0
  23. package/dist/component/_generated/dataModel.d.ts +46 -0
  24. package/dist/component/_generated/dataModel.d.ts.map +1 -0
  25. package/dist/component/_generated/dataModel.js +11 -0
  26. package/dist/component/_generated/dataModel.js.map +1 -0
  27. package/dist/component/_generated/server.d.ts +121 -0
  28. package/dist/component/_generated/server.d.ts.map +1 -0
  29. package/dist/component/_generated/server.js +78 -0
  30. package/dist/component/_generated/server.js.map +1 -0
  31. package/dist/component/convex.config.d.ts +3 -0
  32. package/dist/component/convex.config.d.ts.map +1 -0
  33. package/dist/component/convex.config.js +3 -0
  34. package/dist/component/convex.config.js.map +1 -0
  35. package/dist/component/private.d.ts +33 -0
  36. package/dist/component/private.d.ts.map +1 -0
  37. package/dist/component/private.js +45 -0
  38. package/dist/component/private.js.map +1 -0
  39. package/dist/component/public.d.ts +1107 -0
  40. package/dist/component/public.d.ts.map +1 -0
  41. package/dist/component/public.js +310 -0
  42. package/dist/component/public.js.map +1 -0
  43. package/dist/component/schema.d.ts +4419 -0
  44. package/dist/component/schema.d.ts.map +1 -0
  45. package/dist/component/schema.js +106 -0
  46. package/dist/component/schema.js.map +1 -0
  47. package/dist/component/validators/activity.d.ts +747 -0
  48. package/dist/component/validators/activity.d.ts.map +1 -0
  49. package/dist/component/validators/activity.js +146 -0
  50. package/dist/component/validators/activity.js.map +1 -0
  51. package/dist/component/validators/athlete.d.ts +18 -0
  52. package/dist/component/validators/athlete.d.ts.map +1 -0
  53. package/dist/component/validators/athlete.js +25 -0
  54. package/dist/component/validators/athlete.js.map +1 -0
  55. package/dist/component/validators/body.d.ts +634 -0
  56. package/dist/component/validators/body.d.ts.map +1 -0
  57. package/dist/component/validators/body.js +70 -0
  58. package/dist/component/validators/body.js.map +1 -0
  59. package/dist/component/validators/connection.d.ts +7 -0
  60. package/dist/component/validators/connection.d.ts.map +1 -0
  61. package/dist/component/validators/connection.js +16 -0
  62. package/dist/component/validators/connection.js.map +1 -0
  63. package/dist/component/validators/daily.d.ts +650 -0
  64. package/dist/component/validators/daily.d.ts.map +1 -0
  65. package/dist/component/validators/daily.js +119 -0
  66. package/dist/component/validators/daily.js.map +1 -0
  67. package/dist/component/validators/enums.d.ts +24 -0
  68. package/dist/component/validators/enums.d.ts.map +1 -0
  69. package/dist/component/validators/enums.js +69 -0
  70. package/dist/component/validators/enums.js.map +1 -0
  71. package/dist/component/validators/index.d.ts +13 -0
  72. package/dist/component/validators/index.d.ts.map +1 -0
  73. package/dist/component/validators/index.js +16 -0
  74. package/dist/component/validators/index.js.map +1 -0
  75. package/dist/component/validators/menstruation.d.ts +51 -0
  76. package/dist/component/validators/menstruation.d.ts.map +1 -0
  77. package/dist/component/validators/menstruation.js +32 -0
  78. package/dist/component/validators/menstruation.js.map +1 -0
  79. package/dist/component/validators/nutrition.d.ts +498 -0
  80. package/dist/component/validators/nutrition.d.ts.map +1 -0
  81. package/dist/component/validators/nutrition.js +31 -0
  82. package/dist/component/validators/nutrition.js.map +1 -0
  83. package/dist/component/validators/plannedWorkout.d.ts +277 -0
  84. package/dist/component/validators/plannedWorkout.d.ts.map +1 -0
  85. package/dist/component/validators/plannedWorkout.js +105 -0
  86. package/dist/component/validators/plannedWorkout.js.map +1 -0
  87. package/dist/component/validators/samples.d.ts +609 -0
  88. package/dist/component/validators/samples.d.ts.map +1 -0
  89. package/dist/component/validators/samples.js +336 -0
  90. package/dist/component/validators/samples.js.map +1 -0
  91. package/dist/component/validators/shared.d.ts +402 -0
  92. package/dist/component/validators/shared.d.ts.map +1 -0
  93. package/dist/component/validators/shared.js +146 -0
  94. package/dist/component/validators/shared.js.map +1 -0
  95. package/dist/component/validators/sleep.d.ts +438 -0
  96. package/dist/component/validators/sleep.d.ts.map +1 -0
  97. package/dist/component/validators/sleep.js +95 -0
  98. package/dist/component/validators/sleep.js.map +1 -0
  99. package/dist/healthkit/activity.d.ts +75 -0
  100. package/dist/healthkit/activity.d.ts.map +1 -0
  101. package/dist/healthkit/activity.js +93 -0
  102. package/dist/healthkit/activity.js.map +1 -0
  103. package/dist/healthkit/athlete.d.ts +26 -0
  104. package/dist/healthkit/athlete.d.ts.map +1 -0
  105. package/dist/healthkit/athlete.js +34 -0
  106. package/dist/healthkit/athlete.js.map +1 -0
  107. package/dist/healthkit/body.d.ts +102 -0
  108. package/dist/healthkit/body.d.ts.map +1 -0
  109. package/dist/healthkit/body.js +167 -0
  110. package/dist/healthkit/body.js.map +1 -0
  111. package/dist/healthkit/daily.d.ts +119 -0
  112. package/dist/healthkit/daily.d.ts.map +1 -0
  113. package/dist/healthkit/daily.js +160 -0
  114. package/dist/healthkit/daily.js.map +1 -0
  115. package/dist/healthkit/index.d.ts +21 -0
  116. package/dist/healthkit/index.d.ts.map +1 -0
  117. package/dist/healthkit/index.js +21 -0
  118. package/dist/healthkit/index.js.map +1 -0
  119. package/dist/healthkit/maps/activity-type.d.ts +6 -0
  120. package/dist/healthkit/maps/activity-type.d.ts.map +1 -0
  121. package/dist/healthkit/maps/activity-type.js +184 -0
  122. package/dist/healthkit/maps/activity-type.js.map +1 -0
  123. package/dist/healthkit/maps/menstruation-flow.d.ts +6 -0
  124. package/dist/healthkit/maps/menstruation-flow.d.ts.map +1 -0
  125. package/dist/healthkit/maps/menstruation-flow.js +21 -0
  126. package/dist/healthkit/maps/menstruation-flow.js.map +1 -0
  127. package/dist/healthkit/maps/sleep-level.d.ts +11 -0
  128. package/dist/healthkit/maps/sleep-level.d.ts.map +1 -0
  129. package/dist/healthkit/maps/sleep-level.js +32 -0
  130. package/dist/healthkit/maps/sleep-level.js.map +1 -0
  131. package/dist/healthkit/menstruation.d.ts +35 -0
  132. package/dist/healthkit/menstruation.d.ts.map +1 -0
  133. package/dist/healthkit/menstruation.js +37 -0
  134. package/dist/healthkit/menstruation.js.map +1 -0
  135. package/dist/healthkit/nutrition.d.ts +77 -0
  136. package/dist/healthkit/nutrition.d.ts.map +1 -0
  137. package/dist/healthkit/nutrition.js +135 -0
  138. package/dist/healthkit/nutrition.js.map +1 -0
  139. package/dist/healthkit/sleep.d.ts +60 -0
  140. package/dist/healthkit/sleep.d.ts.map +1 -0
  141. package/dist/healthkit/sleep.js +108 -0
  142. package/dist/healthkit/sleep.js.map +1 -0
  143. package/dist/healthkit/types.d.ts +94 -0
  144. package/dist/healthkit/types.d.ts.map +1 -0
  145. package/dist/healthkit/types.js +26 -0
  146. package/dist/healthkit/types.js.map +1 -0
  147. package/dist/healthkit/utils.d.ts +63 -0
  148. package/dist/healthkit/utils.d.ts.map +1 -0
  149. package/dist/healthkit/utils.js +93 -0
  150. package/dist/healthkit/utils.js.map +1 -0
  151. package/dist/react/index.d.ts +2 -0
  152. package/dist/react/index.d.ts.map +1 -0
  153. package/dist/react/index.js +6 -0
  154. package/dist/react/index.js.map +1 -0
  155. package/package.json +112 -0
  156. package/src/client/_generated/_ignore.ts +1 -0
  157. package/src/client/index.ts +371 -0
  158. package/src/client/types.ts +18 -0
  159. package/src/component/_generated/api.ts +78 -0
  160. package/src/component/_generated/component.ts +1090 -0
  161. package/src/component/_generated/dataModel.ts +60 -0
  162. package/src/component/_generated/server.ts +156 -0
  163. package/src/component/convex.config.ts +3 -0
  164. package/src/component/private.ts +50 -0
  165. package/src/component/public.ts +358 -0
  166. package/src/component/schema.ts +115 -0
  167. package/src/component/validators/activity.ts +216 -0
  168. package/src/component/validators/athlete.ts +25 -0
  169. package/src/component/validators/body.ts +114 -0
  170. package/src/component/validators/connection.ts +16 -0
  171. package/src/component/validators/daily.ts +173 -0
  172. package/src/component/validators/enums.ts +119 -0
  173. package/src/component/validators/index.ts +16 -0
  174. package/src/component/validators/menstruation.ts +36 -0
  175. package/src/component/validators/nutrition.ts +37 -0
  176. package/src/component/validators/plannedWorkout.ts +110 -0
  177. package/src/component/validators/samples.ts +380 -0
  178. package/src/component/validators/shared.ts +165 -0
  179. package/src/component/validators/sleep.ts +133 -0
  180. package/src/healthkit/activity.ts +120 -0
  181. package/src/healthkit/athlete.ts +43 -0
  182. package/src/healthkit/body.ts +266 -0
  183. package/src/healthkit/daily.ts +245 -0
  184. package/src/healthkit/index.ts +59 -0
  185. package/src/healthkit/maps/activity-type.ts +185 -0
  186. package/src/healthkit/maps/menstruation-flow.ts +23 -0
  187. package/src/healthkit/maps/sleep-level.ts +37 -0
  188. package/src/healthkit/menstruation.ts +52 -0
  189. package/src/healthkit/nutrition.ts +162 -0
  190. package/src/healthkit/sleep.ts +136 -0
  191. package/src/healthkit/types.ts +219 -0
  192. package/src/healthkit/utils.ts +122 -0
  193. package/src/react/index.ts +7 -0
  194. package/src/test.ts +18 -0
@@ -0,0 +1,119 @@
1
+ import { v } from "convex/values";
2
+ import { activityLevelSample, calorieSample, distanceSample, elevationSample, floorsClimbedSample, stepSample, metSample, oxygenSaturationSample, vo2MaxSample, stressSample, bodyBatterySample, tagEntry, } from "./samples.js";
3
+ import { deviceData, heartRateData, elevation, swimming, dataContributor, } from "./shared.js";
4
+ // ─── Daily ───────────────────────────────────────────────────────────────────
5
+ // Summary of daily activity metrics.
6
+ // Maps 1:1 to Terra's Daily data model.
7
+ // Uniquely identified by metadata.start_time + metadata.end_time.
8
+ export const dailyValidator = {
9
+ // Reference to the connections table
10
+ connectionId: v.id("connections"),
11
+ // Host app user ID (denormalized for querying)
12
+ userId: v.string(),
13
+ // ── active_durations_data ────────────────────────────────────────────────
14
+ active_durations_data: v.optional(v.object({
15
+ activity_levels_samples: v.optional(v.array(activityLevelSample)),
16
+ activity_seconds: v.optional(v.number()),
17
+ inactivity_seconds: v.optional(v.number()),
18
+ low_intensity_seconds: v.optional(v.number()),
19
+ moderate_intensity_seconds: v.optional(v.number()),
20
+ num_continuous_inactive_periods: v.optional(v.number()),
21
+ rest_seconds: v.optional(v.number()),
22
+ standing_hours_count: v.optional(v.number()),
23
+ standing_seconds: v.optional(v.number()),
24
+ vigorous_intensity_seconds: v.optional(v.number()),
25
+ })),
26
+ // ── calories_data ────────────────────────────────────────────────────────
27
+ calories_data: v.optional(v.object({
28
+ BMR_calories: v.optional(v.number()),
29
+ calorie_samples: v.optional(v.array(calorieSample)),
30
+ net_activity_calories: v.optional(v.number()),
31
+ net_intake_calories: v.optional(v.number()),
32
+ total_burned_calories: v.optional(v.number()),
33
+ })),
34
+ // ── data_enrichment ──────────────────────────────────────────────────────
35
+ data_enrichment: v.optional(v.object({
36
+ cardiovascular_contributors: v.optional(v.array(dataContributor)),
37
+ cardiovascular_score: v.optional(v.number()),
38
+ immune_contributors: v.optional(v.array(dataContributor)),
39
+ immune_index: v.optional(v.number()),
40
+ readiness_contributors: v.optional(v.array(dataContributor)),
41
+ readiness_score: v.optional(v.number()),
42
+ respiratory_contributors: v.optional(v.array(dataContributor)),
43
+ respiratory_score: v.optional(v.number()),
44
+ start_time: v.optional(v.string()),
45
+ stress_contributors: v.optional(v.array(dataContributor)),
46
+ total_stress_score: v.optional(v.number()),
47
+ })),
48
+ // ── device_data ──────────────────────────────────────────────────────────
49
+ device_data: v.optional(deviceData),
50
+ // ── distance_data ────────────────────────────────────────────────────────
51
+ distance_data: v.optional(v.object({
52
+ detailed: v.optional(v.object({
53
+ distance_samples: v.optional(v.array(distanceSample)),
54
+ elevation_samples: v.optional(v.array(elevationSample)),
55
+ floors_climbed_samples: v.optional(v.array(floorsClimbedSample)),
56
+ step_samples: v.optional(v.array(stepSample)),
57
+ })),
58
+ distance_meters: v.optional(v.number()),
59
+ elevation: v.optional(elevation),
60
+ floors_climbed: v.optional(v.number()),
61
+ steps: v.optional(v.number()),
62
+ swimming: v.optional(swimming),
63
+ })),
64
+ // ── heart_rate_data ──────────────────────────────────────────────────────
65
+ heart_rate_data: v.optional(heartRateData),
66
+ // ── MET_data ─────────────────────────────────────────────────────────────
67
+ MET_data: v.optional(v.object({
68
+ MET_samples: v.optional(v.array(metSample)),
69
+ avg_level: v.optional(v.number()),
70
+ num_high_intensity_minutes: v.optional(v.number()),
71
+ num_inactive_minutes: v.optional(v.number()),
72
+ num_low_intensity_minutes: v.optional(v.number()),
73
+ num_moderate_intensity_minutes: v.optional(v.number()),
74
+ })),
75
+ // ── metadata ─────────────────────────────────────────────────────────────
76
+ metadata: v.object({
77
+ end_time: v.string(),
78
+ start_time: v.string(),
79
+ timestamp_localization: v.optional(v.number()),
80
+ upload_type: v.number(), // UploadType enum
81
+ }),
82
+ // ── oxygen_data ──────────────────────────────────────────────────────────
83
+ oxygen_data: v.optional(v.object({
84
+ avg_saturation_percentage: v.optional(v.number()),
85
+ saturation_samples: v.optional(v.array(oxygenSaturationSample)),
86
+ vo2_samples: v.optional(v.array(vo2MaxSample)),
87
+ vo2max_ml_per_min_per_kg: v.optional(v.number()),
88
+ })),
89
+ // ── scores ───────────────────────────────────────────────────────────────
90
+ scores: v.optional(v.object({
91
+ activity: v.optional(v.number()),
92
+ recovery: v.optional(v.number()),
93
+ sleep: v.optional(v.number()),
94
+ biological_age: v.optional(v.number()),
95
+ })),
96
+ // ── strain_data ──────────────────────────────────────────────────────────
97
+ strain_data: v.optional(v.object({
98
+ strain_level: v.optional(v.number()),
99
+ })),
100
+ // ── stress_data ──────────────────────────────────────────────────────────
101
+ stress_data: v.optional(v.object({
102
+ activity_stress_duration_seconds: v.optional(v.number()),
103
+ avg_stress_level: v.optional(v.number()),
104
+ body_battery_samples: v.optional(v.array(bodyBatterySample)),
105
+ high_stress_duration_seconds: v.optional(v.number()),
106
+ low_stress_duration_seconds: v.optional(v.number()),
107
+ max_stress_level: v.optional(v.number()),
108
+ medium_stress_duration_seconds: v.optional(v.number()),
109
+ rest_stress_duration_seconds: v.optional(v.number()),
110
+ samples: v.optional(v.array(stressSample)),
111
+ stress_duration_seconds: v.optional(v.number()),
112
+ stress_rating: v.optional(v.number()),
113
+ })),
114
+ // ── tag_data ─────────────────────────────────────────────────────────────
115
+ tag_data: v.optional(v.object({
116
+ tags: v.optional(v.array(tagEntry)),
117
+ })),
118
+ };
119
+ //# sourceMappingURL=daily.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daily.js","sourceRoot":"","sources":["../../../src/component/validators/daily.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export declare const activityType: import("convex/values").VFloat64<number, "required">;
2
+ export declare const activityLevel: import("convex/values").VFloat64<number, "required">;
3
+ export declare const uploadType: import("convex/values").VFloat64<number, "required">;
4
+ export declare const sleepUploadType: import("convex/values").VFloat64<number, "required">;
5
+ export declare const sleepLevel: import("convex/values").VFloat64<number, "required">;
6
+ export declare const heartRateZone: import("convex/values").VFloat64<number, "required">;
7
+ export declare const heartRateContext: import("convex/values").VFloat64<number, "required">;
8
+ export declare const afibFlag: import("convex/values").VFloat64<number, "required">;
9
+ export declare const glucoseFlag: import("convex/values").VFloat64<number, "required">;
10
+ export declare const trendArrow: import("convex/values").VFloat64<number, "required">;
11
+ export declare const recoveryLevel: import("convex/values").VFloat64<number, "required">;
12
+ export declare const strokeType: import("convex/values").VUnion<"other" | "freestyle" | "backstroke" | "breaststroke" | "butterfly", [import("convex/values").VLiteral<"other", "required">, import("convex/values").VLiteral<"freestyle", "required">, import("convex/values").VLiteral<"backstroke", "required">, import("convex/values").VLiteral<"breaststroke", "required">, import("convex/values").VLiteral<"butterfly", "required">], "required", never>;
13
+ export declare const plannedStrokeType: import("convex/values").VFloat64<number, "required">;
14
+ export declare const equipmentType: import("convex/values").VFloat64<number, "required">;
15
+ export declare const exerciseType: import("convex/values").VFloat64<number, "required">;
16
+ export declare const nutritionUnits: import("convex/values").VFloat64<number, "required">;
17
+ export declare const menstruationFlow: import("convex/values").VFloat64<number, "required">;
18
+ export declare const menstrualPhase: import("convex/values").VUnion<"menstrual" | "follicular" | "ovulation" | "luteal" | "pms" | "fertile" | "first_trimester" | "second_trimester" | "third_trimester" | "unknown", [import("convex/values").VLiteral<"menstrual", "required">, import("convex/values").VLiteral<"follicular", "required">, import("convex/values").VLiteral<"ovulation", "required">, import("convex/values").VLiteral<"luteal", "required">, import("convex/values").VLiteral<"pms", "required">, import("convex/values").VLiteral<"fertile", "required">, import("convex/values").VLiteral<"first_trimester", "required">, import("convex/values").VLiteral<"second_trimester", "required">, import("convex/values").VLiteral<"third_trimester", "required">, import("convex/values").VLiteral<"unknown", "required">], "required", never>;
19
+ export declare const mealType: import("convex/values").VFloat64<number, "required">;
20
+ export declare const stressLevel: import("convex/values").VFloat64<number, "required">;
21
+ export declare const timestampLocalization: import("convex/values").VFloat64<number, "required">;
22
+ export declare const deviceDataType: import("convex/values").VUnion<"BMR" | "STEPS" | "ACTIVE_MINUTES" | "CALORIES" | "DISTANCE" | "HEART_RATE" | "OXYGEN_SATURATION" | "SLEEP_TYPE" | "SPEED" | "CADENCE", [import("convex/values").VLiteral<"STEPS", "required">, import("convex/values").VLiteral<"ACTIVE_MINUTES", "required">, import("convex/values").VLiteral<"BMR", "required">, import("convex/values").VLiteral<"CALORIES", "required">, import("convex/values").VLiteral<"DISTANCE", "required">, import("convex/values").VLiteral<"HEART_RATE", "required">, import("convex/values").VLiteral<"OXYGEN_SATURATION", "required">, import("convex/values").VLiteral<"SLEEP_TYPE", "required">, import("convex/values").VLiteral<"SPEED", "required">, import("convex/values").VLiteral<"CADENCE", "required">], "required", never>;
23
+ export declare const stepIntensity: import("convex/values").VFloat64<number, "required">;
24
+ //# sourceMappingURL=enums.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.d.ts","sourceRoot":"","sources":["../../../src/component/validators/enums.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,sDAAa,CAAC;AAIvC,eAAO,MAAM,aAAa,sDAAa,CAAC;AAIxC,eAAO,MAAM,UAAU,sDAAa,CAAC;AAIrC,eAAO,MAAM,eAAe,sDAAa,CAAC;AAI1C,eAAO,MAAM,UAAU,sDAAa,CAAC;AAIrC,eAAO,MAAM,aAAa,sDAAa,CAAC;AAIxC,eAAO,MAAM,gBAAgB,sDAAa,CAAC;AAI3C,eAAO,MAAM,QAAQ,sDAAa,CAAC;AAInC,eAAO,MAAM,WAAW,sDAAa,CAAC;AAItC,eAAO,MAAM,UAAU,sDAAa,CAAC;AAIrC,eAAO,MAAM,aAAa,sDAAa,CAAC;AAGxC,eAAO,MAAM,UAAU,iaAMtB,CAAC;AAIF,eAAO,MAAM,iBAAiB,sDAAa,CAAC;AAI5C,eAAO,MAAM,aAAa,sDAAa,CAAC;AAIxC,eAAO,MAAM,YAAY,sDAAa,CAAC;AAIvC,eAAO,MAAM,cAAc,sDAAa,CAAC;AAIzC,eAAO,MAAM,gBAAgB,sDAAa,CAAC;AAG3C,eAAO,MAAM,cAAc,4xBAW1B,CAAC;AAKF,eAAO,MAAM,QAAQ,sDAAa,CAAC;AAInC,eAAO,MAAM,WAAW,sDAAa,CAAC;AAItC,eAAO,MAAM,qBAAqB,sDAAa,CAAC;AAGhD,eAAO,MAAM,cAAc,wwBAW1B,CAAC;AAIF,eAAO,MAAM,aAAa,sDAAa,CAAC"}
@@ -0,0 +1,69 @@
1
+ import { v } from "convex/values";
2
+ // ─── ActivityType ────────────────────────────────────────────────────────────
3
+ // Numeric enum mapping activity/workout types (0–148)
4
+ export const activityType = v.number();
5
+ // ─── ActivityLevel ───────────────────────────────────────────────────────────
6
+ // 0=Unknown, 1=Rest, 2=Inactive, 3=Low, 4=Medium, 5=High
7
+ export const activityLevel = v.number();
8
+ // ─── UploadType ──────────────────────────────────────────────────────────────
9
+ // 0=Unknown, 1=Automatic, 2=Manual, 3=Update, 4=Delete, 5=Pending, 6=ThirdParty
10
+ export const uploadType = v.number();
11
+ // ─── SleepUploadType ─────────────────────────────────────────────────────────
12
+ // 0=Unknown, 1=Manual, 2=Automatic, 3=Tentative, 4=Indeterminate
13
+ export const sleepUploadType = v.number();
14
+ // ─── SleepLevel ──────────────────────────────────────────────────────────────
15
+ // 0=Unknown, 1=Awake, 2=Sleeping, 3=OutOfBed, 4=Light, 5=Deep, 6=REM
16
+ export const sleepLevel = v.number();
17
+ // ─── HeartRateZone ───────────────────────────────────────────────────────────
18
+ // 0–5 = Zone 0–5, 6 = Other/custom
19
+ export const heartRateZone = v.number();
20
+ // ─── HeartRateContext ────────────────────────────────────────────────────────
21
+ // 0=NOT_SET, 1=ACTIVE, 2=NOT_ACTIVE
22
+ export const heartRateContext = v.number();
23
+ // ─── AFibFlag ────────────────────────────────────────────────────────────────
24
+ // 0=Negative, 1=Positive, 2=Inconclusive
25
+ export const afibFlag = v.number();
26
+ // ─── GlucoseFlag ─────────────────────────────────────────────────────────────
27
+ // 0=Normal, 1=High, 2=Low
28
+ export const glucoseFlag = v.number();
29
+ // ─── TrendArrow ──────────────────────────────────────────────────────────────
30
+ // 0=UNKNOWN, 1=FALLING_QUICKLY, 2=FALLING, 3=FLAT, 4=RISING, 5=RISING_QUICKLY
31
+ export const trendArrow = v.number();
32
+ // ─── RecoveryLevel ───────────────────────────────────────────────────────────
33
+ // 0=Unknown, 1=VeryPoor, 2=Poor, 3=Compromised, 4=Ok, 5=Good, 6=VeryGood
34
+ export const recoveryLevel = v.number();
35
+ // ─── StrokeType (string enum) ────────────────────────────────────────────────
36
+ export const strokeType = v.union(v.literal("other"), v.literal("freestyle"), v.literal("backstroke"), v.literal("breaststroke"), v.literal("butterfly"));
37
+ // ─── StrokeType (numeric, for planned workouts) ──────────────────────────────
38
+ // 0=BACKSTROKE, 1=BREASTSTROKE, 2=DRILL, 3=BUTTERFLY, 4=FREESTYLE, 5=MIXED, 6=IM
39
+ export const plannedStrokeType = v.number();
40
+ // ─── EquipmentType (planned workouts) ────────────────────────────────────────
41
+ // 0=NONE, 1=SWIM_FINS, 2=KICKBOARD, 3=PADDLES, 4=PULL_BUOY, 5=SNORKEL
42
+ export const equipmentType = v.number();
43
+ // ─── ExerciseType (planned workouts) ─────────────────────────────────────────
44
+ // 0=UNKNOWN, 1=BENCH_PRESS, ..., 35=CARDIO_SENSORS
45
+ export const exerciseType = v.number();
46
+ // ─── NutritionUnits ──────────────────────────────────────────────────────────
47
+ // 0=Unknown, 1=Gram, 2=Teaspoon, ..., 12=FluidOunce
48
+ export const nutritionUnits = v.number();
49
+ // ─── MenstruationFlow ────────────────────────────────────────────────────────
50
+ // 0=UNKNOWN, 1=NONE, 2=LIGHT, 3=MEDIUM, 4=HEAVY, 5=HAD
51
+ export const menstruationFlow = v.number();
52
+ // ─── MenstrualPhase (string enum) ────────────────────────────────────────────
53
+ export const menstrualPhase = v.union(v.literal("menstrual"), v.literal("follicular"), v.literal("ovulation"), v.literal("luteal"), v.literal("pms"), v.literal("fertile"), v.literal("first_trimester"), v.literal("second_trimester"), v.literal("third_trimester"), v.literal("unknown"));
54
+ // ─── MealType ────────────────────────────────────────────────────────────────
55
+ // 0=UNKNOWN, 1=BREAKFAST, 2=MORNING_SNACK, 3=LUNCH,
56
+ // 4=AFTERNOON_SNACK, 5=DINNER, 6=SNACK
57
+ export const mealType = v.number();
58
+ // ─── StressLevel ─────────────────────────────────────────────────────────────
59
+ // 0=NOT_ENOUGH_DATA, 1=REST, 2=LOW, 3=MEDIUM, 4=HIGH
60
+ export const stressLevel = v.number();
61
+ // ─── Timezone Localization ───────────────────────────────────────────────────
62
+ // 0=UTC, 1=LOCAL
63
+ export const timestampLocalization = v.number();
64
+ // ─── DeviceDataType (string enum) ────────────────────────────────────────────
65
+ export const deviceDataType = v.union(v.literal("STEPS"), v.literal("ACTIVE_MINUTES"), v.literal("BMR"), v.literal("CALORIES"), v.literal("DISTANCE"), v.literal("HEART_RATE"), v.literal("OXYGEN_SATURATION"), v.literal("SLEEP_TYPE"), v.literal("SPEED"), v.literal("CADENCE"));
66
+ // ─── Planned Workout Step Intensity ──────────────────────────────────────────
67
+ // 0=REST, 1=WARMUP, 2=COOLDOWN, 3=RECOVERY, 4=INTERVAL, 5=ACTIVE
68
+ export const stepIntensity = v.number();
69
+ //# sourceMappingURL=enums.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enums.js","sourceRoot":"","sources":["../../../src/component/validators/enums.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export * from "./enums.js";
2
+ export * from "./samples.js";
3
+ export * from "./shared.js";
4
+ export { connectionValidator } from "./connection.js";
5
+ export { athleteValidator } from "./athlete.js";
6
+ export { activityValidator } from "./activity.js";
7
+ export { bodyValidator } from "./body.js";
8
+ export { dailyValidator } from "./daily.js";
9
+ export { sleepValidator } from "./sleep.js";
10
+ export { menstruationValidator } from "./menstruation.js";
11
+ export { nutritionValidator } from "./nutrition.js";
12
+ export { plannedWorkoutValidator } from "./plannedWorkout.js";
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/component/validators/index.ts"],"names":[],"mappings":"AAIA,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,16 @@
1
+ // ─── Soma Validators ─────────────────────────────────────────────────────────
2
+ // 1:1 mapping of Terra's Health & Fitness API data models to Convex validators.
3
+ // https://docs.tryterra.co/reference/health-and-fitness-api/data-models
4
+ export * from "./enums.js";
5
+ export * from "./samples.js";
6
+ export * from "./shared.js";
7
+ export { connectionValidator } from "./connection.js";
8
+ export { athleteValidator } from "./athlete.js";
9
+ export { activityValidator } from "./activity.js";
10
+ export { bodyValidator } from "./body.js";
11
+ export { dailyValidator } from "./daily.js";
12
+ export { sleepValidator } from "./sleep.js";
13
+ export { menstruationValidator } from "./menstruation.js";
14
+ export { nutritionValidator } from "./nutrition.js";
15
+ export { plannedWorkoutValidator } from "./plannedWorkout.js";
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/component/validators/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,gFAAgF;AAChF,wEAAwE;AAExE,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC"}
@@ -0,0 +1,51 @@
1
+ export declare const menstruationValidator: {
2
+ connectionId: import("convex/values").VId<import("convex/values").GenericId<"connections">, "required">;
3
+ userId: import("convex/values").VString<string, "required">;
4
+ metadata: import("convex/values").VObject<{
5
+ timestamp_localization?: number | undefined;
6
+ start_time: string;
7
+ end_time: string;
8
+ }, {
9
+ end_time: import("convex/values").VString<string, "required">;
10
+ start_time: import("convex/values").VString<string, "required">;
11
+ timestamp_localization: import("convex/values").VFloat64<number | undefined, "optional">;
12
+ }, "required", "start_time" | "end_time" | "timestamp_localization">;
13
+ menstruation_data: import("convex/values").VObject<{
14
+ menstruation_flow?: {
15
+ timestamp?: string | undefined;
16
+ flow?: number | undefined;
17
+ }[] | undefined;
18
+ period_length_days?: number | undefined;
19
+ predicted_cycle_length_days?: number | undefined;
20
+ last_updated_time?: string | undefined;
21
+ day_in_cycle?: number | undefined;
22
+ length_of_current_phase_days?: number | undefined;
23
+ period_start_date?: string | undefined;
24
+ cycle_length_days?: string | undefined;
25
+ current_phase?: string | undefined;
26
+ is_predicted_cycle?: string | undefined;
27
+ days_until_next_phase?: number | undefined;
28
+ } | undefined, {
29
+ menstruation_flow: import("convex/values").VArray<{
30
+ timestamp?: string | undefined;
31
+ flow?: number | undefined;
32
+ }[] | undefined, import("convex/values").VObject<{
33
+ timestamp?: string | undefined;
34
+ flow?: number | undefined;
35
+ }, {
36
+ timestamp: import("convex/values").VString<string | undefined, "optional">;
37
+ flow: import("convex/values").VFloat64<number | undefined, "optional">;
38
+ }, "required", "timestamp" | "flow">, "optional">;
39
+ period_length_days: import("convex/values").VFloat64<number | undefined, "optional">;
40
+ predicted_cycle_length_days: import("convex/values").VFloat64<number | undefined, "optional">;
41
+ last_updated_time: import("convex/values").VString<string | undefined, "optional">;
42
+ day_in_cycle: import("convex/values").VFloat64<number | undefined, "optional">;
43
+ length_of_current_phase_days: import("convex/values").VFloat64<number | undefined, "optional">;
44
+ period_start_date: import("convex/values").VString<string | undefined, "optional">;
45
+ cycle_length_days: import("convex/values").VString<string | undefined, "optional">;
46
+ current_phase: import("convex/values").VString<string | undefined, "optional">;
47
+ is_predicted_cycle: import("convex/values").VString<string | undefined, "optional">;
48
+ days_until_next_phase: import("convex/values").VFloat64<number | undefined, "optional">;
49
+ }, "optional", "menstruation_flow" | "period_length_days" | "predicted_cycle_length_days" | "last_updated_time" | "day_in_cycle" | "length_of_current_phase_days" | "period_start_date" | "cycle_length_days" | "current_phase" | "is_predicted_cycle" | "days_until_next_phase">;
50
+ };
51
+ //# sourceMappingURL=menstruation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menstruation.d.ts","sourceRoot":"","sources":["../../../src/component/validators/menstruation.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BjC,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { v } from "convex/values";
2
+ import { menstruationFlowSample } from "./samples.js";
3
+ // ─── Menstruation ────────────────────────────────────────────────────────────
4
+ // Menstruation cycle and fertility data.
5
+ // Maps 1:1 to Terra's Menstruation data model.
6
+ export const menstruationValidator = {
7
+ // Reference to the connections table
8
+ connectionId: v.id("connections"),
9
+ // Host app user ID (denormalized for querying)
10
+ userId: v.string(),
11
+ // ── metadata ─────────────────────────────────────────────────────────────
12
+ metadata: v.object({
13
+ end_time: v.string(),
14
+ start_time: v.string(),
15
+ timestamp_localization: v.optional(v.number()),
16
+ }),
17
+ // ── menstruation_data ────────────────────────────────────────────────────
18
+ menstruation_data: v.optional(v.object({
19
+ menstruation_flow: v.optional(v.array(menstruationFlowSample)),
20
+ period_length_days: v.optional(v.number()),
21
+ predicted_cycle_length_days: v.optional(v.number()),
22
+ last_updated_time: v.optional(v.string()),
23
+ day_in_cycle: v.optional(v.number()),
24
+ length_of_current_phase_days: v.optional(v.number()),
25
+ period_start_date: v.optional(v.string()),
26
+ cycle_length_days: v.optional(v.string()),
27
+ current_phase: v.optional(v.string()), // MenstrualPhase string enum
28
+ is_predicted_cycle: v.optional(v.string()),
29
+ days_until_next_phase: v.optional(v.number()),
30
+ })),
31
+ };
32
+ //# sourceMappingURL=menstruation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menstruation.js","sourceRoot":"","sources":["../../../src/component/validators/menstruation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,gFAAgF;AAChF,yCAAyC;AACzC,+CAA+C;AAC/C,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,qCAAqC;IACrC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC;IACjC,+CAA+C;IAC/C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAElB,4EAA4E;IAC5E,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;QACjB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;QACpB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;QACtB,sBAAsB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC/C,CAAC;IAEF,4EAA4E;IAC5E,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAC3B,CAAC,CAAC,MAAM,CAAC;QACP,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC9D,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1C,2BAA2B,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACnD,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACzC,YAAY,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACpC,4BAA4B,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACpD,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACzC,iBAAiB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACzC,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,6BAA6B;QACpE,kBAAkB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QAC1C,qBAAqB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;KAC9C,CAAC,CACH;CACF,CAAC"}