@nativesquare/soma 0.8.0 → 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.
Files changed (325) 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 +80 -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 +135 -261
  9. package/dist/component/_generated/component.d.ts.map +1 -1
  10. package/dist/component/garmin/private.d.ts +475 -0
  11. package/dist/component/garmin/private.d.ts.map +1 -0
  12. package/dist/component/garmin/private.js +1614 -0
  13. package/dist/component/garmin/private.js.map +1 -0
  14. package/dist/component/garmin/public.d.ts +155 -0
  15. package/dist/component/garmin/public.d.ts.map +1 -0
  16. package/dist/component/garmin/public.js +787 -0
  17. package/dist/component/garmin/public.js.map +1 -0
  18. package/dist/component/garmin/schemas/activity.d.ts +94 -0
  19. package/dist/component/garmin/schemas/activity.d.ts.map +1 -0
  20. package/dist/component/garmin/schemas/activity.js +27 -0
  21. package/dist/component/garmin/schemas/activity.js.map +1 -0
  22. package/dist/component/garmin/schemas/activityDetails.d.ts +146 -0
  23. package/dist/component/garmin/schemas/activityDetails.d.ts.map +1 -0
  24. package/dist/component/garmin/schemas/activityDetails.js +27 -0
  25. package/dist/component/garmin/schemas/activityDetails.js.map +1 -0
  26. package/dist/component/garmin/schemas/bloodPressure.d.ts +38 -0
  27. package/dist/component/garmin/schemas/bloodPressure.d.ts.map +1 -0
  28. package/dist/component/garmin/schemas/bloodPressure.js +27 -0
  29. package/dist/component/garmin/schemas/bloodPressure.js.map +1 -0
  30. package/dist/component/garmin/schemas/bodyCompositions.d.ts +42 -0
  31. package/dist/component/garmin/schemas/bodyCompositions.d.ts.map +1 -0
  32. package/dist/component/garmin/schemas/bodyCompositions.js +27 -0
  33. package/dist/component/garmin/schemas/bodyCompositions.js.map +1 -0
  34. package/dist/component/garmin/schemas/dailies.d.ts +98 -0
  35. package/dist/component/garmin/schemas/dailies.d.ts.map +1 -0
  36. package/dist/component/garmin/schemas/dailies.js +27 -0
  37. package/dist/component/garmin/schemas/dailies.js.map +1 -0
  38. package/dist/component/garmin/schemas/epochs.d.ts +54 -0
  39. package/dist/component/garmin/schemas/epochs.d.ts.map +1 -0
  40. package/dist/component/garmin/schemas/epochs.js +27 -0
  41. package/dist/component/garmin/schemas/epochs.js.map +1 -0
  42. package/dist/component/garmin/schemas/healthSnapshot.d.ts +48 -0
  43. package/dist/component/garmin/schemas/healthSnapshot.d.ts.map +1 -0
  44. package/dist/component/garmin/schemas/healthSnapshot.js +27 -0
  45. package/dist/component/garmin/schemas/healthSnapshot.js.map +1 -0
  46. package/dist/component/garmin/schemas/hrvSummary.d.ts +40 -0
  47. package/dist/component/garmin/schemas/hrvSummary.d.ts.map +1 -0
  48. package/dist/component/garmin/schemas/hrvSummary.js +27 -0
  49. package/dist/component/garmin/schemas/hrvSummary.js.map +1 -0
  50. package/dist/component/garmin/schemas/manuallyUpdatedActivities.d.ts +94 -0
  51. package/dist/component/garmin/schemas/manuallyUpdatedActivities.d.ts.map +1 -0
  52. package/dist/component/garmin/schemas/manuallyUpdatedActivities.js +27 -0
  53. package/dist/component/garmin/schemas/manuallyUpdatedActivities.js.map +1 -0
  54. package/dist/component/garmin/schemas/menstrualCycleTracking.d.ts +100 -0
  55. package/dist/component/garmin/schemas/menstrualCycleTracking.d.ts.map +1 -0
  56. package/dist/component/garmin/schemas/menstrualCycleTracking.js +28 -0
  57. package/dist/component/garmin/schemas/menstrualCycleTracking.js.map +1 -0
  58. package/dist/component/garmin/schemas/moveIQ.d.ts +40 -0
  59. package/dist/component/garmin/schemas/moveIQ.d.ts.map +1 -0
  60. package/dist/component/garmin/schemas/moveIQ.js +27 -0
  61. package/dist/component/garmin/schemas/moveIQ.js.map +1 -0
  62. package/dist/component/garmin/schemas/pulseOx.d.ts +38 -0
  63. package/dist/component/garmin/schemas/pulseOx.d.ts.map +1 -0
  64. package/dist/component/garmin/schemas/pulseOx.js +28 -0
  65. package/dist/component/garmin/schemas/pulseOx.js.map +1 -0
  66. package/dist/component/garmin/schemas/respiration.d.ts +34 -0
  67. package/dist/component/garmin/schemas/respiration.d.ts.map +1 -0
  68. package/dist/component/garmin/schemas/respiration.js +28 -0
  69. package/dist/component/garmin/schemas/respiration.js.map +1 -0
  70. package/dist/component/garmin/schemas/skinTemperature.d.ts +36 -0
  71. package/dist/component/garmin/schemas/skinTemperature.d.ts.map +1 -0
  72. package/dist/component/garmin/schemas/skinTemperature.js +28 -0
  73. package/dist/component/garmin/schemas/skinTemperature.js.map +1 -0
  74. package/dist/component/garmin/schemas/sleeps.d.ts +88 -0
  75. package/dist/component/garmin/schemas/sleeps.d.ts.map +1 -0
  76. package/dist/component/garmin/schemas/sleeps.js +27 -0
  77. package/dist/component/garmin/schemas/sleeps.js.map +1 -0
  78. package/dist/component/garmin/schemas/stress.d.ts +70 -0
  79. package/dist/component/garmin/schemas/stress.d.ts.map +1 -0
  80. package/dist/component/garmin/schemas/stress.js +28 -0
  81. package/dist/component/garmin/schemas/stress.js.map +1 -0
  82. package/dist/component/garmin/schemas/userMetrics.d.ts +36 -0
  83. package/dist/component/garmin/schemas/userMetrics.d.ts.map +1 -0
  84. package/dist/component/garmin/schemas/userMetrics.js +28 -0
  85. package/dist/component/garmin/schemas/userMetrics.js.map +1 -0
  86. package/dist/component/garmin/transform/activity.d.ts +13 -0
  87. package/dist/component/garmin/transform/activity.d.ts.map +1 -0
  88. package/dist/component/garmin/transform/activity.js +111 -0
  89. package/dist/component/garmin/transform/activity.js.map +1 -0
  90. package/dist/component/garmin/transform/activityDetails.d.ts +13 -0
  91. package/dist/component/garmin/transform/activityDetails.d.ts.map +1 -0
  92. package/dist/component/garmin/transform/activityDetails.js +173 -0
  93. package/dist/component/garmin/transform/activityDetails.js.map +1 -0
  94. package/dist/component/garmin/transform/bloodPressure.d.ts +12 -0
  95. package/dist/component/garmin/transform/bloodPressure.d.ts.map +1 -0
  96. package/dist/component/garmin/transform/bloodPressure.js +33 -0
  97. package/dist/component/garmin/transform/bloodPressure.js.map +1 -0
  98. package/dist/component/garmin/transform/bodyCompositions.d.ts +12 -0
  99. package/dist/component/garmin/transform/bodyCompositions.d.ts.map +1 -0
  100. package/dist/component/garmin/transform/bodyCompositions.js +42 -0
  101. package/dist/component/garmin/transform/bodyCompositions.js.map +1 -0
  102. package/dist/component/garmin/transform/dailies.d.ts +12 -0
  103. package/dist/component/garmin/transform/dailies.d.ts.map +1 -0
  104. package/dist/component/garmin/transform/dailies.js +132 -0
  105. package/dist/component/garmin/transform/dailies.js.map +1 -0
  106. package/dist/component/garmin/transform/epochs.d.ts +13 -0
  107. package/dist/component/garmin/transform/epochs.d.ts.map +1 -0
  108. package/dist/component/garmin/transform/epochs.js +76 -0
  109. package/dist/component/garmin/transform/epochs.js.map +1 -0
  110. package/dist/component/garmin/transform/healthSnapshot.d.ts +12 -0
  111. package/dist/component/garmin/transform/healthSnapshot.d.ts.map +1 -0
  112. package/dist/component/garmin/transform/healthSnapshot.js +111 -0
  113. package/dist/component/garmin/transform/healthSnapshot.js.map +1 -0
  114. package/dist/component/garmin/transform/hrvSummary.d.ts +12 -0
  115. package/dist/component/garmin/transform/hrvSummary.d.ts.map +1 -0
  116. package/dist/component/garmin/transform/hrvSummary.js +45 -0
  117. package/dist/component/garmin/transform/hrvSummary.js.map +1 -0
  118. package/dist/component/garmin/transform/manuallyUpdatedActivities.d.ts +11 -0
  119. package/dist/component/garmin/transform/manuallyUpdatedActivities.d.ts.map +1 -0
  120. package/dist/component/garmin/transform/manuallyUpdatedActivities.js +20 -0
  121. package/dist/component/garmin/transform/manuallyUpdatedActivities.js.map +1 -0
  122. package/dist/component/garmin/transform/menstrualCycleTracking.d.ts +10 -0
  123. package/dist/component/garmin/transform/menstrualCycleTracking.d.ts.map +1 -0
  124. package/dist/component/garmin/transform/menstrualCycleTracking.js +43 -0
  125. package/dist/component/garmin/transform/menstrualCycleTracking.js.map +1 -0
  126. package/dist/component/garmin/transform/moveIQ.d.ts +17 -0
  127. package/dist/component/garmin/transform/moveIQ.d.ts.map +1 -0
  128. package/dist/component/garmin/transform/moveIQ.js +41 -0
  129. package/dist/component/garmin/transform/moveIQ.js.map +1 -0
  130. package/dist/component/garmin/transform/pulseOx.d.ts +12 -0
  131. package/dist/component/garmin/transform/pulseOx.d.ts.map +1 -0
  132. package/dist/component/garmin/transform/pulseOx.js +46 -0
  133. package/dist/component/garmin/transform/pulseOx.js.map +1 -0
  134. package/dist/component/garmin/transform/respiration.d.ts +12 -0
  135. package/dist/component/garmin/transform/respiration.d.ts.map +1 -0
  136. package/dist/component/garmin/transform/respiration.js +54 -0
  137. package/dist/component/garmin/transform/respiration.js.map +1 -0
  138. package/dist/component/garmin/transform/skinTemperature.d.ts +12 -0
  139. package/dist/component/garmin/transform/skinTemperature.d.ts.map +1 -0
  140. package/dist/component/garmin/transform/skinTemperature.js +38 -0
  141. package/dist/component/garmin/transform/skinTemperature.js.map +1 -0
  142. package/dist/component/garmin/transform/sleeps.d.ts +55 -0
  143. package/dist/component/garmin/transform/sleeps.d.ts.map +1 -0
  144. package/dist/component/garmin/transform/sleeps.js +120 -0
  145. package/dist/component/garmin/transform/sleeps.js.map +1 -0
  146. package/dist/component/garmin/transform/stress.d.ts +12 -0
  147. package/dist/component/garmin/transform/stress.d.ts.map +1 -0
  148. package/dist/component/garmin/transform/stress.js +56 -0
  149. package/dist/component/garmin/transform/stress.js.map +1 -0
  150. package/dist/component/garmin/transform/userMetrics.d.ts +12 -0
  151. package/dist/component/garmin/transform/userMetrics.d.ts.map +1 -0
  152. package/dist/component/garmin/transform/userMetrics.js +48 -0
  153. package/dist/component/garmin/transform/userMetrics.js.map +1 -0
  154. package/dist/component/garmin/types/garmin.d.ts +21 -0
  155. package/dist/component/garmin/types/garmin.d.ts.map +1 -0
  156. package/dist/component/garmin/types/garmin.js +6 -0
  157. package/dist/component/garmin/types/garmin.js.map +1 -0
  158. package/dist/component/garmin/types/zod/zod.gen.d.ts +1319 -0
  159. package/dist/component/garmin/types/zod/zod.gen.d.ts.map +1 -0
  160. package/dist/component/garmin/types/zod/zod.gen.js +784 -0
  161. package/dist/component/garmin/types/zod/zod.gen.js.map +1 -0
  162. package/dist/component/garmin/webhooks.d.ts +141 -0
  163. package/dist/component/garmin/webhooks.d.ts.map +1 -0
  164. package/dist/component/garmin/webhooks.js +766 -0
  165. package/dist/component/garmin/webhooks.js.map +1 -0
  166. package/dist/component/private.d.ts +4 -4
  167. package/dist/component/public.d.ts +333 -333
  168. package/dist/component/schema.d.ts +133 -133
  169. package/dist/component/strava/private.d.ts +30 -0
  170. package/dist/component/strava/private.d.ts.map +1 -0
  171. package/dist/component/strava/private.js +71 -0
  172. package/dist/component/strava/private.js.map +1 -0
  173. package/dist/component/{strava.d.ts → strava/public.d.ts} +3 -31
  174. package/dist/component/strava/public.d.ts.map +1 -0
  175. package/dist/component/{strava.js → strava/public.js} +22 -101
  176. package/dist/component/strava/public.js.map +1 -0
  177. package/dist/component/validators/activity.d.ts +6 -0
  178. package/dist/component/validators/activity.d.ts.map +1 -1
  179. package/dist/component/validators/activity.js.map +1 -1
  180. package/dist/component/validators/body.d.ts +20 -14
  181. package/dist/component/validators/body.d.ts.map +1 -1
  182. package/dist/component/validators/body.js.map +1 -1
  183. package/dist/component/validators/daily.d.ts +6 -0
  184. package/dist/component/validators/daily.d.ts.map +1 -1
  185. package/dist/component/validators/daily.js.map +1 -1
  186. package/dist/component/validators/enums.d.ts +1 -1
  187. package/dist/component/validators/menstruation.d.ts +5 -0
  188. package/dist/component/validators/menstruation.d.ts.map +1 -1
  189. package/dist/component/validators/menstruation.js.map +1 -1
  190. package/dist/garmin/client.js.map +1 -1
  191. package/dist/garmin/index.d.ts +0 -2
  192. package/dist/garmin/index.d.ts.map +1 -1
  193. package/dist/garmin/index.js +0 -1
  194. package/dist/garmin/index.js.map +1 -1
  195. package/dist/garmin/sync.d.ts.map +1 -1
  196. package/dist/garmin/sync.js +3 -2
  197. package/dist/garmin/sync.js.map +1 -1
  198. package/dist/garmin/types.d.ts +1 -1
  199. package/dist/garmin/types.d.ts.map +1 -1
  200. package/dist/validators.d.ts +31 -28
  201. package/dist/validators.d.ts.map +1 -1
  202. package/dist/validators.js +2 -2
  203. package/dist/validators.js.map +1 -1
  204. package/package.json +4 -7
  205. package/src/client/index.ts +41 -172
  206. package/src/component/_generated/api.ts +96 -4
  207. package/src/component/_generated/component.ts +252 -284
  208. package/src/{garmin → component/garmin}/auth.ts +8 -1
  209. package/src/component/garmin/client.ts +39 -0
  210. package/src/component/garmin/private.ts +1798 -0
  211. package/src/component/garmin/public.ts +938 -0
  212. package/src/component/garmin/schemas/activity.ts +40 -0
  213. package/src/component/garmin/schemas/activityDetails.ts +45 -0
  214. package/src/component/garmin/schemas/bloodPressure.ts +38 -0
  215. package/src/component/garmin/schemas/bodyCompositions.ts +38 -0
  216. package/src/component/garmin/schemas/dailies.ts +38 -0
  217. package/src/component/garmin/schemas/epochs.ts +38 -0
  218. package/src/component/garmin/schemas/healthSnapshot.ts +38 -0
  219. package/src/component/garmin/schemas/hrvSummary.ts +38 -0
  220. package/src/component/garmin/schemas/manuallyUpdatedActivities.ts +49 -0
  221. package/src/component/garmin/schemas/menstrualCycleTracking.ts +39 -0
  222. package/src/component/garmin/schemas/moveIQ.ts +38 -0
  223. package/src/component/garmin/schemas/pulseOx.ts +39 -0
  224. package/src/component/garmin/schemas/respiration.ts +39 -0
  225. package/src/component/garmin/schemas/skinTemperature.ts +39 -0
  226. package/src/component/garmin/schemas/sleeps.ts +38 -0
  227. package/src/component/garmin/schemas/stress.ts +43 -0
  228. package/src/component/garmin/schemas/userMetrics.ts +39 -0
  229. package/src/component/garmin/transform/activity.ts +143 -0
  230. package/src/component/garmin/transform/activityDetails.ts +236 -0
  231. package/src/{garmin → component/garmin/transform}/bloodPressure.ts +39 -41
  232. package/src/component/garmin/transform/bodyCompositions.ts +51 -0
  233. package/src/component/garmin/transform/dailies.ts +179 -0
  234. package/src/component/garmin/transform/epochs.ts +94 -0
  235. package/src/component/garmin/transform/healthSnapshot.ts +152 -0
  236. package/src/component/garmin/transform/hrvSummary.ts +56 -0
  237. package/src/component/garmin/transform/manuallyUpdatedActivities.ts +27 -0
  238. package/src/{garmin/maps/activity-type.ts → component/garmin/transform/maps/activityType.ts} +116 -116
  239. package/src/{garmin/maps/sleep-level.ts → component/garmin/transform/maps/sleepLevel.ts} +22 -22
  240. package/src/component/garmin/transform/menstrualCycleTracking.ts +48 -0
  241. package/src/component/garmin/transform/moveIQ.ts +48 -0
  242. package/src/{garmin → component/garmin/transform}/plannedWorkout.ts +328 -333
  243. package/src/component/garmin/transform/pulseOx.ts +64 -0
  244. package/src/component/garmin/transform/respiration.ts +73 -0
  245. package/src/component/garmin/transform/skinTemperature.ts +44 -0
  246. package/src/component/garmin/transform/sleeps.ts +159 -0
  247. package/src/component/garmin/transform/stress.ts +78 -0
  248. package/src/component/garmin/transform/userMetrics.ts +56 -0
  249. package/src/component/garmin/types/specs/training-api-workouts.json +699 -0
  250. package/src/component/garmin/types/trainingApiWorkouts/client/client.gen.ts +290 -0
  251. package/src/component/garmin/types/trainingApiWorkouts/client/index.ts +25 -0
  252. package/src/component/garmin/types/trainingApiWorkouts/client/types.gen.ts +214 -0
  253. package/src/component/garmin/types/trainingApiWorkouts/client/utils.gen.ts +316 -0
  254. package/src/component/garmin/types/trainingApiWorkouts/client.gen.ts +16 -0
  255. package/src/component/garmin/types/trainingApiWorkouts/core/auth.gen.ts +41 -0
  256. package/src/component/garmin/types/trainingApiWorkouts/core/bodySerializer.gen.ts +82 -0
  257. package/src/component/garmin/types/trainingApiWorkouts/core/params.gen.ts +169 -0
  258. package/src/component/garmin/types/trainingApiWorkouts/core/pathSerializer.gen.ts +171 -0
  259. package/src/component/garmin/types/trainingApiWorkouts/core/queryKeySerializer.gen.ts +117 -0
  260. package/src/component/garmin/types/trainingApiWorkouts/core/serverSentEvents.gen.ts +243 -0
  261. package/src/component/garmin/types/trainingApiWorkouts/core/types.gen.ts +104 -0
  262. package/src/component/garmin/types/trainingApiWorkouts/core/utils.gen.ts +140 -0
  263. package/src/component/garmin/types/trainingApiWorkouts/index.ts +4 -0
  264. package/src/component/garmin/types/trainingApiWorkouts/sdk.gen.ts +126 -0
  265. package/src/component/garmin/types/trainingApiWorkouts/types.gen.ts +387 -0
  266. package/src/component/garmin/types/trainingApiWorkouts/zod.gen.ts +423 -0
  267. package/src/component/garmin/types/wellnessApi/client/client.gen.ts +290 -0
  268. package/src/component/garmin/types/wellnessApi/client/index.ts +25 -0
  269. package/src/component/garmin/types/wellnessApi/client/types.gen.ts +214 -0
  270. package/src/component/garmin/types/wellnessApi/client/utils.gen.ts +316 -0
  271. package/src/component/garmin/types/wellnessApi/client.gen.ts +16 -0
  272. package/src/component/garmin/types/wellnessApi/core/auth.gen.ts +41 -0
  273. package/src/component/garmin/types/wellnessApi/core/bodySerializer.gen.ts +82 -0
  274. package/src/component/garmin/types/wellnessApi/core/params.gen.ts +169 -0
  275. package/src/component/garmin/types/wellnessApi/core/pathSerializer.gen.ts +171 -0
  276. package/src/component/garmin/types/wellnessApi/core/queryKeySerializer.gen.ts +117 -0
  277. package/src/component/garmin/types/wellnessApi/core/serverSentEvents.gen.ts +243 -0
  278. package/src/component/garmin/types/wellnessApi/core/types.gen.ts +104 -0
  279. package/src/component/garmin/types/wellnessApi/core/utils.gen.ts +140 -0
  280. package/src/component/garmin/types/wellnessApi/index.ts +4 -0
  281. package/src/component/garmin/types/wellnessApi/sdk.gen.ts +207 -0
  282. package/src/component/garmin/types/wellnessApi/types.gen.ts +2942 -0
  283. package/src/component/garmin/types/wellnessApi/zod.gen.ts +878 -0
  284. package/src/component/garmin/utils.ts +25 -0
  285. package/src/component/garmin/webhooks.ts +852 -0
  286. package/src/component/strava/private.ts +89 -0
  287. package/src/component/{strava.ts → strava/public.ts} +341 -404
  288. package/src/component/validators/activity.ts +5 -0
  289. package/src/component/validators/body.ts +5 -0
  290. package/src/component/validators/daily.ts +5 -0
  291. package/src/component/validators/menstruation.ts +5 -1
  292. package/src/component/validators/plannedWorkout.ts +5 -0
  293. package/src/validators.ts +12 -2
  294. package/dist/component/garmin.d.ts +0 -366
  295. package/dist/component/garmin.d.ts.map +0 -1
  296. package/dist/component/garmin.js +0 -1481
  297. package/dist/component/garmin.js.map +0 -1
  298. package/dist/component/strava.d.ts.map +0 -1
  299. package/dist/component/strava.js.map +0 -1
  300. package/dist/garmin/activity.d.ts +0 -92
  301. package/dist/garmin/activity.d.ts.map +0 -1
  302. package/dist/garmin/activity.js +0 -201
  303. package/dist/garmin/activity.js.map +0 -1
  304. package/src/component/garmin.ts +0 -1722
  305. package/src/garmin/activity.test.ts +0 -170
  306. package/src/garmin/activity.ts +0 -265
  307. package/src/garmin/auth.test.ts +0 -103
  308. package/src/garmin/body.ts +0 -59
  309. package/src/garmin/client.ts +0 -886
  310. package/src/garmin/daily.ts +0 -215
  311. package/src/garmin/hrv.ts +0 -57
  312. package/src/garmin/index.ts +0 -145
  313. package/src/garmin/maps/activity-type.test.ts +0 -78
  314. package/src/garmin/menstruation.ts +0 -44
  315. package/src/garmin/pulseOx.ts +0 -45
  316. package/src/garmin/respiration.ts +0 -55
  317. package/src/garmin/skinTemp.ts +0 -42
  318. package/src/garmin/sleep.test.ts +0 -109
  319. package/src/garmin/sleep.ts +0 -176
  320. package/src/garmin/stressDetails.ts +0 -71
  321. package/src/garmin/sync.ts +0 -566
  322. package/src/garmin/types.ts +0 -268
  323. package/src/garmin/userMetrics.ts +0 -50
  324. package/src/garmin/wellness-api.d.ts +0 -5637
  325. /package/src/{garmin/spec → component/garmin/types/specs}/wellness-api.json +0 -0
@@ -1,268 +0,0 @@
1
- // ─── Garmin Health API Response Types ────────────────────────────────────────
2
- // TypeScript types representing Garmin Health API data shapes.
3
- //
4
- // Wellness API types are derived from the OpenAPI spec (wellness-api.d.ts).
5
- // Training API types are manually defined from the Garmin Connect docs.
6
- //
7
- // These types define the CONTRACT for data coming from the Garmin API.
8
- // They are used by transformers, the API client, and OAuth helpers.
9
-
10
- import type { components } from "./wellness-api.js";
11
-
12
- // ─── Wellness API Type Aliases ──────────────────────────────────────────────
13
- // Convenience aliases for the generated OpenAPI schema types.
14
-
15
- export type GarminDaily = components["schemas"]["ClientDaily"];
16
- export type GarminActivity = components["schemas"]["ClientActivity"];
17
- export type GarminActivityDetail = components["schemas"]["ClientActivityDetail"];
18
- export type GarminSleep = components["schemas"]["ClientSleep"];
19
- export type GarminBodyComposition = components["schemas"]["ClientBodyComp"];
20
- export type GarminMenstrualCycle = components["schemas"]["ClientSummarizedMenstrualCycle"];
21
- export type GarminUserMetrics = components["schemas"]["ClientUserMetrics"];
22
- export type GarminStressDetail = components["schemas"]["ClientStress"];
23
- export type GarminSkinTemperature = components["schemas"]["ClientSkinTemp"];
24
- export type GarminRespiration = components["schemas"]["ClientRespiration"];
25
- export type GarminPulseOx = components["schemas"]["ClientDailySpo2Acclimation"];
26
- export type GarminMoveIQEvent = components["schemas"]["ClientAutoActivityMoveIq"];
27
- export type GarminHRVSummary = components["schemas"]["ClientHRVSummary"];
28
- export type GarminHealthSnapshot = components["schemas"]["ClientHealthSnapshot"];
29
- export type GarminEpoch = components["schemas"]["ClientEpoch"];
30
- export type GarminBloodPressure = components["schemas"]["ClientBloodPressure"];
31
- export type GarminSolar = components["schemas"]["ClientSolar"];
32
- export type GarminSample = components["schemas"]["Sample"];
33
- export type GarminLap = components["schemas"]["ClientLap"];
34
- export type GarminTimeRange = components["schemas"]["TimeRange"];
35
- export type GarminSleepScoreItem = components["schemas"]["ClientSleepScoreItem"];
36
- export type GarminNap = components["schemas"]["ClientNaps"];
37
-
38
- // ─── Extended Types ─────────────────────────────────────────────────────────
39
- // The Garmin API returns additional fields beyond what the OpenAPI spec
40
- // documents. These extended types add those fields so transformers can use them.
41
-
42
- // Extended daily type with fields the API returns beyond what the spec documents
43
- export type GarminDailyExtended = GarminDaily & {
44
- // Time-series stress data (returned by API, not in spec)
45
- timeOffsetStressLevelValues?: Record<string, number>;
46
- timeOffsetBodyBatteryValues?: Record<string, number>;
47
- // SpO2 data (returned by API, not in spec)
48
- averageSpo2Value?: number;
49
- lowestSpo2Value?: number;
50
- latestSpo2Value?: number;
51
- timeOffsetSpo2Values?: Record<string, number>;
52
- // Respiration data (returned by API, not in spec)
53
- averageRespirationInBreathsPerMinute?: number;
54
- lowestRespirationInBreathsPerMinute?: number;
55
- highestRespirationInBreathsPerMinute?: number;
56
- timeOffsetRespirationSamples?: Record<string, number>;
57
- };
58
-
59
- // Extended sleep type with fields the API returns beyond what the spec documents
60
- export type GarminSleepExtended = GarminSleep & {
61
- // Respiration aggregates (returned by API, not in spec)
62
- averageRespirationInBreathsPerMinute?: number;
63
- lowestRespirationInBreathsPerMinute?: number;
64
- highestRespirationInBreathsPerMinute?: number;
65
- // SpO2 aggregates (returned by API, not in spec)
66
- averageSpo2Value?: number;
67
- lowestSpo2Value?: number;
68
- highestSpo2Value?: number;
69
- // Heart rate samples (returned by API, not in spec)
70
- timeOffsetHeartRateSamples?: Record<string, number>;
71
- // Alternate SpO2 field name (some responses use this instead of timeOffsetSleepSpo2)
72
- timeOffsetSpo2Values?: Record<string, number>;
73
- };
74
-
75
- // Extended activity type for webhook payloads which include detail-level fields
76
- // (laps, samples, power) that the summary endpoint does not return.
77
- export type GarminActivityExtended = GarminActivity & {
78
- // Fields from /rest/activityDetails and webhook payloads
79
- laps?: GarminLap[];
80
- samples?: GarminSample[];
81
- bmrKilocalories?: number;
82
- averagePowerInWatts?: number;
83
- maxPowerInWatts?: number;
84
- normalizedPowerInWatts?: number;
85
- poolLengthInMeters?: number;
86
- // Webhook payloads may use these alternate field names
87
- elevationGainInMeters?: number;
88
- elevationLossInMeters?: number;
89
- };
90
-
91
- // ─── Backward Compatibility Aliases ─────────────────────────────────────────
92
-
93
- export type GarminDailySummary = GarminDailyExtended;
94
- export type GarminMenstrualCycleData = GarminMenstrualCycle;
95
- export type GarminSleepLevel = GarminTimeRange;
96
- export type GarminActivityLap = GarminLap;
97
- export type GarminActivitySample = GarminSample;
98
-
99
- // ─── OAuth 2.0 ──────────────────────────────────────────────────────────────
100
-
101
- export interface GarminOAuth2TokenResponse {
102
- access_token: string;
103
- refresh_token: string;
104
- expires_in: number;
105
- token_type: string;
106
- scope: string;
107
- refresh_token_expires_in: number;
108
- }
109
-
110
- // ─── Training API V2 Types ──────────────────────────────────────────────────
111
- // Types for the Garmin Connect Training API V2 (workout import/scheduling).
112
-
113
- export type GarminWorkoutSport =
114
- | "RUNNING"
115
- | "CYCLING"
116
- | "LAP_SWIMMING"
117
- | "STRENGTH_TRAINING"
118
- | "CARDIO_TRAINING"
119
- | "GENERIC"
120
- | "YOGA"
121
- | "PILATES"
122
- | "MULTI_SPORT"
123
- | (string & {});
124
-
125
- export type GarminStepIntensity =
126
- | "REST"
127
- | "WARMUP"
128
- | "COOLDOWN"
129
- | "RECOVERY"
130
- | "ACTIVE"
131
- | "INTERVAL"
132
- | "MAIN"
133
- | (string & {});
134
-
135
- export type GarminDurationType =
136
- | "TIME"
137
- | "DISTANCE"
138
- | "HR_LESS_THAN"
139
- | "HR_GREATER_THAN"
140
- | "CALORIES"
141
- | "OPEN"
142
- | "POWER_LESS_THAN"
143
- | "POWER_GREATER_THAN"
144
- | "TIME_AT_VALID_CDA"
145
- | "FIXED_REST"
146
- | "REPS"
147
- | "FIXED_REPETITION"
148
- | "REPETITION_SWIM_CSS_OFFSET"
149
- | (string & {});
150
-
151
- export type GarminTargetType =
152
- | "SPEED"
153
- | "HEART_RATE"
154
- | "CADENCE"
155
- | "POWER"
156
- | "GRADE"
157
- | "RESISTANCE"
158
- | "POWER_3S"
159
- | "POWER_10S"
160
- | "POWER_30S"
161
- | "POWER_LAP"
162
- | "SPEED_LAP"
163
- | "HEART_RATE_LAP"
164
- | "OPEN"
165
- | "PACE"
166
- | (string & {});
167
-
168
- export type GarminRepeatType =
169
- | "REPEAT_UNTIL_STEPS_CMPLT"
170
- | "REPEAT_UNTIL_TIME"
171
- | "REPEAT_UNTIL_DISTANCE"
172
- | "REPEAT_UNTIL_CALORIES"
173
- | "REPEAT_UNTIL_HR_LESS_THAN"
174
- | "REPEAT_UNTIL_HR_GREATER_THAN"
175
- | "REPEAT_UNTIL_POWER_LESS_THAN"
176
- | "REPEAT_UNTIL_POWER_GREATER_THAN"
177
- | "REPEAT_UNTIL_POWER_LAST_LAP_LESS_THAN"
178
- | "REPEAT_UNTIL_MAX_POWER_LAST_LAP_LESS_THAN"
179
- | (string & {});
180
-
181
- export interface GarminWorkoutStep {
182
- type: "WorkoutStep";
183
- stepId?: number;
184
- stepOrder: number;
185
- intensity: GarminStepIntensity;
186
- description?: string | null;
187
- durationType: GarminDurationType;
188
- durationValue?: number | null;
189
- durationValueType?: string | null;
190
- targetType?: GarminTargetType | null;
191
- targetValue?: number | null;
192
- targetValueLow?: number | null;
193
- targetValueHigh?: number | null;
194
- targetValueType?: string | null;
195
- secondaryTargetType?: string | null;
196
- secondaryTargetValue?: number | null;
197
- secondaryTargetValueLow?: number | null;
198
- secondaryTargetValueHigh?: number | null;
199
- secondaryTargetValueType?: string | null;
200
- strokeType?: string | null;
201
- drillType?: string | null;
202
- equipmentType?: string | null;
203
- exerciseCategory?: string | null;
204
- exerciseName?: string | null;
205
- weightValue?: number | null;
206
- weightDisplayUnit?: string | null;
207
- }
208
-
209
- export interface GarminWorkoutRepeatStep {
210
- type: "WorkoutRepeatStep";
211
- stepId?: number;
212
- stepOrder: number;
213
- repeatType: GarminRepeatType;
214
- repeatValue: number;
215
- skipLastRestStep?: boolean;
216
- steps: Array<GarminWorkoutStep | GarminWorkoutRepeatStep>;
217
- }
218
-
219
- export interface GarminWorkoutSegment {
220
- segmentOrder: number;
221
- sport: GarminWorkoutSport;
222
- poolLength?: number | null;
223
- poolLengthUnit?: string | null;
224
- estimatedDurationInSecs?: number | null;
225
- estimatedDistanceInMeters?: number | null;
226
- steps: Array<GarminWorkoutStep | GarminWorkoutRepeatStep>;
227
- }
228
-
229
- export interface GarminWorkout {
230
- workoutId?: number;
231
- ownerId?: number | null;
232
- workoutName: string;
233
- description?: string | null;
234
- updatedDate?: string;
235
- createdDate?: string;
236
- sport: GarminWorkoutSport;
237
- estimatedDurationInSecs?: number | null;
238
- estimatedDistanceInMeters?: number | null;
239
- poolLength?: number | null;
240
- poolLengthUnit?: string | null;
241
- workoutProvider: string;
242
- workoutSourceId: string;
243
- isSessionTransitionEnabled?: boolean;
244
- segments: GarminWorkoutSegment[];
245
- }
246
-
247
- export interface GarminWorkoutSchedule {
248
- scheduleId?: number;
249
- workoutId: number;
250
- date: string;
251
- }
252
-
253
- // ─── Push-Mode Webhook Payloads ─────────────────────────────────────────────
254
- // In push mode, Garmin sends full data objects directly in the POST body.
255
- // Each data type has its own webhook URL configured in the Garmin developer
256
- // portal, so each payload is a typed array of the corresponding summary type.
257
-
258
- export type GarminWebhookActivityPayload = (GarminActivity & { userAccessToken?: string })[];
259
- export type GarminWebhookDailyPayload = (GarminDailyExtended & { userAccessToken?: string })[];
260
- export type GarminWebhookSleepPayload = (GarminSleepExtended & { userAccessToken?: string })[];
261
- export type GarminWebhookBodyPayload = (GarminBodyComposition & { userAccessToken?: string })[];
262
- export type GarminWebhookBloodPressurePayload = (GarminBloodPressure & { userAccessToken?: string })[];
263
- export type GarminWebhookSkinTempPayload = (GarminSkinTemperature & { userAccessToken?: string })[];
264
- export type GarminWebhookUserMetricsPayload = (GarminUserMetrics & { userAccessToken?: string })[];
265
- export type GarminWebhookHRVPayload = (GarminHRVSummary & { userAccessToken?: string })[];
266
- export type GarminWebhookStressDetailPayload = (GarminStressDetail & { userAccessToken?: string })[];
267
- export type GarminWebhookPulseOxPayload = (GarminPulseOx & { userAccessToken?: string })[];
268
- export type GarminWebhookRespirationPayload = (GarminRespiration & { userAccessToken?: string })[];
@@ -1,50 +0,0 @@
1
- // ─── User Metrics Transformer ────────────────────────────────────────────────
2
- // Transforms Garmin user metrics into the Soma Body schema shape.
3
-
4
- import type { GarminUserMetrics } from "./types.js";
5
-
6
- export type UserMetricsData = ReturnType<typeof transformUserMetrics>;
7
-
8
- /**
9
- * Transform Garmin user metrics into a Soma Body document shape.
10
- *
11
- * Maps VO2 Max and fitness age into oxygen_data and scores fields.
12
- *
13
- * @param metrics - The Garmin user metrics from the Health API
14
- * @returns Soma Body fields (without connectionId/userId)
15
- */
16
- export function transformUserMetrics(metrics: GarminUserMetrics) {
17
- const dateStr = metrics.calendarDate;
18
- const startTime = dateStr
19
- ? `${dateStr}T00:00:00.000Z`
20
- : new Date(0).toISOString();
21
- const endTime = dateStr
22
- ? `${dateStr}T23:59:59.999Z`
23
- : new Date(0).toISOString();
24
-
25
- const hasVo2 = metrics.vo2Max != null || metrics.vo2MaxCycling != null;
26
- const hasFitnessAge = metrics.fitnessAge != null;
27
-
28
- if (!hasVo2 && !hasFitnessAge) {
29
- return {
30
- metadata: { start_time: startTime, end_time: endTime },
31
- oxygen_data: undefined,
32
- scores: undefined,
33
- };
34
- }
35
-
36
- return {
37
- metadata: {
38
- start_time: startTime,
39
- end_time: endTime,
40
- },
41
-
42
- oxygen_data: hasVo2
43
- ? { vo2max_ml_per_min_per_kg: metrics.vo2Max ?? metrics.vo2MaxCycling }
44
- : undefined,
45
-
46
- scores: hasFitnessAge
47
- ? { biological_age: metrics.fitnessAge }
48
- : undefined,
49
- };
50
- }