@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,244 @@
1
+ /**
2
+ * @clipin/convex-wearables
3
+ *
4
+ * Convex component for wearable device integrations.
5
+ * Provides health data sync from Garmin, Strava, Whoop, Polar, Suunto,
6
+ * Apple HealthKit, Samsung Health, and Google Health Connect.
7
+ */
8
+ import type { GenericActionCtx, GenericDataModel, GenericMutationCtx, GenericQueryCtx, HttpRouter } from "convex/server";
9
+ import type { AggregateStats, BackfillJob, Connection, DailySummary, DataPoint, EventCategory, EventsPage, GarminRoutesConfig, HealthEvent, ProviderCredentials, ProviderName, RegisterRoutesConfig, SdkPushDataPoint, SdkPushEvent, SdkPushPayload, SdkPushSummary, SdkRoutesConfig, SdkSyncPayload, SyncJob, SyncStatus, TimeSeriesPage, WearablesConfig } from "./types.js";
10
+ export { oauthCallback, stravaWebhookEvent, stravaWebhookVerify, } from "../component/httpHandlers.js";
11
+ export type { SeriesType, SleepEvent, SleepStage, WorkoutEvent } from "./types.js";
12
+ export { SERIES_TYPES } from "./types.js";
13
+ export type { AggregateStats, BackfillJob, Connection, DailySummary, DataPoint, EventCategory, EventsPage, GarminRoutesConfig, HealthEvent, ProviderCredentials, ProviderName, RegisterRoutesConfig, SdkPushDataPoint, SdkPushEvent, SdkPushPayload, SdkPushSummary, SdkRoutesConfig, SdkSyncPayload, SyncJob, SyncStatus, TimeSeriesPage, WearablesConfig, };
14
+ export type WearablesComponent = Record<string, any>;
15
+ type QueryRunner = Pick<GenericQueryCtx<GenericDataModel>, "runQuery"> | Pick<GenericActionCtx<GenericDataModel>, "runQuery">;
16
+ type MutationRunner = Pick<GenericMutationCtx<GenericDataModel>, "runMutation"> | Pick<GenericActionCtx<GenericDataModel>, "runMutation">;
17
+ type ActionRunner = Pick<GenericActionCtx<GenericDataModel>, "runAction">;
18
+ /**
19
+ * Client for interacting with the @clipin/convex-wearables component.
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * import { WearablesClient } from "@clipin/convex-wearables";
24
+ * import { components } from "./_generated/api";
25
+ *
26
+ * const wearables = new WearablesClient(components.wearables, {
27
+ * providers: {
28
+ * strava: { clientId: "...", clientSecret: "..." },
29
+ * garmin: { clientId: "...", clientSecret: "..." },
30
+ * },
31
+ * });
32
+ *
33
+ * // In a query:
34
+ * export const getWorkouts = query({
35
+ * args: { userId: v.string() },
36
+ * handler: async (ctx, args) => {
37
+ * return await wearables.getEvents(ctx, {
38
+ * userId: args.userId,
39
+ * category: "workout",
40
+ * });
41
+ * },
42
+ * });
43
+ * ```
44
+ */
45
+ export declare class WearablesClient {
46
+ component: WearablesComponent;
47
+ config: WearablesConfig;
48
+ constructor(component: WearablesComponent, config: WearablesConfig);
49
+ /**
50
+ * Get all connections for a user.
51
+ */
52
+ getConnections(ctx: QueryRunner, args: {
53
+ userId: string;
54
+ }): Promise<Connection[]>;
55
+ /**
56
+ * Get connection for a specific user + provider.
57
+ */
58
+ getConnection(ctx: QueryRunner, args: {
59
+ userId: string;
60
+ provider: ProviderName;
61
+ }): Promise<Connection | null>;
62
+ /**
63
+ * Get sync status for a user across all providers.
64
+ */
65
+ getSyncStatus(ctx: QueryRunner, args: {
66
+ userId: string;
67
+ }): Promise<SyncStatus[]>;
68
+ /**
69
+ * Disconnect a provider for a user.
70
+ */
71
+ disconnect(ctx: MutationRunner, args: {
72
+ userId: string;
73
+ provider: ProviderName;
74
+ }): Promise<any>;
75
+ /**
76
+ * Get events (workouts or sleep) for a user with pagination.
77
+ */
78
+ getEvents(ctx: QueryRunner, args: {
79
+ userId: string;
80
+ category: EventCategory;
81
+ startDate?: number;
82
+ endDate?: number;
83
+ limit?: number;
84
+ cursor?: string;
85
+ }): Promise<EventsPage>;
86
+ /**
87
+ * Get a single event by ID.
88
+ */
89
+ getEvent(ctx: QueryRunner, args: {
90
+ eventId: string;
91
+ }): Promise<HealthEvent | null>;
92
+ /**
93
+ * Get time-series data for a user.
94
+ */
95
+ getTimeSeries(ctx: QueryRunner, args: {
96
+ userId: string;
97
+ seriesType: string;
98
+ startDate: number;
99
+ endDate: number;
100
+ limit?: number;
101
+ }): Promise<DataPoint[]>;
102
+ /**
103
+ * Get the latest data point for a metric.
104
+ */
105
+ getLatestDataPoint(ctx: QueryRunner, args: {
106
+ userId: string;
107
+ seriesType: string;
108
+ }): Promise<{
109
+ timestamp: number;
110
+ value: number;
111
+ provider: string;
112
+ } | null>;
113
+ /**
114
+ * Get all available series types for a user.
115
+ */
116
+ getAvailableSeriesTypes(ctx: QueryRunner, args: {
117
+ userId: string;
118
+ }): Promise<string[]>;
119
+ /**
120
+ * Get daily summaries for a user.
121
+ */
122
+ getDailySummaries(ctx: QueryRunner, args: {
123
+ userId: string;
124
+ category: string;
125
+ startDate: string;
126
+ endDate: string;
127
+ }): Promise<DailySummary[]>;
128
+ /**
129
+ * Get or create a data source for a user/provider/device.
130
+ */
131
+ getOrCreateDataSource(ctx: MutationRunner, args: {
132
+ userId: string;
133
+ provider: ProviderName;
134
+ connectionId?: string;
135
+ deviceModel?: string;
136
+ source?: string;
137
+ deviceType?: string;
138
+ }): Promise<string>;
139
+ /**
140
+ * Get sync jobs for a user.
141
+ */
142
+ getSyncJobs(ctx: QueryRunner, args: {
143
+ userId: string;
144
+ limit?: number;
145
+ }): Promise<SyncJob[]>;
146
+ /**
147
+ * Generate an OAuth authorization URL for a provider using configured credentials.
148
+ */
149
+ generateAuthUrl(ctx: ActionRunner, args: {
150
+ userId: string;
151
+ provider: ProviderName;
152
+ redirectUri: string;
153
+ }): Promise<string>;
154
+ /**
155
+ * Handle an OAuth callback using configured provider credentials.
156
+ */
157
+ handleCallback(ctx: ActionRunner, args: {
158
+ provider: ProviderName;
159
+ state: string;
160
+ code: string;
161
+ }): Promise<{
162
+ provider: string;
163
+ userId: string;
164
+ connectionId: string;
165
+ }>;
166
+ /**
167
+ * Enqueue a durable sync for a specific connection.
168
+ */
169
+ syncConnection(ctx: ActionRunner, args: {
170
+ connectionId: string;
171
+ startDate?: number;
172
+ endDate?: number;
173
+ syncWindowHours?: number;
174
+ provider: ProviderName;
175
+ }): Promise<{
176
+ syncJobId: string;
177
+ workflowId: string;
178
+ deduped: boolean;
179
+ }>;
180
+ /**
181
+ * Run a sync across all active connections using the configured provider credentials.
182
+ */
183
+ syncAllActive(ctx: ActionRunner, args?: {
184
+ syncWindowHours?: number;
185
+ }): Promise<any>;
186
+ /**
187
+ * Start a durable Garmin historical backfill workflow.
188
+ */
189
+ startGarminBackfill(ctx: ActionRunner, args: {
190
+ connectionId: string;
191
+ lookbackDays?: number;
192
+ }): Promise<{
193
+ backfillJobId: string;
194
+ workflowId: string;
195
+ deduped: boolean;
196
+ }>;
197
+ /**
198
+ * Get the latest Garmin backfill job for a connection.
199
+ */
200
+ getGarminBackfillStatus(ctx: QueryRunner, args: {
201
+ connectionId: string;
202
+ }): Promise<BackfillJob | null>;
203
+ /**
204
+ * Resolve the configured SDK sync path, or null if the route is disabled.
205
+ */
206
+ getSdkSyncPath(config?: RegisterRoutesConfig): string | null;
207
+ /**
208
+ * Resolve the full SDK sync URL for a Convex deployment.
209
+ */
210
+ getSdkSyncUrl(baseUrl: string, config?: RegisterRoutesConfig): string | null;
211
+ /**
212
+ * Delete all data for a user (GDPR compliance, account deletion).
213
+ */
214
+ deleteAllUserData(ctx: MutationRunner, args: {
215
+ userId: string;
216
+ }): Promise<any>;
217
+ /**
218
+ * Get credentials for a provider.
219
+ */
220
+ getProviderCredentials(provider: ProviderName): ProviderCredentials | undefined;
221
+ /**
222
+ * Get list of configured providers.
223
+ */
224
+ getConfiguredProviders(): ProviderName[];
225
+ private requireProviderCredentials;
226
+ }
227
+ /**
228
+ * Register HTTP routes for wearable provider integrations.
229
+ *
230
+ * Registers Garmin webhook routes and the optional normalized SDK push route
231
+ * for Apple Health / Google Health Connect / Samsung Health.
232
+ */
233
+ export declare function registerRoutes(http: HttpRouter, component: WearablesComponent, config?: RegisterRoutesConfig): void;
234
+ /**
235
+ * Resolve the configured SDK sync path, or null if the route is not registered.
236
+ *
237
+ * Pass the same `RegisterRoutesConfig` you use with `registerRoutes()`.
238
+ */
239
+ export declare function getSdkSyncPath(config?: RegisterRoutesConfig): string | null;
240
+ /**
241
+ * Resolve the full SDK sync URL for a Convex deployment, or null if disabled.
242
+ */
243
+ export declare function getSdkSyncUrl(baseUrl: string, config?: RegisterRoutesConfig): string | null;
244
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"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"}