@protontech/drive-sdk 0.0.13 → 0.1.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 (234) hide show
  1. package/dist/cache/index.d.ts +1 -0
  2. package/dist/cache/index.js +3 -1
  3. package/dist/cache/index.js.map +1 -1
  4. package/dist/cache/memoryCache.d.ts +1 -1
  5. package/dist/cache/nullCache.d.ts +14 -0
  6. package/dist/cache/nullCache.js +37 -0
  7. package/dist/cache/nullCache.js.map +1 -0
  8. package/dist/config.d.ts +16 -1
  9. package/dist/config.js +1 -1
  10. package/dist/config.js.map +1 -1
  11. package/dist/crypto/openPGPCrypto.js +2 -0
  12. package/dist/crypto/openPGPCrypto.js.map +1 -1
  13. package/dist/diagnostic/eventsGenerator.d.ts +14 -0
  14. package/dist/diagnostic/eventsGenerator.js +49 -0
  15. package/dist/diagnostic/eventsGenerator.js.map +1 -0
  16. package/dist/diagnostic/httpClient.d.ts +16 -0
  17. package/dist/diagnostic/httpClient.js +81 -0
  18. package/dist/diagnostic/httpClient.js.map +1 -0
  19. package/dist/diagnostic/index.d.ts +10 -0
  20. package/dist/diagnostic/index.js +35 -0
  21. package/dist/diagnostic/index.js.map +1 -0
  22. package/dist/diagnostic/integrityVerificationStream.d.ts +21 -0
  23. package/dist/diagnostic/integrityVerificationStream.js +56 -0
  24. package/dist/diagnostic/integrityVerificationStream.js.map +1 -0
  25. package/dist/diagnostic/interface.d.ts +102 -0
  26. package/dist/diagnostic/interface.js +3 -0
  27. package/dist/diagnostic/interface.js.map +1 -0
  28. package/dist/diagnostic/sdkDiagnostic.d.ts +22 -0
  29. package/dist/diagnostic/sdkDiagnostic.js +216 -0
  30. package/dist/diagnostic/sdkDiagnostic.js.map +1 -0
  31. package/dist/diagnostic/sdkDiagnosticFull.d.ts +18 -0
  32. package/dist/diagnostic/sdkDiagnosticFull.js +35 -0
  33. package/dist/diagnostic/sdkDiagnosticFull.js.map +1 -0
  34. package/dist/diagnostic/telemetry.d.ts +25 -0
  35. package/dist/diagnostic/telemetry.js +70 -0
  36. package/dist/diagnostic/telemetry.js.map +1 -0
  37. package/dist/diagnostic/zipGenerators.d.ts +9 -0
  38. package/dist/diagnostic/zipGenerators.js +64 -0
  39. package/dist/diagnostic/zipGenerators.js.map +1 -0
  40. package/dist/diagnostic/zipGenerators.test.js +144 -0
  41. package/dist/diagnostic/zipGenerators.test.js.map +1 -0
  42. package/dist/errors.d.ts +2 -1
  43. package/dist/errors.js +3 -1
  44. package/dist/errors.js.map +1 -1
  45. package/dist/interface/config.d.ts +26 -0
  46. package/dist/interface/config.js +3 -0
  47. package/dist/interface/config.js.map +1 -0
  48. package/dist/interface/download.d.ts +2 -2
  49. package/dist/interface/events.d.ts +60 -20
  50. package/dist/interface/events.js +11 -1
  51. package/dist/interface/events.js.map +1 -1
  52. package/dist/interface/httpClient.d.ts +0 -14
  53. package/dist/interface/index.d.ts +8 -4
  54. package/dist/interface/index.js +2 -1
  55. package/dist/interface/index.js.map +1 -1
  56. package/dist/interface/nodes.d.ts +9 -0
  57. package/dist/interface/nodes.js.map +1 -1
  58. package/dist/interface/sharing.d.ts +1 -0
  59. package/dist/interface/upload.d.ts +6 -0
  60. package/dist/internal/download/apiService.js +32 -31
  61. package/dist/internal/download/apiService.js.map +1 -1
  62. package/dist/internal/download/fileDownloader.d.ts +2 -2
  63. package/dist/internal/download/fileDownloader.js.map +1 -1
  64. package/dist/internal/events/apiService.d.ts +4 -6
  65. package/dist/internal/events/apiService.js +15 -22
  66. package/dist/internal/events/apiService.js.map +1 -1
  67. package/dist/internal/events/coreEventManager.d.ts +7 -10
  68. package/dist/internal/events/coreEventManager.js +19 -36
  69. package/dist/internal/events/coreEventManager.js.map +1 -1
  70. package/dist/internal/events/coreEventManager.test.js +87 -0
  71. package/dist/internal/events/coreEventManager.test.js.map +1 -0
  72. package/dist/internal/events/eventManager.d.ts +11 -36
  73. package/dist/internal/events/eventManager.js +59 -105
  74. package/dist/internal/events/eventManager.js.map +1 -1
  75. package/dist/internal/events/eventManager.test.js +167 -82
  76. package/dist/internal/events/eventManager.test.js.map +1 -1
  77. package/dist/internal/events/index.d.ts +13 -33
  78. package/dist/internal/events/index.js +56 -72
  79. package/dist/internal/events/index.js.map +1 -1
  80. package/dist/internal/events/interface.d.ts +59 -14
  81. package/dist/internal/events/interface.js +13 -3
  82. package/dist/internal/events/interface.js.map +1 -1
  83. package/dist/internal/events/volumeEventManager.d.ts +7 -17
  84. package/dist/internal/events/volumeEventManager.js +58 -45
  85. package/dist/internal/events/volumeEventManager.js.map +1 -1
  86. package/dist/internal/events/volumeEventManager.test.d.ts +1 -0
  87. package/dist/internal/events/volumeEventManager.test.js +203 -0
  88. package/dist/internal/events/volumeEventManager.test.js.map +1 -0
  89. package/dist/internal/nodes/cache.d.ts +10 -1
  90. package/dist/internal/nodes/cache.js +17 -0
  91. package/dist/internal/nodes/cache.js.map +1 -1
  92. package/dist/internal/nodes/cryptoService.d.ts +1 -1
  93. package/dist/internal/nodes/cryptoService.js.map +1 -1
  94. package/dist/internal/nodes/events.d.ts +7 -83
  95. package/dist/internal/nodes/events.js +43 -217
  96. package/dist/internal/nodes/events.js.map +1 -1
  97. package/dist/internal/nodes/events.test.js +27 -277
  98. package/dist/internal/nodes/events.test.js.map +1 -1
  99. package/dist/internal/nodes/index.d.ts +3 -4
  100. package/dist/internal/nodes/index.js +5 -5
  101. package/dist/internal/nodes/index.js.map +1 -1
  102. package/dist/internal/nodes/nodesAccess.d.ts +15 -0
  103. package/dist/internal/nodes/nodesAccess.js +37 -0
  104. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  105. package/dist/internal/nodes/nodesAccess.test.js +131 -93
  106. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  107. package/dist/internal/nodes/nodesManagement.d.ts +1 -3
  108. package/dist/internal/nodes/nodesManagement.js +12 -26
  109. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  110. package/dist/internal/nodes/nodesManagement.test.js +35 -14
  111. package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
  112. package/dist/internal/shares/cache.d.ts +2 -0
  113. package/dist/internal/shares/cache.js +2 -0
  114. package/dist/internal/shares/cache.js.map +1 -1
  115. package/dist/internal/shares/manager.d.ts +1 -0
  116. package/dist/internal/shares/manager.js +3 -0
  117. package/dist/internal/shares/manager.js.map +1 -1
  118. package/dist/internal/sharing/apiService.js +1 -0
  119. package/dist/internal/sharing/apiService.js.map +1 -1
  120. package/dist/internal/sharing/cryptoService.js +1 -0
  121. package/dist/internal/sharing/cryptoService.js.map +1 -1
  122. package/dist/internal/sharing/events.d.ts +23 -55
  123. package/dist/internal/sharing/events.js +46 -138
  124. package/dist/internal/sharing/events.js.map +1 -1
  125. package/dist/internal/sharing/events.test.js +77 -180
  126. package/dist/internal/sharing/events.test.js.map +1 -1
  127. package/dist/internal/sharing/index.d.ts +4 -5
  128. package/dist/internal/sharing/index.js +5 -5
  129. package/dist/internal/sharing/index.js.map +1 -1
  130. package/dist/internal/sharing/interface.d.ts +3 -0
  131. package/dist/internal/sharing/sharingManagement.d.ts +2 -3
  132. package/dist/internal/sharing/sharingManagement.js +7 -9
  133. package/dist/internal/sharing/sharingManagement.js.map +1 -1
  134. package/dist/internal/sharing/sharingManagement.test.js +9 -39
  135. package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
  136. package/dist/internal/upload/apiService.d.ts +2 -3
  137. package/dist/internal/upload/apiService.js +7 -4
  138. package/dist/internal/upload/apiService.js.map +1 -1
  139. package/dist/internal/upload/index.d.ts +2 -2
  140. package/dist/internal/upload/index.js +3 -3
  141. package/dist/internal/upload/index.js.map +1 -1
  142. package/dist/internal/upload/interface.d.ts +2 -0
  143. package/dist/internal/upload/manager.d.ts +5 -5
  144. package/dist/internal/upload/manager.js +19 -50
  145. package/dist/internal/upload/manager.js.map +1 -1
  146. package/dist/internal/upload/manager.test.js +68 -44
  147. package/dist/internal/upload/manager.test.js.map +1 -1
  148. package/dist/internal/upload/streamUploader.js +1 -2
  149. package/dist/internal/upload/streamUploader.js.map +1 -1
  150. package/dist/internal/upload/streamUploader.test.js +1 -1
  151. package/dist/internal/upload/streamUploader.test.js.map +1 -1
  152. package/dist/protonDriveClient.d.ts +19 -162
  153. package/dist/protonDriveClient.js +26 -190
  154. package/dist/protonDriveClient.js.map +1 -1
  155. package/dist/protonDrivePhotosClient.js +3 -2
  156. package/dist/protonDrivePhotosClient.js.map +1 -1
  157. package/package.json +3 -3
  158. package/src/cache/index.ts +1 -0
  159. package/src/cache/memoryCache.ts +1 -1
  160. package/src/cache/nullCache.ts +38 -0
  161. package/src/config.ts +17 -2
  162. package/src/crypto/openPGPCrypto.ts +2 -0
  163. package/src/diagnostic/eventsGenerator.ts +48 -0
  164. package/src/diagnostic/httpClient.ts +80 -0
  165. package/src/diagnostic/index.ts +38 -0
  166. package/src/diagnostic/integrityVerificationStream.ts +56 -0
  167. package/src/diagnostic/interface.ts +158 -0
  168. package/src/diagnostic/sdkDiagnostic.ts +238 -0
  169. package/src/diagnostic/sdkDiagnosticFull.ts +40 -0
  170. package/src/diagnostic/telemetry.ts +71 -0
  171. package/src/diagnostic/zipGenerators.test.ts +177 -0
  172. package/src/diagnostic/zipGenerators.ts +70 -0
  173. package/src/errors.ts +4 -1
  174. package/src/interface/config.ts +28 -0
  175. package/src/interface/download.ts +2 -2
  176. package/src/interface/events.ts +66 -21
  177. package/src/interface/httpClient.ts +0 -16
  178. package/src/interface/index.ts +8 -4
  179. package/src/interface/nodes.ts +21 -12
  180. package/src/interface/sharing.ts +1 -0
  181. package/src/interface/upload.ts +6 -0
  182. package/src/internal/download/apiService.ts +11 -8
  183. package/src/internal/download/fileDownloader.ts +2 -2
  184. package/src/internal/events/apiService.ts +25 -28
  185. package/src/internal/events/coreEventManager.test.ts +101 -0
  186. package/src/internal/events/coreEventManager.ts +20 -45
  187. package/src/internal/events/eventManager.test.ts +201 -88
  188. package/src/internal/events/eventManager.ts +69 -115
  189. package/src/internal/events/index.ts +54 -84
  190. package/src/internal/events/interface.ts +70 -15
  191. package/src/internal/events/volumeEventManager.test.ts +243 -0
  192. package/src/internal/events/volumeEventManager.ts +55 -53
  193. package/src/internal/nodes/cache.ts +20 -2
  194. package/src/internal/nodes/cryptoService.ts +1 -1
  195. package/src/internal/nodes/events.test.ts +29 -335
  196. package/src/internal/nodes/events.ts +45 -253
  197. package/src/internal/nodes/index.ts +6 -8
  198. package/src/internal/nodes/interface.ts +2 -2
  199. package/src/internal/nodes/nodesAccess.test.ts +132 -91
  200. package/src/internal/nodes/nodesAccess.ts +40 -1
  201. package/src/internal/nodes/nodesManagement.test.ts +39 -15
  202. package/src/internal/nodes/nodesManagement.ts +12 -30
  203. package/src/internal/shares/cache.ts +4 -2
  204. package/src/internal/shares/manager.ts +9 -5
  205. package/src/internal/sharing/apiService.ts +1 -0
  206. package/src/internal/sharing/cache.ts +1 -1
  207. package/src/internal/sharing/cryptoService.ts +1 -0
  208. package/src/internal/sharing/events.test.ts +89 -195
  209. package/src/internal/sharing/events.ts +42 -156
  210. package/src/internal/sharing/index.ts +6 -9
  211. package/src/internal/sharing/interface.ts +6 -2
  212. package/src/internal/sharing/sharingManagement.test.ts +10 -40
  213. package/src/internal/sharing/sharingManagement.ts +7 -11
  214. package/src/internal/upload/apiService.ts +5 -6
  215. package/src/internal/upload/index.ts +5 -5
  216. package/src/internal/upload/interface.ts +2 -0
  217. package/src/internal/upload/manager.test.ts +75 -45
  218. package/src/internal/upload/manager.ts +24 -54
  219. package/src/internal/upload/streamUploader.test.ts +0 -1
  220. package/src/internal/upload/streamUploader.ts +0 -2
  221. package/src/protonDriveClient.ts +75 -244
  222. package/src/protonDrivePhotosClient.ts +4 -3
  223. package/dist/internal/events/cache.d.ts +0 -28
  224. package/dist/internal/events/cache.js +0 -67
  225. package/dist/internal/events/cache.js.map +0 -1
  226. package/dist/internal/events/cache.test.js +0 -43
  227. package/dist/internal/events/cache.test.js.map +0 -1
  228. package/dist/internal/nodes/index.test.js +0 -114
  229. package/dist/internal/nodes/index.test.js.map +0 -1
  230. package/src/internal/events/cache.test.ts +0 -47
  231. package/src/internal/events/cache.ts +0 -80
  232. package/src/internal/nodes/index.test.ts +0 -137
  233. /package/dist/{internal/events/cache.test.d.ts → diagnostic/zipGenerators.test.d.ts} +0 -0
  234. /package/dist/internal/{nodes/index.test.d.ts → events/coreEventManager.test.d.ts} +0 -0
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CoreEventManager = void 0;
4
4
  const telemetry_1 = require("../../telemetry");
5
5
  const interface_1 = require("./interface");
6
- const eventManager_1 = require("./eventManager");
7
6
  /**
8
7
  * Combines API and event manager to provide a service for listening to
9
8
  * core events. Core events are events that are not specific to any volume.
@@ -16,47 +15,31 @@ const eventManager_1 = require("./eventManager");
16
15
  * with own implementation.
17
16
  */
18
17
  class CoreEventManager {
18
+ logger;
19
19
  apiService;
20
- cache;
21
- manager;
22
- constructor(logger, apiService, cache) {
20
+ constructor(logger, apiService) {
21
+ this.logger = logger;
23
22
  this.apiService = apiService;
24
- this.cache = cache;
25
23
  this.apiService = apiService;
26
- this.manager = new eventManager_1.EventManager(new telemetry_1.LoggerWithPrefix(logger, `core`), () => this.getLastEventId(), (eventId) => this.apiService.getCoreEvents(eventId), (lastEventId) => this.cache.setLastEventId('core', {
27
- lastEventId,
28
- pollingIntervalInSeconds: this.manager.pollingIntervalInSeconds,
29
- isOwnVolume: false,
30
- }));
24
+ this.logger = new telemetry_1.LoggerWithPrefix(logger, `core`);
31
25
  }
32
- async getLastEventId() {
33
- const lastEventId = await this.cache.getLastEventId('core');
34
- if (lastEventId) {
35
- return lastEventId;
36
- }
37
- return this.apiService.getCoreLatestEventId();
38
- }
39
- async startSubscription() {
40
- await this.manager.start();
26
+ async getLatestEventId() {
27
+ return await this.apiService.getCoreLatestEventId();
41
28
  }
42
- async stopSubscription() {
43
- await this.manager.stop();
29
+ async *getEvents(eventId) {
30
+ const events = await this.apiService.getCoreEvents(eventId);
31
+ if (events.events.length === 0 && events.latestEventId !== eventId) {
32
+ yield {
33
+ type: interface_1.DriveEventType.SharedWithMeUpdated,
34
+ treeEventScopeId: 'core',
35
+ eventId: events.latestEventId,
36
+ };
37
+ return;
38
+ }
39
+ yield* events.events;
44
40
  }
45
- addListener(callback) {
46
- this.manager.addListener(async (events, fullRefresh) => {
47
- if (events) {
48
- await callback(events);
49
- }
50
- if (fullRefresh) {
51
- // Because only updates about shares that are shared with me
52
- // are listened to from core events, in the case of core full
53
- // refresh, we don't have to refresh anything more than this
54
- // one specific event.
55
- await callback([{
56
- type: interface_1.DriveEventType.ShareWithMeUpdated,
57
- }]);
58
- }
59
- });
41
+ getLogger() {
42
+ return this.logger;
60
43
  }
61
44
  }
62
45
  exports.CoreEventManager = CoreEventManager;
@@ -1 +1 @@
1
- {"version":3,"file":"coreEventManager.js","sourceRoot":"","sources":["../../../src/internal/events/coreEventManager.ts"],"names":[],"mappings":";;;AACA,+CAAmD;AAGnD,2CAAyD;AACzD,iDAA8C;AAE9C;;;;;;;;;;GAUG;AACH,MAAa,gBAAgB;IAGW;IAAsC;IAFlE,OAAO,CAA2B;IAE1C,YAAY,MAAc,EAAU,UAA4B,EAAU,KAAkB;QAAxD,eAAU,GAAV,UAAU,CAAkB;QAAU,UAAK,GAAL,KAAK,CAAa;QACxF,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,CAAC,OAAO,GAAG,IAAI,2BAAY,CAC3B,IAAI,4BAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,EACpC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,EAC3B,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,EACnD,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE;YAC/C,WAAW;YACX,wBAAwB,EAAE,IAAI,CAAC,OAAO,CAAC,wBAAwB;YAC/D,WAAW,EAAE,KAAK;SACrB,CAAC,CACL,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,cAAc;QACxB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC5D,IAAI,WAAW,EAAE,CAAC;YACd,OAAO,WAAW,CAAC;QACvB,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,iBAAiB;QACnB,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,gBAAgB;QAClB,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IAC9B,CAAC;IAED,WAAW,CAAC,QAAiD;QACzD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE;YACnD,IAAI,MAAM,EAAE,CAAC;gBACT,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC3B,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBACd,4DAA4D;gBAC5D,6DAA6D;gBAC7D,4DAA4D;gBAC5D,sBAAsB;gBACtB,MAAM,QAAQ,CAAC,CAAC;wBACZ,IAAI,EAAE,0BAAc,CAAC,kBAAkB;qBAC1C,CAAC,CAAC,CAAC;YACR,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAlDD,4CAkDC"}
1
+ {"version":3,"file":"coreEventManager.js","sourceRoot":"","sources":["../../../src/internal/events/coreEventManager.ts"],"names":[],"mappings":";;;AACA,+CAAmD;AAEnD,2CAAgF;AAEhF;;;;;;;;;;GAUG;AACH,MAAa,gBAAgB;IACL;IAAwB;IAA5C,YAAoB,MAAc,EAAU,UAA4B;QAApD,WAAM,GAAN,MAAM,CAAQ;QAAU,eAAU,GAAV,UAAU,CAAkB;QACpE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,CAAC,MAAM,GAAG,IAAI,4BAAgB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,gBAAgB;QAClB,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,CAAE,SAAS,CAAC,OAAe;QAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,aAAa,KAAK,OAAO,EAAE,CAAC;YACjE,MAAM;gBACF,IAAI,EAAE,0BAAc,CAAC,mBAAmB;gBACxC,gBAAgB,EAAE,MAAM;gBACxB,OAAO,EAAE,MAAM,CAAC,aAAa;aAChC,CAAC;YACF,OAAO;QACX,CAAC;QACD,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IACzB,CAAC;IAED,SAAS;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;IACvB,CAAC;CACJ;AA3BD,4CA2BC"}
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const logger_1 = require("../../tests/logger");
4
+ const interface_1 = require("./interface");
5
+ const coreEventManager_1 = require("./coreEventManager");
6
+ describe("CoreEventManager", () => {
7
+ let mockApiService;
8
+ let coreEventManager;
9
+ const mockLogger = (0, logger_1.getMockLogger)();
10
+ beforeEach(() => {
11
+ // Reset mocks
12
+ jest.clearAllMocks();
13
+ mockApiService = {
14
+ getCoreLatestEventId: jest.fn(),
15
+ getCoreEvents: jest.fn(),
16
+ getVolumeLatestEventId: jest.fn(),
17
+ getVolumeEvents: jest.fn(),
18
+ };
19
+ coreEventManager = new coreEventManager_1.CoreEventManager(mockLogger, mockApiService);
20
+ });
21
+ describe("getLatestEventId", () => {
22
+ it("should return the latest event ID from API service", async () => {
23
+ const expectedEventId = "event-123";
24
+ mockApiService.getCoreLatestEventId.mockResolvedValue(expectedEventId);
25
+ const result = await coreEventManager.getLatestEventId();
26
+ expect(result).toBe(expectedEventId);
27
+ expect(mockApiService.getCoreLatestEventId).toHaveBeenCalledTimes(1);
28
+ });
29
+ it("should handle API service errors", async () => {
30
+ const error = new Error("API error");
31
+ mockApiService.getCoreLatestEventId.mockRejectedValue(error);
32
+ await expect(coreEventManager.getLatestEventId()).rejects.toThrow("API error");
33
+ expect(mockApiService.getCoreLatestEventId).toHaveBeenCalledTimes(1);
34
+ });
35
+ });
36
+ describe("getEvents", () => {
37
+ const eventId = "event1";
38
+ const latestEventId = "event2";
39
+ it("should yield ShareWithMeUpdated event when refresh is true", async () => {
40
+ const mockEvents = {
41
+ latestEventId,
42
+ more: false,
43
+ refresh: true,
44
+ events: [],
45
+ };
46
+ mockApiService.getCoreEvents.mockResolvedValue(mockEvents);
47
+ const events = [];
48
+ for await (const event of coreEventManager.getEvents(eventId)) {
49
+ events.push(event);
50
+ }
51
+ expect(events).toHaveLength(1);
52
+ expect(events[0]).toEqual({
53
+ type: interface_1.DriveEventType.SharedWithMeUpdated,
54
+ treeEventScopeId: 'core',
55
+ eventId: latestEventId,
56
+ });
57
+ expect(mockApiService.getCoreEvents).toHaveBeenCalledWith(eventId);
58
+ });
59
+ it("should yield all events when there are actual events", async () => {
60
+ const mockEvent1 = {
61
+ type: interface_1.DriveEventType.SharedWithMeUpdated,
62
+ eventId: "event-1",
63
+ treeEventScopeId: 'core',
64
+ };
65
+ const mockEvent2 = {
66
+ type: interface_1.DriveEventType.SharedWithMeUpdated,
67
+ eventId: "event-2",
68
+ treeEventScopeId: 'core',
69
+ };
70
+ const mockEvents = {
71
+ latestEventId,
72
+ more: false,
73
+ refresh: false,
74
+ events: [mockEvent1, mockEvent2],
75
+ };
76
+ mockApiService.getCoreEvents.mockResolvedValue(mockEvents);
77
+ const events = [];
78
+ for await (const event of coreEventManager.getEvents(eventId)) {
79
+ events.push(event);
80
+ }
81
+ expect(events).toHaveLength(2);
82
+ expect(events[0]).toEqual(mockEvent1);
83
+ expect(events[1]).toEqual(mockEvent2);
84
+ });
85
+ });
86
+ });
87
+ //# sourceMappingURL=coreEventManager.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"coreEventManager.test.js","sourceRoot":"","sources":["../../../src/internal/events/coreEventManager.test.ts"],"names":[],"mappings":";;AAAA,+CAAmD;AAEnD,2CAAoF;AACpF,yDAAsD;AAEtD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,IAAI,cAA6C,CAAC;IAClD,IAAI,gBAAkC,CAAC;IACvC,MAAM,UAAU,GAAG,IAAA,sBAAa,GAAE,CAAC;IAEnC,UAAU,CAAC,GAAG,EAAE;QACZ,cAAc;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,cAAc,GAAG;YACb,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE;YAC/B,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE;YACxB,sBAAsB,EAAE,IAAI,CAAC,EAAE,EAAE;YACjC,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE;SACe,CAAC;QAE9C,gBAAgB,GAAG,IAAI,mCAAgB,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;QAC9B,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAChE,MAAM,eAAe,GAAG,WAAW,CAAC;YACpC,cAAc,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;YAEvE,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,gBAAgB,EAAE,CAAC;YAEzD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YACrC,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;YACrC,cAAc,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAE7D,MAAM,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC/E,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACvB,MAAM,OAAO,GAAG,QAAQ,CAAC;QACzB,MAAM,aAAa,GAAG,QAAQ,CAAC;QAE/B,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,UAAU,GAA8B;gBAC1C,aAAa;gBACb,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE,EAAE;aACb,CAAC;YACF,cAAc,CAAC,aAAa,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAE3D,MAAM,MAAM,GAAG,EAAE,CAAC;YAClB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YAED,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;gBACtB,IAAI,EAAE,0BAAc,CAAC,mBAAmB;gBACxC,gBAAgB,EAAE,MAAM;gBACxB,OAAO,EAAE,aAAa;aACzB,CAAC,CAAC;YACH,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,UAAU,GAAe;gBAC3B,IAAI,EAAE,0BAAc,CAAC,mBAAmB;gBACxC,OAAO,EAAE,SAAS;gBAClB,gBAAgB,EAAE,MAAM;aAC3B,CAAC;YACF,MAAM,UAAU,GAAe;gBAC3B,IAAI,EAAE,0BAAc,CAAC,mBAAmB;gBACxC,OAAO,EAAE,SAAS;gBAClB,gBAAgB,EAAE,MAAM;aAC3B,CAAC;YACF,MAAM,UAAU,GAA8B;gBAC1C,aAAa;gBACb,IAAI,EAAE,KAAK;gBACX,OAAO,EAAE,KAAK;gBACd,MAAM,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC;aACnC,CAAC;YACF,cAAc,CAAC,aAAa,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;YAE3D,MAAM,MAAM,GAAG,EAAE,CAAC;YAClB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;YAED,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
@@ -1,11 +1,5 @@
1
- import { Logger } from "../../interface";
2
- import { Events } from "./interface";
3
- /**
4
- * `fullRefresh` is true when the event manager has requested a full
5
- * refresh of the data. That can happen if there is too many events
6
- * to be processed or the last event ID is too old.
7
- */
8
- type Listener<T> = (events: T[], fullRefresh: boolean) => Promise<void>;
1
+ import { EventManagerInterface, Event, EventSubscription } from "./interface";
2
+ type Listener<T> = (event: T) => Promise<void>;
9
3
  /**
10
4
  * Event manager general helper that is responsible for fetching events
11
5
  * from the server and notifying listeners about the events.
@@ -18,45 +12,26 @@ type Listener<T> = (events: T[], fullRefresh: boolean) => Promise<void>;
18
12
  * called. Once started, the manager will fetch events in a loop with
19
13
  * a timeout between each fetch. The default timeout is 30 seconds and
20
14
  * additional jitter is used in case of failure.
21
- *
22
- * Example of usage:
23
- *
24
- * ```typescript
25
- * const manager = new EventManager(
26
- * logger,
27
- * () => apiService.getLatestEventId(),
28
- * (eventId) => apiService.getEvents(eventId),
29
- * );
30
- *
31
- * manager.addListener((events, fullRefresh) => {
32
- * // Process the events
33
- * });
34
- *
35
- * manager.start();
36
- * ```
37
15
  */
38
- export declare class EventManager<T> {
16
+ export declare class EventManager<T extends Event> {
17
+ private specializedEventManager;
18
+ private pollingIntervalInSeconds;
39
19
  private logger;
40
- private getLatestEventId;
41
- private getEvents;
42
- private updateLatestEventId;
43
20
  private latestEventId?;
44
21
  private timeoutHandle?;
45
22
  private processPromise?;
46
23
  private listeners;
47
24
  private retryIndex;
48
- pollingIntervalInSeconds: number;
49
- constructor(logger: Logger, getLatestEventId: () => Promise<string>, getEvents: (eventId: string) => Promise<Events<T>>, updateLatestEventId: (lastEventId: string) => Promise<void>);
50
- addListener(callback: Listener<T>): void;
25
+ constructor(specializedEventManager: EventManagerInterface<T>, pollingIntervalInSeconds: number, latestEventId: string | null);
51
26
  start(): Promise<void>;
52
- private processEvents;
27
+ addListener(callback: Listener<T>): EventSubscription;
28
+ setPollingInterval(pollingIntervalInSeconds: number): void;
29
+ stop(): Promise<void>;
53
30
  private notifyListeners;
31
+ private processEvents;
54
32
  /**
55
33
  * Polling timeout is using exponential backoff with Fibonacci sequence.
56
- *
57
- * The timeout is public for testing purposes only.
58
34
  */
59
- get nextPollTimeout(): number;
60
- stop(): Promise<void>;
35
+ private get nextPollTimeout();
61
36
  }
62
37
  export {};
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EventManager = void 0;
4
- const apiService_1 = require("../apiService");
5
- const DEFAULT_POLLING_INTERVAL_IN_SECONDS = 30;
6
4
  const FIBONACCI_LIST = [1, 1, 2, 3, 5, 8, 13];
7
5
  /**
8
6
  * Event manager general helper that is responsible for fetching events
@@ -16,144 +14,100 @@ const FIBONACCI_LIST = [1, 1, 2, 3, 5, 8, 13];
16
14
  * called. Once started, the manager will fetch events in a loop with
17
15
  * a timeout between each fetch. The default timeout is 30 seconds and
18
16
  * additional jitter is used in case of failure.
19
- *
20
- * Example of usage:
21
- *
22
- * ```typescript
23
- * const manager = new EventManager(
24
- * logger,
25
- * () => apiService.getLatestEventId(),
26
- * (eventId) => apiService.getEvents(eventId),
27
- * );
28
- *
29
- * manager.addListener((events, fullRefresh) => {
30
- * // Process the events
31
- * });
32
- *
33
- * manager.start();
34
- * ```
35
17
  */
36
18
  class EventManager {
19
+ specializedEventManager;
20
+ pollingIntervalInSeconds;
37
21
  logger;
38
- getLatestEventId;
39
- getEvents;
40
- updateLatestEventId;
41
22
  latestEventId;
42
23
  timeoutHandle;
43
24
  processPromise;
44
25
  listeners = [];
45
26
  retryIndex = 0;
46
- pollingIntervalInSeconds = DEFAULT_POLLING_INTERVAL_IN_SECONDS;
47
- constructor(logger, getLatestEventId, getEvents, updateLatestEventId) {
48
- this.logger = logger;
49
- this.getLatestEventId = getLatestEventId;
50
- this.getEvents = getEvents;
51
- this.updateLatestEventId = updateLatestEventId;
52
- this.logger = logger;
53
- this.getLatestEventId = getLatestEventId;
54
- this.getEvents = getEvents;
55
- this.updateLatestEventId = updateLatestEventId;
27
+ constructor(specializedEventManager, pollingIntervalInSeconds, latestEventId) {
28
+ this.specializedEventManager = specializedEventManager;
29
+ this.pollingIntervalInSeconds = pollingIntervalInSeconds;
30
+ if (latestEventId !== null) {
31
+ this.latestEventId = latestEventId;
32
+ }
33
+ this.logger = specializedEventManager.getLogger();
34
+ }
35
+ async start() {
36
+ if (this.latestEventId === undefined) {
37
+ this.latestEventId = await this.specializedEventManager.getLatestEventId();
38
+ }
39
+ this.processPromise = this.processEvents();
56
40
  }
57
41
  addListener(callback) {
58
42
  this.listeners.push(callback);
43
+ return {
44
+ dispose: () => {
45
+ const index = this.listeners.indexOf(callback);
46
+ this.listeners.splice(index, 1);
47
+ },
48
+ };
59
49
  }
60
- async start() {
61
- this.logger.info(`Starting event manager with polling interval ${this.pollingIntervalInSeconds} seconds`);
62
- await this.stop();
63
- this.processPromise = this.processEvents();
50
+ setPollingInterval(pollingIntervalInSeconds) {
51
+ this.pollingIntervalInSeconds = pollingIntervalInSeconds;
52
+ }
53
+ async stop() {
54
+ if (this.processPromise) {
55
+ this.logger.info(`Stopping event manager`);
56
+ try {
57
+ await this.processPromise;
58
+ }
59
+ catch (error) {
60
+ this.logger.warn(`Failed to stop cleanly: ${error instanceof Error ? error.message : error}`);
61
+ }
62
+ }
63
+ if (!this.timeoutHandle) {
64
+ return;
65
+ }
66
+ clearTimeout(this.timeoutHandle);
67
+ this.timeoutHandle = undefined;
68
+ }
69
+ async notifyListeners(event) {
70
+ for (const listener of this.listeners) {
71
+ await listener(event);
72
+ }
64
73
  }
65
74
  async processEvents() {
75
+ let listenerError;
66
76
  try {
67
- if (!this.latestEventId) {
68
- this.latestEventId = await this.getLatestEventId();
69
- await this.updateLatestEventId(this.latestEventId);
70
- }
71
- else {
72
- while (true) {
73
- let result;
74
- try {
75
- result = await this.getEvents(this.latestEventId);
76
- }
77
- catch (error) {
78
- // If last event ID is not found, we need to refresh the data.
79
- // Caller is notified via standard event update with refresh flag.
80
- if (error instanceof apiService_1.NotFoundAPIError) {
81
- this.logger.warn(`Last event ID not found, refreshing data`);
82
- result = {
83
- lastEventId: await this.getLatestEventId(),
84
- more: false,
85
- refresh: true,
86
- events: [],
87
- };
88
- }
89
- else {
90
- // Any other error is considered as a failure and we will retry
91
- // with backoff policy.
92
- throw error;
93
- }
94
- }
95
- await this.notifyListeners(result);
96
- if (result.lastEventId !== this.latestEventId) {
97
- await this.updateLatestEventId(result.lastEventId);
98
- this.latestEventId = result.lastEventId;
99
- }
100
- if (!result.more) {
101
- break;
102
- }
77
+ const events = this.specializedEventManager.getEvents(this.latestEventId);
78
+ for await (const event of events) {
79
+ try {
80
+ await this.notifyListeners(event);
103
81
  }
82
+ catch (internalListenerError) {
83
+ listenerError = internalListenerError;
84
+ break;
85
+ }
86
+ this.latestEventId = event.eventId;
104
87
  }
105
88
  this.retryIndex = 0;
106
89
  }
107
90
  catch (error) {
91
+ // This could be improved to catch api specific errors and let the listener errors bubble up directly
108
92
  this.logger.error(`Failed to process events: ${error instanceof Error ? error.message : error} (retry ${this.retryIndex}, last event ID: ${this.latestEventId})`);
109
93
  this.retryIndex++;
110
94
  }
95
+ if (listenerError) {
96
+ throw listenerError;
97
+ }
111
98
  this.timeoutHandle = setTimeout(() => {
112
99
  this.processPromise = this.processEvents();
113
100
  }, this.nextPollTimeout);
114
101
  }
115
102
  ;
116
- async notifyListeners(result) {
117
- if (result.events.length === 0 && !result.refresh) {
118
- return;
119
- }
120
- if (!this.listeners.length) {
121
- return;
122
- }
123
- this.logger.debug(`Notifying listeners about ${result.events.length} events`);
124
- for (const listener of this.listeners) {
125
- try {
126
- await listener(result.events, result.refresh);
127
- }
128
- catch (error) {
129
- this.logger.error(`Failed to process events: ${error instanceof Error ? error.message : error} (last event ID: ${result.lastEventId}, refresh: ${result.refresh})`);
130
- throw error;
131
- }
132
- }
133
- }
134
103
  /**
135
104
  * Polling timeout is using exponential backoff with Fibonacci sequence.
136
- *
137
- * The timeout is public for testing purposes only.
138
105
  */
139
106
  get nextPollTimeout() {
140
107
  const retryIndex = Math.min(this.retryIndex, FIBONACCI_LIST.length - 1);
108
+ // FIXME jitter
141
109
  return this.pollingIntervalInSeconds * 1000 * FIBONACCI_LIST[retryIndex];
142
110
  }
143
- async stop() {
144
- if (this.processPromise) {
145
- this.logger.info(`Stopping event manager`);
146
- try {
147
- await this.processPromise;
148
- }
149
- catch { }
150
- }
151
- if (!this.timeoutHandle) {
152
- return;
153
- }
154
- clearTimeout(this.timeoutHandle);
155
- this.timeoutHandle = undefined;
156
- }
157
111
  }
158
112
  exports.EventManager = EventManager;
159
113
  //# sourceMappingURL=eventManager.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"eventManager.js","sourceRoot":"","sources":["../../../src/internal/events/eventManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"eventManager.js","sourceRoot":"","sources":["../../../src/internal/events/eventManager.ts"],"names":[],"mappings":";;;AAGA,MAAM,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;AAK9C;;;;;;;;;;;;GAYG;AACH,MAAa,YAAY;IAST;IACA;IATJ,MAAM,CAAS;IACf,aAAa,CAAU;IACvB,aAAa,CAAiC;IAC9C,cAAc,CAAiB;IAC/B,SAAS,GAAkB,EAAE,CAAC;IAC9B,UAAU,GAAW,CAAC,CAAC;IAE/B,YACY,uBAAiD,EACjD,wBAAgC,EACxC,aAA4B;QAFpB,4BAAuB,GAAvB,uBAAuB,CAA0B;QACjD,6BAAwB,GAAxB,wBAAwB,CAAQ;QAGxC,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;YACzB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,uBAAuB,CAAC,SAAS,EAAE,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,KAAK;QACP,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,CAAC;QAC/E,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;IAC/C,CAAC;IAED,WAAW,CAAC,QAAqB;QAC7B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,OAAO;YACH,OAAO,EAAE,GAAS,EAAE;gBAChB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpC,CAAC;SACJ,CAAC;IACN,CAAC;IAED,kBAAkB,CAAC,wBAAgC;QAC/C,IAAI,CAAC,wBAAwB,GAAG,wBAAwB,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,IAAI;QACN,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC3C,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,cAAc,CAAC;YAC9B,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;YAClG,CAAC;QACL,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACtB,OAAO;QACX,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,KAAQ;QAClC,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,aAAa;QACvB,IAAI,aAAa,CAAC;QAClB,IAAI,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,IAAI,CAAC,aAAc,CAAC,CAAC;YAC3E,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACD,MAAM,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBACtC,CAAC;gBAAC,OAAO,qBAAqB,EAAE,CAAC;oBAC7B,aAAa,GAAG,qBAAqB,CAAC;oBACtC,MAAM;gBACV,CAAC;gBACD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC;YACvC,CAAC;YACD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACtB,qGAAqG;YACrG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,CAAC,UAAU,oBAAoB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;YAClK,IAAI,CAAC,UAAU,EAAE,CAAC;QACtB,CAAC;QACD,IAAI,aAAa,EAAE,CAAC;YAChB,MAAM,aAAa,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE;YACjC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAC/C,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC7B,CAAC;IAAA,CAAC;IAEF;;OAEG;IACH,IAAY,eAAe;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACxE,eAAe;QACf,OAAO,IAAI,CAAC,wBAAwB,GAAG,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC7E,CAAC;CACJ;AApGD,oCAoGC"}