@gooin/garmin-connect 1.7.6 → 1.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +243 -66
  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_0x470024=a6_0x488c;(function(_0x165419,_0x44f199){const _0x18334d=a6_0x488c,_0x358571=_0x165419();while(!![]){try{const _0x355be6=parseInt(_0x18334d(0x192))/0x1*(parseInt(_0x18334d(0x1a9))/0x2)+-parseInt(_0x18334d(0x18a))/0x3*(-parseInt(_0x18334d(0x193))/0x4)+parseInt(_0x18334d(0x1aa))/0x5*(-parseInt(_0x18334d(0x191))/0x6)+parseInt(_0x18334d(0x1a6))/0x7+-parseInt(_0x18334d(0x1a2))/0x8*(parseInt(_0x18334d(0x183))/0x9)+parseInt(_0x18334d(0x1a5))/0xa*(-parseInt(_0x18334d(0x197))/0xb)+-parseInt(_0x18334d(0x187))/0xc*(-parseInt(_0x18334d(0x186))/0xd);if(_0x355be6===_0x44f199)break;else _0x358571['push'](_0x358571['shift']());}catch(_0x564ebc){_0x358571['push'](_0x358571['shift']());}}}(a6_0x3757,0x3c4b2));var __importDefault=this&&this['__importDefault']||function(_0x51bab9){const _0x96de60=a6_0x488c;return _0x51bab9&&_0x51bab9[_0x96de60(0x184)]?_0x51bab9:{'default':_0x51bab9};};Object['defineProperty'](exports,a6_0x470024(0x184),{'value':!![]}),exports[a6_0x470024(0x18c)]=void 0x0;function a6_0x488c(_0x2cd0df,_0x5c9f54){_0x2cd0df=_0x2cd0df-0x183;const _0x375740=a6_0x3757();let _0x488c07=_0x375740[_0x2cd0df];return _0x488c07;}function a6_0x3757(){const _0x4f9ba7=['path','10KEKFuV','3344362ciYJQF','disconnect','cwd','4sBqNGu','5kZmJzQ','file','dir','FileMFASessionStorage','resetInstance','9kmTEhw','__esModule','join','299IHNKOS','8280YDSqDM','waitForMFACode','redisToken','829611XwRsjV','redisUrl','MFAManager','storage','type','./RedisMFASessionStorage','redis','689526uAKvlh','206729Lpjjzv','4ByoLHq','hasSession','getActiveSessions','MFA验证已取消','4107367bIqxOM','不支持的MFA存储类型:\x20','cleanupExpiredRequests','instance','getInstance','./FileMFASessionStorage','RedisMFASessionStorage','submitMFACode','cancelMFARequest','log','default','3586808esCqiK','DEFAULT_TIMEOUT'];a6_0x3757=function(){return _0x4f9ba7;};return a6_0x3757();}const FileMFASessionStorage_1=require(a6_0x470024(0x19c)),RedisMFASessionStorage_1=require(a6_0x470024(0x18f)),path_1=__importDefault(require(a6_0x470024(0x1a4)));class MFAManager{constructor(_0x2603c8){const _0x103f09=a6_0x470024;this['DEFAULT_TIMEOUT']=0x5*0x3c*0x3e8;if(_0x2603c8[_0x103f09(0x18e)]===_0x103f09(0x190)){if(_0x2603c8['redis'])this['storage']=new RedisMFASessionStorage_1[(_0x103f09(0x19d))](undefined,undefined,_0x2603c8[_0x103f09(0x190)]);else{if(_0x2603c8['redisUrl']&&_0x2603c8[_0x103f09(0x189)])this['storage']=new RedisMFASessionStorage_1['RedisMFASessionStorage'](_0x2603c8[_0x103f09(0x18b)],_0x2603c8[_0x103f09(0x189)]);else{if(_0x2603c8['redisUrl'])this['storage']=new RedisMFASessionStorage_1[(_0x103f09(0x19d))](_0x2603c8[_0x103f09(0x18b)]);else throw new Error('Redis配置不完整,需要提供redisUrl或redis实例');}}}else{if(_0x2603c8[_0x103f09(0x18e)]===_0x103f09(0x1ab)){const _0x205828=_0x2603c8[_0x103f09(0x1ac)]||path_1[_0x103f09(0x1a1)][_0x103f09(0x185)](process[_0x103f09(0x1a8)](),'.mfa-sessions');this['storage']=new FileMFASessionStorage_1[(_0x103f09(0x1ad))](_0x205828);}else throw new Error(_0x103f09(0x198)+_0x2603c8['type']);}}static[a6_0x470024(0x19b)](_0x574433){const _0x4193f7=a6_0x470024;if(!MFAManager['instance']){if(!_0x574433)throw new Error('首次创建MFAManager实例必须提供配置');console[_0x4193f7(0x1a0)]('创建MFA管理器实例',_0x574433),MFAManager[_0x4193f7(0x19a)]=new MFAManager(_0x574433);}return MFAManager[_0x4193f7(0x19a)];}static[a6_0x470024(0x1ae)](){MFAManager['instance']=undefined;}async[a6_0x470024(0x188)](_0x1dd050,_0x2b9f09=this[a6_0x470024(0x1a3)]){const _0x4a35cb=a6_0x470024;return this[_0x4a35cb(0x18d)][_0x4a35cb(0x188)](_0x1dd050,_0x2b9f09);}async[a6_0x470024(0x19e)](_0x3b2431,_0x20eaf3){const _0x3e0f34=a6_0x470024;return this[_0x3e0f34(0x18d)]['submitMFACode'](_0x3b2431,_0x20eaf3);}async[a6_0x470024(0x19f)](_0x30c4f8,_0x3917c0=a6_0x470024(0x196)){const _0x3b4ec6=a6_0x470024;return this['storage'][_0x3b4ec6(0x19f)](_0x30c4f8,_0x3917c0);}async[a6_0x470024(0x194)](_0x12aefe){const _0x22a797=a6_0x470024;return this[_0x22a797(0x18d)][_0x22a797(0x194)](_0x12aefe);}async[a6_0x470024(0x195)](){const _0x532c8b=a6_0x470024;return this['storage'][_0x532c8b(0x195)]();}async[a6_0x470024(0x199)](_0x1f9fec=this[a6_0x470024(0x1a3)]){return this['storage']['cleanupExpiredRequests'](_0x1f9fec);}['startCleanupTask'](_0xf4473a=0xea60){setInterval(()=>{this['cleanupExpiredRequests']();},_0xf4473a);}async[a6_0x470024(0x1a7)](){const _0x3c1769=a6_0x470024;this[_0x3c1769(0x18d)]instanceof RedisMFASessionStorage_1[_0x3c1769(0x19d)]&&await this[_0x3c1769(0x18d)][_0x3c1769(0x1a7)]();}}exports[a6_0x470024(0x18c)]=MFAManager;
@@ -1,3 +1 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=MFASessionStorage.js.map
1
+ 'use strict';var a7_0x138d65=a7_0x2d5a;function a7_0x2d5a(_0x13a22b,_0x1d4e52){_0x13a22b=_0x13a22b-0xcf;var _0x2dbe60=a7_0x2dbe();var _0x2d5ad5=_0x2dbe60[_0x13a22b];return _0x2d5ad5;}(function(_0x48e300,_0x56a32b){var _0x1c9456=a7_0x2d5a,_0x2c5044=_0x48e300();while(!![]){try{var _0x5ef2a0=parseInt(_0x1c9456(0xd9))/0x1*(-parseInt(_0x1c9456(0xda))/0x2)+parseInt(_0x1c9456(0xd2))/0x3+parseInt(_0x1c9456(0xd4))/0x4+-parseInt(_0x1c9456(0xd7))/0x5*(-parseInt(_0x1c9456(0xd8))/0x6)+parseInt(_0x1c9456(0xd5))/0x7+-parseInt(_0x1c9456(0xd6))/0x8*(-parseInt(_0x1c9456(0xcf))/0x9)+-parseInt(_0x1c9456(0xd1))/0xa*(parseInt(_0x1c9456(0xd3))/0xb);if(_0x5ef2a0===_0x56a32b)break;else _0x2c5044['push'](_0x2c5044['shift']());}catch(_0x2e991e){_0x2c5044['push'](_0x2c5044['shift']());}}}(a7_0x2dbe,0xe4fba));function a7_0x2dbe(){var _0x4ea17b=['1QyNwtM','1314302srxbrW','2075445UuvyTQ','__esModule','10OUwYen','1258920zqFbHb','39084155NeRsak','5269304GtTTZA','12724320LqpoOO','8mamvds','5moCimG','8177034FxhwEu'];a7_0x2dbe=function(){return _0x4ea17b;};return a7_0x2dbe();}Object['defineProperty'](exports,a7_0x138d65(0xd0),{'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_0x55d3(_0x6065b2,_0x57f579){_0x6065b2=_0x6065b2-0xa2;const _0x45ef1d=a8_0x45ef();let _0x55d3b7=_0x45ef1d[_0x6065b2];return _0x55d3b7;}const a8_0x1b691f=a8_0x55d3;(function(_0xc32b3b,_0xac5b0c){const _0x4c0aad=a8_0x55d3,_0x560283=_0xc32b3b();while(!![]){try{const _0x3e0c55=parseInt(_0x4c0aad(0xb3))/0x1+-parseInt(_0x4c0aad(0xa2))/0x2*(-parseInt(_0x4c0aad(0xe5))/0x3)+parseInt(_0x4c0aad(0xb2))/0x4+parseInt(_0x4c0aad(0xd1))/0x5+parseInt(_0x4c0aad(0xb4))/0x6*(-parseInt(_0x4c0aad(0xca))/0x7)+parseInt(_0x4c0aad(0xd3))/0x8+parseInt(_0x4c0aad(0xe1))/0x9*(-parseInt(_0x4c0aad(0xe3))/0xa);if(_0x3e0c55===_0xac5b0c)break;else _0x560283['push'](_0x560283['shift']());}catch(_0x4787f4){_0x560283['push'](_0x560283['shift']());}}}(a8_0x45ef,0x91879));Object[a8_0x1b691f(0xe4)](exports,a8_0x1b691f(0xdc),{'value':!![]}),exports[a8_0x1b691f(0xad)]=void 0x0;function a8_0x45ef(){const _0x2ba498=['exists','40OWiUNw','defineProperty','44769taLBLg','ceil',',\x20原因:\x20','64IbhyLL','get','MFA验证会话状态不正确:\x20','map','环境不支持定时器,无法等待MFA验证码','resolvedAt','KEY_PREFIX','ioredis','function','quit','rejected','RedisMFASessionStorage','hasSession','获取活跃会话失败:','undefined','submitMFACode','610732dwPJRV','643827VbiLFb','37554ZycGZb','setex','UpstashRedis','getSessionKey',',\x20错误:\x20','message','Redis\x20module\x20not\x20found.\x20Please\x20install\x20ioredis:\x20npm\x20install\x20ioredis','disconnect','waiting','cleanupExpiredRequests','error','DEFAULT_TIMEOUT','log','rejectedAt','删除过期会话失败:\x20','MFA验证会话已过期','提交MFA验证码失败:\x20','未找到MFA验证会话:\x20','string','code','cleanupRequest','mfa:session:','1169PTgfzN','keys','stringify','waitForMFACode','MFA验证已取消','set','取消MFA验证失败:\x20','3559115AYkNXi','清理过期请求失败:','4567944UxxykB','🚀\x20RedisMFASessionStorage\x20收到验证码:','清理了\x20','getTime','now','toISOString','del','redis','replace','__esModule','status',',\x20状态:\x20','MFA验证会话已创建:\x20','parse','2059920jjJMXP'];a8_0x45ef=function(){return _0x2ba498;};return a8_0x45ef();}class RedisMFASessionStorage{constructor(_0x49046d,_0x304e73,_0x274246){const _0x5500a3=a8_0x1b691f;this['DEFAULT_TIMEOUT']=0x5*0x3c*0x3e8,this[_0x5500a3(0xa8)]=_0x5500a3(0xc9);if(_0x274246)this[_0x5500a3(0xda)]=_0x274246;else{if(_0x49046d&&_0x304e73)try{let _0x5d5568;typeof require!==_0x5500a3(0xb0)?_0x5d5568=require('@upstash/redis'):_0x5d5568=globalThis[_0x5500a3(0xb6)];const {Redis:_0x26ffe0}=_0x5d5568;this['redis']=new _0x26ffe0({'url':_0x49046d,'token':_0x304e73});}catch(_0x54a169){throw new Error('Upstash\x20Redis\x20module\x20not\x20found.\x20Please\x20install\x20@upstash/redis:\x20npm\x20install\x20@upstash/redis');}else{if(_0x49046d)try{const _0x4fdfee=require(_0x5500a3(0xa9));this[_0x5500a3(0xda)]=new _0x4fdfee(_0x49046d);}catch(_0x5bf1ba){throw new Error(_0x5500a3(0xba));}else throw new Error('Either\x20redisUrl\x20with\x20redisToken\x20(for\x20Upstash)\x20or\x20redisClient\x20must\x20be\x20provided');}}}[a8_0x1b691f(0xb7)](_0x16bb8c){const _0x1e2f0e=a8_0x1b691f;return''+this[_0x1e2f0e(0xa8)]+_0x16bb8c;}async[a8_0x1b691f(0xcd)](_0x196770,_0x31f274=this['DEFAULT_TIMEOUT']){const _0x4965fe=a8_0x1b691f;await this['cleanupRequest'](_0x196770);const _0x35e2a0={'sessionId':_0x196770,'status':'waiting','createdAt':new Date()[_0x4965fe(0xd8)](),'timeout':_0x31f274},_0x1e5c16=this[_0x4965fe(0xb7)](_0x196770);return await this[_0x4965fe(0xda)][_0x4965fe(0xb5)](_0x1e5c16,Math[_0x4965fe(0xe6)](_0x31f274/0x3e8),JSON['stringify'](_0x35e2a0)),console[_0x4965fe(0xc0)](_0x4965fe(0xdf)+_0x196770),new Promise((_0x112b0a,_0x215aba)=>{const _0x255a22=Date['now'](),_0x16b8c8=async()=>{const _0x15f9a1=a8_0x55d3;try{if(Date[_0x15f9a1(0xd7)]()-_0x255a22>_0x31f274){await this[_0x15f9a1(0xc8)](_0x196770),_0x215aba(new Error('MFA验证超时,请重新登录'));return;}const _0x36ab71=await this[_0x15f9a1(0xda)][_0x15f9a1(0xa3)](_0x1e5c16);if(!_0x36ab71){await this[_0x15f9a1(0xc8)](_0x196770),_0x215aba(new Error(_0x15f9a1(0xc3)));return;}const _0x3847a5=typeof _0x36ab71==='string'?_0x36ab71:JSON[_0x15f9a1(0xcc)](_0x36ab71),_0x278262=JSON[_0x15f9a1(0xe0)](_0x3847a5);if(_0x278262[_0x15f9a1(0xdd)]==='resolved'&&_0x278262[_0x15f9a1(0xc7)]){await this[_0x15f9a1(0xc8)](_0x196770),console[_0x15f9a1(0xc0)](_0x15f9a1(0xd4),_0x278262[_0x15f9a1(0xc7)]),_0x112b0a(_0x278262['code']);return;}if(_0x278262[_0x15f9a1(0xdd)]===_0x15f9a1(0xac)&&_0x278262[_0x15f9a1(0xbe)]){await this['cleanupRequest'](_0x196770),_0x215aba(new Error(_0x278262[_0x15f9a1(0xbe)]));return;}typeof setTimeout===_0x15f9a1(0xaa)?setTimeout(_0x16b8c8,0x3e8):_0x215aba(new Error(_0x15f9a1(0xa6)));}catch(_0x556fa3){await this[_0x15f9a1(0xc8)](_0x196770),_0x215aba(_0x556fa3 instanceof Error?_0x556fa3:new Error(String(_0x556fa3)));}};_0x16b8c8();});}async[a8_0x1b691f(0xb1)](_0x49c003,_0x4639ef){const _0x5b801f=a8_0x1b691f,_0x213a04=this[_0x5b801f(0xb7)](_0x49c003);try{const _0x441447=await this[_0x5b801f(0xda)][_0x5b801f(0xa3)](_0x213a04);if(!_0x441447)return console['log']('未找到MFA验证会话:\x20'+_0x49c003),![];const _0x3d8004=typeof _0x441447===_0x5b801f(0xc6)?_0x441447:JSON[_0x5b801f(0xcc)](_0x441447),_0x3f8bbe=JSON[_0x5b801f(0xe0)](_0x3d8004);if(_0x3f8bbe[_0x5b801f(0xdd)]!==_0x5b801f(0xbc))return console[_0x5b801f(0xc0)](_0x5b801f(0xa4)+_0x49c003+_0x5b801f(0xde)+_0x3f8bbe['status']),![];return _0x3f8bbe[_0x5b801f(0xdd)]='resolved',_0x3f8bbe['code']=_0x4639ef,_0x3f8bbe[_0x5b801f(0xa7)]=new Date()[_0x5b801f(0xd8)](),await this[_0x5b801f(0xda)][_0x5b801f(0xcf)](_0x213a04,JSON['stringify'](_0x3f8bbe)),console[_0x5b801f(0xc0)]('MFA验证码已提交:\x20code\x20'+_0x4639ef+',\x20sessionId\x20'+_0x49c003),!![];}catch(_0x21afc1){return console[_0x5b801f(0xc0)](_0x5b801f(0xc4)+_0x49c003+_0x5b801f(0xb8)+(_0x21afc1 instanceof Error?_0x21afc1[_0x5b801f(0xb9)]:String(_0x21afc1))),![];}}async['cancelMFARequest'](_0x3f517b,_0x548c71=a8_0x1b691f(0xce)){const _0x37a365=a8_0x1b691f,_0x47d174=this[_0x37a365(0xb7)](_0x3f517b);try{const _0x329d5b=await this['redis'][_0x37a365(0xa3)](_0x47d174);if(!_0x329d5b)return console[_0x37a365(0xc0)](_0x37a365(0xc5)+_0x3f517b),![];const _0x4507f5=typeof _0x329d5b===_0x37a365(0xc6)?_0x329d5b:JSON['stringify'](_0x329d5b),_0xa52115=JSON[_0x37a365(0xe0)](_0x4507f5);return _0xa52115[_0x37a365(0xdd)]=_0x37a365(0xac),_0xa52115[_0x37a365(0xbe)]=_0x548c71,_0xa52115[_0x37a365(0xc1)]=new Date()[_0x37a365(0xd8)](),await this['redis'][_0x37a365(0xcf)](_0x47d174,JSON[_0x37a365(0xcc)](_0xa52115)),console['log']('MFA验证已取消:\x20'+_0x3f517b+_0x37a365(0xe7)+_0x548c71),!![];}catch(_0x1aae19){return console['log'](_0x37a365(0xd0)+_0x3f517b+',\x20错误:\x20'+(_0x1aae19 instanceof Error?_0x1aae19[_0x37a365(0xb9)]:String(_0x1aae19))),![];}}async[a8_0x1b691f(0xae)](_0x8857c2){const _0x1ba9d2=a8_0x1b691f,_0x2a2024=this[_0x1ba9d2(0xb7)](_0x8857c2);try{const _0x2598db=await this['redis'][_0x1ba9d2(0xe2)](_0x2a2024);return _0x2598db===0x1;}catch(_0x171052){return![];}}async['getActiveSessions'](){const _0x3d91e5=a8_0x1b691f;try{const _0x5ddf41=await this[_0x3d91e5(0xda)]['keys'](this[_0x3d91e5(0xa8)]+'*');return _0x5ddf41[_0x3d91e5(0xa5)](_0x29367b=>_0x29367b[_0x3d91e5(0xdb)](this['KEY_PREFIX'],''));}catch(_0x2b40a7){return console[_0x3d91e5(0xbe)](_0x3d91e5(0xaf),_0x2b40a7 instanceof Error?_0x2b40a7:String(_0x2b40a7)),[];}}async[a8_0x1b691f(0xbd)](_0x4ded3a=this[a8_0x1b691f(0xbf)]){const _0x39c224=a8_0x1b691f;try{const _0x188b22=await this[_0x39c224(0xda)][_0x39c224(0xcb)](this[_0x39c224(0xa8)]+'*'),_0x12d131=new Date();let _0xade9a6=0x0;for(const _0x231808 of _0x188b22){try{const _0x5745f0=await this['redis'][_0x39c224(0xa3)](_0x231808);if(!_0x5745f0)continue;const _0x290cd0=typeof _0x5745f0===_0x39c224(0xc6)?_0x5745f0:JSON[_0x39c224(0xcc)](_0x5745f0),_0x28b63b=JSON[_0x39c224(0xe0)](_0x290cd0),_0x27ebe5=new Date(_0x28b63b['createdAt']);_0x12d131[_0x39c224(0xd6)]()-_0x27ebe5[_0x39c224(0xd6)]()>_0x4ded3a&&(await this[_0x39c224(0xda)][_0x39c224(0xd9)](_0x231808),_0xade9a6++);}catch(_0x5582ef){try{await this['redis'][_0x39c224(0xd9)](_0x231808),_0xade9a6++;}catch(_0x26d756){console['error'](_0x39c224(0xc2)+_0x231808,_0x26d756 instanceof Error?_0x26d756:String(_0x26d756));}}}_0xade9a6>0x0&&console[_0x39c224(0xc0)](_0x39c224(0xd5)+_0xade9a6+'\x20个过期的MFA验证会话');}catch(_0x522076){console[_0x39c224(0xbe)](_0x39c224(0xd2),_0x522076 instanceof Error?_0x522076:String(_0x522076));}}async[a8_0x1b691f(0xc8)](_0x3b4a4e){const _0x453853=a8_0x1b691f,_0x3b73a0=this[_0x453853(0xb7)](_0x3b4a4e);try{await this['redis']['del'](_0x3b73a0);}catch(_0x1000ae){}}async[a8_0x1b691f(0xbb)](){const _0x29fafb=a8_0x1b691f;if(this[_0x29fafb(0xda)]&&typeof this[_0x29fafb(0xda)][_0x29fafb(0xbb)]==='function')await this[_0x29fafb(0xda)][_0x29fafb(0xbb)]();else this[_0x29fafb(0xda)]&&typeof this['redis'][_0x29fafb(0xab)]==='function'&&await this[_0x29fafb(0xda)][_0x29fafb(0xab)]();}}exports[a8_0x1b691f(0xad)]=RedisMFASessionStorage;
@@ -1 +1 @@
1
- {"version":3,"file":"RedisMFASessionStorage.js","sourceRoot":"","sources":["../../src/common/RedisMFASessionStorage.ts"],"names":[],"mappings":";;;AAEA;;GAEG;AACH,MAAa,sBAAsB;IAK/B,YAAY,QAAiB,EAAE,UAAmB,EAAE,WAAiB;QAHpD,oBAAe,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,MAAM;QACvC,eAAU,GAAG,cAAc,CAAC;QAGzC,IAAI,WAAW,EAAE;YACb,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;SAC5B;aAAM,IAAI,QAAQ,IAAI,UAAU,EAAE;YAC/B,kBAAkB;YAClB,IAAI;gBACA,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAC5C,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC;oBACnB,GAAG,EAAE,QAAQ;oBACb,KAAK,EAAE,UAAU;iBACpB,CAAC,CAAC;aACN;YAAC,OAAO,KAAK,EAAE;gBACZ,MAAM,IAAI,KAAK,CACX,2FAA2F,CAC9F,CAAC;aACL;SACJ;aAAM,IAAI,QAAQ,EAAE;YACjB,cAAc;YACd,IAAI;gBACA,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;gBACjC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,CAAC;aACpC;YAAC,OAAO,KAAK,EAAE;gBACZ,MAAM,IAAI,KAAK,CACX,qEAAqE,CACxE,CAAC;aACL;SACJ;aAAM;YACH,MAAM,IAAI,KAAK,CACX,+EAA+E,CAClF,CAAC;SACL;IACL,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,SAAiB;QACnC,OAAO,GAAG,IAAI,CAAC,UAAU,GAAG,SAAS,EAAE,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,cAAc,CACvB,SAAiB,EACjB,UAAkB,IAAI,CAAC,eAAe;QAEtC,aAAa;QACb,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAErC,SAAS;QACT,MAAM,WAAW,GAAG;YAChB,SAAS;YACT,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,OAAO,EAAE,OAAO;SACnB,CAAC;QAEF,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAEjD,8BAA8B;QAC9B,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAClB,UAAU,EACV,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,cAAc;QACzC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC9B,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC;QAExC,eAAe;QACf,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,aAAa,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;gBACzC,IAAI;oBACA,SAAS;oBACT,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,OAAO,EAAE;wBAClC,aAAa,CAAC,aAAa,CAAC,CAAC;wBAC7B,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;wBACrC,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;wBACnC,OAAO;qBACV;oBAED,SAAS;oBACT,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBAC9C,IAAI,CAAC,IAAI,EAAE;wBACP,aAAa,CAAC,aAAa,CAAC,CAAC;wBAC7B,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;wBAChC,OAAO;qBACV;oBAED,2BAA2B;oBAC3B,MAAM,OAAO,GACT,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAEpC,0BAA0B;oBAC1B,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,IAAI,EAAE;wBAC/C,aAAa,CAAC,aAAa,CAAC,CAAC;wBAC7B,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;wBACrC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBACtB,OAAO;qBACV;oBAED,yBAAyB;oBACzB,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE;wBAChD,aAAa,CAAC,aAAa,CAAC,CAAC;wBAC7B,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;wBACrC,MAAM,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;wBACjC,OAAO;qBACV;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,aAAa,CAAC,aAAa,CAAC,CAAC;oBAC7B,MAAM,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;oBACrC,MAAM,CACF,KAAK,YAAY,KAAK;wBAClB,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CACjC,CAAC;iBACL;YACL,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS;QACvB,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,aAAa,CACtB,SAAiB,EACjB,IAAY;QAEZ,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAEjD,IAAI;YACA,SAAS;YACT,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,CAAC,IAAI,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC;gBACxC,OAAO,KAAK,CAAC;aAChB;YAED,2BAA2B;YAC3B,MAAM,OAAO,GACT,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEpC,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE;gBAC9B,OAAO,CAAC,GAAG,CACP,iBAAiB,SAAS,SAAS,OAAO,CAAC,MAAM,EAAE,CACtD,CAAC;gBACF,OAAO,KAAK,CAAC;aAChB;YAED,aAAa;YACb,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;YAC5B,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YACpB,OAAO,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAE9C,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CACP,mBAAmB,IAAI,eAAe,SAAS,EAAE,CACpD,CAAC;YACF,OAAO,IAAI,CAAC;SACf;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,GAAG,CACP,eAAe,SAAS,SACpB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACzD,EAAE,CACL,CAAC;YACF,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,gBAAgB,CACzB,SAAiB,EACjB,SAAiB,UAAU;QAE3B,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAEjD,IAAI;YACA,SAAS;YACT,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAC9C,IAAI,CAAC,IAAI,EAAE;gBACP,OAAO,CAAC,GAAG,CAAC,eAAe,SAAS,EAAE,CAAC,CAAC;gBACxC,OAAO,KAAK,CAAC;aAChB;YAED,2BAA2B;YAC3B,MAAM,OAAO,GACT,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAEpC,aAAa;YACb,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;YAC5B,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;YACvB,OAAO,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;YAE9C,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,aAAa,SAAS,SAAS,MAAM,EAAE,CAAC,CAAC;YACrD,OAAO,IAAI,CAAC;SACf;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,GAAG,CACP,cAAc,SAAS,SACnB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CACzD,EAAE,CACL,CAAC;YACF,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,UAAU,CAAC,SAAiB;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI;YACA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACnD,OAAO,MAAM,KAAK,CAAC,CAAC;SACvB;QAAC,WAAM;YACJ,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,iBAAiB;QAC1B,IAAI;YACA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC;SACtE;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,KAAK,CACT,WAAW,EACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACjD,CAAC;YACF,OAAO,EAAE,CAAC;SACb;IACL,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,sBAAsB,CAC/B,SAAiB,IAAI,CAAC,eAAe;QAErC,IAAI;YACA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YAC1D,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,YAAY,GAAG,CAAC,CAAC;YAErB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACpB,IAAI;oBACA,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACvC,IAAI,CAAC,IAAI;wBAAE,SAAS;oBAEpB,2BAA2B;oBAC3B,MAAM,OAAO,GACT,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;oBAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACpC,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAE9C,SAAS;oBACT,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC,OAAO,EAAE,GAAG,MAAM,EAAE;wBAC9C,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAC1B,YAAY,EAAE,CAAC;qBAClB;iBACJ;gBAAC,OAAO,KAAK,EAAE;oBACZ,cAAc;oBACd,IAAI;wBACA,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;wBAC1B,YAAY,EAAE,CAAC;qBAClB;oBAAC,OAAO,WAAW,EAAE;wBAClB,OAAO,CAAC,KAAK,CACT,aAAa,GAAG,EAAE,EAClB,WAAW,YAAY,KAAK;4BACxB,CAAC,CAAC,WAAW;4BACb,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAC5B,CAAC;qBACL;iBACJ;aACJ;YAED,IAAI,YAAY,GAAG,CAAC,EAAE;gBAClB,OAAO,CAAC,GAAG,CAAC,OAAO,YAAY,cAAc,CAAC,CAAC;aAClD;SACJ;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,KAAK,CACT,WAAW,EACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CACjD,CAAC;SACL;IACL,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,cAAc,CAAC,SAAiB;QAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QACjD,IAAI;YACA,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;SACpC;QAAC,OAAO,KAAK,EAAE;YACZ,OAAO;SACV;IACL,CAAC;IAED;;OAEG;IACI,KAAK,CAAC,UAAU;QACnB,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE;YAC3D,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;SACjC;aAAM,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;YAC5D,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC3B;IACL,CAAC;CACJ;AAhVD,wDAgVC"}
1
+ {"version":3,"file":"RedisMFASessionStorage.js","sourceRoot":"","sources":["../../src/common/RedisMFASessionStorage.ts"],"names":[],"mappings":"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"}