@gooin/garmin-connect 1.7.6 → 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.
- package/dist/common/FileMFASessionStorage.js +1 -247
- package/dist/common/HttpClient copy.js +1 -361
- package/dist/common/HttpClient.d.ts +1 -0
- package/dist/common/HttpClient.js +1 -612
- package/dist/common/HttpClient.js.map +1 -1
- package/dist/common/HttpClientOLD.js +1 -361
- package/dist/common/HttpClientOLDV1.js +1 -361
- package/dist/common/HttpClientV1.js +1 -577
- package/dist/common/MFAManager.js +1 -126
- package/dist/common/MFASessionStorage.js +1 -3
- package/dist/common/RedisMFASessionStorage.js +1 -281
- package/dist/common/RedisMFASessionStorage.js.map +1 -1
- package/dist/garmin/GarminConnect.d.ts +15 -78
- package/dist/garmin/GarminConnect.js +1 -592
- package/dist/garmin/GarminConnect.js.map +1 -1
- package/dist/garmin/UrlClass.d.ts +21 -0
- package/dist/garmin/UrlClass.js +1 -149
- package/dist/garmin/UrlClass.js.map +1 -1
- package/dist/garmin/common/DateUtils.d.ts +1 -0
- package/dist/garmin/common/DateUtils.js +1 -38
- package/dist/garmin/common/DateUtils.js.map +1 -1
- package/dist/garmin/common/HydrationUtils.js +1 -16
- package/dist/garmin/common/WeightUtils.js +1 -9
- package/dist/garmin/modules/activity/base.d.ts +39 -0
- package/dist/garmin/modules/activity/base.js +1 -0
- package/dist/garmin/modules/activity/base.js.map +1 -0
- package/dist/garmin/modules/activity/cycling.d.ts +16 -0
- package/dist/garmin/modules/activity/cycling.js +1 -0
- package/dist/garmin/modules/activity/cycling.js.map +1 -0
- package/dist/garmin/modules/activity/running.d.ts +15 -0
- package/dist/garmin/modules/activity/running.js +1 -0
- package/dist/garmin/modules/activity/running.js.map +1 -0
- package/dist/garmin/modules/activity/training-status.d.ts +13 -0
- package/dist/garmin/modules/activity/training-status.js +1 -0
- package/dist/garmin/modules/activity/training-status.js.map +1 -0
- package/dist/garmin/modules/coach/activity-summary.d.ts +20 -0
- package/dist/garmin/modules/coach/activity-summary.js +1 -0
- package/dist/garmin/modules/coach/activity-summary.js.map +1 -0
- package/dist/garmin/modules/coach/helpers.d.ts +157 -0
- package/dist/garmin/modules/coach/helpers.js +1 -0
- package/dist/garmin/modules/coach/helpers.js.map +1 -0
- package/dist/garmin/modules/coach/training-overview.d.ts +5 -0
- package/dist/garmin/modules/coach/training-overview.js +1 -0
- package/dist/garmin/modules/coach/training-overview.js.map +1 -0
- package/dist/garmin/modules/coach/wellness-overview.d.ts +5 -0
- package/dist/garmin/modules/coach/wellness-overview.js +1 -0
- package/dist/garmin/modules/coach/wellness-overview.js.map +1 -0
- package/dist/garmin/modules/coach/wellness-summary.d.ts +4 -0
- package/dist/garmin/modules/coach/wellness-summary.js +1 -0
- package/dist/garmin/modules/coach/wellness-summary.js.map +1 -0
- package/dist/garmin/modules/coach.d.ts +60 -0
- package/dist/garmin/modules/coach.js +1 -0
- package/dist/garmin/modules/coach.js.map +1 -0
- package/dist/garmin/modules/course.d.ts +27 -0
- package/dist/garmin/modules/course.js +1 -0
- package/dist/garmin/modules/course.js.map +1 -0
- package/dist/garmin/modules/device.d.ts +11 -0
- package/dist/garmin/modules/device.js +1 -0
- package/dist/garmin/modules/device.js.map +1 -0
- package/dist/garmin/modules/misc.d.ts +18 -0
- package/dist/garmin/modules/misc.js +1 -0
- package/dist/garmin/modules/misc.js.map +1 -0
- package/dist/garmin/modules/types.d.ts +10 -0
- package/dist/garmin/modules/types.js +1 -0
- package/dist/garmin/modules/types.js.map +1 -0
- package/dist/garmin/modules/user.d.ts +18 -0
- package/dist/garmin/modules/user.js +1 -0
- package/dist/garmin/modules/user.js.map +1 -0
- package/dist/garmin/modules/wellness/body-battery.d.ts +11 -0
- package/dist/garmin/modules/wellness/body-battery.js +1 -0
- package/dist/garmin/modules/wellness/body-battery.js.map +1 -0
- package/dist/garmin/modules/wellness/heart-rate.d.ts +11 -0
- package/dist/garmin/modules/wellness/heart-rate.js +1 -0
- package/dist/garmin/modules/wellness/heart-rate.js.map +1 -0
- package/dist/garmin/modules/wellness/hrv.d.ts +12 -0
- package/dist/garmin/modules/wellness/hrv.js +1 -0
- package/dist/garmin/modules/wellness/hrv.js.map +1 -0
- package/dist/garmin/modules/wellness/hydration.d.ts +12 -0
- package/dist/garmin/modules/wellness/hydration.js +1 -0
- package/dist/garmin/modules/wellness/hydration.js.map +1 -0
- package/dist/garmin/modules/wellness/sleep.d.ts +16 -0
- package/dist/garmin/modules/wellness/sleep.js +1 -0
- package/dist/garmin/modules/wellness/sleep.js.map +1 -0
- package/dist/garmin/modules/wellness/weight.d.ts +20 -0
- package/dist/garmin/modules/wellness/weight.js +1 -0
- package/dist/garmin/modules/wellness/weight.js.map +1 -0
- package/dist/garmin/modules/workout.d.ts +23 -0
- package/dist/garmin/modules/workout.js +1 -0
- package/dist/garmin/modules/workout.js.map +1 -0
- package/dist/garmin/types/activity-stats.d.ts +21 -0
- package/dist/garmin/types/activity-stats.js +1 -0
- package/dist/garmin/types/activity-stats.js.map +1 -0
- package/dist/garmin/types/activity.js +1 -27
- package/dist/garmin/types/body-battery.d.ts +7 -0
- package/dist/garmin/types/body-battery.js +1 -0
- package/dist/garmin/types/body-battery.js.map +1 -0
- package/dist/garmin/types/coach.d.ts +533 -0
- package/dist/garmin/types/coach.js +1 -0
- package/dist/garmin/types/coach.js.map +1 -0
- package/dist/garmin/types/course.d.ts +3 -11
- package/dist/garmin/types/course.js +1 -3
- package/dist/garmin/types/cycling.d.ts +70 -0
- package/dist/garmin/types/cycling.js +1 -0
- package/dist/garmin/types/cycling.js.map +1 -0
- package/dist/garmin/types/device.d.ts +32 -0
- package/dist/garmin/types/device.js +1 -0
- package/dist/garmin/types/device.js.map +1 -0
- package/dist/garmin/types/golf.d.ts +4 -4
- package/dist/garmin/types/golf.js +1 -3
- package/dist/garmin/types/golf.js.map +1 -1
- package/dist/garmin/types/heartrate.d.ts +3 -3
- package/dist/garmin/types/heartrate.js +1 -2
- package/dist/garmin/types/hrv.d.ts +3 -0
- package/dist/garmin/types/hrv.js +1 -3
- package/dist/garmin/types/hydration.d.ts +3 -3
- package/dist/garmin/types/hydration.js +1 -2
- package/dist/garmin/types/index.d.ts +15 -0
- package/dist/garmin/types/index.js +1 -36
- package/dist/garmin/types/index.js.map +1 -1
- package/dist/garmin/types/personal-info.js +1 -3
- package/dist/garmin/types/race-prediction.d.ts +50 -0
- package/dist/garmin/types/race-prediction.js +1 -0
- package/dist/garmin/types/race-prediction.js.map +1 -0
- package/dist/garmin/types/sleep.js +1 -3
- package/dist/garmin/types/training-status.js +1 -3
- package/dist/garmin/types/weight.d.ts +46 -4
- package/dist/garmin/types/weight.js +1 -3
- package/dist/garmin/workouts/Running.js +1 -47
- package/dist/garmin/workouts/templates/RunningTemplate.js +1 -78
- package/dist/index.js +1 -11
- package/dist/utils.js +1 -37
- package/package.json +4 -3
|
@@ -1,592 +1 @@
|
|
|
1
|
-
|
|
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 getSleepDailySummary(startDate, endDate) {
|
|
283
|
-
try {
|
|
284
|
-
const startStr = (0, DateUtils_1.toDateString)(startDate);
|
|
285
|
-
const endStr = (0, DateUtils_1.toDateString)(endDate);
|
|
286
|
-
// URL pattern: /sleep-service/stats/sleep/daily/2026-01-21/2026-01-27
|
|
287
|
-
const summary = await this.client.get(`${this.url.SLEEP_DAILY_SUMMARY}/${startStr}/${endStr}`);
|
|
288
|
-
return summary;
|
|
289
|
-
}
|
|
290
|
-
catch (error) {
|
|
291
|
-
throw new Error(`Error in getSleepDailySummary: ${error.message}`);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
async getHRVData(date = new Date()) {
|
|
295
|
-
try {
|
|
296
|
-
const dateStr = (0, DateUtils_1.toDateString)(date);
|
|
297
|
-
// URL pattern: /hrv-service/hrv/2026-01-27
|
|
298
|
-
const hrvData = await this.client.get(`${this.url.HRV}/${dateStr}`);
|
|
299
|
-
return hrvData;
|
|
300
|
-
}
|
|
301
|
-
catch (error) {
|
|
302
|
-
throw new Error(`Error in getHRVData: ${error.message}`);
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
async getTrainingStatus(date = new Date()) {
|
|
306
|
-
try {
|
|
307
|
-
const dateStr = (0, DateUtils_1.toDateString)(date);
|
|
308
|
-
// URL pattern: /metrics-service/metrics/trainingstatus/daily/2026-01-27
|
|
309
|
-
// This returns the *latest* status for that day (or generally latest if date is today)
|
|
310
|
-
const response = await this.client.get(`${this.url.TRAINING_STATUS_DAILY}/${dateStr}`);
|
|
311
|
-
return response;
|
|
312
|
-
}
|
|
313
|
-
catch (error) {
|
|
314
|
-
throw new Error(`Error in getTrainingStatus: ${error.message}`);
|
|
315
|
-
}
|
|
316
|
-
}
|
|
317
|
-
async getTrainingLoadBalance(date = new Date()) {
|
|
318
|
-
try {
|
|
319
|
-
const dateStr = (0, DateUtils_1.toDateString)(date);
|
|
320
|
-
// URL pattern: /metrics-service/metrics/trainingloadbalance/latest/2026-01-27
|
|
321
|
-
const response = await this.client.get(`${this.url.TRAINING_LOAD_BALANCE}/${dateStr}`);
|
|
322
|
-
return response;
|
|
323
|
-
}
|
|
324
|
-
catch (error) {
|
|
325
|
-
throw new Error(`Error in getTrainingLoadBalance: ${error.message}`);
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
async getWeeklyTrainingStatus(startDate, endDate) {
|
|
329
|
-
try {
|
|
330
|
-
const profile = await this.getUserProfile();
|
|
331
|
-
const displayName = profile.displayName;
|
|
332
|
-
if (!displayName) {
|
|
333
|
-
throw new Error('Could not retrieve display name for weekly training status.');
|
|
334
|
-
}
|
|
335
|
-
const fromDateStr = (0, DateUtils_1.toDateString)(startDate);
|
|
336
|
-
const toDateStr = (0, DateUtils_1.toDateString)(endDate);
|
|
337
|
-
// URL pattern: /metrics-service/metrics/trainingstatus/weekly/{displayName}
|
|
338
|
-
const response = await this.client.get(`${this.url.TRAINING_STATUS_WEEKLY}/${displayName}`, {
|
|
339
|
-
params: {
|
|
340
|
-
fromCalendarDate: fromDateStr,
|
|
341
|
-
toCalendarDate: toDateStr
|
|
342
|
-
}
|
|
343
|
-
});
|
|
344
|
-
return response;
|
|
345
|
-
}
|
|
346
|
-
catch (error) {
|
|
347
|
-
throw new Error(`Error in getWeeklyTrainingStatus: ${error.message}`);
|
|
348
|
-
}
|
|
349
|
-
}
|
|
350
|
-
async getPersonalInfo() {
|
|
351
|
-
try {
|
|
352
|
-
const profile = await this.getUserProfile();
|
|
353
|
-
const displayName = profile.displayName;
|
|
354
|
-
if (!displayName) {
|
|
355
|
-
throw new Error('Could not retrieve display name for personal info.');
|
|
356
|
-
}
|
|
357
|
-
// URL pattern: /userprofile-service/userprofile/personal-information/{displayName}
|
|
358
|
-
const response = await this.client.get(`${this.url.PERSONAL_INFO}/${displayName}`);
|
|
359
|
-
return response;
|
|
360
|
-
}
|
|
361
|
-
catch (error) {
|
|
362
|
-
throw new Error(`Error in getPersonalInfo: ${error.message}`);
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
async getDailyWeightData(date = new Date()) {
|
|
366
|
-
try {
|
|
367
|
-
const dateString = (0, DateUtils_1.toDateString)(date);
|
|
368
|
-
const weightData = await this.client.get(`${this.url.DAILY_WEIGHT}/${dateString}`);
|
|
369
|
-
if (!weightData) {
|
|
370
|
-
throw new Error('Invalid or empty weight data response.');
|
|
371
|
-
}
|
|
372
|
-
return weightData;
|
|
373
|
-
}
|
|
374
|
-
catch (error) {
|
|
375
|
-
throw new Error(`Error in getDailyWeightData: ${error.message}`);
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
async getDailyWeightInPounds(date = new Date()) {
|
|
379
|
-
const weightData = await this.getDailyWeightData(date);
|
|
380
|
-
if (weightData.totalAverage &&
|
|
381
|
-
typeof weightData.totalAverage.weight === 'number') {
|
|
382
|
-
return (0, WeightUtils_1.gramsToPounds)(weightData.totalAverage.weight);
|
|
383
|
-
}
|
|
384
|
-
else {
|
|
385
|
-
throw new Error("Can't find valid daily weight for this date.");
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
async getDailyHydration(date = new Date()) {
|
|
389
|
-
try {
|
|
390
|
-
const dateString = (0, DateUtils_1.toDateString)(date);
|
|
391
|
-
const hydrationData = await this.client.get(`${this.url.DAILY_HYDRATION}/${dateString}`);
|
|
392
|
-
if (!hydrationData || !hydrationData.valueInML) {
|
|
393
|
-
throw new Error('Invalid or empty hydration data response.');
|
|
394
|
-
}
|
|
395
|
-
return (0, HydrationUtils_1.convertMLToOunces)(hydrationData.valueInML);
|
|
396
|
-
}
|
|
397
|
-
catch (error) {
|
|
398
|
-
throw new Error(`Error in getDailyHydration: ${error.message}`);
|
|
399
|
-
}
|
|
400
|
-
}
|
|
401
|
-
async updateWeight(date = new Date(), lbs, timezone) {
|
|
402
|
-
try {
|
|
403
|
-
const weightData = await this.client.post(`${this.url.UPDATE_WEIGHT}`, {
|
|
404
|
-
dateTimestamp: (0, DateUtils_1.getLocalTimestamp)(date, timezone),
|
|
405
|
-
gmtTimestamp: date.toISOString().substring(0, 23),
|
|
406
|
-
unitKey: 'lbs',
|
|
407
|
-
value: lbs
|
|
408
|
-
});
|
|
409
|
-
return weightData;
|
|
410
|
-
}
|
|
411
|
-
catch (error) {
|
|
412
|
-
throw new Error(`Error in updateWeight: ${error.message}`);
|
|
413
|
-
}
|
|
414
|
-
}
|
|
415
|
-
async updateHydrationLogOunces(date = new Date(), valueInOz) {
|
|
416
|
-
try {
|
|
417
|
-
const dateString = (0, DateUtils_1.toDateString)(date);
|
|
418
|
-
const hydrationData = await this.client.put(`${this.url.HYDRATION_LOG}`, {
|
|
419
|
-
calendarDate: dateString,
|
|
420
|
-
valueInML: (0, HydrationUtils_1.convertOuncesToML)(valueInOz),
|
|
421
|
-
userProfileId: (await this.getUserProfile()).profileId,
|
|
422
|
-
timestampLocal: date.toISOString().substring(0, 23)
|
|
423
|
-
});
|
|
424
|
-
return hydrationData;
|
|
425
|
-
}
|
|
426
|
-
catch (error) {
|
|
427
|
-
throw new Error(`Error in updateHydrationLogOunces: ${error.message}`);
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
async getGolfSummary() {
|
|
431
|
-
try {
|
|
432
|
-
const golfSummary = await this.client.get(`${this.url.GOLF_SCORECARD_SUMMARY}`);
|
|
433
|
-
if (!golfSummary) {
|
|
434
|
-
throw new Error('Invalid or empty golf summary data response.');
|
|
435
|
-
}
|
|
436
|
-
return golfSummary;
|
|
437
|
-
}
|
|
438
|
-
catch (error) {
|
|
439
|
-
throw new Error(`Error in getGolfSummary: ${error.message}`);
|
|
440
|
-
}
|
|
441
|
-
}
|
|
442
|
-
async getGolfScorecard(scorecardId) {
|
|
443
|
-
try {
|
|
444
|
-
const golfScorecard = await this.client.get(`${this.url.GOLF_SCORECARD_DETAIL}`, { params: { 'scorecard-ids': scorecardId } });
|
|
445
|
-
if (!golfScorecard) {
|
|
446
|
-
throw new Error('Invalid or empty golf scorecard data response.');
|
|
447
|
-
}
|
|
448
|
-
return golfScorecard;
|
|
449
|
-
}
|
|
450
|
-
catch (error) {
|
|
451
|
-
throw new Error(`Error in getGolfScorecard: ${error.message}`);
|
|
452
|
-
}
|
|
453
|
-
}
|
|
454
|
-
async getHeartRate(date = new Date()) {
|
|
455
|
-
try {
|
|
456
|
-
const dateString = (0, DateUtils_1.toDateString)(date);
|
|
457
|
-
const heartRate = await this.client.get(`${this.url.DAILY_HEART_RATE}`, { params: { date: dateString } });
|
|
458
|
-
return heartRate;
|
|
459
|
-
}
|
|
460
|
-
catch (error) {
|
|
461
|
-
throw new Error(`Error in getHeartRate: ${error.message}`);
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
async getCourses() {
|
|
465
|
-
try {
|
|
466
|
-
const coursesForUser = await this.client.get(`${this.url.COURSE_OWNER}`);
|
|
467
|
-
const courses_favorite = await this.client.get(`${this.url.COURSE_FAVORITE}`);
|
|
468
|
-
const course = [
|
|
469
|
-
...coursesForUser.coursesForUser,
|
|
470
|
-
...courses_favorite
|
|
471
|
-
];
|
|
472
|
-
const uniqCourse = lodash_1.default.uniqBy(course, 'courseId');
|
|
473
|
-
return uniqCourse;
|
|
474
|
-
}
|
|
475
|
-
catch (error) {
|
|
476
|
-
throw new Error(`Error in getHeartRate: ${error.message}`);
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
async getCourse(course) {
|
|
480
|
-
try {
|
|
481
|
-
if (!course.courseId) {
|
|
482
|
-
throw new Error('Missing courseId');
|
|
483
|
-
}
|
|
484
|
-
const courseDetail = await this.client.get(`${this.url.COURSE(course.courseId)}`);
|
|
485
|
-
return courseDetail;
|
|
486
|
-
}
|
|
487
|
-
catch (error) {
|
|
488
|
-
throw new Error(`Error in getHeartRate: ${error.message}`);
|
|
489
|
-
}
|
|
490
|
-
}
|
|
491
|
-
async createCourse(course) {
|
|
492
|
-
try {
|
|
493
|
-
const createdCourse = await this.client.post(`${this.url.COURSE()}`, lodash_1.default.omit(course, [
|
|
494
|
-
'courseId',
|
|
495
|
-
// 'description',
|
|
496
|
-
'matchedToSegments',
|
|
497
|
-
'userProfilePk',
|
|
498
|
-
'userGroupPk',
|
|
499
|
-
'firstName',
|
|
500
|
-
'lastName',
|
|
501
|
-
'displayName',
|
|
502
|
-
'geoRoutePk',
|
|
503
|
-
'sourcePk',
|
|
504
|
-
'hasShareableEvent',
|
|
505
|
-
'virtualPartnerId',
|
|
506
|
-
'includeLaps',
|
|
507
|
-
'speedMeterPerSecond',
|
|
508
|
-
'createDate',
|
|
509
|
-
'updateDate',
|
|
510
|
-
'targetCoordinateSystem',
|
|
511
|
-
'originalCoordinateSystem',
|
|
512
|
-
'consumer',
|
|
513
|
-
'elevationSource',
|
|
514
|
-
'hasPaceBand',
|
|
515
|
-
'hasPowerGuide',
|
|
516
|
-
'favorite',
|
|
517
|
-
'curatedCoursePk'
|
|
518
|
-
]));
|
|
519
|
-
return createdCourse;
|
|
520
|
-
}
|
|
521
|
-
catch (error) {
|
|
522
|
-
throw new Error(`Error in getHeartRate: ${error.message}`);
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
async consentGrant() {
|
|
526
|
-
try {
|
|
527
|
-
// 为每个请求添加单独的错误处理,确保即使有请求失败,其他请求也能继续执行
|
|
528
|
-
const results = await Promise.all([
|
|
529
|
-
this.client
|
|
530
|
-
.post(`${this.url.CONSENT_GRANT}`, {
|
|
531
|
-
consentTypeId: 'DI_CONNECT_UPLOAD',
|
|
532
|
-
consentLocale: 'en-US',
|
|
533
|
-
consentVersion: '59'
|
|
534
|
-
})
|
|
535
|
-
.catch((error) => {
|
|
536
|
-
console.warn('DI_CONNECT_UPLOAD 请求失败:', error.message);
|
|
537
|
-
return null;
|
|
538
|
-
}),
|
|
539
|
-
this.client
|
|
540
|
-
.post(`${this.url.CONSENT_GRANT}`, {
|
|
541
|
-
consentTypeId: 'DI_CONNECT_CONNECT-PRIVACY',
|
|
542
|
-
consentLocale: 'zh-CN',
|
|
543
|
-
consentVersion: '18'
|
|
544
|
-
})
|
|
545
|
-
.catch((error) => {
|
|
546
|
-
console.warn('DI_CONNECT_CONNECT-PRIVACY 请求失败:', error.message);
|
|
547
|
-
return null;
|
|
548
|
-
}),
|
|
549
|
-
this.client
|
|
550
|
-
.post(`${this.url.CONSENT_GRANT}`, {
|
|
551
|
-
consentTypeId: 'DI_CONNECT_GOLF-PRIVACY',
|
|
552
|
-
consentLocale: 'zh-CN',
|
|
553
|
-
consentVersion: '16'
|
|
554
|
-
})
|
|
555
|
-
.catch((error) => {
|
|
556
|
-
console.warn('DI_CONNECT_GOLF-PRIVACY 请求失败:', error.message);
|
|
557
|
-
return null;
|
|
558
|
-
}),
|
|
559
|
-
this.client
|
|
560
|
-
.put(`${this.url.ACCOUNT_DEVICE_SYNC}`, {
|
|
561
|
-
key: 'account.deviceSync',
|
|
562
|
-
value: true
|
|
563
|
-
})
|
|
564
|
-
.catch((error) => {
|
|
565
|
-
console.warn('ACCOUNT_DEVICE_SYNC 请求失败:', error.message);
|
|
566
|
-
return null;
|
|
567
|
-
})
|
|
568
|
-
]);
|
|
569
|
-
console.log('consentGrant 请求结果:', results);
|
|
570
|
-
// 检查有多少请求成功
|
|
571
|
-
const successfulRequests = results.filter((result) => result !== null).length;
|
|
572
|
-
console.log(`consentGrant: ${successfulRequests}/${results.length} 个请求成功`);
|
|
573
|
-
}
|
|
574
|
-
catch (error) {
|
|
575
|
-
throw new Error(`Error in consenGrant: ${error.message}`);
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
|
-
async get(url, data) {
|
|
579
|
-
const response = await this.client.get(url, data);
|
|
580
|
-
return response;
|
|
581
|
-
}
|
|
582
|
-
async post(url, data) {
|
|
583
|
-
const response = await this.client.post(url, data, {});
|
|
584
|
-
return response;
|
|
585
|
-
}
|
|
586
|
-
async put(url, data) {
|
|
587
|
-
const response = await this.client.put(url, data, {});
|
|
588
|
-
return response;
|
|
589
|
-
}
|
|
590
|
-
}
|
|
591
|
-
exports.default = GarminConnect;
|
|
592
|
-
//# 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":"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"}
|
|
1
|
+
{"version":3,"file":"GarminConnect.js","sourceRoot":"","sources":["../../src/garmin/GarminConnect.ts"],"names":[],"mappings":"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"}
|