@protontech/drive-sdk 0.0.12 → 0.0.13

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 (89) hide show
  1. package/dist/errors.d.ts +7 -3
  2. package/dist/errors.js +9 -4
  3. package/dist/errors.js.map +1 -1
  4. package/dist/interface/index.d.ts +1 -1
  5. package/dist/interface/nodes.d.ts +12 -1
  6. package/dist/interface/nodes.js +11 -0
  7. package/dist/interface/nodes.js.map +1 -1
  8. package/dist/interface/upload.d.ts +51 -3
  9. package/dist/internal/apiService/driveTypes.d.ts +1341 -465
  10. package/dist/internal/apiService/errors.js +2 -2
  11. package/dist/internal/apiService/errors.js.map +1 -1
  12. package/dist/internal/apiService/transformers.js +2 -0
  13. package/dist/internal/apiService/transformers.js.map +1 -1
  14. package/dist/internal/asyncIteratorMap.d.ts +15 -0
  15. package/dist/internal/asyncIteratorMap.js +59 -0
  16. package/dist/internal/asyncIteratorMap.js.map +1 -0
  17. package/dist/internal/asyncIteratorMap.test.d.ts +1 -0
  18. package/dist/internal/asyncIteratorMap.test.js +120 -0
  19. package/dist/internal/asyncIteratorMap.test.js.map +1 -0
  20. package/dist/internal/nodes/apiService.d.ts +2 -2
  21. package/dist/internal/nodes/apiService.js +16 -6
  22. package/dist/internal/nodes/apiService.js.map +1 -1
  23. package/dist/internal/nodes/apiService.test.js +30 -8
  24. package/dist/internal/nodes/apiService.test.js.map +1 -1
  25. package/dist/internal/nodes/cache.js +1 -0
  26. package/dist/internal/nodes/cache.js.map +1 -1
  27. package/dist/internal/nodes/cache.test.js +1 -0
  28. package/dist/internal/nodes/cache.test.js.map +1 -1
  29. package/dist/internal/nodes/cryptoService.test.js +34 -0
  30. package/dist/internal/nodes/cryptoService.test.js.map +1 -1
  31. package/dist/internal/nodes/index.test.js +3 -1
  32. package/dist/internal/nodes/index.test.js.map +1 -1
  33. package/dist/internal/nodes/interface.d.ts +3 -1
  34. package/dist/internal/nodes/nodesAccess.js +28 -7
  35. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  36. package/dist/internal/nodes/nodesAccess.test.js +7 -6
  37. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  38. package/dist/internal/sharing/apiService.js +19 -2
  39. package/dist/internal/sharing/apiService.js.map +1 -1
  40. package/dist/internal/upload/fileUploader.d.ts +49 -53
  41. package/dist/internal/upload/fileUploader.js +91 -395
  42. package/dist/internal/upload/fileUploader.js.map +1 -1
  43. package/dist/internal/upload/fileUploader.test.js +38 -292
  44. package/dist/internal/upload/fileUploader.test.js.map +1 -1
  45. package/dist/internal/upload/index.d.ts +3 -3
  46. package/dist/internal/upload/index.js +20 -41
  47. package/dist/internal/upload/index.js.map +1 -1
  48. package/dist/internal/upload/manager.d.ts +1 -1
  49. package/dist/internal/upload/manager.js +16 -19
  50. package/dist/internal/upload/manager.js.map +1 -1
  51. package/dist/internal/upload/manager.test.js +42 -83
  52. package/dist/internal/upload/manager.test.js.map +1 -1
  53. package/dist/internal/upload/streamUploader.d.ts +62 -0
  54. package/dist/internal/upload/streamUploader.js +441 -0
  55. package/dist/internal/upload/streamUploader.js.map +1 -0
  56. package/dist/internal/upload/streamUploader.test.d.ts +1 -0
  57. package/dist/internal/upload/streamUploader.test.js +358 -0
  58. package/dist/internal/upload/streamUploader.test.js.map +1 -0
  59. package/dist/protonDriveClient.d.ts +4 -4
  60. package/dist/protonDriveClient.js +1 -1
  61. package/dist/protonDriveClient.js.map +1 -1
  62. package/package.json +2 -2
  63. package/src/errors.ts +10 -4
  64. package/src/interface/index.ts +1 -1
  65. package/src/interface/nodes.ts +11 -0
  66. package/src/interface/upload.ts +53 -3
  67. package/src/internal/apiService/driveTypes.ts +1341 -465
  68. package/src/internal/apiService/errors.ts +3 -2
  69. package/src/internal/apiService/transformers.ts +2 -0
  70. package/src/internal/asyncIteratorMap.test.ts +150 -0
  71. package/src/internal/asyncIteratorMap.ts +64 -0
  72. package/src/internal/nodes/apiService.test.ts +36 -7
  73. package/src/internal/nodes/apiService.ts +19 -7
  74. package/src/internal/nodes/cache.test.ts +1 -0
  75. package/src/internal/nodes/cache.ts +1 -0
  76. package/src/internal/nodes/cryptoService.test.ts +38 -0
  77. package/src/internal/nodes/index.test.ts +3 -1
  78. package/src/internal/nodes/interface.ts +4 -1
  79. package/src/internal/nodes/nodesAccess.test.ts +7 -6
  80. package/src/internal/nodes/nodesAccess.ts +30 -7
  81. package/src/internal/sharing/apiService.ts +24 -2
  82. package/src/internal/upload/fileUploader.test.ts +46 -376
  83. package/src/internal/upload/fileUploader.ts +114 -494
  84. package/src/internal/upload/index.ts +26 -50
  85. package/src/internal/upload/manager.test.ts +45 -92
  86. package/src/internal/upload/manager.ts +30 -32
  87. package/src/internal/upload/streamUploader.test.ts +469 -0
  88. package/src/internal/upload/streamUploader.ts +552 -0
  89. package/src/protonDriveClient.ts +5 -4
package/dist/errors.d.ts CHANGED
@@ -41,7 +41,11 @@ export declare class ValidationError extends ProtonDriveError {
41
41
  * Use only for debugging purposes.
42
42
  */
43
43
  readonly code?: number;
44
- constructor(message: string, code?: number);
44
+ /**
45
+ * Additional details about the error provided by the server.
46
+ */
47
+ readonly details?: object;
48
+ constructor(message: string, code?: number, details?: object);
45
49
  }
46
50
  /**
47
51
  * Error thrown when the node already exists.
@@ -53,8 +57,8 @@ export declare class ValidationError extends ProtonDriveError {
53
57
  */
54
58
  export declare class NodeAlreadyExistsValidationError extends ValidationError {
55
59
  name: string;
56
- readonly availableName: string;
57
- constructor(message: string, code: number, availableName: string);
60
+ readonly existingNodeUid?: string;
61
+ constructor(message: string, code: number, existingNodeUid?: string);
58
62
  }
59
63
  /**
60
64
  * Error thrown when the API call fails.
package/dist/errors.js CHANGED
@@ -49,9 +49,14 @@ class ValidationError extends ProtonDriveError {
49
49
  * Use only for debugging purposes.
50
50
  */
51
51
  code;
52
- constructor(message, code) {
52
+ /**
53
+ * Additional details about the error provided by the server.
54
+ */
55
+ details;
56
+ constructor(message, code, details) {
53
57
  super(message);
54
58
  this.code = code;
59
+ this.details = details;
55
60
  }
56
61
  }
57
62
  exports.ValidationError = ValidationError;
@@ -65,10 +70,10 @@ exports.ValidationError = ValidationError;
65
70
  */
66
71
  class NodeAlreadyExistsValidationError extends ValidationError {
67
72
  name = 'NodeAlreadyExistsValidationError';
68
- availableName;
69
- constructor(message, code, availableName) {
73
+ existingNodeUid;
74
+ constructor(message, code, existingNodeUid) {
70
75
  super(message, code);
71
- this.availableName = availableName;
76
+ this.existingNodeUid = existingNodeUid;
72
77
  }
73
78
  }
74
79
  exports.NodeAlreadyExistsValidationError = NodeAlreadyExistsValidationError;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,+BAAyB;AAEzB;;;;;;;;;;;GAWG;AACH,MAAa,gBAAiB,SAAQ,KAAK;IACvC,IAAI,GAAG,kBAAkB,CAAC;CAC7B;AAFD,4CAEC;AAED;;;;;GAKG;AACH,MAAa,UAAW,SAAQ,gBAAgB;IAC5C,IAAI,GAAG,YAAY,CAAC;IAEpB,YAAY,OAAgB;QACxB,KAAK,CAAC,OAAO,IAAI,IAAA,QAAC,EAAC,OAAO,CAAC,CAAC,CAAC,CAAA,mBAAmB,CAAC,CAAC;IACtD,CAAC;CACJ;AAND,gCAMC;AAED;;;;;;;;;GASG;AACH,MAAa,eAAgB,SAAQ,gBAAgB;IACjD,IAAI,GAAG,iBAAiB,CAAC;IAEzB;;;;OAIG;IACa,IAAI,CAAU;IAE9B,YAAY,OAAe,EAAE,IAAa;QACtC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ;AAdD,0CAcC;AAED;;;;;;;GAOG;AACH,MAAa,gCAAiC,SAAQ,eAAe;IACjE,IAAI,GAAG,kCAAkC,CAAC;IAE1B,aAAa,CAAS;IAEtC,YAAY,OAAe,EAAE,IAAY,EAAE,aAAqB;QAC5D,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACvC,CAAC;CACJ;AATD,4EASC;AAED;;;;;;;;GAQG;AACH,MAAa,WAAY,SAAQ,gBAAgB;IAC7C,IAAI,GAAG,aAAa,CAAC;IAErB;;;;OAIG;IACa,UAAU,CAAU;IACpC;;;;OAIG;IACa,IAAI,CAAU;CACjC;AAfD,kCAeC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAa,gBAAiB,SAAQ,WAAW;IAC7C,IAAI,GAAG,kBAAkB,CAAC;IAE1B,IAAI,GAAG,GAAG,CAAC;CACd;AAJD,4CAIC;AAED;;;;;;;GAOG;AACH,MAAa,eAAgB,SAAQ,gBAAgB;IACjD,IAAI,GAAG,iBAAiB,CAAC;CAC5B;AAFD,0CAEC;AAED;;;;;;;;;GASG;AACH,MAAa,eAAgB,SAAQ,gBAAgB;IACjD,IAAI,GAAG,iBAAiB,CAAC;CAC5B;AAFD,0CAEC;AAED;;;;;;;GAOG;AACH,MAAa,cAAe,SAAQ,gBAAgB;IAChD,IAAI,GAAG,gBAAgB,CAAC;IAER,KAAK,CAAU;IAE/B,YAAY,OAAe,EAAE,KAAc;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;CACJ;AATD,wCASC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,+BAAyB;AAEzB;;;;;;;;;;;GAWG;AACH,MAAa,gBAAiB,SAAQ,KAAK;IACvC,IAAI,GAAG,kBAAkB,CAAC;CAC7B;AAFD,4CAEC;AAED;;;;;GAKG;AACH,MAAa,UAAW,SAAQ,gBAAgB;IAC5C,IAAI,GAAG,YAAY,CAAC;IAEpB,YAAY,OAAgB;QACxB,KAAK,CAAC,OAAO,IAAI,IAAA,QAAC,EAAC,OAAO,CAAC,CAAC,CAAC,CAAA,mBAAmB,CAAC,CAAC;IACtD,CAAC;CACJ;AAND,gCAMC;AAED;;;;;;;;;GASG;AACH,MAAa,eAAgB,SAAQ,gBAAgB;IACjD,IAAI,GAAG,iBAAiB,CAAC;IAEzB;;;;OAIG;IACa,IAAI,CAAU;IAE9B;;OAEG;IACa,OAAO,CAAU;IAEjC,YAAY,OAAe,EAAE,IAAa,EAAE,OAAgB;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;CACJ;AApBD,0CAoBC;AAED;;;;;;;GAOG;AACH,MAAa,gCAAiC,SAAQ,eAAe;IACjE,IAAI,GAAG,kCAAkC,CAAC;IAE1B,eAAe,CAAU;IAEzC,YAAY,OAAe,EAAE,IAAY,EAAE,eAAwB;QAC/D,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrB,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;IAC3C,CAAC;CACJ;AATD,4EASC;AAED;;;;;;;;GAQG;AACH,MAAa,WAAY,SAAQ,gBAAgB;IAC7C,IAAI,GAAG,aAAa,CAAC;IAErB;;;;OAIG;IACa,UAAU,CAAU;IACpC;;;;OAIG;IACa,IAAI,CAAU;CACjC;AAfD,kCAeC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAa,gBAAiB,SAAQ,WAAW;IAC7C,IAAI,GAAG,kBAAkB,CAAC;IAE1B,IAAI,GAAG,GAAG,CAAC;CACd;AAJD,4CAIC;AAED;;;;;;;GAOG;AACH,MAAa,eAAgB,SAAQ,gBAAgB;IACjD,IAAI,GAAG,iBAAiB,CAAC;CAC5B;AAFD,0CAEC;AAED;;;;;;;;;GASG;AACH,MAAa,eAAgB,SAAQ,gBAAgB;IACjD,IAAI,GAAG,iBAAiB,CAAC;CAC5B;AAFD,0CAEC;AAED;;;;;;;GAOG;AACH,MAAa,cAAe,SAAQ,gBAAgB;IAChD,IAAI,GAAG,gBAAgB,CAAC;IAER,KAAK,CAAU;IAE/B,YAAY,OAAe,EAAE,KAAc;QACvC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;CACJ;AATD,wCASC"}
@@ -19,7 +19,7 @@ export type { ProtonInvitation, ProtonInvitationWithNode, NonProtonInvitation, M
19
19
  export { NonProtonInvitationState } from './sharing';
20
20
  export type { Telemetry, Logger, MetricAPIRetrySucceededEvent, MetricUploadEvent, MetricsUploadErrorType, MetricDownloadEvent, MetricsDownloadErrorType, MetricDecryptionErrorEvent, MetricsDecryptionErrorField, MetricVerificationErrorEvent, MetricVerificationErrorField, MetricBlockVerificationErrorEvent, MetricVolumeEventsSubscriptionsChangedEvent, MetricEvent } from './telemetry';
21
21
  export { MetricVolumeType } from './telemetry';
22
- export type { Fileuploader, UploadController, UploadMetadata } from './upload';
22
+ export type { FileUploader, FileRevisionUploader, UploadController, UploadMetadata } from './upload';
23
23
  export type { Thumbnail, ThumbnailResult } from './thumbnail';
24
24
  export { ThumbnailType } from './thumbnail';
25
25
  export type ProtonDriveTelemetry = Telemetry<MetricEvent>;
@@ -127,7 +127,18 @@ export type InvalidNameError = {
127
127
  };
128
128
  export declare enum NodeType {
129
129
  File = "file",
130
- Folder = "folder"
130
+ Folder = "folder",
131
+ /**
132
+ * Album is a special type available only in Photos section.
133
+ *
134
+ * The SDK does not support any album-specific actions, but it can load
135
+ * the node and do general operations on it, such as sharing. However,
136
+ * you should not rely that anything can work. It is not guaranteed that
137
+ * and in the future specific Photos SDK will support albums.
138
+ *
139
+ * @deprecated This type is not part of the public API.
140
+ */
141
+ Album = "album"
131
142
  }
132
143
  export declare enum MemberRole {
133
144
  Viewer = "viewer",
@@ -5,6 +5,17 @@ var NodeType;
5
5
  (function (NodeType) {
6
6
  NodeType["File"] = "file";
7
7
  NodeType["Folder"] = "folder";
8
+ /**
9
+ * Album is a special type available only in Photos section.
10
+ *
11
+ * The SDK does not support any album-specific actions, but it can load
12
+ * the node and do general operations on it, such as sharing. However,
13
+ * you should not rely that anything can work. It is not guaranteed that
14
+ * and in the future specific Photos SDK will support albums.
15
+ *
16
+ * @deprecated This type is not part of the public API.
17
+ */
18
+ NodeType["Album"] = "album";
8
19
  })(NodeType || (exports.NodeType = NodeType = {}));
9
20
  var MemberRole;
10
21
  (function (MemberRole) {
@@ -1 +1 @@
1
- {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/interface/nodes.ts"],"names":[],"mappings":";;;AAsIA,IAAY,QAGX;AAHD,WAAY,QAAQ;IAChB,yBAAa,CAAA;IACb,6BAAiB,CAAA;AACrB,CAAC,EAHW,QAAQ,wBAAR,QAAQ,QAGnB;AAED,IAAY,UAKX;AALD,WAAY,UAAU;IAClB,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;IACjB,6BAAe,CAAA;IACf,qCAAuB,CAAA;AAC3B,CAAC,EALW,UAAU,0BAAV,UAAU,QAKrB;AAsBD,IAAY,aAGX;AAHD,WAAY,aAAa;IACrB,kCAAiB,CAAA;IACjB,0CAAyB,CAAA;AAC7B,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB"}
1
+ {"version":3,"file":"nodes.js","sourceRoot":"","sources":["../../src/interface/nodes.ts"],"names":[],"mappings":";;;AAsIA,IAAY,QAcX;AAdD,WAAY,QAAQ;IAChB,yBAAa,CAAA;IACb,6BAAiB,CAAA;IACjB;;;;;;;;;OASG;IACH,2BAAe,CAAA;AACnB,CAAC,EAdW,QAAQ,wBAAR,QAAQ,QAcnB;AAED,IAAY,UAKX;AALD,WAAY,UAAU;IAClB,+BAAiB,CAAA;IACjB,+BAAiB,CAAA;IACjB,6BAAe,CAAA;IACf,qCAAuB,CAAA;AAC3B,CAAC,EALW,UAAU,0BAAV,UAAU,QAKrB;AAsBD,IAAY,aAGX;AAHD,WAAY,aAAa;IACrB,kCAAiB,CAAA;IACjB,0CAAyB,CAAA;AAC7B,CAAC,EAHW,aAAa,6BAAb,aAAa,QAGxB"}
@@ -1,13 +1,61 @@
1
1
  import { Thumbnail } from "./thumbnail";
2
2
  export type UploadMetadata = {
3
3
  mediaType: string;
4
+ /**
5
+ * Expected size of the file.
6
+ *
7
+ * The file size is used to verify the integrity of the file during upload.
8
+ * If the expected size does not match the actual size, the upload will
9
+ * fail.
10
+ */
4
11
  expectedSize: number;
12
+ /**
13
+ * Modification time of the file.
14
+ *
15
+ * The modification time will be encrypted and stored with the file.
16
+ */
5
17
  modificationTime?: Date;
18
+ /**
19
+ * Additional metadata to be stored with the file.
20
+ *
21
+ * These metadata must be object that can be serialized to JSON.
22
+ *
23
+ * The metadata will be encrypted and stored with the file.
24
+ */
6
25
  additionalMetadata?: object;
7
26
  };
8
- export interface Fileuploader {
9
- writeStream(stream: ReadableStream, thumnbails: Thumbnail[], onProgress?: (uploadedBytes: number) => void): UploadController;
10
- writeFile(fileObject: File, thumnbails: Thumbnail[], onProgress?: (uploadedBytes: number) => void): UploadController;
27
+ export interface FileRevisionUploader {
28
+ /**
29
+ * Uploads a file from a stream.
30
+ *
31
+ * The function will resolve to a controller that can be used to pause,
32
+ * resume and complete the upload.
33
+ *
34
+ * The function will reject if the node with the given name already exists.
35
+ */
36
+ writeStream(stream: ReadableStream, thumnbails: Thumbnail[], onProgress?: (uploadedBytes: number) => void): Promise<UploadController>;
37
+ /**
38
+ * Uploads a file from a file object. It is convenient to use this method
39
+ * when the file is already in memory. The file object is used to get the
40
+ * metadata, such as the media type, size or modification time.
41
+ *
42
+ * The function will resolve to a controller that can be used to pause,
43
+ * resume and complete the upload.
44
+ *
45
+ * The function will reject if the node with the given name already exists.
46
+ */
47
+ writeFile(fileObject: File, thumnbails: Thumbnail[], onProgress?: (uploadedBytes: number) => void): Promise<UploadController>;
48
+ }
49
+ export interface FileUploader extends FileRevisionUploader {
50
+ /**
51
+ * Returns the available name for the file.
52
+ *
53
+ * The function will return a name that includes the original name with the
54
+ * available index. The name is guaranteed to be unique in the parent folder.
55
+ *
56
+ * Example new name: `file (2).txt`.
57
+ */
58
+ getAvailableName(): Promise<string>;
11
59
  }
12
60
  export interface UploadController {
13
61
  pause(): void;