@nativesquare/soma 0.8.0 → 0.9.1

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 (530) hide show
  1. package/dist/client/index.d.ts +7 -128
  2. package/dist/client/index.d.ts.map +1 -1
  3. package/dist/client/index.js +31 -112
  4. package/dist/client/index.js.map +1 -1
  5. package/dist/component/_generated/api.d.ts +98 -4
  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 +136 -261
  9. package/dist/component/_generated/component.d.ts.map +1 -1
  10. package/dist/{garmin → component/garmin}/auth.d.ts +8 -1
  11. package/dist/component/garmin/auth.d.ts.map +1 -0
  12. package/dist/component/garmin/auth.js.map +1 -0
  13. package/dist/component/garmin/client.d.ts +15 -0
  14. package/dist/component/garmin/client.d.ts.map +1 -0
  15. package/dist/component/garmin/client.js +32 -0
  16. package/dist/component/garmin/client.js.map +1 -0
  17. package/dist/component/garmin/private.d.ts +543 -0
  18. package/dist/component/garmin/private.d.ts.map +1 -0
  19. package/dist/component/garmin/private.js +1461 -0
  20. package/dist/component/garmin/private.js.map +1 -0
  21. package/dist/component/garmin/public.d.ts +149 -0
  22. package/dist/component/garmin/public.d.ts.map +1 -0
  23. package/dist/component/garmin/public.js +823 -0
  24. package/dist/component/garmin/public.js.map +1 -0
  25. package/dist/component/garmin/schemas/activity.d.ts +94 -0
  26. package/dist/component/garmin/schemas/activity.d.ts.map +1 -0
  27. package/dist/component/garmin/schemas/activity.js +29 -0
  28. package/dist/component/garmin/schemas/activity.js.map +1 -0
  29. package/dist/component/garmin/schemas/activityDetails.d.ts +146 -0
  30. package/dist/component/garmin/schemas/activityDetails.d.ts.map +1 -0
  31. package/dist/component/garmin/schemas/activityDetails.js +30 -0
  32. package/dist/component/garmin/schemas/activityDetails.js.map +1 -0
  33. package/dist/component/garmin/schemas/bloodPressure.d.ts +38 -0
  34. package/dist/component/garmin/schemas/bloodPressure.d.ts.map +1 -0
  35. package/dist/component/garmin/schemas/bloodPressure.js +27 -0
  36. package/dist/component/garmin/schemas/bloodPressure.js.map +1 -0
  37. package/dist/component/garmin/schemas/bodyCompositions.d.ts +42 -0
  38. package/dist/component/garmin/schemas/bodyCompositions.d.ts.map +1 -0
  39. package/dist/component/garmin/schemas/bodyCompositions.js +27 -0
  40. package/dist/component/garmin/schemas/bodyCompositions.js.map +1 -0
  41. package/dist/component/garmin/schemas/dailies.d.ts +98 -0
  42. package/dist/component/garmin/schemas/dailies.d.ts.map +1 -0
  43. package/dist/component/garmin/schemas/dailies.js +27 -0
  44. package/dist/component/garmin/schemas/dailies.js.map +1 -0
  45. package/dist/component/garmin/schemas/epochs.d.ts +54 -0
  46. package/dist/component/garmin/schemas/epochs.d.ts.map +1 -0
  47. package/dist/component/garmin/schemas/epochs.js +27 -0
  48. package/dist/component/garmin/schemas/epochs.js.map +1 -0
  49. package/dist/component/garmin/schemas/healthSnapshot.d.ts +48 -0
  50. package/dist/component/garmin/schemas/healthSnapshot.d.ts.map +1 -0
  51. package/dist/component/garmin/schemas/healthSnapshot.js +27 -0
  52. package/dist/component/garmin/schemas/healthSnapshot.js.map +1 -0
  53. package/dist/component/garmin/schemas/hrvSummary.d.ts +40 -0
  54. package/dist/component/garmin/schemas/hrvSummary.d.ts.map +1 -0
  55. package/dist/component/garmin/schemas/hrvSummary.js +27 -0
  56. package/dist/component/garmin/schemas/hrvSummary.js.map +1 -0
  57. package/dist/component/garmin/schemas/manuallyUpdatedActivities.d.ts +94 -0
  58. package/dist/component/garmin/schemas/manuallyUpdatedActivities.d.ts.map +1 -0
  59. package/dist/component/garmin/schemas/manuallyUpdatedActivities.js +29 -0
  60. package/dist/component/garmin/schemas/manuallyUpdatedActivities.js.map +1 -0
  61. package/dist/component/garmin/schemas/menstrualCycleTracking.d.ts +100 -0
  62. package/dist/component/garmin/schemas/menstrualCycleTracking.d.ts.map +1 -0
  63. package/dist/component/garmin/schemas/menstrualCycleTracking.js +28 -0
  64. package/dist/component/garmin/schemas/menstrualCycleTracking.js.map +1 -0
  65. package/dist/component/garmin/schemas/moveIQ.d.ts +40 -0
  66. package/dist/component/garmin/schemas/moveIQ.d.ts.map +1 -0
  67. package/dist/component/garmin/schemas/moveIQ.js +27 -0
  68. package/dist/component/garmin/schemas/moveIQ.js.map +1 -0
  69. package/dist/component/garmin/schemas/pulseOx.d.ts +38 -0
  70. package/dist/component/garmin/schemas/pulseOx.d.ts.map +1 -0
  71. package/dist/component/garmin/schemas/pulseOx.js +28 -0
  72. package/dist/component/garmin/schemas/pulseOx.js.map +1 -0
  73. package/dist/component/garmin/schemas/respiration.d.ts +34 -0
  74. package/dist/component/garmin/schemas/respiration.d.ts.map +1 -0
  75. package/dist/component/garmin/schemas/respiration.js +28 -0
  76. package/dist/component/garmin/schemas/respiration.js.map +1 -0
  77. package/dist/component/garmin/schemas/skinTemperature.d.ts +36 -0
  78. package/dist/component/garmin/schemas/skinTemperature.d.ts.map +1 -0
  79. package/dist/component/garmin/schemas/skinTemperature.js +28 -0
  80. package/dist/component/garmin/schemas/skinTemperature.js.map +1 -0
  81. package/dist/component/garmin/schemas/sleeps.d.ts +88 -0
  82. package/dist/component/garmin/schemas/sleeps.d.ts.map +1 -0
  83. package/dist/component/garmin/schemas/sleeps.js +27 -0
  84. package/dist/component/garmin/schemas/sleeps.js.map +1 -0
  85. package/dist/component/garmin/schemas/stress.d.ts +70 -0
  86. package/dist/component/garmin/schemas/stress.d.ts.map +1 -0
  87. package/dist/component/garmin/schemas/stress.js +30 -0
  88. package/dist/component/garmin/schemas/stress.js.map +1 -0
  89. package/dist/component/garmin/schemas/userMetrics.d.ts +36 -0
  90. package/dist/component/garmin/schemas/userMetrics.d.ts.map +1 -0
  91. package/dist/component/garmin/schemas/userMetrics.js +28 -0
  92. package/dist/component/garmin/schemas/userMetrics.js.map +1 -0
  93. package/dist/component/garmin/transform/activity.d.ts +13 -0
  94. package/dist/component/garmin/transform/activity.d.ts.map +1 -0
  95. package/dist/component/garmin/transform/activity.js +111 -0
  96. package/dist/component/garmin/transform/activity.js.map +1 -0
  97. package/dist/component/garmin/transform/activityDetails.d.ts +13 -0
  98. package/dist/component/garmin/transform/activityDetails.d.ts.map +1 -0
  99. package/dist/component/garmin/transform/activityDetails.js +173 -0
  100. package/dist/component/garmin/transform/activityDetails.js.map +1 -0
  101. package/dist/component/garmin/transform/bloodPressure.d.ts +12 -0
  102. package/dist/component/garmin/transform/bloodPressure.d.ts.map +1 -0
  103. package/dist/{garmin → component/garmin/transform}/bloodPressure.js +7 -8
  104. package/dist/component/garmin/transform/bloodPressure.js.map +1 -0
  105. package/dist/component/garmin/transform/bodyCompositions.d.ts +12 -0
  106. package/dist/component/garmin/transform/bodyCompositions.d.ts.map +1 -0
  107. package/dist/component/garmin/transform/bodyCompositions.js +42 -0
  108. package/dist/component/garmin/transform/bodyCompositions.js.map +1 -0
  109. package/dist/component/garmin/transform/dailies.d.ts +12 -0
  110. package/dist/component/garmin/transform/dailies.d.ts.map +1 -0
  111. package/dist/{garmin/daily.js → component/garmin/transform/dailies.js} +38 -49
  112. package/dist/component/garmin/transform/dailies.js.map +1 -0
  113. package/dist/component/garmin/transform/epochs.d.ts +13 -0
  114. package/dist/component/garmin/transform/epochs.d.ts.map +1 -0
  115. package/dist/component/garmin/transform/epochs.js +76 -0
  116. package/dist/component/garmin/transform/epochs.js.map +1 -0
  117. package/dist/component/garmin/transform/healthSnapshot.d.ts +12 -0
  118. package/dist/component/garmin/transform/healthSnapshot.d.ts.map +1 -0
  119. package/dist/component/garmin/transform/healthSnapshot.js +111 -0
  120. package/dist/component/garmin/transform/healthSnapshot.js.map +1 -0
  121. package/dist/component/garmin/transform/hrvSummary.d.ts +12 -0
  122. package/dist/component/garmin/transform/hrvSummary.d.ts.map +1 -0
  123. package/dist/{garmin/hrv.js → component/garmin/transform/hrvSummary.js} +16 -16
  124. package/dist/component/garmin/transform/hrvSummary.js.map +1 -0
  125. package/dist/component/garmin/transform/manuallyUpdatedActivities.d.ts +11 -0
  126. package/dist/component/garmin/transform/manuallyUpdatedActivities.d.ts.map +1 -0
  127. package/dist/component/garmin/transform/manuallyUpdatedActivities.js +20 -0
  128. package/dist/component/garmin/transform/manuallyUpdatedActivities.js.map +1 -0
  129. package/dist/{garmin/maps/activity-type.d.ts → component/garmin/transform/maps/activityType.d.ts} +1 -1
  130. package/dist/component/garmin/transform/maps/activityType.d.ts.map +1 -0
  131. package/dist/{garmin/maps/activity-type.js → component/garmin/transform/maps/activityType.js} +1 -1
  132. package/dist/component/garmin/transform/maps/activityType.js.map +1 -0
  133. package/dist/{garmin/maps/sleep-level.d.ts → component/garmin/transform/maps/sleepLevel.d.ts} +1 -1
  134. package/dist/component/garmin/transform/maps/sleepLevel.d.ts.map +1 -0
  135. package/dist/{garmin/maps/sleep-level.js → component/garmin/transform/maps/sleepLevel.js} +1 -1
  136. package/dist/component/garmin/transform/maps/sleepLevel.js.map +1 -0
  137. package/dist/component/garmin/transform/menstrualCycleTracking.d.ts +10 -0
  138. package/dist/component/garmin/transform/menstrualCycleTracking.d.ts.map +1 -0
  139. package/dist/{garmin/menstruation.js → component/garmin/transform/menstrualCycleTracking.js} +17 -12
  140. package/dist/component/garmin/transform/menstrualCycleTracking.js.map +1 -0
  141. package/dist/component/garmin/transform/moveIQ.d.ts +14 -0
  142. package/dist/component/garmin/transform/moveIQ.d.ts.map +1 -0
  143. package/dist/component/garmin/transform/moveIQ.js +41 -0
  144. package/dist/component/garmin/transform/moveIQ.js.map +1 -0
  145. package/dist/{garmin → component/garmin/transform}/plannedWorkout.d.ts +3 -4
  146. package/dist/component/garmin/transform/plannedWorkout.d.ts.map +1 -0
  147. package/dist/{garmin → component/garmin/transform}/plannedWorkout.js +61 -70
  148. package/dist/component/garmin/transform/plannedWorkout.js.map +1 -0
  149. package/dist/component/garmin/transform/pulseOx.d.ts +12 -0
  150. package/dist/component/garmin/transform/pulseOx.d.ts.map +1 -0
  151. package/dist/component/garmin/transform/pulseOx.js +46 -0
  152. package/dist/component/garmin/transform/pulseOx.js.map +1 -0
  153. package/dist/component/garmin/transform/respiration.d.ts +12 -0
  154. package/dist/component/garmin/transform/respiration.d.ts.map +1 -0
  155. package/dist/component/garmin/transform/respiration.js +54 -0
  156. package/dist/component/garmin/transform/respiration.js.map +1 -0
  157. package/dist/component/garmin/transform/skinTemperature.d.ts +12 -0
  158. package/dist/component/garmin/transform/skinTemperature.d.ts.map +1 -0
  159. package/dist/{garmin/skinTemp.js → component/garmin/transform/skinTemperature.js} +13 -10
  160. package/dist/component/garmin/transform/skinTemperature.js.map +1 -0
  161. package/dist/{garmin/sleep.d.ts → component/garmin/transform/sleeps.d.ts} +13 -20
  162. package/dist/component/garmin/transform/sleeps.d.ts.map +1 -0
  163. package/dist/{garmin/sleep.js → component/garmin/transform/sleeps.js} +39 -50
  164. package/dist/component/garmin/transform/sleeps.js.map +1 -0
  165. package/dist/component/garmin/transform/stress.d.ts +12 -0
  166. package/dist/component/garmin/transform/stress.d.ts.map +1 -0
  167. package/dist/component/garmin/transform/stress.js +56 -0
  168. package/dist/component/garmin/transform/stress.js.map +1 -0
  169. package/dist/component/garmin/transform/userMetrics.d.ts +12 -0
  170. package/dist/component/garmin/transform/userMetrics.d.ts.map +1 -0
  171. package/dist/{garmin → component/garmin/transform}/userMetrics.js +19 -12
  172. package/dist/component/garmin/transform/userMetrics.js.map +1 -0
  173. package/dist/component/garmin/types/trainingApiWorkouts/client/client.gen.d.ts +3 -0
  174. package/dist/component/garmin/types/trainingApiWorkouts/client/client.gen.d.ts.map +1 -0
  175. package/dist/component/garmin/types/trainingApiWorkouts/client/client.gen.js +236 -0
  176. package/dist/component/garmin/types/trainingApiWorkouts/client/client.gen.js.map +1 -0
  177. package/dist/component/garmin/types/trainingApiWorkouts/client/index.d.ts +9 -0
  178. package/dist/component/garmin/types/trainingApiWorkouts/client/index.d.ts.map +1 -0
  179. package/dist/component/garmin/types/trainingApiWorkouts/client/index.js +7 -0
  180. package/dist/component/garmin/types/trainingApiWorkouts/client/index.js.map +1 -0
  181. package/dist/component/garmin/types/trainingApiWorkouts/client/types.gen.d.ts +118 -0
  182. package/dist/component/garmin/types/trainingApiWorkouts/client/types.gen.d.ts.map +1 -0
  183. package/dist/component/garmin/types/trainingApiWorkouts/client/types.gen.js +3 -0
  184. package/dist/component/garmin/types/trainingApiWorkouts/client/types.gen.js.map +1 -0
  185. package/dist/component/garmin/types/trainingApiWorkouts/client/utils.gen.d.ts +34 -0
  186. package/dist/component/garmin/types/trainingApiWorkouts/client/utils.gen.d.ts.map +1 -0
  187. package/dist/component/garmin/types/trainingApiWorkouts/client/utils.gen.js +229 -0
  188. package/dist/component/garmin/types/trainingApiWorkouts/client/utils.gen.js.map +1 -0
  189. package/dist/component/garmin/types/trainingApiWorkouts/client.gen.d.ts +13 -0
  190. package/dist/component/garmin/types/trainingApiWorkouts/client.gen.d.ts.map +1 -0
  191. package/dist/component/garmin/types/trainingApiWorkouts/client.gen.js +4 -0
  192. package/dist/component/garmin/types/trainingApiWorkouts/client.gen.js.map +1 -0
  193. package/dist/component/garmin/types/trainingApiWorkouts/core/auth.gen.d.ts +19 -0
  194. package/dist/component/garmin/types/trainingApiWorkouts/core/auth.gen.d.ts.map +1 -0
  195. package/dist/component/garmin/types/trainingApiWorkouts/core/auth.gen.js +15 -0
  196. package/dist/component/garmin/types/trainingApiWorkouts/core/auth.gen.js.map +1 -0
  197. package/dist/component/garmin/types/trainingApiWorkouts/core/bodySerializer.gen.d.ts +26 -0
  198. package/dist/component/garmin/types/trainingApiWorkouts/core/bodySerializer.gen.d.ts.map +1 -0
  199. package/dist/component/garmin/types/trainingApiWorkouts/core/bodySerializer.gen.js +58 -0
  200. package/dist/component/garmin/types/trainingApiWorkouts/core/bodySerializer.gen.js.map +1 -0
  201. package/dist/component/garmin/types/trainingApiWorkouts/core/params.gen.d.ts +44 -0
  202. package/dist/component/garmin/types/trainingApiWorkouts/core/params.gen.d.ts.map +1 -0
  203. package/dist/component/garmin/types/trainingApiWorkouts/core/params.gen.js +101 -0
  204. package/dist/component/garmin/types/trainingApiWorkouts/core/params.gen.js.map +1 -0
  205. package/dist/component/garmin/types/trainingApiWorkouts/core/pathSerializer.gen.d.ts +34 -0
  206. package/dist/component/garmin/types/trainingApiWorkouts/core/pathSerializer.gen.d.ts.map +1 -0
  207. package/dist/component/garmin/types/trainingApiWorkouts/core/pathSerializer.gen.js +107 -0
  208. package/dist/component/garmin/types/trainingApiWorkouts/core/pathSerializer.gen.js.map +1 -0
  209. package/dist/component/garmin/types/trainingApiWorkouts/core/queryKeySerializer.gen.d.ts +19 -0
  210. package/dist/component/garmin/types/trainingApiWorkouts/core/queryKeySerializer.gen.d.ts.map +1 -0
  211. package/dist/component/garmin/types/trainingApiWorkouts/core/queryKeySerializer.gen.js +93 -0
  212. package/dist/component/garmin/types/trainingApiWorkouts/core/queryKeySerializer.gen.js.map +1 -0
  213. package/dist/component/garmin/types/trainingApiWorkouts/core/serverSentEvents.gen.d.ts +72 -0
  214. package/dist/component/garmin/types/trainingApiWorkouts/core/serverSentEvents.gen.d.ts.map +1 -0
  215. package/dist/component/garmin/types/trainingApiWorkouts/core/serverSentEvents.gen.js +134 -0
  216. package/dist/component/garmin/types/trainingApiWorkouts/core/serverSentEvents.gen.js.map +1 -0
  217. package/dist/component/garmin/types/trainingApiWorkouts/core/types.gen.d.ts +79 -0
  218. package/dist/component/garmin/types/trainingApiWorkouts/core/types.gen.d.ts.map +1 -0
  219. package/dist/component/garmin/types/trainingApiWorkouts/core/types.gen.js +3 -0
  220. package/dist/component/garmin/types/trainingApiWorkouts/core/types.gen.js.map +1 -0
  221. package/dist/component/garmin/types/trainingApiWorkouts/core/utils.gen.d.ts +20 -0
  222. package/dist/component/garmin/types/trainingApiWorkouts/core/utils.gen.d.ts.map +1 -0
  223. package/dist/component/garmin/types/trainingApiWorkouts/core/utils.gen.js +88 -0
  224. package/dist/component/garmin/types/trainingApiWorkouts/core/utils.gen.js.map +1 -0
  225. package/dist/component/garmin/types/trainingApiWorkouts/index.d.ts +3 -0
  226. package/dist/component/garmin/types/trainingApiWorkouts/index.d.ts.map +1 -0
  227. package/dist/component/garmin/types/trainingApiWorkouts/index.js +3 -0
  228. package/dist/component/garmin/types/trainingApiWorkouts/index.js.map +1 -0
  229. package/dist/component/garmin/types/trainingApiWorkouts/sdk.gen.d.ts +68 -0
  230. package/dist/component/garmin/types/trainingApiWorkouts/sdk.gen.d.ts.map +1 -0
  231. package/dist/component/garmin/types/trainingApiWorkouts/sdk.gen.js +97 -0
  232. package/dist/component/garmin/types/trainingApiWorkouts/sdk.gen.js.map +1 -0
  233. package/dist/component/garmin/types/trainingApiWorkouts/types.gen.d.ts +330 -0
  234. package/dist/component/garmin/types/trainingApiWorkouts/types.gen.d.ts.map +1 -0
  235. package/dist/component/garmin/types/trainingApiWorkouts/types.gen.js +3 -0
  236. package/dist/component/garmin/types/trainingApiWorkouts/types.gen.js.map +1 -0
  237. package/dist/component/garmin/types/trainingApiWorkouts/zod.gen.d.ts +2463 -0
  238. package/dist/component/garmin/types/trainingApiWorkouts/zod.gen.d.ts.map +1 -0
  239. package/dist/component/garmin/types/trainingApiWorkouts/zod.gen.js +388 -0
  240. package/dist/component/garmin/types/trainingApiWorkouts/zod.gen.js.map +1 -0
  241. package/dist/component/garmin/types/wellnessApi/client/client.gen.d.ts +3 -0
  242. package/dist/component/garmin/types/wellnessApi/client/client.gen.d.ts.map +1 -0
  243. package/dist/component/garmin/types/wellnessApi/client/client.gen.js +236 -0
  244. package/dist/component/garmin/types/wellnessApi/client/client.gen.js.map +1 -0
  245. package/dist/component/garmin/types/wellnessApi/client/index.d.ts +9 -0
  246. package/dist/component/garmin/types/wellnessApi/client/index.d.ts.map +1 -0
  247. package/dist/component/garmin/types/wellnessApi/client/index.js +7 -0
  248. package/dist/component/garmin/types/wellnessApi/client/index.js.map +1 -0
  249. package/dist/component/garmin/types/wellnessApi/client/types.gen.d.ts +118 -0
  250. package/dist/component/garmin/types/wellnessApi/client/types.gen.d.ts.map +1 -0
  251. package/dist/component/garmin/types/wellnessApi/client/types.gen.js +3 -0
  252. package/dist/component/garmin/types/wellnessApi/client/types.gen.js.map +1 -0
  253. package/dist/component/garmin/types/wellnessApi/client/utils.gen.d.ts +34 -0
  254. package/dist/component/garmin/types/wellnessApi/client/utils.gen.d.ts.map +1 -0
  255. package/dist/component/garmin/types/wellnessApi/client/utils.gen.js +229 -0
  256. package/dist/component/garmin/types/wellnessApi/client/utils.gen.js.map +1 -0
  257. package/dist/component/garmin/types/wellnessApi/client.gen.d.ts +13 -0
  258. package/dist/component/garmin/types/wellnessApi/client.gen.d.ts.map +1 -0
  259. package/dist/component/garmin/types/wellnessApi/client.gen.js +4 -0
  260. package/dist/component/garmin/types/wellnessApi/client.gen.js.map +1 -0
  261. package/dist/component/garmin/types/wellnessApi/core/auth.gen.d.ts +19 -0
  262. package/dist/component/garmin/types/wellnessApi/core/auth.gen.d.ts.map +1 -0
  263. package/dist/component/garmin/types/wellnessApi/core/auth.gen.js +15 -0
  264. package/dist/component/garmin/types/wellnessApi/core/auth.gen.js.map +1 -0
  265. package/dist/component/garmin/types/wellnessApi/core/bodySerializer.gen.d.ts +26 -0
  266. package/dist/component/garmin/types/wellnessApi/core/bodySerializer.gen.d.ts.map +1 -0
  267. package/dist/component/garmin/types/wellnessApi/core/bodySerializer.gen.js +58 -0
  268. package/dist/component/garmin/types/wellnessApi/core/bodySerializer.gen.js.map +1 -0
  269. package/dist/component/garmin/types/wellnessApi/core/params.gen.d.ts +44 -0
  270. package/dist/component/garmin/types/wellnessApi/core/params.gen.d.ts.map +1 -0
  271. package/dist/component/garmin/types/wellnessApi/core/params.gen.js +101 -0
  272. package/dist/component/garmin/types/wellnessApi/core/params.gen.js.map +1 -0
  273. package/dist/component/garmin/types/wellnessApi/core/pathSerializer.gen.d.ts +34 -0
  274. package/dist/component/garmin/types/wellnessApi/core/pathSerializer.gen.d.ts.map +1 -0
  275. package/dist/component/garmin/types/wellnessApi/core/pathSerializer.gen.js +107 -0
  276. package/dist/component/garmin/types/wellnessApi/core/pathSerializer.gen.js.map +1 -0
  277. package/dist/component/garmin/types/wellnessApi/core/queryKeySerializer.gen.d.ts +19 -0
  278. package/dist/component/garmin/types/wellnessApi/core/queryKeySerializer.gen.d.ts.map +1 -0
  279. package/dist/component/garmin/types/wellnessApi/core/queryKeySerializer.gen.js +93 -0
  280. package/dist/component/garmin/types/wellnessApi/core/queryKeySerializer.gen.js.map +1 -0
  281. package/dist/component/garmin/types/wellnessApi/core/serverSentEvents.gen.d.ts +72 -0
  282. package/dist/component/garmin/types/wellnessApi/core/serverSentEvents.gen.d.ts.map +1 -0
  283. package/dist/component/garmin/types/wellnessApi/core/serverSentEvents.gen.js +134 -0
  284. package/dist/component/garmin/types/wellnessApi/core/serverSentEvents.gen.js.map +1 -0
  285. package/dist/component/garmin/types/wellnessApi/core/types.gen.d.ts +79 -0
  286. package/dist/component/garmin/types/wellnessApi/core/types.gen.d.ts.map +1 -0
  287. package/dist/component/garmin/types/wellnessApi/core/types.gen.js +3 -0
  288. package/dist/component/garmin/types/wellnessApi/core/types.gen.js.map +1 -0
  289. package/dist/component/garmin/types/wellnessApi/core/utils.gen.d.ts +20 -0
  290. package/dist/component/garmin/types/wellnessApi/core/utils.gen.d.ts.map +1 -0
  291. package/dist/component/garmin/types/wellnessApi/core/utils.gen.js +88 -0
  292. package/dist/component/garmin/types/wellnessApi/core/utils.gen.js.map +1 -0
  293. package/dist/component/garmin/types/wellnessApi/index.d.ts +3 -0
  294. package/dist/component/garmin/types/wellnessApi/index.d.ts.map +1 -0
  295. package/dist/component/garmin/types/wellnessApi/index.js +3 -0
  296. package/dist/component/garmin/types/wellnessApi/index.js.map +1 -0
  297. package/dist/component/garmin/types/wellnessApi/sdk.gen.d.ts +166 -0
  298. package/dist/component/garmin/types/wellnessApi/sdk.gen.d.ts.map +1 -0
  299. package/dist/component/garmin/types/wellnessApi/sdk.gen.js +153 -0
  300. package/dist/component/garmin/types/wellnessApi/sdk.gen.js.map +1 -0
  301. package/dist/component/garmin/types/wellnessApi/types.gen.d.ts +2733 -0
  302. package/dist/component/garmin/types/wellnessApi/types.gen.d.ts.map +1 -0
  303. package/dist/component/garmin/types/wellnessApi/types.gen.js +3 -0
  304. package/dist/component/garmin/types/wellnessApi/types.gen.js.map +1 -0
  305. package/dist/component/garmin/types/wellnessApi/zod.gen.d.ts +1319 -0
  306. package/dist/component/garmin/types/wellnessApi/zod.gen.d.ts.map +1 -0
  307. package/dist/component/garmin/types/wellnessApi/zod.gen.js +784 -0
  308. package/dist/component/garmin/types/wellnessApi/zod.gen.js.map +1 -0
  309. package/dist/component/garmin/utils.d.ts +16 -0
  310. package/dist/component/garmin/utils.d.ts.map +1 -0
  311. package/dist/component/garmin/utils.js +17 -0
  312. package/dist/component/garmin/utils.js.map +1 -0
  313. package/dist/component/garmin/webhooks.d.ts +128 -0
  314. package/dist/component/garmin/webhooks.d.ts.map +1 -0
  315. package/dist/component/garmin/webhooks.js +531 -0
  316. package/dist/component/garmin/webhooks.js.map +1 -0
  317. package/dist/component/private.d.ts +4 -4
  318. package/dist/component/public.d.ts +333 -333
  319. package/dist/component/schema.d.ts +133 -133
  320. package/dist/component/strava/private.d.ts +30 -0
  321. package/dist/component/strava/private.d.ts.map +1 -0
  322. package/dist/component/strava/private.js +71 -0
  323. package/dist/component/strava/private.js.map +1 -0
  324. package/dist/component/{strava.d.ts → strava/public.d.ts} +3 -31
  325. package/dist/component/strava/public.d.ts.map +1 -0
  326. package/dist/component/{strava.js → strava/public.js} +22 -101
  327. package/dist/component/strava/public.js.map +1 -0
  328. package/dist/component/validators/activity.d.ts +6 -0
  329. package/dist/component/validators/activity.d.ts.map +1 -1
  330. package/dist/component/validators/activity.js.map +1 -1
  331. package/dist/component/validators/body.d.ts +20 -14
  332. package/dist/component/validators/body.d.ts.map +1 -1
  333. package/dist/component/validators/body.js.map +1 -1
  334. package/dist/component/validators/daily.d.ts +6 -0
  335. package/dist/component/validators/daily.d.ts.map +1 -1
  336. package/dist/component/validators/daily.js.map +1 -1
  337. package/dist/component/validators/enums.d.ts +1 -1
  338. package/dist/component/validators/menstruation.d.ts +5 -0
  339. package/dist/component/validators/menstruation.d.ts.map +1 -1
  340. package/dist/component/validators/menstruation.js.map +1 -1
  341. package/dist/component/validators/plannedWorkout.d.ts +6 -0
  342. package/dist/component/validators/plannedWorkout.d.ts.map +1 -1
  343. package/dist/component/validators/plannedWorkout.js.map +1 -1
  344. package/dist/validators.d.ts +31 -28
  345. package/dist/validators.d.ts.map +1 -1
  346. package/dist/validators.js +2 -2
  347. package/dist/validators.js.map +1 -1
  348. package/package.json +4 -7
  349. package/src/client/index.ts +41 -172
  350. package/src/component/_generated/api.ts +98 -4
  351. package/src/component/_generated/component.ts +252 -284
  352. package/src/{garmin → component/garmin}/auth.ts +8 -1
  353. package/src/component/garmin/client.ts +39 -0
  354. package/src/component/garmin/private.ts +1798 -0
  355. package/src/component/garmin/public.ts +938 -0
  356. package/src/component/garmin/schemas/activity.ts +40 -0
  357. package/src/component/garmin/schemas/activityDetails.ts +45 -0
  358. package/src/component/garmin/schemas/bloodPressure.ts +38 -0
  359. package/src/component/garmin/schemas/bodyCompositions.ts +38 -0
  360. package/src/component/garmin/schemas/dailies.ts +38 -0
  361. package/src/component/garmin/schemas/epochs.ts +38 -0
  362. package/src/component/garmin/schemas/healthSnapshot.ts +38 -0
  363. package/src/component/garmin/schemas/hrvSummary.ts +38 -0
  364. package/src/component/garmin/schemas/manuallyUpdatedActivities.ts +49 -0
  365. package/src/component/garmin/schemas/menstrualCycleTracking.ts +39 -0
  366. package/src/component/garmin/schemas/moveIQ.ts +38 -0
  367. package/src/component/garmin/schemas/pulseOx.ts +39 -0
  368. package/src/component/garmin/schemas/respiration.ts +39 -0
  369. package/src/component/garmin/schemas/skinTemperature.ts +39 -0
  370. package/src/component/garmin/schemas/sleeps.ts +38 -0
  371. package/src/component/garmin/schemas/stress.ts +43 -0
  372. package/src/component/garmin/schemas/userMetrics.ts +39 -0
  373. package/src/component/garmin/transform/activity.ts +143 -0
  374. package/src/component/garmin/transform/activityDetails.ts +236 -0
  375. package/src/{garmin → component/garmin/transform}/bloodPressure.ts +39 -41
  376. package/src/component/garmin/transform/bodyCompositions.ts +51 -0
  377. package/src/component/garmin/transform/dailies.ts +179 -0
  378. package/src/component/garmin/transform/epochs.ts +94 -0
  379. package/src/component/garmin/transform/healthSnapshot.ts +152 -0
  380. package/src/component/garmin/transform/hrvSummary.ts +56 -0
  381. package/src/component/garmin/transform/manuallyUpdatedActivities.ts +27 -0
  382. package/src/{garmin/maps/activity-type.ts → component/garmin/transform/maps/activityType.ts} +116 -116
  383. package/src/{garmin/maps/sleep-level.ts → component/garmin/transform/maps/sleepLevel.ts} +22 -22
  384. package/src/component/garmin/transform/menstrualCycleTracking.ts +48 -0
  385. package/src/component/garmin/transform/moveIQ.ts +48 -0
  386. package/src/{garmin → component/garmin/transform}/plannedWorkout.ts +328 -333
  387. package/src/component/garmin/transform/pulseOx.ts +64 -0
  388. package/src/component/garmin/transform/respiration.ts +73 -0
  389. package/src/component/garmin/transform/skinTemperature.ts +44 -0
  390. package/src/component/garmin/transform/sleeps.ts +159 -0
  391. package/src/component/garmin/transform/stress.ts +78 -0
  392. package/src/component/garmin/transform/userMetrics.ts +56 -0
  393. package/src/component/garmin/types/specs/training-api-workouts.json +699 -0
  394. package/src/component/garmin/types/trainingApiWorkouts/client/client.gen.ts +290 -0
  395. package/src/component/garmin/types/trainingApiWorkouts/client/index.ts +25 -0
  396. package/src/component/garmin/types/trainingApiWorkouts/client/types.gen.ts +214 -0
  397. package/src/component/garmin/types/trainingApiWorkouts/client/utils.gen.ts +316 -0
  398. package/src/component/garmin/types/trainingApiWorkouts/client.gen.ts +16 -0
  399. package/src/component/garmin/types/trainingApiWorkouts/core/auth.gen.ts +41 -0
  400. package/src/component/garmin/types/trainingApiWorkouts/core/bodySerializer.gen.ts +82 -0
  401. package/src/component/garmin/types/trainingApiWorkouts/core/params.gen.ts +169 -0
  402. package/src/component/garmin/types/trainingApiWorkouts/core/pathSerializer.gen.ts +171 -0
  403. package/src/component/garmin/types/trainingApiWorkouts/core/queryKeySerializer.gen.ts +117 -0
  404. package/src/component/garmin/types/trainingApiWorkouts/core/serverSentEvents.gen.ts +243 -0
  405. package/src/component/garmin/types/trainingApiWorkouts/core/types.gen.ts +104 -0
  406. package/src/component/garmin/types/trainingApiWorkouts/core/utils.gen.ts +140 -0
  407. package/src/component/garmin/types/trainingApiWorkouts/index.ts +4 -0
  408. package/src/component/garmin/types/trainingApiWorkouts/sdk.gen.ts +126 -0
  409. package/src/component/garmin/types/trainingApiWorkouts/types.gen.ts +387 -0
  410. package/src/component/garmin/types/trainingApiWorkouts/zod.gen.ts +423 -0
  411. package/src/component/garmin/types/wellnessApi/client/client.gen.ts +290 -0
  412. package/src/component/garmin/types/wellnessApi/client/index.ts +25 -0
  413. package/src/component/garmin/types/wellnessApi/client/types.gen.ts +214 -0
  414. package/src/component/garmin/types/wellnessApi/client/utils.gen.ts +316 -0
  415. package/src/component/garmin/types/wellnessApi/client.gen.ts +16 -0
  416. package/src/component/garmin/types/wellnessApi/core/auth.gen.ts +41 -0
  417. package/src/component/garmin/types/wellnessApi/core/bodySerializer.gen.ts +82 -0
  418. package/src/component/garmin/types/wellnessApi/core/params.gen.ts +169 -0
  419. package/src/component/garmin/types/wellnessApi/core/pathSerializer.gen.ts +171 -0
  420. package/src/component/garmin/types/wellnessApi/core/queryKeySerializer.gen.ts +117 -0
  421. package/src/component/garmin/types/wellnessApi/core/serverSentEvents.gen.ts +243 -0
  422. package/src/component/garmin/types/wellnessApi/core/types.gen.ts +104 -0
  423. package/src/component/garmin/types/wellnessApi/core/utils.gen.ts +140 -0
  424. package/src/component/garmin/types/wellnessApi/index.ts +4 -0
  425. package/src/component/garmin/types/wellnessApi/sdk.gen.ts +207 -0
  426. package/src/component/garmin/types/wellnessApi/types.gen.ts +2942 -0
  427. package/src/component/garmin/types/wellnessApi/zod.gen.ts +878 -0
  428. package/src/component/garmin/utils.ts +25 -0
  429. package/src/component/garmin/webhooks.ts +852 -0
  430. package/src/component/strava/private.ts +89 -0
  431. package/src/component/{strava.ts → strava/public.ts} +341 -404
  432. package/src/component/validators/activity.ts +5 -0
  433. package/src/component/validators/body.ts +5 -0
  434. package/src/component/validators/daily.ts +5 -0
  435. package/src/component/validators/menstruation.ts +5 -1
  436. package/src/component/validators/plannedWorkout.ts +5 -0
  437. package/src/validators.ts +12 -2
  438. package/dist/component/garmin.d.ts +0 -366
  439. package/dist/component/garmin.d.ts.map +0 -1
  440. package/dist/component/garmin.js +0 -1481
  441. package/dist/component/garmin.js.map +0 -1
  442. package/dist/component/strava.d.ts.map +0 -1
  443. package/dist/component/strava.js.map +0 -1
  444. package/dist/garmin/activity.d.ts +0 -92
  445. package/dist/garmin/activity.d.ts.map +0 -1
  446. package/dist/garmin/activity.js +0 -201
  447. package/dist/garmin/activity.js.map +0 -1
  448. package/dist/garmin/auth.d.ts.map +0 -1
  449. package/dist/garmin/auth.js.map +0 -1
  450. package/dist/garmin/bloodPressure.d.ts +0 -28
  451. package/dist/garmin/bloodPressure.d.ts.map +0 -1
  452. package/dist/garmin/bloodPressure.js.map +0 -1
  453. package/dist/garmin/body.d.ts +0 -26
  454. package/dist/garmin/body.d.ts.map +0 -1
  455. package/dist/garmin/body.js +0 -44
  456. package/dist/garmin/body.js.map +0 -1
  457. package/dist/garmin/client.d.ts +0 -246
  458. package/dist/garmin/client.d.ts.map +0 -1
  459. package/dist/garmin/client.js +0 -566
  460. package/dist/garmin/client.js.map +0 -1
  461. package/dist/garmin/daily.d.ts +0 -74
  462. package/dist/garmin/daily.d.ts.map +0 -1
  463. package/dist/garmin/daily.js.map +0 -1
  464. package/dist/garmin/hrv.d.ts +0 -30
  465. package/dist/garmin/hrv.d.ts.map +0 -1
  466. package/dist/garmin/hrv.js.map +0 -1
  467. package/dist/garmin/index.d.ts +0 -34
  468. package/dist/garmin/index.d.ts.map +0 -1
  469. package/dist/garmin/index.js +0 -28
  470. package/dist/garmin/index.js.map +0 -1
  471. package/dist/garmin/maps/activity-type.d.ts.map +0 -1
  472. package/dist/garmin/maps/activity-type.js.map +0 -1
  473. package/dist/garmin/maps/sleep-level.d.ts.map +0 -1
  474. package/dist/garmin/maps/sleep-level.js.map +0 -1
  475. package/dist/garmin/menstruation.d.ts +0 -25
  476. package/dist/garmin/menstruation.d.ts.map +0 -1
  477. package/dist/garmin/menstruation.js.map +0 -1
  478. package/dist/garmin/plannedWorkout.d.ts.map +0 -1
  479. package/dist/garmin/plannedWorkout.js.map +0 -1
  480. package/dist/garmin/pulseOx.d.ts +0 -24
  481. package/dist/garmin/pulseOx.d.ts.map +0 -1
  482. package/dist/garmin/pulseOx.js +0 -33
  483. package/dist/garmin/pulseOx.js.map +0 -1
  484. package/dist/garmin/respiration.d.ts +0 -29
  485. package/dist/garmin/respiration.d.ts.map +0 -1
  486. package/dist/garmin/respiration.js +0 -42
  487. package/dist/garmin/respiration.js.map +0 -1
  488. package/dist/garmin/skinTemp.d.ts +0 -27
  489. package/dist/garmin/skinTemp.d.ts.map +0 -1
  490. package/dist/garmin/skinTemp.js.map +0 -1
  491. package/dist/garmin/sleep.d.ts.map +0 -1
  492. package/dist/garmin/sleep.js.map +0 -1
  493. package/dist/garmin/stressDetails.d.ts +0 -30
  494. package/dist/garmin/stressDetails.d.ts.map +0 -1
  495. package/dist/garmin/stressDetails.js +0 -49
  496. package/dist/garmin/stressDetails.js.map +0 -1
  497. package/dist/garmin/sync.d.ts +0 -53
  498. package/dist/garmin/sync.d.ts.map +0 -1
  499. package/dist/garmin/sync.js +0 -457
  500. package/dist/garmin/sync.js.map +0 -1
  501. package/dist/garmin/types.d.ts +0 -175
  502. package/dist/garmin/types.d.ts.map +0 -1
  503. package/dist/garmin/types.js +0 -10
  504. package/dist/garmin/types.js.map +0 -1
  505. package/dist/garmin/userMetrics.d.ts +0 -23
  506. package/dist/garmin/userMetrics.d.ts.map +0 -1
  507. package/dist/garmin/userMetrics.js.map +0 -1
  508. package/src/component/garmin.ts +0 -1722
  509. package/src/garmin/activity.test.ts +0 -170
  510. package/src/garmin/activity.ts +0 -265
  511. package/src/garmin/auth.test.ts +0 -103
  512. package/src/garmin/body.ts +0 -59
  513. package/src/garmin/client.ts +0 -886
  514. package/src/garmin/daily.ts +0 -215
  515. package/src/garmin/hrv.ts +0 -57
  516. package/src/garmin/index.ts +0 -145
  517. package/src/garmin/maps/activity-type.test.ts +0 -78
  518. package/src/garmin/menstruation.ts +0 -44
  519. package/src/garmin/pulseOx.ts +0 -45
  520. package/src/garmin/respiration.ts +0 -55
  521. package/src/garmin/skinTemp.ts +0 -42
  522. package/src/garmin/sleep.test.ts +0 -109
  523. package/src/garmin/sleep.ts +0 -176
  524. package/src/garmin/stressDetails.ts +0 -71
  525. package/src/garmin/sync.ts +0 -566
  526. package/src/garmin/types.ts +0 -268
  527. package/src/garmin/userMetrics.ts +0 -50
  528. package/src/garmin/wellness-api.d.ts +0 -5637
  529. /package/dist/{garmin → component/garmin}/auth.js +0 -0
  530. /package/src/{garmin/spec → component/garmin/types/specs}/wellness-api.json +0 -0
@@ -1,6 +1,7 @@
1
- // ─── Soma Garmin Training API V2 Transformer ─────────────────────────────
2
- // Maps Soma's Terra-style planned workout model to the Garmin Training API V2
3
- // JSON format for workout creation and scheduling.
1
+ // ─── Planned Workout Transformer ─────────────────────────────────────────────
2
+ // Transforms a Soma planned workout document into a Garmin Training API V2
3
+ // workout payload ready for `POST /workoutportal/workout/v2`.
4
+ // ─── Public API ──────────────────────────────────────────────────────────────
4
5
  /**
5
6
  * Transform a Soma planned workout document into a Garmin Training API V2
6
7
  * workout payload ready for `POST /workoutportal/workout/v2`.
@@ -9,33 +10,28 @@
9
10
  * @param providerName - Name shown to the user in Garmin Connect (20 chars max)
10
11
  */
11
12
  export function transformPlannedWorkoutToGarmin(somaWorkout, providerName) {
12
- const metadata = somaWorkout.metadata ?? {};
13
+ const metadata = somaWorkout.metadata;
13
14
  const sport = mapSportType(metadata.type);
14
15
  const steps = transformSteps(somaWorkout.steps ?? []);
15
16
  const segment = {
16
17
  segmentOrder: 1,
17
18
  sport,
18
- poolLength: metadata.pool_length_meters ?? null,
19
- poolLengthUnit: metadata.pool_length_meters != null ? "METER" : null,
20
- estimatedDurationInSecs: null,
21
- estimatedDistanceInMeters: null,
19
+ poolLength: metadata.pool_length_meters ?? undefined,
20
+ poolLengthUnit: metadata.pool_length_meters != null ? "METER" : undefined,
22
21
  steps,
23
22
  };
24
23
  return {
25
24
  workoutName: metadata.name ?? "Workout",
26
- description: metadata.description ?? null,
25
+ description: metadata.description ?? undefined,
27
26
  sport,
28
- estimatedDurationInSecs: null,
29
- estimatedDistanceInMeters: null,
30
- poolLength: metadata.pool_length_meters ?? null,
31
- poolLengthUnit: metadata.pool_length_meters != null ? "METER" : null,
27
+ poolLength: metadata.pool_length_meters ?? undefined,
28
+ poolLengthUnit: metadata.pool_length_meters != null ? "METER" : undefined,
32
29
  workoutProvider: providerName.slice(0, 20),
33
30
  workoutSourceId: providerName.slice(0, 20),
34
31
  isSessionTransitionEnabled: false,
35
32
  segments: [segment],
36
33
  };
37
34
  }
38
- // ─── Step Transformation ─────────────────────────────────────────────────────
39
35
  function transformSteps(somaSteps) {
40
36
  const result = [];
41
37
  let order = 1;
@@ -49,9 +45,12 @@ function transformSteps(somaSteps) {
49
45
  stepOrder: order++,
50
46
  repeatType: "REPEAT_UNTIL_STEPS_CMPLT",
51
47
  repeatValue: reps,
52
- steps: transformSteps(nestedSteps),
53
48
  };
54
49
  result.push(repeatStep);
50
+ // Flatten nested steps after the repeat step
51
+ for (const nested of transformSteps(nestedSteps)) {
52
+ result.push(nested);
53
+ }
55
54
  }
56
55
  else {
57
56
  const workoutStep = transformSingleStep(step, order++);
@@ -67,33 +66,26 @@ function transformSingleStep(step, stepOrder) {
67
66
  type: "WorkoutStep",
68
67
  stepOrder,
69
68
  intensity: mapIntensity(step.intensity),
70
- description: step.description ?? null,
69
+ description: step.description ?? undefined,
71
70
  durationType,
72
71
  durationValue,
73
72
  durationValueType,
74
73
  targetType,
75
- targetValue: null,
76
74
  targetValueLow,
77
75
  targetValueHigh,
78
76
  targetValueType,
79
- secondaryTargetType: null,
80
- secondaryTargetValue: null,
81
- secondaryTargetValueLow: null,
82
- secondaryTargetValueHigh: null,
83
- secondaryTargetValueType: null,
84
- strokeType: step.stroke_type ?? null,
85
- drillType: null,
86
- equipmentType: step.equipment_type ?? null,
87
- exerciseCategory: step.exercise_category ?? null,
88
- exerciseName: step.exercise_name ?? null,
89
- weightValue: step.weight_kg ?? null,
90
- weightDisplayUnit: step.weight_kg != null ? "KILOGRAM" : null,
77
+ strokeType: step.stroke_type,
78
+ equipmentType: step.equipment_type,
79
+ exerciseCategory: step.exercise_category ?? undefined,
80
+ exerciseName: step.exercise_name ?? undefined,
81
+ weightValue: step.weight_kg ?? undefined,
82
+ weightDisplayUnit: step.weight_kg != null ? "KILOGRAM" : undefined,
91
83
  };
92
84
  }
93
85
  function extractDuration(step) {
94
86
  const durations = step.durations;
95
87
  if (!durations || durations.length === 0) {
96
- return { durationType: "OPEN", durationValue: null, durationValueType: null };
88
+ return { durationType: "OPEN", durationValue: undefined, durationValueType: undefined };
97
89
  }
98
90
  const dur = durations[0];
99
91
  const type = String(dur.duration_type ?? "OPEN").toUpperCase();
@@ -101,66 +93,66 @@ function extractDuration(step) {
101
93
  case "TIME":
102
94
  return {
103
95
  durationType: "TIME",
104
- durationValue: dur.seconds ?? null,
105
- durationValueType: null,
96
+ durationValue: dur.seconds ?? undefined,
97
+ durationValueType: undefined,
106
98
  };
107
99
  case "DISTANCE_METERS":
108
100
  case "DISTANCE":
109
101
  return {
110
102
  durationType: "DISTANCE",
111
- durationValue: dur.distance_meters ?? null,
112
- durationValueType: null,
103
+ durationValue: dur.distance_meters ?? undefined,
104
+ durationValueType: undefined,
113
105
  };
114
106
  case "HR_LESS_THAN":
115
107
  return {
116
108
  durationType: "HR_LESS_THAN",
117
- durationValue: dur.hr_below_bpm ?? null,
118
- durationValueType: null,
109
+ durationValue: dur.hr_below_bpm ?? undefined,
110
+ durationValueType: undefined,
119
111
  };
120
112
  case "HR_GREATER_THAN":
121
113
  return {
122
114
  durationType: "HR_GREATER_THAN",
123
- durationValue: dur.hr_above_bpm ?? null,
124
- durationValueType: null,
115
+ durationValue: dur.hr_above_bpm ?? undefined,
116
+ durationValueType: undefined,
125
117
  };
126
118
  case "CALORIES":
127
119
  return {
128
120
  durationType: "CALORIES",
129
- durationValue: dur.calories ?? null,
130
- durationValueType: null,
121
+ durationValue: dur.calories ?? undefined,
122
+ durationValueType: undefined,
131
123
  };
132
124
  case "POWER_LESS_THAN":
133
125
  return {
134
126
  durationType: "POWER_LESS_THAN",
135
- durationValue: dur.power_below_watts ?? null,
136
- durationValueType: null,
127
+ durationValue: dur.power_below_watts ?? undefined,
128
+ durationValueType: undefined,
137
129
  };
138
130
  case "POWER_GREATER_THAN":
139
131
  return {
140
132
  durationType: "POWER_GREATER_THAN",
141
- durationValue: dur.power_above_watts ?? null,
142
- durationValueType: null,
133
+ durationValue: dur.power_above_watts ?? undefined,
134
+ durationValueType: undefined,
143
135
  };
144
136
  case "REPS":
145
137
  return {
146
138
  durationType: "REPS",
147
- durationValue: dur.reps ?? null,
148
- durationValueType: null,
139
+ durationValue: dur.reps ?? undefined,
140
+ durationValueType: undefined,
149
141
  };
150
142
  case "FIXED_REST":
151
143
  return {
152
144
  durationType: "FIXED_REST",
153
- durationValue: dur.rest_seconds ?? dur.seconds ?? null,
154
- durationValueType: null,
145
+ durationValue: dur.rest_seconds ?? dur.seconds ?? undefined,
146
+ durationValueType: undefined,
155
147
  };
156
148
  default:
157
- return { durationType: "OPEN", durationValue: null, durationValueType: null };
149
+ return { durationType: "OPEN", durationValue: undefined, durationValueType: undefined };
158
150
  }
159
151
  }
160
152
  function extractTarget(step) {
161
153
  const targets = step.targets;
162
154
  if (!targets || targets.length === 0) {
163
- return { targetType: null, targetValueLow: null, targetValueHigh: null, targetValueType: null };
155
+ return { targetType: undefined, targetValueLow: undefined, targetValueHigh: undefined, targetValueType: undefined };
164
156
  }
165
157
  const target = targets[0];
166
158
  const type = String(target.target_type ?? "OPEN").toUpperCase();
@@ -169,54 +161,53 @@ function extractTarget(step) {
169
161
  if (target.hr_percentage_low != null || target.hr_percentage_high != null) {
170
162
  return {
171
163
  targetType: "HEART_RATE",
172
- targetValueLow: target.hr_percentage_low ?? null,
173
- targetValueHigh: target.hr_percentage_high ?? null,
164
+ targetValueLow: target.hr_percentage_low ?? undefined,
165
+ targetValueHigh: target.hr_percentage_high ?? undefined,
174
166
  targetValueType: "PERCENT",
175
167
  };
176
168
  }
177
169
  return {
178
170
  targetType: "HEART_RATE",
179
- targetValueLow: target.hr_bpm_low ?? null,
180
- targetValueHigh: target.hr_bpm_high ?? null,
181
- targetValueType: null,
171
+ targetValueLow: target.hr_bpm_low ?? undefined,
172
+ targetValueHigh: target.hr_bpm_high ?? undefined,
173
+ targetValueType: undefined,
182
174
  };
183
175
  case "SPEED":
184
176
  case "PACE":
185
177
  return {
186
178
  targetType: "SPEED",
187
- targetValueLow: target.speed_meters_per_second ?? null,
188
- targetValueHigh: target.speed_meters_per_second ?? null,
189
- targetValueType: null,
179
+ targetValueLow: target.speed_meters_per_second ?? undefined,
180
+ targetValueHigh: target.speed_meters_per_second ?? undefined,
181
+ targetValueType: undefined,
190
182
  };
191
183
  case "CADENCE":
192
184
  return {
193
185
  targetType: "CADENCE",
194
- targetValueLow: target.cadence_low ?? target.cadence ?? null,
195
- targetValueHigh: target.cadence_high ?? target.cadence ?? null,
196
- targetValueType: null,
186
+ targetValueLow: target.cadence_low ?? target.cadence ?? undefined,
187
+ targetValueHigh: target.cadence_high ?? target.cadence ?? undefined,
188
+ targetValueType: undefined,
197
189
  };
198
190
  case "POWER":
199
191
  if (target.power_percentage_low != null || target.power_percentage_high != null) {
200
192
  return {
201
193
  targetType: "POWER",
202
- targetValueLow: target.power_percentage_low ?? null,
203
- targetValueHigh: target.power_percentage_high ?? null,
194
+ targetValueLow: target.power_percentage_low ?? undefined,
195
+ targetValueHigh: target.power_percentage_high ?? undefined,
204
196
  targetValueType: "PERCENT",
205
197
  };
206
198
  }
207
199
  return {
208
200
  targetType: "POWER",
209
- targetValueLow: target.power_watt_low ?? target.power_watt ?? null,
210
- targetValueHigh: target.power_watt_high ?? target.power_watt ?? null,
211
- targetValueType: null,
201
+ targetValueLow: target.power_watt_low ?? target.power_watt ?? undefined,
202
+ targetValueHigh: target.power_watt_high ?? target.power_watt ?? undefined,
203
+ targetValueType: undefined,
212
204
  };
213
205
  case "OPEN":
214
- return { targetType: "OPEN", targetValueLow: null, targetValueHigh: null, targetValueType: null };
206
+ return { targetType: "OPEN", targetValueLow: undefined, targetValueHigh: undefined, targetValueType: undefined };
215
207
  default:
216
- return { targetType: null, targetValueLow: null, targetValueHigh: null, targetValueType: null };
208
+ return { targetType: undefined, targetValueLow: undefined, targetValueHigh: undefined, targetValueType: undefined };
217
209
  }
218
210
  }
219
- // ─── Enum Mapping ────────────────────────────────────────────────────────────
220
211
  const SPORT_MAP = {
221
212
  RUNNING: "RUNNING",
222
213
  BIKING: "CYCLING",
@@ -231,7 +222,7 @@ const SPORT_MAP = {
231
222
  PILATES: "PILATES",
232
223
  MULTI_SPORT: "MULTI_SPORT",
233
224
  GENERIC: "GENERIC",
234
- HIIT: "CARDIO_TRAINING",
225
+ HIIT: "HIIT",
235
226
  };
236
227
  function mapSportType(type) {
237
228
  if (!type)
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plannedWorkout.js","sourceRoot":"","sources":["../../../../src/component/garmin/transform/plannedWorkout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { SomaDaily } from "../../validators/daily.js";
2
+ import type { ClientDailySpo2Acclimation } from "../types/wellnessApi/types.gen.js";
3
+ /**
4
+ * Transform a Garmin Pulse Ox push item into a Soma Daily document shape.
5
+ *
6
+ * Pulse Ox summaries are ingested into the `daily` table via `ingestDaily`,
7
+ * keyed by `metadata.start_time + metadata.end_time`.
8
+ *
9
+ * Returns `null` when no meaningful data is present.
10
+ */
11
+ export declare function transformPulseOx(pulseOx: ClientDailySpo2Acclimation): SomaDaily | null;
12
+ //# sourceMappingURL=pulseOx.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pulseOx.d.ts","sourceRoot":"","sources":["../../../../src/component/garmin/transform/pulseOx.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAEpF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,0BAA0B,GAAG,SAAS,GAAG,IAAI,CAoBtF"}
@@ -0,0 +1,46 @@
1
+ // ─── Pulse Ox Transformer ────────────────────────────────────────────────────
2
+ // Transforms a Garmin Pulse Ox push item into the Soma Daily schema shape.
3
+ //
4
+ // Pulse Ox summaries contain SpO2 (blood oxygen saturation) readings
5
+ // throughout the day. We map these into the Daily model's oxygen_data field.
6
+ /**
7
+ * Transform a Garmin Pulse Ox push item into a Soma Daily document shape.
8
+ *
9
+ * Pulse Ox summaries are ingested into the `daily` table via `ingestDaily`,
10
+ * keyed by `metadata.start_time + metadata.end_time`.
11
+ *
12
+ * Returns `null` when no meaningful data is present.
13
+ */
14
+ export function transformPulseOx(pulseOx) {
15
+ const startMs = (pulseOx.startTimeInSeconds ?? 0) * 1000;
16
+ const endMs = startMs + (pulseOx.durationInSeconds ?? 0) * 1000;
17
+ const oxygenData = buildOxygenData(pulseOx);
18
+ if (oxygenData == null) {
19
+ return null;
20
+ }
21
+ return {
22
+ metadata: {
23
+ start_time: new Date(startMs).toISOString(),
24
+ end_time: new Date(endMs).toISOString(),
25
+ upload_type: 1, // Automatic
26
+ },
27
+ oxygen_data: oxygenData,
28
+ };
29
+ }
30
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
31
+ function buildOxygenData(pulseOx) {
32
+ const hasSamples = pulseOx.timeOffsetSpo2Values != null &&
33
+ Object.keys(pulseOx.timeOffsetSpo2Values).length > 0;
34
+ if (!hasSamples) {
35
+ return undefined;
36
+ }
37
+ const startTime = pulseOx.startTimeInSeconds ?? 0;
38
+ const samples = Object.entries(pulseOx.timeOffsetSpo2Values ?? {}).map(([offset, percentage]) => ({
39
+ timestamp: new Date((startTime + parseInt(offset, 10)) * 1000).toISOString(),
40
+ percentage,
41
+ }));
42
+ return {
43
+ saturation_samples: samples.length > 0 ? samples : undefined,
44
+ };
45
+ }
46
+ //# sourceMappingURL=pulseOx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pulseOx.js","sourceRoot":"","sources":["../../../../src/component/garmin/transform/pulseOx.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,2EAA2E;AAC3E,EAAE;AACF,qEAAqE;AACrE,6EAA6E;AAK7E;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAmC;IAClE,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACzD,MAAM,KAAK,GACT,OAAO,GAAG,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAEpD,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAE5C,IAAI,UAAU,IAAI,IAAI,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,QAAQ,EAAE;YACR,UAAU,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE;YAC3C,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;YACvC,WAAW,EAAE,CAAC,EAAE,YAAY;SAC7B;QAED,WAAW,EAAE,UAAU;KACxB,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,SAAS,eAAe,CAAC,OAAmC;IAC1D,MAAM,UAAU,GACd,OAAO,CAAC,oBAAoB,IAAI,IAAI;QACpC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAEvD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,kBAAkB,IAAI,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,GAAG,CACpE,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC;QACzB,SAAS,EAAE,IAAI,IAAI,CACjB,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAC1C,CAAC,WAAW,EAAE;QACf,UAAU;KACX,CAAC,CACH,CAAC;IAEF,OAAO;QACL,kBAAkB,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;KAC7D,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { SomaDaily } from "../../validators/daily.js";
2
+ import type { ClientRespiration } from "../types/wellnessApi/types.gen.js";
3
+ /**
4
+ * Transform a Garmin Respiration push item into a Soma Daily document shape.
5
+ *
6
+ * Respiration summaries are ingested into the `daily` table via `ingestDaily`,
7
+ * keyed by `metadata.start_time + metadata.end_time`.
8
+ *
9
+ * Returns `null` when no meaningful data is present.
10
+ */
11
+ export declare function transformRespiration(resp: ClientRespiration): SomaDaily | null;
12
+ //# sourceMappingURL=respiration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"respiration.d.ts","sourceRoot":"","sources":["../../../../src/component/garmin/transform/respiration.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAE3E;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,iBAAiB,GAAG,SAAS,GAAG,IAAI,CAoB9E"}
@@ -0,0 +1,54 @@
1
+ // ─── Respiration Transformer ─────────────────────────────────────────────────
2
+ // Transforms a Garmin Respiration push item into the Soma Daily schema shape.
3
+ //
4
+ // Respiration summaries contain breathing rate readings throughout the day.
5
+ // We map these into the Daily model's respiration_data field.
6
+ /**
7
+ * Transform a Garmin Respiration push item into a Soma Daily document shape.
8
+ *
9
+ * Respiration summaries are ingested into the `daily` table via `ingestDaily`,
10
+ * keyed by `metadata.start_time + metadata.end_time`.
11
+ *
12
+ * Returns `null` when no meaningful data is present.
13
+ */
14
+ export function transformRespiration(resp) {
15
+ const startMs = (resp.startTimeInSeconds ?? 0) * 1000;
16
+ const endMs = startMs + (resp.durationInSeconds ?? 0) * 1000;
17
+ const respirationData = buildRespirationData(resp);
18
+ if (respirationData == null) {
19
+ return null;
20
+ }
21
+ return {
22
+ metadata: {
23
+ start_time: new Date(startMs).toISOString(),
24
+ end_time: new Date(endMs).toISOString(),
25
+ upload_type: 1, // Automatic
26
+ },
27
+ respiration_data: respirationData,
28
+ };
29
+ }
30
+ // ─── Helpers ──────────────────────────────────────────────────────────────────
31
+ function buildRespirationData(resp) {
32
+ const hasSamples = resp.timeOffsetEpochToBreaths != null &&
33
+ Object.keys(resp.timeOffsetEpochToBreaths).length > 0;
34
+ if (!hasSamples) {
35
+ return undefined;
36
+ }
37
+ const startTime = resp.startTimeInSeconds ?? 0;
38
+ const samples = Object.entries(resp.timeOffsetEpochToBreaths ?? {}).map(([offset, breaths_per_min]) => ({
39
+ timestamp: new Date((startTime + parseInt(offset, 10)) * 1000).toISOString(),
40
+ breaths_per_min,
41
+ }));
42
+ // Compute summary stats from samples
43
+ const values = samples.map((s) => s.breaths_per_min);
44
+ const avg = values.reduce((sum, v) => sum + v, 0) / values.length;
45
+ return {
46
+ breaths_data: {
47
+ avg_breaths_per_min: Math.round(avg * 10) / 10,
48
+ min_breaths_per_min: Math.min(...values),
49
+ max_breaths_per_min: Math.max(...values),
50
+ samples: samples.length > 0 ? samples : undefined,
51
+ },
52
+ };
53
+ }
54
+ //# sourceMappingURL=respiration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"respiration.js","sourceRoot":"","sources":["../../../../src/component/garmin/transform/respiration.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,8EAA8E;AAC9E,EAAE;AACF,4EAA4E;AAC5E,8DAA8D;AAK9D;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAuB;IAC1D,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACtD,MAAM,KAAK,GACT,OAAO,GAAG,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAEjD,MAAM,eAAe,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAEnD,IAAI,eAAe,IAAI,IAAI,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,QAAQ,EAAE;YACR,UAAU,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE;YAC3C,QAAQ,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE;YACvC,WAAW,EAAE,CAAC,EAAE,YAAY;SAC7B;QAED,gBAAgB,EAAE,eAAe;KAClC,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,SAAS,oBAAoB,CAAC,IAAuB;IACnD,MAAM,UAAU,GACd,IAAI,CAAC,wBAAwB,IAAI,IAAI;QACrC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAExD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAC;IAC/C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,IAAI,EAAE,CAAC,CAAC,GAAG,CACrE,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9B,SAAS,EAAE,IAAI,IAAI,CACjB,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAC1C,CAAC,WAAW,EAAE;QACf,eAAe;KAChB,CAAC,CACH,CAAC;IAEF,qCAAqC;IACrC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;IAElE,OAAO;QACL,YAAY,EAAE;YACZ,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,EAAE;YAC9C,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YACxC,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;YACxC,OAAO,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;SAClD;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { SomaBody } from "../../validators/body.js";
2
+ import type { ClientSkinTemp } from "../types/wellnessApi/types.gen.js";
3
+ /**
4
+ * Transform a Garmin Skin Temperature push item into a Soma Body document shape.
5
+ *
6
+ * Skin temperature records are ingested into the `body` table via `ingestBody`,
7
+ * keyed by `metadata.start_time + metadata.end_time`.
8
+ *
9
+ * Returns `null` when no meaningful temperature data is present.
10
+ */
11
+ export declare function transformSkinTemperature(skinTemp: ClientSkinTemp): SomaBody | null;
12
+ //# sourceMappingURL=skinTemperature.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skinTemperature.d.ts","sourceRoot":"","sources":["../../../../src/component/garmin/transform/skinTemperature.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAExE;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,cAAc,GAAG,QAAQ,GAAG,IAAI,CAyBlF"}
@@ -1,21 +1,24 @@
1
1
  // ─── Skin Temperature Transformer ────────────────────────────────────────────
2
- // Transforms Garmin skin temperature data into the Soma Body schema shape.
2
+ // Transforms a Garmin Skin Temperature push item into the Soma Body schema shape.
3
+ //
4
+ // Skin temperature summaries contain the average deviation of the user's
5
+ // skin temperature during their sleep window. We map this into the Body
6
+ // model's temperature_data.skin_temperature_samples field.
3
7
  /**
4
- * Transform a Garmin skin temperature record into a Soma Body document shape.
8
+ * Transform a Garmin Skin Temperature push item into a Soma Body document shape.
5
9
  *
6
- * @param skinTemp - The Garmin skin temperature data from the Health API
7
- * @returns Soma Body fields (without connectionId/userId)
10
+ * Skin temperature records are ingested into the `body` table via `ingestBody`,
11
+ * keyed by `metadata.start_time + metadata.end_time`.
12
+ *
13
+ * Returns `null` when no meaningful temperature data is present.
8
14
  */
9
- export function transformSkinTemp(skinTemp) {
15
+ export function transformSkinTemperature(skinTemp) {
10
16
  const startMs = (skinTemp.startTimeInSeconds ?? 0) * 1000;
11
17
  const endMs = startMs + (skinTemp.durationInSeconds ?? 0) * 1000;
12
18
  const startTime = new Date(startMs).toISOString();
13
19
  const endTime = new Date(endMs).toISOString();
14
20
  if (skinTemp.avgDeviationCelsius == null) {
15
- return {
16
- metadata: { start_time: startTime, end_time: endTime },
17
- temperature_data: undefined,
18
- };
21
+ return null;
19
22
  }
20
23
  return {
21
24
  metadata: {
@@ -32,4 +35,4 @@ export function transformSkinTemp(skinTemp) {
32
35
  },
33
36
  };
34
37
  }
35
- //# sourceMappingURL=skinTemp.js.map
38
+ //# sourceMappingURL=skinTemperature.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skinTemperature.js","sourceRoot":"","sources":["../../../../src/component/garmin/transform/skinTemperature.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,kFAAkF;AAClF,EAAE;AACF,yEAAyE;AACzE,wEAAwE;AACxE,2DAA2D;AAK3D;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB,CAAC,QAAwB;IAC/D,MAAM,OAAO,GAAG,CAAC,QAAQ,CAAC,kBAAkB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAC1D,MAAM,KAAK,GAAG,OAAO,GAAG,CAAC,QAAQ,CAAC,iBAAiB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACjE,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAE9C,IAAI,QAAQ,CAAC,mBAAmB,IAAI,IAAI,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,QAAQ,EAAE;YACR,UAAU,EAAE,SAAS;YACrB,QAAQ,EAAE,OAAO;SAClB;QAED,gBAAgB,EAAE;YAChB,wBAAwB,EAAE;gBACxB;oBACE,SAAS,EAAE,SAAS;oBACpB,mBAAmB,EAAE,QAAQ,CAAC,mBAAmB;iBAClD;aACF;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -1,12 +1,14 @@
1
- import type { GarminSleepExtended } from "./types.js";
2
- export type SleepData = ReturnType<typeof transformSleep>;
1
+ import type { ClientSleep } from "../types/wellnessApi/types.gen.js";
3
2
  /**
4
- * Transform a Garmin sleep session into a Soma Sleep document shape.
3
+ * Transform a Garmin sleep summary push item into a Soma Sleep document shape.
5
4
  *
6
- * @param sleep - The Garmin sleep data from the Health API
7
- * @returns Soma Sleep fields (without connectionId/userId)
5
+ * Sleep summaries are ingested into the `sleep` table via `ingestSleep`,
6
+ * keyed by `metadata.summary_id`.
7
+ *
8
+ * The returned object is ready to be spread into an `ingestSleep` call
9
+ * alongside `connectionId` and `userId`.
8
10
  */
9
- export declare function transformSleep(sleep: GarminSleepExtended): {
11
+ export declare function transformSleeps(sleep: ClientSleep): {
10
12
  metadata: {
11
13
  summary_id: string | undefined;
12
14
  start_time: string;
@@ -32,31 +34,22 @@ export declare function transformSleep(sleep: GarminSleepExtended): {
32
34
  level: number;
33
35
  }[] | undefined;
34
36
  };
35
- heart_rate_data: {
36
- detailed: {
37
- hr_samples: {
38
- timestamp: string;
39
- bpm: number;
40
- }[];
41
- };
42
- } | undefined;
43
37
  respiration_data: {
44
38
  breaths_data: {
45
- avg_breaths_per_min: number | undefined;
46
- min_breaths_per_min: number | undefined;
47
- max_breaths_per_min: number | undefined;
48
39
  samples: {
49
40
  timestamp: string;
50
41
  breaths_per_min: number;
51
- }[] | undefined;
42
+ }[];
52
43
  } | undefined;
53
44
  oxygen_saturation_data: {
54
- avg_saturation_percentage: number | undefined;
55
45
  samples: {
56
46
  timestamp: string;
57
47
  percentage: number;
58
48
  }[];
59
49
  } | undefined;
60
50
  } | undefined;
51
+ scores: {
52
+ sleep: number;
53
+ } | undefined;
61
54
  };
62
- //# sourceMappingURL=sleep.d.ts.map
55
+ //# sourceMappingURL=sleeps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sleeps.d.ts","sourceRoot":"","sources":["../../../../src/component/garmin/transform/sleeps.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAOrE;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW;;;;;;;;;;;;;;;;;;;;;;uBA+Dd,MAAM;mBAAS,MAAM;;;;;;;;;;;;;;;;;;;;EA/BxD"}