@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 @@
|
|
|
1
|
+
{"version":3,"file":"activity.d.ts","sourceRoot":"","sources":["../../../src/component/validators/activity.ts"],"names":[],"mappings":"AAyBA,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8L7B,CAAC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { v } from "convex/values";
|
|
2
|
+
import { calorieSample, distanceSample, elevationSample, floorsClimbedSample, stepSample, speedSample, cadenceSample, torqueSample, activityLevelSample, metSample, tssSample, lapSample, powerSample, positionSample, oxygenSaturationSample, vo2MaxSample, } from "./samples.js";
|
|
3
|
+
import { deviceData, heartRateData, elevation, swimming } from "./shared.js";
|
|
4
|
+
// ─── Activity ────────────────────────────────────────────────────────────────
|
|
5
|
+
// Workouts/activities performed during a time period.
|
|
6
|
+
// Maps 1:1 to Terra's Activity data model.
|
|
7
|
+
// Uniquely identified by metadata.summary_id.
|
|
8
|
+
export const activityValidator = {
|
|
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
|
+
// ── cheat_detection ────────────────────────────────────────────────────
|
|
35
|
+
cheat_detection: v.optional(v.number()),
|
|
36
|
+
// ── data_enrichment ──────────────────────────────────────────────────────
|
|
37
|
+
data_enrichment: v.optional(v.object({
|
|
38
|
+
stress_score: v.optional(v.number()),
|
|
39
|
+
})),
|
|
40
|
+
// ── device_data ──────────────────────────────────────────────────────────
|
|
41
|
+
device_data: v.optional(deviceData),
|
|
42
|
+
// ── distance_data ────────────────────────────────────────────────────────
|
|
43
|
+
distance_data: v.optional(v.object({
|
|
44
|
+
detailed: v.optional(v.object({
|
|
45
|
+
distance_samples: v.optional(v.array(distanceSample)),
|
|
46
|
+
elevation_samples: v.optional(v.array(elevationSample)),
|
|
47
|
+
floors_climbed_samples: v.optional(v.array(floorsClimbedSample)),
|
|
48
|
+
step_samples: v.optional(v.array(stepSample)),
|
|
49
|
+
})),
|
|
50
|
+
summary: v.optional(v.object({
|
|
51
|
+
distance_meters: v.optional(v.number()),
|
|
52
|
+
elevation: v.optional(elevation),
|
|
53
|
+
floors_climbed: v.optional(v.number()),
|
|
54
|
+
steps: v.optional(v.number()),
|
|
55
|
+
swimming: v.optional(swimming),
|
|
56
|
+
})),
|
|
57
|
+
})),
|
|
58
|
+
// ── energy_data ──────────────────────────────────────────────────────────
|
|
59
|
+
energy_data: v.optional(v.object({
|
|
60
|
+
energy_kilojoules: v.optional(v.number()),
|
|
61
|
+
energy_planned_kilojoules: v.optional(v.number()),
|
|
62
|
+
})),
|
|
63
|
+
// ── heart_rate_data ──────────────────────────────────────────────────────
|
|
64
|
+
heart_rate_data: v.optional(heartRateData),
|
|
65
|
+
// ── lap_data ─────────────────────────────────────────────────────────────
|
|
66
|
+
lap_data: v.optional(v.object({
|
|
67
|
+
laps: v.optional(v.array(lapSample)),
|
|
68
|
+
})),
|
|
69
|
+
// ── MET_data ─────────────────────────────────────────────────────────────
|
|
70
|
+
MET_data: v.optional(v.object({
|
|
71
|
+
MET_samples: v.optional(v.array(metSample)),
|
|
72
|
+
avg_level: v.optional(v.number()),
|
|
73
|
+
num_high_intensity_minutes: v.optional(v.number()),
|
|
74
|
+
num_inactive_minutes: v.optional(v.number()),
|
|
75
|
+
num_low_intensity_minutes: v.optional(v.number()),
|
|
76
|
+
num_moderate_intensity_minutes: v.optional(v.number()),
|
|
77
|
+
})),
|
|
78
|
+
// ── metadata ─────────────────────────────────────────────────────────────
|
|
79
|
+
metadata: v.object({
|
|
80
|
+
city: v.optional(v.string()),
|
|
81
|
+
country: v.optional(v.string()),
|
|
82
|
+
end_time: v.string(),
|
|
83
|
+
name: v.optional(v.string()),
|
|
84
|
+
start_time: v.string(),
|
|
85
|
+
state: v.optional(v.string()),
|
|
86
|
+
summary_id: v.string(),
|
|
87
|
+
timestamp_localization: v.optional(v.number()),
|
|
88
|
+
type: v.number(), // ActivityType enum
|
|
89
|
+
upload_type: v.number(), // UploadType enum
|
|
90
|
+
}),
|
|
91
|
+
// ── movement_data ────────────────────────────────────────────────────────
|
|
92
|
+
movement_data: v.optional(v.object({
|
|
93
|
+
adjusted_max_speed_meters_per_second: v.optional(v.number()),
|
|
94
|
+
avg_cadence_rpm: v.optional(v.number()),
|
|
95
|
+
avg_pace_minutes_per_kilometer: v.optional(v.number()),
|
|
96
|
+
avg_speed_meters_per_second: v.optional(v.number()),
|
|
97
|
+
avg_torque_newton_meters: v.optional(v.number()),
|
|
98
|
+
avg_velocity_meters_per_second: v.optional(v.number()),
|
|
99
|
+
cadence_samples: v.optional(v.array(cadenceSample)),
|
|
100
|
+
max_cadence_rpm: v.optional(v.number()),
|
|
101
|
+
max_pace_minutes_per_kilometer: v.optional(v.number()),
|
|
102
|
+
max_speed_meters_per_second: v.optional(v.number()),
|
|
103
|
+
max_torque_newton_meters: v.optional(v.number()),
|
|
104
|
+
max_velocity_meters_per_second: v.optional(v.number()),
|
|
105
|
+
normalized_speed_meters_per_second: v.optional(v.number()),
|
|
106
|
+
speed_samples: v.optional(v.array(speedSample)),
|
|
107
|
+
torque_samples: v.optional(v.array(torqueSample)),
|
|
108
|
+
})),
|
|
109
|
+
// ── oxygen_data ──────────────────────────────────────────────────────────
|
|
110
|
+
oxygen_data: v.optional(v.object({
|
|
111
|
+
avg_saturation_percentage: v.optional(v.number()),
|
|
112
|
+
saturation_samples: v.optional(v.array(oxygenSaturationSample)),
|
|
113
|
+
vo2_samples: v.optional(v.array(vo2MaxSample)),
|
|
114
|
+
vo2max_ml_per_min_per_kg: v.optional(v.number()),
|
|
115
|
+
})),
|
|
116
|
+
// ── polyline_map_data ────────────────────────────────────────────────────
|
|
117
|
+
polyline_map_data: v.optional(v.object({
|
|
118
|
+
summary_polyline: v.optional(v.string()),
|
|
119
|
+
})),
|
|
120
|
+
// ── position_data ────────────────────────────────────────────────────────
|
|
121
|
+
position_data: v.optional(v.object({
|
|
122
|
+
center_pos_lat_lng_deg: v.optional(v.array(v.number())),
|
|
123
|
+
end_pos_lat_lng_deg: v.optional(v.array(v.number())),
|
|
124
|
+
position_samples: v.optional(v.array(positionSample)),
|
|
125
|
+
start_pos_lat_lng_deg: v.optional(v.array(v.number())),
|
|
126
|
+
})),
|
|
127
|
+
// ── power_data ───────────────────────────────────────────────────────────
|
|
128
|
+
power_data: v.optional(v.object({
|
|
129
|
+
avg_watts: v.optional(v.number()),
|
|
130
|
+
max_watts: v.optional(v.number()),
|
|
131
|
+
power_samples: v.optional(v.array(powerSample)),
|
|
132
|
+
})),
|
|
133
|
+
// ── strain_data ──────────────────────────────────────────────────────────
|
|
134
|
+
strain_data: v.optional(v.object({
|
|
135
|
+
strain_level: v.optional(v.number()),
|
|
136
|
+
})),
|
|
137
|
+
// ── TSS_data ─────────────────────────────────────────────────────────────
|
|
138
|
+
TSS_data: v.optional(v.object({
|
|
139
|
+
TSS_samples: v.optional(v.array(tssSample)),
|
|
140
|
+
})),
|
|
141
|
+
// ── work_data ────────────────────────────────────────────────────────────
|
|
142
|
+
work_data: v.optional(v.object({
|
|
143
|
+
work_kilojoules: v.optional(v.number()),
|
|
144
|
+
})),
|
|
145
|
+
};
|
|
146
|
+
//# sourceMappingURL=activity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"activity.js","sourceRoot":"","sources":["../../../src/component/validators/activity.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export declare const athleteValidator: {
|
|
2
|
+
connectionId: import("convex/values").VId<import("convex/values").GenericId<"connections">, "required">;
|
|
3
|
+
userId: import("convex/values").VString<string, "required">;
|
|
4
|
+
age: import("convex/values").VFloat64<number | undefined, "optional">;
|
|
5
|
+
country: import("convex/values").VString<string | undefined, "optional">;
|
|
6
|
+
bio: import("convex/values").VString<string | undefined, "optional">;
|
|
7
|
+
state: import("convex/values").VString<string | undefined, "optional">;
|
|
8
|
+
last_name: import("convex/values").VString<string | undefined, "optional">;
|
|
9
|
+
sex: import("convex/values").VString<string | undefined, "optional">;
|
|
10
|
+
city: import("convex/values").VString<string | undefined, "optional">;
|
|
11
|
+
email: import("convex/values").VString<string | undefined, "optional">;
|
|
12
|
+
date_of_birth: import("convex/values").VString<string | undefined, "optional">;
|
|
13
|
+
first_name: import("convex/values").VString<string | undefined, "optional">;
|
|
14
|
+
gender: import("convex/values").VString<string | undefined, "optional">;
|
|
15
|
+
joined_provider: import("convex/values").VString<string | undefined, "optional">;
|
|
16
|
+
devices: import("convex/values").VArray<any[] | undefined, import("convex/values").VAny<any, "required", string>, "optional">;
|
|
17
|
+
};
|
|
18
|
+
//# sourceMappingURL=athlete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"athlete.d.ts","sourceRoot":"","sources":["../../../src/component/validators/athlete.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;CAmB5B,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { v } from "convex/values";
|
|
2
|
+
// ─── Athlete ─────────────────────────────────────────────────────────────────
|
|
3
|
+
// User identifying/profile information from the wearable provider.
|
|
4
|
+
// Maps 1:1 to Terra's Athlete data model.
|
|
5
|
+
export const athleteValidator = {
|
|
6
|
+
// Reference to the connections table
|
|
7
|
+
connectionId: v.id("connections"),
|
|
8
|
+
// Host app user ID (denormalized for querying)
|
|
9
|
+
userId: v.string(),
|
|
10
|
+
// Profile fields (all nullable per Terra spec)
|
|
11
|
+
age: v.optional(v.number()),
|
|
12
|
+
country: v.optional(v.string()),
|
|
13
|
+
bio: v.optional(v.string()),
|
|
14
|
+
state: v.optional(v.string()),
|
|
15
|
+
last_name: v.optional(v.string()),
|
|
16
|
+
sex: v.optional(v.string()),
|
|
17
|
+
city: v.optional(v.string()),
|
|
18
|
+
email: v.optional(v.string()),
|
|
19
|
+
date_of_birth: v.optional(v.string()),
|
|
20
|
+
first_name: v.optional(v.string()),
|
|
21
|
+
gender: v.optional(v.string()),
|
|
22
|
+
joined_provider: v.optional(v.string()),
|
|
23
|
+
devices: v.optional(v.array(v.any())),
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=athlete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"athlete.js","sourceRoot":"","sources":["../../../src/component/validators/athlete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAElC,gFAAgF;AAChF,mEAAmE;AACnE,0CAA0C;AAC1C,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,qCAAqC;IACrC,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC;IACjC,+CAA+C;IAC/C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;IAClB,+CAA+C;IAC/C,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC/B,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,GAAG,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC7B,aAAa,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACrC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,eAAe,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;CACtC,CAAC"}
|