@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,282 @@
1
+ import { defineSchema, defineTable } from "convex/server";
2
+ import { v } from "convex/values";
3
+ /**
4
+ * Provider name union — all supported wearable providers.
5
+ */
6
+ export const providerName = v.union(v.literal("garmin"), v.literal("suunto"), v.literal("polar"), v.literal("whoop"), v.literal("strava"), v.literal("apple"), v.literal("samsung"), v.literal("google"));
7
+ /**
8
+ * Connection status enum.
9
+ */
10
+ export const connectionStatus = v.union(v.literal("active"), v.literal("inactive"), v.literal("revoked"), v.literal("expired"), v.literal("error"));
11
+ /**
12
+ * Event category — top-level classification.
13
+ */
14
+ export const eventCategory = v.union(v.literal("workout"), v.literal("sleep"));
15
+ /**
16
+ * Sync job status.
17
+ */
18
+ export const syncJobStatus = v.union(v.literal("queued"), v.literal("running"), v.literal("completed"), v.literal("failed"), v.literal("canceled"));
19
+ /**
20
+ * Backfill job status.
21
+ */
22
+ export const backfillStatus = v.union(v.literal("queued"), v.literal("running"), v.literal("completed"), v.literal("failed"), v.literal("canceled"));
23
+ // ---------------------------------------------------------------------------
24
+ // Schema
25
+ // ---------------------------------------------------------------------------
26
+ export default defineSchema({
27
+ // -------------------------------------------------------------------------
28
+ // Connections — OAuth tokens + provider link per user
29
+ // -------------------------------------------------------------------------
30
+ connections: defineTable({
31
+ userId: v.string(), // app-provided user identifier
32
+ provider: providerName,
33
+ providerUserId: v.optional(v.string()),
34
+ providerUsername: v.optional(v.string()),
35
+ accessToken: v.optional(v.string()),
36
+ refreshToken: v.optional(v.string()),
37
+ tokenExpiresAt: v.optional(v.number()), // unix ms
38
+ scope: v.optional(v.string()),
39
+ status: connectionStatus,
40
+ lastSyncedAt: v.optional(v.number()), // unix ms
41
+ })
42
+ .index("by_user", ["userId"])
43
+ .index("by_user_provider", ["userId", "provider"])
44
+ .index("by_provider_user", ["provider", "providerUserId"])
45
+ .index("by_status", ["status"]),
46
+ // -------------------------------------------------------------------------
47
+ // Data Sources — user + provider + device combination
48
+ // -------------------------------------------------------------------------
49
+ dataSources: defineTable({
50
+ userId: v.string(),
51
+ provider: providerName,
52
+ connectionId: v.optional(v.id("connections")),
53
+ deviceModel: v.optional(v.string()),
54
+ softwareVersion: v.optional(v.string()),
55
+ source: v.optional(v.string()),
56
+ deviceType: v.optional(v.string()),
57
+ originalSourceName: v.optional(v.string()),
58
+ })
59
+ .index("by_user_provider", ["userId", "provider"])
60
+ .index("by_user_provider_device", ["userId", "provider", "deviceModel", "source"])
61
+ .index("by_connection", ["connectionId"]),
62
+ // -------------------------------------------------------------------------
63
+ // Data Points — time-series health metrics (heart rate, steps, SpO2, etc.)
64
+ // -------------------------------------------------------------------------
65
+ dataPoints: defineTable({
66
+ dataSourceId: v.id("dataSources"),
67
+ seriesType: v.string(), // "heart_rate", "steps", "spo2", etc.
68
+ recordedAt: v.number(), // unix ms
69
+ value: v.number(),
70
+ externalId: v.optional(v.string()),
71
+ })
72
+ .index("by_source_type_time", ["dataSourceId", "seriesType", "recordedAt"])
73
+ .index("by_type_time", ["seriesType", "recordedAt"]),
74
+ // -------------------------------------------------------------------------
75
+ // Events — workouts and sleep sessions
76
+ // -------------------------------------------------------------------------
77
+ events: defineTable({
78
+ dataSourceId: v.id("dataSources"),
79
+ userId: v.string(), // denormalized for direct user queries
80
+ category: eventCategory,
81
+ type: v.optional(v.string()), // "running", "cycling", "night_sleep", etc.
82
+ sourceName: v.optional(v.string()),
83
+ durationSeconds: v.optional(v.number()),
84
+ startDatetime: v.number(), // unix ms
85
+ endDatetime: v.optional(v.number()), // unix ms
86
+ externalId: v.optional(v.string()),
87
+ // Workout detail fields (present when category == "workout")
88
+ heartRateMin: v.optional(v.number()),
89
+ heartRateMax: v.optional(v.number()),
90
+ heartRateAvg: v.optional(v.number()),
91
+ energyBurned: v.optional(v.number()),
92
+ distance: v.optional(v.number()),
93
+ stepsCount: v.optional(v.number()),
94
+ maxSpeed: v.optional(v.number()),
95
+ maxWatts: v.optional(v.number()),
96
+ movingTimeSeconds: v.optional(v.number()),
97
+ totalElevationGain: v.optional(v.number()),
98
+ averageSpeed: v.optional(v.number()),
99
+ averageWatts: v.optional(v.number()),
100
+ elevHigh: v.optional(v.number()),
101
+ elevLow: v.optional(v.number()),
102
+ // Sleep detail fields (present when category == "sleep")
103
+ sleepTotalDurationMinutes: v.optional(v.number()),
104
+ sleepTimeInBedMinutes: v.optional(v.number()),
105
+ sleepEfficiencyScore: v.optional(v.number()),
106
+ sleepDeepMinutes: v.optional(v.number()),
107
+ sleepRemMinutes: v.optional(v.number()),
108
+ sleepLightMinutes: v.optional(v.number()),
109
+ sleepAwakeMinutes: v.optional(v.number()),
110
+ isNap: v.optional(v.boolean()),
111
+ sleepStages: v.optional(v.array(v.object({
112
+ stage: v.string(), // "deep", "rem", "light", "awake"
113
+ startTime: v.number(), // unix ms
114
+ endTime: v.number(), // unix ms
115
+ }))),
116
+ })
117
+ .index("by_user_category_time", ["userId", "category", "startDatetime"])
118
+ .index("by_source_category_time", ["dataSourceId", "category", "startDatetime"])
119
+ .index("by_source_start_end", ["dataSourceId", "startDatetime", "endDatetime"])
120
+ .index("by_external_id", ["externalId"]),
121
+ // -------------------------------------------------------------------------
122
+ // Daily Summaries — precomputed daily aggregates
123
+ // -------------------------------------------------------------------------
124
+ dailySummaries: defineTable({
125
+ userId: v.string(),
126
+ date: v.string(), // "2026-03-15" (ISO date string)
127
+ category: v.string(), // "activity" | "sleep" | "recovery" | "body"
128
+ // Activity metrics
129
+ totalSteps: v.optional(v.number()),
130
+ totalCalories: v.optional(v.number()),
131
+ activeCalories: v.optional(v.number()),
132
+ activeMinutes: v.optional(v.number()),
133
+ totalDistance: v.optional(v.number()),
134
+ floorsClimbed: v.optional(v.number()),
135
+ avgHeartRate: v.optional(v.number()),
136
+ maxHeartRate: v.optional(v.number()),
137
+ minHeartRate: v.optional(v.number()),
138
+ // Sleep metrics
139
+ sleepDurationMinutes: v.optional(v.number()),
140
+ sleepEfficiency: v.optional(v.number()),
141
+ deepSleepMinutes: v.optional(v.number()),
142
+ remSleepMinutes: v.optional(v.number()),
143
+ lightSleepMinutes: v.optional(v.number()),
144
+ awakeDuringMinutes: v.optional(v.number()),
145
+ timeInBedMinutes: v.optional(v.number()),
146
+ // Recovery metrics
147
+ hrvAvg: v.optional(v.number()),
148
+ hrvRmssd: v.optional(v.number()),
149
+ restingHeartRate: v.optional(v.number()),
150
+ recoveryScore: v.optional(v.number()),
151
+ // Body metrics
152
+ weight: v.optional(v.number()),
153
+ bodyFatPercentage: v.optional(v.number()),
154
+ bodyMassIndex: v.optional(v.number()),
155
+ leanBodyMass: v.optional(v.number()),
156
+ bodyTemperature: v.optional(v.number()),
157
+ // Stress / other
158
+ avgStressLevel: v.optional(v.number()),
159
+ bodyBattery: v.optional(v.number()),
160
+ spo2Avg: v.optional(v.number()),
161
+ })
162
+ .index("by_user_category_date", ["userId", "category", "date"])
163
+ .index("by_user_date", ["userId", "date"]),
164
+ // -------------------------------------------------------------------------
165
+ // Sync Jobs — workflow tracking for data syncs
166
+ // -------------------------------------------------------------------------
167
+ syncJobs: defineTable({
168
+ connectionId: v.id("connections"),
169
+ userId: v.string(),
170
+ provider: providerName,
171
+ mode: v.optional(v.union(v.literal("manual"), v.literal("cron"), v.literal("webhook"))),
172
+ triggerSource: v.optional(v.string()),
173
+ idempotencyKey: v.string(),
174
+ status: syncJobStatus,
175
+ startedAt: v.number(), // unix ms
176
+ completedAt: v.optional(v.number()),
177
+ error: v.optional(v.string()),
178
+ recordsProcessed: v.optional(v.number()),
179
+ workflowId: v.optional(v.string()),
180
+ windowStart: v.optional(v.number()),
181
+ windowEnd: v.optional(v.number()),
182
+ attempt: v.optional(v.number()),
183
+ lastHeartbeatAt: v.optional(v.number()),
184
+ cursor: v.optional(v.string()),
185
+ currentPhase: v.optional(v.union(v.literal("events"), v.literal("dataPoints"), v.literal("summaries"))),
186
+ })
187
+ .index("by_user", ["userId"])
188
+ .index("by_connection", ["connectionId"])
189
+ .index("by_user_provider", ["userId", "provider"])
190
+ .index("by_user_status", ["userId", "status"])
191
+ .index("by_status", ["status"])
192
+ .index("by_idempotency_key", ["idempotencyKey"])
193
+ .index("by_workflow", ["workflowId"]),
194
+ // -------------------------------------------------------------------------
195
+ // OAuth States — temporary state for OAuth PKCE flows
196
+ // -------------------------------------------------------------------------
197
+ oauthStates: defineTable({
198
+ state: v.string(), // random state token
199
+ userId: v.string(),
200
+ provider: providerName,
201
+ codeVerifier: v.optional(v.string()), // PKCE
202
+ redirectUri: v.optional(v.string()),
203
+ createdAt: v.number(), // unix ms
204
+ }).index("by_state", ["state"]),
205
+ // -------------------------------------------------------------------------
206
+ // Provider Settings — which providers are enabled + config
207
+ // -------------------------------------------------------------------------
208
+ providerSettings: defineTable({
209
+ provider: providerName,
210
+ isEnabled: v.boolean(),
211
+ clientId: v.optional(v.string()),
212
+ clientSecret: v.optional(v.string()),
213
+ subscriptionKey: v.optional(v.string()),
214
+ updatedAt: v.optional(v.number()),
215
+ }).index("by_provider", ["provider"]),
216
+ // -------------------------------------------------------------------------
217
+ // Provider Priorities — sync order when multiple providers have same data
218
+ // -------------------------------------------------------------------------
219
+ providerPriorities: defineTable({
220
+ provider: providerName,
221
+ priority: v.number(), // 1 = highest
222
+ })
223
+ .index("by_provider", ["provider"])
224
+ .index("by_priority", ["priority"]),
225
+ // -------------------------------------------------------------------------
226
+ // Menstrual Cycle Tracking (MCT) — Women's Health data
227
+ // -------------------------------------------------------------------------
228
+ menstrualCycles: defineTable({
229
+ userId: v.string(),
230
+ provider: providerName,
231
+ externalId: v.optional(v.string()), // summaryId from provider
232
+ periodStartDate: v.string(), // "2026-03-01" ISO date
233
+ dayInCycle: v.optional(v.number()),
234
+ cycleLength: v.optional(v.number()),
235
+ predictedCycleLength: v.optional(v.number()),
236
+ periodLength: v.optional(v.number()),
237
+ currentPhase: v.optional(v.number()), // numeric phase ID
238
+ currentPhaseType: v.optional(v.string()), // "MENSTRUAL", "FOLLICULAR", "OVULATION", "LUTEAL", "SECOND_TRIMESTER", etc.
239
+ lengthOfCurrentPhase: v.optional(v.number()),
240
+ daysUntilNextPhase: v.optional(v.number()),
241
+ isPredictedCycle: v.optional(v.boolean()),
242
+ fertileWindowStart: v.optional(v.number()), // day in cycle
243
+ lengthOfFertileWindow: v.optional(v.number()),
244
+ lastUpdatedAt: v.optional(v.number()), // unix ms
245
+ // Pregnancy data (present when in pregnant phase)
246
+ isPregnant: v.optional(v.boolean()),
247
+ pregnancyDueDate: v.optional(v.string()), // "2026-09-15" ISO date
248
+ pregnancyOriginalDueDate: v.optional(v.string()),
249
+ pregnancyCycleStartDate: v.optional(v.string()),
250
+ pregnancyTitle: v.optional(v.string()),
251
+ numberOfBabies: v.optional(v.string()), // "SINGLE", "TWINS", etc.
252
+ })
253
+ .index("by_user_date", ["userId", "periodStartDate"])
254
+ .index("by_user_provider", ["userId", "provider"])
255
+ .index("by_external_id", ["externalId"]),
256
+ // -------------------------------------------------------------------------
257
+ // Backfill Jobs — tracks long-running backfill operations (e.g. Garmin)
258
+ // -------------------------------------------------------------------------
259
+ backfillJobs: defineTable({
260
+ connectionId: v.id("connections"),
261
+ userId: v.string(),
262
+ provider: providerName,
263
+ dataType: v.string(), // "full" for a full run; current type tracked separately
264
+ status: backfillStatus,
265
+ startedAt: v.number(),
266
+ completedAt: v.optional(v.number()),
267
+ error: v.optional(v.string()),
268
+ workflowId: v.optional(v.string()),
269
+ windowStart: v.optional(v.number()),
270
+ windowEnd: v.optional(v.number()),
271
+ currentDataType: v.optional(v.string()),
272
+ currentAttempt: v.optional(v.number()),
273
+ currentEventId: v.optional(v.string()),
274
+ completedDataTypes: v.optional(v.array(v.string())),
275
+ lastHeartbeatAt: v.optional(v.number()),
276
+ })
277
+ .index("by_connection", ["connectionId"])
278
+ .index("by_connection_type", ["connectionId", "dataType"])
279
+ .index("by_status", ["status"])
280
+ .index("by_workflow", ["workflowId"]),
281
+ });
282
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/component/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,143 @@
1
+ export declare const ingestNormalizedPayload: import("convex/server").RegisteredAction<"public", {
2
+ events?: {
3
+ type?: string | undefined;
4
+ sourceName?: string | undefined;
5
+ durationSeconds?: number | undefined;
6
+ endDatetime?: number | undefined;
7
+ externalId?: string | undefined;
8
+ heartRateMin?: number | undefined;
9
+ heartRateMax?: number | undefined;
10
+ heartRateAvg?: number | undefined;
11
+ energyBurned?: number | undefined;
12
+ distance?: number | undefined;
13
+ stepsCount?: number | undefined;
14
+ maxSpeed?: number | undefined;
15
+ maxWatts?: number | undefined;
16
+ movingTimeSeconds?: number | undefined;
17
+ totalElevationGain?: number | undefined;
18
+ averageSpeed?: number | undefined;
19
+ averageWatts?: number | undefined;
20
+ elevHigh?: number | undefined;
21
+ elevLow?: number | undefined;
22
+ sleepTotalDurationMinutes?: number | undefined;
23
+ sleepTimeInBedMinutes?: number | undefined;
24
+ sleepEfficiencyScore?: number | undefined;
25
+ sleepDeepMinutes?: number | undefined;
26
+ sleepRemMinutes?: number | undefined;
27
+ sleepLightMinutes?: number | undefined;
28
+ sleepAwakeMinutes?: number | undefined;
29
+ isNap?: boolean | undefined;
30
+ sleepStages?: {
31
+ stage: string;
32
+ startTime: number;
33
+ endTime: number;
34
+ }[] | undefined;
35
+ deviceModel?: string | undefined;
36
+ softwareVersion?: string | undefined;
37
+ source?: string | undefined;
38
+ deviceType?: string | undefined;
39
+ originalSourceName?: string | undefined;
40
+ category: "workout" | "sleep";
41
+ startDatetime: number;
42
+ }[] | undefined;
43
+ dataPoints?: {
44
+ externalId?: string | undefined;
45
+ deviceModel?: string | undefined;
46
+ softwareVersion?: string | undefined;
47
+ source?: string | undefined;
48
+ deviceType?: string | undefined;
49
+ originalSourceName?: string | undefined;
50
+ seriesType: string;
51
+ recordedAt: number;
52
+ value: number;
53
+ }[] | undefined;
54
+ summaries?: {
55
+ totalSteps?: number | undefined;
56
+ totalCalories?: number | undefined;
57
+ activeCalories?: number | undefined;
58
+ activeMinutes?: number | undefined;
59
+ totalDistance?: number | undefined;
60
+ floorsClimbed?: number | undefined;
61
+ avgHeartRate?: number | undefined;
62
+ maxHeartRate?: number | undefined;
63
+ minHeartRate?: number | undefined;
64
+ sleepDurationMinutes?: number | undefined;
65
+ sleepEfficiency?: number | undefined;
66
+ deepSleepMinutes?: number | undefined;
67
+ remSleepMinutes?: number | undefined;
68
+ lightSleepMinutes?: number | undefined;
69
+ awakeDuringMinutes?: number | undefined;
70
+ timeInBedMinutes?: number | undefined;
71
+ hrvAvg?: number | undefined;
72
+ hrvRmssd?: number | undefined;
73
+ restingHeartRate?: number | undefined;
74
+ recoveryScore?: number | undefined;
75
+ weight?: number | undefined;
76
+ bodyFatPercentage?: number | undefined;
77
+ bodyMassIndex?: number | undefined;
78
+ leanBodyMass?: number | undefined;
79
+ bodyTemperature?: number | undefined;
80
+ avgStressLevel?: number | undefined;
81
+ bodyBattery?: number | undefined;
82
+ spo2Avg?: number | undefined;
83
+ category: string;
84
+ date: string;
85
+ }[] | undefined;
86
+ providerUserId?: string | undefined;
87
+ providerUsername?: string | undefined;
88
+ dailySummaries?: {
89
+ totalSteps?: number | undefined;
90
+ totalCalories?: number | undefined;
91
+ activeCalories?: number | undefined;
92
+ activeMinutes?: number | undefined;
93
+ totalDistance?: number | undefined;
94
+ floorsClimbed?: number | undefined;
95
+ avgHeartRate?: number | undefined;
96
+ maxHeartRate?: number | undefined;
97
+ minHeartRate?: number | undefined;
98
+ sleepDurationMinutes?: number | undefined;
99
+ sleepEfficiency?: number | undefined;
100
+ deepSleepMinutes?: number | undefined;
101
+ remSleepMinutes?: number | undefined;
102
+ lightSleepMinutes?: number | undefined;
103
+ awakeDuringMinutes?: number | undefined;
104
+ timeInBedMinutes?: number | undefined;
105
+ hrvAvg?: number | undefined;
106
+ hrvRmssd?: number | undefined;
107
+ restingHeartRate?: number | undefined;
108
+ recoveryScore?: number | undefined;
109
+ weight?: number | undefined;
110
+ bodyFatPercentage?: number | undefined;
111
+ bodyMassIndex?: number | undefined;
112
+ leanBodyMass?: number | undefined;
113
+ bodyTemperature?: number | undefined;
114
+ avgStressLevel?: number | undefined;
115
+ bodyBattery?: number | undefined;
116
+ spo2Avg?: number | undefined;
117
+ category: string;
118
+ date: string;
119
+ }[] | undefined;
120
+ syncTimestamp?: number | undefined;
121
+ device?: {
122
+ softwareVersion?: string | undefined;
123
+ source?: string | undefined;
124
+ deviceType?: string | undefined;
125
+ originalSourceName?: string | undefined;
126
+ model?: string | undefined;
127
+ } | undefined;
128
+ sourceMetadata?: {
129
+ deviceModel?: string | undefined;
130
+ softwareVersion?: string | undefined;
131
+ source?: string | undefined;
132
+ deviceType?: string | undefined;
133
+ originalSourceName?: string | undefined;
134
+ } | undefined;
135
+ provider: "apple" | "samsung" | "google";
136
+ userId: string;
137
+ }, Promise<{
138
+ connectionId: any;
139
+ eventsStored: number;
140
+ dataPointsStored: number;
141
+ summariesStored: number;
142
+ }>>;
143
+ //# sourceMappingURL=sdkPush.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdkPush.d.ts","sourceRoot":"","sources":["../../src/component/sdkPush.ts"],"names":[],"mappings":"AAqMA,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoLlC,CAAC"}