@gooin/garmin-connect 1.7.5 → 1.8.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 (138) hide show
  1. package/dist/common/FileMFASessionStorage.js +1 -247
  2. package/dist/common/HttpClient copy.js +1 -361
  3. package/dist/common/HttpClient.d.ts +1 -0
  4. package/dist/common/HttpClient.js +1 -613
  5. package/dist/common/HttpClient.js.map +1 -1
  6. package/dist/common/HttpClientOLD.js +1 -361
  7. package/dist/common/HttpClientOLDV1.js +1 -361
  8. package/dist/common/HttpClientV1.js +1 -577
  9. package/dist/common/MFAManager.js +1 -126
  10. package/dist/common/MFASessionStorage.js +1 -3
  11. package/dist/common/RedisMFASessionStorage.js +1 -281
  12. package/dist/common/RedisMFASessionStorage.js.map +1 -1
  13. package/dist/garmin/GarminConnect.d.ts +15 -69
  14. package/dist/garmin/GarminConnect.js +1 -509
  15. package/dist/garmin/GarminConnect.js.map +1 -1
  16. package/dist/garmin/UrlClass.d.ts +28 -0
  17. package/dist/garmin/UrlClass.js +1 -128
  18. package/dist/garmin/UrlClass.js.map +1 -1
  19. package/dist/garmin/common/DateUtils.d.ts +1 -0
  20. package/dist/garmin/common/DateUtils.js +1 -38
  21. package/dist/garmin/common/DateUtils.js.map +1 -1
  22. package/dist/garmin/common/HydrationUtils.js +1 -16
  23. package/dist/garmin/common/WeightUtils.js +1 -9
  24. package/dist/garmin/modules/activity/base.d.ts +39 -0
  25. package/dist/garmin/modules/activity/base.js +1 -0
  26. package/dist/garmin/modules/activity/base.js.map +1 -0
  27. package/dist/garmin/modules/activity/cycling.d.ts +16 -0
  28. package/dist/garmin/modules/activity/cycling.js +1 -0
  29. package/dist/garmin/modules/activity/cycling.js.map +1 -0
  30. package/dist/garmin/modules/activity/running.d.ts +15 -0
  31. package/dist/garmin/modules/activity/running.js +1 -0
  32. package/dist/garmin/modules/activity/running.js.map +1 -0
  33. package/dist/garmin/modules/activity/training-status.d.ts +13 -0
  34. package/dist/garmin/modules/activity/training-status.js +1 -0
  35. package/dist/garmin/modules/activity/training-status.js.map +1 -0
  36. package/dist/garmin/modules/coach/activity-summary.d.ts +20 -0
  37. package/dist/garmin/modules/coach/activity-summary.js +1 -0
  38. package/dist/garmin/modules/coach/activity-summary.js.map +1 -0
  39. package/dist/garmin/modules/coach/helpers.d.ts +157 -0
  40. package/dist/garmin/modules/coach/helpers.js +1 -0
  41. package/dist/garmin/modules/coach/helpers.js.map +1 -0
  42. package/dist/garmin/modules/coach/training-overview.d.ts +5 -0
  43. package/dist/garmin/modules/coach/training-overview.js +1 -0
  44. package/dist/garmin/modules/coach/training-overview.js.map +1 -0
  45. package/dist/garmin/modules/coach/wellness-overview.d.ts +5 -0
  46. package/dist/garmin/modules/coach/wellness-overview.js +1 -0
  47. package/dist/garmin/modules/coach/wellness-overview.js.map +1 -0
  48. package/dist/garmin/modules/coach/wellness-summary.d.ts +4 -0
  49. package/dist/garmin/modules/coach/wellness-summary.js +1 -0
  50. package/dist/garmin/modules/coach/wellness-summary.js.map +1 -0
  51. package/dist/garmin/modules/coach.d.ts +60 -0
  52. package/dist/garmin/modules/coach.js +1 -0
  53. package/dist/garmin/modules/coach.js.map +1 -0
  54. package/dist/garmin/modules/course.d.ts +27 -0
  55. package/dist/garmin/modules/course.js +1 -0
  56. package/dist/garmin/modules/course.js.map +1 -0
  57. package/dist/garmin/modules/device.d.ts +11 -0
  58. package/dist/garmin/modules/device.js +1 -0
  59. package/dist/garmin/modules/device.js.map +1 -0
  60. package/dist/garmin/modules/misc.d.ts +18 -0
  61. package/dist/garmin/modules/misc.js +1 -0
  62. package/dist/garmin/modules/misc.js.map +1 -0
  63. package/dist/garmin/modules/types.d.ts +10 -0
  64. package/dist/garmin/modules/types.js +1 -0
  65. package/dist/garmin/modules/types.js.map +1 -0
  66. package/dist/garmin/modules/user.d.ts +18 -0
  67. package/dist/garmin/modules/user.js +1 -0
  68. package/dist/garmin/modules/user.js.map +1 -0
  69. package/dist/garmin/modules/wellness/body-battery.d.ts +11 -0
  70. package/dist/garmin/modules/wellness/body-battery.js +1 -0
  71. package/dist/garmin/modules/wellness/body-battery.js.map +1 -0
  72. package/dist/garmin/modules/wellness/heart-rate.d.ts +11 -0
  73. package/dist/garmin/modules/wellness/heart-rate.js +1 -0
  74. package/dist/garmin/modules/wellness/heart-rate.js.map +1 -0
  75. package/dist/garmin/modules/wellness/hrv.d.ts +12 -0
  76. package/dist/garmin/modules/wellness/hrv.js +1 -0
  77. package/dist/garmin/modules/wellness/hrv.js.map +1 -0
  78. package/dist/garmin/modules/wellness/hydration.d.ts +12 -0
  79. package/dist/garmin/modules/wellness/hydration.js +1 -0
  80. package/dist/garmin/modules/wellness/hydration.js.map +1 -0
  81. package/dist/garmin/modules/wellness/sleep.d.ts +16 -0
  82. package/dist/garmin/modules/wellness/sleep.js +1 -0
  83. package/dist/garmin/modules/wellness/sleep.js.map +1 -0
  84. package/dist/garmin/modules/wellness/weight.d.ts +20 -0
  85. package/dist/garmin/modules/wellness/weight.js +1 -0
  86. package/dist/garmin/modules/wellness/weight.js.map +1 -0
  87. package/dist/garmin/modules/workout.d.ts +23 -0
  88. package/dist/garmin/modules/workout.js +1 -0
  89. package/dist/garmin/modules/workout.js.map +1 -0
  90. package/dist/garmin/types/activity-stats.d.ts +21 -0
  91. package/dist/garmin/types/activity-stats.js +1 -0
  92. package/dist/garmin/types/activity-stats.js.map +1 -0
  93. package/dist/garmin/types/activity.js +1 -27
  94. package/dist/garmin/types/body-battery.d.ts +7 -0
  95. package/dist/garmin/types/body-battery.js +1 -0
  96. package/dist/garmin/types/body-battery.js.map +1 -0
  97. package/dist/garmin/types/coach.d.ts +533 -0
  98. package/dist/garmin/types/coach.js +1 -0
  99. package/dist/garmin/types/coach.js.map +1 -0
  100. package/dist/garmin/types/course.d.ts +3 -11
  101. package/dist/garmin/types/course.js +1 -3
  102. package/dist/garmin/types/cycling.d.ts +70 -0
  103. package/dist/garmin/types/cycling.js +1 -0
  104. package/dist/garmin/types/cycling.js.map +1 -0
  105. package/dist/garmin/types/device.d.ts +32 -0
  106. package/dist/garmin/types/device.js +1 -0
  107. package/dist/garmin/types/device.js.map +1 -0
  108. package/dist/garmin/types/golf.d.ts +4 -4
  109. package/dist/garmin/types/golf.js +1 -3
  110. package/dist/garmin/types/golf.js.map +1 -1
  111. package/dist/garmin/types/heartrate.d.ts +3 -3
  112. package/dist/garmin/types/heartrate.js +1 -2
  113. package/dist/garmin/types/hrv.d.ts +47 -0
  114. package/dist/garmin/types/hrv.js +1 -0
  115. package/dist/garmin/types/hrv.js.map +1 -0
  116. package/dist/garmin/types/hydration.d.ts +3 -3
  117. package/dist/garmin/types/hydration.js +1 -2
  118. package/dist/garmin/types/index.d.ts +15 -0
  119. package/dist/garmin/types/index.js +1 -36
  120. package/dist/garmin/types/index.js.map +1 -1
  121. package/dist/garmin/types/personal-info.d.ts +29 -0
  122. package/dist/garmin/types/personal-info.js +1 -0
  123. package/dist/garmin/types/personal-info.js.map +1 -0
  124. package/dist/garmin/types/race-prediction.d.ts +50 -0
  125. package/dist/garmin/types/race-prediction.js +1 -0
  126. package/dist/garmin/types/race-prediction.js.map +1 -0
  127. package/dist/garmin/types/sleep.d.ts +46 -0
  128. package/dist/garmin/types/sleep.js +1 -3
  129. package/dist/garmin/types/training-status.d.ts +70 -0
  130. package/dist/garmin/types/training-status.js +1 -0
  131. package/dist/garmin/types/training-status.js.map +1 -0
  132. package/dist/garmin/types/weight.d.ts +46 -4
  133. package/dist/garmin/types/weight.js +1 -3
  134. package/dist/garmin/workouts/Running.js +1 -47
  135. package/dist/garmin/workouts/templates/RunningTemplate.js +1 -78
  136. package/dist/index.js +1 -11
  137. package/dist/utils.js +1 -37
  138. package/package.json +4 -3
@@ -1,509 +1 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const form_data_1 = __importDefault(require("form-data"));
7
- const lodash_1 = __importDefault(require("lodash"));
8
- const luxon_1 = require("luxon");
9
- const node_fs_1 = require("node:fs");
10
- const node_path_1 = __importDefault(require("node:path"));
11
- const HttpClient_1 = require("../common/HttpClient");
12
- const utils_1 = require("../utils");
13
- const UrlClass_1 = require("./UrlClass");
14
- const DateUtils_1 = require("./common/DateUtils");
15
- const HydrationUtils_1 = require("./common/HydrationUtils");
16
- const WeightUtils_1 = require("./common/WeightUtils");
17
- const types_1 = require("./types");
18
- const Running_1 = __importDefault(require("./workouts/Running"));
19
- class GarminConnect {
20
- // private oauth1: OAuth;
21
- constructor(config, domain = 'garmin.com') {
22
- var _a, _b;
23
- const { username, password } = config;
24
- if (!username || !password) {
25
- throw new Error('Missing credentials');
26
- }
27
- this.config = config;
28
- this.url = new UrlClass_1.UrlClass((_a = config === null || config === void 0 ? void 0 : config.domain) !== null && _a !== void 0 ? _a : domain);
29
- this.domain = (_b = config === null || config === void 0 ? void 0 : config.domain) !== null && _b !== void 0 ? _b : domain;
30
- this._userHash = undefined;
31
- this.listeners = {};
32
- this.client = new HttpClient_1.HttpClient(this.url, config);
33
- }
34
- async login(username, password, sessionId) {
35
- if (username && password) {
36
- this.config.username = username;
37
- this.config.password = password;
38
- }
39
- await this.client.login(this.config.username, this.config.password, sessionId);
40
- return this;
41
- }
42
- async exportTokenToFile(dirPath) {
43
- const isDir = await (0, utils_1.checkIsDirectory)(dirPath);
44
- if (!isDir) {
45
- await (0, utils_1.createDirectory)(dirPath);
46
- }
47
- // save oauth1 to json
48
- if (this.client.oauth1Token) {
49
- await (0, utils_1.writeToFile)(node_path_1.default.join(dirPath, 'oauth1_token.json'), JSON.stringify(this.client.oauth1Token));
50
- }
51
- if (this.client.oauth2Token) {
52
- await (0, utils_1.writeToFile)(node_path_1.default.join(dirPath, 'oauth2_token.json'), JSON.stringify(this.client.oauth2Token));
53
- }
54
- }
55
- async loadTokenByFile(dirPath) {
56
- const isDir = await (0, utils_1.checkIsDirectory)(dirPath);
57
- if (!isDir) {
58
- throw new Error('loadTokenByFile: Directory not found: ' + dirPath);
59
- }
60
- let oauth1Data = await node_fs_1.promises.readFile(node_path_1.default.join(dirPath, 'oauth1_token.json'), 'utf-8');
61
- // console.log('loadTokenByFile - oauth1Data:', oauth1Data);
62
- const oauth1 = JSON.parse(oauth1Data);
63
- // console.log('loadTokenByFile - oauth1:', oauth1);
64
- this.client.oauth1Token = oauth1;
65
- let oauth2Data = await node_fs_1.promises.readFile(node_path_1.default.join(dirPath, 'oauth2_token.json'), 'utf-8');
66
- // console.log('loadTokenByFile - oauth2Data:', oauth2Data);
67
- const oauth2 = JSON.parse(oauth2Data);
68
- // console.log('loadTokenByFile - oauth2:', oauth2);
69
- this.client.oauth2Token = oauth2;
70
- // console.log('loadTokenByFile - oauth2Token:', this);
71
- // console.log('loadTokenByFile - oauth2Token:', this.client.oauth2Token);
72
- }
73
- exportToken() {
74
- if (!this.client.oauth1Token || !this.client.oauth2Token) {
75
- throw new Error('exportToken: Token not found');
76
- }
77
- return {
78
- oauth1: this.client.oauth1Token,
79
- oauth2: this.client.oauth2Token
80
- };
81
- }
82
- // from db or localstorage etc
83
- loadToken(oauth1, oauth2) {
84
- this.client.oauth1Token = oauth1;
85
- this.client.oauth2Token = oauth2;
86
- }
87
- async getUserSettings() {
88
- return this.client.get(this.url.USER_SETTINGS);
89
- }
90
- async getUserProfile() {
91
- return this.client.get(this.url.USER_PROFILE);
92
- }
93
- async getActivities(start, limit, activityType, subActivityType) {
94
- return this.client.get(this.url.ACTIVITIES, {
95
- params: { start, limit, activityType, subActivityType }
96
- });
97
- }
98
- async getActivity(activity) {
99
- if (!activity.activityId)
100
- throw new Error('Missing activityId');
101
- return this.client.get(this.url.ACTIVITY + activity.activityId);
102
- }
103
- async countActivities() {
104
- return this.client.get(this.url.STAT_ACTIVITIES, {
105
- params: {
106
- aggregation: 'lifetime',
107
- startDate: '1970-01-01',
108
- endDate: luxon_1.DateTime.now().toFormat('yyyy-MM-dd'),
109
- metric: 'duration'
110
- }
111
- });
112
- }
113
- async downloadWellnessData(date, dir) {
114
- const dateStr = (0, DateUtils_1.toDateString)(date);
115
- const isDir = await (0, utils_1.checkIsDirectory)(dir);
116
- if (!isDir) {
117
- await (0, utils_1.createDirectory)(dir);
118
- }
119
- let fileBuffer = await this.client.get(this.url.DOWNLOAD_WELLNESS + dateStr, {
120
- responseType: 'arraybuffer'
121
- });
122
- await (0, utils_1.writeToFile)(node_path_1.default.join(dir, `${dateStr}.zip`), fileBuffer);
123
- }
124
- async downloadOriginalActivityData(activity, dir, type = 'zip') {
125
- if (!activity.activityId)
126
- throw new Error('Missing activityId');
127
- const isDir = await (0, utils_1.checkIsDirectory)(dir);
128
- if (!isDir) {
129
- await (0, utils_1.createDirectory)(dir);
130
- }
131
- let fileBuffer;
132
- if (type === 'tcx') {
133
- fileBuffer = await this.client.get(this.url.DOWNLOAD_TCX + activity.activityId);
134
- }
135
- else if (type === 'gpx') {
136
- fileBuffer = await this.client.get(this.url.DOWNLOAD_GPX + activity.activityId);
137
- }
138
- else if (type === 'kml') {
139
- fileBuffer = await this.client.get(this.url.DOWNLOAD_KML + activity.activityId);
140
- }
141
- else if (type === 'zip') {
142
- fileBuffer = await this.client.get(this.url.DOWNLOAD_ZIP + activity.activityId, {
143
- responseType: 'arraybuffer'
144
- });
145
- }
146
- else {
147
- throw new Error('downloadOriginalActivityData - Invalid type: ' + type);
148
- }
149
- await (0, utils_1.writeToFile)(node_path_1.default.join(dir, `${activity.activityId}.${type}`), fileBuffer);
150
- }
151
- async uploadActivity(file, format = 'fit') {
152
- var _a;
153
- const detectedFormat = (_a = (format || node_path_1.default.extname(file))) === null || _a === void 0 ? void 0 : _a.toLowerCase();
154
- if (!lodash_1.default.includes(types_1.UploadFileType, detectedFormat)) {
155
- throw new Error('uploadActivity - Invalid format: ' + format);
156
- }
157
- // const fh = await fs.open(file);
158
- const fileBuffer = (0, node_fs_1.createReadStream)(file);
159
- // console.log('fileBuffer:', fileBuffer);
160
- const form = new form_data_1.default();
161
- form.append('userfile', fileBuffer);
162
- const response = await this.client.post(this.url.UPLOAD + '.' + format, form, {
163
- headers: {
164
- 'Content-Type': form.getHeaders()['content-type']
165
- }
166
- });
167
- fileBuffer.close();
168
- return response;
169
- }
170
- async deleteActivity(activity) {
171
- if (!activity.activityId)
172
- throw new Error('Missing activityId');
173
- await this.client.delete(this.url.ACTIVITY + activity.activityId);
174
- }
175
- async getWorkouts(start, limit) {
176
- return this.client.get(this.url.WORKOUTS, {
177
- params: {
178
- start,
179
- limit
180
- }
181
- });
182
- }
183
- async getWorkoutDetail(workout) {
184
- if (!workout.workoutId)
185
- throw new Error('Missing workoutId');
186
- return this.client.get(this.url.WORKOUT(workout.workoutId));
187
- }
188
- async addWorkout(workout) {
189
- if (!workout)
190
- throw new Error('Missing workout');
191
- if (workout instanceof Running_1.default) {
192
- if (workout.isValid()) {
193
- const data = { ...workout.toJson() };
194
- if (!data.description) {
195
- data.description = 'Added by garmin-connect for Node.js';
196
- }
197
- return this.client.post(this.url.WORKOUT(), data);
198
- }
199
- }
200
- if (!workout.workoutSegments)
201
- throw new Error('Missing workoutSegments, please use WorkoutDetail, not Workout.');
202
- const newWorkout = lodash_1.default.omit(workout, [
203
- 'workoutId',
204
- 'ownerId',
205
- 'updatedDate',
206
- 'createdDate',
207
- 'author'
208
- ]);
209
- if (!newWorkout.description) {
210
- newWorkout.description = 'Added by garmin-connect for Node.js';
211
- }
212
- // console.log('addWorkout - newWorkout:', newWorkout)
213
- return this.client.post(this.url.WORKOUT(), newWorkout);
214
- }
215
- async addRunningWorkout(name, meters, description) {
216
- const running = new Running_1.default();
217
- running.name = name;
218
- running.distance = meters;
219
- running.description = description;
220
- return this.addWorkout(running);
221
- }
222
- async deleteWorkout(workout) {
223
- if (!workout.workoutId)
224
- throw new Error('Missing workout');
225
- return this.client.delete(this.url.WORKOUT(workout.workoutId));
226
- }
227
- async scheduleWorkout(workout, date = new Date()) {
228
- if (!workout.workoutId)
229
- throw new Error('Missing workoutId');
230
- const formatedDate = luxon_1.DateTime.fromJSDate(date).toFormat('yyyy-MM-dd');
231
- return this.client.post(`${this.url.SCHEDULE_WORKOUTS}${workout.workoutId}`, {
232
- date: formatedDate
233
- });
234
- }
235
- // Garmin use month 0-11, not real month.
236
- async getCalendar(year = new Date().getFullYear(), month = new Date().getMonth()) {
237
- return this.client.get(this.url.CALENDAR(year, month));
238
- }
239
- async getSteps(date = new Date()) {
240
- const dateString = (0, DateUtils_1.toDateString)(date);
241
- const days = await this.client.get(`${this.url.DAILY_STEPS}${dateString}/${dateString}`);
242
- const dayStats = days.find(({ calendarDate }) => calendarDate === dateString);
243
- if (!dayStats) {
244
- throw new Error("Can't find daily steps for this date.");
245
- }
246
- return dayStats.totalSteps;
247
- }
248
- async getSleepData(date = new Date()) {
249
- try {
250
- const dateString = (0, DateUtils_1.toDateString)(date);
251
- const sleepData = await this.client.get(`${this.url.DAILY_SLEEP}`, { params: { date: dateString } });
252
- if (!sleepData) {
253
- throw new Error('Invalid or empty sleep data response.');
254
- }
255
- return sleepData;
256
- }
257
- catch (error) {
258
- throw new Error(`Error in getSleepData: ${error.message}`);
259
- }
260
- }
261
- async getSleepDuration(date = new Date()) {
262
- try {
263
- const sleepData = await this.getSleepData(date);
264
- if (!sleepData ||
265
- !sleepData.dailySleepDTO ||
266
- sleepData.dailySleepDTO.sleepStartTimestampGMT === undefined ||
267
- sleepData.dailySleepDTO.sleepEndTimestampGMT === undefined) {
268
- throw new Error('Invalid or missing sleep data for the specified date.');
269
- }
270
- const sleepStartTimestampGMT = sleepData.dailySleepDTO.sleepStartTimestampGMT;
271
- const sleepEndTimestampGMT = sleepData.dailySleepDTO.sleepEndTimestampGMT;
272
- const { hours, minutes } = (0, DateUtils_1.calculateTimeDifference)(sleepStartTimestampGMT, sleepEndTimestampGMT);
273
- return {
274
- hours,
275
- minutes
276
- };
277
- }
278
- catch (error) {
279
- throw new Error(`Error in getSleepDuration: ${error.message}`);
280
- }
281
- }
282
- async getDailyWeightData(date = new Date()) {
283
- try {
284
- const dateString = (0, DateUtils_1.toDateString)(date);
285
- const weightData = await this.client.get(`${this.url.DAILY_WEIGHT}/${dateString}`);
286
- if (!weightData) {
287
- throw new Error('Invalid or empty weight data response.');
288
- }
289
- return weightData;
290
- }
291
- catch (error) {
292
- throw new Error(`Error in getDailyWeightData: ${error.message}`);
293
- }
294
- }
295
- async getDailyWeightInPounds(date = new Date()) {
296
- const weightData = await this.getDailyWeightData(date);
297
- if (weightData.totalAverage &&
298
- typeof weightData.totalAverage.weight === 'number') {
299
- return (0, WeightUtils_1.gramsToPounds)(weightData.totalAverage.weight);
300
- }
301
- else {
302
- throw new Error("Can't find valid daily weight for this date.");
303
- }
304
- }
305
- async getDailyHydration(date = new Date()) {
306
- try {
307
- const dateString = (0, DateUtils_1.toDateString)(date);
308
- const hydrationData = await this.client.get(`${this.url.DAILY_HYDRATION}/${dateString}`);
309
- if (!hydrationData || !hydrationData.valueInML) {
310
- throw new Error('Invalid or empty hydration data response.');
311
- }
312
- return (0, HydrationUtils_1.convertMLToOunces)(hydrationData.valueInML);
313
- }
314
- catch (error) {
315
- throw new Error(`Error in getDailyHydration: ${error.message}`);
316
- }
317
- }
318
- async updateWeight(date = new Date(), lbs, timezone) {
319
- try {
320
- const weightData = await this.client.post(`${this.url.UPDATE_WEIGHT}`, {
321
- dateTimestamp: (0, DateUtils_1.getLocalTimestamp)(date, timezone),
322
- gmtTimestamp: date.toISOString().substring(0, 23),
323
- unitKey: 'lbs',
324
- value: lbs
325
- });
326
- return weightData;
327
- }
328
- catch (error) {
329
- throw new Error(`Error in updateWeight: ${error.message}`);
330
- }
331
- }
332
- async updateHydrationLogOunces(date = new Date(), valueInOz) {
333
- try {
334
- const dateString = (0, DateUtils_1.toDateString)(date);
335
- const hydrationData = await this.client.put(`${this.url.HYDRATION_LOG}`, {
336
- calendarDate: dateString,
337
- valueInML: (0, HydrationUtils_1.convertOuncesToML)(valueInOz),
338
- userProfileId: (await this.getUserProfile()).profileId,
339
- timestampLocal: date.toISOString().substring(0, 23)
340
- });
341
- return hydrationData;
342
- }
343
- catch (error) {
344
- throw new Error(`Error in updateHydrationLogOunces: ${error.message}`);
345
- }
346
- }
347
- async getGolfSummary() {
348
- try {
349
- const golfSummary = await this.client.get(`${this.url.GOLF_SCORECARD_SUMMARY}`);
350
- if (!golfSummary) {
351
- throw new Error('Invalid or empty golf summary data response.');
352
- }
353
- return golfSummary;
354
- }
355
- catch (error) {
356
- throw new Error(`Error in getGolfSummary: ${error.message}`);
357
- }
358
- }
359
- async getGolfScorecard(scorecardId) {
360
- try {
361
- const golfScorecard = await this.client.get(`${this.url.GOLF_SCORECARD_DETAIL}`, { params: { 'scorecard-ids': scorecardId } });
362
- if (!golfScorecard) {
363
- throw new Error('Invalid or empty golf scorecard data response.');
364
- }
365
- return golfScorecard;
366
- }
367
- catch (error) {
368
- throw new Error(`Error in getGolfScorecard: ${error.message}`);
369
- }
370
- }
371
- async getHeartRate(date = new Date()) {
372
- try {
373
- const dateString = (0, DateUtils_1.toDateString)(date);
374
- const heartRate = await this.client.get(`${this.url.DAILY_HEART_RATE}`, { params: { date: dateString } });
375
- return heartRate;
376
- }
377
- catch (error) {
378
- throw new Error(`Error in getHeartRate: ${error.message}`);
379
- }
380
- }
381
- async getCourses() {
382
- try {
383
- const coursesForUser = await this.client.get(`${this.url.COURSE_OWNER}`);
384
- const courses_favorite = await this.client.get(`${this.url.COURSE_FAVORITE}`);
385
- const course = [
386
- ...coursesForUser.coursesForUser,
387
- ...courses_favorite
388
- ];
389
- const uniqCourse = lodash_1.default.uniqBy(course, 'courseId');
390
- return uniqCourse;
391
- }
392
- catch (error) {
393
- throw new Error(`Error in getHeartRate: ${error.message}`);
394
- }
395
- }
396
- async getCourse(course) {
397
- try {
398
- if (!course.courseId) {
399
- throw new Error('Missing courseId');
400
- }
401
- const courseDetail = await this.client.get(`${this.url.COURSE(course.courseId)}`);
402
- return courseDetail;
403
- }
404
- catch (error) {
405
- throw new Error(`Error in getHeartRate: ${error.message}`);
406
- }
407
- }
408
- async createCourse(course) {
409
- try {
410
- const createdCourse = await this.client.post(`${this.url.COURSE()}`, lodash_1.default.omit(course, [
411
- 'courseId',
412
- // 'description',
413
- 'matchedToSegments',
414
- 'userProfilePk',
415
- 'userGroupPk',
416
- 'firstName',
417
- 'lastName',
418
- 'displayName',
419
- 'geoRoutePk',
420
- 'sourcePk',
421
- 'hasShareableEvent',
422
- 'virtualPartnerId',
423
- 'includeLaps',
424
- 'speedMeterPerSecond',
425
- 'createDate',
426
- 'updateDate',
427
- 'targetCoordinateSystem',
428
- 'originalCoordinateSystem',
429
- 'consumer',
430
- 'elevationSource',
431
- 'hasPaceBand',
432
- 'hasPowerGuide',
433
- 'favorite',
434
- 'curatedCoursePk'
435
- ]));
436
- return createdCourse;
437
- }
438
- catch (error) {
439
- throw new Error(`Error in getHeartRate: ${error.message}`);
440
- }
441
- }
442
- async consentGrant() {
443
- try {
444
- // 为每个请求添加单独的错误处理,确保即使有请求失败,其他请求也能继续执行
445
- const results = await Promise.all([
446
- this.client
447
- .post(`${this.url.CONSENT_GRANT}`, {
448
- consentTypeId: 'DI_CONNECT_UPLOAD',
449
- consentLocale: 'en-US',
450
- consentVersion: '59'
451
- })
452
- .catch((error) => {
453
- console.warn('DI_CONNECT_UPLOAD 请求失败:', error.message);
454
- return null;
455
- }),
456
- this.client
457
- .post(`${this.url.CONSENT_GRANT}`, {
458
- consentTypeId: 'DI_CONNECT_CONNECT-PRIVACY',
459
- consentLocale: 'zh-CN',
460
- consentVersion: '18'
461
- })
462
- .catch((error) => {
463
- console.warn('DI_CONNECT_CONNECT-PRIVACY 请求失败:', error.message);
464
- return null;
465
- }),
466
- this.client
467
- .post(`${this.url.CONSENT_GRANT}`, {
468
- consentTypeId: 'DI_CONNECT_GOLF-PRIVACY',
469
- consentLocale: 'zh-CN',
470
- consentVersion: '16'
471
- })
472
- .catch((error) => {
473
- console.warn('DI_CONNECT_GOLF-PRIVACY 请求失败:', error.message);
474
- return null;
475
- }),
476
- this.client
477
- .put(`${this.url.ACCOUNT_DEVICE_SYNC}`, {
478
- key: 'account.deviceSync',
479
- value: true
480
- })
481
- .catch((error) => {
482
- console.warn('ACCOUNT_DEVICE_SYNC 请求失败:', error.message);
483
- return null;
484
- })
485
- ]);
486
- console.log('consentGrant 请求结果:', results);
487
- // 检查有多少请求成功
488
- const successfulRequests = results.filter((result) => result !== null).length;
489
- console.log(`consentGrant: ${successfulRequests}/${results.length} 个请求成功`);
490
- }
491
- catch (error) {
492
- throw new Error(`Error in consenGrant: ${error.message}`);
493
- }
494
- }
495
- async get(url, data) {
496
- const response = await this.client.get(url, data);
497
- return response;
498
- }
499
- async post(url, data) {
500
- const response = await this.client.post(url, data, {});
501
- return response;
502
- }
503
- async put(url, data) {
504
- const response = await this.client.put(url, data, {});
505
- return response;
506
- }
507
- }
508
- exports.default = GarminConnect;
509
- //# sourceMappingURL=GarminConnect.js.map
1
+ 'use strict';const a9_0x419232=a9_0x1f47;(function(_0x57d0ea,_0x1e9d34){const _0x2edd6e=a9_0x1f47,_0x232e8b=_0x57d0ea();while(!![]){try{const _0x542ad0=-parseInt(_0x2edd6e(0x86))/0x1+-parseInt(_0x2edd6e(0x85))/0x2*(parseInt(_0x2edd6e(0xac))/0x3)+parseInt(_0x2edd6e(0xab))/0x4+-parseInt(_0x2edd6e(0xb2))/0x5+-parseInt(_0x2edd6e(0x7b))/0x6*(parseInt(_0x2edd6e(0x7c))/0x7)+parseInt(_0x2edd6e(0x75))/0x8+parseInt(_0x2edd6e(0x78))/0x9;if(_0x542ad0===_0x1e9d34)break;else _0x232e8b['push'](_0x232e8b['shift']());}catch(_0x11535d){_0x232e8b['push'](_0x232e8b['shift']());}}}(a9_0x8f2a,0xe63df));function a9_0x8f2a(){const _0x1e2413=['9218824YiONNV','default','stringify','9767817dhCKBW','url','./modules/activity/running','24KrQapm','831579bhhODb','./modules/activity/training-status','./UrlClass','../common/HttpClient','applyMiscModule','domain','config','promises','./modules/wellness/heart-rate','196qYFTXp','158992uffPwO','applyActivityBaseModule','parse','loadToken','exportToken:\x20Token\x20not\x20found','./modules/coach','listeners','getUserProfile','applyCyclingModule','_userHash','garmin.com','./modules/device','createDirectory','applyCoachModule','applyWeightModule','./modules/workout','oauth2_token.json','writeToFile','applyHydrationModule','applyWorkoutModule','join','__esModule','./modules/course','login','applyCourseModule','checkIsDirectory','USER_PROFILE','oauth2Token','applyHeartRateModule','Missing\x20credentials','__importDefault','applyRunningModule','applyHRVModule','client','../utils','./modules/wellness/body-battery','./modules/wellness/hydration','4026968tlSORA','3510wEcoqx','exportTokenToFile','readFile','get','applyUserModule','utf-8','7762485JeRhRt','./modules/wellness/hrv','loadTokenByFile','oauth1Token','./modules/wellness/weight','applyTrainingStatusModule','applyBodyBatteryModule','./modules/wellness/sleep','./modules/activity/base','username','password','loadTokenByFile:\x20Directory\x20not\x20found:\x20','applySleepModule','node:path','./modules/user'];a9_0x8f2a=function(){return _0x1e2413;};return a9_0x8f2a();}var __importDefault=this&&this[a9_0x419232(0xa4)]||function(_0xde0af1){const _0x174393=a9_0x419232;return _0xde0af1&&_0xde0af1[_0x174393(0x9b)]?_0xde0af1:{'default':_0xde0af1};};Object['defineProperty'](exports,'__esModule',{'value':!![]});const node_fs_1=require('node:fs'),node_path_1=__importDefault(require(a9_0x419232(0x73))),HttpClient_1=require(a9_0x419232(0x7f)),utils_1=require(a9_0x419232(0xa8)),UrlClass_1=require(a9_0x419232(0x7e)),user_1=require(a9_0x419232(0x74)),sleep_1=require(a9_0x419232(0xb9)),hrv_1=require(a9_0x419232(0xb3)),weight_1=require(a9_0x419232(0xb6)),hydration_1=require(a9_0x419232(0xaa)),body_battery_1=require(a9_0x419232(0xa9)),heart_rate_1=require(a9_0x419232(0x84)),base_1=require(a9_0x419232(0xba)),running_1=require(a9_0x419232(0x7a)),cycling_1=require('./modules/activity/cycling'),training_status_1=require(a9_0x419232(0x7d)),device_1=require(a9_0x419232(0x91)),workout_1=require(a9_0x419232(0x95)),course_1=require(a9_0x419232(0x9c)),misc_1=require('./modules/misc'),coach_1=require(a9_0x419232(0x8b));class GarminConnectBase{constructor(_0x4f7939,_0x3892c4=a9_0x419232(0x90)){const _0x550da3=a9_0x419232;var _0x1ab786,_0x3de2fd;const {username:_0x276cd3,password:_0x39cdcc}=_0x4f7939;if(!_0x276cd3||!_0x39cdcc)throw new Error(_0x550da3(0xa3));this['config']=_0x4f7939,this[_0x550da3(0x79)]=new UrlClass_1['UrlClass']((_0x1ab786=_0x4f7939===null||_0x4f7939===void 0x0?void 0x0:_0x4f7939[_0x550da3(0x81)])!==null&&_0x1ab786!==void 0x0?_0x1ab786:_0x3892c4),this[_0x550da3(0x81)]=(_0x3de2fd=_0x4f7939===null||_0x4f7939===void 0x0?void 0x0:_0x4f7939[_0x550da3(0x81)])!==null&&_0x3de2fd!==void 0x0?_0x3de2fd:_0x3892c4,this[_0x550da3(0x8f)]=undefined,this[_0x550da3(0x8c)]={},this['client']=new HttpClient_1['HttpClient'](this[_0x550da3(0x79)],_0x4f7939);}async[a9_0x419232(0x9d)](_0x23d8f4,_0x439f8c,_0x26f0bd){const _0x1e6fb3=a9_0x419232;return _0x23d8f4&&_0x439f8c&&(this['config'][_0x1e6fb3(0xbb)]=_0x23d8f4,this[_0x1e6fb3(0x82)]['password']=_0x439f8c),await this[_0x1e6fb3(0xa7)]['login'](this[_0x1e6fb3(0x82)][_0x1e6fb3(0xbb)],this[_0x1e6fb3(0x82)][_0x1e6fb3(0x70)],_0x26f0bd),this;}async[a9_0x419232(0xad)](_0x4c0bd7){const _0x351214=a9_0x419232,_0x1c3cb4=await(0x0,utils_1[_0x351214(0x9f)])(_0x4c0bd7);!_0x1c3cb4&&await(0x0,utils_1[_0x351214(0x92)])(_0x4c0bd7),this[_0x351214(0xa7)][_0x351214(0xb5)]&&await(0x0,utils_1['writeToFile'])(node_path_1[_0x351214(0x76)]['join'](_0x4c0bd7,'oauth1_token.json'),JSON[_0x351214(0x77)](this[_0x351214(0xa7)]['oauth1Token'])),this[_0x351214(0xa7)][_0x351214(0xa1)]&&await(0x0,utils_1[_0x351214(0x97)])(node_path_1[_0x351214(0x76)][_0x351214(0x9a)](_0x4c0bd7,'oauth2_token.json'),JSON['stringify'](this[_0x351214(0xa7)][_0x351214(0xa1)]));}async[a9_0x419232(0xb4)](_0x3e1993){const _0x28c423=a9_0x419232,_0x8318ca=await(0x0,utils_1[_0x28c423(0x9f)])(_0x3e1993);if(!_0x8318ca)throw new Error(_0x28c423(0x71)+_0x3e1993);let _0x53ec0e=await node_fs_1['promises']['readFile'](node_path_1['default'][_0x28c423(0x9a)](_0x3e1993,'oauth1_token.json'),_0x28c423(0xb1));const _0x126ab4=JSON[_0x28c423(0x88)](_0x53ec0e);this['client']['oauth1Token']=_0x126ab4;let _0x2534c0=await node_fs_1[_0x28c423(0x83)][_0x28c423(0xae)](node_path_1[_0x28c423(0x76)]['join'](_0x3e1993,_0x28c423(0x96)),_0x28c423(0xb1));const _0x1cb534=JSON['parse'](_0x2534c0);this[_0x28c423(0xa7)][_0x28c423(0xa1)]=_0x1cb534;}['exportToken'](){const _0x2a6f7f=a9_0x419232;if(!this[_0x2a6f7f(0xa7)][_0x2a6f7f(0xb5)]||!this['client']['oauth2Token'])throw new Error(_0x2a6f7f(0x8a));return{'oauth1':this['client'][_0x2a6f7f(0xb5)],'oauth2':this[_0x2a6f7f(0xa7)][_0x2a6f7f(0xa1)]};}[a9_0x419232(0x89)](_0x23acd7,_0x5d74b7){const _0x5acaac=a9_0x419232;this[_0x5acaac(0xa7)]['oauth1Token']=_0x23acd7,this[_0x5acaac(0xa7)]['oauth2Token']=_0x5d74b7;}async[a9_0x419232(0x8d)](){const _0x15b073=a9_0x419232;return this[_0x15b073(0xa7)][_0x15b073(0xaf)](this[_0x15b073(0x79)][_0x15b073(0xa0)]);}}const WithUser=(0x0,user_1[a9_0x419232(0xb0)])(GarminConnectBase),WithSleep=(0x0,sleep_1[a9_0x419232(0x72)])(WithUser),WithHRV=(0x0,hrv_1[a9_0x419232(0xa6)])(WithSleep),WithWeight=(0x0,weight_1[a9_0x419232(0x94)])(WithHRV),WithHydration=(0x0,hydration_1[a9_0x419232(0x98)])(WithWeight),WithBodyBattery=(0x0,body_battery_1[a9_0x419232(0xb8)])(WithHydration),WithHeartRate=(0x0,heart_rate_1[a9_0x419232(0xa2)])(WithBodyBattery),WithActivityBase=(0x0,base_1[a9_0x419232(0x87)])(WithHeartRate),WithRunning=(0x0,running_1[a9_0x419232(0xa5)])(WithActivityBase),WithCycling=(0x0,cycling_1[a9_0x419232(0x8e)])(WithRunning),WithTrainingStatus=(0x0,training_status_1[a9_0x419232(0xb7)])(WithCycling),WithDevice=(0x0,device_1['applyDeviceModule'])(WithTrainingStatus),WithWorkout=(0x0,workout_1[a9_0x419232(0x99)])(WithDevice),WithCourse=(0x0,course_1[a9_0x419232(0x9e)])(WithWorkout),WithMisc=(0x0,misc_1[a9_0x419232(0x80)])(WithCourse),WithCoach=(0x0,coach_1[a9_0x419232(0x93)])(WithMisc);class GarminConnect extends WithCoach{}function a9_0x1f47(_0x456d45,_0x4e19ac){_0x456d45=_0x456d45-0x70;const _0x8f2a5f=a9_0x8f2a();let _0x1f47d0=_0x8f2a5f[_0x456d45];return _0x1f47d0;}exports[a9_0x419232(0x76)]=GarminConnect;
@@ -1 +1 @@
1
- {"version":3,"file":"GarminConnect.js","sourceRoot":"","sources":["../../src/garmin/GarminConnect.ts"],"names":[],"mappings":";;;;;AAAA,0DAAiC;AACjC,oDAAuB;AACvB,iCAAiC;AACjC,qCAA2D;AAC3D,0DAA6B;AAC7B,qDAAkD;AAClD,oCAA0E;AAC1E,yCAAsC;AACtC,kDAI4B;AAC5B,4DAA+E;AAC/E,sDAAqD;AACrD,mCAmBiB;AASjB,iEAAyC;AAIzC,MAAqB,aAAa;IAQ9B,yBAAyB;IACzB,YAAY,MAAgB,EAAE,SAAuB,YAAY;;QAC7D,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;QACtC,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACxB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;SAC1C;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,IAAI,mBAAQ,CAAC,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,mCAAI,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,MAAM,mCAAI,MAAM,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QAEpB,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,KAAK,CACP,QAAiB,EACjB,QAAiB,EACjB,SAAkB;QAElB,IAAI,QAAQ,IAAI,QAAQ,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;SACnC;QACD,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACnB,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,EACpB,SAAS,CACZ,CAAC;QACF,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,KAAK,CAAC,iBAAiB,CAAC,OAAe;QACnC,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE;YACR,MAAM,IAAA,uBAAe,EAAC,OAAO,CAAC,CAAC;SAClC;QACD,sBAAsB;QACtB,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YACzB,MAAM,IAAA,mBAAW,EACb,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,EACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAC1C,CAAC;SACL;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YACzB,MAAM,IAAA,mBAAW,EACb,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,EACvC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAC1C,CAAC;SACL;IACL,CAAC;IACD,KAAK,CAAC,eAAe,CAAC,OAAe;QACjC,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAgB,EAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,KAAK,EAAE;YACR,MAAM,IAAI,KAAK,CAAC,wCAAwC,GAAG,OAAO,CAAC,CAAC;SACvE;QACD,IAAI,UAAU,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAC9B,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,EACvC,OAAO,CACV,CAAC;QACF,4DAA4D;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,oDAAoD;QACpD,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;QAEjC,IAAI,UAAU,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAC9B,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,EACvC,OAAO,CACV,CAAC;QACF,4DAA4D;QAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACtC,oDAAoD;QACpD,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;QACjC,uDAAuD;QACvD,0EAA0E;IAC9E,CAAC;IACD,WAAW;QACP,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YACtD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;SACnD;QACD,OAAO;YACH,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW;SAClC,CAAC;IACN,CAAC;IACD,8BAA8B;IAC9B,SAAS,CAAC,MAAoB,EAAE,MAAoB;QAChD,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,eAAe;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAgB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,cAAc;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAiB,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,aAAa,CACf,KAAc,EACd,KAAc,EACd,YAA2B,EAC3B,eAAiC;QAEjC,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAc,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE;YACrD,MAAM,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE;SAC1D,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAEjB;QACG,IAAI,CAAC,QAAQ,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAClB,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAC1C,CAAC;IACN,CAAC;IAED,KAAK,CAAC,eAAe;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAmB,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC/D,MAAM,EAAE;gBACJ,WAAW,EAAE,UAAU;gBACvB,SAAS,EAAE,YAAY;gBACvB,OAAO,EAAE,gBAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAC9C,MAAM,EAAE,UAAU;aACrB;SACJ,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,IAAU,EAAE,GAAW;QAC9C,MAAM,OAAO,GAAG,IAAA,wBAAY,EAAC,IAAI,CAAC,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAgB,EAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,EAAE;YACR,MAAM,IAAA,uBAAe,EAAC,GAAG,CAAC,CAAC;SAC9B;QACD,IAAI,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAClC,IAAI,CAAC,GAAG,CAAC,iBAAiB,GAAG,OAAO,EACpC;YACI,YAAY,EAAE,aAAa;SAC9B,CACJ,CAAC;QACF,MAAM,IAAA,mBAAW,EAAC,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC;IACpE,CAAC;IAED,KAAK,CAAC,4BAA4B,CAC9B,QAAsC,EACtC,GAAW,EACX,OAA4B,KAAK;QAEjC,IAAI,CAAC,QAAQ,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,MAAM,IAAA,wBAAgB,EAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,EAAE;YACR,MAAM,IAAA,uBAAe,EAAC,GAAG,CAAC,CAAC;SAC9B;QACD,IAAI,UAAkB,CAAC;QACvB,IAAI,IAAI,KAAK,KAAK,EAAE;YAChB,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAC9B,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAU,CAC9C,CAAC;SACL;aAAM,IAAI,IAAI,KAAK,KAAK,EAAE;YACvB,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAC9B,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAU,CAC9C,CAAC;SACL;aAAM,IAAI,IAAI,KAAK,KAAK,EAAE;YACvB,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAC9B,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAU,CAC9C,CAAC;SACL;aAAM,IAAI,IAAI,KAAK,KAAK,EAAE;YACvB,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAC9B,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,QAAQ,CAAC,UAAU,EAC3C;gBACI,YAAY,EAAE,aAAa;aAC9B,CACJ,CAAC;SACL;aAAM;YACH,MAAM,IAAI,KAAK,CACX,+CAA+C,GAAG,IAAI,CACzD,CAAC;SACL;QACD,MAAM,IAAA,mBAAW,EACb,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,UAAU,IAAI,IAAI,EAAE,CAAC,EAChD,UAAU,CACb,CAAC;IACN,CAAC;IAED,KAAK,CAAC,cAAc,CAChB,IAAY,EACZ,SAAkC,KAAK;;QAEvC,MAAM,cAAc,GAAG,MAAA,CAAC,MAAM,IAAI,mBAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,0CAAE,WAAW,EAAE,CAAC;QACrE,IAAI,CAAC,gBAAC,CAAC,QAAQ,CAAC,sBAAc,EAAE,cAAc,CAAC,EAAE;YAC7C,MAAM,IAAI,KAAK,CAAC,mCAAmC,GAAG,MAAM,CAAC,CAAC;SACjE;QAED,kCAAkC;QAClC,MAAM,UAAU,GAAG,IAAA,0BAAgB,EAAC,IAAI,CAAC,CAAC;QAC1C,0CAA0C;QAC1C,MAAM,IAAI,GAAG,IAAI,mBAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;QACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACnC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,GAAG,MAAM,EAC9B,IAAI,EACJ;YACI,OAAO,EAAE;gBACL,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,cAAc,CAAC;aACpD;SACJ,CACJ,CAAC;QACF,UAAU,CAAC,KAAK,EAAE,CAAC;QACnB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAEpB;QACG,IAAI,CAAC,QAAQ,CAAC,UAAU;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAChE,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAO,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAa,EAAE,KAAa;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAa,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE;YAClD,MAAM,EAAE;gBACJ,KAAK;gBACL,KAAK;aACR;SACJ,CAAC,CAAC;IACP,CAAC;IACD,KAAK,CAAC,gBAAgB,CAAC,OAEtB;QACG,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAClB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CACtC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,UAAU,CACZ,OAAiC;QAEjC,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAEjD,IAAI,OAAO,YAAY,iBAAO,EAAE;YAC5B,IAAI,OAAO,CAAC,OAAO,EAAE,EAAE;gBACnB,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;gBACrC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;oBACnB,IAAI,CAAC,WAAW,GAAG,qCAAqC,CAAC;iBAC5D;gBACD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACnB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAClB,IAAI,CACP,CAAC;aACL;SACJ;QACD,IAAI,CAAE,OAA0B,CAAC,eAAe;YAC5C,MAAM,IAAI,KAAK,CACX,iEAAiE,CACpE,CAAC;QAEN,MAAM,UAAU,GAAG,gBAAC,CAAC,IAAI,CAAC,OAAO,EAAE;YAC/B,WAAW;YACX,SAAS;YACT,aAAa;YACb,aAAa;YACb,QAAQ;SACX,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE;YACzB,UAAU,CAAC,WAAW,GAAG,qCAAqC,CAAC;SAClE;QACD,sDAAsD;QACtD,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAiB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;IAC5E,CAAC;IAED,KAAK,CAAC,iBAAiB,CACnB,IAAY,EACZ,MAAc,EACd,WAAmB;QAEnB,MAAM,OAAO,GAAG,IAAI,iBAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;QACpB,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC;QAC1B,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;QAClC,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA8B;QAC9C,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,KAAK,CAAC,eAAe,CACjB,OAA8B,EAC9B,IAAI,GAAG,IAAI,IAAI,EAAE;QAEjB,IAAI,CAAC,OAAO,CAAC,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,gBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACtE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACnB,GAAG,IAAI,CAAC,GAAG,CAAC,iBAAiB,GAAG,OAAO,CAAC,SAAS,EAAE,EACnD;YACI,IAAI,EAAE,YAAY;SACrB,CACJ,CAAC;IACN,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,WAAW,CACb,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAC/B,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE;QAE7B,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAY,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE;QAC5B,MAAM,UAAU,GAAG,IAAA,wBAAY,EAAC,IAAI,CAAC,CAAC;QAEtC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAC9B,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,UAAU,IAAI,UAAU,EAAE,CACvD,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CACtB,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,YAAY,KAAK,UAAU,CACpD,CAAC;QAEF,IAAI,CAAC,QAAQ,EAAE;YACX,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;SAC5D;QAED,OAAO,QAAQ,CAAC,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE;QAChC,IAAI;YACA,MAAM,UAAU,GAAG,IAAA,wBAAY,EAAC,IAAI,CAAC,CAAC;YAEtC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CACnC,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EACzB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CACnC,CAAC;YAEF,IAAI,CAAC,SAAS,EAAE;gBACZ,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;aAC5D;YAED,OAAO,SAAS,CAAC;SACpB;QAAC,OAAO,KAAU,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SAC9D;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAClB,IAAI,GAAG,IAAI,IAAI,EAAE;QAEjB,IAAI;YACA,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAEhD,IACI,CAAC,SAAS;gBACV,CAAC,SAAS,CAAC,aAAa;gBACxB,SAAS,CAAC,aAAa,CAAC,sBAAsB,KAAK,SAAS;gBAC5D,SAAS,CAAC,aAAa,CAAC,oBAAoB,KAAK,SAAS,EAC5D;gBACE,MAAM,IAAI,KAAK,CACX,uDAAuD,CAC1D,CAAC;aACL;YAED,MAAM,sBAAsB,GACxB,SAAS,CAAC,aAAa,CAAC,sBAAsB,CAAC;YACnD,MAAM,oBAAoB,GACtB,SAAS,CAAC,aAAa,CAAC,oBAAoB,CAAC;YAEjD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAA,mCAAuB,EAC9C,sBAAsB,EACtB,oBAAoB,CACvB,CAAC;YAEF,OAAO;gBACH,KAAK;gBACL,OAAO;aACV,CAAC;SACL;QAAC,OAAO,KAAU,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SAClE;IACL,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE;QACtC,IAAI;YACA,MAAM,UAAU,GAAG,IAAA,wBAAY,EAAC,IAAI,CAAC,CAAC;YACtC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CACpC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,UAAU,EAAE,CAC3C,CAAC;YAEF,IAAI,CAAC,UAAU,EAAE;gBACb,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;aAC7D;YAED,OAAO,UAAU,CAAC;SACrB;QAAC,OAAO,KAAU,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SACpE;IACL,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE;QAC1C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAEvD,IACI,UAAU,CAAC,YAAY;YACvB,OAAO,UAAU,CAAC,YAAY,CAAC,MAAM,KAAK,QAAQ,EACpD;YACE,OAAO,IAAA,2BAAa,EAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SACxD;aAAM;YACH,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;SACnE;IACL,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE;QACrC,IAAI;YACA,MAAM,UAAU,GAAG,IAAA,wBAAY,EAAC,IAAI,CAAC,CAAC;YACtC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CACvC,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,UAAU,EAAE,CAC9C,CAAC;YAEF,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;gBAC5C,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;aAChE;YAED,OAAO,IAAA,kCAAiB,EAAC,aAAa,CAAC,SAAS,CAAC,CAAC;SACrD;QAAC,OAAO,KAAU,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SACnE;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CACd,IAAI,GAAG,IAAI,IAAI,EAAE,EACjB,GAAW,EACX,QAAgB;QAEhB,IAAI;YACA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACrC,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAC3B;gBACI,aAAa,EAAE,IAAA,6BAAiB,EAAC,IAAI,EAAE,QAAQ,CAAC;gBAChD,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;gBACjD,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,GAAG;aACb,CACJ,CAAC;YAEF,OAAO,UAAU,CAAC;SACrB;QAAC,OAAO,KAAU,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SAC9D;IACL,CAAC;IAED,KAAK,CAAC,wBAAwB,CAC1B,IAAI,GAAG,IAAI,IAAI,EAAE,EACjB,SAAiB;QAEjB,IAAI;YACA,MAAM,UAAU,GAAG,IAAA,wBAAY,EAAC,IAAI,CAAC,CAAC;YACtC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CACvC,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAC3B;gBACI,YAAY,EAAE,UAAU;gBACxB,SAAS,EAAE,IAAA,kCAAiB,EAAC,SAAS,CAAC;gBACvC,aAAa,EAAE,CAAC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,SAAS;gBACtD,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC;aACtD,CACJ,CAAC;YAEF,OAAO,aAAa,CAAC;SACxB;QAAC,OAAO,KAAU,EAAE;YACjB,MAAM,IAAI,KAAK,CACX,sCAAsC,KAAK,CAAC,OAAO,EAAE,CACxD,CAAC;SACL;IACL,CAAC;IAED,KAAK,CAAC,cAAc;QAChB,IAAI;YACA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CACrC,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,EAAE,CACvC,CAAC;YAEF,IAAI,CAAC,WAAW,EAAE;gBACd,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;aACnE;YAED,OAAO,WAAW,CAAC;SACtB;QAAC,OAAO,KAAU,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,4BAA4B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SAChE;IACL,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,WAAmB;QACtC,IAAI;YACA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CACvC,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,EACnC,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,WAAW,EAAE,EAAE,CAC/C,CAAC;YAEF,IAAI,CAAC,aAAa,EAAE;gBAChB,MAAM,IAAI,KAAK,CACX,gDAAgD,CACnD,CAAC;aACL;YAED,OAAO,aAAa,CAAC;SACxB;QAAC,OAAO,KAAU,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SAClE;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,IAAI,EAAE;QAChC,IAAI;YACA,MAAM,UAAU,GAAG,IAAA,wBAAY,EAAC,IAAI,CAAC,CAAC;YACtC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CACnC,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,EAC9B,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,CACnC,CAAC;YAEF,OAAO,SAAS,CAAC;SACpB;QAAC,OAAO,KAAU,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SAC9D;IACL,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,IAAI;YACA,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CACxC,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAC7B,CAAC;YACF,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAC1C,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,CAChC,CAAC;YACF,MAAM,MAAM,GAAG;gBACX,GAAG,cAAc,CAAC,cAAc;gBAChC,GAAG,gBAAgB;aACtB,CAAC;YACF,MAAM,UAAU,GAAG,gBAAC,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;YAChD,OAAO,UAAU,CAAC;SACrB;QAAC,OAAO,KAAU,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SAC9D;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAA4B;QACxC,IAAI;YACA,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;gBAClB,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;aACvC;YAED,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CACtC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CACxC,CAAC;YACF,OAAO,YAAY,CAAC;SACvB;QAAC,OAAO,KAAU,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SAC9D;IACL,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,MAAqB;QACpC,IAAI;YACA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CACxC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,EACtB,gBAAC,CAAC,IAAI,CAAC,MAAM,EAAE;gBACX,UAAU;gBACV,iBAAiB;gBACjB,mBAAmB;gBACnB,eAAe;gBACf,aAAa;gBACb,WAAW;gBACX,UAAU;gBACV,aAAa;gBACb,YAAY;gBACZ,UAAU;gBACV,mBAAmB;gBACnB,kBAAkB;gBAClB,aAAa;gBACb,qBAAqB;gBACrB,YAAY;gBACZ,YAAY;gBACZ,wBAAwB;gBACxB,0BAA0B;gBAC1B,UAAU;gBACV,iBAAiB;gBACjB,aAAa;gBACb,eAAe;gBACf,UAAU;gBACV,iBAAiB;aACpB,CAAC,CACL,CAAC;YACF,OAAO,aAAa,CAAC;SACxB;QAAC,OAAO,KAAU,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SAC9D;IACL,CAAC;IAED,KAAK,CAAC,YAAY;QACd,IAAI;YACA,sCAAsC;YACtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;gBAC9B,IAAI,CAAC,MAAM;qBACN,IAAI,CAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE;oBACrC,aAAa,EAAE,mBAAmB;oBAClC,aAAa,EAAE,OAAO;oBACtB,cAAc,EAAE,IAAI;iBACvB,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,OAAO,CAAC,IAAI,CACR,yBAAyB,EACzB,KAAK,CAAC,OAAO,CAChB,CAAC;oBACF,OAAO,IAAI,CAAC;gBAChB,CAAC,CAAC;gBACN,IAAI,CAAC,MAAM;qBACN,IAAI,CAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE;oBACrC,aAAa,EAAE,4BAA4B;oBAC3C,aAAa,EAAE,OAAO;oBACtB,cAAc,EAAE,IAAI;iBACvB,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,OAAO,CAAC,IAAI,CACR,kCAAkC,EAClC,KAAK,CAAC,OAAO,CAChB,CAAC;oBACF,OAAO,IAAI,CAAC;gBAChB,CAAC,CAAC;gBACN,IAAI,CAAC,MAAM;qBACN,IAAI,CAAO,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,EAAE;oBACrC,aAAa,EAAE,yBAAyB;oBACxC,aAAa,EAAE,OAAO;oBACtB,cAAc,EAAE,IAAI;iBACvB,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,OAAO,CAAC,IAAI,CACR,+BAA+B,EAC/B,KAAK,CAAC,OAAO,CAChB,CAAC;oBACF,OAAO,IAAI,CAAC;gBAChB,CAAC,CAAC;gBACN,IAAI,CAAC,MAAM;qBACN,GAAG,CAAO,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,EAAE;oBAC1C,GAAG,EAAE,oBAAoB;oBACzB,KAAK,EAAE,IAAI;iBACd,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,OAAO,CAAC,IAAI,CACR,2BAA2B,EAC3B,KAAK,CAAC,OAAO,CAChB,CAAC;oBACF,OAAO,IAAI,CAAC;gBAChB,CAAC,CAAC;aACT,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;YAE3C,YAAY;YACZ,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,CACrC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,IAAI,CAC9B,CAAC,MAAM,CAAC;YACT,OAAO,CAAC,GAAG,CACP,iBAAiB,kBAAkB,IAAI,OAAO,CAAC,MAAM,QAAQ,CAChE,CAAC;SACL;QAAC,OAAO,KAAU,EAAE;YACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SAC7D;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,IAAU;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAClD,OAAO,QAAa,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,IAAI,CAAI,GAAW,EAAE,IAAS;QAChC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAI,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1D,OAAO,QAAa,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,IAAS;QAC/B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAI,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACzD,OAAO,QAAa,CAAC;IACzB,CAAC;CACJ;AAjrBD,gCAirBC"}
1
+ {"version":3,"file":"GarminConnect.js","sourceRoot":"","sources":["../../src/garmin/GarminConnect.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,9 @@ export declare class UrlClass {
15
15
  get USER_PROFILE(): string;
16
16
  get ACTIVITIES(): string;
17
17
  get ACTIVITY(): string;
18
+ ACTIVITY_LAPS(activityId: number): string;
19
+ ACTIVITY_WEATHER(activityId: number): string;
20
+ ACTIVITY_WORKOUTS(activityId: number): string;
18
21
  get STAT_ACTIVITIES(): string;
19
22
  get DOWNLOAD_ZIP(): string;
20
23
  get DOWNLOAD_GPX(): string;
@@ -25,8 +28,22 @@ export declare class UrlClass {
25
28
  get IMPORT_DATA(): string;
26
29
  get DAILY_STEPS(): string;
27
30
  get DAILY_SLEEP(): string;
31
+ get SLEEP_DAILY_SUMMARY(): string;
32
+ get HRV(): string;
33
+ get HRV_DAILY_SUMMARY(): string;
34
+ get TRAINING_STATUS_DAILY(): string;
35
+ get TRAINING_STATUS_WEEKLY(): string;
36
+ get TRAINING_LOAD_BALANCE(): string;
37
+ RACE_PREDICTIONS_MONTHLY(displayName: string): string;
38
+ BIOMETRIC_STAT_RANGE(stat: string, startDate: string, endDate: string): string;
39
+ get LATEST_LACTATE_THRESHOLD(): string;
40
+ get PERSONAL_INFO(): string;
28
41
  get DAILY_WEIGHT(): string;
42
+ WEIGHT_RANGE(startDate: string, endDate: string): string;
29
43
  get UPDATE_WEIGHT(): string;
44
+ get UPLOAD_FITBIT_CSV(): string;
45
+ UPLOAD_FEATURE(feature: string): string;
46
+ WELLNESS_UPLOAD_STATUS(owner: number, date: string, uploadUuid: string): string;
30
47
  get DAILY_HYDRATION(): string;
31
48
  get HYDRATION_LOG(): string;
32
49
  get GOLF_SCORECARD_SUMMARY(): string;
@@ -37,8 +54,19 @@ export declare class UrlClass {
37
54
  get SCHEDULE_WORKOUTS(): string;
38
55
  CALENDAR(yaer: number, month: number): string;
39
56
  COURSE(id?: GCCourseId): string;
57
+ COURSE_FIT(id: GCCourseId, elevation?: boolean): string;
58
+ COURSE_GPX(id: GCCourseId): string;
59
+ get COURSE_IMPORT(): string;
40
60
  get COURSE_FAVORITE(): string;
41
61
  get COURSE_OWNER(): string;
42
62
  get CONSENT_GRANT(): string;
43
63
  get ACCOUNT_DEVICE_SYNC(): string;
64
+ get PRIMARY_TRAINING_DEVICE(): string;
65
+ get BODY_BATTERY_DAILY(): string;
66
+ LATEST_POWER_TO_WEIGHT(date: string): string;
67
+ get CYCLING_ABILITY(): string;
68
+ get POWER_CURVE(): string;
69
+ MAX_MET_LATEST(date: string): string;
70
+ PERSONAL_RECORD_TYPES(displayName: string): string;
71
+ PERSONAL_RECORDS(displayName: string): string;
44
72
  }