@nativesquare/soma 0.7.3 → 0.9.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/dist/client/index.d.ts +17 -55
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +63 -13
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/api.d.ts +80 -4
- package/dist/component/_generated/api.d.ts.map +1 -1
- package/dist/component/_generated/api.js.map +1 -1
- package/dist/component/_generated/component.d.ts +153 -120
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/garmin/private.d.ts +475 -0
- package/dist/component/garmin/private.d.ts.map +1 -0
- package/dist/component/garmin/private.js +1614 -0
- package/dist/component/garmin/private.js.map +1 -0
- package/dist/component/{garmin.d.ts → garmin/public.d.ts} +25 -52
- package/dist/component/garmin/public.d.ts.map +1 -0
- package/dist/component/{garmin.js → garmin/public.js} +301 -215
- package/dist/component/garmin/public.js.map +1 -0
- package/dist/component/garmin/schemas/activity.d.ts +94 -0
- package/dist/component/garmin/schemas/activity.d.ts.map +1 -0
- package/dist/component/garmin/schemas/activity.js +27 -0
- package/dist/component/garmin/schemas/activity.js.map +1 -0
- package/dist/component/garmin/schemas/activityDetails.d.ts +146 -0
- package/dist/component/garmin/schemas/activityDetails.d.ts.map +1 -0
- package/dist/component/garmin/schemas/activityDetails.js +27 -0
- package/dist/component/garmin/schemas/activityDetails.js.map +1 -0
- package/dist/component/garmin/schemas/bloodPressure.d.ts +38 -0
- package/dist/component/garmin/schemas/bloodPressure.d.ts.map +1 -0
- package/dist/component/garmin/schemas/bloodPressure.js +27 -0
- package/dist/component/garmin/schemas/bloodPressure.js.map +1 -0
- package/dist/component/garmin/schemas/bodyCompositions.d.ts +42 -0
- package/dist/component/garmin/schemas/bodyCompositions.d.ts.map +1 -0
- package/dist/component/garmin/schemas/bodyCompositions.js +27 -0
- package/dist/component/garmin/schemas/bodyCompositions.js.map +1 -0
- package/dist/component/garmin/schemas/dailies.d.ts +98 -0
- package/dist/component/garmin/schemas/dailies.d.ts.map +1 -0
- package/dist/component/garmin/schemas/dailies.js +27 -0
- package/dist/component/garmin/schemas/dailies.js.map +1 -0
- package/dist/component/garmin/schemas/epochs.d.ts +54 -0
- package/dist/component/garmin/schemas/epochs.d.ts.map +1 -0
- package/dist/component/garmin/schemas/epochs.js +27 -0
- package/dist/component/garmin/schemas/epochs.js.map +1 -0
- package/dist/component/garmin/schemas/healthSnapshot.d.ts +48 -0
- package/dist/component/garmin/schemas/healthSnapshot.d.ts.map +1 -0
- package/dist/component/garmin/schemas/healthSnapshot.js +27 -0
- package/dist/component/garmin/schemas/healthSnapshot.js.map +1 -0
- package/dist/component/garmin/schemas/hrvSummary.d.ts +40 -0
- package/dist/component/garmin/schemas/hrvSummary.d.ts.map +1 -0
- package/dist/component/garmin/schemas/hrvSummary.js +27 -0
- package/dist/component/garmin/schemas/hrvSummary.js.map +1 -0
- package/dist/component/garmin/schemas/manuallyUpdatedActivities.d.ts +94 -0
- package/dist/component/garmin/schemas/manuallyUpdatedActivities.d.ts.map +1 -0
- package/dist/component/garmin/schemas/manuallyUpdatedActivities.js +27 -0
- package/dist/component/garmin/schemas/manuallyUpdatedActivities.js.map +1 -0
- package/dist/component/garmin/schemas/menstrualCycleTracking.d.ts +100 -0
- package/dist/component/garmin/schemas/menstrualCycleTracking.d.ts.map +1 -0
- package/dist/component/garmin/schemas/menstrualCycleTracking.js +28 -0
- package/dist/component/garmin/schemas/menstrualCycleTracking.js.map +1 -0
- package/dist/component/garmin/schemas/moveIQ.d.ts +40 -0
- package/dist/component/garmin/schemas/moveIQ.d.ts.map +1 -0
- package/dist/component/garmin/schemas/moveIQ.js +27 -0
- package/dist/component/garmin/schemas/moveIQ.js.map +1 -0
- package/dist/component/garmin/schemas/pulseOx.d.ts +38 -0
- package/dist/component/garmin/schemas/pulseOx.d.ts.map +1 -0
- package/dist/component/garmin/schemas/pulseOx.js +28 -0
- package/dist/component/garmin/schemas/pulseOx.js.map +1 -0
- package/dist/component/garmin/schemas/respiration.d.ts +34 -0
- package/dist/component/garmin/schemas/respiration.d.ts.map +1 -0
- package/dist/component/garmin/schemas/respiration.js +28 -0
- package/dist/component/garmin/schemas/respiration.js.map +1 -0
- package/dist/component/garmin/schemas/skinTemperature.d.ts +36 -0
- package/dist/component/garmin/schemas/skinTemperature.d.ts.map +1 -0
- package/dist/component/garmin/schemas/skinTemperature.js +28 -0
- package/dist/component/garmin/schemas/skinTemperature.js.map +1 -0
- package/dist/component/garmin/schemas/sleeps.d.ts +88 -0
- package/dist/component/garmin/schemas/sleeps.d.ts.map +1 -0
- package/dist/component/garmin/schemas/sleeps.js +27 -0
- package/dist/component/garmin/schemas/sleeps.js.map +1 -0
- package/dist/component/garmin/schemas/stress.d.ts +70 -0
- package/dist/component/garmin/schemas/stress.d.ts.map +1 -0
- package/dist/component/garmin/schemas/stress.js +28 -0
- package/dist/component/garmin/schemas/stress.js.map +1 -0
- package/dist/component/garmin/schemas/userMetrics.d.ts +36 -0
- package/dist/component/garmin/schemas/userMetrics.d.ts.map +1 -0
- package/dist/component/garmin/schemas/userMetrics.js +28 -0
- package/dist/component/garmin/schemas/userMetrics.js.map +1 -0
- package/dist/component/garmin/transform/activity.d.ts +13 -0
- package/dist/component/garmin/transform/activity.d.ts.map +1 -0
- package/dist/component/garmin/transform/activity.js +111 -0
- package/dist/component/garmin/transform/activity.js.map +1 -0
- package/dist/component/garmin/transform/activityDetails.d.ts +13 -0
- package/dist/component/garmin/transform/activityDetails.d.ts.map +1 -0
- package/dist/component/garmin/transform/activityDetails.js +173 -0
- package/dist/component/garmin/transform/activityDetails.js.map +1 -0
- package/dist/component/garmin/transform/bloodPressure.d.ts +12 -0
- package/dist/component/garmin/transform/bloodPressure.d.ts.map +1 -0
- package/dist/component/garmin/transform/bloodPressure.js +33 -0
- package/dist/component/garmin/transform/bloodPressure.js.map +1 -0
- package/dist/component/garmin/transform/bodyCompositions.d.ts +12 -0
- package/dist/component/garmin/transform/bodyCompositions.d.ts.map +1 -0
- package/dist/component/garmin/transform/bodyCompositions.js +42 -0
- package/dist/component/garmin/transform/bodyCompositions.js.map +1 -0
- package/dist/component/garmin/transform/dailies.d.ts +12 -0
- package/dist/component/garmin/transform/dailies.d.ts.map +1 -0
- package/dist/component/garmin/transform/dailies.js +132 -0
- package/dist/component/garmin/transform/dailies.js.map +1 -0
- package/dist/component/garmin/transform/epochs.d.ts +13 -0
- package/dist/component/garmin/transform/epochs.d.ts.map +1 -0
- package/dist/component/garmin/transform/epochs.js +76 -0
- package/dist/component/garmin/transform/epochs.js.map +1 -0
- package/dist/component/garmin/transform/healthSnapshot.d.ts +12 -0
- package/dist/component/garmin/transform/healthSnapshot.d.ts.map +1 -0
- package/dist/component/garmin/transform/healthSnapshot.js +111 -0
- package/dist/component/garmin/transform/healthSnapshot.js.map +1 -0
- package/dist/component/garmin/transform/hrvSummary.d.ts +12 -0
- package/dist/component/garmin/transform/hrvSummary.d.ts.map +1 -0
- package/dist/component/garmin/transform/hrvSummary.js +45 -0
- package/dist/component/garmin/transform/hrvSummary.js.map +1 -0
- package/dist/component/garmin/transform/manuallyUpdatedActivities.d.ts +11 -0
- package/dist/component/garmin/transform/manuallyUpdatedActivities.d.ts.map +1 -0
- package/dist/component/garmin/transform/manuallyUpdatedActivities.js +20 -0
- package/dist/component/garmin/transform/manuallyUpdatedActivities.js.map +1 -0
- package/dist/component/garmin/transform/menstrualCycleTracking.d.ts +10 -0
- package/dist/component/garmin/transform/menstrualCycleTracking.d.ts.map +1 -0
- package/dist/component/garmin/transform/menstrualCycleTracking.js +43 -0
- package/dist/component/garmin/transform/menstrualCycleTracking.js.map +1 -0
- package/dist/component/garmin/transform/moveIQ.d.ts +17 -0
- package/dist/component/garmin/transform/moveIQ.d.ts.map +1 -0
- package/dist/component/garmin/transform/moveIQ.js +41 -0
- package/dist/component/garmin/transform/moveIQ.js.map +1 -0
- package/dist/component/garmin/transform/pulseOx.d.ts +12 -0
- package/dist/component/garmin/transform/pulseOx.d.ts.map +1 -0
- package/dist/component/garmin/transform/pulseOx.js +46 -0
- package/dist/component/garmin/transform/pulseOx.js.map +1 -0
- package/dist/component/garmin/transform/respiration.d.ts +12 -0
- package/dist/component/garmin/transform/respiration.d.ts.map +1 -0
- package/dist/component/garmin/transform/respiration.js +54 -0
- package/dist/component/garmin/transform/respiration.js.map +1 -0
- package/dist/component/garmin/transform/skinTemperature.d.ts +12 -0
- package/dist/component/garmin/transform/skinTemperature.d.ts.map +1 -0
- package/dist/component/garmin/transform/skinTemperature.js +38 -0
- package/dist/component/garmin/transform/skinTemperature.js.map +1 -0
- package/dist/component/garmin/transform/sleeps.d.ts +55 -0
- package/dist/component/garmin/transform/sleeps.d.ts.map +1 -0
- package/dist/component/garmin/transform/sleeps.js +120 -0
- package/dist/component/garmin/transform/sleeps.js.map +1 -0
- package/dist/component/garmin/transform/stress.d.ts +12 -0
- package/dist/component/garmin/transform/stress.d.ts.map +1 -0
- package/dist/component/garmin/transform/stress.js +56 -0
- package/dist/component/garmin/transform/stress.js.map +1 -0
- package/dist/component/garmin/transform/userMetrics.d.ts +12 -0
- package/dist/component/garmin/transform/userMetrics.d.ts.map +1 -0
- package/dist/component/garmin/transform/userMetrics.js +48 -0
- package/dist/component/garmin/transform/userMetrics.js.map +1 -0
- package/dist/component/garmin/types/garmin.d.ts +21 -0
- package/dist/component/garmin/types/garmin.d.ts.map +1 -0
- package/dist/component/garmin/types/garmin.js +6 -0
- package/dist/component/garmin/types/garmin.js.map +1 -0
- package/dist/component/garmin/types/zod/zod.gen.d.ts +1319 -0
- package/dist/component/garmin/types/zod/zod.gen.d.ts.map +1 -0
- package/dist/component/garmin/types/zod/zod.gen.js +784 -0
- package/dist/component/garmin/types/zod/zod.gen.js.map +1 -0
- package/dist/component/garmin/webhooks.d.ts +141 -0
- package/dist/component/garmin/webhooks.d.ts.map +1 -0
- package/dist/component/garmin/webhooks.js +766 -0
- package/dist/component/garmin/webhooks.js.map +1 -0
- package/dist/component/private.d.ts +20 -2
- package/dist/component/private.d.ts.map +1 -1
- package/dist/component/private.js +18 -0
- package/dist/component/private.js.map +1 -1
- package/dist/component/public.d.ts +433 -387
- package/dist/component/public.d.ts.map +1 -1
- package/dist/component/public.js +12 -2
- package/dist/component/public.js.map +1 -1
- package/dist/component/schema.d.ts +217 -162
- package/dist/component/schema.d.ts.map +1 -1
- package/dist/component/schema.js +2 -1
- package/dist/component/schema.js.map +1 -1
- package/dist/component/strava/private.d.ts +30 -0
- package/dist/component/strava/private.d.ts.map +1 -0
- package/dist/component/strava/private.js +71 -0
- package/dist/component/strava/private.js.map +1 -0
- package/dist/component/{strava.d.ts → strava/public.d.ts} +3 -31
- package/dist/component/strava/public.d.ts.map +1 -0
- package/dist/component/{strava.js → strava/public.js} +22 -101
- package/dist/component/strava/public.js.map +1 -0
- package/dist/component/validators/activity.d.ts +6 -0
- package/dist/component/validators/activity.d.ts.map +1 -1
- package/dist/component/validators/activity.js.map +1 -1
- package/dist/component/validators/body.d.ts +20 -14
- package/dist/component/validators/body.d.ts.map +1 -1
- package/dist/component/validators/body.js.map +1 -1
- package/dist/component/validators/connection.d.ts +1 -0
- package/dist/component/validators/connection.d.ts.map +1 -1
- package/dist/component/validators/connection.js +2 -0
- package/dist/component/validators/connection.js.map +1 -1
- package/dist/component/validators/daily.d.ts +46 -5
- package/dist/component/validators/daily.d.ts.map +1 -1
- package/dist/component/validators/daily.js +10 -1
- package/dist/component/validators/daily.js.map +1 -1
- package/dist/component/validators/enums.d.ts +2 -2
- package/dist/component/validators/menstruation.d.ts +5 -0
- package/dist/component/validators/menstruation.d.ts.map +1 -1
- package/dist/component/validators/menstruation.js.map +1 -1
- package/dist/component/validators/plannedWorkout.d.ts +5 -1
- package/dist/component/validators/plannedWorkout.d.ts.map +1 -1
- package/dist/component/validators/plannedWorkout.js +4 -0
- package/dist/component/validators/plannedWorkout.js.map +1 -1
- package/dist/component/validators/sleep.d.ts +8 -8
- package/dist/garmin/bloodPressure.d.ts +28 -0
- package/dist/garmin/bloodPressure.d.ts.map +1 -0
- package/dist/garmin/bloodPressure.js +34 -0
- package/dist/garmin/bloodPressure.js.map +1 -0
- package/dist/garmin/body.js +1 -1
- package/dist/garmin/body.js.map +1 -1
- package/dist/garmin/client.d.ts +117 -17
- package/dist/garmin/client.d.ts.map +1 -1
- package/dist/garmin/client.js +337 -43
- package/dist/garmin/client.js.map +1 -1
- package/dist/garmin/daily.d.ts.map +1 -1
- package/dist/garmin/daily.js +3 -3
- package/dist/garmin/daily.js.map +1 -1
- package/dist/garmin/hrv.d.ts +30 -0
- package/dist/garmin/hrv.d.ts.map +1 -0
- package/dist/garmin/hrv.js +45 -0
- package/dist/garmin/hrv.js.map +1 -0
- package/dist/garmin/index.d.ts +16 -4
- package/dist/garmin/index.d.ts.map +1 -1
- package/dist/garmin/index.js +8 -2
- package/dist/garmin/index.js.map +1 -1
- package/dist/garmin/maps/activity-type.d.ts +1 -2
- package/dist/garmin/maps/activity-type.d.ts.map +1 -1
- package/dist/garmin/maps/activity-type.js +1 -0
- package/dist/garmin/maps/activity-type.js.map +1 -1
- package/dist/garmin/menstruation.d.ts +6 -4
- package/dist/garmin/menstruation.d.ts.map +1 -1
- package/dist/garmin/menstruation.js +12 -8
- package/dist/garmin/menstruation.js.map +1 -1
- package/dist/garmin/pulseOx.d.ts +24 -0
- package/dist/garmin/pulseOx.d.ts.map +1 -0
- package/dist/garmin/pulseOx.js +33 -0
- package/dist/garmin/pulseOx.js.map +1 -0
- package/dist/garmin/respiration.d.ts +29 -0
- package/dist/garmin/respiration.d.ts.map +1 -0
- package/dist/garmin/respiration.js +42 -0
- package/dist/garmin/respiration.js.map +1 -0
- package/dist/garmin/skinTemp.d.ts +27 -0
- package/dist/garmin/skinTemp.d.ts.map +1 -0
- package/dist/garmin/skinTemp.js +35 -0
- package/dist/garmin/skinTemp.js.map +1 -0
- package/dist/garmin/sleep.d.ts +4 -4
- package/dist/garmin/sleep.d.ts.map +1 -1
- package/dist/garmin/sleep.js +15 -9
- package/dist/garmin/sleep.js.map +1 -1
- package/dist/garmin/stressDetails.d.ts +30 -0
- package/dist/garmin/stressDetails.d.ts.map +1 -0
- package/dist/garmin/stressDetails.js +49 -0
- package/dist/garmin/stressDetails.js.map +1 -0
- package/dist/garmin/sync.d.ts +14 -0
- package/dist/garmin/sync.d.ts.map +1 -1
- package/dist/garmin/sync.js +290 -7
- package/dist/garmin/sync.js.map +1 -1
- package/dist/garmin/types.d.ts +77 -186
- package/dist/garmin/types.d.ts.map +1 -1
- package/dist/garmin/types.js +4 -2
- package/dist/garmin/types.js.map +1 -1
- package/dist/garmin/userMetrics.d.ts +23 -0
- package/dist/garmin/userMetrics.d.ts.map +1 -0
- package/dist/garmin/userMetrics.js +41 -0
- package/dist/garmin/userMetrics.js.map +1 -0
- package/dist/validators.d.ts +138 -56
- package/dist/validators.d.ts.map +1 -1
- package/dist/validators.js +2 -2
- package/dist/validators.js.map +1 -1
- package/package.json +130 -124
- package/src/client/index.ts +86 -18
- package/src/component/_generated/api.ts +96 -4
- package/src/component/_generated/component.ts +271 -144
- package/src/{garmin → component/garmin}/auth.ts +8 -1
- package/src/component/garmin/client.ts +39 -0
- package/src/component/garmin/private.ts +1798 -0
- package/src/component/garmin/public.ts +938 -0
- package/src/component/garmin/schemas/activity.ts +40 -0
- package/src/component/garmin/schemas/activityDetails.ts +45 -0
- package/src/component/garmin/schemas/bloodPressure.ts +38 -0
- package/src/component/garmin/schemas/bodyCompositions.ts +38 -0
- package/src/component/garmin/schemas/dailies.ts +38 -0
- package/src/component/garmin/schemas/epochs.ts +38 -0
- package/src/component/garmin/schemas/healthSnapshot.ts +38 -0
- package/src/component/garmin/schemas/hrvSummary.ts +38 -0
- package/src/component/garmin/schemas/manuallyUpdatedActivities.ts +49 -0
- package/src/component/garmin/schemas/menstrualCycleTracking.ts +39 -0
- package/src/component/garmin/schemas/moveIQ.ts +38 -0
- package/src/component/garmin/schemas/pulseOx.ts +39 -0
- package/src/component/garmin/schemas/respiration.ts +39 -0
- package/src/component/garmin/schemas/skinTemperature.ts +39 -0
- package/src/component/garmin/schemas/sleeps.ts +38 -0
- package/src/component/garmin/schemas/stress.ts +43 -0
- package/src/component/garmin/schemas/userMetrics.ts +39 -0
- package/src/component/garmin/transform/activity.ts +143 -0
- package/src/component/garmin/transform/activityDetails.ts +236 -0
- package/src/component/garmin/transform/bloodPressure.ts +39 -0
- package/src/component/garmin/transform/bodyCompositions.ts +51 -0
- package/src/component/garmin/transform/dailies.ts +179 -0
- package/src/component/garmin/transform/epochs.ts +94 -0
- package/src/component/garmin/transform/healthSnapshot.ts +152 -0
- package/src/component/garmin/transform/hrvSummary.ts +56 -0
- package/src/component/garmin/transform/manuallyUpdatedActivities.ts +27 -0
- package/src/{garmin/maps/activity-type.ts → component/garmin/transform/maps/activityType.ts} +116 -116
- package/src/{garmin/maps/sleep-level.ts → component/garmin/transform/maps/sleepLevel.ts} +22 -22
- package/src/component/garmin/transform/menstrualCycleTracking.ts +48 -0
- package/src/component/garmin/transform/moveIQ.ts +48 -0
- package/src/{garmin → component/garmin/transform}/plannedWorkout.ts +328 -333
- package/src/component/garmin/transform/pulseOx.ts +64 -0
- package/src/component/garmin/transform/respiration.ts +73 -0
- package/src/component/garmin/transform/skinTemperature.ts +44 -0
- package/src/component/garmin/transform/sleeps.ts +159 -0
- package/src/component/garmin/transform/stress.ts +78 -0
- package/src/component/garmin/transform/userMetrics.ts +56 -0
- package/src/component/garmin/types/specs/training-api-workouts.json +699 -0
- package/src/component/garmin/types/specs/wellness-api.json +1 -0
- package/src/component/garmin/types/trainingApiWorkouts/client/client.gen.ts +290 -0
- package/src/component/garmin/types/trainingApiWorkouts/client/index.ts +25 -0
- package/src/component/garmin/types/trainingApiWorkouts/client/types.gen.ts +214 -0
- package/src/component/garmin/types/trainingApiWorkouts/client/utils.gen.ts +316 -0
- package/src/component/garmin/types/trainingApiWorkouts/client.gen.ts +16 -0
- package/src/component/garmin/types/trainingApiWorkouts/core/auth.gen.ts +41 -0
- package/src/component/garmin/types/trainingApiWorkouts/core/bodySerializer.gen.ts +82 -0
- package/src/component/garmin/types/trainingApiWorkouts/core/params.gen.ts +169 -0
- package/src/component/garmin/types/trainingApiWorkouts/core/pathSerializer.gen.ts +171 -0
- package/src/component/garmin/types/trainingApiWorkouts/core/queryKeySerializer.gen.ts +117 -0
- package/src/component/garmin/types/trainingApiWorkouts/core/serverSentEvents.gen.ts +243 -0
- package/src/component/garmin/types/trainingApiWorkouts/core/types.gen.ts +104 -0
- package/src/component/garmin/types/trainingApiWorkouts/core/utils.gen.ts +140 -0
- package/src/component/garmin/types/trainingApiWorkouts/index.ts +4 -0
- package/src/component/garmin/types/trainingApiWorkouts/sdk.gen.ts +126 -0
- package/src/component/garmin/types/trainingApiWorkouts/types.gen.ts +387 -0
- package/src/component/garmin/types/trainingApiWorkouts/zod.gen.ts +423 -0
- package/src/component/garmin/types/wellnessApi/client/client.gen.ts +290 -0
- package/src/component/garmin/types/wellnessApi/client/index.ts +25 -0
- package/src/component/garmin/types/wellnessApi/client/types.gen.ts +214 -0
- package/src/component/garmin/types/wellnessApi/client/utils.gen.ts +316 -0
- package/src/component/garmin/types/wellnessApi/client.gen.ts +16 -0
- package/src/component/garmin/types/wellnessApi/core/auth.gen.ts +41 -0
- package/src/component/garmin/types/wellnessApi/core/bodySerializer.gen.ts +82 -0
- package/src/component/garmin/types/wellnessApi/core/params.gen.ts +169 -0
- package/src/component/garmin/types/wellnessApi/core/pathSerializer.gen.ts +171 -0
- package/src/component/garmin/types/wellnessApi/core/queryKeySerializer.gen.ts +117 -0
- package/src/component/garmin/types/wellnessApi/core/serverSentEvents.gen.ts +243 -0
- package/src/component/garmin/types/wellnessApi/core/types.gen.ts +104 -0
- package/src/component/garmin/types/wellnessApi/core/utils.gen.ts +140 -0
- package/src/component/garmin/types/wellnessApi/index.ts +4 -0
- package/src/component/garmin/types/wellnessApi/sdk.gen.ts +207 -0
- package/src/component/garmin/types/wellnessApi/types.gen.ts +2942 -0
- package/src/component/garmin/types/wellnessApi/zod.gen.ts +878 -0
- package/src/component/garmin/utils.ts +25 -0
- package/src/component/garmin/webhooks.ts +852 -0
- package/src/component/private.ts +21 -0
- package/src/component/public.ts +11 -2
- package/src/component/schema.ts +2 -1
- package/src/component/strava/private.ts +89 -0
- package/src/component/{strava.ts → strava/public.ts} +341 -404
- package/src/component/validators/activity.ts +5 -0
- package/src/component/validators/body.ts +5 -0
- package/src/component/validators/connection.ts +2 -0
- package/src/component/validators/daily.ts +20 -0
- package/src/component/validators/menstruation.ts +5 -1
- package/src/component/validators/plannedWorkout.ts +9 -0
- package/src/validators.ts +12 -2
- package/dist/component/garmin.d.ts.map +0 -1
- package/dist/component/garmin.js.map +0 -1
- package/dist/component/strava.d.ts.map +0 -1
- package/dist/component/strava.js.map +0 -1
- package/dist/garmin/activity.d.ts +0 -101
- package/dist/garmin/activity.d.ts.map +0 -1
- package/dist/garmin/activity.js +0 -207
- package/dist/garmin/activity.js.map +0 -1
- package/src/component/garmin.ts +0 -850
- package/src/garmin/activity.test.ts +0 -178
- package/src/garmin/activity.ts +0 -272
- package/src/garmin/auth.test.ts +0 -103
- package/src/garmin/body.ts +0 -59
- package/src/garmin/client.ts +0 -407
- package/src/garmin/daily.ts +0 -211
- package/src/garmin/index.ts +0 -75
- package/src/garmin/maps/activity-type.test.ts +0 -78
- package/src/garmin/menstruation.ts +0 -42
- package/src/garmin/sleep.test.ts +0 -110
- package/src/garmin/sleep.ts +0 -170
- package/src/garmin/sync.ts +0 -223
- package/src/garmin/types.ts +0 -480
package/src/{garmin/maps/activity-type.ts → component/garmin/transform/maps/activityType.ts}
RENAMED
|
@@ -1,116 +1,116 @@
|
|
|
1
|
-
// ─── Garmin ActivityType → Terra ActivityType ─────────────────────────────────
|
|
2
|
-
// Maps Garmin activity type strings to Terra's ActivityType numeric enum
|
|
3
|
-
// used by the Soma schema.
|
|
4
|
-
//
|
|
5
|
-
// Garmin values: Garmin Health API activity type strings
|
|
6
|
-
// Terra values: https://docs.tryterra.co/reference/health-and-fitness-api/data-models#activitytype
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
const activityTypeMap: Record<string, number> = {
|
|
11
|
-
// ── Running ─────────────────────────────────────────────────────────────
|
|
12
|
-
// Terra Running = 8
|
|
13
|
-
RUNNING: 8,
|
|
14
|
-
INDOOR_RUNNING: 8,
|
|
15
|
-
TRAIL_RUNNING: 8,
|
|
16
|
-
TREADMILL_RUNNING: 8,
|
|
17
|
-
|
|
18
|
-
// ── Cycling ─────────────────────────────────────────────────────────────
|
|
19
|
-
// Terra Biking = 1
|
|
20
|
-
CYCLING: 1,
|
|
21
|
-
INDOOR_CYCLING: 1,
|
|
22
|
-
MOUNTAIN_BIKING: 1,
|
|
23
|
-
GRAVEL_CYCLING: 1,
|
|
24
|
-
VIRTUAL_RIDE: 1,
|
|
25
|
-
|
|
26
|
-
// ── Walking ─────────────────────────────────────────────────────────────
|
|
27
|
-
// Terra Walking = 7
|
|
28
|
-
WALKING: 7,
|
|
29
|
-
|
|
30
|
-
// ── Hiking ──────────────────────────────────────────────────────────────
|
|
31
|
-
// Terra Hiking = 35
|
|
32
|
-
HIKING: 35,
|
|
33
|
-
|
|
34
|
-
// ── Swimming ────────────────────────────────────────────────────────────
|
|
35
|
-
// Terra Swimming = 82
|
|
36
|
-
SWIMMING: 82,
|
|
37
|
-
OPEN_WATER_SWIMMING: 82,
|
|
38
|
-
LAP_SWIMMING: 82,
|
|
39
|
-
POOL_SWIMMING: 82,
|
|
40
|
-
|
|
41
|
-
// ── Gym / Fitness ───────────────────────────────────────────────────────
|
|
42
|
-
STRENGTH_TRAINING: 80, // Terra Strength Training
|
|
43
|
-
YOGA: 100, // Terra Yoga
|
|
44
|
-
PILATES: 49, // Terra Pilates
|
|
45
|
-
CARDIO: 108, // Terra Other
|
|
46
|
-
ELLIPTICAL: 25, // Terra Elliptical
|
|
47
|
-
STAIR_CLIMBING: 78, // Terra Stair Climbing Machine
|
|
48
|
-
CROSSFIT: 113, // Terra Crossfit
|
|
49
|
-
HIIT: 114, // Terra HIIT
|
|
50
|
-
FITNESS_EQUIPMENT: 108, // Terra Other
|
|
51
|
-
BREATHWORK: 108, // Terra Other
|
|
52
|
-
|
|
53
|
-
// ── Snow Sports ─────────────────────────────────────────────────────────
|
|
54
|
-
CROSS_COUNTRY_SKIING: 67, // Terra Cross Country Skiing
|
|
55
|
-
ALPINE_SKIING: 66, // Terra Alpine Skiing
|
|
56
|
-
SNOWBOARDING: 73, // Terra Snowboarding
|
|
57
|
-
SNOWSHOEING: 74, // Terra Snowshoeing
|
|
58
|
-
|
|
59
|
-
// ── Water Sports ────────────────────────────────────────────────────────
|
|
60
|
-
ROWING: 53, // Terra Rowing
|
|
61
|
-
INDOOR_ROWING: 53, // Terra Rowing
|
|
62
|
-
KAYAKING: 40, // Terra Kayaking
|
|
63
|
-
CANOEING: 22, // Terra Canoeing
|
|
64
|
-
SAILING: 59, // Terra Sailing
|
|
65
|
-
SURFING: 81, // Terra Surfing
|
|
66
|
-
KITESURFING: 41, // Terra Kitesurfing
|
|
67
|
-
WINDSURFING: 99, // Terra Windsurfing
|
|
68
|
-
PADDLEBOARDING: 129, // Terra Paddling
|
|
69
|
-
|
|
70
|
-
// ── Skating ─────────────────────────────────────────────────────────────
|
|
71
|
-
SKATING: 62, // Terra Skating
|
|
72
|
-
INLINE_SKATING: 62, // Terra Skating
|
|
73
|
-
|
|
74
|
-
// ── Racket Sports ───────────────────────────────────────────────────────
|
|
75
|
-
TENNIS: 87, // Terra Tennis
|
|
76
|
-
TABLE_TENNIS: 85, // Terra Table Tennis
|
|
77
|
-
BADMINTON: 10, // Terra Badminton
|
|
78
|
-
RACQUETBALL: 51, // Terra Racquetball
|
|
79
|
-
SQUASH: 76, // Terra Squash
|
|
80
|
-
|
|
81
|
-
// ── Climbing ────────────────────────────────────────────────────────────
|
|
82
|
-
ROCK_CLIMBING: 52, // Terra Rock Climbing
|
|
83
|
-
BOULDERING: 52, // Terra Rock Climbing
|
|
84
|
-
|
|
85
|
-
// ── Team Sports ─────────────────────────────────────────────────────────
|
|
86
|
-
SOCCER: 29, // Terra English Football
|
|
87
|
-
BASKETBALL: 11, // Terra Basketball
|
|
88
|
-
VOLLEYBALL: 94, // Terra Volleyball
|
|
89
|
-
CRICKET: 23, // Terra Cricket
|
|
90
|
-
RUGBY: 57, // Terra Rugby
|
|
91
|
-
|
|
92
|
-
// ── Combat Sports ───────────────────────────────────────────────────────
|
|
93
|
-
BOXING: 16, // Terra Boxing
|
|
94
|
-
MARTIAL_ARTS: 44, // Terra Martial Arts
|
|
95
|
-
|
|
96
|
-
// ── Golf ────────────────────────────────────────────────────────────────
|
|
97
|
-
GOLF: 32, // Terra Golf
|
|
98
|
-
|
|
99
|
-
// ── Accessibility ───────────────────────────────────────────────────────
|
|
100
|
-
HANDCYCLING: 14, // Terra Handbiking
|
|
101
|
-
WHEELCHAIR_PUSH_WALKING: 98, // Terra Wheelchair
|
|
102
|
-
WHEELCHAIR_PUSH_RUNNING: 98, // Terra Wheelchair
|
|
103
|
-
|
|
104
|
-
// ── Other ───────────────────────────────────────────────────────────────
|
|
105
|
-
OTHER: 108, // Terra Other
|
|
106
|
-
MULTI_SPORT: 108, // Terra Other
|
|
107
|
-
FLOOR_CLIMBING: 78, // Terra Stair Climbing Machine
|
|
108
|
-
};
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* Map a Garmin activity type string to the Terra ActivityType enum.
|
|
112
|
-
* Returns Terra "Other" (108) for unknown types.
|
|
113
|
-
*/
|
|
114
|
-
export function mapActivityType(activityType:
|
|
115
|
-
return activityTypeMap[activityType] ?? 108;
|
|
116
|
-
}
|
|
1
|
+
// ─── Garmin ActivityType → Terra ActivityType ─────────────────────────────────
|
|
2
|
+
// Maps Garmin activity type strings to Terra's ActivityType numeric enum
|
|
3
|
+
// used by the Soma schema.
|
|
4
|
+
//
|
|
5
|
+
// Garmin values: Garmin Health API activity type strings
|
|
6
|
+
// Terra values: https://docs.tryterra.co/reference/health-and-fitness-api/data-models#activitytype
|
|
7
|
+
|
|
8
|
+
// Garmin activityType is a free-form string in the spec
|
|
9
|
+
|
|
10
|
+
const activityTypeMap: Record<string, number> = {
|
|
11
|
+
// ── Running ─────────────────────────────────────────────────────────────
|
|
12
|
+
// Terra Running = 8
|
|
13
|
+
RUNNING: 8,
|
|
14
|
+
INDOOR_RUNNING: 8,
|
|
15
|
+
TRAIL_RUNNING: 8,
|
|
16
|
+
TREADMILL_RUNNING: 8,
|
|
17
|
+
|
|
18
|
+
// ── Cycling ─────────────────────────────────────────────────────────────
|
|
19
|
+
// Terra Biking = 1
|
|
20
|
+
CYCLING: 1,
|
|
21
|
+
INDOOR_CYCLING: 1,
|
|
22
|
+
MOUNTAIN_BIKING: 1,
|
|
23
|
+
GRAVEL_CYCLING: 1,
|
|
24
|
+
VIRTUAL_RIDE: 1,
|
|
25
|
+
|
|
26
|
+
// ── Walking ─────────────────────────────────────────────────────────────
|
|
27
|
+
// Terra Walking = 7
|
|
28
|
+
WALKING: 7,
|
|
29
|
+
|
|
30
|
+
// ── Hiking ──────────────────────────────────────────────────────────────
|
|
31
|
+
// Terra Hiking = 35
|
|
32
|
+
HIKING: 35,
|
|
33
|
+
|
|
34
|
+
// ── Swimming ────────────────────────────────────────────────────────────
|
|
35
|
+
// Terra Swimming = 82
|
|
36
|
+
SWIMMING: 82,
|
|
37
|
+
OPEN_WATER_SWIMMING: 82,
|
|
38
|
+
LAP_SWIMMING: 82,
|
|
39
|
+
POOL_SWIMMING: 82,
|
|
40
|
+
|
|
41
|
+
// ── Gym / Fitness ───────────────────────────────────────────────────────
|
|
42
|
+
STRENGTH_TRAINING: 80, // Terra Strength Training
|
|
43
|
+
YOGA: 100, // Terra Yoga
|
|
44
|
+
PILATES: 49, // Terra Pilates
|
|
45
|
+
CARDIO: 108, // Terra Other
|
|
46
|
+
ELLIPTICAL: 25, // Terra Elliptical
|
|
47
|
+
STAIR_CLIMBING: 78, // Terra Stair Climbing Machine
|
|
48
|
+
CROSSFIT: 113, // Terra Crossfit
|
|
49
|
+
HIIT: 114, // Terra HIIT
|
|
50
|
+
FITNESS_EQUIPMENT: 108, // Terra Other
|
|
51
|
+
BREATHWORK: 108, // Terra Other
|
|
52
|
+
|
|
53
|
+
// ── Snow Sports ─────────────────────────────────────────────────────────
|
|
54
|
+
CROSS_COUNTRY_SKIING: 67, // Terra Cross Country Skiing
|
|
55
|
+
ALPINE_SKIING: 66, // Terra Alpine Skiing
|
|
56
|
+
SNOWBOARDING: 73, // Terra Snowboarding
|
|
57
|
+
SNOWSHOEING: 74, // Terra Snowshoeing
|
|
58
|
+
|
|
59
|
+
// ── Water Sports ────────────────────────────────────────────────────────
|
|
60
|
+
ROWING: 53, // Terra Rowing
|
|
61
|
+
INDOOR_ROWING: 53, // Terra Rowing
|
|
62
|
+
KAYAKING: 40, // Terra Kayaking
|
|
63
|
+
CANOEING: 22, // Terra Canoeing
|
|
64
|
+
SAILING: 59, // Terra Sailing
|
|
65
|
+
SURFING: 81, // Terra Surfing
|
|
66
|
+
KITESURFING: 41, // Terra Kitesurfing
|
|
67
|
+
WINDSURFING: 99, // Terra Windsurfing
|
|
68
|
+
PADDLEBOARDING: 129, // Terra Paddling
|
|
69
|
+
|
|
70
|
+
// ── Skating ─────────────────────────────────────────────────────────────
|
|
71
|
+
SKATING: 62, // Terra Skating
|
|
72
|
+
INLINE_SKATING: 62, // Terra Skating
|
|
73
|
+
|
|
74
|
+
// ── Racket Sports ───────────────────────────────────────────────────────
|
|
75
|
+
TENNIS: 87, // Terra Tennis
|
|
76
|
+
TABLE_TENNIS: 85, // Terra Table Tennis
|
|
77
|
+
BADMINTON: 10, // Terra Badminton
|
|
78
|
+
RACQUETBALL: 51, // Terra Racquetball
|
|
79
|
+
SQUASH: 76, // Terra Squash
|
|
80
|
+
|
|
81
|
+
// ── Climbing ────────────────────────────────────────────────────────────
|
|
82
|
+
ROCK_CLIMBING: 52, // Terra Rock Climbing
|
|
83
|
+
BOULDERING: 52, // Terra Rock Climbing
|
|
84
|
+
|
|
85
|
+
// ── Team Sports ─────────────────────────────────────────────────────────
|
|
86
|
+
SOCCER: 29, // Terra English Football
|
|
87
|
+
BASKETBALL: 11, // Terra Basketball
|
|
88
|
+
VOLLEYBALL: 94, // Terra Volleyball
|
|
89
|
+
CRICKET: 23, // Terra Cricket
|
|
90
|
+
RUGBY: 57, // Terra Rugby
|
|
91
|
+
|
|
92
|
+
// ── Combat Sports ───────────────────────────────────────────────────────
|
|
93
|
+
BOXING: 16, // Terra Boxing
|
|
94
|
+
MARTIAL_ARTS: 44, // Terra Martial Arts
|
|
95
|
+
|
|
96
|
+
// ── Golf ────────────────────────────────────────────────────────────────
|
|
97
|
+
GOLF: 32, // Terra Golf
|
|
98
|
+
|
|
99
|
+
// ── Accessibility ───────────────────────────────────────────────────────
|
|
100
|
+
HANDCYCLING: 14, // Terra Handbiking
|
|
101
|
+
WHEELCHAIR_PUSH_WALKING: 98, // Terra Wheelchair
|
|
102
|
+
WHEELCHAIR_PUSH_RUNNING: 98, // Terra Wheelchair
|
|
103
|
+
|
|
104
|
+
// ── Other ───────────────────────────────────────────────────────────────
|
|
105
|
+
OTHER: 108, // Terra Other
|
|
106
|
+
MULTI_SPORT: 108, // Terra Other
|
|
107
|
+
FLOOR_CLIMBING: 78, // Terra Stair Climbing Machine
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Map a Garmin activity type string to the Terra ActivityType enum.
|
|
112
|
+
* Returns Terra "Other" (108) for unknown types.
|
|
113
|
+
*/
|
|
114
|
+
export function mapActivityType(activityType: string): number {
|
|
115
|
+
return activityTypeMap[activityType] ?? 108;
|
|
116
|
+
}
|
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
// ─── Garmin Sleep Stage → Terra SleepLevel ────────────────────────────────────
|
|
2
|
-
// Maps Garmin sleep stage names to Terra's SleepLevel numeric enum.
|
|
3
|
-
//
|
|
4
|
-
// Garmin provides sleep levels as named map keys in sleepLevelsMap:
|
|
5
|
-
// { deep: [...], light: [...], rem: [...], awake: [...] }
|
|
6
|
-
//
|
|
7
|
-
// Terra SleepLevel: 0=Unknown, 1=Awake, 2=Sleeping, 3=OutOfBed, 4=Light, 5=Deep, 6=REM
|
|
8
|
-
|
|
9
|
-
const sleepLevelMap: Record<string, number> = {
|
|
10
|
-
deep: 5, // Deep → Terra Deep
|
|
11
|
-
light: 4, // Light → Terra Light
|
|
12
|
-
rem: 6, // REM → Terra REM
|
|
13
|
-
awake: 1, // Awake → Terra Awake
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Map a Garmin sleep stage name to the Terra SleepLevel enum.
|
|
18
|
-
* Returns 0 (Unknown) for unrecognized stages.
|
|
19
|
-
*/
|
|
20
|
-
export function mapSleepLevel(stage: string): number {
|
|
21
|
-
return sleepLevelMap[stage] ?? 0;
|
|
22
|
-
}
|
|
1
|
+
// ─── Garmin Sleep Stage → Terra SleepLevel ────────────────────────────────────
|
|
2
|
+
// Maps Garmin sleep stage names to Terra's SleepLevel numeric enum.
|
|
3
|
+
//
|
|
4
|
+
// Garmin provides sleep levels as named map keys in sleepLevelsMap:
|
|
5
|
+
// { deep: [...], light: [...], rem: [...], awake: [...] }
|
|
6
|
+
//
|
|
7
|
+
// Terra SleepLevel: 0=Unknown, 1=Awake, 2=Sleeping, 3=OutOfBed, 4=Light, 5=Deep, 6=REM
|
|
8
|
+
|
|
9
|
+
const sleepLevelMap: Record<string, number> = {
|
|
10
|
+
deep: 5, // Deep → Terra Deep
|
|
11
|
+
light: 4, // Light → Terra Light
|
|
12
|
+
rem: 6, // REM → Terra REM
|
|
13
|
+
awake: 1, // Awake → Terra Awake
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Map a Garmin sleep stage name to the Terra SleepLevel enum.
|
|
18
|
+
* Returns 0 (Unknown) for unrecognized stages.
|
|
19
|
+
*/
|
|
20
|
+
export function mapSleepLevel(stage: string): number {
|
|
21
|
+
return sleepLevelMap[stage] ?? 0;
|
|
22
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// ─── Menstrual Cycle Tracking Transformer ────────────────────────────────────
|
|
2
|
+
// Transforms a Garmin MCT (Women's Health API) push item into the Soma
|
|
3
|
+
// Menstruation schema shape.
|
|
4
|
+
//
|
|
5
|
+
// MCT summaries contain cycle schedule data (phase, length, fertile window,
|
|
6
|
+
// pregnancy snapshot). We map these into the Menstruation model's
|
|
7
|
+
// menstruation_data fields.
|
|
8
|
+
|
|
9
|
+
import type { SomaMenstruation } from "../../validators/menstruation.js";
|
|
10
|
+
import type { ClientSummarizedMenstrualCycle } from "../types/wellnessApi/types.gen.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Transform a Garmin MCT push item into a Soma Menstruation document shape.
|
|
14
|
+
*
|
|
15
|
+
* MCT records are ingested into the `menstruation` table via
|
|
16
|
+
* `ingestMenstruation`, keyed by `metadata.start_time + metadata.end_time`.
|
|
17
|
+
*/
|
|
18
|
+
export function transformMenstrualCycleTracking(data: ClientSummarizedMenstrualCycle): SomaMenstruation {
|
|
19
|
+
const dateStr = data.periodStartDate;
|
|
20
|
+
const startTime = dateStr
|
|
21
|
+
? `${dateStr}T00:00:00.000Z`
|
|
22
|
+
: new Date(0).toISOString();
|
|
23
|
+
const endTime = dateStr
|
|
24
|
+
? `${dateStr}T23:59:59.999Z`
|
|
25
|
+
: new Date(0).toISOString();
|
|
26
|
+
|
|
27
|
+
return {
|
|
28
|
+
metadata: {
|
|
29
|
+
start_time: startTime,
|
|
30
|
+
end_time: endTime,
|
|
31
|
+
},
|
|
32
|
+
|
|
33
|
+
menstruation_data: {
|
|
34
|
+
day_in_cycle: data.dayInCycle,
|
|
35
|
+
current_phase: data.currentPhaseType?.toLowerCase(),
|
|
36
|
+
length_of_current_phase_days: data.lengthOfCurrentPhase,
|
|
37
|
+
days_until_next_phase: data.daysUntilNextPhase,
|
|
38
|
+
period_length_days: data.periodLength,
|
|
39
|
+
predicted_cycle_length_days: data.predictedCycleLength,
|
|
40
|
+
cycle_length_days: data.cycleLength != null
|
|
41
|
+
? String(data.cycleLength)
|
|
42
|
+
: undefined,
|
|
43
|
+
is_predicted_cycle: data.isPredictedCycle != null
|
|
44
|
+
? String(data.isPredictedCycle)
|
|
45
|
+
: undefined,
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// ─── Move IQ Transformer ─────────────────────────────────────────────────────
|
|
2
|
+
// Transforms a Garmin Move IQ event into the Soma Activity schema shape.
|
|
3
|
+
//
|
|
4
|
+
// Move IQ events are auto-detected activities (e.g. walking, running, cycling)
|
|
5
|
+
// recognised by the Garmin device without user interaction. They are lightweight
|
|
6
|
+
// — no GPS, heart rate, or calorie data — just type, duration, and device.
|
|
7
|
+
|
|
8
|
+
import type { ClientAutoActivityMoveIq } from "../types/wellnessApi/types.gen.js";
|
|
9
|
+
import { mapActivityType } from "./maps/activityType.js";
|
|
10
|
+
import type { SomaActivity } from "../../validators/activity.js";
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Transform a Garmin Move IQ event into a Soma Activity document shape.
|
|
14
|
+
*
|
|
15
|
+
* Move IQ activityType values are lowercase (e.g. "running", "cycling"),
|
|
16
|
+
* unlike regular activities which use uppercase. We normalise to uppercase
|
|
17
|
+
* before mapping.
|
|
18
|
+
*
|
|
19
|
+
* The returned object is ready to be spread into an `ingestActivity` call
|
|
20
|
+
* alongside `connectionId` and `userId`.
|
|
21
|
+
*/
|
|
22
|
+
export function transformMoveIQ(event: ClientAutoActivityMoveIq): SomaActivity {
|
|
23
|
+
const startMs = (event.startTimeInSeconds ?? 0) * 1000;
|
|
24
|
+
const endMs = startMs + (event.durationInSeconds ?? 0) * 1000;
|
|
25
|
+
const startDate = new Date(startMs).toISOString();
|
|
26
|
+
const endDate = new Date(endMs).toISOString();
|
|
27
|
+
|
|
28
|
+
// Move IQ activityType is lowercase; mapActivityType expects uppercase
|
|
29
|
+
const activityType = (event.activityType ?? "OTHER").toUpperCase();
|
|
30
|
+
|
|
31
|
+
return {
|
|
32
|
+
metadata: {
|
|
33
|
+
summary_id: event.summaryId ?? `moveiq-${event.startTimeInSeconds}`,
|
|
34
|
+
start_time: startDate,
|
|
35
|
+
end_time: endDate,
|
|
36
|
+
type: mapActivityType(activityType),
|
|
37
|
+
upload_type: 1, // device-detected
|
|
38
|
+
},
|
|
39
|
+
|
|
40
|
+
active_durations_data: {
|
|
41
|
+
activity_seconds: event.durationInSeconds,
|
|
42
|
+
},
|
|
43
|
+
|
|
44
|
+
device_data: event.deviceName
|
|
45
|
+
? { name: event.deviceName }
|
|
46
|
+
: undefined,
|
|
47
|
+
};
|
|
48
|
+
}
|