@protontech/drive-sdk 0.4.0 → 0.5.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 (176) hide show
  1. package/dist/diagnostic/sdkDiagnostic.js +1 -1
  2. package/dist/diagnostic/sdkDiagnostic.js.map +1 -1
  3. package/dist/interface/download.d.ts +4 -4
  4. package/dist/interface/nodes.d.ts +4 -0
  5. package/dist/interface/nodes.js.map +1 -1
  6. package/dist/interface/upload.d.ts +6 -3
  7. package/dist/internal/apiService/apiService.d.ts +3 -0
  8. package/dist/internal/apiService/apiService.js +25 -2
  9. package/dist/internal/apiService/apiService.js.map +1 -1
  10. package/dist/internal/apiService/apiService.test.js +38 -0
  11. package/dist/internal/apiService/apiService.test.js.map +1 -1
  12. package/dist/internal/apiService/driveTypes.d.ts +31 -48
  13. package/dist/internal/apiService/errors.js +3 -0
  14. package/dist/internal/apiService/errors.js.map +1 -1
  15. package/dist/internal/apiService/errors.test.js +15 -7
  16. package/dist/internal/apiService/errors.test.js.map +1 -1
  17. package/dist/internal/asyncIteratorMap.d.ts +1 -1
  18. package/dist/internal/asyncIteratorMap.js +6 -1
  19. package/dist/internal/asyncIteratorMap.js.map +1 -1
  20. package/dist/internal/asyncIteratorMap.test.js +9 -0
  21. package/dist/internal/asyncIteratorMap.test.js.map +1 -1
  22. package/dist/internal/download/fileDownloader.d.ts +3 -3
  23. package/dist/internal/download/fileDownloader.js +5 -5
  24. package/dist/internal/download/fileDownloader.js.map +1 -1
  25. package/dist/internal/download/fileDownloader.test.js +8 -8
  26. package/dist/internal/download/fileDownloader.test.js.map +1 -1
  27. package/dist/internal/nodes/apiService.d.ts +6 -1
  28. package/dist/internal/nodes/apiService.js +45 -32
  29. package/dist/internal/nodes/apiService.js.map +1 -1
  30. package/dist/internal/nodes/apiService.test.js +164 -17
  31. package/dist/internal/nodes/apiService.test.js.map +1 -1
  32. package/dist/internal/nodes/cache.test.js +1 -0
  33. package/dist/internal/nodes/cache.test.js.map +1 -1
  34. package/dist/internal/nodes/debouncer.d.ts +23 -0
  35. package/dist/internal/nodes/debouncer.js +80 -0
  36. package/dist/internal/nodes/debouncer.js.map +1 -0
  37. package/dist/internal/nodes/debouncer.test.d.ts +1 -0
  38. package/dist/internal/nodes/debouncer.test.js +100 -0
  39. package/dist/internal/nodes/debouncer.test.js.map +1 -0
  40. package/dist/internal/nodes/extendedAttributes.d.ts +2 -2
  41. package/dist/internal/nodes/extendedAttributes.js +15 -11
  42. package/dist/internal/nodes/extendedAttributes.js.map +1 -1
  43. package/dist/internal/nodes/extendedAttributes.test.js +19 -1
  44. package/dist/internal/nodes/extendedAttributes.test.js.map +1 -1
  45. package/dist/internal/nodes/index.test.js +1 -0
  46. package/dist/internal/nodes/index.test.js.map +1 -1
  47. package/dist/internal/nodes/interface.d.ts +1 -0
  48. package/dist/internal/nodes/nodesAccess.d.ts +2 -1
  49. package/dist/internal/nodes/nodesAccess.js +24 -5
  50. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  51. package/dist/internal/nodes/nodesAccess.test.js +2 -2
  52. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  53. package/dist/internal/nodes/nodesManagement.js +1 -0
  54. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  55. package/dist/internal/photos/index.d.ts +11 -0
  56. package/dist/internal/photos/index.js +27 -0
  57. package/dist/internal/photos/index.js.map +1 -1
  58. package/dist/internal/photos/upload.d.ts +60 -0
  59. package/dist/internal/photos/upload.js +104 -0
  60. package/dist/internal/photos/upload.js.map +1 -0
  61. package/dist/internal/sharingPublic/apiService.d.ts +2 -2
  62. package/dist/internal/sharingPublic/apiService.js +2 -62
  63. package/dist/internal/sharingPublic/apiService.js.map +1 -1
  64. package/dist/internal/sharingPublic/cryptoCache.d.ts +0 -4
  65. package/dist/internal/sharingPublic/cryptoCache.js +0 -28
  66. package/dist/internal/sharingPublic/cryptoCache.js.map +1 -1
  67. package/dist/internal/sharingPublic/cryptoReporter.d.ts +16 -0
  68. package/dist/internal/sharingPublic/cryptoReporter.js +44 -0
  69. package/dist/internal/sharingPublic/cryptoReporter.js.map +1 -0
  70. package/dist/internal/sharingPublic/cryptoService.d.ts +3 -4
  71. package/dist/internal/sharingPublic/cryptoService.js +5 -43
  72. package/dist/internal/sharingPublic/cryptoService.js.map +1 -1
  73. package/dist/internal/sharingPublic/index.d.ts +21 -3
  74. package/dist/internal/sharingPublic/index.js +43 -12
  75. package/dist/internal/sharingPublic/index.js.map +1 -1
  76. package/dist/internal/sharingPublic/interface.d.ts +0 -1
  77. package/dist/internal/sharingPublic/nodes.d.ts +13 -0
  78. package/dist/internal/sharingPublic/nodes.js +28 -0
  79. package/dist/internal/sharingPublic/nodes.js.map +1 -0
  80. package/dist/internal/sharingPublic/session/session.d.ts +3 -3
  81. package/dist/internal/sharingPublic/session/url.test.js +3 -3
  82. package/dist/internal/sharingPublic/shares.d.ts +34 -0
  83. package/dist/internal/sharingPublic/shares.js +69 -0
  84. package/dist/internal/sharingPublic/shares.js.map +1 -0
  85. package/dist/internal/upload/apiService.d.ts +2 -2
  86. package/dist/internal/upload/apiService.js +11 -2
  87. package/dist/internal/upload/apiService.js.map +1 -1
  88. package/dist/internal/upload/controller.d.ts +8 -2
  89. package/dist/internal/upload/controller.js.map +1 -1
  90. package/dist/internal/upload/cryptoService.d.ts +2 -2
  91. package/dist/internal/upload/cryptoService.js.map +1 -1
  92. package/dist/internal/upload/fileUploader.d.ts +7 -3
  93. package/dist/internal/upload/fileUploader.js +6 -3
  94. package/dist/internal/upload/fileUploader.js.map +1 -1
  95. package/dist/internal/upload/fileUploader.test.js +23 -11
  96. package/dist/internal/upload/fileUploader.test.js.map +1 -1
  97. package/dist/internal/upload/interface.d.ts +3 -0
  98. package/dist/internal/upload/manager.d.ts +12 -11
  99. package/dist/internal/upload/manager.js +8 -2
  100. package/dist/internal/upload/manager.js.map +1 -1
  101. package/dist/internal/upload/manager.test.js +8 -0
  102. package/dist/internal/upload/manager.test.js.map +1 -1
  103. package/dist/internal/upload/streamUploader.d.ts +40 -26
  104. package/dist/internal/upload/streamUploader.js +15 -8
  105. package/dist/internal/upload/streamUploader.js.map +1 -1
  106. package/dist/internal/upload/streamUploader.test.js +11 -7
  107. package/dist/internal/upload/streamUploader.test.js.map +1 -1
  108. package/dist/protonDriveClient.d.ts +3 -3
  109. package/dist/protonDriveClient.js +4 -4
  110. package/dist/protonDriveClient.js.map +1 -1
  111. package/dist/protonDrivePhotosClient.d.ts +18 -2
  112. package/dist/protonDrivePhotosClient.js +19 -2
  113. package/dist/protonDrivePhotosClient.js.map +1 -1
  114. package/dist/protonDrivePublicLinkClient.d.ts +31 -4
  115. package/dist/protonDrivePublicLinkClient.js +52 -9
  116. package/dist/protonDrivePublicLinkClient.js.map +1 -1
  117. package/dist/transformers.d.ts +1 -1
  118. package/dist/transformers.js +1 -0
  119. package/dist/transformers.js.map +1 -1
  120. package/package.json +1 -1
  121. package/src/diagnostic/sdkDiagnostic.ts +1 -1
  122. package/src/interface/download.ts +4 -4
  123. package/src/interface/nodes.ts +4 -0
  124. package/src/interface/upload.ts +3 -3
  125. package/src/internal/apiService/apiService.test.ts +50 -0
  126. package/src/internal/apiService/apiService.ts +33 -2
  127. package/src/internal/apiService/driveTypes.ts +31 -48
  128. package/src/internal/apiService/errors.test.ts +10 -0
  129. package/src/internal/apiService/errors.ts +5 -1
  130. package/src/internal/asyncIteratorMap.test.ts +12 -0
  131. package/src/internal/asyncIteratorMap.ts +8 -0
  132. package/src/internal/download/fileDownloader.test.ts +8 -8
  133. package/src/internal/download/fileDownloader.ts +5 -5
  134. package/src/internal/nodes/apiService.test.ts +222 -16
  135. package/src/internal/nodes/apiService.ts +63 -49
  136. package/src/internal/nodes/cache.test.ts +1 -0
  137. package/src/internal/nodes/debouncer.test.ts +129 -0
  138. package/src/internal/nodes/debouncer.ts +93 -0
  139. package/src/internal/nodes/extendedAttributes.test.ts +23 -1
  140. package/src/internal/nodes/extendedAttributes.ts +26 -18
  141. package/src/internal/nodes/index.test.ts +1 -0
  142. package/src/internal/nodes/interface.ts +1 -0
  143. package/src/internal/nodes/nodesAccess.test.ts +2 -2
  144. package/src/internal/nodes/nodesAccess.ts +30 -5
  145. package/src/internal/nodes/nodesManagement.ts +1 -0
  146. package/src/internal/photos/index.ts +62 -0
  147. package/src/internal/photos/upload.ts +212 -0
  148. package/src/internal/sharingPublic/apiService.ts +5 -86
  149. package/src/internal/sharingPublic/cryptoCache.ts +0 -34
  150. package/src/internal/sharingPublic/cryptoReporter.ts +73 -0
  151. package/src/internal/sharingPublic/cryptoService.ts +4 -80
  152. package/src/internal/sharingPublic/index.ts +68 -6
  153. package/src/internal/sharingPublic/interface.ts +0 -9
  154. package/src/internal/sharingPublic/nodes.ts +37 -0
  155. package/src/internal/sharingPublic/session/apiService.ts +1 -1
  156. package/src/internal/sharingPublic/session/session.ts +3 -3
  157. package/src/internal/sharingPublic/session/url.test.ts +3 -3
  158. package/src/internal/sharingPublic/shares.ts +86 -0
  159. package/src/internal/upload/apiService.ts +15 -4
  160. package/src/internal/upload/controller.ts +2 -2
  161. package/src/internal/upload/cryptoService.ts +2 -2
  162. package/src/internal/upload/fileUploader.test.ts +25 -11
  163. package/src/internal/upload/fileUploader.ts +16 -3
  164. package/src/internal/upload/interface.ts +3 -0
  165. package/src/internal/upload/manager.test.ts +8 -0
  166. package/src/internal/upload/manager.ts +20 -10
  167. package/src/internal/upload/streamUploader.test.ts +32 -15
  168. package/src/internal/upload/streamUploader.ts +43 -30
  169. package/src/protonDriveClient.ts +4 -4
  170. package/src/protonDrivePhotosClient.ts +46 -6
  171. package/src/protonDrivePublicLinkClient.ts +93 -12
  172. package/src/transformers.ts +2 -0
  173. package/dist/internal/sharingPublic/manager.d.ts +0 -19
  174. package/dist/internal/sharingPublic/manager.js +0 -81
  175. package/dist/internal/sharingPublic/manager.js.map +0 -1
  176. package/src/internal/sharingPublic/manager.ts +0 -86
@@ -36,37 +36,9 @@ class SharingPublicCryptoCache {
36
36
  }
37
37
  return shareKeyData.publicShareKey.key;
38
38
  }
39
- async setNodeKeys(nodeUid, keys) {
40
- const cacheUid = getNodeCacheKey(nodeUid);
41
- await this.driveCache.setEntity(cacheUid, {
42
- nodeKeys: keys,
43
- });
44
- }
45
- async getNodeKeys(nodeUid) {
46
- const nodeKeysData = await this.driveCache.getEntity(getNodeCacheKey(nodeUid));
47
- if (!nodeKeysData.nodeKeys) {
48
- try {
49
- await this.removeNodeKeys([nodeUid]);
50
- }
51
- catch (removingError) {
52
- // The node keys will not be returned, thus SDK will re-fetch
53
- // and re-cache it. Setting it again should then fix the problem.
54
- this.logger.warn(`Failed to remove corrupted public node keys from the cache: ${removingError instanceof Error ? removingError.message : removingError}`);
55
- }
56
- throw new Error(`Failed to deserialize public node keys`);
57
- }
58
- return nodeKeysData.nodeKeys;
59
- }
60
- async removeNodeKeys(nodeUids) {
61
- const cacheUids = nodeUids.map(getNodeCacheKey);
62
- await this.driveCache.removeEntities(cacheUids);
63
- }
64
39
  }
65
40
  exports.SharingPublicCryptoCache = SharingPublicCryptoCache;
66
41
  function getShareKeyCacheKey() {
67
42
  return 'publicShareKey';
68
43
  }
69
- function getNodeCacheKey(nodeUid) {
70
- return `publicNodeKeys-${nodeUid}`;
71
- }
72
44
  //# sourceMappingURL=cryptoCache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cryptoCache.js","sourceRoot":"","sources":["../../../src/internal/sharingPublic/cryptoCache.ts"],"names":[],"mappings":";;;AAIA;;;;;GAKG;AACH,MAAa,wBAAwB;IAErB;IACA;IAFZ,YACY,MAAc,EACd,UAAkC;QADlC,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAwB;QAE1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAoB;QAClC,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,mBAAmB,EAAE,EAAE;YACnD,cAAc,EAAE;gBACZ,GAAG,EAAE,QAAQ;aAChB;SACJ,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,WAAW;QACb,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;YAClE,CAAC;YAAC,OAAO,aAAsB,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,+DAA+D,aAAa,YAAY,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,CAC1I,CAAC;YACN,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,IAAuB;QACtD,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE;YACtC,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,OAAe;QAC7B,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/E,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,aAAsB,EAAE,CAAC;gBAC9B,6DAA6D;gBAC7D,iEAAiE;gBACjE,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,+DAA+D,aAAa,YAAY,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,CAC1I,CAAC;YACN,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAkB;QACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACJ;AA5DD,4DA4DC;AAED,SAAS,mBAAmB;IACxB,OAAO,gBAAgB,CAAC;AAC5B,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACpC,OAAO,kBAAkB,OAAO,EAAE,CAAC;AACvC,CAAC"}
1
+ {"version":3,"file":"cryptoCache.js","sourceRoot":"","sources":["../../../src/internal/sharingPublic/cryptoCache.ts"],"names":[],"mappings":";;;AAGA;;;;;GAKG;AACH,MAAa,wBAAwB;IAErB;IACA;IAFZ,YACY,MAAc,EACd,UAAkC;QADlC,WAAM,GAAN,MAAM,CAAQ;QACd,eAAU,GAAV,UAAU,CAAwB;QAE1C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAoB;QAClC,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,mBAAmB,EAAE,EAAE;YACnD,cAAc,EAAE;gBACZ,GAAG,EAAE,QAAQ;aAChB;SACJ,CAAC,CAAC;IACP,CAAC;IAED,KAAK,CAAC,WAAW;QACb,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACD,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;YAClE,CAAC;YAAC,OAAO,aAAsB,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,IAAI,CACZ,+DAA+D,aAAa,YAAY,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,CAC1I,CAAC;YACN,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC;IAC3C,CAAC;CACJ;AA/BD,4DA+BC;AAED,SAAS,mBAAmB;IACxB,OAAO,gBAAgB,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { VERIFICATION_STATUS } from '../../crypto';
2
+ import { Author, ProtonDriveTelemetry, MetricVerificationErrorField, MetricsDecryptionErrorField } from '../../interface';
3
+ export declare class SharingPublicCryptoReporter {
4
+ private logger;
5
+ private telemetry;
6
+ constructor(telemetry: ProtonDriveTelemetry);
7
+ handleClaimedAuthor(node: {
8
+ uid: string;
9
+ creationTime: Date;
10
+ }, field: MetricVerificationErrorField, signatureType: string, verified: VERIFICATION_STATUS, verificationErrors?: Error[], claimedAuthor?: string, notAvailableVerificationKeys?: boolean): Promise<Author>;
11
+ reportDecryptionError(node: {
12
+ uid: string;
13
+ creationTime: Date;
14
+ }, field: MetricsDecryptionErrorField, error: unknown): void;
15
+ reportVerificationError(): void;
16
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SharingPublicCryptoReporter = void 0;
4
+ const ttag_1 = require("ttag");
5
+ const crypto_1 = require("../../crypto");
6
+ const errors_1 = require("../errors");
7
+ const interface_1 = require("../../interface");
8
+ class SharingPublicCryptoReporter {
9
+ logger;
10
+ telemetry;
11
+ constructor(telemetry) {
12
+ this.telemetry = telemetry;
13
+ this.logger = telemetry.getLogger('sharingPublic-crypto');
14
+ }
15
+ async handleClaimedAuthor(node, field, signatureType, verified, verificationErrors, claimedAuthor, notAvailableVerificationKeys = false) {
16
+ if (verified === crypto_1.VERIFICATION_STATUS.SIGNED_AND_VALID) {
17
+ return (0, interface_1.resultOk)(claimedAuthor || null);
18
+ }
19
+ return (0, interface_1.resultError)({
20
+ claimedAuthor,
21
+ error: !claimedAuthor
22
+ ? (0, ttag_1.c)('Info').t `Author is not provided on public link`
23
+ : (0, errors_1.getVerificationMessage)(verified, verificationErrors, signatureType, notAvailableVerificationKeys),
24
+ });
25
+ }
26
+ reportDecryptionError(node, field, error) {
27
+ const fromBefore2024 = node.creationTime < new Date('2024-01-01');
28
+ this.logger.error(`Failed to decrypt public link node ${node.uid} (from before 2024: ${fromBefore2024})`, error);
29
+ this.telemetry.recordMetric({
30
+ eventName: 'decryptionError',
31
+ volumeType: interface_1.MetricVolumeType.SharedPublic,
32
+ field,
33
+ fromBefore2024,
34
+ error,
35
+ uid: node.uid,
36
+ });
37
+ }
38
+ reportVerificationError() {
39
+ // Authors or signatures are not provided on public links.
40
+ // We do not report any signature verification errors at this moment.
41
+ }
42
+ }
43
+ exports.SharingPublicCryptoReporter = SharingPublicCryptoReporter;
44
+ //# sourceMappingURL=cryptoReporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cryptoReporter.js","sourceRoot":"","sources":["../../../src/internal/sharingPublic/cryptoReporter.ts"],"names":[],"mappings":";;;AAAA,+BAAyB;AAEzB,yCAAmD;AACnD,sCAAmD;AACnD,+CAUyB;AAEzB,MAAa,2BAA2B;IAC5B,MAAM,CAAS;IACf,SAAS,CAAuB;IAExC,YAAY,SAA+B;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,mBAAmB,CACrB,IAAyC,EACzC,KAAmC,EACnC,aAAqB,EACrB,QAA6B,EAC7B,kBAA4B,EAC5B,aAAsB,EACtB,4BAA4B,GAAG,KAAK;QAEpC,IAAI,QAAQ,KAAK,4BAAmB,CAAC,gBAAgB,EAAE,CAAC;YACpD,OAAO,IAAA,oBAAQ,EAAC,aAAa,IAAK,IAAsB,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,IAAA,uBAAW,EAAC;YACf,aAAa;YACb,KAAK,EAAE,CAAC,aAAa;gBACjB,CAAC,CAAC,IAAA,QAAC,EAAC,MAAM,CAAC,CAAC,CAAC,CAAA,uCAAuC;gBACpD,CAAC,CAAC,IAAA,+BAAsB,EAAC,QAAQ,EAAE,kBAAkB,EAAE,aAAa,EAAE,4BAA4B,CAAC;SAC1G,CAAC,CAAC;IACP,CAAC;IAED,qBAAqB,CACjB,IAAyC,EACzC,KAAkC,EAClC,KAAc;QAEd,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;QAElE,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,sCAAsC,IAAI,CAAC,GAAG,uBAAuB,cAAc,GAAG,EACtF,KAAK,CACR,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;YACxB,SAAS,EAAE,iBAAiB;YAC5B,UAAU,EAAE,4BAAgB,CAAC,YAAY;YACzC,KAAK;YACL,cAAc;YACd,KAAK;YACL,GAAG,EAAE,IAAI,CAAC,GAAG;SAChB,CAAC,CAAC;IACP,CAAC;IAED,uBAAuB;QACnB,0DAA0D;QAC1D,qEAAqE;IACzE,CAAC;CACJ;AAxDD,kEAwDC"}
@@ -1,9 +1,8 @@
1
1
  import { DriveCrypto, PrivateKey } from '../../crypto';
2
- import { ProtonDriveTelemetry, ProtonDriveAccount } from '../../interface';
3
- import { NodesCryptoService } from '../nodes/cryptoService';
4
2
  import { EncryptedShareCrypto } from './interface';
5
- export declare class SharingPublicCryptoService extends NodesCryptoService {
3
+ export declare class SharingPublicCryptoService {
4
+ private driveCrypto;
6
5
  private password;
7
- constructor(telemetry: ProtonDriveTelemetry, driveCrypto: DriveCrypto, account: ProtonDriveAccount, password: string);
6
+ constructor(driveCrypto: DriveCrypto, password: string);
8
7
  decryptPublicLinkShareKey(encryptedShare: EncryptedShareCrypto): Promise<PrivateKey>;
9
8
  }
@@ -1,16 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SharingPublicCryptoService = void 0;
4
- const ttag_1 = require("ttag");
5
- const crypto_1 = require("../../crypto");
6
- const errors_1 = require("../errors");
7
- const interface_1 = require("../../interface");
8
- const cryptoService_1 = require("../nodes/cryptoService");
9
- class SharingPublicCryptoService extends cryptoService_1.NodesCryptoService {
4
+ class SharingPublicCryptoService {
5
+ driveCrypto;
10
6
  password;
11
- constructor(telemetry, driveCrypto, account, password) {
12
- super(telemetry, driveCrypto, account, new SharingPublicCryptoReporter(telemetry));
7
+ constructor(driveCrypto, password) {
8
+ this.driveCrypto = driveCrypto;
13
9
  this.password = password;
10
+ this.driveCrypto = driveCrypto;
14
11
  this.password = password;
15
12
  }
16
13
  async decryptPublicLinkShareKey(encryptedShare) {
@@ -19,39 +16,4 @@ class SharingPublicCryptoService extends cryptoService_1.NodesCryptoService {
19
16
  }
20
17
  }
21
18
  exports.SharingPublicCryptoService = SharingPublicCryptoService;
22
- class SharingPublicCryptoReporter {
23
- logger;
24
- telemetry;
25
- constructor(telemetry) {
26
- this.telemetry = telemetry;
27
- this.logger = telemetry.getLogger('sharingPublic-crypto');
28
- }
29
- async handleClaimedAuthor(node, field, signatureType, verified, verificationErrors, claimedAuthor, notAvailableVerificationKeys = false) {
30
- if (verified === crypto_1.VERIFICATION_STATUS.SIGNED_AND_VALID) {
31
- return (0, interface_1.resultOk)(claimedAuthor || null);
32
- }
33
- return (0, interface_1.resultError)({
34
- claimedAuthor,
35
- error: !claimedAuthor
36
- ? (0, ttag_1.c)('Info').t `Author is not provided on public link`
37
- : (0, errors_1.getVerificationMessage)(verified, verificationErrors, signatureType, notAvailableVerificationKeys),
38
- });
39
- }
40
- reportDecryptionError(node, field, error) {
41
- const fromBefore2024 = node.creationTime < new Date('2024-01-01');
42
- this.logger.error(`Failed to decrypt public link node ${node.uid} (from before 2024: ${fromBefore2024})`, error);
43
- this.telemetry.recordMetric({
44
- eventName: 'decryptionError',
45
- volumeType: interface_1.MetricVolumeType.SharedPublic,
46
- field,
47
- fromBefore2024,
48
- error,
49
- uid: node.uid,
50
- });
51
- }
52
- reportVerificationError() {
53
- // Authors or signatures are not provided on public links.
54
- // We do not report any signature verification errors at this moment.
55
- }
56
- }
57
19
  //# sourceMappingURL=cryptoService.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cryptoService.js","sourceRoot":"","sources":["../../../src/internal/sharingPublic/cryptoService.ts"],"names":[],"mappings":";;;AAAA,+BAAyB;AAEzB,yCAA4E;AAC5E,sCAAmD;AACnD,+CAWyB;AACzB,0DAA4D;AAG5D,MAAa,0BAA2B,SAAQ,kCAAkB;IAKlD;IAJZ,YACI,SAA+B,EAC/B,WAAwB,EACxB,OAA2B,EACnB,QAAgB;QAExB,KAAK,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,2BAA2B,CAAC,SAAS,CAAC,CAAC,CAAC;QAF3E,aAAQ,GAAR,QAAQ,CAAQ;QAGxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,cAAoC;QAChE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,yBAAyB,CACtE,IAAI,CAAC,QAAQ,EACb,cAAc,CAAC,qBAAqB,EACpC,cAAc,CAAC,UAAU,EACzB,cAAc,CAAC,iBAAiB,CACnC,CAAC;QACF,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ;AApBD,gEAoBC;AAED,MAAM,2BAA2B;IACrB,MAAM,CAAS;IACf,SAAS,CAAuB;IAExC,YAAY,SAA+B;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,mBAAmB,CACrB,IAAyC,EACzC,KAAmC,EACnC,aAAqB,EACrB,QAA6B,EAC7B,kBAA4B,EAC5B,aAAsB,EACtB,4BAA4B,GAAG,KAAK;QAEpC,IAAI,QAAQ,KAAK,4BAAmB,CAAC,gBAAgB,EAAE,CAAC;YACpD,OAAO,IAAA,oBAAQ,EAAC,aAAa,IAAK,IAAsB,CAAC,CAAC;QAC9D,CAAC;QAED,OAAO,IAAA,uBAAW,EAAC;YACf,aAAa;YACb,KAAK,EAAE,CAAC,aAAa;gBACjB,CAAC,CAAC,IAAA,QAAC,EAAC,MAAM,CAAC,CAAC,CAAC,CAAA,uCAAuC;gBACpD,CAAC,CAAC,IAAA,+BAAsB,EAAC,QAAQ,EAAE,kBAAkB,EAAE,aAAa,EAAE,4BAA4B,CAAC;SAC1G,CAAC,CAAC;IACP,CAAC;IAED,qBAAqB,CACjB,IAAyC,EACzC,KAAkC,EAClC,KAAc;QAEd,MAAM,cAAc,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;QAElE,IAAI,CAAC,MAAM,CAAC,KAAK,CACb,sCAAsC,IAAI,CAAC,GAAG,uBAAuB,cAAc,GAAG,EACtF,KAAK,CACR,CAAC;QAEF,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;YACxB,SAAS,EAAE,iBAAiB;YAC5B,UAAU,EAAE,4BAAgB,CAAC,YAAY;YACzC,KAAK;YACL,cAAc;YACd,KAAK;YACL,GAAG,EAAE,IAAI,CAAC,GAAG;SAChB,CAAC,CAAC;IACP,CAAC;IAED,uBAAuB;QACnB,0DAA0D;QAC1D,qEAAqE;IACzE,CAAC;CACJ"}
1
+ {"version":3,"file":"cryptoService.js","sourceRoot":"","sources":["../../../src/internal/sharingPublic/cryptoService.ts"],"names":[],"mappings":";;;AAGA,MAAa,0BAA0B;IAEvB;IACA;IAFZ,YACY,WAAwB,EACxB,QAAgB;QADhB,gBAAW,GAAX,WAAW,CAAa;QACxB,aAAQ,GAAR,QAAQ,CAAQ;QAExB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,yBAAyB,CAAC,cAAoC;QAChE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,yBAAyB,CACtE,IAAI,CAAC,QAAQ,EACb,cAAc,CAAC,qBAAqB,EACpC,cAAc,CAAC,UAAU,EACzB,cAAc,CAAC,iBAAiB,CACnC,CAAC;QACF,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ;AAlBD,gEAkBC"}
@@ -1,7 +1,9 @@
1
1
  import { DriveCrypto } from '../../crypto';
2
- import { ProtonDriveCryptoCache, ProtonDriveTelemetry, ProtonDriveAccount } from '../../interface';
2
+ import { ProtonDriveCryptoCache, ProtonDriveTelemetry, ProtonDriveAccount, ProtonDriveEntitiesCache } from '../../interface';
3
3
  import { DriveAPIService } from '../apiService';
4
- import { SharingPublicManager } from './manager';
4
+ import { NodesRevisons } from '../nodes/nodesRevisions';
5
+ import { SharingPublicNodesAccess } from './nodes';
6
+ import { SharingPublicSharesManager } from './shares';
5
7
  export { SharingPublicSessionManager } from './session/manager';
6
8
  /**
7
9
  * Provides facade for the whole sharing public module.
@@ -12,4 +14,20 @@ export { SharingPublicSessionManager } from './session/manager';
12
14
  * This facade provides internal interface that other modules can use to
13
15
  * interact with the public links.
14
16
  */
15
- export declare function initSharingPublicModule(telemetry: ProtonDriveTelemetry, apiService: DriveAPIService, driveCryptoCache: ProtonDriveCryptoCache, driveCrypto: DriveCrypto, account: ProtonDriveAccount, token: string, password: string): SharingPublicManager;
17
+ export declare function initSharingPublicModule(telemetry: ProtonDriveTelemetry, apiService: DriveAPIService, driveEntitiesCache: ProtonDriveEntitiesCache, driveCryptoCache: ProtonDriveCryptoCache, driveCrypto: DriveCrypto, account: ProtonDriveAccount, url: string, token: string, password: string): {
18
+ shares: SharingPublicSharesManager;
19
+ nodes: {
20
+ access: SharingPublicNodesAccess;
21
+ revisions: NodesRevisons;
22
+ };
23
+ };
24
+ /**
25
+ * Provides facade for the public link nodes module.
26
+ *
27
+ * The public link nodes initializes the core nodes module, but uses public
28
+ * link shares or crypto reporter instead.
29
+ */
30
+ export declare function initSharingPublicNodesModule(telemetry: ProtonDriveTelemetry, apiService: DriveAPIService, driveEntitiesCache: ProtonDriveEntitiesCache, driveCryptoCache: ProtonDriveCryptoCache, driveCrypto: DriveCrypto, account: ProtonDriveAccount, sharesService: SharingPublicSharesManager, url: string, token: string): {
31
+ access: SharingPublicNodesAccess;
32
+ revisions: NodesRevisons;
33
+ };
@@ -2,12 +2,20 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SharingPublicSessionManager = void 0;
4
4
  exports.initSharingPublicModule = initSharingPublicModule;
5
- const apiService_1 = require("./apiService");
6
- const cryptoCache_1 = require("./cryptoCache");
7
- const cryptoService_1 = require("./cryptoService");
8
- const manager_1 = require("./manager");
9
- var manager_2 = require("./session/manager");
10
- Object.defineProperty(exports, "SharingPublicSessionManager", { enumerable: true, get: function () { return manager_2.SharingPublicSessionManager; } });
5
+ exports.initSharingPublicNodesModule = initSharingPublicNodesModule;
6
+ const apiService_1 = require("../nodes/apiService");
7
+ const cache_1 = require("../nodes/cache");
8
+ const cryptoCache_1 = require("../nodes/cryptoCache");
9
+ const cryptoService_1 = require("../nodes/cryptoService");
10
+ const nodesRevisions_1 = require("../nodes/nodesRevisions");
11
+ const apiService_2 = require("./apiService");
12
+ const cryptoCache_2 = require("./cryptoCache");
13
+ const cryptoReporter_1 = require("./cryptoReporter");
14
+ const cryptoService_2 = require("./cryptoService");
15
+ const nodes_1 = require("./nodes");
16
+ const shares_1 = require("./shares");
17
+ var manager_1 = require("./session/manager");
18
+ Object.defineProperty(exports, "SharingPublicSessionManager", { enumerable: true, get: function () { return manager_1.SharingPublicSessionManager; } });
11
19
  /**
12
20
  * Provides facade for the whole sharing public module.
13
21
  *
@@ -17,11 +25,34 @@ Object.defineProperty(exports, "SharingPublicSessionManager", { enumerable: true
17
25
  * This facade provides internal interface that other modules can use to
18
26
  * interact with the public links.
19
27
  */
20
- function initSharingPublicModule(telemetry, apiService, driveCryptoCache, driveCrypto, account, token, password) {
21
- const api = new apiService_1.SharingPublicAPIService(telemetry.getLogger('sharingPublic-api'), apiService);
22
- const cryptoCache = new cryptoCache_1.SharingPublicCryptoCache(telemetry.getLogger('sharingPublic-crypto'), driveCryptoCache);
23
- const cryptoService = new cryptoService_1.SharingPublicCryptoService(telemetry, driveCrypto, account, password);
24
- const manager = new manager_1.SharingPublicManager(telemetry.getLogger('sharingPublic-nodes'), api, cryptoCache, cryptoService, token);
25
- return manager;
28
+ function initSharingPublicModule(telemetry, apiService, driveEntitiesCache, driveCryptoCache, driveCrypto, account, url, token, password) {
29
+ const api = new apiService_2.SharingPublicAPIService(telemetry.getLogger('sharingPublic-api'), apiService);
30
+ const cryptoCache = new cryptoCache_2.SharingPublicCryptoCache(telemetry.getLogger('sharingPublic-crypto'), driveCryptoCache);
31
+ const cryptoService = new cryptoService_2.SharingPublicCryptoService(driveCrypto, password);
32
+ const shares = new shares_1.SharingPublicSharesManager(api, cryptoCache, cryptoService, account, token);
33
+ const nodes = initSharingPublicNodesModule(telemetry, apiService, driveEntitiesCache, driveCryptoCache, driveCrypto, account, shares, url, token);
34
+ return {
35
+ shares,
36
+ nodes,
37
+ };
38
+ }
39
+ /**
40
+ * Provides facade for the public link nodes module.
41
+ *
42
+ * The public link nodes initializes the core nodes module, but uses public
43
+ * link shares or crypto reporter instead.
44
+ */
45
+ function initSharingPublicNodesModule(telemetry, apiService, driveEntitiesCache, driveCryptoCache, driveCrypto, account, sharesService, url, token) {
46
+ const api = new apiService_1.NodeAPIService(telemetry.getLogger('nodes-api'), apiService);
47
+ const cache = new cache_1.NodesCache(telemetry.getLogger('nodes-cache'), driveEntitiesCache);
48
+ const cryptoCache = new cryptoCache_1.NodesCryptoCache(telemetry.getLogger('nodes-cache'), driveCryptoCache);
49
+ const cryptoReporter = new cryptoReporter_1.SharingPublicCryptoReporter(telemetry);
50
+ const cryptoService = new cryptoService_1.NodesCryptoService(telemetry, driveCrypto, account, cryptoReporter);
51
+ const nodesAccess = new nodes_1.SharingPublicNodesAccess(telemetry.getLogger('nodes'), api, cache, cryptoCache, cryptoService, sharesService, url, token);
52
+ const nodesRevisions = new nodesRevisions_1.NodesRevisons(telemetry.getLogger('nodes'), api, cryptoService, nodesAccess);
53
+ return {
54
+ access: nodesAccess,
55
+ revisions: nodesRevisions,
56
+ };
26
57
  }
27
58
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/sharingPublic/index.ts"],"names":[],"mappings":";;;AAmBA,0DAqBC;AArCD,6CAAuD;AACvD,+CAAyD;AACzD,mDAA6D;AAC7D,uCAAiD;AAEjD,6CAAgE;AAAvD,sHAAA,2BAA2B,OAAA;AAEpC;;;;;;;;GAQG;AACH,SAAgB,uBAAuB,CACnC,SAA+B,EAC/B,UAA2B,EAC3B,gBAAwC,EACxC,WAAwB,EACxB,OAA2B,EAC3B,KAAa,EACb,QAAgB;IAEhB,MAAM,GAAG,GAAG,IAAI,oCAAuB,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,UAAU,CAAC,CAAC;IAC9F,MAAM,WAAW,GAAG,IAAI,sCAAwB,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAChH,MAAM,aAAa,GAAG,IAAI,0CAA0B,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChG,MAAM,OAAO,GAAG,IAAI,8BAAoB,CACpC,SAAS,CAAC,SAAS,CAAC,qBAAqB,CAAC,EAC1C,GAAG,EACH,WAAW,EACX,aAAa,EACb,KAAK,CACR,CAAC;IAEF,OAAO,OAAO,CAAC;AACnB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/internal/sharingPublic/index.ts"],"names":[],"mappings":";;;AA+BA,0DA+BC;AAQD,oEAgCC;AA9FD,oDAAqD;AACrD,0CAA4C;AAC5C,sDAAwD;AACxD,0DAA4D;AAC5D,4DAAwD;AACxD,6CAAuD;AACvD,+CAAyD;AACzD,qDAA+D;AAC/D,mDAA6D;AAC7D,mCAAmD;AACnD,qCAAsD;AAEtD,6CAAgE;AAAvD,sHAAA,2BAA2B,OAAA;AAEpC;;;;;;;;GAQG;AACH,SAAgB,uBAAuB,CACnC,SAA+B,EAC/B,UAA2B,EAC3B,kBAA4C,EAC5C,gBAAwC,EACxC,WAAwB,EACxB,OAA2B,EAC3B,GAAW,EACX,KAAa,EACb,QAAgB;IAEhB,MAAM,GAAG,GAAG,IAAI,oCAAuB,CAAC,SAAS,CAAC,SAAS,CAAC,mBAAmB,CAAC,EAAE,UAAU,CAAC,CAAC;IAC9F,MAAM,WAAW,GAAG,IAAI,sCAAwB,CAAC,SAAS,CAAC,SAAS,CAAC,sBAAsB,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAChH,MAAM,aAAa,GAAG,IAAI,0CAA0B,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,IAAI,mCAA0B,CAAC,GAAG,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/F,MAAM,KAAK,GAAG,4BAA4B,CACtC,SAAS,EACT,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,WAAW,EACX,OAAO,EACP,MAAM,EACN,GAAG,EACH,KAAK,CACR,CAAC;IAEF,OAAO;QACH,MAAM;QACN,KAAK;KACR,CAAC;AACN,CAAC;AAED;;;;;GAKG;AACH,SAAgB,4BAA4B,CACxC,SAA+B,EAC/B,UAA2B,EAC3B,kBAA4C,EAC5C,gBAAwC,EACxC,WAAwB,EACxB,OAA2B,EAC3B,aAAyC,EACzC,GAAW,EACX,KAAa;IAEb,MAAM,GAAG,GAAG,IAAI,2BAAc,CAAC,SAAS,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,CAAC;IAC7E,MAAM,KAAK,GAAG,IAAI,kBAAU,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACrF,MAAM,WAAW,GAAG,IAAI,8BAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC/F,MAAM,cAAc,GAAG,IAAI,4CAA2B,CAAC,SAAS,CAAC,CAAC;IAClE,MAAM,aAAa,GAAG,IAAI,kCAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IAC9F,MAAM,WAAW,GAAG,IAAI,gCAAwB,CAC5C,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAC5B,GAAG,EACH,KAAK,EACL,WAAW,EACX,aAAa,EACb,aAAa,EACb,GAAG,EACH,KAAK,CACR,CAAC;IACF,MAAM,cAAc,GAAG,IAAI,8BAAa,CAAC,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,aAAa,EAAE,WAAW,CAAC,CAAC;IAExG,OAAO;QACH,MAAM,EAAE,WAAW;QACnB,SAAS,EAAE,cAAc;KAC5B,CAAC;AACN,CAAC"}
@@ -1,4 +1,3 @@
1
- export type { EncryptedNode, EncryptedNodeFolderCrypto, EncryptedNodeFileCrypto, DecryptedNode, DecryptedNodeKeys, } from '../nodes/interface';
2
1
  export interface EncryptedShareCrypto {
3
2
  base64UrlPasswordSalt: string;
4
3
  armoredKey: string;
@@ -0,0 +1,13 @@
1
+ import { Logger } from "../../interface";
2
+ import { NodeAPIService } from "../nodes/apiService";
3
+ import { NodesCache } from "../nodes/cache";
4
+ import { NodesCryptoCache } from "../nodes/cryptoCache";
5
+ import { NodesCryptoService } from "../nodes/cryptoService";
6
+ import { NodesAccess } from "../nodes/nodesAccess";
7
+ import { SharingPublicSharesManager } from "./shares";
8
+ export declare class SharingPublicNodesAccess extends NodesAccess {
9
+ private url;
10
+ private token;
11
+ constructor(logger: Logger, apiService: NodeAPIService, cache: NodesCache, cryptoCache: NodesCryptoCache, cryptoService: NodesCryptoService, sharesService: SharingPublicSharesManager, url: string, token: string);
12
+ getNodeUrl(nodeUid: string): Promise<string>;
13
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SharingPublicNodesAccess = void 0;
4
+ const nodesAccess_1 = require("../nodes/nodesAccess");
5
+ const mediaTypes_1 = require("../nodes/mediaTypes");
6
+ const uids_1 = require("../uids");
7
+ class SharingPublicNodesAccess extends nodesAccess_1.NodesAccess {
8
+ url;
9
+ token;
10
+ constructor(logger, apiService, cache, cryptoCache, cryptoService, sharesService, url, token) {
11
+ super(logger, apiService, cache, cryptoCache, cryptoService, sharesService);
12
+ this.url = url;
13
+ this.token = token;
14
+ this.token = token;
15
+ }
16
+ async getNodeUrl(nodeUid) {
17
+ const node = await this.getNode(nodeUid);
18
+ if ((0, mediaTypes_1.isProtonDocument)(node.mediaType) || (0, mediaTypes_1.isProtonSheet)(node.mediaType)) {
19
+ const { nodeId } = (0, uids_1.splitNodeUid)(nodeUid);
20
+ const type = (0, mediaTypes_1.isProtonDocument)(node.mediaType) ? 'doc' : 'sheet';
21
+ return `https://docs.proton.me/doc?type=${type}&mode=open-url&token=${this.token}&linkId=${nodeId}`;
22
+ }
23
+ // Public link doesn't support specific node URLs.
24
+ return this.url;
25
+ }
26
+ }
27
+ exports.SharingPublicNodesAccess = SharingPublicNodesAccess;
28
+ //# sourceMappingURL=nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../../src/internal/sharingPublic/nodes.ts"],"names":[],"mappings":";;;AAKA,sDAAmD;AACnD,oDAAsE;AACtE,kCAAuC;AAGvC,MAAa,wBAAyB,SAAQ,yBAAW;IAQzC;IACA;IARZ,YACI,MAAc,EACd,UAA0B,EAC1B,KAAiB,EACjB,WAA6B,EAC7B,aAAiC,EACjC,aAAyC,EACjC,GAAW,EACX,KAAa;QAErB,KAAK,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC;QAHpE,QAAG,GAAH,GAAG,CAAQ;QACX,UAAK,GAAL,KAAK,CAAQ;QAGrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAe;QAC5B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,IAAA,6BAAgB,EAAC,IAAI,CAAC,SAAS,CAAC,IAAI,IAAA,0BAAa,EAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACpE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,mBAAY,EAAC,OAAO,CAAC,CAAC;YACzC,MAAM,IAAI,GAAG,IAAA,6BAAgB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;YAChE,OAAO,mCAAmC,IAAI,wBAAwB,IAAI,CAAC,KAAK,WAAW,MAAM,EAAE,CAAC;QACxG,CAAC;QAED,kDAAkD;QAClD,OAAO,IAAI,CAAC,GAAG,CAAC;IACpB,CAAC;CACJ;AA1BD,4DA0BC"}
@@ -1,6 +1,6 @@
1
- import { SRPModule } from "../../../crypto";
2
- import { SharingPublicSessionAPIService } from "./apiService";
3
- import { PublicLinkInfo, PublicLinkSrpInfo } from "./interface";
1
+ import { SRPModule } from '../../../crypto';
2
+ import { SharingPublicSessionAPIService } from './apiService';
3
+ import { PublicLinkInfo, PublicLinkSrpInfo } from './interface';
4
4
  /**
5
5
  * Session for a public link.
6
6
  *
@@ -9,7 +9,7 @@ describe('getTokenAndPasswordFromUrl', () => {
9
9
  const result = (0, url_1.getTokenAndPasswordFromUrl)(url);
10
10
  expect(result).toEqual({
11
11
  token: 'abc123',
12
- password: 'def456'
12
+ password: 'def456',
13
13
  });
14
14
  });
15
15
  it('should handle URLs with different domains', () => {
@@ -17,7 +17,7 @@ describe('getTokenAndPasswordFromUrl', () => {
17
17
  const result = (0, url_1.getTokenAndPasswordFromUrl)(url);
18
18
  expect(result).toEqual({
19
19
  token: 'mytoken',
20
- password: 'mypassword'
20
+ password: 'mypassword',
21
21
  });
22
22
  });
23
23
  it('should handle URLs with query parameters', () => {
@@ -25,7 +25,7 @@ describe('getTokenAndPasswordFromUrl', () => {
25
25
  const result = (0, url_1.getTokenAndPasswordFromUrl)(url);
26
26
  expect(result).toEqual({
27
27
  token: 'token123',
28
- password: 'password456'
28
+ password: 'password456',
29
29
  });
30
30
  });
31
31
  });
@@ -0,0 +1,34 @@
1
+ import { PrivateKey } from '../../crypto';
2
+ import { MetricVolumeType, ProtonDriveAccount } from '../../interface';
3
+ import { SharingPublicAPIService } from './apiService';
4
+ import { SharingPublicCryptoCache } from './cryptoCache';
5
+ import { SharingPublicCryptoService } from './cryptoService';
6
+ /**
7
+ * Provides high-level actions for managing public link share.
8
+ *
9
+ * The public link share manager provides the same interface as the code share
10
+ * service so it can be used in the same way in various modules that use shares.
11
+ */
12
+ export declare class SharingPublicSharesManager {
13
+ private apiService;
14
+ private cryptoCache;
15
+ private cryptoService;
16
+ private account;
17
+ private token;
18
+ private promisePublicLinkRoot?;
19
+ constructor(apiService: SharingPublicAPIService, cryptoCache: SharingPublicCryptoCache, cryptoService: SharingPublicCryptoService, account: ProtonDriveAccount, token: string);
20
+ getOwnVolumeIDs(): Promise<{
21
+ volumeId: string;
22
+ rootNodeId: string;
23
+ rootNodeUid: string;
24
+ }>;
25
+ getSharePrivateKey(): Promise<PrivateKey>;
26
+ private getPublicLinkRoot;
27
+ getContextShareMemberEmailKey(): Promise<{
28
+ email: string;
29
+ addressId: string;
30
+ addressKey: PrivateKey;
31
+ addressKeyId: string;
32
+ }>;
33
+ getVolumeMetricContext(): Promise<MetricVolumeType>;
34
+ }
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SharingPublicSharesManager = void 0;
4
+ const interface_1 = require("../../interface");
5
+ const uids_1 = require("../uids");
6
+ /**
7
+ * Provides high-level actions for managing public link share.
8
+ *
9
+ * The public link share manager provides the same interface as the code share
10
+ * service so it can be used in the same way in various modules that use shares.
11
+ */
12
+ class SharingPublicSharesManager {
13
+ apiService;
14
+ cryptoCache;
15
+ cryptoService;
16
+ account;
17
+ token;
18
+ promisePublicLinkRoot;
19
+ constructor(apiService, cryptoCache, cryptoService, account, token) {
20
+ this.apiService = apiService;
21
+ this.cryptoCache = cryptoCache;
22
+ this.cryptoService = cryptoService;
23
+ this.account = account;
24
+ this.token = token;
25
+ this.apiService = apiService;
26
+ this.cryptoCache = cryptoCache;
27
+ this.cryptoService = cryptoService;
28
+ this.account = account;
29
+ this.token = token;
30
+ }
31
+ // TODO: Rename to getRootIDs everywhere.
32
+ async getOwnVolumeIDs() {
33
+ const { rootIds } = await this.getPublicLinkRoot();
34
+ return rootIds;
35
+ }
36
+ async getSharePrivateKey() {
37
+ const { shareKey } = await this.getPublicLinkRoot();
38
+ return shareKey;
39
+ }
40
+ async getPublicLinkRoot() {
41
+ if (!this.promisePublicLinkRoot) {
42
+ this.promisePublicLinkRoot = (async () => {
43
+ const { encryptedNode, encryptedShare } = await this.apiService.getPublicLinkRoot(this.token);
44
+ const { volumeId, nodeId: rootNodeId } = (0, uids_1.splitNodeUid)(encryptedNode.uid);
45
+ const shareKey = await this.cryptoService.decryptPublicLinkShareKey(encryptedShare);
46
+ await this.cryptoCache.setShareKey(shareKey);
47
+ return {
48
+ rootIds: { volumeId, rootNodeId, rootNodeUid: encryptedNode.uid },
49
+ shareKey,
50
+ };
51
+ })();
52
+ }
53
+ return this.promisePublicLinkRoot;
54
+ }
55
+ async getContextShareMemberEmailKey() {
56
+ const address = await this.account.getOwnPrimaryAddress();
57
+ return {
58
+ email: address.email,
59
+ addressId: address.addressId,
60
+ addressKey: address.keys[address.primaryKeyIndex].key,
61
+ addressKeyId: address.keys[address.primaryKeyIndex].id,
62
+ };
63
+ }
64
+ async getVolumeMetricContext() {
65
+ return interface_1.MetricVolumeType.SharedPublic;
66
+ }
67
+ }
68
+ exports.SharingPublicSharesManager = SharingPublicSharesManager;
69
+ //# sourceMappingURL=shares.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shares.js","sourceRoot":"","sources":["../../../src/internal/sharingPublic/shares.ts"],"names":[],"mappings":";;;AACA,+CAAuE;AACvE,kCAAuC;AAKvC;;;;;GAKG;AACH,MAAa,0BAA0B;IAOvB;IACA;IACA;IACA;IACA;IAVJ,qBAAqB,CAG1B;IAEH,YACY,UAAmC,EACnC,WAAqC,EACrC,aAAyC,EACzC,OAA2B,EAC3B,KAAa;QAJb,eAAU,GAAV,UAAU,CAAyB;QACnC,gBAAW,GAAX,WAAW,CAA0B;QACrC,kBAAa,GAAb,aAAa,CAA4B;QACzC,YAAO,GAAP,OAAO,CAAoB;QAC3B,UAAK,GAAL,KAAK,CAAQ;QAErB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,eAAe;QACjB,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACnD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,kBAAkB;QACpB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACpD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAI3B,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC9B,IAAI,CAAC,qBAAqB,GAAG,CAAC,KAAK,IAAI,EAAE;gBACrC,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAE9F,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,IAAA,mBAAY,EAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAEzE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,cAAc,CAAC,CAAC;gBACpF,MAAM,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;gBAE7C,OAAO;oBACH,OAAO,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,CAAC,GAAG,EAAE;oBACjE,QAAQ;iBACX,CAAC;YACN,CAAC,CAAC,EAAE,CAAC;QACT,CAAC;QAED,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,6BAA6B;QAM/B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE,CAAC;QAC1D,OAAO;YACH,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,GAAG;YACrD,YAAY,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE;SACzD,CAAC;IACN,CAAC;IAED,KAAK,CAAC,sBAAsB;QACxB,OAAO,4BAAgB,CAAC,YAAY,CAAC;IACzC,CAAC;CACJ;AAxED,gEAwEC"}
@@ -2,8 +2,8 @@ import { DriveAPIService } from '../apiService';
2
2
  import { UploadTokens } from './interface';
3
3
  import { ThumbnailType } from '../../interface';
4
4
  export declare class UploadAPIService {
5
- private apiService;
6
- private clientUid;
5
+ protected apiService: DriveAPIService;
6
+ protected clientUid: string | undefined;
7
7
  constructor(apiService: DriveAPIService, clientUid: string | undefined);
8
8
  checkAvailableHashes(parentNodeUid: string, hashes: string[]): Promise<{
9
9
  availalbleHashes: string[];
@@ -31,6 +31,15 @@ class UploadAPIService {
31
31
  };
32
32
  }
33
33
  async createDraft(parentNodeUid, node) {
34
+ // The client shouldn't send the clear text size of the file.
35
+ // The intented upload size is needed only for early validation that
36
+ // the file can fit in the remaining quota to avoid data transfer when
37
+ // the upload would be rejected. The backend will still validate
38
+ // the quota during block upload and revision commit.
39
+ const precision = 100_000; // bytes
40
+ const intendedUploadSize = node.intendedUploadSize && node.intendedUploadSize > precision
41
+ ? Math.floor(node.intendedUploadSize / precision) * precision
42
+ : null;
34
43
  const { volumeId, nodeId: parentNodeId } = (0, uids_1.splitNodeUid)(parentNodeUid);
35
44
  const result = await this.apiService.post(`drive/v2/volumes/${volumeId}/files`, {
36
45
  ParentLinkID: parentNodeId,
@@ -38,7 +47,7 @@ class UploadAPIService {
38
47
  Hash: node.hash,
39
48
  MIMEType: node.mediaType,
40
49
  ClientUID: this.clientUid || null,
41
- IntendedUploadSize: node.intendedUploadSize || null,
50
+ IntendedUploadSize: intendedUploadSize,
42
51
  NodeKey: node.armoredNodeKey,
43
52
  NodePassphrase: node.armoredNodePassphrase,
44
53
  NodePassphraseSignature: node.armoredNodePassphraseSignature,
@@ -113,7 +122,7 @@ class UploadAPIService {
113
122
  ManifestSignature: options.armoredManifestSignature,
114
123
  SignatureAddress: options.signatureEmail,
115
124
  XAttr: options.armoredExtendedAttributes || null,
116
- Photo: null, // TODO
125
+ Photo: null, // Only used for photos in the Photo volume.
117
126
  });
118
127
  }
119
128
  async deleteDraft(draftNodeUid) {
@@ -1 +1 @@
1
- {"version":3,"file":"apiService.js","sourceRoot":"","sources":["../../../src/internal/upload/apiService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apiService.js","sourceRoot":"","sources":["../../../src/internal/upload/apiService.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,14 @@
1
1
  export declare class UploadController {
2
2
  private paused;
3
- promise?: Promise<string>;
3
+ promise?: Promise<{
4
+ nodeRevisionUid: string;
5
+ nodeUid: string;
6
+ }>;
4
7
  waitIfPaused(): Promise<void>;
5
8
  pause(): void;
6
9
  resume(): void;
7
- completion(): Promise<string>;
10
+ completion(): Promise<{
11
+ nodeRevisionUid: string;
12
+ nodeUid: string;
13
+ }>;
8
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/internal/upload/controller.ts"],"names":[],"mappings":";;;AAAA,kCAA2C;AAE3C,MAAa,gBAAgB;IACjB,MAAM,GAAG,KAAK,CAAC;IAChB,OAAO,CAAmB;IAEjC,KAAK,CAAC,YAAY;QACd,MAAM,IAAA,uBAAgB,EAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,MAAM;QACF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;CACJ;AAtBD,4CAsBC"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../../src/internal/upload/controller.ts"],"names":[],"mappings":";;;AAAA,kCAA2C;AAE3C,MAAa,gBAAgB;IACjB,MAAM,GAAG,KAAK,CAAC;IAChB,OAAO,CAAyD;IAEvE,KAAK,CAAC,YAAY;QACd,MAAM,IAAA,uBAAgB,EAAC,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;IACvB,CAAC;IAED,MAAM;QACF,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,UAAU;QACZ,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;CACJ;AAtBD,4CAsBC"}