@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.
- package/LICENSE +201 -0
- package/README.md +142 -0
- package/dist/client/_generated/_ignore.d.ts +1 -0
- package/dist/client/_generated/_ignore.d.ts.map +1 -0
- package/dist/client/_generated/_ignore.js +3 -0
- package/dist/client/_generated/_ignore.js.map +1 -0
- package/dist/client/index.d.ts +279 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +264 -0
- package/dist/client/index.js.map +1 -0
- package/dist/client/types.d.ts +5 -0
- package/dist/client/types.d.ts.map +1 -0
- package/dist/client/types.js +2 -0
- package/dist/client/types.js.map +1 -0
- package/dist/component/_generated/api.d.ts +62 -0
- package/dist/component/_generated/api.d.ts.map +1 -0
- package/dist/component/_generated/api.js +31 -0
- package/dist/component/_generated/api.js.map +1 -0
- package/dist/component/_generated/component.d.ts +1063 -0
- package/dist/component/_generated/component.d.ts.map +1 -0
- package/dist/component/_generated/component.js +11 -0
- package/dist/component/_generated/component.js.map +1 -0
- package/dist/component/_generated/dataModel.d.ts +46 -0
- package/dist/component/_generated/dataModel.d.ts.map +1 -0
- package/dist/component/_generated/dataModel.js +11 -0
- package/dist/component/_generated/dataModel.js.map +1 -0
- package/dist/component/_generated/server.d.ts +121 -0
- package/dist/component/_generated/server.d.ts.map +1 -0
- package/dist/component/_generated/server.js +78 -0
- package/dist/component/_generated/server.js.map +1 -0
- package/dist/component/convex.config.d.ts +3 -0
- package/dist/component/convex.config.d.ts.map +1 -0
- package/dist/component/convex.config.js +3 -0
- package/dist/component/convex.config.js.map +1 -0
- package/dist/component/private.d.ts +33 -0
- package/dist/component/private.d.ts.map +1 -0
- package/dist/component/private.js +45 -0
- package/dist/component/private.js.map +1 -0
- package/dist/component/public.d.ts +1107 -0
- package/dist/component/public.d.ts.map +1 -0
- package/dist/component/public.js +310 -0
- package/dist/component/public.js.map +1 -0
- package/dist/component/schema.d.ts +4419 -0
- package/dist/component/schema.d.ts.map +1 -0
- package/dist/component/schema.js +106 -0
- package/dist/component/schema.js.map +1 -0
- package/dist/component/validators/activity.d.ts +747 -0
- package/dist/component/validators/activity.d.ts.map +1 -0
- package/dist/component/validators/activity.js +146 -0
- package/dist/component/validators/activity.js.map +1 -0
- package/dist/component/validators/athlete.d.ts +18 -0
- package/dist/component/validators/athlete.d.ts.map +1 -0
- package/dist/component/validators/athlete.js +25 -0
- package/dist/component/validators/athlete.js.map +1 -0
- package/dist/component/validators/body.d.ts +634 -0
- package/dist/component/validators/body.d.ts.map +1 -0
- package/dist/component/validators/body.js +70 -0
- package/dist/component/validators/body.js.map +1 -0
- package/dist/component/validators/connection.d.ts +7 -0
- package/dist/component/validators/connection.d.ts.map +1 -0
- package/dist/component/validators/connection.js +16 -0
- package/dist/component/validators/connection.js.map +1 -0
- package/dist/component/validators/daily.d.ts +650 -0
- package/dist/component/validators/daily.d.ts.map +1 -0
- package/dist/component/validators/daily.js +119 -0
- package/dist/component/validators/daily.js.map +1 -0
- package/dist/component/validators/enums.d.ts +24 -0
- package/dist/component/validators/enums.d.ts.map +1 -0
- package/dist/component/validators/enums.js +69 -0
- package/dist/component/validators/enums.js.map +1 -0
- package/dist/component/validators/index.d.ts +13 -0
- package/dist/component/validators/index.d.ts.map +1 -0
- package/dist/component/validators/index.js +16 -0
- package/dist/component/validators/index.js.map +1 -0
- package/dist/component/validators/menstruation.d.ts +51 -0
- package/dist/component/validators/menstruation.d.ts.map +1 -0
- package/dist/component/validators/menstruation.js +32 -0
- package/dist/component/validators/menstruation.js.map +1 -0
- package/dist/component/validators/nutrition.d.ts +498 -0
- package/dist/component/validators/nutrition.d.ts.map +1 -0
- package/dist/component/validators/nutrition.js +31 -0
- package/dist/component/validators/nutrition.js.map +1 -0
- package/dist/component/validators/plannedWorkout.d.ts +277 -0
- package/dist/component/validators/plannedWorkout.d.ts.map +1 -0
- package/dist/component/validators/plannedWorkout.js +105 -0
- package/dist/component/validators/plannedWorkout.js.map +1 -0
- package/dist/component/validators/samples.d.ts +609 -0
- package/dist/component/validators/samples.d.ts.map +1 -0
- package/dist/component/validators/samples.js +336 -0
- package/dist/component/validators/samples.js.map +1 -0
- package/dist/component/validators/shared.d.ts +402 -0
- package/dist/component/validators/shared.d.ts.map +1 -0
- package/dist/component/validators/shared.js +146 -0
- package/dist/component/validators/shared.js.map +1 -0
- package/dist/component/validators/sleep.d.ts +438 -0
- package/dist/component/validators/sleep.d.ts.map +1 -0
- package/dist/component/validators/sleep.js +95 -0
- package/dist/component/validators/sleep.js.map +1 -0
- package/dist/healthkit/activity.d.ts +75 -0
- package/dist/healthkit/activity.d.ts.map +1 -0
- package/dist/healthkit/activity.js +93 -0
- package/dist/healthkit/activity.js.map +1 -0
- package/dist/healthkit/athlete.d.ts +26 -0
- package/dist/healthkit/athlete.d.ts.map +1 -0
- package/dist/healthkit/athlete.js +34 -0
- package/dist/healthkit/athlete.js.map +1 -0
- package/dist/healthkit/body.d.ts +102 -0
- package/dist/healthkit/body.d.ts.map +1 -0
- package/dist/healthkit/body.js +167 -0
- package/dist/healthkit/body.js.map +1 -0
- package/dist/healthkit/daily.d.ts +119 -0
- package/dist/healthkit/daily.d.ts.map +1 -0
- package/dist/healthkit/daily.js +160 -0
- package/dist/healthkit/daily.js.map +1 -0
- package/dist/healthkit/index.d.ts +21 -0
- package/dist/healthkit/index.d.ts.map +1 -0
- package/dist/healthkit/index.js +21 -0
- package/dist/healthkit/index.js.map +1 -0
- package/dist/healthkit/maps/activity-type.d.ts +6 -0
- package/dist/healthkit/maps/activity-type.d.ts.map +1 -0
- package/dist/healthkit/maps/activity-type.js +184 -0
- package/dist/healthkit/maps/activity-type.js.map +1 -0
- package/dist/healthkit/maps/menstruation-flow.d.ts +6 -0
- package/dist/healthkit/maps/menstruation-flow.d.ts.map +1 -0
- package/dist/healthkit/maps/menstruation-flow.js +21 -0
- package/dist/healthkit/maps/menstruation-flow.js.map +1 -0
- package/dist/healthkit/maps/sleep-level.d.ts +11 -0
- package/dist/healthkit/maps/sleep-level.d.ts.map +1 -0
- package/dist/healthkit/maps/sleep-level.js +32 -0
- package/dist/healthkit/maps/sleep-level.js.map +1 -0
- package/dist/healthkit/menstruation.d.ts +35 -0
- package/dist/healthkit/menstruation.d.ts.map +1 -0
- package/dist/healthkit/menstruation.js +37 -0
- package/dist/healthkit/menstruation.js.map +1 -0
- package/dist/healthkit/nutrition.d.ts +77 -0
- package/dist/healthkit/nutrition.d.ts.map +1 -0
- package/dist/healthkit/nutrition.js +135 -0
- package/dist/healthkit/nutrition.js.map +1 -0
- package/dist/healthkit/sleep.d.ts +60 -0
- package/dist/healthkit/sleep.d.ts.map +1 -0
- package/dist/healthkit/sleep.js +108 -0
- package/dist/healthkit/sleep.js.map +1 -0
- package/dist/healthkit/types.d.ts +94 -0
- package/dist/healthkit/types.d.ts.map +1 -0
- package/dist/healthkit/types.js +26 -0
- package/dist/healthkit/types.js.map +1 -0
- package/dist/healthkit/utils.d.ts +63 -0
- package/dist/healthkit/utils.d.ts.map +1 -0
- package/dist/healthkit/utils.js +93 -0
- package/dist/healthkit/utils.js.map +1 -0
- package/dist/react/index.d.ts +2 -0
- package/dist/react/index.d.ts.map +1 -0
- package/dist/react/index.js +6 -0
- package/dist/react/index.js.map +1 -0
- package/package.json +112 -0
- package/src/client/_generated/_ignore.ts +1 -0
- package/src/client/index.ts +371 -0
- package/src/client/types.ts +18 -0
- package/src/component/_generated/api.ts +78 -0
- package/src/component/_generated/component.ts +1090 -0
- package/src/component/_generated/dataModel.ts +60 -0
- package/src/component/_generated/server.ts +156 -0
- package/src/component/convex.config.ts +3 -0
- package/src/component/private.ts +50 -0
- package/src/component/public.ts +358 -0
- package/src/component/schema.ts +115 -0
- package/src/component/validators/activity.ts +216 -0
- package/src/component/validators/athlete.ts +25 -0
- package/src/component/validators/body.ts +114 -0
- package/src/component/validators/connection.ts +16 -0
- package/src/component/validators/daily.ts +173 -0
- package/src/component/validators/enums.ts +119 -0
- package/src/component/validators/index.ts +16 -0
- package/src/component/validators/menstruation.ts +36 -0
- package/src/component/validators/nutrition.ts +37 -0
- package/src/component/validators/plannedWorkout.ts +110 -0
- package/src/component/validators/samples.ts +380 -0
- package/src/component/validators/shared.ts +165 -0
- package/src/component/validators/sleep.ts +133 -0
- package/src/healthkit/activity.ts +120 -0
- package/src/healthkit/athlete.ts +43 -0
- package/src/healthkit/body.ts +266 -0
- package/src/healthkit/daily.ts +245 -0
- package/src/healthkit/index.ts +59 -0
- package/src/healthkit/maps/activity-type.ts +185 -0
- package/src/healthkit/maps/menstruation-flow.ts +23 -0
- package/src/healthkit/maps/sleep-level.ts +37 -0
- package/src/healthkit/menstruation.ts +52 -0
- package/src/healthkit/nutrition.ts +162 -0
- package/src/healthkit/sleep.ts +136 -0
- package/src/healthkit/types.ts +219 -0
- package/src/healthkit/utils.ts +122 -0
- package/src/react/index.ts +7 -0
- 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"}
|