@protontech/drive-sdk 0.0.12 → 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 (274) 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 +8 -3
  43. package/dist/errors.js +11 -4
  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 +9 -5
  54. package/dist/interface/index.js +2 -1
  55. package/dist/interface/index.js.map +1 -1
  56. package/dist/interface/nodes.d.ts +21 -1
  57. package/dist/interface/nodes.js +11 -0
  58. package/dist/interface/nodes.js.map +1 -1
  59. package/dist/interface/sharing.d.ts +1 -0
  60. package/dist/interface/upload.d.ts +57 -3
  61. package/dist/internal/apiService/driveTypes.d.ts +1341 -465
  62. package/dist/internal/apiService/errors.js +2 -2
  63. package/dist/internal/apiService/errors.js.map +1 -1
  64. package/dist/internal/apiService/transformers.js +2 -0
  65. package/dist/internal/apiService/transformers.js.map +1 -1
  66. package/dist/internal/asyncIteratorMap.d.ts +15 -0
  67. package/dist/internal/asyncIteratorMap.js +59 -0
  68. package/dist/internal/asyncIteratorMap.js.map +1 -0
  69. package/dist/internal/asyncIteratorMap.test.js +120 -0
  70. package/dist/internal/asyncIteratorMap.test.js.map +1 -0
  71. package/dist/internal/download/apiService.js +32 -31
  72. package/dist/internal/download/apiService.js.map +1 -1
  73. package/dist/internal/download/fileDownloader.d.ts +2 -2
  74. package/dist/internal/download/fileDownloader.js.map +1 -1
  75. package/dist/internal/events/apiService.d.ts +4 -6
  76. package/dist/internal/events/apiService.js +15 -22
  77. package/dist/internal/events/apiService.js.map +1 -1
  78. package/dist/internal/events/coreEventManager.d.ts +7 -10
  79. package/dist/internal/events/coreEventManager.js +19 -36
  80. package/dist/internal/events/coreEventManager.js.map +1 -1
  81. package/dist/internal/events/coreEventManager.test.d.ts +1 -0
  82. package/dist/internal/events/coreEventManager.test.js +87 -0
  83. package/dist/internal/events/coreEventManager.test.js.map +1 -0
  84. package/dist/internal/events/eventManager.d.ts +11 -36
  85. package/dist/internal/events/eventManager.js +59 -105
  86. package/dist/internal/events/eventManager.js.map +1 -1
  87. package/dist/internal/events/eventManager.test.js +167 -82
  88. package/dist/internal/events/eventManager.test.js.map +1 -1
  89. package/dist/internal/events/index.d.ts +13 -33
  90. package/dist/internal/events/index.js +56 -72
  91. package/dist/internal/events/index.js.map +1 -1
  92. package/dist/internal/events/interface.d.ts +59 -14
  93. package/dist/internal/events/interface.js +13 -3
  94. package/dist/internal/events/interface.js.map +1 -1
  95. package/dist/internal/events/volumeEventManager.d.ts +7 -17
  96. package/dist/internal/events/volumeEventManager.js +58 -45
  97. package/dist/internal/events/volumeEventManager.js.map +1 -1
  98. package/dist/internal/events/volumeEventManager.test.d.ts +1 -0
  99. package/dist/internal/events/volumeEventManager.test.js +203 -0
  100. package/dist/internal/events/volumeEventManager.test.js.map +1 -0
  101. package/dist/internal/nodes/apiService.d.ts +2 -2
  102. package/dist/internal/nodes/apiService.js +16 -6
  103. package/dist/internal/nodes/apiService.js.map +1 -1
  104. package/dist/internal/nodes/apiService.test.js +30 -8
  105. package/dist/internal/nodes/apiService.test.js.map +1 -1
  106. package/dist/internal/nodes/cache.d.ts +10 -1
  107. package/dist/internal/nodes/cache.js +18 -0
  108. package/dist/internal/nodes/cache.js.map +1 -1
  109. package/dist/internal/nodes/cache.test.js +1 -0
  110. package/dist/internal/nodes/cache.test.js.map +1 -1
  111. package/dist/internal/nodes/cryptoService.d.ts +1 -1
  112. package/dist/internal/nodes/cryptoService.js.map +1 -1
  113. package/dist/internal/nodes/cryptoService.test.js +34 -0
  114. package/dist/internal/nodes/cryptoService.test.js.map +1 -1
  115. package/dist/internal/nodes/events.d.ts +7 -83
  116. package/dist/internal/nodes/events.js +43 -217
  117. package/dist/internal/nodes/events.js.map +1 -1
  118. package/dist/internal/nodes/events.test.js +27 -277
  119. package/dist/internal/nodes/events.test.js.map +1 -1
  120. package/dist/internal/nodes/index.d.ts +3 -4
  121. package/dist/internal/nodes/index.js +5 -5
  122. package/dist/internal/nodes/index.js.map +1 -1
  123. package/dist/internal/nodes/interface.d.ts +3 -1
  124. package/dist/internal/nodes/nodesAccess.d.ts +15 -0
  125. package/dist/internal/nodes/nodesAccess.js +65 -7
  126. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  127. package/dist/internal/nodes/nodesAccess.test.js +132 -93
  128. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  129. package/dist/internal/nodes/nodesManagement.d.ts +1 -3
  130. package/dist/internal/nodes/nodesManagement.js +12 -26
  131. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  132. package/dist/internal/nodes/nodesManagement.test.js +35 -14
  133. package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
  134. package/dist/internal/shares/cache.d.ts +2 -0
  135. package/dist/internal/shares/cache.js +2 -0
  136. package/dist/internal/shares/cache.js.map +1 -1
  137. package/dist/internal/shares/manager.d.ts +1 -0
  138. package/dist/internal/shares/manager.js +3 -0
  139. package/dist/internal/shares/manager.js.map +1 -1
  140. package/dist/internal/sharing/apiService.js +20 -2
  141. package/dist/internal/sharing/apiService.js.map +1 -1
  142. package/dist/internal/sharing/cryptoService.js +1 -0
  143. package/dist/internal/sharing/cryptoService.js.map +1 -1
  144. package/dist/internal/sharing/events.d.ts +23 -55
  145. package/dist/internal/sharing/events.js +46 -138
  146. package/dist/internal/sharing/events.js.map +1 -1
  147. package/dist/internal/sharing/events.test.js +77 -180
  148. package/dist/internal/sharing/events.test.js.map +1 -1
  149. package/dist/internal/sharing/index.d.ts +4 -5
  150. package/dist/internal/sharing/index.js +5 -5
  151. package/dist/internal/sharing/index.js.map +1 -1
  152. package/dist/internal/sharing/interface.d.ts +3 -0
  153. package/dist/internal/sharing/sharingManagement.d.ts +2 -3
  154. package/dist/internal/sharing/sharingManagement.js +7 -9
  155. package/dist/internal/sharing/sharingManagement.js.map +1 -1
  156. package/dist/internal/sharing/sharingManagement.test.js +9 -39
  157. package/dist/internal/sharing/sharingManagement.test.js.map +1 -1
  158. package/dist/internal/upload/apiService.d.ts +2 -3
  159. package/dist/internal/upload/apiService.js +7 -4
  160. package/dist/internal/upload/apiService.js.map +1 -1
  161. package/dist/internal/upload/fileUploader.d.ts +49 -53
  162. package/dist/internal/upload/fileUploader.js +91 -395
  163. package/dist/internal/upload/fileUploader.js.map +1 -1
  164. package/dist/internal/upload/fileUploader.test.js +38 -292
  165. package/dist/internal/upload/fileUploader.test.js.map +1 -1
  166. package/dist/internal/upload/index.d.ts +5 -5
  167. package/dist/internal/upload/index.js +23 -44
  168. package/dist/internal/upload/index.js.map +1 -1
  169. package/dist/internal/upload/interface.d.ts +2 -0
  170. package/dist/internal/upload/manager.d.ts +6 -6
  171. package/dist/internal/upload/manager.js +32 -66
  172. package/dist/internal/upload/manager.js.map +1 -1
  173. package/dist/internal/upload/manager.test.js +100 -117
  174. package/dist/internal/upload/manager.test.js.map +1 -1
  175. package/dist/internal/upload/streamUploader.d.ts +62 -0
  176. package/dist/internal/upload/streamUploader.js +440 -0
  177. package/dist/internal/upload/streamUploader.js.map +1 -0
  178. package/dist/internal/upload/streamUploader.test.d.ts +1 -0
  179. package/dist/internal/upload/streamUploader.test.js +358 -0
  180. package/dist/internal/upload/streamUploader.test.js.map +1 -0
  181. package/dist/protonDriveClient.d.ts +22 -165
  182. package/dist/protonDriveClient.js +27 -191
  183. package/dist/protonDriveClient.js.map +1 -1
  184. package/dist/protonDrivePhotosClient.js +3 -2
  185. package/dist/protonDrivePhotosClient.js.map +1 -1
  186. package/package.json +4 -4
  187. package/src/cache/index.ts +1 -0
  188. package/src/cache/memoryCache.ts +1 -1
  189. package/src/cache/nullCache.ts +38 -0
  190. package/src/config.ts +17 -2
  191. package/src/crypto/openPGPCrypto.ts +2 -0
  192. package/src/diagnostic/eventsGenerator.ts +48 -0
  193. package/src/diagnostic/httpClient.ts +80 -0
  194. package/src/diagnostic/index.ts +38 -0
  195. package/src/diagnostic/integrityVerificationStream.ts +56 -0
  196. package/src/diagnostic/interface.ts +158 -0
  197. package/src/diagnostic/sdkDiagnostic.ts +238 -0
  198. package/src/diagnostic/sdkDiagnosticFull.ts +40 -0
  199. package/src/diagnostic/telemetry.ts +71 -0
  200. package/src/diagnostic/zipGenerators.test.ts +177 -0
  201. package/src/diagnostic/zipGenerators.ts +70 -0
  202. package/src/errors.ts +13 -4
  203. package/src/interface/config.ts +28 -0
  204. package/src/interface/download.ts +2 -2
  205. package/src/interface/events.ts +66 -21
  206. package/src/interface/httpClient.ts +0 -16
  207. package/src/interface/index.ts +9 -5
  208. package/src/interface/nodes.ts +32 -12
  209. package/src/interface/sharing.ts +1 -0
  210. package/src/interface/upload.ts +59 -3
  211. package/src/internal/apiService/driveTypes.ts +1341 -465
  212. package/src/internal/apiService/errors.ts +3 -2
  213. package/src/internal/apiService/transformers.ts +2 -0
  214. package/src/internal/asyncIteratorMap.test.ts +150 -0
  215. package/src/internal/asyncIteratorMap.ts +64 -0
  216. package/src/internal/download/apiService.ts +11 -8
  217. package/src/internal/download/fileDownloader.ts +2 -2
  218. package/src/internal/events/apiService.ts +25 -28
  219. package/src/internal/events/coreEventManager.test.ts +101 -0
  220. package/src/internal/events/coreEventManager.ts +20 -45
  221. package/src/internal/events/eventManager.test.ts +201 -88
  222. package/src/internal/events/eventManager.ts +69 -115
  223. package/src/internal/events/index.ts +54 -84
  224. package/src/internal/events/interface.ts +70 -15
  225. package/src/internal/events/volumeEventManager.test.ts +243 -0
  226. package/src/internal/events/volumeEventManager.ts +55 -53
  227. package/src/internal/nodes/apiService.test.ts +36 -7
  228. package/src/internal/nodes/apiService.ts +19 -7
  229. package/src/internal/nodes/cache.test.ts +1 -0
  230. package/src/internal/nodes/cache.ts +21 -2
  231. package/src/internal/nodes/cryptoService.test.ts +38 -0
  232. package/src/internal/nodes/cryptoService.ts +1 -1
  233. package/src/internal/nodes/events.test.ts +29 -335
  234. package/src/internal/nodes/events.ts +45 -253
  235. package/src/internal/nodes/index.ts +6 -8
  236. package/src/internal/nodes/interface.ts +6 -3
  237. package/src/internal/nodes/nodesAccess.test.ts +133 -91
  238. package/src/internal/nodes/nodesAccess.ts +70 -8
  239. package/src/internal/nodes/nodesManagement.test.ts +39 -15
  240. package/src/internal/nodes/nodesManagement.ts +12 -30
  241. package/src/internal/shares/cache.ts +4 -2
  242. package/src/internal/shares/manager.ts +9 -5
  243. package/src/internal/sharing/apiService.ts +25 -2
  244. package/src/internal/sharing/cache.ts +1 -1
  245. package/src/internal/sharing/cryptoService.ts +1 -0
  246. package/src/internal/sharing/events.test.ts +89 -195
  247. package/src/internal/sharing/events.ts +42 -156
  248. package/src/internal/sharing/index.ts +6 -9
  249. package/src/internal/sharing/interface.ts +6 -2
  250. package/src/internal/sharing/sharingManagement.test.ts +10 -40
  251. package/src/internal/sharing/sharingManagement.ts +7 -11
  252. package/src/internal/upload/apiService.ts +5 -6
  253. package/src/internal/upload/fileUploader.test.ts +46 -376
  254. package/src/internal/upload/fileUploader.ts +114 -494
  255. package/src/internal/upload/index.ts +30 -54
  256. package/src/internal/upload/interface.ts +2 -0
  257. package/src/internal/upload/manager.test.ts +107 -124
  258. package/src/internal/upload/manager.ts +48 -80
  259. package/src/internal/upload/streamUploader.test.ts +468 -0
  260. package/src/internal/upload/streamUploader.ts +550 -0
  261. package/src/protonDriveClient.ts +80 -248
  262. package/src/protonDrivePhotosClient.ts +4 -3
  263. package/dist/internal/events/cache.d.ts +0 -28
  264. package/dist/internal/events/cache.js +0 -67
  265. package/dist/internal/events/cache.js.map +0 -1
  266. package/dist/internal/events/cache.test.js +0 -43
  267. package/dist/internal/events/cache.test.js.map +0 -1
  268. package/dist/internal/nodes/index.test.js +0 -112
  269. package/dist/internal/nodes/index.test.js.map +0 -1
  270. package/src/internal/events/cache.test.ts +0 -47
  271. package/src/internal/events/cache.ts +0 -80
  272. package/src/internal/nodes/index.test.ts +0 -135
  273. /package/dist/{internal/events/cache.test.d.ts → diagnostic/zipGenerators.test.d.ts} +0 -0
  274. /package/dist/internal/{nodes/index.test.d.ts → asyncIteratorMap.test.d.ts} +0 -0
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.UploadManager = void 0;
4
4
  const ttag_1 = require("ttag");
5
- const interface_1 = require("../../interface");
6
5
  const errors_1 = require("../../errors");
7
6
  const nodes_1 = require("../nodes");
7
+ const uids_1 = require("../uids");
8
8
  /**
9
9
  * UploadManager is responsible for creating and deleting draft nodes
10
10
  * on the server. It handles the creation of draft nodes, including
@@ -14,17 +14,18 @@ class UploadManager {
14
14
  apiService;
15
15
  cryptoService;
16
16
  nodesService;
17
- nodesEvents;
17
+ clientUid;
18
18
  logger;
19
- constructor(telemetry, apiService, cryptoService, nodesService, nodesEvents) {
19
+ constructor(telemetry, apiService, cryptoService, nodesService, clientUid) {
20
20
  this.apiService = apiService;
21
21
  this.cryptoService = cryptoService;
22
22
  this.nodesService = nodesService;
23
- this.nodesEvents = nodesEvents;
23
+ this.clientUid = clientUid;
24
24
  this.logger = telemetry.getLogger('upload');
25
25
  this.apiService = apiService;
26
26
  this.cryptoService = cryptoService;
27
27
  this.nodesService = nodesService;
28
+ this.clientUid = clientUid;
28
29
  }
29
30
  async createDraftNode(parentFolderUid, name, metadata) {
30
31
  const parentKeys = await this.nodesService.getNodeKeys(parentFolderUid);
@@ -62,7 +63,6 @@ class UploadManager {
62
63
  base64ContentKeyPacket: generatedNodeCrypto.contentKey.encrypted.base64ContentKeyPacket,
63
64
  armoredContentKeyPacketSignature: generatedNodeCrypto.contentKey.encrypted.armoredContentKeyPacketSignature,
64
65
  signatureEmail: generatedNodeCrypto.signatureAddress.email,
65
- // FIXME: client UID
66
66
  });
67
67
  return result;
68
68
  }
@@ -70,18 +70,24 @@ class UploadManager {
70
70
  if (error instanceof errors_1.ValidationError) {
71
71
  if (error.code === 2500 /* ErrorCode.ALREADY_EXISTS */) {
72
72
  this.logger.info(`Node with given name already exists`);
73
- const availableName = await this.findAvailableName(parentFolderUid, parentHashKey, name, generatedNodeCrypto.encryptedNode.hash);
73
+ const typedDetails = error.details;
74
+ // If the client doesn't specify the client UID, it should
75
+ // never be considered own draft.
76
+ const isOwnDraftConflict = (typedDetails?.ConflictDraftRevisionID &&
77
+ this.clientUid &&
78
+ typedDetails?.ConflictDraftClientUID === this.clientUid);
74
79
  // If there is existing draft created by this client,
75
80
  // automatically delete it and try to create a new one
76
81
  // with the same name again.
77
- if (availableName.existingDraftNodeUid) {
82
+ if (typedDetails?.ConflictDraftRevisionID && (isOwnDraftConflict || metadata.overrideExistingDraftByOtherClient)) {
83
+ const existingDraftNodeUid = (0, uids_1.makeNodeUid)((0, uids_1.splitNodeUid)(parentFolderUid).volumeId, typedDetails.ConflictLinkID);
78
84
  let deleteFailed = false;
79
85
  try {
80
- this.logger.warn(`Deleting existing draft node ${availableName.existingDraftNodeUid}`);
81
- await this.apiService.deleteDraft(availableName.existingDraftNodeUid);
86
+ this.logger.warn(`Deleting existing draft node ${existingDraftNodeUid} by ${typedDetails.ConflictDraftClientUID}`);
87
+ await this.apiService.deleteDraft(existingDraftNodeUid);
82
88
  }
83
89
  catch (deleteDraftError) {
84
- // Do not throw, let return the next available name to the client.
90
+ // Do not throw, let throw the conflict error.
85
91
  deleteFailed = true;
86
92
  this.logger.error('Failed to delete existing draft node', deleteDraftError);
87
93
  }
@@ -89,15 +95,23 @@ class UploadManager {
89
95
  return this.createDraftOnAPI(parentFolderUid, parentHashKey, name, metadata, generatedNodeCrypto);
90
96
  }
91
97
  }
98
+ if (isOwnDraftConflict) {
99
+ this.logger.warn(`Existing draft conflict by another client ${typedDetails.ConflictDraftClientUID}`);
100
+ }
101
+ const existingNodeUid = typedDetails ? (0, uids_1.makeNodeUid)((0, uids_1.splitNodeUid)(parentFolderUid).volumeId, typedDetails.ConflictLinkID) : undefined;
92
102
  // If there is existing node, return special error
93
103
  // that includes the available name the client can use.
94
- throw new errors_1.NodeAlreadyExistsValidationError(error.message, error.code, availableName.availableName);
104
+ throw new errors_1.NodeAlreadyExistsValidationError(error.message, error.code, existingNodeUid, !!typedDetails?.ConflictDraftRevisionID);
95
105
  }
96
106
  }
97
107
  throw error;
98
108
  }
99
109
  }
100
- async findAvailableName(parentFolderUid, parentHashKey, name, nameHash) {
110
+ async findAvailableName(parentFolderUid, name) {
111
+ const { hashKey: parentHashKey } = await this.nodesService.getNodeKeys(parentFolderUid);
112
+ if (!parentHashKey) {
113
+ throw new errors_1.ValidationError((0, ttag_1.c)('Error').t `Creating files in non-folders is not allowed`);
114
+ }
101
115
  const [namePart, extension] = splitExtension(name);
102
116
  const batchSize = 10;
103
117
  let startIndex = 1;
@@ -107,12 +121,7 @@ class UploadManager {
107
121
  namesToCheck.push(joinNameAndExtension(namePart, i, extension));
108
122
  }
109
123
  const hashesToCheck = await this.cryptoService.generateNameHashes(parentHashKey, namesToCheck);
110
- const { pendingHashes, availalbleHashes } = await this.apiService.checkAvailableHashes(parentFolderUid, [
111
- ...hashesToCheck.map(({ hash }) => hash),
112
- // Adding the current name hash to get the existing draft
113
- // node UID if it exists.
114
- ...startIndex ? [nameHash] : [],
115
- ]);
124
+ const { availalbleHashes } = await this.apiService.checkAvailableHashes(parentFolderUid, hashesToCheck.map(({ hash }) => hash));
116
125
  if (!availalbleHashes.length) {
117
126
  startIndex += batchSize;
118
127
  continue;
@@ -121,12 +130,7 @@ class UploadManager {
121
130
  if (!availableHash) {
122
131
  throw Error('Backend returned unexpected hash');
123
132
  }
124
- // FIXME: use client UID to ensure its own pending draft
125
- const ownPendingHash = pendingHashes.find(({ hash }) => hash === nameHash);
126
- return {
127
- availableName: availableHash.name,
128
- existingDraftNodeUid: ownPendingHash?.nodeUid,
129
- };
133
+ return availableHash.name;
130
134
  }
131
135
  }
132
136
  async deleteDraftNode(nodeUid) {
@@ -172,51 +176,13 @@ class UploadManager {
172
176
  this.logger.error('Failed to delete draft node revision', error);
173
177
  }
174
178
  }
175
- async commitDraft(nodeRevisionDraft, manifest, metadata, extendedAttributes, encryptedSize) {
179
+ async commitDraft(nodeRevisionDraft, manifest, _metadata, extendedAttributes) {
176
180
  const generatedExtendedAttributes = (0, nodes_1.generateFileExtendedAttributes)(extendedAttributes);
177
181
  const nodeCommitCrypto = await this.cryptoService.commitFile(nodeRevisionDraft.nodeKeys, manifest, generatedExtendedAttributes);
178
182
  await this.apiService.commitDraftRevision(nodeRevisionDraft.nodeRevisionUid, nodeCommitCrypto);
179
- const activeRevision = (0, interface_1.resultOk)({
180
- uid: nodeRevisionDraft.nodeRevisionUid,
181
- state: interface_1.RevisionState.Active,
182
- creationTime: new Date(),
183
- storageSize: encryptedSize,
184
- contentAuthor: (0, interface_1.resultOk)(nodeCommitCrypto.signatureEmail),
185
- claimedSize: metadata.expectedSize,
186
- claimedModificationTime: extendedAttributes.modificationTime,
187
- claimedDigests: {
188
- sha1: extendedAttributes.digests?.sha1,
189
- },
190
- });
191
- if (nodeRevisionDraft.newNodeInfo) {
192
- const node = {
193
- // Internal metadata
194
- hash: nodeRevisionDraft.newNodeInfo.hash,
195
- encryptedName: nodeRevisionDraft.newNodeInfo.encryptedName,
196
- // Basic node metadata
197
- uid: nodeRevisionDraft.nodeUid,
198
- parentUid: nodeRevisionDraft.newNodeInfo.parentUid,
199
- type: interface_1.NodeType.File,
200
- mediaType: metadata.mediaType,
201
- creationTime: new Date(),
202
- totalStorageSize: encryptedSize,
203
- // Share node metadata
204
- isShared: false,
205
- directMemberRole: interface_1.MemberRole.Inherited,
206
- // Decrypted metadata
207
- isStale: false,
208
- keyAuthor: (0, interface_1.resultOk)(nodeRevisionDraft.nodeKeys.signatureAddress.email),
209
- nameAuthor: (0, interface_1.resultOk)(nodeRevisionDraft.nodeKeys.signatureAddress.email),
210
- name: (0, interface_1.resultOk)(nodeRevisionDraft.newNodeInfo.name),
211
- activeRevision,
212
- };
213
- await this.nodesEvents.nodeCreated(node);
214
- }
215
- else {
216
- await this.nodesEvents.nodeUpdated({
217
- uid: nodeRevisionDraft.nodeUid,
218
- activeRevision,
219
- });
183
+ const node = await this.nodesService.getNode(nodeRevisionDraft.nodeUid);
184
+ if (node.parentUid) {
185
+ await this.nodesService.notifyChildCreated(node.parentUid);
220
186
  }
221
187
  }
222
188
  }
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/internal/upload/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/internal/upload/manager.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const errors_1 = require("../../errors");
4
- const interface_1 = require("../../interface");
5
4
  const telemetry_1 = require("../../tests/telemetry");
6
5
  const manager_1 = require("./manager");
7
6
  describe("UploadManager", () => {
@@ -9,8 +8,8 @@ describe("UploadManager", () => {
9
8
  let apiService;
10
9
  let cryptoService;
11
10
  let nodesService;
12
- let nodesEvents;
13
11
  let manager;
12
+ const clientUid = 'clientUid';
14
13
  beforeEach(() => {
15
14
  telemetry = (0, telemetry_1.getMockTelemetry)();
16
15
  // @ts-expect-error No need to implement all methods for mocking
@@ -68,8 +67,11 @@ describe("UploadManager", () => {
68
67
  armoredExtendedAttributes: "newNode:armoredExtendedAttributes",
69
68
  }),
70
69
  };
71
- // @ts-expect-error No need to implement all methods for mocking
72
70
  nodesService = {
71
+ getNode: jest.fn(async (nodeUid) => ({
72
+ uid: nodeUid,
73
+ parentUid: 'parentUid',
74
+ })),
73
75
  getNodeKeys: jest.fn().mockResolvedValue({
74
76
  hashKey: 'parentNode:hashKey',
75
77
  key: 'parentNode:nodekey',
@@ -78,12 +80,9 @@ describe("UploadManager", () => {
78
80
  email: "signatureEmail",
79
81
  addressId: "addressId",
80
82
  }),
83
+ notifyChildCreated: jest.fn(async (nodeUid) => { return; }),
81
84
  };
82
- nodesEvents = {
83
- nodeCreated: jest.fn(),
84
- nodeUpdated: jest.fn(),
85
- };
86
- manager = new manager_1.UploadManager(telemetry, apiService, cryptoService, nodesService, nodesEvents);
85
+ manager = new manager_1.UploadManager(telemetry, apiService, cryptoService, nodesService, clientUid);
87
86
  });
88
87
  describe("createDraftNode", () => {
89
88
  it("should fail to create node in non-folder parent", async () => {
@@ -125,38 +124,24 @@ describe("UploadManager", () => {
125
124
  armoredContentKeyPacketSignature: "newNode:armoredContentKeyPacketSignature",
126
125
  signatureEmail: "signatureEmail",
127
126
  });
128
- expect(apiService.checkAvailableHashes).not.toHaveBeenCalled();
129
127
  });
130
- it("should handle existing draft by deleting and trying again", async () => {
131
- let hashChecked = false;
128
+ it("should delete existing draft and trying again", async () => {
129
+ let firstCall = true;
132
130
  apiService.createDraft = jest.fn().mockImplementation(() => {
133
- if (!hashChecked) {
134
- throw new errors_1.ValidationError("Draft already exists", 2500 /* ErrorCode.ALREADY_EXISTS */);
131
+ if (firstCall) {
132
+ firstCall = false;
133
+ throw new errors_1.ValidationError("Draft already exists", 2500 /* ErrorCode.ALREADY_EXISTS */, {
134
+ ConflictLinkID: "existingLinkId",
135
+ ConflictDraftRevisionID: "existingDraftRevisionId",
136
+ ConflictDraftClientUID: clientUid,
137
+ });
135
138
  }
136
139
  return {
137
140
  nodeUid: "newNode:nodeUid",
138
141
  nodeRevisionUid: "newNode:nodeRevisionUid",
139
142
  };
140
143
  });
141
- apiService.checkAvailableHashes = jest.fn().mockImplementation(() => {
142
- if (!hashChecked) {
143
- hashChecked = true;
144
- return {
145
- availalbleHashes: ["name1Hash"],
146
- pendingHashes: [{
147
- hash: "newNode:hash",
148
- nodeUid: "nodeUidToDelete"
149
- }],
150
- };
151
- }
152
- return {
153
- availalbleHashes: ["name1Hash"],
154
- pendingHashes: [],
155
- };
156
- });
157
- const result = await manager.createDraftNode("parentUid", "name", {});
158
- expect(apiService.checkAvailableHashes).toHaveBeenCalledTimes(1);
159
- expect(apiService.deleteDraft).toHaveBeenCalledTimes(1);
144
+ const result = await manager.createDraftNode("volumeId~parentUid", "name", {});
160
145
  expect(result).toEqual({
161
146
  nodeUid: "newNode:nodeUid",
162
147
  nodeRevisionUid: "newNode:nodeRevisionUid",
@@ -168,85 +153,117 @@ describe("UploadManager", () => {
168
153
  },
169
154
  },
170
155
  newNodeInfo: {
171
- parentUid: "parentUid",
156
+ parentUid: "volumeId~parentUid",
172
157
  name: "name",
173
158
  encryptedName: "newNode:encryptedName",
174
159
  hash: "newNode:hash",
175
160
  },
176
161
  });
177
- expect(apiService.deleteDraft).toHaveBeenCalledWith("nodeUidToDelete");
162
+ expect(apiService.deleteDraft).toHaveBeenCalledTimes(1);
163
+ expect(apiService.deleteDraft).toHaveBeenCalledWith("volumeId~existingLinkId");
178
164
  });
179
- it("should handle error when deleting existing draft", async () => {
180
- let hashChecked = false;
165
+ it("should not delete existing draft if client UID does not match", async () => {
166
+ let firstCall = true;
181
167
  apiService.createDraft = jest.fn().mockImplementation(() => {
182
- if (!hashChecked) {
183
- throw new errors_1.ValidationError("Draft already exists", 2500 /* ErrorCode.ALREADY_EXISTS */);
168
+ if (firstCall) {
169
+ firstCall = false;
170
+ throw new errors_1.ValidationError("Draft already exists", 2500 /* ErrorCode.ALREADY_EXISTS */, {
171
+ ConflictLinkID: "existingLinkId",
172
+ ConflictDraftRevisionID: "existingDraftRevisionId",
173
+ ConflictDraftClientUID: "anotherClientUid",
174
+ });
184
175
  }
185
176
  return {
186
177
  nodeUid: "newNode:nodeUid",
187
178
  nodeRevisionUid: "newNode:nodeRevisionUid",
188
179
  };
189
180
  });
190
- apiService.deleteDraft = jest.fn().mockImplementation(() => {
191
- throw new Error("Failed to delete draft");
192
- });
193
- apiService.checkAvailableHashes = jest.fn().mockImplementation(() => {
194
- if (!hashChecked) {
195
- hashChecked = true;
196
- return {
197
- availalbleHashes: ["name1Hash"],
198
- pendingHashes: [{
199
- hash: "newNode:hash",
200
- nodeUid: "nodeUidToDelete"
201
- }],
202
- };
181
+ const promise = manager.createDraftNode("volumeId~parentUid", "name", {});
182
+ try {
183
+ await promise;
184
+ }
185
+ catch (error) {
186
+ expect(error.message).toBe("Draft already exists");
187
+ expect(error.ongoingUploadByOtherClient).toBe(true);
188
+ }
189
+ expect(apiService.deleteDraft).not.toHaveBeenCalled();
190
+ });
191
+ it("should not delete existing draft if client UID is not set", async () => {
192
+ const clientUid = undefined;
193
+ manager = new manager_1.UploadManager(telemetry, apiService, cryptoService, nodesService, clientUid);
194
+ let firstCall = true;
195
+ apiService.createDraft = jest.fn().mockImplementation(() => {
196
+ if (firstCall) {
197
+ firstCall = false;
198
+ throw new errors_1.ValidationError("Draft already exists", 2500 /* ErrorCode.ALREADY_EXISTS */, {
199
+ ConflictLinkID: "existingLinkId",
200
+ ConflictDraftRevisionID: "existingDraftRevisionId",
201
+ ConflictDraftClientUID: clientUid,
202
+ });
203
203
  }
204
204
  return {
205
- availalbleHashes: ["name1Hash"],
206
- pendingHashes: [],
205
+ nodeUid: "newNode:nodeUid",
206
+ nodeRevisionUid: "newNode:nodeRevisionUid",
207
207
  };
208
208
  });
209
- const result = manager.createDraftNode("parentUid", "name", {});
210
- await expect(result).rejects.toThrow("Draft already exists");
211
- expect(apiService.checkAvailableHashes).toHaveBeenCalledTimes(1);
212
- expect(apiService.deleteDraft).toHaveBeenCalledTimes(1);
209
+ const promise = manager.createDraftNode("volumeId~parentUid", "name", {});
210
+ try {
211
+ await promise;
212
+ }
213
+ catch (error) {
214
+ expect(error.message).toBe("Draft already exists");
215
+ expect(error.ongoingUploadByOtherClient).toBe(true);
216
+ }
217
+ expect(apiService.deleteDraft).not.toHaveBeenCalled();
213
218
  });
214
- it("should handle existing name by providing available name", async () => {
215
- let count = 0;
219
+ it("should handle error when deleting existing draft", async () => {
220
+ let firstCall = true;
216
221
  apiService.createDraft = jest.fn().mockImplementation(() => {
217
- if (count === 0) {
218
- count++;
219
- throw new errors_1.ValidationError("Draft already exists", 2500 /* ErrorCode.ALREADY_EXISTS */);
222
+ if (firstCall) {
223
+ firstCall = false;
224
+ throw new errors_1.ValidationError("Draft already exists", 2500 /* ErrorCode.ALREADY_EXISTS */, {
225
+ ConflictLinkID: "existingLinkId",
226
+ ConflictDraftRevisionID: "existingDraftRevisionId",
227
+ ConflictDraftClientUID: clientUid,
228
+ });
220
229
  }
221
230
  return {
222
231
  nodeUid: "newNode:nodeUid",
223
232
  nodeRevisionUid: "newNode:nodeRevisionUid",
224
233
  };
225
234
  });
226
- const result = manager.createDraftNode("parentUid", "name", {});
227
- await expect(result).rejects.toThrow("Draft already exists");
228
- expect(apiService.checkAvailableHashes).toHaveBeenCalledTimes(1);
235
+ apiService.deleteDraft = jest.fn().mockImplementation(() => {
236
+ throw new Error("Failed to delete draft");
237
+ });
238
+ const result = manager.createDraftNode("volumeId~parentUid", "name", {});
229
239
  try {
230
240
  await result;
231
241
  }
232
242
  catch (error) {
233
- expect(error.availableName).toBe("name1");
243
+ expect(error.message).toBe("Draft already exists");
244
+ expect(error.existingNodeUid).toBe("volumeId~existingLinkId");
234
245
  }
246
+ expect(apiService.deleteDraft).toHaveBeenCalledTimes(1);
235
247
  });
236
- it("should handle existing name by providing available name when there is too many conflicts", async () => {
237
- let hashChecked = false;
238
- apiService.createDraft = jest.fn().mockImplementation(() => {
239
- if (!hashChecked) {
240
- throw new errors_1.ValidationError("Draft already exists", 2500 /* ErrorCode.ALREADY_EXISTS */);
241
- }
248
+ });
249
+ describe("findAvailableName", () => {
250
+ it("should find available name", async () => {
251
+ apiService.checkAvailableHashes = jest.fn().mockImplementation(() => {
242
252
  return {
243
- nodeUid: "newNode:nodeUid",
244
- nodeRevisionUid: "newNode:nodeRevisionUid",
253
+ availalbleHashes: ["name3Hash"],
254
+ pendingHashes: [],
245
255
  };
246
256
  });
257
+ const result = await manager.findAvailableName("parentUid", "name");
258
+ expect(result).toBe("name3");
259
+ expect(apiService.checkAvailableHashes).toHaveBeenCalledTimes(1);
260
+ expect(apiService.checkAvailableHashes).toHaveBeenCalledWith("parentUid", ["name1Hash", "name2Hash", "name3Hash"]);
261
+ });
262
+ it("should find available name with multiple pages", async () => {
263
+ let firstCall = false;
247
264
  apiService.checkAvailableHashes = jest.fn().mockImplementation(() => {
248
- if (!hashChecked) {
249
- hashChecked = true;
265
+ if (!firstCall) {
266
+ firstCall = true;
250
267
  return {
251
268
  // First page has no available hashes
252
269
  availalbleHashes: [],
@@ -258,15 +275,10 @@ describe("UploadManager", () => {
258
275
  pendingHashes: [],
259
276
  };
260
277
  });
261
- const result = manager.createDraftNode("parentUid", "name", {});
262
- await expect(result).rejects.toThrow("Draft already exists");
278
+ const result = await manager.findAvailableName("parentUid", "name");
279
+ expect(result).toBe("name3");
263
280
  expect(apiService.checkAvailableHashes).toHaveBeenCalledTimes(2);
264
- try {
265
- await result;
266
- }
267
- catch (error) {
268
- expect(error.availableName).toBe("name3");
269
- }
281
+ expect(apiService.checkAvailableHashes).toHaveBeenCalledWith("parentUid", ["name1Hash", "name2Hash", "name3Hash"]);
270
282
  });
271
283
  });
272
284
  describe("commit draft", () => {
@@ -295,27 +307,10 @@ describe("UploadManager", () => {
295
307
  }
296
308
  };
297
309
  it("should commit revision draft", async () => {
298
- await manager.commitDraft(nodeRevisionDraft, manifest, metadata, extendedAttributes, 1234567);
310
+ await manager.commitDraft(nodeRevisionDraft, manifest, metadata, extendedAttributes);
299
311
  expect(cryptoService.commitFile).toHaveBeenCalledWith(nodeRevisionDraft.nodeKeys, manifest, expect.anything());
300
312
  expect(apiService.commitDraftRevision).toHaveBeenCalledWith(nodeRevisionDraft.nodeRevisionUid, expect.anything());
301
- expect(nodesEvents.nodeUpdated).toHaveBeenCalledWith({
302
- uid: "newNode:nodeUid",
303
- activeRevision: {
304
- ok: true,
305
- value: {
306
- uid: "newNode:nodeRevisionUid",
307
- state: interface_1.RevisionState.Active,
308
- creationTime: expect.any(Date),
309
- contentAuthor: { ok: true, value: "signatureEmail" },
310
- storageSize: 1234567,
311
- claimedSize: 123456,
312
- claimedModificationTime: extendedAttributes.modificationTime,
313
- claimedDigests: {
314
- sha1: "sha1",
315
- },
316
- },
317
- },
318
- });
313
+ expect(nodesService.notifyChildCreated).toHaveBeenCalledWith("parentUid");
319
314
  });
320
315
  it("should commit node draft", async () => {
321
316
  const nodeRevisionDraftWithNewNodeInfo = {
@@ -327,22 +322,10 @@ describe("UploadManager", () => {
327
322
  hash: "newNode:hash",
328
323
  }
329
324
  };
330
- await manager.commitDraft(nodeRevisionDraftWithNewNodeInfo, manifest, metadata, extendedAttributes, 1234567);
325
+ await manager.commitDraft(nodeRevisionDraftWithNewNodeInfo, manifest, metadata, extendedAttributes);
331
326
  expect(cryptoService.commitFile).toHaveBeenCalledWith(nodeRevisionDraft.nodeKeys, manifest, expect.anything());
332
327
  expect(apiService.commitDraftRevision).toHaveBeenCalledWith(nodeRevisionDraft.nodeRevisionUid, expect.anything());
333
- expect(nodesEvents.nodeCreated).toHaveBeenCalledWith(expect.objectContaining({
334
- uid: "newNode:nodeUid",
335
- parentUid: "parentUid",
336
- type: interface_1.NodeType.File,
337
- totalStorageSize: 1234567,
338
- activeRevision: {
339
- ok: true,
340
- value: expect.objectContaining({
341
- uid: "newNode:nodeRevisionUid",
342
- storageSize: 1234567,
343
- }),
344
- },
345
- }));
328
+ expect(nodesService.notifyChildCreated).toHaveBeenCalledWith("parentUid");
346
329
  });
347
330
  });
348
331
  });
@@ -1 +1 @@
1
- {"version":3,"file":"manager.test.js","sourceRoot":"","sources":["../../../src/internal/upload/manager.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.test.js","sourceRoot":"","sources":["../../../src/internal/upload/manager.test.ts"],"names":[],"mappings":";;AAAA,yCAA+C;AAE/C,qDAAyD;AAKzD,uCAA0C;AAE1C,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC3B,IAAI,SAA+B,CAAC;IACpC,IAAI,UAA4B,CAAC;IACjC,IAAI,aAAkC,CAAC;IACvC,IAAI,YAA0B,CAAC;IAE/B,IAAI,OAAsB,CAAC;IAE3B,MAAM,SAAS,GAAG,WAAW,CAAC;IAE9B,UAAU,CAAC,GAAG,EAAE;QACZ,SAAS,GAAG,IAAA,4BAAgB,GAAE,CAAC;QAC/B,gEAAgE;QAChE,UAAU,GAAG;YACT,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;gBACrC,OAAO,EAAE,iBAAiB;gBAC1B,eAAe,EAAE,yBAAyB;aAC7C,CAAC;YACF,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE;YACtB,oBAAoB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;gBAC9C,gBAAgB,EAAE,CAAC,WAAW,CAAC;gBAC/B,aAAa,EAAE,EAAE;aACpB,CAAC;YACF,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE;SACjC,CAAA;QACD,gEAAgE;QAChE,aAAa,GAAG;YACZ,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;gBAC5C,QAAQ,EAAE;oBACN,SAAS,EAAE,EAAE,GAAG,EAAE,aAAa,EAAE;oBACjC,SAAS,EAAE;wBACP,UAAU,EAAE,oBAAoB;wBAChC,iBAAiB,EAAE,2BAA2B;wBAC9C,0BAA0B,EAAE,oCAAoC;qBACnE;iBACJ;gBACD,UAAU,EAAE;oBACR,SAAS,EAAE,EAAE,0BAA0B,EAAE,oCAAoC,EAAE;oBAC/E,SAAS,EAAE;wBACP,sBAAsB,EAAE,gCAAgC;wBACxD,gCAAgC,EAAE,0CAA0C;qBAC/E;iBACJ;gBACD,aAAa,EAAE;oBACX,aAAa,EAAE,uBAAuB;oBACtC,IAAI,EAAE,cAAc;iBACvB;gBACD,gBAAgB,EAAE;oBACd,KAAK,EAAE,gBAAgB;iBAC1B;aACJ,CAAC;YACF,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC;oBAC7C,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,WAAW;iBACpB,EAAE;oBACC,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,WAAW;iBACpB,EAAE;oBACC,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,WAAW;iBACpB,CAAC,CAAC;YACH,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;gBACpC,wBAAwB,EAAE,kCAAkC;gBAC5D,cAAc,EAAE,gBAAgB;gBAChC,yBAAyB,EAAE,mCAAmC;aACjE,CAAC;SACL,CAAA;QACD,YAAY,GAAG;YACX,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE,CAAC,CAAC;gBACzC,GAAG,EAAE,OAAO;gBACZ,SAAS,EAAE,WAAW;aAEzB,CAAC,CAAC;YACH,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;gBACrC,OAAO,EAAE,oBAAoB;gBAC7B,GAAG,EAAE,oBAAoB;aAC5B,CAAC;YACF,mBAAmB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;gBAC7C,KAAK,EAAE,gBAAgB;gBACvB,SAAS,EAAE,WAAW;aACzB,CAAC;YACF,kBAAkB,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,OAAe,EAAE,EAAE,GAAG,OAAM,CAAC,CAAC,CAAC;SACrE,CAAA;QAED,OAAO,GAAG,IAAI,uBAAa,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;QAC7B,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;YAC7D,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YAE/E,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,EAAoB,CAAC,CAAC;YAClF,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACtC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE;gBAC9D,SAAS,EAAE,YAAY;gBACvB,YAAY,EAAE,MAAM;aACL,CAAC,CAAC;YAErB,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACnB,OAAO,EAAE,iBAAiB;gBAC1B,eAAe,EAAE,yBAAyB;gBAC1C,QAAQ,EAAE;oBACN,GAAG,EAAE,aAAa;oBAClB,0BAA0B,EAAE,oCAAoC;oBAChE,gBAAgB,EAAE;wBACd,KAAK,EAAE,gBAAgB;qBAC1B;iBACJ;gBACD,WAAW,EAAE;oBACT,SAAS,EAAE,WAAW;oBACtB,IAAI,EAAE,MAAM;oBACZ,aAAa,EAAE,uBAAuB;oBACtC,IAAI,EAAE,cAAc;iBACvB;aACJ,CAAC,CAAC;YACH,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE;gBAC7D,oBAAoB,EAAE,uBAAuB;gBAC7C,IAAI,EAAE,cAAc;gBACpB,SAAS,EAAE,YAAY;gBACvB,kBAAkB,EAAE,MAAM;gBAC1B,cAAc,EAAE,oBAAoB;gBACpC,qBAAqB,EAAE,2BAA2B;gBAClD,8BAA8B,EAAE,oCAAoC;gBACpE,sBAAsB,EAAE,gCAAgC;gBACxD,gCAAgC,EAAE,0CAA0C;gBAC5E,cAAc,EAAE,gBAAgB;aACnC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC3D,IAAI,SAAS,GAAG,IAAI,CAAC;YACrB,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE;gBACvD,IAAI,SAAS,EAAE,CAAC;oBACZ,SAAS,GAAG,KAAK,CAAC;oBAClB,MAAM,IAAI,wBAAe,CAAC,sBAAsB,uCAA4B;wBACxE,cAAc,EAAE,gBAAgB;wBAChC,uBAAuB,EAAE,yBAAyB;wBAClD,sBAAsB,EAAE,SAAS;qBACpC,CAAC,CAAC;gBACP,CAAC;gBACD,OAAO;oBACH,OAAO,EAAE,iBAAiB;oBAC1B,eAAe,EAAE,yBAAyB;iBAC7C,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,eAAe,CAAC,oBAAoB,EAAE,MAAM,EAAE,EAAoB,CAAC,CAAC;YAEjG,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;gBACnB,OAAO,EAAE,iBAAiB;gBAC1B,eAAe,EAAE,yBAAyB;gBAC1C,QAAQ,EAAE;oBACN,GAAG,EAAE,aAAa;oBAClB,0BAA0B,EAAE,oCAAoC;oBAChE,gBAAgB,EAAE;wBACd,KAAK,EAAE,gBAAgB;qBAC1B;iBACJ;gBACD,WAAW,EAAE;oBACT,SAAS,EAAE,oBAAoB;oBAC/B,IAAI,EAAE,MAAM;oBACZ,aAAa,EAAE,uBAAuB;oBACtC,IAAI,EAAE,cAAc;iBACvB;aACJ,CAAC,CAAC;YACH,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACxD,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;YAC3E,IAAI,SAAS,GAAG,IAAI,CAAC;YACrB,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE;gBACvD,IAAI,SAAS,EAAE,CAAC;oBACZ,SAAS,GAAG,KAAK,CAAC;oBAClB,MAAM,IAAI,wBAAe,CAAC,sBAAsB,uCAA4B;wBACxE,cAAc,EAAE,gBAAgB;wBAChC,uBAAuB,EAAE,yBAAyB;wBAClD,sBAAsB,EAAE,kBAAkB;qBAC7C,CAAC,CAAC;gBACP,CAAC;gBACD,OAAO;oBACH,OAAO,EAAE,iBAAiB;oBAC1B,eAAe,EAAE,yBAAyB;iBAC7C,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,oBAAoB,EAAE,MAAM,EAAE,EAAoB,CAAC,CAAC;YAE5F,IAAI,CAAC;gBACD,MAAM,OAAO,CAAC;YAClB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACnD,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;YACvE,MAAM,SAAS,GAAG,SAAS,CAAC;YAC5B,OAAO,GAAG,IAAI,uBAAa,CAAC,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;YAE3F,IAAI,SAAS,GAAG,IAAI,CAAC;YACrB,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE;gBACvD,IAAI,SAAS,EAAE,CAAC;oBACZ,SAAS,GAAG,KAAK,CAAC;oBAClB,MAAM,IAAI,wBAAe,CAAC,sBAAsB,uCAA4B;wBACxE,cAAc,EAAE,gBAAgB;wBAChC,uBAAuB,EAAE,yBAAyB;wBAClD,sBAAsB,EAAE,SAAS;qBACpC,CAAC,CAAC;gBACP,CAAC;gBACD,OAAO;oBACH,OAAO,EAAE,iBAAiB;oBAC1B,eAAe,EAAE,yBAAyB;iBAC7C,CAAC;YACN,CAAC,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC,oBAAoB,EAAE,MAAM,EAAE,EAAoB,CAAC,CAAC;YAE5F,IAAI,CAAC;gBACD,MAAM,OAAO,CAAC;YAClB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACnD,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,KAAK,IAAI,EAAE;YAC9D,IAAI,SAAS,GAAG,IAAI,CAAC;YACrB,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE;gBACvD,IAAI,SAAS,EAAE,CAAC;oBACZ,SAAS,GAAG,KAAK,CAAC;oBAClB,MAAM,IAAI,wBAAe,CAAC,sBAAsB,uCAA4B;wBACxE,cAAc,EAAE,gBAAgB;wBAChC,uBAAuB,EAAE,yBAAyB;wBAClD,sBAAsB,EAAE,SAAS;qBACpC,CAAC,CAAC;gBACP,CAAC;gBACD,OAAO;oBACH,OAAO,EAAE,iBAAiB;oBAC1B,eAAe,EAAE,yBAAyB;iBAC7C,CAAC;YACN,CAAC,CAAC,CAAC;YACH,UAAU,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE;gBACvD,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,oBAAoB,EAAE,MAAM,EAAE,EAAoB,CAAC,CAAC;YAE3F,IAAI,CAAC;gBACD,MAAM,MAAM,CAAC;YACjB,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBAClB,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;gBACnD,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YAClE,CAAC;YACD,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;QAC/B,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;YACxC,UAAU,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE;gBAChE,OAAO;oBACH,gBAAgB,EAAE,CAAC,WAAW,CAAC;oBAC/B,aAAa,EAAE,EAAE;iBACpB,CAAA;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACpE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QACvH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;YAC5D,IAAI,SAAS,GAAG,KAAK,CAAC;YACtB,UAAU,CAAC,oBAAoB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE;gBAChE,IAAI,CAAC,SAAS,EAAE,CAAC;oBACb,SAAS,GAAG,IAAI,CAAC;oBACjB,OAAO;wBACH,qCAAqC;wBACrC,gBAAgB,EAAE,EAAE;wBACpB,aAAa,EAAE,EAAE;qBACpB,CAAA;gBACL,CAAC;gBACD,OAAO;oBACH,gBAAgB,EAAE,CAAC,WAAW,CAAC;oBAC/B,aAAa,EAAE,EAAE;iBACpB,CAAA;YACL,CAAC,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,iBAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACpE,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC7B,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACjE,MAAM,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,oBAAoB,CAAC,WAAW,EAAE,CAAC,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QACvH,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC1B,MAAM,iBAAiB,GAAG;YACtB,OAAO,EAAE,iBAAiB;YAC1B,eAAe,EAAE,yBAAyB;YAC1C,QAAQ,EAAE;gBACN,GAAG,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;gBACpB,0BAA0B,EAAE,oCAAoC;gBAChE,gBAAgB,EAAE;oBACd,KAAK,EAAE,gBAAgB;oBACvB,SAAS,EAAE,WAAW;oBACtB,UAAU,EAAE,YAAY;iBACpB;aACX;SACJ,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG;YACb,SAAS,EAAE,YAAY;YACvB,YAAY,EAAE,MAAM;SACvB,CAAC;QACF,MAAM,kBAAkB,GAAG;YACvB,gBAAgB,EAAE,IAAI,IAAI,EAAE;YAC5B,OAAO,EAAE;gBACL,IAAI,EAAE,MAAM;aACf;SACJ,CAAC;QAEF,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC1C,MAAM,OAAO,CAAC,WAAW,CACrB,iBAAwB,EACxB,QAAQ,EACR,QAAQ,EACR,kBAAkB,CACrB,CAAC;YAEF,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/G,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClH,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACtC,MAAM,gCAAgC,GAAG;gBACrC,GAAG,iBAAiB;gBACpB,WAAW,EAAE;oBACT,SAAS,EAAE,WAAW;oBACtB,IAAI,EAAE,cAAc;oBACpB,aAAa,EAAE,uBAAuB;oBACtC,IAAI,EAAE,cAAc;iBACvB;aACJ,CAAA;YACD,MAAM,OAAO,CAAC,WAAW,CACrB,gCAAuC,EACvC,QAAQ,EACR,QAAQ,EACR,kBAAkB,CACrB,CAAC;YAEF,MAAM,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC/G,MAAM,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YAClH,MAAM,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}