@clipin/convex-wearables 0.0.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 (143) hide show
  1. package/LICENSE +203 -0
  2. package/README.md +616 -0
  3. package/dist/client/_generated/_ignore.d.ts +1 -0
  4. package/dist/client/_generated/_ignore.d.ts.map +1 -0
  5. package/dist/client/_generated/_ignore.js +4 -0
  6. package/dist/client/_generated/_ignore.js.map +1 -0
  7. package/dist/client/index.d.ts +244 -0
  8. package/dist/client/index.d.ts.map +1 -0
  9. package/dist/client/index.js +555 -0
  10. package/dist/client/index.js.map +1 -0
  11. package/dist/client/types.d.ts +689 -0
  12. package/dist/client/types.d.ts.map +1 -0
  13. package/dist/client/types.js +112 -0
  14. package/dist/client/types.js.map +1 -0
  15. package/dist/component/_generated/_ignore.d.ts +1 -0
  16. package/dist/component/_generated/_ignore.d.ts.map +1 -0
  17. package/dist/component/_generated/_ignore.js +4 -0
  18. package/dist/component/_generated/_ignore.js.map +1 -0
  19. package/dist/component/_generated/api.d.ts +13 -0
  20. package/dist/component/_generated/api.d.ts.map +1 -0
  21. package/dist/component/_generated/api.js +14 -0
  22. package/dist/component/_generated/api.js.map +1 -0
  23. package/dist/component/_generated/dataModel.d.ts +28 -0
  24. package/dist/component/_generated/dataModel.d.ts.map +1 -0
  25. package/dist/component/_generated/dataModel.js +11 -0
  26. package/dist/component/_generated/dataModel.js.map +1 -0
  27. package/dist/component/_generated/server.d.ts +23 -0
  28. package/dist/component/_generated/server.d.ts.map +1 -0
  29. package/dist/component/_generated/server.js +18 -0
  30. package/dist/component/_generated/server.js.map +1 -0
  31. package/dist/component/backfillJobs.d.ts +121 -0
  32. package/dist/component/backfillJobs.d.ts.map +1 -0
  33. package/dist/component/backfillJobs.js +233 -0
  34. package/dist/component/backfillJobs.js.map +1 -0
  35. package/dist/component/connections.d.ts +159 -0
  36. package/dist/component/connections.d.ts.map +1 -0
  37. package/dist/component/connections.js +288 -0
  38. package/dist/component/connections.js.map +1 -0
  39. package/dist/component/convex.config.d.ts +3 -0
  40. package/dist/component/convex.config.d.ts.map +1 -0
  41. package/dist/component/convex.config.js +6 -0
  42. package/dist/component/convex.config.js.map +1 -0
  43. package/dist/component/dataPoints.d.ts +81 -0
  44. package/dist/component/dataPoints.d.ts.map +1 -0
  45. package/dist/component/dataPoints.js +258 -0
  46. package/dist/component/dataPoints.js.map +1 -0
  47. package/dist/component/dataSources.d.ts +56 -0
  48. package/dist/component/dataSources.d.ts.map +1 -0
  49. package/dist/component/dataSources.js +95 -0
  50. package/dist/component/dataSources.js.map +1 -0
  51. package/dist/component/events.d.ts +203 -0
  52. package/dist/component/events.d.ts.map +1 -0
  53. package/dist/component/events.js +251 -0
  54. package/dist/component/events.js.map +1 -0
  55. package/dist/component/garminBackfill.d.ts +40 -0
  56. package/dist/component/garminBackfill.d.ts.map +1 -0
  57. package/dist/component/garminBackfill.js +296 -0
  58. package/dist/component/garminBackfill.js.map +1 -0
  59. package/dist/component/garminWebhooks.d.ts +17 -0
  60. package/dist/component/garminWebhooks.d.ts.map +1 -0
  61. package/dist/component/garminWebhooks.js +505 -0
  62. package/dist/component/garminWebhooks.js.map +1 -0
  63. package/dist/component/httpHandlers.d.ts +32 -0
  64. package/dist/component/httpHandlers.d.ts.map +1 -0
  65. package/dist/component/httpHandlers.js +131 -0
  66. package/dist/component/httpHandlers.js.map +1 -0
  67. package/dist/component/lifecycle.d.ts +12 -0
  68. package/dist/component/lifecycle.d.ts.map +1 -0
  69. package/dist/component/lifecycle.js +79 -0
  70. package/dist/component/lifecycle.js.map +1 -0
  71. package/dist/component/menstrualCycles.d.ts +98 -0
  72. package/dist/component/menstrualCycles.d.ts.map +1 -0
  73. package/dist/component/menstrualCycles.js +112 -0
  74. package/dist/component/menstrualCycles.js.map +1 -0
  75. package/dist/component/oauthActions.d.ts +52 -0
  76. package/dist/component/oauthActions.d.ts.map +1 -0
  77. package/dist/component/oauthActions.js +208 -0
  78. package/dist/component/oauthActions.js.map +1 -0
  79. package/dist/component/oauthStates.d.ts +47 -0
  80. package/dist/component/oauthStates.d.ts.map +1 -0
  81. package/dist/component/oauthStates.js +77 -0
  82. package/dist/component/oauthStates.js.map +1 -0
  83. package/dist/component/providerSettings.d.ts +15 -0
  84. package/dist/component/providerSettings.d.ts.map +1 -0
  85. package/dist/component/providerSettings.js +57 -0
  86. package/dist/component/providerSettings.js.map +1 -0
  87. package/dist/component/providers/garmin.d.ts +306 -0
  88. package/dist/component/providers/garmin.d.ts.map +1 -0
  89. package/dist/component/providers/garmin.js +675 -0
  90. package/dist/component/providers/garmin.js.map +1 -0
  91. package/dist/component/providers/oauth.d.ts +42 -0
  92. package/dist/component/providers/oauth.d.ts.map +1 -0
  93. package/dist/component/providers/oauth.js +181 -0
  94. package/dist/component/providers/oauth.js.map +1 -0
  95. package/dist/component/providers/polar.d.ts +6 -0
  96. package/dist/component/providers/polar.d.ts.map +1 -0
  97. package/dist/component/providers/polar.js +175 -0
  98. package/dist/component/providers/polar.js.map +1 -0
  99. package/dist/component/providers/registry.d.ts +14 -0
  100. package/dist/component/providers/registry.d.ts.map +1 -0
  101. package/dist/component/providers/registry.js +32 -0
  102. package/dist/component/providers/registry.js.map +1 -0
  103. package/dist/component/providers/strava.d.ts +45 -0
  104. package/dist/component/providers/strava.d.ts.map +1 -0
  105. package/dist/component/providers/strava.js +182 -0
  106. package/dist/component/providers/strava.js.map +1 -0
  107. package/dist/component/providers/suunto.d.ts +5 -0
  108. package/dist/component/providers/suunto.d.ts.map +1 -0
  109. package/dist/component/providers/suunto.js +502 -0
  110. package/dist/component/providers/suunto.js.map +1 -0
  111. package/dist/component/providers/types.d.ts +139 -0
  112. package/dist/component/providers/types.d.ts.map +1 -0
  113. package/dist/component/providers/types.js +5 -0
  114. package/dist/component/providers/types.js.map +1 -0
  115. package/dist/component/providers/whoop.d.ts +4 -0
  116. package/dist/component/providers/whoop.d.ts.map +1 -0
  117. package/dist/component/providers/whoop.js +439 -0
  118. package/dist/component/providers/whoop.js.map +1 -0
  119. package/dist/component/schema.d.ts +429 -0
  120. package/dist/component/schema.d.ts.map +1 -0
  121. package/dist/component/schema.js +282 -0
  122. package/dist/component/schema.js.map +1 -0
  123. package/dist/component/sdkPush.d.ts +143 -0
  124. package/dist/component/sdkPush.d.ts.map +1 -0
  125. package/dist/component/sdkPush.js +338 -0
  126. package/dist/component/sdkPush.js.map +1 -0
  127. package/dist/component/summaries.d.ts +129 -0
  128. package/dist/component/summaries.d.ts.map +1 -0
  129. package/dist/component/summaries.js +129 -0
  130. package/dist/component/summaries.js.map +1 -0
  131. package/dist/component/syncJobs.d.ts +142 -0
  132. package/dist/component/syncJobs.d.ts.map +1 -0
  133. package/dist/component/syncJobs.js +136 -0
  134. package/dist/component/syncJobs.js.map +1 -0
  135. package/dist/component/syncWorkflow.d.ts +99 -0
  136. package/dist/component/syncWorkflow.d.ts.map +1 -0
  137. package/dist/component/syncWorkflow.js +579 -0
  138. package/dist/component/syncWorkflow.js.map +1 -0
  139. package/dist/component/workflowManager.d.ts +3 -0
  140. package/dist/component/workflowManager.d.ts.map +1 -0
  141. package/dist/component/workflowManager.js +17 -0
  142. package/dist/component/workflowManager.js.map +1 -0
  143. package/package.json +84 -0
@@ -0,0 +1,306 @@
1
+ /**
2
+ * Garmin provider adapter.
3
+ *
4
+ * Garmin is a push-based provider: after OAuth 2.0 authorization (with PKCE),
5
+ * Garmin pushes data to registered webhook endpoints.
6
+ *
7
+ * This module handles:
8
+ * - OAuth config (OAuth 2.0 + PKCE)
9
+ * - Activity normalization (push webhook payloads)
10
+ * - Sleep normalization
11
+ * - Daily summary normalization
12
+ * - Epoch (15-min interval) normalization
13
+ * - Body composition normalization
14
+ */
15
+ import type { NormalizedDailySummary, NormalizedDataPoint, NormalizedEvent, OAuthProviderConfig, ProviderAdapter, ProviderCredentials, ProviderUserInfo } from "./types";
16
+ export declare function garminOAuthConfig(credentials: ProviderCredentials): OAuthProviderConfig;
17
+ export interface GarminActivity {
18
+ userId: string;
19
+ activityId: number | string;
20
+ summaryId?: string;
21
+ activityName?: string;
22
+ activityType: string;
23
+ startTimeInSeconds: number;
24
+ startTimeOffsetInSeconds?: number;
25
+ durationInSeconds: number;
26
+ deviceName?: string;
27
+ distanceInMeters?: number;
28
+ steps?: number;
29
+ activeKilocalories?: number;
30
+ averageHeartRateInBeatsPerMinute?: number;
31
+ maxHeartRateInBeatsPerMinute?: number;
32
+ averageSpeedInMetersPerSecond?: number;
33
+ maxSpeedInMetersPerSecond?: number;
34
+ averagePowerInWatts?: number;
35
+ maxPowerInWatts?: number;
36
+ totalElevationGainInMeters?: number;
37
+ elapsedDurationInSeconds?: number;
38
+ movingDurationInSeconds?: number;
39
+ manual?: boolean;
40
+ }
41
+ export interface GarminSleep {
42
+ userId: string;
43
+ summaryId: string;
44
+ startTimeInSeconds: number;
45
+ startTimeOffsetInSeconds?: number;
46
+ durationInSeconds: number;
47
+ deepSleepDurationInSeconds?: number;
48
+ lightSleepDurationInSeconds?: number;
49
+ remSleepInSeconds?: number;
50
+ awakeDurationInSeconds?: number;
51
+ averageHeartRate?: number;
52
+ lowestHeartRate?: number;
53
+ avgOxygenSaturation?: number;
54
+ respirationAvg?: number;
55
+ overallSleepScore?: {
56
+ value?: number;
57
+ };
58
+ validation?: string;
59
+ sleepLevelsMap?: Record<string, Array<{
60
+ startTimeInSeconds: number;
61
+ endTimeInSeconds: number;
62
+ }>>;
63
+ }
64
+ export interface GarminDaily {
65
+ userId: string;
66
+ summaryId: string;
67
+ startTimeInSeconds: number;
68
+ durationInSeconds: number;
69
+ calendarDate?: string;
70
+ steps?: number;
71
+ distanceInMeters?: number;
72
+ activeKilocalories?: number;
73
+ bmrKilocalories?: number;
74
+ floorsClimbed?: number;
75
+ minHeartRateInBeatsPerMinute?: number;
76
+ maxHeartRateInBeatsPerMinute?: number;
77
+ averageHeartRateInBeatsPerMinute?: number;
78
+ restingHeartRateInBeatsPerMinute?: number;
79
+ averageStressLevel?: number;
80
+ bodyBatteryChargedValue?: number;
81
+ bodyBatteryDrainedValue?: number;
82
+ moderateIntensityDurationInSeconds?: number;
83
+ vigorousIntensityDurationInSeconds?: number;
84
+ timeOffsetHeartRateSamples?: Record<string, number>;
85
+ }
86
+ export interface GarminEpoch {
87
+ userId: string;
88
+ summaryId: string;
89
+ startTimeInSeconds: number;
90
+ durationInSeconds: number;
91
+ steps?: number;
92
+ distanceInMeters?: number;
93
+ activeKilocalories?: number;
94
+ meanHeartRateInBeatsPerMinute?: number;
95
+ maxHeartRateInBeatsPerMinute?: number;
96
+ intensity?: string;
97
+ }
98
+ export interface GarminBodyComp {
99
+ userId: string;
100
+ summaryId: string;
101
+ measurementTimeInSeconds: number;
102
+ weightInGrams?: number;
103
+ bodyFatInPercent?: number;
104
+ bodyMassIndex?: number;
105
+ muscleMassInGrams?: number;
106
+ }
107
+ export interface GarminHrv {
108
+ userId: string;
109
+ summaryId?: string;
110
+ startTimeInSeconds: number;
111
+ calendarDate?: string;
112
+ lastNightAvg?: number;
113
+ hrvValues?: Record<string, number>;
114
+ }
115
+ export interface GarminStressDetails {
116
+ userId: string;
117
+ summaryId?: string;
118
+ startTimeInSeconds: number;
119
+ stressLevelValues?: Record<string, number>;
120
+ bodyBatteryValues?: Record<string, number>;
121
+ }
122
+ export interface GarminRespiration {
123
+ userId: string;
124
+ summaryId?: string;
125
+ startTimeInSeconds: number;
126
+ calendarDate?: string;
127
+ avgWakingRespirationValue?: number;
128
+ timeOffsetRespirationRateValues?: Record<string, number>;
129
+ timeOffsetRespirationValues?: Record<string, number>;
130
+ }
131
+ export interface GarminPulseOx {
132
+ userId: string;
133
+ summaryId?: string;
134
+ startTimeInSeconds: number;
135
+ calendarDate?: string;
136
+ avgSpo2?: number;
137
+ timeOffsetSpo2Values?: Record<string, number>;
138
+ }
139
+ export interface GarminBloodPressure {
140
+ userId: string;
141
+ summaryId?: string;
142
+ measurementTimestampGMT?: number;
143
+ startTimeInSeconds?: number;
144
+ systolic?: number;
145
+ diastolic?: number;
146
+ }
147
+ export interface GarminUserMetrics {
148
+ userId: string;
149
+ summaryId?: string;
150
+ calendarDate?: string;
151
+ vo2Max?: number;
152
+ fitnessAge?: number;
153
+ }
154
+ export interface GarminSkinTemp {
155
+ userId: string;
156
+ summaryId?: string;
157
+ startTimeInSeconds: number;
158
+ skinTemperature?: number;
159
+ }
160
+ export interface GarminHealthSnapshot {
161
+ userId: string;
162
+ summaryId?: string;
163
+ startTimeInSeconds: number;
164
+ heartRate?: number;
165
+ hrv?: number;
166
+ stress?: number;
167
+ spo2?: number;
168
+ respiration?: number;
169
+ }
170
+ export interface GarminMoveIQ {
171
+ userId: string;
172
+ summaryId?: string;
173
+ startTimeInSeconds: number;
174
+ durationInSeconds?: number;
175
+ activityType?: string;
176
+ }
177
+ export interface GarminMCTSummary {
178
+ userId: string;
179
+ summaryId: string;
180
+ startTimeInSeconds?: number;
181
+ startTimeOffsetInSeconds?: number;
182
+ periodStartDateStr?: string;
183
+ dayInCycle?: number;
184
+ cycleLength?: number;
185
+ predictedCycleLength?: number;
186
+ periodLength?: number;
187
+ currentPhase?: number;
188
+ currentPhaseType?: string;
189
+ lengthOfCurrentPhase?: number;
190
+ daysUntilNextPhase?: number;
191
+ isPredictedCycle?: boolean;
192
+ fertileWindowStart?: number;
193
+ lengthOfFertileWindow?: number;
194
+ lastUpdatedAt?: number;
195
+ isPregnant?: boolean;
196
+ pregnancyDueDate?: string;
197
+ pregnancyOriginalDueDate?: string;
198
+ pregnancyCycleStartDate?: string;
199
+ pregnancyTitle?: string;
200
+ numberOfBabies?: string;
201
+ }
202
+ export interface GarminPushPayload {
203
+ activities?: GarminActivity[];
204
+ activityDetails?: GarminActivity[];
205
+ sleeps?: GarminSleep[];
206
+ dailies?: GarminDaily[];
207
+ epochs?: GarminEpoch[];
208
+ bodyComps?: GarminBodyComp[];
209
+ hrv?: GarminHrv[];
210
+ stressDetails?: GarminStressDetails[];
211
+ respiration?: GarminRespiration[];
212
+ pulseOx?: GarminPulseOx[];
213
+ bloodPressures?: GarminBloodPressure[];
214
+ userMetrics?: GarminUserMetrics[];
215
+ skinTemp?: GarminSkinTemp[];
216
+ healthSnapshot?: GarminHealthSnapshot[];
217
+ moveiq?: GarminMoveIQ[];
218
+ menstrualCycleTracking?: GarminMCTSummary[];
219
+ mct?: GarminMCTSummary[];
220
+ deregistrations?: Array<{
221
+ userId: string;
222
+ }>;
223
+ userPermissionsChange?: Array<{
224
+ userId: string;
225
+ permissions: string[];
226
+ }>;
227
+ }
228
+ export declare function normalizeActivity(activity: GarminActivity): NormalizedEvent;
229
+ export declare function normalizeSleep(sleep: GarminSleep): NormalizedEvent;
230
+ export declare function normalizeSleepSummary(sleep: GarminSleep): NormalizedDailySummary;
231
+ export interface GarminDailySummaryNormalized {
232
+ userId: string;
233
+ date: string;
234
+ totalSteps?: number;
235
+ totalCalories?: number;
236
+ activeCalories?: number;
237
+ totalDistance?: number;
238
+ floorsClimbed?: number;
239
+ avgHeartRate?: number;
240
+ maxHeartRate?: number;
241
+ minHeartRate?: number;
242
+ restingHeartRate?: number;
243
+ avgStressLevel?: number;
244
+ bodyBattery?: number;
245
+ activeMinutes?: number;
246
+ /** Heart rate samples: { timestampMs: bpm } */
247
+ heartRateSamples?: {
248
+ timestamp: number;
249
+ value: number;
250
+ }[];
251
+ }
252
+ export declare function normalizeDaily(daily: GarminDaily): GarminDailySummaryNormalized;
253
+ export declare function normalizeDailyRecoverySummary(daily: GarminDaily): NormalizedDailySummary;
254
+ export declare function normalizeEpochDataPoints(epoch: GarminEpoch): NormalizedDataPoint[];
255
+ export declare function normalizeBodyCompositionDataPoints(bodyComp: GarminBodyComp): NormalizedDataPoint[];
256
+ export declare function normalizeBodyCompositionSummary(bodyComp: GarminBodyComp): NormalizedDailySummary;
257
+ export declare function normalizeHrvDataPoints(hrv: GarminHrv): NormalizedDataPoint[];
258
+ export declare function normalizeHrvSummary(hrv: GarminHrv): NormalizedDailySummary | null;
259
+ export declare function normalizeStressDataPoints(stress: GarminStressDetails): NormalizedDataPoint[];
260
+ export declare function normalizeRespirationDataPoints(respiration: GarminRespiration): NormalizedDataPoint[];
261
+ export declare function normalizePulseOxDataPoints(pulseOx: GarminPulseOx): NormalizedDataPoint[];
262
+ export declare function normalizePulseOxSummary(pulseOx: GarminPulseOx): NormalizedDailySummary | null;
263
+ export declare function normalizeBloodPressureDataPoints(bloodPressure: GarminBloodPressure): NormalizedDataPoint[];
264
+ export declare function normalizeUserMetricsDataPoints(userMetrics: GarminUserMetrics): NormalizedDataPoint[];
265
+ export declare function normalizeSkinTemperatureDataPoints(skinTemp: GarminSkinTemp): NormalizedDataPoint[];
266
+ export declare function normalizeHealthSnapshotDataPoints(snapshot: GarminHealthSnapshot): NormalizedDataPoint[];
267
+ export declare function normalizeMoveIQ(moveIQ: GarminMoveIQ): NormalizedEvent;
268
+ export interface NormalizedMCT {
269
+ externalId: string;
270
+ periodStartDate: string;
271
+ dayInCycle?: number;
272
+ cycleLength?: number;
273
+ predictedCycleLength?: number;
274
+ periodLength?: number;
275
+ currentPhase?: number;
276
+ currentPhaseType?: string;
277
+ lengthOfCurrentPhase?: number;
278
+ daysUntilNextPhase?: number;
279
+ isPredictedCycle?: boolean;
280
+ fertileWindowStart?: number;
281
+ lengthOfFertileWindow?: number;
282
+ lastUpdatedAt?: number;
283
+ isPregnant?: boolean;
284
+ pregnancyDueDate?: string;
285
+ pregnancyOriginalDueDate?: string;
286
+ pregnancyCycleStartDate?: string;
287
+ pregnancyTitle?: string;
288
+ numberOfBabies?: string;
289
+ }
290
+ export declare function normalizeMCT(mct: GarminMCTSummary): NormalizedMCT;
291
+ export declare function getGarminUserInfo(accessToken: string, _tokenResponse?: unknown, _appUserId?: string, _credentials?: ProviderCredentials): Promise<ProviderUserInfo>;
292
+ export declare const garminProvider: ProviderAdapter;
293
+ /**
294
+ * Garmin does not support pull-based data fetching.
295
+ * Data is pushed via webhooks. This function exists to satisfy the
296
+ * ProviderDefinition interface but returns an empty array.
297
+ *
298
+ * Use the backfill API to trigger historical data push.
299
+ */
300
+ export declare function fetchGarminWorkouts(_accessToken: string, _startDate: number, _endDate: number, _credentials?: ProviderCredentials): Promise<NormalizedEvent[]>;
301
+ /**
302
+ * Trigger a Garmin backfill request. Garmin will asynchronously push
303
+ * historical data to your webhook endpoints.
304
+ */
305
+ export declare function triggerBackfill(accessToken: string, dataType: string, startTimeSeconds: number, endTimeSeconds: number): Promise<void>;
306
+ //# sourceMappingURL=garmin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"garmin.d.ts","sourceRoot":"","sources":["../../../src/component/providers/garmin.ts"],"names":[],"mappings":"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"}