@protontech/drive-sdk 0.1.2 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (167) hide show
  1. package/dist/crypto/driveCrypto.d.ts +11 -0
  2. package/dist/crypto/driveCrypto.js +20 -7
  3. package/dist/crypto/driveCrypto.js.map +1 -1
  4. package/dist/crypto/interface.d.ts +10 -1
  5. package/dist/crypto/openPGPCrypto.d.ts +18 -2
  6. package/dist/crypto/openPGPCrypto.js +25 -6
  7. package/dist/crypto/openPGPCrypto.js.map +1 -1
  8. package/dist/diagnostic/telemetry.d.ts +1 -1
  9. package/dist/diagnostic/telemetry.js +1 -1
  10. package/dist/diagnostic/telemetry.js.map +1 -1
  11. package/dist/interface/download.d.ts +46 -0
  12. package/dist/interface/index.d.ts +2 -2
  13. package/dist/interface/index.js.map +1 -1
  14. package/dist/interface/nodes.d.ts +26 -1
  15. package/dist/interface/nodes.js.map +1 -1
  16. package/dist/interface/sharing.d.ts +3 -1
  17. package/dist/interface/telemetry.d.ts +5 -2
  18. package/dist/interface/telemetry.js.map +1 -1
  19. package/dist/internal/apiService/apiService.js +1 -1
  20. package/dist/internal/apiService/apiService.js.map +1 -1
  21. package/dist/internal/apiService/driveTypes.d.ts +78 -165
  22. package/dist/internal/apiService/errorCodes.d.ts +1 -0
  23. package/dist/internal/apiService/errors.js +1 -0
  24. package/dist/internal/apiService/errors.js.map +1 -1
  25. package/dist/internal/apiService/index.d.ts +1 -1
  26. package/dist/internal/apiService/index.js +2 -2
  27. package/dist/internal/apiService/index.js.map +1 -1
  28. package/dist/internal/apiService/transformers.d.ts +1 -1
  29. package/dist/internal/apiService/transformers.js +2 -2
  30. package/dist/internal/apiService/transformers.js.map +1 -1
  31. package/dist/internal/download/blockIndex.d.ts +11 -0
  32. package/dist/internal/download/blockIndex.js +35 -0
  33. package/dist/internal/download/blockIndex.js.map +1 -0
  34. package/dist/internal/download/blockIndex.test.d.ts +1 -0
  35. package/dist/internal/download/blockIndex.test.js +147 -0
  36. package/dist/internal/download/blockIndex.test.js.map +1 -0
  37. package/dist/internal/download/fileDownloader.d.ts +6 -2
  38. package/dist/internal/download/fileDownloader.js +83 -6
  39. package/dist/internal/download/fileDownloader.js.map +1 -1
  40. package/dist/internal/download/fileDownloader.test.js +69 -4
  41. package/dist/internal/download/fileDownloader.test.js.map +1 -1
  42. package/dist/internal/download/interface.d.ts +4 -4
  43. package/dist/internal/download/seekableStream.d.ts +80 -0
  44. package/dist/internal/download/seekableStream.js +163 -0
  45. package/dist/internal/download/seekableStream.js.map +1 -0
  46. package/dist/internal/download/seekableStream.test.d.ts +1 -0
  47. package/dist/internal/download/seekableStream.test.js +149 -0
  48. package/dist/internal/download/seekableStream.test.js.map +1 -0
  49. package/dist/internal/download/telemetry.js +1 -1
  50. package/dist/internal/download/telemetry.js.map +1 -1
  51. package/dist/internal/download/telemetry.test.js +7 -7
  52. package/dist/internal/download/telemetry.test.js.map +1 -1
  53. package/dist/internal/errors.d.ts +1 -1
  54. package/dist/internal/errors.js +7 -1
  55. package/dist/internal/errors.js.map +1 -1
  56. package/dist/internal/errors.test.js +44 -10
  57. package/dist/internal/errors.test.js.map +1 -1
  58. package/dist/internal/events/index.js +1 -1
  59. package/dist/internal/events/index.js.map +1 -1
  60. package/dist/internal/nodes/apiService.js +16 -3
  61. package/dist/internal/nodes/apiService.js.map +1 -1
  62. package/dist/internal/nodes/apiService.test.js +43 -7
  63. package/dist/internal/nodes/apiService.test.js.map +1 -1
  64. package/dist/internal/nodes/cache.js +12 -3
  65. package/dist/internal/nodes/cache.js.map +1 -1
  66. package/dist/internal/nodes/cache.test.js +31 -1
  67. package/dist/internal/nodes/cache.test.js.map +1 -1
  68. package/dist/internal/nodes/cryptoService.d.ts +4 -1
  69. package/dist/internal/nodes/cryptoService.js +66 -16
  70. package/dist/internal/nodes/cryptoService.js.map +1 -1
  71. package/dist/internal/nodes/cryptoService.test.js +129 -46
  72. package/dist/internal/nodes/cryptoService.test.js.map +1 -1
  73. package/dist/internal/nodes/extendedAttributes.d.ts +2 -1
  74. package/dist/internal/nodes/extendedAttributes.js +27 -1
  75. package/dist/internal/nodes/extendedAttributes.js.map +1 -1
  76. package/dist/internal/nodes/extendedAttributes.test.js +59 -6
  77. package/dist/internal/nodes/extendedAttributes.test.js.map +1 -1
  78. package/dist/internal/nodes/index.test.js +1 -1
  79. package/dist/internal/nodes/index.test.js.map +1 -1
  80. package/dist/internal/nodes/interface.d.ts +18 -2
  81. package/dist/internal/nodes/nodesAccess.js +11 -1
  82. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  83. package/dist/internal/nodes/nodesManagement.js +1 -1
  84. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  85. package/dist/internal/nodes/nodesRevisions.d.ts +4 -3
  86. package/dist/internal/nodes/nodesRevisions.js +2 -2
  87. package/dist/internal/nodes/nodesRevisions.js.map +1 -1
  88. package/dist/internal/shares/cryptoService.js +7 -4
  89. package/dist/internal/shares/cryptoService.js.map +1 -1
  90. package/dist/internal/shares/cryptoService.test.js +5 -3
  91. package/dist/internal/shares/cryptoService.test.js.map +1 -1
  92. package/dist/internal/sharing/apiService.js +5 -5
  93. package/dist/internal/sharing/apiService.js.map +1 -1
  94. package/dist/internal/sharing/cryptoService.d.ts +1 -0
  95. package/dist/internal/sharing/cryptoService.js +22 -10
  96. package/dist/internal/sharing/cryptoService.js.map +1 -1
  97. package/dist/internal/sharing/cryptoService.test.js +7 -4
  98. package/dist/internal/sharing/cryptoService.test.js.map +1 -1
  99. package/dist/internal/sharing/sharingAccess.js +4 -2
  100. package/dist/internal/sharing/sharingAccess.js.map +1 -1
  101. package/dist/internal/sharing/sharingAccess.test.js +6 -0
  102. package/dist/internal/sharing/sharingAccess.test.js.map +1 -1
  103. package/dist/internal/upload/telemetry.js +2 -2
  104. package/dist/internal/upload/telemetry.js.map +1 -1
  105. package/dist/internal/upload/telemetry.test.js +7 -7
  106. package/dist/internal/upload/telemetry.test.js.map +1 -1
  107. package/dist/telemetry.d.ts +2 -2
  108. package/dist/telemetry.js +2 -2
  109. package/dist/telemetry.js.map +1 -1
  110. package/dist/tests/telemetry.js +1 -1
  111. package/dist/tests/telemetry.js.map +1 -1
  112. package/dist/transformers.d.ts +1 -1
  113. package/dist/transformers.js +2 -1
  114. package/dist/transformers.js.map +1 -1
  115. package/package.json +1 -1
  116. package/src/crypto/driveCrypto.ts +70 -25
  117. package/src/crypto/interface.ts +15 -0
  118. package/src/crypto/openPGPCrypto.ts +37 -5
  119. package/src/diagnostic/telemetry.ts +1 -1
  120. package/src/interface/download.ts +46 -0
  121. package/src/interface/index.ts +2 -1
  122. package/src/interface/nodes.ts +28 -1
  123. package/src/interface/sharing.ts +3 -1
  124. package/src/interface/telemetry.ts +6 -1
  125. package/src/internal/apiService/apiService.ts +1 -1
  126. package/src/internal/apiService/driveTypes.ts +78 -165
  127. package/src/internal/apiService/errorCodes.ts +1 -0
  128. package/src/internal/apiService/errors.ts +1 -0
  129. package/src/internal/apiService/index.ts +1 -1
  130. package/src/internal/apiService/transformers.ts +1 -1
  131. package/src/internal/download/blockIndex.test.ts +158 -0
  132. package/src/internal/download/blockIndex.ts +36 -0
  133. package/src/internal/download/fileDownloader.test.ts +100 -7
  134. package/src/internal/download/fileDownloader.ts +109 -9
  135. package/src/internal/download/interface.ts +4 -4
  136. package/src/internal/download/seekableStream.test.ts +187 -0
  137. package/src/internal/download/seekableStream.ts +182 -0
  138. package/src/internal/download/telemetry.test.ts +7 -7
  139. package/src/internal/download/telemetry.ts +1 -1
  140. package/src/internal/errors.test.ts +45 -11
  141. package/src/internal/errors.ts +8 -0
  142. package/src/internal/events/index.ts +1 -1
  143. package/src/internal/nodes/apiService.test.ts +59 -15
  144. package/src/internal/nodes/apiService.ts +21 -4
  145. package/src/internal/nodes/cache.test.ts +34 -1
  146. package/src/internal/nodes/cache.ts +12 -3
  147. package/src/internal/nodes/cryptoService.test.ts +139 -47
  148. package/src/internal/nodes/cryptoService.ts +94 -9
  149. package/src/internal/nodes/extendedAttributes.test.ts +60 -7
  150. package/src/internal/nodes/extendedAttributes.ts +37 -1
  151. package/src/internal/nodes/index.test.ts +1 -1
  152. package/src/internal/nodes/interface.ts +19 -2
  153. package/src/internal/nodes/nodesAccess.ts +15 -1
  154. package/src/internal/nodes/nodesManagement.ts +1 -1
  155. package/src/internal/nodes/nodesRevisions.ts +14 -5
  156. package/src/internal/shares/cryptoService.test.ts +5 -3
  157. package/src/internal/shares/cryptoService.ts +7 -4
  158. package/src/internal/sharing/apiService.ts +6 -6
  159. package/src/internal/sharing/cryptoService.test.ts +7 -4
  160. package/src/internal/sharing/cryptoService.ts +27 -10
  161. package/src/internal/sharing/sharingAccess.test.ts +6 -0
  162. package/src/internal/sharing/sharingAccess.ts +4 -2
  163. package/src/internal/upload/telemetry.test.ts +7 -7
  164. package/src/internal/upload/telemetry.ts +2 -2
  165. package/src/telemetry.ts +2 -2
  166. package/src/tests/telemetry.ts +1 -1
  167. package/src/transformers.ts +4 -2
@@ -58,7 +58,7 @@ export interface MetricHandler<T extends MetricEvent> {
58
58
  * const logger = telemetry.getLogger('myLogger');
59
59
  * logger.debug('Debug message');
60
60
  *
61
- * telemetry.logEvent({ name: 'somethingHappened', value: 42 });
61
+ * telemetry.recordMetric({ name: 'somethingHappened', value: 42 });
62
62
  *
63
63
  * const logs = memoryLogHandler.getLogs();
64
64
  * // Process logs
@@ -78,7 +78,7 @@ export declare class Telemetry<T extends MetricEvent> {
78
78
  metricHandlers?: MetricHandler<T>[];
79
79
  });
80
80
  getLogger(name: string): Logger;
81
- logEvent(event: T): void;
81
+ recordMetric(event: T): void;
82
82
  }
83
83
  /**
84
84
  * Logger class that logs messages with different levels.
package/dist/telemetry.js CHANGED
@@ -38,7 +38,7 @@ var LogLevel;
38
38
  * const logger = telemetry.getLogger('myLogger');
39
39
  * logger.debug('Debug message');
40
40
  *
41
- * telemetry.logEvent({ name: 'somethingHappened', value: 42 });
41
+ * telemetry.recordMetric({ name: 'somethingHappened', value: 42 });
42
42
  *
43
43
  * const logs = memoryLogHandler.getLogs();
44
44
  * // Process logs
@@ -60,7 +60,7 @@ class Telemetry {
60
60
  getLogger(name) {
61
61
  return new Logger(name, this.logFilter, this.logHandlers);
62
62
  }
63
- logEvent(event) {
63
+ recordMetric(event) {
64
64
  const metric = {
65
65
  time: new Date(),
66
66
  event,
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../src/telemetry.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@ const logger_1 = require("./logger");
5
5
  function getMockTelemetry() {
6
6
  return {
7
7
  getLogger: logger_1.getMockLogger,
8
- logEvent: jest.fn(),
8
+ recordMetric: jest.fn(),
9
9
  };
10
10
  }
11
11
  //# sourceMappingURL=telemetry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/tests/telemetry.ts"],"names":[],"mappings":";;AAGA,4CAKC;AAPD,qCAAyC;AAEzC,SAAgB,gBAAgB;IAC5B,OAAO;QACH,SAAS,EAAE,sBAAa;QACxB,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;KACtB,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/tests/telemetry.ts"],"names":[],"mappings":";;AAGA,4CAKC;AAPD,qCAAyC;AAEzC,SAAgB,gBAAgB;IAC5B,OAAO;QACH,SAAS,EAAE,sBAAa;QACxB,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;KAC1B,CAAC;AACN,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { MaybeNode as PublicMaybeNode, MaybeMissingNode as PublicMaybeMissingNode, Result, MissingNode } from './interface';
2
2
  import { DecryptedNode as InternalNode } from './internal/nodes';
3
- type InternalPartialNode = Pick<InternalNode, 'uid' | 'parentUid' | 'name' | 'keyAuthor' | 'nameAuthor' | 'directMemberRole' | 'type' | 'mediaType' | 'isShared' | 'creationTime' | 'trashTime' | 'activeRevision' | 'folder' | 'totalStorageSize' | 'errors' | 'shareId' | 'treeEventScopeId'>;
3
+ type InternalPartialNode = Pick<InternalNode, 'uid' | 'parentUid' | 'name' | 'keyAuthor' | 'nameAuthor' | 'directRole' | 'membership' | 'type' | 'mediaType' | 'isShared' | 'creationTime' | 'trashTime' | 'activeRevision' | 'folder' | 'totalStorageSize' | 'errors' | 'shareId' | 'treeEventScopeId'>;
4
4
  type NodeUid = string | {
5
5
  uid: string;
6
6
  } | Result<{
@@ -49,7 +49,8 @@ function convertInternalNode(node) {
49
49
  parentUid: node.parentUid,
50
50
  keyAuthor: node.keyAuthor,
51
51
  nameAuthor: node.nameAuthor,
52
- directMemberRole: node.directMemberRole,
52
+ directRole: node.directRole,
53
+ membership: node.membership,
53
54
  type: node.type,
54
55
  mediaType: node.mediaType,
55
56
  isShared: node.isShared,
@@ -1 +1 @@
1
- {"version":3,"file":"transformers.js","sourceRoot":"","sources":["../src/transformers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transformers.js","sourceRoot":"","sources":["../src/transformers.ts"],"names":[],"mappings":";;AAqCA,wBAaC;AAED,0BAEC;AAED,kEAMC;AAED,gFAUC;AAED,gEAGC;AAED,kDAsCC;AAvHD,2CAUqB;AA2BrB,SAAgB,MAAM,CAAC,OAAgB;IACnC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,OAAO,CAAC;IACnB,CAAC;IACD,oEAAoE;IACpE,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;QACnB,OAAO,OAAO,CAAC,GAAG,CAAC;IACvB,CAAC;IACD,2DAA2D;IAC3D,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QACb,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;IAC7B,CAAC;IACD,OAAO,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;AAC7B,CAAC;AAED,SAAgB,OAAO,CAAC,QAAmB;IACvC,OAAO,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC;AAEM,KAAK,SAAS,CAAC,CAAC,2BAA2B,CAC9C,YAAiD;IAEjD,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QACpC,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;AACL,CAAC;AAEM,KAAK,SAAS,CAAC,CAAC,kCAAkC,CACrD,YAA+D;IAE/D,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QACpC,IAAI,YAAY,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAA,uBAAW,EAAC,IAAI,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACJ,MAAM,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;AACL,CAAC;AAEM,KAAK,UAAU,0BAA0B,CAAC,WAAyC;IACtF,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;IAC/B,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,SAAgB,mBAAmB,CAAC,IAAyB;IACzD,MAAM,gBAAgB,GAAG;QACrB,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,iBAAiB,EAAE,IAAI,CAAC,OAAO;QAC/B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;KAC1C,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAE3C,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,cAAc,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,EAAE,CAAC;QAC5E,OAAO,IAAA,uBAAW,EAAC;YACf,GAAG,gBAAgB;YACnB,IAAI;YACJ,cAAc,EAAE,cAAc,EAAE,EAAE;gBAC9B,CAAC,CAAC,IAAA,oBAAQ,EAAC,uBAAuB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBACzD,CAAC,CAAC,cAAc;YACpB,MAAM,EAAE,IAAI,CAAC,MAAM;SACA,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,IAAA,oBAAQ,EAAC;QACZ,GAAG,gBAAgB;QACnB,IAAI,EAAE,IAAI,CAAC,KAAK;QAChB,cAAc,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,uBAAuB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;KAC7E,CAAC,CAAC;AAC3B,CAAC;AAED,SAAS,uBAAuB,CAAC,QAA0B;IACvD,OAAO;QACH,GAAG,EAAE,QAAQ,CAAC,GAAG;QACjB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,aAAa,EAAE,QAAQ,CAAC,aAAa;QACrC,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,WAAW,EAAE,QAAQ,CAAC,WAAW;QACjC,uBAAuB,EAAE,QAAQ,CAAC,uBAAuB;QACzD,cAAc,EAAE,QAAQ,CAAC,cAAc;QACvC,yBAAyB,EAAE,QAAQ,CAAC,yBAAyB;KAChE,CAAC;AACN,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@protontech/drive-sdk",
3
- "version": "0.1.2",
3
+ "version": "0.2.1",
4
4
  "description": "Proton Drive SDK",
5
5
  "license": "GPL-3.0",
6
6
  "main": "dist/index.js",
@@ -178,10 +178,18 @@ export class DriveCrypto {
178
178
  key: PrivateKey;
179
179
  passphraseSessionKey: SessionKey;
180
180
  verified: VERIFICATION_STATUS;
181
+ verificationErrors?: Error[];
181
182
  }> {
182
- const passphraseSessionKey = await this.openPGPCrypto.decryptArmoredSessionKey(armoredPassphrase, decryptionKeys);
183
+ const passphraseSessionKey = await this.openPGPCrypto.decryptArmoredSessionKey(
184
+ armoredPassphrase,
185
+ decryptionKeys,
186
+ );
183
187
 
184
- const { data: decryptedPassphrase, verified } = await this.openPGPCrypto.decryptArmoredAndVerifyDetached(
188
+ const {
189
+ data: decryptedPassphrase,
190
+ verified,
191
+ verificationErrors,
192
+ } = await this.openPGPCrypto.decryptArmoredAndVerifyDetached(
185
193
  armoredPassphrase,
186
194
  armoredPassphraseSignature,
187
195
  passphraseSessionKey,
@@ -196,6 +204,7 @@ export class DriveCrypto {
196
204
  key,
197
205
  passphraseSessionKey,
198
206
  verified,
207
+ verificationErrors,
199
208
  };
200
209
  }
201
210
 
@@ -287,20 +296,24 @@ export class DriveCrypto {
287
296
  ): Promise<{
288
297
  sessionKey: SessionKey;
289
298
  verified?: VERIFICATION_STATUS;
299
+ verificationErrors?: Error[];
290
300
  }> {
291
301
  const data = base64StringToUint8Array(base64data);
292
302
 
293
303
  const sessionKey = await this.openPGPCrypto.decryptSessionKey(data, decryptionKeys);
294
304
 
295
305
  let verified;
306
+ let verificationErrors;
296
307
  if (armoredSignature) {
297
- const result = await this.openPGPCrypto.verify(sessionKey.data, armoredSignature, verificationKeys);
308
+ const result = await this.openPGPCrypto.verifyArmored(sessionKey.data, armoredSignature, verificationKeys);
298
309
  verified = result.verified;
310
+ verificationErrors = result.verificationErrors;
299
311
  }
300
312
 
301
313
  return {
302
314
  sessionKey,
303
315
  verified,
316
+ verificationErrors,
304
317
  };
305
318
  }
306
319
 
@@ -423,15 +436,17 @@ export class DriveCrypto {
423
436
  ): Promise<{
424
437
  name: string;
425
438
  verified: VERIFICATION_STATUS;
439
+ verificationErrors?: Error[];
426
440
  }> {
427
- const { data: name, verified } = await this.openPGPCrypto.decryptArmoredAndVerify(
428
- armoredNodeName,
429
- [decryptionKey],
430
- verificationKeys,
431
- );
441
+ const {
442
+ data: name,
443
+ verified,
444
+ verificationErrors,
445
+ } = await this.openPGPCrypto.decryptArmoredAndVerify(armoredNodeName, [decryptionKey], verificationKeys);
432
446
  return {
433
447
  name: uint8ArrayToUtf8(name),
434
448
  verified,
449
+ verificationErrors,
435
450
  };
436
451
  }
437
452
 
@@ -448,6 +463,7 @@ export class DriveCrypto {
448
463
  ): Promise<{
449
464
  hashKey: Uint8Array;
450
465
  verified: VERIFICATION_STATUS;
466
+ verificationErrors?: Error[];
451
467
  }> {
452
468
  // In the past, we had misunderstanding what key is used to sign hash
453
469
  // key. Originally, it meant to be the node key, which web used for all
@@ -455,7 +471,11 @@ export class DriveCrypto {
455
471
  // Similarly, iOS or Android used address key for all nodes. Latest
456
472
  // versions should use node key in all cases, but we accept also
457
473
  // address key. Its still signed with a valid key.
458
- const { data: hashKey, verified } = await this.openPGPCrypto.decryptArmoredAndVerify(
474
+ const {
475
+ data: hashKey,
476
+ verified,
477
+ verificationErrors,
478
+ } = await this.openPGPCrypto.decryptArmoredAndVerify(
459
479
  armoredHashKey,
460
480
  [decryptionAndVerificationKey],
461
481
  [decryptionAndVerificationKey, ...extraVerificationKeys],
@@ -463,6 +483,7 @@ export class DriveCrypto {
463
483
  return {
464
484
  hashKey,
465
485
  verified,
486
+ verificationErrors,
466
487
  };
467
488
  }
468
489
 
@@ -491,8 +512,13 @@ export class DriveCrypto {
491
512
  ): Promise<{
492
513
  extendedAttributes: string;
493
514
  verified: VERIFICATION_STATUS;
515
+ verificationErrors?: Error[];
494
516
  }> {
495
- const { data: decryptedExtendedAttributes, verified } = await this.openPGPCrypto.decryptArmoredAndVerify(
517
+ const {
518
+ data: decryptedExtendedAttributes,
519
+ verified,
520
+ verificationErrors,
521
+ } = await this.openPGPCrypto.decryptArmoredAndVerify(
496
522
  armoreExtendedAttributes,
497
523
  [decryptionKey],
498
524
  verificationKeys,
@@ -501,6 +527,7 @@ export class DriveCrypto {
501
527
  return {
502
528
  extendedAttributes: uint8ArrayToUtf8(decryptedExtendedAttributes),
503
529
  verified,
530
+ verificationErrors,
504
531
  };
505
532
  }
506
533
 
@@ -524,6 +551,23 @@ export class DriveCrypto {
524
551
  };
525
552
  }
526
553
 
554
+ async verifyInvitation(
555
+ base64KeyPacket: string,
556
+ armoredKeyPacketSignature: string,
557
+ verificationKeys: PublicKey[],
558
+ ): Promise<{
559
+ verified: VERIFICATION_STATUS;
560
+ verificationErrors?: Error[];
561
+ }> {
562
+ const { verified, verificationErrors } = await this.openPGPCrypto.verifyArmored(
563
+ base64StringToUint8Array(base64KeyPacket),
564
+ armoredKeyPacketSignature,
565
+ verificationKeys,
566
+ SIGNING_CONTEXTS.SHARING_INVITER,
567
+ );
568
+ return { verified, verificationErrors };
569
+ }
570
+
527
571
  async acceptInvitation(
528
572
  base64KeyPacket: string,
529
573
  signingKey: PrivateKey,
@@ -591,15 +635,17 @@ export class DriveCrypto {
591
635
  ): Promise<{
592
636
  decryptedThumbnail: Uint8Array;
593
637
  verified: VERIFICATION_STATUS;
638
+ verificationErrors?: Error[];
594
639
  }> {
595
- const { data: decryptedThumbnail, verified } = await this.openPGPCrypto.decryptAndVerify(
596
- encryptedThumbnail,
597
- sessionKey,
598
- verificationKeys,
599
- );
640
+ const {
641
+ data: decryptedThumbnail,
642
+ verified,
643
+ verificationErrors,
644
+ } = await this.openPGPCrypto.decryptAndVerify(encryptedThumbnail, sessionKey, verificationKeys);
600
645
  return {
601
646
  decryptedThumbnail,
602
647
  verified,
648
+ verificationErrors,
603
649
  };
604
650
  }
605
651
 
@@ -627,15 +673,8 @@ export class DriveCrypto {
627
673
  };
628
674
  }
629
675
 
630
- async decryptBlock(
631
- encryptedBlock: Uint8Array,
632
- sessionKey: SessionKey,
633
- ): Promise<Uint8Array> {
634
- const { data: decryptedBlock } = await this.openPGPCrypto.decryptAndVerify(
635
- encryptedBlock,
636
- sessionKey,
637
- [],
638
- );
676
+ async decryptBlock(encryptedBlock: Uint8Array, sessionKey: SessionKey): Promise<Uint8Array> {
677
+ const { data: decryptedBlock } = await this.openPGPCrypto.decryptAndVerify(encryptedBlock, sessionKey, []);
639
678
 
640
679
  return decryptedBlock;
641
680
  }
@@ -658,10 +697,16 @@ export class DriveCrypto {
658
697
  verificationKeys: PublicKey | PublicKey[],
659
698
  ): Promise<{
660
699
  verified: VERIFICATION_STATUS;
700
+ verificationErrors?: Error[];
661
701
  }> {
662
- const { verified } = await this.openPGPCrypto.verify(manifest, armoredSignature, verificationKeys);
702
+ const { verified, verificationErrors } = await this.openPGPCrypto.verifyArmored(
703
+ manifest,
704
+ armoredSignature,
705
+ verificationKeys,
706
+ );
663
707
  return {
664
708
  verified,
709
+ verificationErrors,
665
710
  };
666
711
  }
667
712
 
@@ -170,11 +170,22 @@ export interface OpenPGPCrypto {
170
170
  }>;
171
171
 
172
172
  verify: (
173
+ data: Uint8Array,
174
+ signature: Uint8Array,
175
+ verificationKeys: PublicKey | PublicKey[],
176
+ ) => Promise<{
177
+ verified: VERIFICATION_STATUS;
178
+ verificationErrors?: Error[];
179
+ }>;
180
+
181
+ verifyArmored: (
173
182
  data: Uint8Array,
174
183
  armoredSignature: string,
175
184
  verificationKeys: PublicKey | PublicKey[],
185
+ signatureContext?: string,
176
186
  ) => Promise<{
177
187
  verified: VERIFICATION_STATUS;
188
+ verificationErrors?: Error[];
178
189
  }>;
179
190
 
180
191
  decryptSessionKey: (data: Uint8Array, decryptionKeys: PrivateKey | PrivateKey[]) => Promise<SessionKey>;
@@ -190,6 +201,7 @@ export interface OpenPGPCrypto {
190
201
  ): Promise<{
191
202
  data: Uint8Array;
192
203
  verified: VERIFICATION_STATUS;
204
+ verificationErrors?: Error[];
193
205
  }>;
194
206
 
195
207
  decryptAndVerifyDetached(
@@ -200,6 +212,7 @@ export interface OpenPGPCrypto {
200
212
  ): Promise<{
201
213
  data: Uint8Array;
202
214
  verified: VERIFICATION_STATUS;
215
+ verificationErrors?: Error[];
203
216
  }>;
204
217
 
205
218
  decryptArmored(armoredData: string, decryptionKeys: PrivateKey | PrivateKey[]): Promise<Uint8Array>;
@@ -211,6 +224,7 @@ export interface OpenPGPCrypto {
211
224
  ) => Promise<{
212
225
  data: Uint8Array;
213
226
  verified: VERIFICATION_STATUS;
227
+ verificationErrors?: Error[];
214
228
  }>;
215
229
 
216
230
  decryptArmoredAndVerifyDetached: (
@@ -221,6 +235,7 @@ export interface OpenPGPCrypto {
221
235
  ) => Promise<{
222
236
  data: Uint8Array;
223
237
  verified: VERIFICATION_STATUS;
238
+ verificationErrors?: Error[];
224
239
  }>;
225
240
 
226
241
  decryptArmoredWithPassword(armoredData: string, password: string): Promise<Uint8Array>;
@@ -45,6 +45,7 @@ export interface OpenPGPCryptoProxy {
45
45
  // Web clients are using newer pmcrypto, but CLI is using older version due to build issues with Bun.
46
46
  verified?: VERIFICATION_STATUS;
47
47
  verificationStatus?: VERIFICATION_STATUS;
48
+ verificationErrors?: Error[];
48
49
  }>;
49
50
  signMessage: (options: {
50
51
  format: 'binary' | 'armored';
@@ -55,13 +56,16 @@ export interface OpenPGPCryptoProxy {
55
56
  }) => Promise<Uint8Array | string>;
56
57
  verifyMessage: (options: {
57
58
  binaryData: Uint8Array;
58
- armoredSignature: string;
59
+ armoredSignature?: string;
60
+ binarySignature?: Uint8Array;
59
61
  verificationKeys: PublicKey | PublicKey[];
62
+ signatureContext?: { critical: boolean; value: string };
60
63
  }) => Promise<{
61
64
  // pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
62
65
  // Web clients are using newer pmcrypto, but CLI is using older version due to build issues with Bun.
63
66
  verified?: VERIFICATION_STATUS;
64
67
  verificationStatus?: VERIFICATION_STATUS;
68
+ errors?: Error[];
65
69
  }>;
66
70
  }
67
71
 
@@ -238,16 +242,38 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
238
242
  };
239
243
  }
240
244
 
241
- async verify(data: Uint8Array, armoredSignature: string, verificationKeys: PublicKey | PublicKey[]) {
242
- const { verified, verificationStatus } = await this.cryptoProxy.verifyMessage({
245
+ async verify(data: Uint8Array, signature: Uint8Array, verificationKeys: PublicKey | PublicKey[]) {
246
+ const { verified, verificationStatus, errors } = await this.cryptoProxy.verifyMessage({
247
+ binaryData: data,
248
+ binarySignature: signature,
249
+ verificationKeys,
250
+ });
251
+ return {
252
+ // pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
253
+ // Proper typing is too complex, it will be removed to support only newer pmcrypto.
254
+ verified: verified || verificationStatus!,
255
+ verificationErrors: errors,
256
+ };
257
+ }
258
+
259
+ async verifyArmored(
260
+ data: Uint8Array,
261
+ armoredSignature: string,
262
+ verificationKeys: PublicKey | PublicKey[],
263
+ signatureContext?: string,
264
+ ) {
265
+ const { verified, verificationStatus, errors } = await this.cryptoProxy.verifyMessage({
243
266
  binaryData: data,
244
267
  armoredSignature,
245
268
  verificationKeys,
269
+ signatureContext: signatureContext ? { critical: true, value: signatureContext } : undefined,
246
270
  });
271
+
247
272
  return {
248
273
  // pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
249
274
  // Proper typing is too complex, it will be removed to support only newer pmcrypto.
250
275
  verified: verified || verificationStatus!,
276
+ verificationErrors: errors,
251
277
  };
252
278
  }
253
279
 
@@ -290,6 +316,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
290
316
  data: decryptedData,
291
317
  verified,
292
318
  verificationStatus,
319
+ verificationErrors,
293
320
  } = await this.cryptoProxy.decryptMessage({
294
321
  binaryMessage: data,
295
322
  sessionKeys: sessionKey,
@@ -302,6 +329,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
302
329
  // pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
303
330
  // Proper typing is too complex, it will be removed to support only newer pmcrypto.
304
331
  verified: verified || verificationStatus!,
332
+ verificationErrors,
305
333
  };
306
334
  }
307
335
 
@@ -315,6 +343,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
315
343
  data: decryptedData,
316
344
  verified,
317
345
  verificationStatus,
346
+ verificationErrors,
318
347
  } = await this.cryptoProxy.decryptMessage({
319
348
  binaryMessage: data,
320
349
  binarySignature: signature,
@@ -328,6 +357,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
328
357
  // pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
329
358
  // Proper typing is too complex, it will be removed to support only newer pmcrypto.
330
359
  verified: verified || verificationStatus!,
360
+ verificationErrors,
331
361
  };
332
362
  }
333
363
 
@@ -345,7 +375,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
345
375
  decryptionKeys: PrivateKey | PrivateKey[],
346
376
  verificationKeys: PublicKey | PublicKey[],
347
377
  ) {
348
- const { data, verified, verificationStatus } = await this.cryptoProxy.decryptMessage({
378
+ const { data, verified, verificationStatus, verificationErrors } = await this.cryptoProxy.decryptMessage({
349
379
  armoredMessage: armoredData,
350
380
  decryptionKeys,
351
381
  verificationKeys,
@@ -357,6 +387,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
357
387
  // pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
358
388
  // Proper typing is too complex, it will be removed to support only newer pmcrypto.
359
389
  verified: verified || verificationStatus!,
390
+ verificationErrors,
360
391
  };
361
392
  }
362
393
 
@@ -366,7 +397,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
366
397
  sessionKey: SessionKey,
367
398
  verificationKeys: PublicKey | PublicKey[],
368
399
  ) {
369
- const { data, verified, verificationStatus } = await this.cryptoProxy.decryptMessage({
400
+ const { data, verified, verificationStatus, verificationErrors } = await this.cryptoProxy.decryptMessage({
370
401
  armoredMessage: armoredData,
371
402
  armoredSignature,
372
403
  sessionKeys: sessionKey,
@@ -379,6 +410,7 @@ export class OpenPGPCryptoWithCryptoProxy implements OpenPGPCrypto {
379
410
  // pmcrypto 8.3.0 changes `verified` to `verificationStatus`.
380
411
  // Proper typing is too complex, it will be removed to support only newer pmcrypto.
381
412
  verified: verified || verificationStatus!,
413
+ verificationErrors,
382
414
  };
383
415
  }
384
416
 
@@ -20,7 +20,7 @@ export class DiagnosticTelemetry extends EventsGenerator {
20
20
  });
21
21
  }
22
22
 
23
- logEvent(event: MetricEvent): void {
23
+ recordMetric(event: MetricEvent): void {
24
24
  if (event.eventName === 'download' && !event.error) {
25
25
  return;
26
26
  }
@@ -26,6 +26,35 @@ export interface FileDownloader {
26
26
  streamFactory: WritableStream,
27
27
  onProgress?: (downloadedBytes: number) => void,
28
28
  ): DownloadController;
29
+
30
+ /**
31
+ * Get a seekable stream that can be used to download specific range of
32
+ * data from the file. This is useful for video players to download the
33
+ * next several bytes of the video, or skip to the middle without the
34
+ * need to download the entire file.
35
+ *
36
+ * Stream doesn't verify data integrity. For the full integrity of
37
+ * the file, use `writeToStream` instead.
38
+ *
39
+ * The stream is not opportunitistically downloading the data ahead of
40
+ * the time. It will only download the data when it is requested. To
41
+ * provide smooth experience, pre-buffer the data based on the expected
42
+ * playback speed.
43
+ *
44
+ * The file is chunked into blocks that must be fully downloaded to provide
45
+ * given range of data within the block. To avoid downloading the same
46
+ * block multiple times, a few blocks can be cached. The size of the cache
47
+ * might change in the future to improve performance.
48
+ *
49
+ * Example:
50
+ *
51
+ * ```ts
52
+ * const seekableStream = fileDownloader.getSeekableStream();
53
+ * await seekableStream.seek(1000);
54
+ * const { value, done } = await seekableStream.read(100);
55
+ * ```
56
+ */
57
+ getSeekableStream(): SeekableReadableStream;
29
58
  }
30
59
 
31
60
  export interface DownloadController {
@@ -33,3 +62,20 @@ export interface DownloadController {
33
62
  resume(): void;
34
63
  completion(): Promise<void>;
35
64
  }
65
+
66
+ export interface SeekableReadableStream extends ReadableStream<Uint8Array> {
67
+ /**
68
+ * Read a specific number of bytes from the stream at the current position.
69
+ *
70
+ * @param numBytes - The number of bytes to read.
71
+ * @returns A promise that resolves to the read bytes.
72
+ */
73
+ read(numBytes: number): Promise<{ value: Uint8Array; done: boolean }>;
74
+
75
+ /**
76
+ * Seek to the given position in the stream from the beginning of the stream.
77
+ *
78
+ * @param position - The position to seek to in bytes.
79
+ */
80
+ seek(position: number): void | Promise<void>;
81
+ }
@@ -13,7 +13,7 @@ export type { Author, UnverifiedAuthorError, AnonymousUser } from './author';
13
13
  export type { ProtonDriveConfig } from './config';
14
14
  export type { Device, DeviceOrUid } from './devices';
15
15
  export { DeviceType } from './devices';
16
- export type { FileDownloader, DownloadController } from './download';
16
+ export type { FileDownloader, DownloadController, SeekableReadableStream } from './download';
17
17
  export type {
18
18
  DriveListener,
19
19
  LatestEventIdProvider,
@@ -41,6 +41,7 @@ export type {
41
41
  NodeOrUid,
42
42
  RevisionOrUid,
43
43
  NodeResult,
44
+ Membership,
44
45
  } from './nodes';
45
46
  export { NodeType, MemberRole, RevisionState } from './nodes';
46
47
  export type {
@@ -57,7 +57,17 @@ export type NodeEntity = {
57
57
  * the file, key and content author is user A, while name author is user B.
58
58
  */
59
59
  nameAuthor: Author;
60
- directMemberRole: MemberRole;
60
+ /**
61
+ * Role set directly on the node. If not set, the role is inherited from
62
+ * the parent node. Client must traverse the tree to get the actual role.
63
+ * Actual role should be the highest role available in the tree.
64
+ */
65
+ directRole: MemberRole;
66
+ /**
67
+ * Membership information set directly on the node. If not set, the
68
+ * membership is inherited from the parent node.
69
+ */
70
+ membership?: Membership;
61
71
  type: NodeType;
62
72
  mediaType?: string;
63
73
  /**
@@ -157,6 +167,23 @@ export enum NodeType {
157
167
  Album = 'album',
158
168
  }
159
169
 
170
+ export type Membership = {
171
+ role: MemberRole;
172
+ /**
173
+ * Date when the node was shared with the user.
174
+ */
175
+ inviteTime: Date;
176
+ /**
177
+ * Author who shared the node with the user.
178
+ *
179
+ * If the author cannot be verified, it means that the invitation could
180
+ * be forged by bad actor. User should be warned before accepting
181
+ * the invitation or opening the shared content.
182
+ */
183
+ sharedBy: Author;
184
+ // TODO: acceptedBy: Author;
185
+ };
186
+
160
187
  export enum MemberRole {
161
188
  Viewer = 'viewer',
162
189
  Editor = 'editor',
@@ -51,6 +51,7 @@ export type Bookmark = {
51
51
  uid: string;
52
52
  creationTime: Date;
53
53
  url: string;
54
+ customPassword?: string;
54
55
  node: {
55
56
  name: string;
56
57
  type: NodeType;
@@ -65,8 +66,9 @@ export type Bookmark = {
65
66
  * SDK to represent the bookmark in a way that is easy to work with. Whenever
66
67
  * any field cannot be decrypted, it is returned as `DegradedBookmark` type.
67
68
  */
68
- export type DegradedBookmark = Omit<Bookmark, 'url' | 'node'> & {
69
+ export type DegradedBookmark = Omit<Bookmark, 'url' | 'customPassword' | 'node'> & {
69
70
  url: Result<string, Error>;
71
+ customPassword: Result<string | undefined, Error>;
70
72
  node: Omit<Bookmark['node'], 'name'> & {
71
73
  name: Result<string, Error | InvalidNameError>;
72
74
  };