@gooin/garmin-connect 1.6.5 → 1.6.7

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 (63) hide show
  1. package/README.md +243 -49
  2. package/dist/common/HttpClient.d.ts +1 -0
  3. package/dist/common/HttpClient.js +271 -421
  4. package/dist/common/HttpClient.js.map +1 -1
  5. package/dist/garmin/GarminConnect copy.d.ts +76 -0
  6. package/dist/garmin/GarminConnect copy.js +397 -0
  7. package/dist/garmin/GarminConnect copy.js.map +1 -0
  8. package/dist/garmin/GarminConnect.d.ts +35 -5
  9. package/dist/garmin/GarminConnect.js +404 -322
  10. package/dist/garmin/GarminConnect.js.map +1 -1
  11. package/dist/garmin/GarminConnect_new.d.ts +76 -0
  12. package/dist/garmin/GarminConnect_new.js +397 -0
  13. package/dist/garmin/GarminConnect_new.js.map +1 -0
  14. package/dist/garmin/GarminConnect_old.d.ts +75 -0
  15. package/dist/garmin/GarminConnect_old.js +386 -0
  16. package/dist/garmin/GarminConnect_old.js.map +1 -0
  17. package/dist/garmin/UrlClass.d.ts +16 -1
  18. package/dist/garmin/UrlClass.js +114 -139
  19. package/dist/garmin/UrlClass.js.map +1 -1
  20. package/dist/garmin/Urls copy.d.ts +66 -0
  21. package/dist/garmin/Urls copy.js +109 -0
  22. package/dist/garmin/Urls copy.js.map +1 -0
  23. package/dist/garmin/common/DateUtils.d.ts +6 -0
  24. package/dist/garmin/common/DateUtils.js +38 -0
  25. package/dist/garmin/common/DateUtils.js.map +1 -0
  26. package/dist/garmin/common/HydrationUtils.d.ts +2 -0
  27. package/dist/garmin/common/HydrationUtils.js +16 -0
  28. package/dist/garmin/common/HydrationUtils.js.map +1 -0
  29. package/dist/garmin/common/WeightUtils.d.ts +1 -0
  30. package/dist/garmin/common/WeightUtils.js +9 -0
  31. package/dist/garmin/common/WeightUtils.js.map +1 -0
  32. package/dist/garmin/types/activity.d.ts +408 -0
  33. package/dist/garmin/types/activity.js +27 -0
  34. package/dist/garmin/types/activity.js.map +1 -0
  35. package/dist/garmin/types/course.d.ts +146 -0
  36. package/dist/garmin/types/course.js +3 -0
  37. package/dist/garmin/types/course.js.map +1 -0
  38. package/dist/garmin/types/golf.d.ts +67 -0
  39. package/dist/garmin/types/golf.js +3 -0
  40. package/dist/garmin/types/golf.js.map +1 -0
  41. package/dist/garmin/types/heartrate.d.ts +22 -0
  42. package/dist/garmin/types/heartrate.js +2 -0
  43. package/dist/garmin/types/heartrate.js.map +1 -0
  44. package/dist/garmin/types/hydration.d.ts +28 -0
  45. package/dist/garmin/types/hydration.js +2 -0
  46. package/dist/garmin/types/hydration.js.map +1 -0
  47. package/dist/garmin/types/index.d.ts +541 -0
  48. package/dist/garmin/types/index.js +17 -0
  49. package/dist/garmin/types/index.js.map +1 -0
  50. package/dist/garmin/types/sleep.d.ts +120 -0
  51. package/dist/garmin/types/sleep.js +3 -0
  52. package/dist/garmin/types/sleep.js.map +1 -0
  53. package/dist/garmin/types/weight.d.ts +42 -0
  54. package/dist/garmin/types/weight.js +3 -0
  55. package/dist/garmin/types/weight.js.map +1 -0
  56. package/dist/garmin/types.d.ts +107 -0
  57. package/dist/garmin/workouts/Running.js +36 -53
  58. package/dist/garmin/workouts/Running.js.map +1 -1
  59. package/dist/utils.d.ts +3 -3
  60. package/dist/utils.js +27 -36
  61. package/dist/utils.js.map +1 -1
  62. package/examples/example.js +1 -1
  63. package/package.json +1 -1
@@ -0,0 +1,386 @@
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
+ exports.Event = void 0;
7
+ const app_root_path_1 = __importDefault(require("app-root-path"));
8
+ const form_data_1 = __importDefault(require("form-data"));
9
+ const lodash_1 = __importDefault(require("lodash"));
10
+ const luxon_1 = require("luxon");
11
+ const node_fs_1 = __importDefault(require("node:fs"));
12
+ const node_path_1 = __importDefault(require("node:path"));
13
+ const HttpClient_1 = require("../common/HttpClient");
14
+ const utils_1 = require("../utils");
15
+ const UrlClass_1 = require("./UrlClass");
16
+ const types_1 = require("./types");
17
+ const Running_1 = __importDefault(require("./workouts/Running"));
18
+ const DateUtils_1 = require("./common/DateUtils");
19
+ const WeightUtils_1 = require("./common/WeightUtils");
20
+ const HydrationUtils_1 = require("./common/HydrationUtils");
21
+ let config = undefined;
22
+ try {
23
+ config = app_root_path_1.default.require('/garmin.config.json');
24
+ }
25
+ catch (e) {
26
+ // Do nothing
27
+ }
28
+ var Event;
29
+ (function (Event) {
30
+ Event["sessionChange"] = "sessionChange";
31
+ })(Event = exports.Event || (exports.Event = {}));
32
+ class GarminConnect {
33
+ // private oauth1: OAuth;
34
+ constructor(credentials = config, domain = 'garmin.com') {
35
+ if (!credentials) {
36
+ throw new Error('Missing credentials');
37
+ }
38
+ this.credentials = credentials;
39
+ this.url = new UrlClass_1.UrlClass(domain);
40
+ this.client = new HttpClient_1.HttpClient(this.url);
41
+ this._userHash = undefined;
42
+ this.listeners = {};
43
+ }
44
+ async login(username, password) {
45
+ if (username && password) {
46
+ this.credentials.username = username;
47
+ this.credentials.password = password;
48
+ }
49
+ await this.client.login(this.credentials.username, this.credentials.password);
50
+ return this;
51
+ }
52
+ exportTokenToFile(dirPath) {
53
+ if (!(0, utils_1.checkIsDirectory)(dirPath)) {
54
+ (0, utils_1.createDirectory)(dirPath);
55
+ }
56
+ // save oauth1 to json
57
+ if (this.client.oauth1Token) {
58
+ (0, utils_1.writeToFile)(node_path_1.default.join(dirPath, 'oauth1_token.json'), JSON.stringify(this.client.oauth1Token));
59
+ }
60
+ if (this.client.oauth2Token) {
61
+ (0, utils_1.writeToFile)(node_path_1.default.join(dirPath, 'oauth2_token.json'), JSON.stringify(this.client.oauth2Token));
62
+ }
63
+ }
64
+ loadTokenByFile(dirPath) {
65
+ if (!(0, utils_1.checkIsDirectory)(dirPath)) {
66
+ throw new Error('loadTokenByFile: Directory not found: ' + dirPath);
67
+ }
68
+ let oauth1Data = node_fs_1.default.readFileSync(node_path_1.default.join(dirPath, 'oauth1_token.json'));
69
+ const oauth1 = JSON.parse(oauth1Data);
70
+ this.client.oauth1Token = oauth1;
71
+ let oauth2Data = node_fs_1.default.readFileSync(node_path_1.default.join(dirPath, 'oauth2_token.json'));
72
+ const oauth2 = JSON.parse(oauth2Data);
73
+ this.client.oauth2Token = oauth2;
74
+ console.log('loadTokenByFile - oauth2Token:', this.client.oauth2Token);
75
+ }
76
+ exportToken() {
77
+ if (!this.client.oauth1Token || !this.client.oauth2Token) {
78
+ throw new Error('exportToken: Token not found');
79
+ }
80
+ return {
81
+ oauth1: this.client.oauth1Token,
82
+ oauth2: this.client.oauth2Token
83
+ };
84
+ }
85
+ // from db or localstorage etc
86
+ loadToken(oauth1, oauth2) {
87
+ this.client.oauth1Token = oauth1;
88
+ this.client.oauth2Token = oauth2;
89
+ }
90
+ async getUserSettings() {
91
+ return this.client.get(this.url.USER_SETTINGS);
92
+ }
93
+ async getUserProfile() {
94
+ return this.client.get(this.url.USER_PROFILE);
95
+ }
96
+ async getActivities(start, limit, activityType, subActivityType) {
97
+ return this.client.get(this.url.ACTIVITIES, {
98
+ params: { start, limit, activityType, subActivityType }
99
+ });
100
+ }
101
+ async getActivity(activity) {
102
+ if (!activity.activityId)
103
+ throw new Error('Missing activityId');
104
+ return this.client.get(this.url.ACTIVITY + activity.activityId);
105
+ }
106
+ async countActivities() {
107
+ return this.client.get(this.url.STAT_ACTIVITIES, {
108
+ params: {
109
+ aggregation: 'lifetime',
110
+ startDate: '1970-01-01',
111
+ endDate: luxon_1.DateTime.now().toFormat('yyyy-MM-dd'),
112
+ metric: 'duration'
113
+ }
114
+ });
115
+ }
116
+ async downloadOriginalActivityData(activity, dir, type = 'zip') {
117
+ if (!activity.activityId)
118
+ throw new Error('Missing activityId');
119
+ if (!(0, utils_1.checkIsDirectory)(dir)) {
120
+ (0, utils_1.createDirectory)(dir);
121
+ }
122
+ let fileBuffer;
123
+ if (type === 'tcx') {
124
+ fileBuffer = await this.client.get(this.url.DOWNLOAD_TCX + activity.activityId);
125
+ }
126
+ else if (type === 'gpx') {
127
+ fileBuffer = await this.client.get(this.url.DOWNLOAD_GPX + activity.activityId);
128
+ }
129
+ else if (type === 'kml') {
130
+ fileBuffer = await this.client.get(this.url.DOWNLOAD_KML + activity.activityId);
131
+ }
132
+ else if (type === 'zip') {
133
+ fileBuffer = await this.client.get(this.url.DOWNLOAD_ZIP + activity.activityId, {
134
+ responseType: 'arraybuffer'
135
+ });
136
+ }
137
+ else {
138
+ throw new Error('downloadOriginalActivityData - Invalid type: ' + type);
139
+ }
140
+ (0, utils_1.writeToFile)(node_path_1.default.join(dir, `${activity.activityId}.${type}`), fileBuffer);
141
+ }
142
+ async uploadActivity(file, format = 'fit') {
143
+ var _a;
144
+ const detectedFormat = (_a = (format || node_path_1.default.extname(file))) === null || _a === void 0 ? void 0 : _a.toLowerCase();
145
+ if (!lodash_1.default.includes(types_1.UploadFileType, detectedFormat)) {
146
+ throw new Error('uploadActivity - Invalid format: ' + format);
147
+ }
148
+ const fileBuffer = node_fs_1.default.createReadStream(file);
149
+ const form = new form_data_1.default();
150
+ form.append('userfile', fileBuffer);
151
+ const response = await this.client.post(this.url.UPLOAD + '.' + format, form, {
152
+ headers: {
153
+ 'Content-Type': form.getHeaders()['content-type']
154
+ }
155
+ });
156
+ return response;
157
+ }
158
+ async deleteActivity(activity) {
159
+ if (!activity.activityId)
160
+ throw new Error('Missing activityId');
161
+ await this.client.delete(this.url.ACTIVITY + activity.activityId);
162
+ }
163
+ async getWorkouts(start, limit) {
164
+ return this.client.get(this.url.WORKOUTS, {
165
+ params: {
166
+ start,
167
+ limit
168
+ }
169
+ });
170
+ }
171
+ async getWorkoutDetail(workout) {
172
+ if (!workout.workoutId)
173
+ throw new Error('Missing workoutId');
174
+ return this.client.get(this.url.WORKOUT(workout.workoutId));
175
+ }
176
+ async addWorkout(workout) {
177
+ if (!workout)
178
+ throw new Error('Missing workout');
179
+ if (workout instanceof Running_1.default) {
180
+ if (workout.isValid()) {
181
+ const data = { ...workout.toJson() };
182
+ if (!data.description) {
183
+ data.description = 'Added by garmin-connect for Node.js';
184
+ }
185
+ return this.client.post(this.url.WORKOUT(), data);
186
+ }
187
+ }
188
+ if (!workout.workoutSegments)
189
+ throw new Error('Missing workoutSegments, please use WorkoutDetail, not Workout.');
190
+ const newWorkout = lodash_1.default.omit(workout, [
191
+ 'workoutId',
192
+ 'ownerId',
193
+ 'updatedDate',
194
+ 'createdDate',
195
+ 'author'
196
+ ]);
197
+ if (!newWorkout.description) {
198
+ newWorkout.description = 'Added by garmin-connect for Node.js';
199
+ }
200
+ // console.log('addWorkout - newWorkout:', newWorkout)
201
+ return this.client.post(this.url.WORKOUT(), newWorkout);
202
+ }
203
+ async addRunningWorkout(name, meters, description) {
204
+ const running = new Running_1.default();
205
+ running.name = name;
206
+ running.distance = meters;
207
+ running.description = description;
208
+ return this.addWorkout(running);
209
+ }
210
+ async deleteWorkout(workout) {
211
+ if (!workout.workoutId)
212
+ throw new Error('Missing workout');
213
+ return this.client.delete(this.url.WORKOUT(workout.workoutId));
214
+ }
215
+ async scheduleWorkout(workout, date = new Date()) {
216
+ if (!workout.workoutId)
217
+ throw new Error('Missing workoutId');
218
+ const formatedDate = luxon_1.DateTime.fromJSDate(date).toFormat('yyyy-MM-dd');
219
+ return this.client.post(`${this.url.SCHEDULE_WORKOUTS}${workout.workoutId}`, {
220
+ date: formatedDate
221
+ });
222
+ }
223
+ // Garmin use month 0-11, not real month.
224
+ async getCalendar(year = new Date().getFullYear(), month = new Date().getMonth()) {
225
+ return this.client.get(this.url.CALENDAR(year, month));
226
+ }
227
+ async getSteps(date = new Date()) {
228
+ const dateString = (0, DateUtils_1.toDateString)(date);
229
+ const days = await this.client.get(`${this.url.DAILY_STEPS}${dateString}/${dateString}`);
230
+ const dayStats = days.find(({ calendarDate }) => calendarDate === dateString);
231
+ if (!dayStats) {
232
+ throw new Error("Can't find daily steps for this date.");
233
+ }
234
+ return dayStats.totalSteps;
235
+ }
236
+ async getSleepData(date = new Date()) {
237
+ try {
238
+ const dateString = (0, DateUtils_1.toDateString)(date);
239
+ const sleepData = await this.client.get(`${this.url.DAILY_SLEEP}`, { params: { date: dateString } });
240
+ if (!sleepData) {
241
+ throw new Error('Invalid or empty sleep data response.');
242
+ }
243
+ return sleepData;
244
+ }
245
+ catch (error) {
246
+ throw new Error(`Error in getSleepData: ${error.message}`);
247
+ }
248
+ }
249
+ async getSleepDuration(date = new Date()) {
250
+ try {
251
+ const sleepData = await this.getSleepData(date);
252
+ if (!sleepData ||
253
+ !sleepData.dailySleepDTO ||
254
+ sleepData.dailySleepDTO.sleepStartTimestampGMT === undefined ||
255
+ sleepData.dailySleepDTO.sleepEndTimestampGMT === undefined) {
256
+ throw new Error('Invalid or missing sleep data for the specified date.');
257
+ }
258
+ const sleepStartTimestampGMT = sleepData.dailySleepDTO.sleepStartTimestampGMT;
259
+ const sleepEndTimestampGMT = sleepData.dailySleepDTO.sleepEndTimestampGMT;
260
+ const { hours, minutes } = (0, DateUtils_1.calculateTimeDifference)(sleepStartTimestampGMT, sleepEndTimestampGMT);
261
+ return {
262
+ hours,
263
+ minutes
264
+ };
265
+ }
266
+ catch (error) {
267
+ throw new Error(`Error in getSleepDuration: ${error.message}`);
268
+ }
269
+ }
270
+ async getDailyWeightData(date = new Date()) {
271
+ try {
272
+ const dateString = (0, DateUtils_1.toDateString)(date);
273
+ const weightData = await this.client.get(`${this.url.DAILY_WEIGHT}/${dateString}`);
274
+ if (!weightData) {
275
+ throw new Error('Invalid or empty weight data response.');
276
+ }
277
+ return weightData;
278
+ }
279
+ catch (error) {
280
+ throw new Error(`Error in getDailyWeightData: ${error.message}`);
281
+ }
282
+ }
283
+ async getDailyWeightInPounds(date = new Date()) {
284
+ const weightData = await this.getDailyWeightData(date);
285
+ if (weightData.totalAverage &&
286
+ typeof weightData.totalAverage.weight === 'number') {
287
+ return (0, WeightUtils_1.gramsToPounds)(weightData.totalAverage.weight);
288
+ }
289
+ else {
290
+ throw new Error("Can't find valid daily weight for this date.");
291
+ }
292
+ }
293
+ async getDailyHydration(date = new Date()) {
294
+ try {
295
+ const dateString = (0, DateUtils_1.toDateString)(date);
296
+ const hydrationData = await this.client.get(`${this.url.DAILY_HYDRATION}/${dateString}`);
297
+ if (!hydrationData || !hydrationData.valueInML) {
298
+ throw new Error('Invalid or empty hydration data response.');
299
+ }
300
+ return (0, HydrationUtils_1.convertMLToOunces)(hydrationData.valueInML);
301
+ }
302
+ catch (error) {
303
+ throw new Error(`Error in getDailyHydration: ${error.message}`);
304
+ }
305
+ }
306
+ async updateWeight(date = new Date(), lbs, timezone) {
307
+ try {
308
+ const weightData = await this.client.post(`${this.url.UPDATE_WEIGHT}`, {
309
+ dateTimestamp: (0, DateUtils_1.getLocalTimestamp)(date, timezone),
310
+ gmtTimestamp: date.toISOString().substring(0, 23),
311
+ unitKey: 'lbs',
312
+ value: lbs
313
+ });
314
+ return weightData;
315
+ }
316
+ catch (error) {
317
+ throw new Error(`Error in updateWeight: ${error.message}`);
318
+ }
319
+ }
320
+ async updateHydrationLogOunces(date = new Date(), valueInOz) {
321
+ try {
322
+ const dateString = (0, DateUtils_1.toDateString)(date);
323
+ const hydrationData = await this.client.put(`${this.url.HYDRATION_LOG}`, {
324
+ calendarDate: dateString,
325
+ valueInML: (0, HydrationUtils_1.convertOuncesToML)(valueInOz),
326
+ userProfileId: (await this.getUserProfile()).profileId,
327
+ timestampLocal: date.toISOString().substring(0, 23)
328
+ });
329
+ return hydrationData;
330
+ }
331
+ catch (error) {
332
+ throw new Error(`Error in updateHydrationLogOunces: ${error.message}`);
333
+ }
334
+ }
335
+ async getGolfSummary() {
336
+ try {
337
+ const golfSummary = await this.client.get(`${this.url.GOLF_SCORECARD_SUMMARY}`);
338
+ if (!golfSummary) {
339
+ throw new Error('Invalid or empty golf summary data response.');
340
+ }
341
+ return golfSummary;
342
+ }
343
+ catch (error) {
344
+ throw new Error(`Error in getGolfSummary: ${error.message}`);
345
+ }
346
+ }
347
+ async getGolfScorecard(scorecardId) {
348
+ try {
349
+ const golfScorecard = await this.client.get(`${this.url.GOLF_SCORECARD_DETAIL}`, { params: { 'scorecard-ids': scorecardId } });
350
+ if (!golfScorecard) {
351
+ throw new Error('Invalid or empty golf scorecard data response.');
352
+ }
353
+ return golfScorecard;
354
+ }
355
+ catch (error) {
356
+ throw new Error(`Error in getGolfScorecard: ${error.message}`);
357
+ }
358
+ }
359
+ async getHeartRate(date = new Date()) {
360
+ try {
361
+ const dateString = (0, DateUtils_1.toDateString)(date);
362
+ const heartRate = await this.client.get(`${this.url.DAILY_HEART_RATE}`, { params: { date: dateString } });
363
+ return heartRate;
364
+ }
365
+ catch (error) {
366
+ throw new Error(`Error in getHeartRate: ${error.message}`);
367
+ }
368
+ }
369
+ async get(url, data) {
370
+ console.log(' this.client:', this.client);
371
+ console.log(' this.client url:', url);
372
+ console.log(' this.client dara:', data);
373
+ const response = await this.client.get(url, data);
374
+ return response;
375
+ }
376
+ async post(url, data) {
377
+ const response = await this.client.post(url, data, {});
378
+ return response;
379
+ }
380
+ async put(url, data) {
381
+ const response = await this.client.put(url, data, {});
382
+ return response;
383
+ }
384
+ }
385
+ exports.default = GarminConnect;
386
+ //# sourceMappingURL=GarminConnect_old.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GarminConnect_old.js","sourceRoot":"","sources":["../../src/garmin/GarminConnect_old.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { GCWorkoutId, GarminDomain } from './types';
1
+ import { GCCourseId, GCWorkoutId, GarminDomain } from './types';
2
2
  export declare class UrlClass {
3
3
  private domain;
4
4
  GC_MODERN: string;
@@ -21,7 +21,22 @@ export declare class UrlClass {
21
21
  get DOWNLOAD_TCX(): string;
22
22
  get DOWNLOAD_KML(): string;
23
23
  get UPLOAD(): string;
24
+ get DOWNLOAD_WELLNESS(): string;
24
25
  get IMPORT_DATA(): string;
26
+ get DAILY_STEPS(): string;
27
+ get DAILY_SLEEP(): string;
28
+ get DAILY_WEIGHT(): string;
29
+ get UPDATE_WEIGHT(): string;
30
+ get DAILY_HYDRATION(): string;
31
+ get HYDRATION_LOG(): string;
32
+ get GOLF_SCORECARD_SUMMARY(): string;
33
+ get GOLF_SCORECARD_DETAIL(): string;
34
+ get DAILY_HEART_RATE(): string;
25
35
  WORKOUT(id?: GCWorkoutId): string;
26
36
  get WORKOUTS(): string;
37
+ get SCHEDULE_WORKOUTS(): string;
38
+ CALENDAR(yaer: number, month: number): string;
39
+ COURSE(id?: GCCourseId): string;
40
+ get COURSE_FAVORITE(): string;
41
+ get COURSE_OWNER(): string;
27
42
  }