@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 @@
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"}