@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.
Files changed (132) 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 -612
  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 -78
  14. package/dist/garmin/GarminConnect.js +1 -592
  15. package/dist/garmin/GarminConnect.js.map +1 -1
  16. package/dist/garmin/UrlClass.d.ts +21 -0
  17. package/dist/garmin/UrlClass.js +1 -149
  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 +3 -0
  114. package/dist/garmin/types/hrv.js +1 -3
  115. package/dist/garmin/types/hydration.d.ts +3 -3
  116. package/dist/garmin/types/hydration.js +1 -2
  117. package/dist/garmin/types/index.d.ts +15 -0
  118. package/dist/garmin/types/index.js +1 -36
  119. package/dist/garmin/types/index.js.map +1 -1
  120. package/dist/garmin/types/personal-info.js +1 -3
  121. package/dist/garmin/types/race-prediction.d.ts +50 -0
  122. package/dist/garmin/types/race-prediction.js +1 -0
  123. package/dist/garmin/types/race-prediction.js.map +1 -0
  124. package/dist/garmin/types/sleep.js +1 -3
  125. package/dist/garmin/types/training-status.js +1 -3
  126. package/dist/garmin/types/weight.d.ts +46 -4
  127. package/dist/garmin/types/weight.js +1 -3
  128. package/dist/garmin/workouts/Running.js +1 -47
  129. package/dist/garmin/workouts/templates/RunningTemplate.js +1 -78
  130. package/dist/index.js +1 -11
  131. package/dist/utils.js +1 -37
  132. package/package.json +4 -3
@@ -1,126 +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
- exports.MFAManager = void 0;
7
- const FileMFASessionStorage_1 = require("./FileMFASessionStorage");
8
- const RedisMFASessionStorage_1 = require("./RedisMFASessionStorage");
9
- const path_1 = __importDefault(require("path"));
10
- /**
11
- * MFA管理器,用于处理需要等待外部验证码的登录流程
12
- * 支持文件系统和Redis两种存储方式
13
- */
14
- class MFAManager {
15
- constructor(config) {
16
- this.DEFAULT_TIMEOUT = 5 * 60 * 1000; // 5分钟
17
- // 根据配置创建不同的存储实现
18
- if (config.type === 'redis') {
19
- if (config.redis) {
20
- this.storage = new RedisMFASessionStorage_1.RedisMFASessionStorage(undefined, undefined, config.redis);
21
- }
22
- else if (config.redisUrl && config.redisToken) {
23
- this.storage = new RedisMFASessionStorage_1.RedisMFASessionStorage(config.redisUrl, config.redisToken);
24
- }
25
- else if (config.redisUrl) {
26
- this.storage = new RedisMFASessionStorage_1.RedisMFASessionStorage(config.redisUrl);
27
- }
28
- else {
29
- throw new Error('Redis配置不完整,需要提供redisUrl或redis实例');
30
- }
31
- }
32
- else if (config.type === 'file') {
33
- const storageDir = config.dir || path_1.default.join(process.cwd(), '.mfa-sessions');
34
- this.storage = new FileMFASessionStorage_1.FileMFASessionStorage(storageDir);
35
- }
36
- else {
37
- throw new Error(`不支持的MFA存储类型: ${config.type}`);
38
- }
39
- }
40
- /**
41
- * 获取MFA管理器单例
42
- */
43
- static getInstance(config) {
44
- if (!MFAManager.instance) {
45
- if (!config) {
46
- throw new Error('首次创建MFAManager实例必须提供配置');
47
- }
48
- console.log('创建MFA管理器实例', config);
49
- MFAManager.instance = new MFAManager(config);
50
- }
51
- return MFAManager.instance;
52
- }
53
- /**
54
- * 重置单例实例,用于测试或重新配置
55
- */
56
- static resetInstance() {
57
- MFAManager.instance = undefined;
58
- }
59
- /**
60
- * 创建一个等待MFA验证码的Promise
61
- * @param sessionId 会话ID
62
- * @param timeout 超时时间(毫秒)
63
- * @returns Promise<string> 返回验证码
64
- */
65
- async waitForMFACode(sessionId, timeout = this.DEFAULT_TIMEOUT) {
66
- return this.storage.waitForMFACode(sessionId, timeout);
67
- }
68
- /**
69
- * 提交MFA验证码
70
- * @param sessionId 会话ID
71
- * @param code 验证码
72
- * @returns 是否成功提交
73
- */
74
- async submitMFACode(sessionId, code) {
75
- return this.storage.submitMFACode(sessionId, code);
76
- }
77
- /**
78
- * 取消MFA验证
79
- * @param sessionId 会话ID
80
- * @param reason 取消原因
81
- * @returns 是否成功取消
82
- */
83
- async cancelMFARequest(sessionId, reason = 'MFA验证已取消') {
84
- return this.storage.cancelMFARequest(sessionId, reason);
85
- }
86
- /**
87
- * 检查会话是否存在
88
- * @param sessionId 会话ID
89
- * @returns 是否存在
90
- */
91
- async hasSession(sessionId) {
92
- return this.storage.hasSession(sessionId);
93
- }
94
- /**
95
- * 获取所有活跃的会话ID
96
- * @returns 会话ID列表
97
- */
98
- async getActiveSessions() {
99
- return this.storage.getActiveSessions();
100
- }
101
- /**
102
- * 清理过期的请求
103
- * @param maxAge 最大存活时间(毫秒)
104
- */
105
- async cleanupExpiredRequests(maxAge = this.DEFAULT_TIMEOUT) {
106
- return this.storage.cleanupExpiredRequests(maxAge);
107
- }
108
- /**
109
- * 定期清理过期请求
110
- */
111
- startCleanupTask(interval = 60000) {
112
- setInterval(() => {
113
- this.cleanupExpiredRequests();
114
- }, interval);
115
- }
116
- /**
117
- * 关闭资源连接(主要用于Redis)
118
- */
119
- async disconnect() {
120
- if (this.storage instanceof RedisMFASessionStorage_1.RedisMFASessionStorage) {
121
- await this.storage.disconnect();
122
- }
123
- }
124
- }
125
- exports.MFAManager = MFAManager;
126
- //# sourceMappingURL=MFAManager.js.map
1
+ 'use strict';const a6_0x1cb87b=a6_0x4a43;(function(_0x15b86b,_0x5d5421){const _0x478736=a6_0x4a43,_0x2cb36b=_0x15b86b();while(!![]){try{const _0x27fa3c=-parseInt(_0x478736(0x1f6))/0x1*(-parseInt(_0x478736(0x1d0))/0x2)+-parseInt(_0x478736(0x1da))/0x3*(-parseInt(_0x478736(0x1e8))/0x4)+-parseInt(_0x478736(0x1f7))/0x5*(parseInt(_0x478736(0x1d2))/0x6)+parseInt(_0x478736(0x1d1))/0x7+-parseInt(_0x478736(0x1d5))/0x8*(parseInt(_0x478736(0x1e3))/0x9)+parseInt(_0x478736(0x1d9))/0xa*(-parseInt(_0x478736(0x1f4))/0xb)+parseInt(_0x478736(0x1df))/0xc*(parseInt(_0x478736(0x1d4))/0xd);if(_0x27fa3c===_0x5d5421)break;else _0x2cb36b['push'](_0x2cb36b['shift']());}catch(_0x4f92d1){_0x2cb36b['push'](_0x2cb36b['shift']());}}}(a6_0x55ab,0xbbf5e));var __importDefault=this&&this[a6_0x1cb87b(0x1d8)]||function(_0x219bf3){const _0x377673=a6_0x1cb87b;return _0x219bf3&&_0x219bf3[_0x377673(0x1e0)]?_0x219bf3:{'default':_0x219bf3};};Object['defineProperty'](exports,a6_0x1cb87b(0x1e0),{'value':!![]}),exports['MFAManager']=void 0x0;const FileMFASessionStorage_1=require(a6_0x1cb87b(0x1dc)),RedisMFASessionStorage_1=require(a6_0x1cb87b(0x1e6)),path_1=__importDefault(require(a6_0x1cb87b(0x1f2)));function a6_0x55ab(){const _0x5a6c1a=['12gbOsYe','首次创建MFAManager实例必须提供配置','./FileMFASessionStorage','RedisMFASessionStorage','redisUrl','12GyJAwK','__esModule','disconnect','getActiveSessions','738EdZJEh','file','default','./RedisMFASessionStorage','cancelMFARequest','1140376GvZRGa','DEFAULT_TIMEOUT','MFAManager','redis','dir','FileMFASessionStorage','redisToken','storage','type','instance','path','.mfa-sessions','12276583FfQVKt','submitMFACode','141Lgemyf','71430NrYUgh','cleanupExpiredRequests','log','cwd','9154FWZscm','693539OLSWbr','48PKfzCa','Redis配置不完整,需要提供redisUrl或redis实例','16733561xvWrMg','114320kMtaop','getInstance','waitForMFACode','__importDefault','10FykeVz'];a6_0x55ab=function(){return _0x5a6c1a;};return a6_0x55ab();}function a6_0x4a43(_0xe120e2,_0x1fd8dc){_0xe120e2=_0xe120e2-0x1ce;const _0x55aba0=a6_0x55ab();let _0x4a4339=_0x55aba0[_0xe120e2];return _0x4a4339;}class MFAManager{constructor(_0x29654e){const _0x9c9fd3=a6_0x1cb87b;this[_0x9c9fd3(0x1e9)]=0x5*0x3c*0x3e8;if(_0x29654e[_0x9c9fd3(0x1f0)]===_0x9c9fd3(0x1eb)){if(_0x29654e['redis'])this['storage']=new RedisMFASessionStorage_1['RedisMFASessionStorage'](undefined,undefined,_0x29654e[_0x9c9fd3(0x1eb)]);else{if(_0x29654e[_0x9c9fd3(0x1de)]&&_0x29654e[_0x9c9fd3(0x1ee)])this[_0x9c9fd3(0x1ef)]=new RedisMFASessionStorage_1['RedisMFASessionStorage'](_0x29654e[_0x9c9fd3(0x1de)],_0x29654e[_0x9c9fd3(0x1ee)]);else{if(_0x29654e[_0x9c9fd3(0x1de)])this[_0x9c9fd3(0x1ef)]=new RedisMFASessionStorage_1['RedisMFASessionStorage'](_0x29654e['redisUrl']);else throw new Error(_0x9c9fd3(0x1d3));}}}else{if(_0x29654e[_0x9c9fd3(0x1f0)]===_0x9c9fd3(0x1e4)){const _0x14e6ce=_0x29654e[_0x9c9fd3(0x1ec)]||path_1[_0x9c9fd3(0x1e5)]['join'](process[_0x9c9fd3(0x1cf)](),_0x9c9fd3(0x1f3));this[_0x9c9fd3(0x1ef)]=new FileMFASessionStorage_1[(_0x9c9fd3(0x1ed))](_0x14e6ce);}else throw new Error('不支持的MFA存储类型:\x20'+_0x29654e[_0x9c9fd3(0x1f0)]);}}static[a6_0x1cb87b(0x1d6)](_0x606671){const _0x3c7d90=a6_0x1cb87b;if(!MFAManager[_0x3c7d90(0x1f1)]){if(!_0x606671)throw new Error(_0x3c7d90(0x1db));console[_0x3c7d90(0x1ce)]('创建MFA管理器实例',_0x606671),MFAManager[_0x3c7d90(0x1f1)]=new MFAManager(_0x606671);}return MFAManager[_0x3c7d90(0x1f1)];}static['resetInstance'](){MFAManager['instance']=undefined;}async[a6_0x1cb87b(0x1d7)](_0x5ab7a1,_0x35dfd0=this['DEFAULT_TIMEOUT']){const _0x347aa3=a6_0x1cb87b;return this[_0x347aa3(0x1ef)][_0x347aa3(0x1d7)](_0x5ab7a1,_0x35dfd0);}async[a6_0x1cb87b(0x1f5)](_0x3739ec,_0x850a0c){const _0x124480=a6_0x1cb87b;return this[_0x124480(0x1ef)][_0x124480(0x1f5)](_0x3739ec,_0x850a0c);}async[a6_0x1cb87b(0x1e7)](_0x1f52a7,_0x50b3bf='MFA验证已取消'){const _0x4c5fa2=a6_0x1cb87b;return this[_0x4c5fa2(0x1ef)][_0x4c5fa2(0x1e7)](_0x1f52a7,_0x50b3bf);}async['hasSession'](_0x42f0f7){const _0x189283=a6_0x1cb87b;return this[_0x189283(0x1ef)]['hasSession'](_0x42f0f7);}async['getActiveSessions'](){const _0x4b5005=a6_0x1cb87b;return this[_0x4b5005(0x1ef)][_0x4b5005(0x1e2)]();}async[a6_0x1cb87b(0x1f8)](_0x307f16=this[a6_0x1cb87b(0x1e9)]){return this['storage']['cleanupExpiredRequests'](_0x307f16);}['startCleanupTask'](_0x3be320=0xea60){setInterval(()=>{const _0x5b4f8d=a6_0x4a43;this[_0x5b4f8d(0x1f8)]();},_0x3be320);}async[a6_0x1cb87b(0x1e1)](){const _0x2f8274=a6_0x1cb87b;this[_0x2f8274(0x1ef)]instanceof RedisMFASessionStorage_1[_0x2f8274(0x1dd)]&&await this['storage'][_0x2f8274(0x1e1)]();}}exports[a6_0x1cb87b(0x1ea)]=MFAManager;
@@ -1,3 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=MFASessionStorage.js.map
1
+ 'use strict';function a7_0x430c(_0x38720f,_0x56ca7a){_0x38720f=_0x38720f-0x190;var _0x5b6be1=a7_0x5b6b();var _0x430c48=_0x5b6be1[_0x38720f];return _0x430c48;}var a7_0x56d331=a7_0x430c;(function(_0x5bc874,_0x51637c){var _0x3e9fe7=a7_0x430c,_0x2f644e=_0x5bc874();while(!![]){try{var _0x42f093=-parseInt(_0x3e9fe7(0x190))/0x1+parseInt(_0x3e9fe7(0x194))/0x2+-parseInt(_0x3e9fe7(0x197))/0x3*(parseInt(_0x3e9fe7(0x196))/0x4)+-parseInt(_0x3e9fe7(0x192))/0x5+parseInt(_0x3e9fe7(0x199))/0x6+parseInt(_0x3e9fe7(0x191))/0x7+-parseInt(_0x3e9fe7(0x193))/0x8*(-parseInt(_0x3e9fe7(0x195))/0x9);if(_0x42f093===_0x51637c)break;else _0x2f644e['push'](_0x2f644e['shift']());}catch(_0x5e93f7){_0x2f644e['push'](_0x2f644e['shift']());}}}(a7_0x5b6b,0xc7f8f));function a7_0x5b6b(){var _0x402d52=['421932HuLGNp','919636uLBzGj','8633541qakrJs','4598995FRCqsS','13022544SSxUAh','2178194MOmljO','9DYxaVh','29292PRgnCW','558ZpklLj','__esModule'];a7_0x5b6b=function(){return _0x402d52;};return a7_0x5b6b();}Object['defineProperty'](exports,a7_0x56d331(0x198),{'value':!![]});
@@ -1,281 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RedisMFASessionStorage = void 0;
4
- /**
5
- * Redis实现的MFA会话存储
6
- */
7
- class RedisMFASessionStorage {
8
- constructor(redisUrl, redisToken, redisClient) {
9
- this.DEFAULT_TIMEOUT = 5 * 60 * 1000; // 5分钟
10
- this.KEY_PREFIX = 'mfa:session:';
11
- if (redisClient) {
12
- this.redis = redisClient;
13
- }
14
- else if (redisUrl && redisToken) {
15
- // 使用Upstash Redis
16
- try {
17
- const { Redis } = require('@upstash/redis');
18
- this.redis = new Redis({
19
- url: redisUrl,
20
- token: redisToken
21
- });
22
- }
23
- catch (error) {
24
- throw new Error('Upstash Redis module not found. Please install @upstash/redis: npm install @upstash/redis');
25
- }
26
- }
27
- else if (redisUrl) {
28
- // 动态导入redis模块
29
- try {
30
- const Redis = require('ioredis');
31
- this.redis = new Redis(redisUrl);
32
- }
33
- catch (error) {
34
- throw new Error('Redis module not found. Please install ioredis: npm install ioredis');
35
- }
36
- }
37
- else {
38
- throw new Error('Either redisUrl with redisToken (for Upstash) or redisClient must be provided');
39
- }
40
- }
41
- /**
42
- * 获取会话键名
43
- */
44
- getSessionKey(sessionId) {
45
- return `${this.KEY_PREFIX}${sessionId}`;
46
- }
47
- /**
48
- * 创建一个等待MFA验证码的Promise
49
- * @param sessionId 会话ID
50
- * @param timeout 超时时间(毫秒)
51
- * @returns Promise<string> 返回验证码
52
- */
53
- async waitForMFACode(sessionId, timeout = this.DEFAULT_TIMEOUT) {
54
- // 清理可能存在的旧会话
55
- await this.cleanupRequest(sessionId);
56
- // 创建会话数据
57
- const sessionData = {
58
- sessionId,
59
- status: 'waiting',
60
- createdAt: new Date().toISOString(),
61
- timeout: timeout
62
- };
63
- const sessionKey = this.getSessionKey(sessionId);
64
- // 使用Redis的SET命令存储会话数据,并设置过期时间
65
- await this.redis.setex(sessionKey, Math.ceil(timeout / 1000), // Redis的TTL是秒
66
- JSON.stringify(sessionData));
67
- console.log(`MFA验证会话已创建: ${sessionId}`);
68
- // 轮询检查验证码是否已提交
69
- return new Promise((resolve, reject) => {
70
- const startTime = Date.now();
71
- const checkInterval = setInterval(async () => {
72
- try {
73
- // 检查是否超时
74
- if (Date.now() - startTime > timeout) {
75
- clearInterval(checkInterval);
76
- await this.cleanupRequest(sessionId);
77
- reject(new Error('MFA验证超时,请重新登录'));
78
- return;
79
- }
80
- // 检查会话状态
81
- const data = await this.redis.get(sessionKey);
82
- if (!data) {
83
- clearInterval(checkInterval);
84
- reject(new Error('MFA验证会话已过期'));
85
- return;
86
- }
87
- // 确保data是字符串,如果是对象则先转换为字符串
88
- const dataStr = typeof data === 'string' ? data : JSON.stringify(data);
89
- const session = JSON.parse(dataStr);
90
- // 如果状态已更新为resolved,则返回验证码
91
- if (session.status === 'resolved' && session.code) {
92
- clearInterval(checkInterval);
93
- await this.cleanupRequest(sessionId);
94
- resolve(session.code);
95
- return;
96
- }
97
- // 如果状态已更新为rejected,则抛出错误
98
- if (session.status === 'rejected' && session.error) {
99
- clearInterval(checkInterval);
100
- await this.cleanupRequest(sessionId);
101
- reject(new Error(session.error));
102
- return;
103
- }
104
- }
105
- catch (error) {
106
- clearInterval(checkInterval);
107
- await this.cleanupRequest(sessionId);
108
- reject(error instanceof Error
109
- ? error
110
- : new Error(String(error)));
111
- }
112
- }, 1000); // 每秒检查一次
113
- });
114
- }
115
- /**
116
- * 提交MFA验证码
117
- * @param sessionId 会话ID
118
- * @param code 验证码
119
- * @returns 是否成功提交
120
- */
121
- async submitMFACode(sessionId, code) {
122
- const sessionKey = this.getSessionKey(sessionId);
123
- try {
124
- // 获取会话数据
125
- const data = await this.redis.get(sessionKey);
126
- if (!data) {
127
- console.log(`未找到MFA验证会话: ${sessionId}`);
128
- return false;
129
- }
130
- // 确保data是字符串,如果是对象则先转换为字符串
131
- const dataStr = typeof data === 'string' ? data : JSON.stringify(data);
132
- const session = JSON.parse(dataStr);
133
- if (session.status !== 'waiting') {
134
- console.log(`MFA验证会话状态不正确: ${sessionId}, 状态: ${session.status}`);
135
- return false;
136
- }
137
- // 更新会话状态为已解决
138
- session.status = 'resolved';
139
- session.code = code;
140
- session.resolvedAt = new Date().toISOString();
141
- await this.redis.set(sessionKey, JSON.stringify(session));
142
- console.log(`MFA验证码已提交: code ${code}, sessionId ${sessionId}`);
143
- return true;
144
- }
145
- catch (error) {
146
- console.log(`提交MFA验证码失败: ${sessionId}, 错误: ${error instanceof Error ? error.message : String(error)}`);
147
- return false;
148
- }
149
- }
150
- /**
151
- * 取消MFA验证
152
- * @param sessionId 会话ID
153
- * @param reason 取消原因
154
- * @returns 是否成功取消
155
- */
156
- async cancelMFARequest(sessionId, reason = 'MFA验证已取消') {
157
- const sessionKey = this.getSessionKey(sessionId);
158
- try {
159
- // 获取会话数据
160
- const data = await this.redis.get(sessionKey);
161
- if (!data) {
162
- console.log(`未找到MFA验证会话: ${sessionId}`);
163
- return false;
164
- }
165
- // 确保data是字符串,如果是对象则先转换为字符串
166
- const dataStr = typeof data === 'string' ? data : JSON.stringify(data);
167
- const session = JSON.parse(dataStr);
168
- // 更新会话状态为已拒绝
169
- session.status = 'rejected';
170
- session.error = reason;
171
- session.rejectedAt = new Date().toISOString();
172
- await this.redis.set(sessionKey, JSON.stringify(session));
173
- console.log(`MFA验证已取消: ${sessionId}, 原因: ${reason}`);
174
- return true;
175
- }
176
- catch (error) {
177
- console.log(`取消MFA验证失败: ${sessionId}, 错误: ${error instanceof Error ? error.message : String(error)}`);
178
- return false;
179
- }
180
- }
181
- /**
182
- * 检查会话是否存在
183
- * @param sessionId 会话ID
184
- * @returns 是否存在
185
- */
186
- async hasSession(sessionId) {
187
- const sessionKey = this.getSessionKey(sessionId);
188
- try {
189
- const exists = await this.redis.exists(sessionKey);
190
- return exists === 1;
191
- }
192
- catch (_a) {
193
- return false;
194
- }
195
- }
196
- /**
197
- * 获取所有活跃的会话ID
198
- * @returns 会话ID列表
199
- */
200
- async getActiveSessions() {
201
- try {
202
- const keys = await this.redis.keys(`${this.KEY_PREFIX}*`);
203
- return keys.map((key) => key.replace(this.KEY_PREFIX, ''));
204
- }
205
- catch (error) {
206
- console.error('获取活跃会话失败:', error instanceof Error ? error : String(error));
207
- return [];
208
- }
209
- }
210
- /**
211
- * 清理过期的请求
212
- * @param maxAge 最大存活时间(毫秒)
213
- */
214
- async cleanupExpiredRequests(maxAge = this.DEFAULT_TIMEOUT) {
215
- try {
216
- const keys = await this.redis.keys(`${this.KEY_PREFIX}*`);
217
- const now = new Date();
218
- let cleanedCount = 0;
219
- for (const key of keys) {
220
- try {
221
- const data = await this.redis.get(key);
222
- if (!data)
223
- continue;
224
- // 确保data是字符串,如果是对象则先转换为字符串
225
- const dataStr = typeof data === 'string' ? data : JSON.stringify(data);
226
- const session = JSON.parse(dataStr);
227
- const createdAt = new Date(session.createdAt);
228
- // 检查是否过期
229
- if (now.getTime() - createdAt.getTime() > maxAge) {
230
- await this.redis.del(key);
231
- cleanedCount++;
232
- }
233
- }
234
- catch (error) {
235
- // 如果处理失败,直接删除
236
- try {
237
- await this.redis.del(key);
238
- cleanedCount++;
239
- }
240
- catch (unlinkError) {
241
- console.error(`删除过期会话失败: ${key}`, unlinkError instanceof Error
242
- ? unlinkError
243
- : String(unlinkError));
244
- }
245
- }
246
- }
247
- if (cleanedCount > 0) {
248
- console.log(`清理了 ${cleanedCount} 个过期的MFA验证会话`);
249
- }
250
- }
251
- catch (error) {
252
- console.error('清理过期请求失败:', error instanceof Error ? error : String(error));
253
- }
254
- }
255
- /**
256
- * 清理指定会话的资源
257
- * @param sessionId 会话ID
258
- */
259
- async cleanupRequest(sessionId) {
260
- const sessionKey = this.getSessionKey(sessionId);
261
- try {
262
- await this.redis.del(sessionKey);
263
- }
264
- catch (error) {
265
- // 忽略错误
266
- }
267
- }
268
- /**
269
- * 关闭Redis连接
270
- */
271
- async disconnect() {
272
- if (this.redis && typeof this.redis.disconnect === 'function') {
273
- await this.redis.disconnect();
274
- }
275
- else if (this.redis && typeof this.redis.quit === 'function') {
276
- await this.redis.quit();
277
- }
278
- }
279
- }
280
- exports.RedisMFASessionStorage = RedisMFASessionStorage;
281
- //# sourceMappingURL=RedisMFASessionStorage.js.map
1
+ 'use strict';function a8_0x5711(){const _0x4fdfc8=['parse','环境不支持定时器,无法等待MFA验证码','ioredis','rejected',',\x20sessionId\x20','提交MFA验证码失败:\x20','waiting','waitForMFACode','redis','UpstashRedis','defineProperty','35393196PXsoke','stringify','2806265cfHEOt','submitMFACode','resolvedAt','rejectedAt','resolved','toISOString','KEY_PREFIX','getActiveSessions','cancelMFARequest','MFA验证会话状态不正确:\x20','MFA验证会话已创建:\x20','MFA验证已取消','status','cleanupRequest','取消MFA验证失败:\x20','keys','undefined','getSessionKey','4VHBWNp','删除过期会话失败:\x20','replace','DEFAULT_TIMEOUT','1304355oVbdxs','\x20个过期的MFA验证会话','772uPIKtk','disconnect','Either\x20redisUrl\x20with\x20redisToken\x20(for\x20Upstash)\x20or\x20redisClient\x20must\x20be\x20provided',',\x20错误:\x20','__esModule','清理过期请求失败:','53577HlqZyI','MFA验证已取消:\x20','hasSession','now','MFA验证超时,请重新登录','string','getTime','mfa:session:','code','187qRJCQa','416qZXALQ','1511730nNjHfo','ceil','set','error','18yjPSVi','del','log','createdAt','Redis\x20module\x20not\x20found.\x20Please\x20install\x20ioredis:\x20npm\x20install\x20ioredis',',\x20状态:\x20','map',',\x20原因:\x20','RedisMFASessionStorage','message','exists','402530CRYZpT','未找到MFA验证会话:\x20','MFA验证码已提交:\x20code\x20','1104FuquWR','清理了\x20','Upstash\x20Redis\x20module\x20not\x20found.\x20Please\x20install\x20@upstash/redis:\x20npm\x20install\x20@upstash/redis','@upstash/redis','get'];a8_0x5711=function(){return _0x4fdfc8;};return a8_0x5711();}const a8_0x582af3=a8_0x11c7;(function(_0x1c6b87,_0x3ca7ac){const _0x3861e9=a8_0x11c7,_0x8d77b8=_0x1c6b87();while(!![]){try{const _0x542e8a=parseInt(_0x3861e9(0x1c7))/0x1*(-parseInt(_0x3861e9(0x1a4))/0x2)+-parseInt(_0x3861e9(0x1a2))/0x3*(parseInt(_0x3861e9(0x19e))/0x4)+-parseInt(_0x3861e9(0x1b5))/0x5*(parseInt(_0x3861e9(0x1b9))/0x6)+parseInt(_0x3861e9(0x1d9))/0x7+-parseInt(_0x3861e9(0x1b4))/0x8*(parseInt(_0x3861e9(0x1aa))/0x9)+-parseInt(_0x3861e9(0x1c4))/0xa*(parseInt(_0x3861e9(0x1b3))/0xb)+parseInt(_0x3861e9(0x1d7))/0xc;if(_0x542e8a===_0x3ca7ac)break;else _0x8d77b8['push'](_0x8d77b8['shift']());}catch(_0xe1ec4c){_0x8d77b8['push'](_0x8d77b8['shift']());}}}(a8_0x5711,0x8fad8));Object[a8_0x582af3(0x1d6)](exports,a8_0x582af3(0x1a8),{'value':!![]}),exports[a8_0x582af3(0x1c1)]=void 0x0;class RedisMFASessionStorage{constructor(_0x402a24,_0x3fc4b2,_0x1b3050){const _0x1d8085=a8_0x582af3;this[_0x1d8085(0x1a1)]=0x5*0x3c*0x3e8,this[_0x1d8085(0x1df)]=_0x1d8085(0x1b1);if(_0x1b3050)this[_0x1d8085(0x1d4)]=_0x1b3050;else{if(_0x402a24&&_0x3fc4b2)try{let _0x5116a5;typeof require!==_0x1d8085(0x1e9)?_0x5116a5=require(_0x1d8085(0x1ca)):_0x5116a5=globalThis[_0x1d8085(0x1d5)];const {Redis:_0x2e755c}=_0x5116a5;this[_0x1d8085(0x1d4)]=new _0x2e755c({'url':_0x402a24,'token':_0x3fc4b2});}catch(_0x13765c){throw new Error(_0x1d8085(0x1c9));}else{if(_0x402a24)try{const _0x1f5b73=require(_0x1d8085(0x1ce));this[_0x1d8085(0x1d4)]=new _0x1f5b73(_0x402a24);}catch(_0x4d99ff){throw new Error(_0x1d8085(0x1bd));}else throw new Error(_0x1d8085(0x1a6));}}}[a8_0x582af3(0x1ea)](_0x4d9af9){const _0x4b0266=a8_0x582af3;return''+this[_0x4b0266(0x1df)]+_0x4d9af9;}async[a8_0x582af3(0x1d3)](_0x2906bc,_0x4d5aaf=this[a8_0x582af3(0x1a1)]){const _0x5d2f07=a8_0x582af3;await this[_0x5d2f07(0x1e6)](_0x2906bc);const _0x20cbf4={'sessionId':_0x2906bc,'status':'waiting','createdAt':new Date()['toISOString'](),'timeout':_0x4d5aaf},_0xa99351=this[_0x5d2f07(0x1ea)](_0x2906bc);return await this[_0x5d2f07(0x1d4)]['setex'](_0xa99351,Math[_0x5d2f07(0x1b6)](_0x4d5aaf/0x3e8),JSON['stringify'](_0x20cbf4)),console['log'](_0x5d2f07(0x1e3)+_0x2906bc),new Promise((_0x754f4c,_0x577e44)=>{const _0xc28078=_0x5d2f07,_0x3ba115=Date[_0xc28078(0x1ad)](),_0x2734dc=async()=>{const _0xf9e0d6=_0xc28078;try{if(Date[_0xf9e0d6(0x1ad)]()-_0x3ba115>_0x4d5aaf){await this[_0xf9e0d6(0x1e6)](_0x2906bc),_0x577e44(new Error(_0xf9e0d6(0x1ae)));return;}const _0x13762e=await this['redis'][_0xf9e0d6(0x1cb)](_0xa99351);if(!_0x13762e){await this[_0xf9e0d6(0x1e6)](_0x2906bc),_0x577e44(new Error('MFA验证会话已过期'));return;}const _0x5c9334=typeof _0x13762e===_0xf9e0d6(0x1af)?_0x13762e:JSON[_0xf9e0d6(0x1d8)](_0x13762e),_0x74e482=JSON[_0xf9e0d6(0x1cc)](_0x5c9334);if(_0x74e482[_0xf9e0d6(0x1e5)]===_0xf9e0d6(0x1dd)&&_0x74e482[_0xf9e0d6(0x1b2)]){await this[_0xf9e0d6(0x1e6)](_0x2906bc),console['log']('🚀\x20RedisMFASessionStorage\x20收到验证码:',_0x74e482['code']),_0x754f4c(_0x74e482[_0xf9e0d6(0x1b2)]);return;}if(_0x74e482['status']===_0xf9e0d6(0x1cf)&&_0x74e482[_0xf9e0d6(0x1b8)]){await this[_0xf9e0d6(0x1e6)](_0x2906bc),_0x577e44(new Error(_0x74e482[_0xf9e0d6(0x1b8)]));return;}typeof setTimeout==='function'?setTimeout(_0x2734dc,0x3e8):_0x577e44(new Error(_0xf9e0d6(0x1cd)));}catch(_0x4c4577){await this[_0xf9e0d6(0x1e6)](_0x2906bc),_0x577e44(_0x4c4577 instanceof Error?_0x4c4577:new Error(String(_0x4c4577)));}};_0x2734dc();});}async[a8_0x582af3(0x1da)](_0x11969e,_0x5d8863){const _0x42c809=a8_0x582af3,_0x27c7f9=this[_0x42c809(0x1ea)](_0x11969e);try{const _0x44e67d=await this['redis'][_0x42c809(0x1cb)](_0x27c7f9);if(!_0x44e67d)return console[_0x42c809(0x1bb)](_0x42c809(0x1c5)+_0x11969e),![];const _0x2f50ac=typeof _0x44e67d===_0x42c809(0x1af)?_0x44e67d:JSON[_0x42c809(0x1d8)](_0x44e67d),_0x4c5728=JSON[_0x42c809(0x1cc)](_0x2f50ac);if(_0x4c5728[_0x42c809(0x1e5)]!==_0x42c809(0x1d2))return console[_0x42c809(0x1bb)](_0x42c809(0x1e2)+_0x11969e+_0x42c809(0x1be)+_0x4c5728['status']),![];return _0x4c5728['status']=_0x42c809(0x1dd),_0x4c5728['code']=_0x5d8863,_0x4c5728[_0x42c809(0x1db)]=new Date()[_0x42c809(0x1de)](),await this[_0x42c809(0x1d4)]['set'](_0x27c7f9,JSON[_0x42c809(0x1d8)](_0x4c5728)),console[_0x42c809(0x1bb)](_0x42c809(0x1c6)+_0x5d8863+_0x42c809(0x1d0)+_0x11969e),!![];}catch(_0x3f405c){return console['log'](_0x42c809(0x1d1)+_0x11969e+_0x42c809(0x1a7)+(_0x3f405c instanceof Error?_0x3f405c[_0x42c809(0x1c2)]:String(_0x3f405c))),![];}}async[a8_0x582af3(0x1e1)](_0x28ee2d,_0x5c9c19=a8_0x582af3(0x1e4)){const _0x44164e=a8_0x582af3,_0x12f703=this[_0x44164e(0x1ea)](_0x28ee2d);try{const _0x1cd6cc=await this[_0x44164e(0x1d4)][_0x44164e(0x1cb)](_0x12f703);if(!_0x1cd6cc)return console['log']('未找到MFA验证会话:\x20'+_0x28ee2d),![];const _0x3a3b69=typeof _0x1cd6cc===_0x44164e(0x1af)?_0x1cd6cc:JSON[_0x44164e(0x1d8)](_0x1cd6cc),_0x3e5154=JSON[_0x44164e(0x1cc)](_0x3a3b69);return _0x3e5154['status']=_0x44164e(0x1cf),_0x3e5154['error']=_0x5c9c19,_0x3e5154[_0x44164e(0x1dc)]=new Date()[_0x44164e(0x1de)](),await this[_0x44164e(0x1d4)][_0x44164e(0x1b7)](_0x12f703,JSON['stringify'](_0x3e5154)),console[_0x44164e(0x1bb)](_0x44164e(0x1ab)+_0x28ee2d+_0x44164e(0x1c0)+_0x5c9c19),!![];}catch(_0x55a01d){return console[_0x44164e(0x1bb)](_0x44164e(0x1e7)+_0x28ee2d+_0x44164e(0x1a7)+(_0x55a01d instanceof Error?_0x55a01d[_0x44164e(0x1c2)]:String(_0x55a01d))),![];}}async[a8_0x582af3(0x1ac)](_0x4d30bb){const _0x99abdc=a8_0x582af3,_0x27790e=this['getSessionKey'](_0x4d30bb);try{const _0x44c915=await this[_0x99abdc(0x1d4)][_0x99abdc(0x1c3)](_0x27790e);return _0x44c915===0x1;}catch(_0x2d0700){return![];}}async[a8_0x582af3(0x1e0)](){const _0x34360f=a8_0x582af3;try{const _0x594285=await this[_0x34360f(0x1d4)][_0x34360f(0x1e8)](this[_0x34360f(0x1df)]+'*');return _0x594285[_0x34360f(0x1bf)](_0x53d513=>_0x53d513[_0x34360f(0x1a0)](this[_0x34360f(0x1df)],''));}catch(_0xc4950a){return console[_0x34360f(0x1b8)]('获取活跃会话失败:',_0xc4950a instanceof Error?_0xc4950a:String(_0xc4950a)),[];}}async['cleanupExpiredRequests'](_0x1e875d=this[a8_0x582af3(0x1a1)]){const _0x398a40=a8_0x582af3;try{const _0x1b416f=await this[_0x398a40(0x1d4)]['keys'](this[_0x398a40(0x1df)]+'*'),_0xa776f3=new Date();let _0x4920b4=0x0;for(const _0x15aab0 of _0x1b416f){try{const _0x54de2f=await this['redis'][_0x398a40(0x1cb)](_0x15aab0);if(!_0x54de2f)continue;const _0x5f5023=typeof _0x54de2f===_0x398a40(0x1af)?_0x54de2f:JSON[_0x398a40(0x1d8)](_0x54de2f),_0x39bc9a=JSON['parse'](_0x5f5023),_0x1e8c8b=new Date(_0x39bc9a[_0x398a40(0x1bc)]);_0xa776f3['getTime']()-_0x1e8c8b[_0x398a40(0x1b0)]()>_0x1e875d&&(await this[_0x398a40(0x1d4)][_0x398a40(0x1ba)](_0x15aab0),_0x4920b4++);}catch(_0x1ae9f8){try{await this[_0x398a40(0x1d4)][_0x398a40(0x1ba)](_0x15aab0),_0x4920b4++;}catch(_0x4f6ef9){console[_0x398a40(0x1b8)](_0x398a40(0x19f)+_0x15aab0,_0x4f6ef9 instanceof Error?_0x4f6ef9:String(_0x4f6ef9));}}}_0x4920b4>0x0&&console['log'](_0x398a40(0x1c8)+_0x4920b4+_0x398a40(0x1a3));}catch(_0x1eab88){console['error'](_0x398a40(0x1a9),_0x1eab88 instanceof Error?_0x1eab88:String(_0x1eab88));}}async['cleanupRequest'](_0x410a90){const _0x19270e=a8_0x582af3,_0x36d7d6=this[_0x19270e(0x1ea)](_0x410a90);try{await this[_0x19270e(0x1d4)][_0x19270e(0x1ba)](_0x36d7d6);}catch(_0x57747a){}}async[a8_0x582af3(0x1a5)](){const _0x220e07=a8_0x582af3;if(this['redis']&&typeof this[_0x220e07(0x1d4)][_0x220e07(0x1a5)]==='function')await this[_0x220e07(0x1d4)]['disconnect']();else this[_0x220e07(0x1d4)]&&typeof this['redis']['quit']==='function'&&await this[_0x220e07(0x1d4)]['quit']();}}function a8_0x11c7(_0x3c39c0,_0x4b7e6e){_0x3c39c0=_0x3c39c0-0x19e;const _0x571179=a8_0x5711();let _0x11c735=_0x571179[_0x3c39c0];return _0x11c735;}exports[a8_0x582af3(0x1c1)]=RedisMFASessionStorage;
@@ -1 +1 @@
1
- {"version":3,"file":"RedisMFASessionStorage.js","sourceRoot":"","sources":["../../src/common/RedisMFASessionStorage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RedisMFASessionStorage.js","sourceRoot":"","sources":["../../src/common/RedisMFASessionStorage.ts"],"names":[],"mappings":"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"}
@@ -1,83 +1,20 @@
1
1
  import { HttpClient } from '../common/HttpClient';
2
2
  import { UrlClass } from './UrlClass';
3
- import { ExportFileTypeValue, GarminDomain, ICalendar, ICountActivities, IGarminTokens, IOauth1Token, IOauth2Token, IScheduleWorkout, ISocialProfile, IUserSettings, IWorkout, IWorkoutDetail, UploadFileTypeTypeValue, GCConfig } from './types';
4
- import { ActivitySubType, ActivityType, GCActivityId, IActivity } from './types/activity';
5
- import { ICourse, ICourseDetail } from './types/course';
6
- import { SleepData, SleepDailySummary } from './types/sleep';
7
- import { HRVData } from './types/hrv';
8
- import { LatestTrainingStatusResponse, TrainingLoadBalanceResponse, WeeklyTrainingStatusResponse } from './types/training-status';
9
- import { PersonalInfoResponse } from './types/personal-info';
10
- import Running from './workouts/Running';
3
+ import { GarminDomain, ISocialProfile } from './types';
11
4
  export interface Session {
12
5
  }
13
- export default class GarminConnect {
14
- client: HttpClient;
15
- domain: GarminDomain;
16
- config: GCConfig;
17
- private _userHash;
18
- private listeners;
19
- url: UrlClass;
20
- constructor(config: GCConfig, domain?: GarminDomain);
21
- login(username?: string, password?: string, sessionId?: string): Promise<GarminConnect>;
22
- exportTokenToFile(dirPath: string): Promise<void>;
23
- loadTokenByFile(dirPath: string): Promise<void>;
24
- exportToken(): IGarminTokens;
25
- loadToken(oauth1: IOauth1Token, oauth2: IOauth2Token): void;
26
- getUserSettings(): Promise<IUserSettings>;
27
- getUserProfile(): Promise<ISocialProfile>;
28
- getActivities(start?: number, limit?: number, activityType?: ActivityType, subActivityType?: ActivitySubType): Promise<IActivity[]>;
29
- getActivity(activity: {
30
- activityId: GCActivityId;
31
- }): Promise<IActivity>;
32
- countActivities(): Promise<ICountActivities>;
33
- downloadWellnessData(date: Date, dir: string): Promise<void>;
34
- downloadOriginalActivityData(activity: {
35
- activityId: GCActivityId;
36
- }, dir: string, type?: ExportFileTypeValue): Promise<void>;
37
- uploadActivity(file: string, format?: UploadFileTypeTypeValue): Promise<unknown>;
38
- deleteActivity(activity: {
39
- activityId: GCActivityId;
40
- }): Promise<void>;
41
- getWorkouts(start: number, limit: number): Promise<IWorkout[]>;
42
- getWorkoutDetail(workout: {
43
- workoutId: string;
44
- }): Promise<IWorkoutDetail>;
45
- addWorkout(workout: IWorkoutDetail | Running): Promise<IWorkoutDetail>;
46
- addRunningWorkout(name: string, meters: number, description: string): Promise<IWorkoutDetail>;
47
- deleteWorkout(workout: {
48
- workoutId: string;
49
- }): Promise<unknown>;
50
- scheduleWorkout(workout: {
51
- workoutId: string;
52
- }, date?: Date): Promise<IScheduleWorkout>;
53
- getCalendar(year?: number, month?: number): Promise<ICalendar>;
54
- getSteps(date?: Date): Promise<number>;
55
- getSleepData(date?: Date): Promise<SleepData>;
56
- getSleepDuration(date?: Date): Promise<{
57
- hours: number;
58
- minutes: number;
59
- }>;
60
- getSleepDailySummary(startDate: Date, endDate: Date): Promise<SleepDailySummary>;
61
- getHRVData(date?: Date): Promise<HRVData>;
62
- getTrainingStatus(date?: Date): Promise<LatestTrainingStatusResponse>;
63
- getTrainingLoadBalance(date?: Date): Promise<TrainingLoadBalanceResponse>;
64
- getWeeklyTrainingStatus(startDate: Date, endDate: Date): Promise<WeeklyTrainingStatusResponse>;
65
- getPersonalInfo(): Promise<PersonalInfoResponse>;
66
- getDailyWeightData(date?: Date): Promise<WeightData>;
67
- getDailyWeightInPounds(date?: Date): Promise<number>;
68
- getDailyHydration(date?: Date): Promise<number>;
69
- updateWeight(date: Date | undefined, lbs: number, timezone: string): Promise<UpdateWeight>;
70
- updateHydrationLogOunces(date: Date | undefined, valueInOz: number): Promise<WaterIntake>;
71
- getGolfSummary(): Promise<GolfSummary>;
72
- getGolfScorecard(scorecardId: number): Promise<GolfScorecard>;
73
- getHeartRate(date?: Date): Promise<HeartRate>;
74
- getCourses(): Promise<ICourse[]>;
75
- getCourse(course: {
76
- courseId: number;
77
- }): Promise<ICourseDetail>;
78
- createCourse(course: ICourseDetail): Promise<ICourseDetail>;
79
- consentGrant(): Promise<void>;
80
- get<T>(url: string, data?: any): Promise<T>;
81
- post<T>(url: string, data: any): Promise<T>;
82
- put<T>(url: string, data: any): Promise<T>;
6
+ declare const WithCoach: {
7
+ new (...args: any[]): {
8
+ getTrainingOverview(options?: import("./types").TrainingOverviewOptions): Promise<import("./types").TrainingOverview>;
9
+ getWellnessOverview(options?: import("./types").WellnessOverviewOptions): Promise<import("./types").WellnessOverview>;
10
+ getActivitiesSummary(options?: import("./types").ActivitiesSummaryOptions): Promise<import("./types").ActivitiesSummary>;
11
+ getActivityDetailSummary(options: number | import("./types").ActivityDetailSummaryOptions): Promise<import("./types").ActivityDetailSummary>;
12
+ client: HttpClient;
13
+ url: UrlClass;
14
+ domain: GarminDomain;
15
+ getUserProfile(): Promise<ISocialProfile>;
16
+ };
17
+ };
18
+ export default class GarminConnect extends WithCoach {
83
19
  }
20
+ export {};