@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,182 @@
1
+ /**
2
+ * Strava provider adapter.
3
+ *
4
+ * Fetches activities from Strava API and normalizes them to our event format.
5
+ */
6
+ import { makeAuthenticatedRequest } from "./oauth";
7
+ // ---------------------------------------------------------------------------
8
+ // OAuth config
9
+ // ---------------------------------------------------------------------------
10
+ export function stravaOAuthConfig(credentials) {
11
+ return {
12
+ endpoints: {
13
+ authorizeUrl: "https://www.strava.com/oauth/authorize",
14
+ tokenUrl: "https://www.strava.com/api/v3/oauth/token",
15
+ apiBaseUrl: "https://www.strava.com/api/v3",
16
+ },
17
+ clientId: credentials.clientId,
18
+ clientSecret: credentials.clientSecret,
19
+ defaultScope: "activity:read_all,profile:read_all",
20
+ usePkce: false,
21
+ authMethod: "body",
22
+ };
23
+ }
24
+ // ---------------------------------------------------------------------------
25
+ // Workout type mapping (Strava sport_type → unified type)
26
+ // ---------------------------------------------------------------------------
27
+ const WORKOUT_TYPE_MAP = {
28
+ Run: "running",
29
+ TrailRun: "trail_running",
30
+ VirtualRun: "running",
31
+ Ride: "cycling",
32
+ MountainBikeRide: "mountain_biking",
33
+ GravelRide: "cycling",
34
+ EBikeRide: "e_biking",
35
+ EMountainBikeRide: "e_biking",
36
+ VirtualRide: "indoor_cycling",
37
+ Swim: "swimming",
38
+ Walk: "walking",
39
+ Hike: "hiking",
40
+ AlpineSki: "alpine_skiing",
41
+ BackcountrySki: "backcountry_skiing",
42
+ NordicSki: "cross_country_skiing",
43
+ Snowboard: "snowboarding",
44
+ Snowshoe: "snowshoeing",
45
+ IceSkate: "ice_skating",
46
+ Rowing: "rowing",
47
+ Kayaking: "kayaking",
48
+ Canoeing: "canoeing",
49
+ StandUpPaddling: "stand_up_paddleboarding",
50
+ Surfing: "surfing",
51
+ Kitesurf: "kitesurfing",
52
+ Windsurf: "windsurfing",
53
+ Sail: "sailing",
54
+ WeightTraining: "strength_training",
55
+ Yoga: "yoga",
56
+ Pilates: "pilates",
57
+ Crossfit: "cardio_training",
58
+ Elliptical: "elliptical",
59
+ StairStepper: "stair_climbing",
60
+ HighIntensityIntervalTraining: "cardio_training",
61
+ Pickleball: "pickleball",
62
+ Squash: "squash",
63
+ Badminton: "badminton",
64
+ TableTennis: "table_tennis",
65
+ Tennis: "tennis",
66
+ Soccer: "soccer",
67
+ RockClimbing: "rock_climbing",
68
+ Golf: "golf",
69
+ Skateboard: "skateboarding",
70
+ InlineSkate: "inline_skating",
71
+ VirtualRow: "rowing_machine",
72
+ };
73
+ function getUnifiedWorkoutType(sportType, activityType) {
74
+ return WORKOUT_TYPE_MAP[sportType] ?? WORKOUT_TYPE_MAP[activityType] ?? "other";
75
+ }
76
+ // ---------------------------------------------------------------------------
77
+ // Normalization
78
+ // ---------------------------------------------------------------------------
79
+ function normalizeActivity(activity) {
80
+ const startMs = new Date(activity.start_date).getTime();
81
+ const endMs = startMs + activity.elapsed_time * 1000;
82
+ // Energy: prefer calories, fallback to kilojoules * 0.239
83
+ let energyBurned;
84
+ if (activity.calories != null) {
85
+ energyBurned = activity.calories;
86
+ }
87
+ else if (activity.kilojoules != null) {
88
+ energyBurned = activity.kilojoules * 0.239;
89
+ }
90
+ return {
91
+ category: "workout",
92
+ type: getUnifiedWorkoutType(activity.sport_type, activity.type),
93
+ sourceName: activity.device_name ?? "Strava",
94
+ deviceModel: activity.device_name,
95
+ durationSeconds: activity.elapsed_time,
96
+ startDatetime: startMs,
97
+ endDatetime: endMs,
98
+ externalId: `strava-${activity.id}`,
99
+ heartRateAvg: activity.average_heartrate,
100
+ heartRateMax: activity.max_heartrate,
101
+ energyBurned,
102
+ distance: activity.distance,
103
+ averageSpeed: activity.average_speed,
104
+ maxSpeed: activity.max_speed,
105
+ averageWatts: activity.average_watts,
106
+ maxWatts: activity.max_watts,
107
+ totalElevationGain: activity.total_elevation_gain,
108
+ elevHigh: activity.elev_high,
109
+ elevLow: activity.elev_low,
110
+ movingTimeSeconds: activity.moving_time,
111
+ };
112
+ }
113
+ // ---------------------------------------------------------------------------
114
+ // Fetch workouts
115
+ // ---------------------------------------------------------------------------
116
+ const API_BASE = "https://www.strava.com/api/v3";
117
+ const PER_PAGE = 200;
118
+ /**
119
+ * Fetch all activities from Strava within a date range.
120
+ * Uses page-based pagination, fetching up to 200 per page.
121
+ */
122
+ export async function fetchStravaWorkouts(accessToken, startDate, endDate, _credentials) {
123
+ const allEvents = [];
124
+ let page = 1;
125
+ const after = Math.floor(startDate / 1000);
126
+ const before = Math.floor(endDate / 1000);
127
+ while (true) {
128
+ const activities = await makeAuthenticatedRequest(API_BASE, "/athlete/activities", accessToken, {
129
+ params: {
130
+ after: String(after),
131
+ before: String(before),
132
+ page: String(page),
133
+ per_page: String(PER_PAGE),
134
+ },
135
+ });
136
+ for (const activity of activities) {
137
+ try {
138
+ allEvents.push(normalizeActivity(activity));
139
+ }
140
+ catch {
141
+ // Skip activities that fail to normalize
142
+ console.warn(`Failed to normalize Strava activity ${activity.id}`);
143
+ }
144
+ }
145
+ // Last page when we get fewer than per_page results
146
+ if (activities.length < PER_PAGE)
147
+ break;
148
+ page++;
149
+ }
150
+ return allEvents;
151
+ }
152
+ /**
153
+ * Normalize a single Strava activity (for webhook push processing).
154
+ */
155
+ export function normalizeStravaActivity(activityJson) {
156
+ return normalizeActivity(activityJson);
157
+ }
158
+ // ---------------------------------------------------------------------------
159
+ // Provider user info
160
+ // ---------------------------------------------------------------------------
161
+ /**
162
+ * Fetch the authenticated athlete's profile from Strava.
163
+ */
164
+ export async function getStravaUserInfo(accessToken, _tokenResponse, _appUserId, _credentials) {
165
+ try {
166
+ const athlete = await makeAuthenticatedRequest(API_BASE, "/athlete", accessToken);
167
+ return {
168
+ providerUserId: String(athlete.id),
169
+ username: athlete.username ?? null,
170
+ };
171
+ }
172
+ catch {
173
+ return { providerUserId: null, username: null };
174
+ }
175
+ }
176
+ export const stravaProvider = {
177
+ name: "strava",
178
+ oauthConfig: stravaOAuthConfig,
179
+ getUserInfo: getStravaUserInfo,
180
+ fetchEvents: fetchStravaWorkouts,
181
+ };
182
+ //# sourceMappingURL=strava.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strava.js","sourceRoot":"","sources":["../../../src/component/providers/strava.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,SAAS,CAAC;AASnD,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,UAAU,iBAAiB,CAAC,WAAgC;IAChE,OAAO;QACL,SAAS,EAAE;YACT,YAAY,EAAE,wCAAwC;YACtD,QAAQ,EAAE,2CAA2C;YACrD,UAAU,EAAE,+BAA+B;SAC5C;QACD,QAAQ,EAAE,WAAW,CAAC,QAAQ;QAC9B,YAAY,EAAE,WAAW,CAAC,YAAY;QACtC,YAAY,EAAE,oCAAoC;QAClD,OAAO,EAAE,KAAK;QACd,UAAU,EAAE,MAAM;KACnB,CAAC;AACJ,CAAC;AA6BD,8EAA8E;AAC9E,0DAA0D;AAC1D,8EAA8E;AAE9E,MAAM,gBAAgB,GAA2B;IAC/C,GAAG,EAAE,SAAS;IACd,QAAQ,EAAE,eAAe;IACzB,UAAU,EAAE,SAAS;IACrB,IAAI,EAAE,SAAS;IACf,gBAAgB,EAAE,iBAAiB;IACnC,UAAU,EAAE,SAAS;IACrB,SAAS,EAAE,UAAU;IACrB,iBAAiB,EAAE,UAAU;IAC7B,WAAW,EAAE,gBAAgB;IAC7B,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,eAAe;IAC1B,cAAc,EAAE,oBAAoB;IACpC,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,cAAc;IACzB,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE,aAAa;IACvB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,eAAe,EAAE,yBAAyB;IAC1C,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,aAAa;IACvB,QAAQ,EAAE,aAAa;IACvB,IAAI,EAAE,SAAS;IACf,cAAc,EAAE,mBAAmB;IACnC,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,iBAAiB;IAC3B,UAAU,EAAE,YAAY;IACxB,YAAY,EAAE,gBAAgB;IAC9B,6BAA6B,EAAE,iBAAiB;IAChD,UAAU,EAAE,YAAY;IACxB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,WAAW,EAAE,cAAc;IAC3B,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,YAAY,EAAE,eAAe;IAC7B,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,eAAe;IAC3B,WAAW,EAAE,gBAAgB;IAC7B,UAAU,EAAE,gBAAgB;CAC7B,CAAC;AAEF,SAAS,qBAAqB,CAAC,SAAiB,EAAE,YAAoB;IACpE,OAAO,gBAAgB,CAAC,SAAS,CAAC,IAAI,gBAAgB,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC;AAClF,CAAC;AAED,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,SAAS,iBAAiB,CAAC,QAAwB;IACjD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,CAAC;IACxD,MAAM,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC,YAAY,GAAG,IAAI,CAAC;IAErD,0DAA0D;IAC1D,IAAI,YAAgC,CAAC;IACrC,IAAI,QAAQ,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC9B,YAAY,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnC,CAAC;SAAM,IAAI,QAAQ,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC;QACvC,YAAY,GAAG,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC;IAC7C,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,SAAS;QACnB,IAAI,EAAE,qBAAqB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC;QAC/D,UAAU,EAAE,QAAQ,CAAC,WAAW,IAAI,QAAQ;QAC5C,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,eAAe,EAAE,QAAQ,CAAC,YAAY;QACtC,aAAa,EAAE,OAAO;QACtB,WAAW,EAAE,KAAK;QAClB,UAAU,EAAE,UAAU,QAAQ,CAAC,EAAE,EAAE;QAEnC,YAAY,EAAE,QAAQ,CAAC,iBAAiB;QACxC,YAAY,EAAE,QAAQ,CAAC,aAAa;QACpC,YAAY;QACZ,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,YAAY,EAAE,QAAQ,CAAC,aAAa;QACpC,QAAQ,EAAE,QAAQ,CAAC,SAAS;QAC5B,YAAY,EAAE,QAAQ,CAAC,aAAa;QACpC,QAAQ,EAAE,QAAQ,CAAC,SAAS;QAC5B,kBAAkB,EAAE,QAAQ,CAAC,oBAAoB;QACjD,QAAQ,EAAE,QAAQ,CAAC,SAAS;QAC5B,OAAO,EAAE,QAAQ,CAAC,QAAQ;QAC1B,iBAAiB,EAAE,QAAQ,CAAC,WAAW;KACxC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,iBAAiB;AACjB,8EAA8E;AAE9E,MAAM,QAAQ,GAAG,+BAA+B,CAAC;AACjD,MAAM,QAAQ,GAAG,GAAG,CAAC;AAErB;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,WAAmB,EACnB,SAAiB,EACjB,OAAe,EACf,YAAkC;IAElC,MAAM,SAAS,GAAsB,EAAE,CAAC;IACxC,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAE1C,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,UAAU,GAAG,MAAM,wBAAwB,CAC/C,QAAQ,EACR,qBAAqB,EACrB,WAAW,EACX;YACE,MAAM,EAAE;gBACN,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;gBACpB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;gBACtB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;gBAClB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;aAC3B;SACF,CACF,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;YAClC,IAAI,CAAC;gBACH,SAAS,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC9C,CAAC;YAAC,MAAM,CAAC;gBACP,yCAAyC;gBACzC,OAAO,CAAC,IAAI,CAAC,uCAAuC,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;YACrE,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,IAAI,UAAU,CAAC,MAAM,GAAG,QAAQ;YAAE,MAAM;QACxC,IAAI,EAAE,CAAC;IACT,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,YAA4B;IAClE,OAAO,iBAAiB,CAAC,YAAY,CAAC,CAAC;AACzC,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,WAAmB,EACnB,cAAwB,EACxB,UAAmB,EACnB,YAAkC;IAElC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAG3C,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC;QAEtC,OAAO;YACL,cAAc,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,IAAI;SACnC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IAClD,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAoB;IAC7C,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE,iBAAiB;IAC9B,WAAW,EAAE,mBAAmB;CACjC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { OAuthProviderConfig, ProviderAdapter, ProviderCredentials, ProviderUserInfo } from "./types";
2
+ export declare function suuntoOAuthConfig(credentials: ProviderCredentials): OAuthProviderConfig;
3
+ export declare function getSuuntoUserInfo(accessToken: string, _tokenResponse?: unknown, _appUserId?: string, _credentials?: ProviderCredentials): Promise<ProviderUserInfo>;
4
+ export declare const suuntoProvider: ProviderAdapter;
5
+ //# sourceMappingURL=suunto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"suunto.d.ts","sourceRoot":"","sources":["../../../src/component/providers/suunto.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAIV,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAshBjB,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,mBAAmB,GAAG,mBAAmB,CAcvF;AAED,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,cAAc,CAAC,EAAE,OAAO,EACxB,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,mBAAmB,GACjC,OAAO,CAAC,gBAAgB,CAAC,CAM3B;AAED,eAAO,MAAM,cAAc,EAAE,eAmB5B,CAAC"}