@nativesquare/soma 0.16.2 → 0.16.4

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 (37) hide show
  1. package/dist/client/healthkit.d.ts +5 -85
  2. package/dist/client/healthkit.d.ts.map +1 -1
  3. package/dist/client/healthkit.js +14 -506
  4. package/dist/client/healthkit.js.map +1 -1
  5. package/dist/component/_generated/api.d.ts +4 -0
  6. package/dist/component/_generated/api.d.ts.map +1 -1
  7. package/dist/component/_generated/api.js.map +1 -1
  8. package/dist/component/_generated/component.d.ts +472 -0
  9. package/dist/component/_generated/component.d.ts.map +1 -1
  10. package/dist/component/healthkit/index.d.ts +1 -0
  11. package/dist/component/healthkit/index.d.ts.map +1 -1
  12. package/dist/component/healthkit/index.js +5 -0
  13. package/dist/component/healthkit/index.js.map +1 -1
  14. package/dist/component/healthkit/public.d.ts +451 -0
  15. package/dist/component/healthkit/public.d.ts.map +1 -0
  16. package/dist/component/healthkit/public.js +386 -0
  17. package/dist/component/healthkit/public.js.map +1 -0
  18. package/dist/component/healthkit/types.d.ts +13 -76
  19. package/dist/component/healthkit/types.d.ts.map +1 -1
  20. package/dist/component/healthkit/types.js +9 -6
  21. package/dist/component/healthkit/types.js.map +1 -1
  22. package/dist/component/healthkit/validators.d.ts +1933 -0
  23. package/dist/component/healthkit/validators.d.ts.map +1 -0
  24. package/dist/component/healthkit/validators.js +199 -0
  25. package/dist/component/healthkit/validators.js.map +1 -0
  26. package/dist/component/strava/types/stravaApi/zod.gen.d.ts +3 -3
  27. package/dist/component/validators/connection.js +1 -1
  28. package/dist/component/validators/connection.js.map +1 -1
  29. package/package.json +1 -1
  30. package/src/client/healthkit.ts +44 -625
  31. package/src/component/_generated/api.ts +4 -0
  32. package/src/component/_generated/component.ts +412 -0
  33. package/src/component/healthkit/index.ts +74 -46
  34. package/src/component/healthkit/public.ts +597 -0
  35. package/src/component/healthkit/types.ts +45 -114
  36. package/src/component/healthkit/validators.ts +253 -0
  37. package/src/component/validators/connection.ts +1 -1
@@ -0,0 +1,386 @@
1
+ // ─── HealthKit Public Mutations ──────────────────────────────────────────────
2
+ // Per-data-type sync mutations plus connect/disconnect, called by the host app
3
+ // through the SomaHealthKit client class. Because HealthKit is an on-device
4
+ // provider, these are `mutation` (not `action`) — all data is supplied by the
5
+ // caller, nothing is fetched from an external API.
6
+ import { v } from "convex/values";
7
+ import { mutation } from "../_generated/server.js";
8
+ import { api } from "../_generated/api.js";
9
+ import { transformWorkout } from "./transform/activity.js";
10
+ import { transformSleep } from "./transform/sleep.js";
11
+ import { transformBody } from "./transform/body.js";
12
+ import { transformDaily, transformDailyFromSummary, } from "./transform/daily.js";
13
+ import { transformNutrition } from "./transform/nutrition.js";
14
+ import { transformMenstruation } from "./transform/menstruation.js";
15
+ import { transformAthlete } from "./transform/athlete.js";
16
+ import { syncActivitiesArgs, syncSleepArgs, syncBodyArgs, syncDailyArgs, syncDailyFromSummaryArgs, syncNutritionArgs, syncMenstruationArgs, syncAthleteArgs, syncAllHealthKitArgs, syncActivitiesReturn, syncSleepReturn, syncBodyReturn, syncDailyReturn, syncNutritionReturn, syncMenstruationReturn, syncAthleteReturn, syncAllReturn, } from "./validators.js";
17
+ const PROVIDER = "HEALTHKIT";
18
+ // ─── Internal helpers ───────────────────────────────────────────────────────
19
+ /**
20
+ * Load the active HEALTHKIT connection for a user, or throw if missing/inactive.
21
+ *
22
+ * HealthKit permissions are managed on-device, so the connection state is an
23
+ * assertion made by the host via {@link connect} / {@link disconnect}. Sync
24
+ * mutations refuse to run without an active connection.
25
+ */
26
+ async function requireActiveConnection(ctx, userId) {
27
+ const connection = await ctx.db
28
+ .query("connections")
29
+ .withIndex("by_userId_provider", (q) => q.eq("userId", userId).eq("provider", PROVIDER))
30
+ .first();
31
+ if (!connection) {
32
+ throw new Error(`No HealthKit connection for user "${userId}". Call soma.healthkit.connect(ctx, { userId }) after the React Native HealthKit library confirms permissions.`);
33
+ }
34
+ if (connection.active === false) {
35
+ throw new Error(`HealthKit connection for user "${userId}" is disconnected. Call soma.healthkit.connect(ctx, { userId }) to re-activate.`);
36
+ }
37
+ return connection._id;
38
+ }
39
+ async function touchLastDataUpdate(ctx, connectionId) {
40
+ await ctx.runMutation(api.public.updateConnection, {
41
+ connectionId,
42
+ lastDataUpdate: new Date().toISOString(),
43
+ });
44
+ }
45
+ // ─── Per-type processors (no connection resolution, no lastDataUpdate) ──────
46
+ async function processActivities(ctx, connectionId, userId, workouts) {
47
+ const errors = [];
48
+ let count = 0;
49
+ for (const workout of workouts) {
50
+ try {
51
+ const data = transformWorkout(workout);
52
+ await ctx.runMutation(api.public.ingestActivity, {
53
+ connectionId,
54
+ userId,
55
+ ...data,
56
+ });
57
+ count++;
58
+ }
59
+ catch (err) {
60
+ errors.push({
61
+ type: "activity",
62
+ id: workout.uuid,
63
+ message: err instanceof Error ? err.message : String(err),
64
+ });
65
+ }
66
+ }
67
+ return { count, errors };
68
+ }
69
+ async function processSleep(ctx, connectionId, userId, sessions) {
70
+ const errors = [];
71
+ let count = 0;
72
+ for (const session of sessions) {
73
+ const sessionId = session[0]?.uuid ?? "unknown";
74
+ try {
75
+ const data = transformSleep(session);
76
+ await ctx.runMutation(api.public.ingestSleep, {
77
+ connectionId,
78
+ userId,
79
+ ...data,
80
+ });
81
+ count++;
82
+ }
83
+ catch (err) {
84
+ errors.push({
85
+ type: "sleep",
86
+ id: sessionId,
87
+ message: err instanceof Error ? err.message : String(err),
88
+ });
89
+ }
90
+ }
91
+ return { count, errors };
92
+ }
93
+ async function processBody(ctx, connectionId, userId, samples, timeRange) {
94
+ const errors = [];
95
+ let count = 0;
96
+ try {
97
+ const data = transformBody(samples, timeRange);
98
+ await ctx.runMutation(api.public.ingestBody, {
99
+ connectionId,
100
+ userId,
101
+ ...data,
102
+ });
103
+ count++;
104
+ }
105
+ catch (err) {
106
+ errors.push({
107
+ type: "body",
108
+ id: "transform",
109
+ message: err instanceof Error ? err.message : String(err),
110
+ });
111
+ }
112
+ return { count, errors };
113
+ }
114
+ async function processDaily(ctx, connectionId, userId, samples, timeRange) {
115
+ const errors = [];
116
+ let count = 0;
117
+ try {
118
+ const data = transformDaily(samples, timeRange);
119
+ await ctx.runMutation(api.public.ingestDaily, {
120
+ connectionId,
121
+ userId,
122
+ ...data,
123
+ });
124
+ count++;
125
+ }
126
+ catch (err) {
127
+ errors.push({
128
+ type: "daily",
129
+ id: "transform",
130
+ message: err instanceof Error ? err.message : String(err),
131
+ });
132
+ }
133
+ return { count, errors };
134
+ }
135
+ async function processDailyFromSummary(ctx, connectionId, userId, summaries) {
136
+ const errors = [];
137
+ let count = 0;
138
+ for (const summary of summaries) {
139
+ const { year, month, day } = summary.dateComponents;
140
+ const summaryId = `${year}-${String(month).padStart(2, "0")}-${String(day).padStart(2, "0")}`;
141
+ try {
142
+ const data = transformDailyFromSummary(summary);
143
+ await ctx.runMutation(api.public.ingestDaily, {
144
+ connectionId,
145
+ userId,
146
+ ...data,
147
+ });
148
+ count++;
149
+ }
150
+ catch (err) {
151
+ errors.push({
152
+ type: "daily",
153
+ id: summaryId,
154
+ message: err instanceof Error ? err.message : String(err),
155
+ });
156
+ }
157
+ }
158
+ return { count, errors };
159
+ }
160
+ async function processNutrition(ctx, connectionId, userId, samples, timeRange) {
161
+ const errors = [];
162
+ let count = 0;
163
+ try {
164
+ const data = transformNutrition(samples, timeRange);
165
+ await ctx.runMutation(api.public.ingestNutrition, {
166
+ connectionId,
167
+ userId,
168
+ ...data,
169
+ });
170
+ count++;
171
+ }
172
+ catch (err) {
173
+ errors.push({
174
+ type: "nutrition",
175
+ id: "transform",
176
+ message: err instanceof Error ? err.message : String(err),
177
+ });
178
+ }
179
+ return { count, errors };
180
+ }
181
+ async function processMenstruation(ctx, connectionId, userId, samples, timeRange) {
182
+ const errors = [];
183
+ let count = 0;
184
+ try {
185
+ const data = transformMenstruation(samples, timeRange);
186
+ await ctx.runMutation(api.public.ingestMenstruation, {
187
+ connectionId,
188
+ userId,
189
+ ...data,
190
+ });
191
+ count++;
192
+ }
193
+ catch (err) {
194
+ errors.push({
195
+ type: "menstruation",
196
+ id: "transform",
197
+ message: err instanceof Error ? err.message : String(err),
198
+ });
199
+ }
200
+ return { count, errors };
201
+ }
202
+ async function processAthlete(ctx, connectionId, userId, characteristics) {
203
+ const errors = [];
204
+ let count = 0;
205
+ try {
206
+ const data = transformAthlete(characteristics);
207
+ await ctx.runMutation(api.public.ingestAthlete, {
208
+ connectionId,
209
+ userId,
210
+ ...data,
211
+ });
212
+ count++;
213
+ }
214
+ catch (err) {
215
+ errors.push({
216
+ type: "athlete",
217
+ id: "transform",
218
+ message: err instanceof Error ? err.message : String(err),
219
+ });
220
+ }
221
+ return { count, errors };
222
+ }
223
+ // ─── Connect / Disconnect ────────────────────────────────────────────────────
224
+ /**
225
+ * Assert that HealthKit is connected for this user. Creates the HEALTHKIT
226
+ * connection if missing or re-activates it if previously disconnected.
227
+ * Idempotent.
228
+ */
229
+ export const connect = mutation({
230
+ args: {
231
+ userId: v.string(),
232
+ },
233
+ returns: v.id("connections"),
234
+ handler: async (ctx, args) => {
235
+ return await ctx.runMutation(api.public.connect, {
236
+ userId: args.userId,
237
+ provider: PROVIDER,
238
+ });
239
+ },
240
+ });
241
+ /**
242
+ * Mark the HealthKit connection inactive for this user. Does not delete
243
+ * the connection row or any previously synced data.
244
+ */
245
+ export const disconnect = mutation({
246
+ args: {
247
+ userId: v.string(),
248
+ },
249
+ returns: v.null(),
250
+ handler: async (ctx, args) => {
251
+ await ctx.runMutation(api.public.disconnect, {
252
+ userId: args.userId,
253
+ provider: PROVIDER,
254
+ });
255
+ return null;
256
+ },
257
+ });
258
+ // ─── Per-type sync mutations ─────────────────────────────────────────────────
259
+ export const syncActivities = mutation({
260
+ args: syncActivitiesArgs,
261
+ returns: syncActivitiesReturn,
262
+ handler: async (ctx, args) => {
263
+ const connectionId = await requireActiveConnection(ctx, args.userId);
264
+ const { count, errors } = await processActivities(ctx, connectionId, args.userId, args.workouts);
265
+ await touchLastDataUpdate(ctx, connectionId);
266
+ return { data: { activities: count }, errors };
267
+ },
268
+ });
269
+ export const syncSleep = mutation({
270
+ args: syncSleepArgs,
271
+ returns: syncSleepReturn,
272
+ handler: async (ctx, args) => {
273
+ const connectionId = await requireActiveConnection(ctx, args.userId);
274
+ const { count, errors } = await processSleep(ctx, connectionId, args.userId, args.sessions);
275
+ await touchLastDataUpdate(ctx, connectionId);
276
+ return { data: { sleep: count }, errors };
277
+ },
278
+ });
279
+ export const syncBody = mutation({
280
+ args: syncBodyArgs,
281
+ returns: syncBodyReturn,
282
+ handler: async (ctx, args) => {
283
+ const connectionId = await requireActiveConnection(ctx, args.userId);
284
+ const { count, errors } = await processBody(ctx, connectionId, args.userId, args.samples, args.timeRange);
285
+ await touchLastDataUpdate(ctx, connectionId);
286
+ return { data: { body: count }, errors };
287
+ },
288
+ });
289
+ export const syncDaily = mutation({
290
+ args: syncDailyArgs,
291
+ returns: syncDailyReturn,
292
+ handler: async (ctx, args) => {
293
+ const connectionId = await requireActiveConnection(ctx, args.userId);
294
+ const { count, errors } = await processDaily(ctx, connectionId, args.userId, args.samples, args.timeRange);
295
+ await touchLastDataUpdate(ctx, connectionId);
296
+ return { data: { daily: count }, errors };
297
+ },
298
+ });
299
+ export const syncDailyFromSummary = mutation({
300
+ args: syncDailyFromSummaryArgs,
301
+ returns: syncDailyReturn,
302
+ handler: async (ctx, args) => {
303
+ const connectionId = await requireActiveConnection(ctx, args.userId);
304
+ const { count, errors } = await processDailyFromSummary(ctx, connectionId, args.userId, args.summaries);
305
+ await touchLastDataUpdate(ctx, connectionId);
306
+ return { data: { daily: count }, errors };
307
+ },
308
+ });
309
+ export const syncNutrition = mutation({
310
+ args: syncNutritionArgs,
311
+ returns: syncNutritionReturn,
312
+ handler: async (ctx, args) => {
313
+ const connectionId = await requireActiveConnection(ctx, args.userId);
314
+ const { count, errors } = await processNutrition(ctx, connectionId, args.userId, args.samples, args.timeRange);
315
+ await touchLastDataUpdate(ctx, connectionId);
316
+ return { data: { nutrition: count }, errors };
317
+ },
318
+ });
319
+ export const syncMenstruation = mutation({
320
+ args: syncMenstruationArgs,
321
+ returns: syncMenstruationReturn,
322
+ handler: async (ctx, args) => {
323
+ const connectionId = await requireActiveConnection(ctx, args.userId);
324
+ const { count, errors } = await processMenstruation(ctx, connectionId, args.userId, args.samples, args.timeRange);
325
+ await touchLastDataUpdate(ctx, connectionId);
326
+ return { data: { menstruation: count }, errors };
327
+ },
328
+ });
329
+ export const syncAthlete = mutation({
330
+ args: syncAthleteArgs,
331
+ returns: syncAthleteReturn,
332
+ handler: async (ctx, args) => {
333
+ const connectionId = await requireActiveConnection(ctx, args.userId);
334
+ const { count, errors } = await processAthlete(ctx, connectionId, args.userId, args.characteristics);
335
+ await touchLastDataUpdate(ctx, connectionId);
336
+ return { data: { athletes: count }, errors };
337
+ },
338
+ });
339
+ // ─── Orchestrator ────────────────────────────────────────────────────────────
340
+ /**
341
+ * Sync all provided HealthKit data types in a single transaction.
342
+ *
343
+ * Only types with values provided are synced. Errors from individual data
344
+ * types are collected — one failing type does not block others. The
345
+ * connection is resolved once and `lastDataUpdate` is written once.
346
+ */
347
+ export const syncAll = mutation({
348
+ args: syncAllHealthKitArgs,
349
+ returns: syncAllReturn,
350
+ handler: async (ctx, args) => {
351
+ const connectionId = await requireActiveConnection(ctx, args.userId);
352
+ const allErrors = [];
353
+ const counts = {};
354
+ const record = (key, result) => {
355
+ counts[key] = (counts[key] ?? 0) + result.count;
356
+ allErrors.push(...result.errors);
357
+ };
358
+ if (args.workouts) {
359
+ record("activities", await processActivities(ctx, connectionId, args.userId, args.workouts));
360
+ }
361
+ if (args.sleepSessions) {
362
+ record("sleep", await processSleep(ctx, connectionId, args.userId, args.sleepSessions));
363
+ }
364
+ if (args.bodySamples) {
365
+ record("body", await processBody(ctx, connectionId, args.userId, args.bodySamples, args.bodyTimeRange));
366
+ }
367
+ if (args.dailySamples) {
368
+ record("daily", await processDaily(ctx, connectionId, args.userId, args.dailySamples, args.dailyTimeRange));
369
+ }
370
+ if (args.dailySummaries) {
371
+ record("daily", await processDailyFromSummary(ctx, connectionId, args.userId, args.dailySummaries));
372
+ }
373
+ if (args.nutritionSamples) {
374
+ record("nutrition", await processNutrition(ctx, connectionId, args.userId, args.nutritionSamples, args.nutritionTimeRange));
375
+ }
376
+ if (args.menstruationSamples) {
377
+ record("menstruation", await processMenstruation(ctx, connectionId, args.userId, args.menstruationSamples, args.menstruationTimeRange));
378
+ }
379
+ if (args.characteristics) {
380
+ record("athletes", await processAthlete(ctx, connectionId, args.userId, args.characteristics));
381
+ }
382
+ await touchLastDataUpdate(ctx, connectionId);
383
+ return { data: counts, errors: allErrors };
384
+ },
385
+ });
386
+ //# sourceMappingURL=public.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.js","sourceRoot":"","sources":["../../../src/component/healthkit/public.ts"],"names":[],"mappings":"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"}
@@ -1,77 +1,16 @@
1
- export interface HKDevice {
2
- name?: string;
3
- manufacturer?: string;
4
- model?: string;
5
- hardwareVersion?: string;
6
- softwareVersion?: string;
7
- }
8
- export interface HKSource {
9
- name: string;
10
- bundleIdentifier: string;
11
- }
12
- export interface HKQuantitySample {
13
- uuid: string;
14
- sampleType: HKQuantityTypeIdentifier;
15
- startDate: string;
16
- endDate: string;
17
- value: number;
18
- unit: string;
19
- source?: HKSource;
20
- device?: HKDevice;
21
- }
22
- export interface HKCategorySample {
23
- uuid: string;
24
- sampleType: HKCategoryTypeIdentifier;
25
- startDate: string;
26
- endDate: string;
27
- value: number;
28
- source?: HKSource;
29
- device?: HKDevice;
30
- }
31
- export interface HKWorkoutRoute {
32
- locations: Array<{
33
- latitude: number;
34
- longitude: number;
35
- altitude?: number;
36
- timestamp: string;
37
- }>;
38
- }
39
- export interface HKWorkout {
40
- uuid: string;
41
- workoutActivityType: number;
42
- startDate: string;
43
- endDate: string;
44
- duration: number;
45
- totalEnergyBurned?: number;
46
- totalDistance?: number;
47
- totalSwimmingStrokeCount?: number;
48
- totalFlightsClimbed?: number;
49
- source?: HKSource;
50
- device?: HKDevice;
51
- heartRateSamples?: HKQuantitySample[];
52
- routeData?: HKWorkoutRoute[];
53
- }
54
- export interface HKActivitySummary {
55
- activeEnergyBurned: number;
56
- activeEnergyBurnedGoal: number;
57
- appleExerciseTime: number;
58
- appleExerciseTimeGoal: number;
59
- appleStandHours: number;
60
- appleStandHoursGoal: number;
61
- dateComponents: {
62
- year: number;
63
- month: number;
64
- day: number;
65
- };
66
- }
67
- export interface HKCharacteristics {
68
- biologicalSex?: HKBiologicalSex;
69
- dateOfBirth?: string;
70
- bloodType?: string;
71
- fitzpatrickSkinType?: number;
72
- wheelchairUse?: boolean;
73
- }
74
- export type HKBiologicalSex = "female" | "male" | "other" | "notSet";
1
+ import type { Infer } from "convex/values";
2
+ import { hkDeviceValidator, hkSourceValidator, hkQuantitySampleValidator, hkCategorySampleValidator, hkWorkoutRouteValidator, hkWorkoutValidator, hkActivitySummaryValidator, hkCharacteristicsValidator, hkBiologicalSexValidator, hkSleepCategoryValueValidator, hkMenstrualFlowCategoryValueValidator } from "./validators.js";
3
+ export type HKDevice = Infer<typeof hkDeviceValidator>;
4
+ export type HKSource = Infer<typeof hkSourceValidator>;
5
+ export type HKQuantitySample = Infer<typeof hkQuantitySampleValidator>;
6
+ export type HKCategorySample = Infer<typeof hkCategorySampleValidator>;
7
+ export type HKWorkoutRoute = Infer<typeof hkWorkoutRouteValidator>;
8
+ export type HKWorkout = Infer<typeof hkWorkoutValidator>;
9
+ export type HKActivitySummary = Infer<typeof hkActivitySummaryValidator>;
10
+ export type HKCharacteristics = Infer<typeof hkCharacteristicsValidator>;
11
+ export type HKBiologicalSex = Infer<typeof hkBiologicalSexValidator>;
12
+ export type HKSleepCategoryValue = Infer<typeof hkSleepCategoryValueValidator>;
13
+ export type HKMenstrualFlowCategoryValue = Infer<typeof hkMenstrualFlowCategoryValueValidator>;
75
14
  export type HKQuantityTypeIdentifier = "HKQuantityTypeIdentifierBodyMass" | "HKQuantityTypeIdentifierHeight" | "HKQuantityTypeIdentifierBodyMassIndex" | "HKQuantityTypeIdentifierBodyFatPercentage" | "HKQuantityTypeIdentifierLeanBodyMass" | "HKQuantityTypeIdentifierHeartRate" | "HKQuantityTypeIdentifierRestingHeartRate" | "HKQuantityTypeIdentifierHeartRateVariabilitySDNN" | "HKQuantityTypeIdentifierHeartRateRecoveryOneMinute" | "HKQuantityTypeIdentifierBloodPressureSystolic" | "HKQuantityTypeIdentifierBloodPressureDiastolic" | "HKQuantityTypeIdentifierOxygenSaturation" | "HKQuantityTypeIdentifierVO2Max" | "HKQuantityTypeIdentifierRespiratoryRate" | "HKQuantityTypeIdentifierBloodGlucose" | "HKQuantityTypeIdentifierBodyTemperature" | "HKQuantityTypeIdentifierStepCount" | "HKQuantityTypeIdentifierDistanceWalkingRunning" | "HKQuantityTypeIdentifierDistanceCycling" | "HKQuantityTypeIdentifierDistanceSwimming" | "HKQuantityTypeIdentifierActiveEnergyBurned" | "HKQuantityTypeIdentifierBasalEnergyBurned" | "HKQuantityTypeIdentifierFlightsClimbed" | "HKQuantityTypeIdentifierAppleExerciseTime" | "HKQuantityTypeIdentifierAppleStandTime" | "HKQuantityTypeIdentifierDietaryEnergyConsumed" | "HKQuantityTypeIdentifierDietaryProtein" | "HKQuantityTypeIdentifierDietaryCarbohydrates" | "HKQuantityTypeIdentifierDietaryFatTotal" | "HKQuantityTypeIdentifierDietaryFatSaturated" | "HKQuantityTypeIdentifierDietaryFatMonounsaturated" | "HKQuantityTypeIdentifierDietaryFatPolyunsaturated" | "HKQuantityTypeIdentifierDietaryCholesterol" | "HKQuantityTypeIdentifierDietarySodium" | "HKQuantityTypeIdentifierDietarySugar" | "HKQuantityTypeIdentifierDietaryFiber" | "HKQuantityTypeIdentifierDietaryWater" | "HKQuantityTypeIdentifierDietaryCalcium" | "HKQuantityTypeIdentifierDietaryIron" | "HKQuantityTypeIdentifierDietaryPotassium" | "HKQuantityTypeIdentifierDietaryVitaminA" | "HKQuantityTypeIdentifierDietaryVitaminB6" | "HKQuantityTypeIdentifierDietaryVitaminB12" | "HKQuantityTypeIdentifierDietaryVitaminC" | "HKQuantityTypeIdentifierDietaryVitaminD" | "HKQuantityTypeIdentifierDietaryVitaminE" | "HKQuantityTypeIdentifierDietaryVitaminK" | "HKQuantityTypeIdentifierDietaryZinc" | "HKQuantityTypeIdentifierDietaryMagnesium" | "HKQuantityTypeIdentifierDietaryManganese" | "HKQuantityTypeIdentifierDietaryCopper" | "HKQuantityTypeIdentifierDietarySelenium" | "HKQuantityTypeIdentifierDietaryChromium" | "HKQuantityTypeIdentifierDietaryFolate" | "HKQuantityTypeIdentifierDietaryBiotin" | "HKQuantityTypeIdentifierDietaryNiacin" | "HKQuantityTypeIdentifierDietaryPhosphorus" | "HKQuantityTypeIdentifierDietaryRiboflavin" | "HKQuantityTypeIdentifierDietaryThiamin" | "HKQuantityTypeIdentifierDietaryCaffeine" | "HKQuantityTypeIdentifierDietaryIodine" | "HKQuantityTypeIdentifierDietaryChloride" | "HKQuantityTypeIdentifierDietaryPanthothenicAcid" | (string & {});
76
15
  export type HKCategoryTypeIdentifier = "HKCategoryTypeIdentifierSleepAnalysis" | "HKCategoryTypeIdentifierMenstrualFlow" | "HKCategoryTypeIdentifierAppleStandHour" | (string & {});
77
16
  export declare const HKSleepCategory: {
@@ -82,7 +21,6 @@ export declare const HKSleepCategory: {
82
21
  readonly AsleepDeep: 4;
83
22
  readonly AsleepREM: 5;
84
23
  };
85
- export type HKSleepCategoryValue = (typeof HKSleepCategory)[keyof typeof HKSleepCategory];
86
24
  export declare const HKMenstrualFlowCategory: {
87
25
  readonly Unspecified: 1;
88
26
  readonly Light: 2;
@@ -90,5 +28,4 @@ export declare const HKMenstrualFlowCategory: {
90
28
  readonly Heavy: 4;
91
29
  readonly None: 5;
92
30
  };
93
- export type HKMenstrualFlowCategoryValue = (typeof HKMenstrualFlowCategory)[keyof typeof HKMenstrualFlowCategory];
94
31
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/component/healthkit/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/component/healthkit/types.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,qCAAqC,EACtC,MAAM,iBAAiB,CAAC;AAIzB,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACvD,MAAM,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACvD,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AACvE,MAAM,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AACvE,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AACnE,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACzD,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AACzE,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AACzE,MAAM,MAAM,eAAe,GAAG,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AACrE,MAAM,MAAM,oBAAoB,GAAG,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAC/E,MAAM,MAAM,4BAA4B,GAAG,KAAK,CAC9C,OAAO,qCAAqC,CAC7C,CAAC;AAQF,MAAM,MAAM,wBAAwB,GAEhC,kCAAkC,GAClC,gCAAgC,GAChC,uCAAuC,GACvC,2CAA2C,GAC3C,sCAAsC,GAEtC,mCAAmC,GACnC,0CAA0C,GAC1C,kDAAkD,GAClD,oDAAoD,GAEpD,+CAA+C,GAC/C,gDAAgD,GAEhD,0CAA0C,GAC1C,gCAAgC,GAChC,yCAAyC,GAEzC,sCAAsC,GACtC,yCAAyC,GAEzC,mCAAmC,GACnC,gDAAgD,GAChD,yCAAyC,GACzC,0CAA0C,GAC1C,4CAA4C,GAC5C,2CAA2C,GAC3C,wCAAwC,GACxC,2CAA2C,GAC3C,wCAAwC,GAExC,+CAA+C,GAC/C,wCAAwC,GACxC,8CAA8C,GAC9C,yCAAyC,GACzC,6CAA6C,GAC7C,mDAAmD,GACnD,mDAAmD,GACnD,4CAA4C,GAC5C,uCAAuC,GACvC,sCAAsC,GACtC,sCAAsC,GACtC,sCAAsC,GACtC,wCAAwC,GACxC,qCAAqC,GACrC,0CAA0C,GAC1C,yCAAyC,GACzC,0CAA0C,GAC1C,2CAA2C,GAC3C,yCAAyC,GACzC,yCAAyC,GACzC,yCAAyC,GACzC,yCAAyC,GACzC,qCAAqC,GACrC,0CAA0C,GAC1C,0CAA0C,GAC1C,uCAAuC,GACvC,yCAAyC,GACzC,yCAAyC,GACzC,uCAAuC,GACvC,uCAAuC,GACvC,uCAAuC,GACvC,2CAA2C,GAC3C,2CAA2C,GAC3C,wCAAwC,GACxC,yCAAyC,GACzC,uCAAuC,GACvC,yCAAyC,GACzC,iDAAiD,GAGjD,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAIlB,MAAM,MAAM,wBAAwB,GAChC,uCAAuC,GACvC,uCAAuC,GACvC,wCAAwC,GACxC,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAMlB,eAAO,MAAM,eAAe;;;;;;;CAOlB,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;;;;CAM1B,CAAC"}
@@ -1,12 +1,16 @@
1
1
  // ─── Apple HealthKit Input Types ──────────────────────────────────────────────
2
- // Library-agnostic TypeScript interfaces representing HealthKit data shapes.
2
+ // Library-agnostic TypeScript types representing HealthKit data shapes.
3
3
  // Compatible with @kingstinct/react-native-healthkit, react-native-health,
4
4
  // expo-health, or any custom native module.
5
5
  //
6
- // These types define the CONTRACT that the host app must satisfy when passing
7
- // HealthKit data to Soma's transformer functions. They intentionally do NOT
8
- // depend on any specific React Native library.
9
- // ─── HealthKit Sleep Category Values ─────────────────────────────────────────
6
+ // These types are INFERRED from the Convex validators in ./validators.js
7
+ // edit validators.ts to change shapes, not this file. The identifier unions
8
+ // and runtime enum constants at the bottom are hand-written: they exist as
9
+ // documentation / autocomplete aids only and are not enforced at runtime.
10
+ import { hkDeviceValidator, hkSourceValidator, hkQuantitySampleValidator, hkCategorySampleValidator, hkWorkoutRouteValidator, hkWorkoutValidator, hkActivitySummaryValidator, hkCharacteristicsValidator, hkBiologicalSexValidator, hkSleepCategoryValueValidator, hkMenstrualFlowCategoryValueValidator, } from "./validators.js";
11
+ // ─── Runtime enum constants ──────────────────────────────────────────────────
12
+ // Kept as real values (not just types) so host code can compare against them
13
+ // at runtime: `if (sample.value === HKSleepCategory.AsleepREM) { ... }`
10
14
  export const HKSleepCategory = {
11
15
  InBed: 0,
12
16
  AsleepUnspecified: 1,
@@ -15,7 +19,6 @@ export const HKSleepCategory = {
15
19
  AsleepDeep: 4,
16
20
  AsleepREM: 5,
17
21
  };
18
- // ─── HealthKit Menstrual Flow Values ─────────────────────────────────────────
19
22
  export const HKMenstrualFlowCategory = {
20
23
  Unspecified: 1,
21
24
  Light: 2,
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/component/healthkit/types.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,6EAA6E;AAC7E,2EAA2E;AAC3E,4CAA4C;AAC5C,EAAE;AACF,8EAA8E;AAC9E,4EAA4E;AAC5E,+CAA+C;AA0L/C,gFAAgF;AAEhF,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,KAAK,EAAE,CAAC;IACR,iBAAiB,EAAE,CAAC;IACpB,KAAK,EAAE,CAAC;IACR,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,CAAC;IACb,SAAS,EAAE,CAAC;CACJ,CAAC;AAKX,gFAAgF;AAEhF,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,WAAW,EAAE,CAAC;IACd,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;CACC,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/component/healthkit/types.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,wEAAwE;AACxE,2EAA2E;AAC3E,4CAA4C;AAC5C,EAAE;AACF,2EAA2E;AAC3E,4EAA4E;AAC5E,2EAA2E;AAC3E,0EAA0E;AAG1E,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,yBAAyB,EACzB,yBAAyB,EACzB,uBAAuB,EACvB,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,qCAAqC,GACtC,MAAM,iBAAiB,CAAC;AA2GzB,gFAAgF;AAChF,6EAA6E;AAC7E,wEAAwE;AAExE,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,KAAK,EAAE,CAAC;IACR,iBAAiB,EAAE,CAAC;IACpB,KAAK,EAAE,CAAC;IACR,UAAU,EAAE,CAAC;IACb,UAAU,EAAE,CAAC;IACb,SAAS,EAAE,CAAC;CACJ,CAAC;AAEX,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,WAAW,EAAE,CAAC;IACd,KAAK,EAAE,CAAC;IACR,MAAM,EAAE,CAAC;IACT,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;CACC,CAAC"}