@protontech/drive-sdk 0.5.0 → 0.5.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 (151) hide show
  1. package/dist/diagnostic/{sdkDiagnosticFull.d.ts → diagnostic.d.ts} +5 -4
  2. package/dist/diagnostic/{sdkDiagnosticFull.js → diagnostic.js} +13 -10
  3. package/dist/diagnostic/diagnostic.js.map +1 -0
  4. package/dist/diagnostic/index.js +2 -4
  5. package/dist/diagnostic/index.js.map +1 -1
  6. package/dist/diagnostic/interface.d.ts +22 -1
  7. package/dist/diagnostic/sdkDiagnostic.d.ts +3 -2
  8. package/dist/diagnostic/sdkDiagnostic.js +79 -7
  9. package/dist/diagnostic/sdkDiagnostic.js.map +1 -1
  10. package/dist/interface/index.d.ts +1 -1
  11. package/dist/interface/index.js.map +1 -1
  12. package/dist/interface/nodes.d.ts +9 -0
  13. package/dist/interface/telemetry.d.ts +4 -1
  14. package/dist/interface/telemetry.js.map +1 -1
  15. package/dist/internal/apiService/driveTypes.d.ts +2571 -2356
  16. package/dist/internal/download/controller.d.ts +2 -0
  17. package/dist/internal/download/controller.js +15 -1
  18. package/dist/internal/download/controller.js.map +1 -1
  19. package/dist/internal/download/fileDownloader.js +6 -1
  20. package/dist/internal/download/fileDownloader.js.map +1 -1
  21. package/dist/internal/nodes/apiService.js +27 -12
  22. package/dist/internal/nodes/apiService.js.map +1 -1
  23. package/dist/internal/nodes/apiService.test.js +60 -2
  24. package/dist/internal/nodes/apiService.test.js.map +1 -1
  25. package/dist/internal/nodes/debouncer.d.ts +3 -2
  26. package/dist/internal/nodes/debouncer.js +16 -4
  27. package/dist/internal/nodes/debouncer.js.map +1 -1
  28. package/dist/internal/nodes/debouncer.test.js +20 -12
  29. package/dist/internal/nodes/debouncer.test.js.map +1 -1
  30. package/dist/internal/nodes/extendedAttributes.js +2 -2
  31. package/dist/internal/nodes/extendedAttributes.js.map +1 -1
  32. package/dist/internal/nodes/index.js +1 -1
  33. package/dist/internal/nodes/index.js.map +1 -1
  34. package/dist/internal/nodes/nodesAccess.d.ts +5 -4
  35. package/dist/internal/nodes/nodesAccess.js +6 -5
  36. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  37. package/dist/internal/nodes/nodesAccess.test.js +17 -5
  38. package/dist/internal/nodes/nodesAccess.test.js.map +1 -1
  39. package/dist/internal/nodes/nodesManagement.d.ts +2 -2
  40. package/dist/internal/nodes/nodesManagement.js +5 -3
  41. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  42. package/dist/internal/nodes/nodesManagement.test.js +3 -1
  43. package/dist/internal/nodes/nodesManagement.test.js.map +1 -1
  44. package/dist/internal/photos/apiService.js +9 -20
  45. package/dist/internal/photos/apiService.js.map +1 -1
  46. package/dist/internal/photos/upload.js +7 -1
  47. package/dist/internal/photos/upload.js.map +1 -1
  48. package/dist/internal/sharing/apiService.d.ts +1 -1
  49. package/dist/internal/sharing/apiService.js +2 -2
  50. package/dist/internal/sharing/apiService.js.map +1 -1
  51. package/dist/internal/sharing/sharingManagement.d.ts +4 -1
  52. package/dist/internal/sharing/sharingManagement.js +7 -4
  53. package/dist/internal/sharing/sharingManagement.js.map +1 -1
  54. package/dist/internal/sharingPublic/apiService.d.ts +8 -10
  55. package/dist/internal/sharingPublic/apiService.js +9 -63
  56. package/dist/internal/sharingPublic/apiService.js.map +1 -1
  57. package/dist/internal/sharingPublic/index.d.ts +3 -3
  58. package/dist/internal/sharingPublic/index.js +5 -11
  59. package/dist/internal/sharingPublic/index.js.map +1 -1
  60. package/dist/internal/sharingPublic/nodes.d.ts +13 -8
  61. package/dist/internal/sharingPublic/nodes.js +20 -2
  62. package/dist/internal/sharingPublic/nodes.js.map +1 -1
  63. package/dist/internal/sharingPublic/session/apiService.d.ts +7 -5
  64. package/dist/internal/sharingPublic/session/apiService.js +25 -4
  65. package/dist/internal/sharingPublic/session/apiService.js.map +1 -1
  66. package/dist/internal/sharingPublic/session/interface.d.ts +17 -0
  67. package/dist/internal/sharingPublic/session/manager.d.ts +12 -4
  68. package/dist/internal/sharingPublic/session/manager.js +14 -4
  69. package/dist/internal/sharingPublic/session/manager.js.map +1 -1
  70. package/dist/internal/sharingPublic/session/session.d.ts +5 -2
  71. package/dist/internal/sharingPublic/session/session.js +7 -3
  72. package/dist/internal/sharingPublic/session/session.js.map +1 -1
  73. package/dist/internal/sharingPublic/shares.d.ts +3 -10
  74. package/dist/internal/sharingPublic/shares.js +10 -33
  75. package/dist/internal/sharingPublic/shares.js.map +1 -1
  76. package/dist/internal/upload/controller.d.ts +3 -1
  77. package/dist/internal/upload/controller.js +16 -2
  78. package/dist/internal/upload/controller.js.map +1 -1
  79. package/dist/internal/upload/fileUploader.js +2 -2
  80. package/dist/internal/upload/fileUploader.js.map +1 -1
  81. package/dist/internal/upload/streamUploader.d.ts +4 -3
  82. package/dist/internal/upload/streamUploader.js +61 -18
  83. package/dist/internal/upload/streamUploader.js.map +1 -1
  84. package/dist/internal/upload/streamUploader.test.js +38 -12
  85. package/dist/internal/upload/streamUploader.test.js.map +1 -1
  86. package/dist/protonDriveClient.d.ts +8 -3
  87. package/dist/protonDriveClient.js +7 -6
  88. package/dist/protonDriveClient.js.map +1 -1
  89. package/dist/protonDrivePublicLinkClient.d.ts +4 -3
  90. package/dist/protonDrivePublicLinkClient.js +2 -2
  91. package/dist/protonDrivePublicLinkClient.js.map +1 -1
  92. package/dist/tests/telemetry.d.ts +4 -2
  93. package/dist/tests/telemetry.js +3 -1
  94. package/dist/tests/telemetry.js.map +1 -1
  95. package/dist/transformers.d.ts +3 -2
  96. package/dist/transformers.js +6 -0
  97. package/dist/transformers.js.map +1 -1
  98. package/package.json +1 -1
  99. package/src/diagnostic/{sdkDiagnosticFull.ts → diagnostic.ts} +10 -6
  100. package/src/diagnostic/index.ts +3 -5
  101. package/src/diagnostic/interface.ts +39 -0
  102. package/src/diagnostic/sdkDiagnostic.ts +110 -9
  103. package/src/interface/index.ts +1 -0
  104. package/src/interface/nodes.ts +3 -0
  105. package/src/interface/telemetry.ts +5 -0
  106. package/src/internal/apiService/driveTypes.ts +2698 -2529
  107. package/src/internal/download/controller.ts +13 -1
  108. package/src/internal/download/fileDownloader.ts +8 -1
  109. package/src/internal/nodes/apiService.test.ts +64 -0
  110. package/src/internal/nodes/apiService.ts +38 -17
  111. package/src/internal/nodes/debouncer.test.ts +25 -13
  112. package/src/internal/nodes/debouncer.ts +20 -4
  113. package/src/internal/nodes/extendedAttributes.ts +2 -2
  114. package/src/internal/nodes/index.ts +1 -8
  115. package/src/internal/nodes/nodesAccess.test.ts +17 -5
  116. package/src/internal/nodes/nodesAccess.ts +15 -5
  117. package/src/internal/nodes/nodesManagement.test.ts +3 -1
  118. package/src/internal/nodes/nodesManagement.ts +11 -5
  119. package/src/internal/photos/apiService.ts +12 -29
  120. package/src/internal/photos/upload.ts +19 -1
  121. package/src/internal/sharing/apiService.ts +2 -2
  122. package/src/internal/sharing/sharingManagement.ts +7 -4
  123. package/src/internal/sharingPublic/apiService.ts +23 -77
  124. package/src/internal/sharingPublic/index.ts +11 -10
  125. package/src/internal/sharingPublic/nodes.ts +33 -11
  126. package/src/internal/sharingPublic/session/apiService.ts +31 -9
  127. package/src/internal/sharingPublic/session/interface.ts +20 -0
  128. package/src/internal/sharingPublic/session/manager.ts +31 -8
  129. package/src/internal/sharingPublic/session/session.ts +10 -5
  130. package/src/internal/sharingPublic/shares.ts +7 -43
  131. package/src/internal/upload/controller.ts +16 -4
  132. package/src/internal/upload/fileUploader.ts +2 -2
  133. package/src/internal/upload/streamUploader.test.ts +46 -14
  134. package/src/internal/upload/streamUploader.ts +74 -21
  135. package/src/protonDriveClient.ts +25 -7
  136. package/src/protonDrivePublicLinkClient.ts +7 -4
  137. package/src/tests/telemetry.ts +6 -3
  138. package/src/transformers.ts +8 -0
  139. package/dist/diagnostic/sdkDiagnosticFull.js.map +0 -1
  140. package/dist/internal/sharingPublic/cryptoCache.d.ts +0 -15
  141. package/dist/internal/sharingPublic/cryptoCache.js +0 -44
  142. package/dist/internal/sharingPublic/cryptoCache.js.map +0 -1
  143. package/dist/internal/sharingPublic/cryptoService.d.ts +0 -8
  144. package/dist/internal/sharingPublic/cryptoService.js +0 -19
  145. package/dist/internal/sharingPublic/cryptoService.js.map +0 -1
  146. package/dist/internal/sharingPublic/interface.d.ts +0 -5
  147. package/dist/internal/sharingPublic/interface.js +0 -3
  148. package/dist/internal/sharingPublic/interface.js.map +0 -1
  149. package/src/internal/sharingPublic/cryptoCache.ts +0 -45
  150. package/src/internal/sharingPublic/cryptoService.ts +0 -22
  151. package/src/internal/sharingPublic/interface.ts +0 -5
@@ -1 +1 @@
1
- {"version":3,"file":"protonDrivePublicLinkClient.js","sourceRoot":"","sources":["../src/protonDrivePublicLinkClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"protonDrivePublicLinkClient.js","sourceRoot":"","sources":["../src/protonDrivePublicLinkClient.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,4 @@
1
- import { ProtonDriveTelemetry } from '../interface';
2
- export declare function getMockTelemetry(): ProtonDriveTelemetry;
1
+ import { Logger, ProtonDriveTelemetry } from '../interface';
2
+ export declare function getMockTelemetry(): ProtonDriveTelemetry & {
3
+ mockLogger: Logger;
4
+ };
@@ -3,8 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getMockTelemetry = getMockTelemetry;
4
4
  const logger_1 = require("./logger");
5
5
  function getMockTelemetry() {
6
+ const mockLogger = (0, logger_1.getMockLogger)();
6
7
  return {
7
- getLogger: logger_1.getMockLogger,
8
+ mockLogger,
9
+ getLogger: () => mockLogger,
8
10
  recordMetric: jest.fn(),
9
11
  };
10
12
  }
@@ -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,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;KAC1B,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/tests/telemetry.ts"],"names":[],"mappings":";;AAGA,4CAQC;AAVD,qCAAyC;AAEzC,SAAgB,gBAAgB;IAC5B,MAAM,UAAU,GAAG,IAAA,sBAAa,GAAE,CAAC;IAEnC,OAAO;QACH,UAAU;QACV,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU;QAC3B,YAAY,EAAE,IAAI,CAAC,EAAE,EAAE;KAC1B,CAAC;AACN,CAAC"}
@@ -1,5 +1,5 @@
1
- import { MaybeNode as PublicMaybeNode, MaybeMissingNode as PublicMaybeMissingNode, Result, MissingNode } from './interface';
2
- import { DecryptedNode as InternalNode } from './internal/nodes';
1
+ import { MaybeNode as PublicMaybeNode, MaybeMissingNode as PublicMaybeMissingNode, Revision as PublicRevision, Result, MissingNode } from './interface';
2
+ import { DecryptedNode as InternalNode, DecryptedRevision as InternalRevision } from './internal/nodes';
3
3
  type InternalPartialNode = Pick<InternalNode, 'uid' | 'parentUid' | 'name' | 'keyAuthor' | 'nameAuthor' | 'directRole' | 'membership' | 'type' | 'mediaType' | 'isShared' | 'isSharedPublicly' | 'creationTime' | 'trashTime' | 'activeRevision' | 'folder' | 'totalStorageSize' | 'errors' | 'shareId' | 'treeEventScopeId'>;
4
4
  type NodeUid = string | {
5
5
  uid: string;
@@ -14,4 +14,5 @@ export declare function convertInternalNodeIterator(nodeIterator: AsyncGenerator
14
14
  export declare function convertInternalMissingNodeIterator(nodeIterator: AsyncGenerator<InternalPartialNode | MissingNode>): AsyncGenerator<PublicMaybeMissingNode>;
15
15
  export declare function convertInternalNodePromise(nodePromise: Promise<InternalPartialNode>): Promise<PublicMaybeNode>;
16
16
  export declare function convertInternalNode(node: InternalPartialNode): PublicMaybeNode;
17
+ export declare function convertInternalRevisionIterator(revisionIterator: AsyncGenerator<InternalRevision>): AsyncGenerator<PublicRevision>;
17
18
  export {};
@@ -6,6 +6,7 @@ exports.convertInternalNodeIterator = convertInternalNodeIterator;
6
6
  exports.convertInternalMissingNodeIterator = convertInternalMissingNodeIterator;
7
7
  exports.convertInternalNodePromise = convertInternalNodePromise;
8
8
  exports.convertInternalNode = convertInternalNode;
9
+ exports.convertInternalRevisionIterator = convertInternalRevisionIterator;
9
10
  const interface_1 = require("./interface");
10
11
  function getUid(nodeUid) {
11
12
  if (typeof nodeUid === 'string') {
@@ -80,6 +81,11 @@ function convertInternalNode(node) {
80
81
  activeRevision: activeRevision?.ok ? convertInternalRevision(activeRevision.value) : undefined,
81
82
  });
82
83
  }
84
+ async function* convertInternalRevisionIterator(revisionIterator) {
85
+ for await (const revision of revisionIterator) {
86
+ yield convertInternalRevision(revision);
87
+ }
88
+ }
83
89
  function convertInternalRevision(revision) {
84
90
  return {
85
91
  uid: revision.uid,
@@ -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":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@protontech/drive-sdk",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Proton Drive SDK",
5
5
  "license": "GPL-3.0",
6
6
  "main": "dist/index.js",
@@ -1,6 +1,8 @@
1
1
  import { MaybeNode } from '../interface';
2
+ import { ProtonDriveClient } from '../protonDriveClient';
2
3
  import { DiagnosticHTTPClient } from './httpClient';
3
- import { Diagnostic, DiagnosticOptions, DiagnosticResult } from './interface';
4
+ import { DiagnosticOptions, DiagnosticResult } from './interface';
5
+ import { SDKDiagnostic } from './sdkDiagnostic';
4
6
  import { DiagnosticTelemetry } from './telemetry';
5
7
  import { zipGenerators } from './zipGenerators';
6
8
 
@@ -8,23 +10,25 @@ import { zipGenerators } from './zipGenerators';
8
10
  * Diagnostic tool that produces full diagnostic, including logs and metrics
9
11
  * by reading the events from the telemetry and HTTP client.
10
12
  */
11
- export class FullSDKDiagnostic implements Diagnostic {
13
+ export class Diagnostic {
12
14
  constructor(
13
- private diagnostic: Diagnostic,
14
15
  private telemetry: DiagnosticTelemetry,
15
16
  private httpClient: DiagnosticHTTPClient,
17
+ private protonDriveClient: ProtonDriveClient,
16
18
  ) {
17
- this.diagnostic = diagnostic;
18
19
  this.telemetry = telemetry;
19
20
  this.httpClient = httpClient;
21
+ this.protonDriveClient = protonDriveClient;
20
22
  }
21
23
 
22
24
  async *verifyMyFiles(options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult> {
23
- yield* this.yieldEvents(this.diagnostic.verifyMyFiles(options));
25
+ const diagnostic = new SDKDiagnostic(this.protonDriveClient);
26
+ yield* this.yieldEvents(diagnostic.verifyMyFiles(options));
24
27
  }
25
28
 
26
29
  async *verifyNodeTree(node: MaybeNode, options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult> {
27
- yield* this.yieldEvents(this.diagnostic.verifyNodeTree(node, options));
30
+ const diagnostic = new SDKDiagnostic(this.protonDriveClient);
31
+ yield* this.yieldEvents(diagnostic.verifyNodeTree(node, options));
28
32
  }
29
33
 
30
34
  private async *yieldEvents(generator: AsyncGenerator<DiagnosticResult>): AsyncGenerator<DiagnosticResult> {
@@ -1,10 +1,9 @@
1
1
  import { MemoryCache, NullCache } from '../cache';
2
2
  import { ProtonDriveClientContructorParameters } from '../interface';
3
3
  import { ProtonDriveClient } from '../protonDriveClient';
4
- import { DiagnosticHTTPClient } from './httpClient';
4
+ import { Diagnostic as DiagnosticClass } from './diagnostic';
5
5
  import { Diagnostic } from './interface';
6
- import { SDKDiagnostic } from './sdkDiagnostic';
7
- import { FullSDKDiagnostic } from './sdkDiagnosticFull';
6
+ import { DiagnosticHTTPClient } from './httpClient';
8
7
  import { DiagnosticTelemetry } from './telemetry';
9
8
 
10
9
  export type { Diagnostic, DiagnosticResult } from './interface';
@@ -35,6 +34,5 @@ export function initDiagnostic(
35
34
  telemetry,
36
35
  });
37
36
 
38
- const diagnostic = new SDKDiagnostic(protonDriveClient);
39
- return new FullSDKDiagnostic(diagnostic, telemetry, httpClient);
37
+ return new DiagnosticClass(telemetry, httpClient, protonDriveClient);
40
38
  }
@@ -9,6 +9,15 @@ export interface Diagnostic {
9
9
  export type DiagnosticOptions = {
10
10
  verifyContent?: boolean;
11
11
  verifyThumbnails?: boolean;
12
+ expectedStructure?: ExcpectedTreeNode;
13
+ };
14
+
15
+ // Tree structure of the expected node tree.
16
+ export type ExcpectedTreeNode = {
17
+ name: string;
18
+ expectedSha1?: string;
19
+ expectedSizeInBytes?: number;
20
+ children?: ExcpectedTreeNode[];
12
21
  };
13
22
 
14
23
  export type DiagnosticResult =
@@ -23,6 +32,9 @@ export type DiagnosticResult =
23
32
  | ContentIntegrityErrorResult
24
33
  | ContentDownloadErrorResult
25
34
  | ThumbnailsErrorResult
35
+ | ExpectedStructureMissingNode
36
+ | ExpectedStructureUnexpectedNode
37
+ | ExpectedStructureIntegrityError
26
38
  | LogErrorResult
27
39
  | LogWarningResult
28
40
  | MetricResult;
@@ -121,6 +133,33 @@ export type ThumbnailsErrorResult = {
121
133
  error: unknown;
122
134
  } & NodeDetails;
123
135
 
136
+ // Event representing that expected node is missing.
137
+ // This will be reported for any node that is not found compared to
138
+ // the expected structure.
139
+ export type ExpectedStructureMissingNode = {
140
+ type: 'expected_structure_missing_node';
141
+ expectedNode: ExcpectedTreeNode;
142
+ parentNodeUid: string;
143
+ };
144
+
145
+ // Event representing that unexpected node is present.
146
+ // This will be reported for any node that is found in the actual structure
147
+ // but is not defined in the expected structure.
148
+ export type ExpectedStructureUnexpectedNode = {
149
+ type: 'expected_structure_unexpected_node';
150
+ } & NodeDetails;
151
+
152
+ // Event representing that expected node is not matching the actual node.
153
+ // This will be reported when claimed and expected values are different.
154
+ // It doesn't check the real content - use content verification to verify
155
+ // the claimed values with the real content.
156
+ export type ExpectedStructureIntegrityError = {
157
+ type: 'expected_structure_integrity_error';
158
+ expectedNode: ExcpectedTreeNode;
159
+ claimedSha1?: string;
160
+ claimedSizeInBytes?: number;
161
+ } & NodeDetails;
162
+
124
163
  // Event representing errors logged during the diagnostic.
125
164
  export type LogErrorResult = {
126
165
  type: 'log_error';
@@ -1,6 +1,6 @@
1
1
  import { Author, FileDownloader, MaybeNode, NodeType, Revision, ThumbnailType } from '../interface';
2
2
  import { ProtonDriveClient } from '../protonDriveClient';
3
- import { Diagnostic, DiagnosticOptions, DiagnosticResult, NodeDetails } from './interface';
3
+ import { DiagnosticOptions, DiagnosticResult, NodeDetails, ExcpectedTreeNode } from './interface';
4
4
  import { IntegrityVerificationStream } from './integrityVerificationStream';
5
5
 
6
6
  /**
@@ -10,7 +10,7 @@ import { IntegrityVerificationStream } from './integrityVerificationStream';
10
10
  * It produces only events that can be read by direct SDK invocation.
11
11
  * To get the full diagnostic, use {@link FullSDKDiagnostic}.
12
12
  */
13
- export class SDKDiagnostic implements Diagnostic {
13
+ export class SDKDiagnostic {
14
14
  constructor(private protonDriveClient: ProtonDriveClient) {
15
15
  this.protonDriveClient = protonDriveClient;
16
16
  }
@@ -58,7 +58,7 @@ export class SDKDiagnostic implements Diagnostic {
58
58
  yield* this.verifyAuthor(activeRevision.contentAuthor, 'content', node);
59
59
  }
60
60
 
61
- yield* this.verifyFileExtendedAttributes(node);
61
+ yield* this.verifyFileExtendedAttributes(node, options);
62
62
 
63
63
  if (options?.verifyContent) {
64
64
  yield* this.verifyContent(node);
@@ -80,12 +80,17 @@ export class SDKDiagnostic implements Diagnostic {
80
80
  }
81
81
  }
82
82
 
83
- private async *verifyFileExtendedAttributes(node: MaybeNode): AsyncGenerator<DiagnosticResult> {
83
+ private async *verifyFileExtendedAttributes(
84
+ node: MaybeNode,
85
+ options?: DiagnosticOptions,
86
+ ): AsyncGenerator<DiagnosticResult> {
84
87
  const activeRevision = getActiveRevision(node);
85
88
 
86
89
  const expectedAttributes = getNodeType(node) === NodeType.File;
87
90
 
88
91
  const claimedSha1 = activeRevision?.claimedDigests?.sha1;
92
+ const claimedSizeInBytes = activeRevision?.claimedSize;
93
+
89
94
  if (claimedSha1 && !/^[0-9a-f]{40}$/i.test(claimedSha1)) {
90
95
  yield {
91
96
  type: 'extended_attributes_error',
@@ -102,6 +107,24 @@ export class SDKDiagnostic implements Diagnostic {
102
107
  ...getNodeDetails(node),
103
108
  };
104
109
  }
110
+
111
+ if (options?.expectedStructure) {
112
+ const expectedSha1 = options.expectedStructure.expectedSha1;
113
+ const expectedSizeInBytes = options.expectedStructure.expectedSizeInBytes;
114
+
115
+ const wrongSha1 = expectedSha1 !== undefined && claimedSha1 !== expectedSha1;
116
+ const wrongSizeInBytes = expectedSizeInBytes !== undefined && claimedSizeInBytes !== expectedSizeInBytes;
117
+
118
+ if (wrongSha1 || wrongSizeInBytes) {
119
+ yield {
120
+ type: 'expected_structure_integrity_error',
121
+ claimedSha1,
122
+ claimedSizeInBytes,
123
+ expectedNode: getExpectedTreeNodeDetails(options.expectedStructure),
124
+ ...getNodeDetails(node),
125
+ };
126
+ }
127
+ }
105
128
  }
106
129
 
107
130
  private async *verifyContent(node: MaybeNode): AsyncGenerator<DiagnosticResult> {
@@ -195,19 +218,73 @@ export class SDKDiagnostic implements Diagnostic {
195
218
  }
196
219
  }
197
220
 
198
- private async *verifyNodeChildren(node: MaybeNode, options?: DiagnosticOptions): AsyncGenerator<DiagnosticResult> {
199
- const nodeUid = node.ok ? node.value.uid : node.error.uid;
221
+ private async *verifyNodeChildren(
222
+ parentNode: MaybeNode,
223
+ options?: DiagnosticOptions,
224
+ ): AsyncGenerator<DiagnosticResult> {
225
+ const parentNodeUid = parentNode.ok ? parentNode.value.uid : parentNode.error.uid;
226
+ const children: MaybeNode[] = [];
227
+
200
228
  try {
201
- for await (const child of this.protonDriveClient.iterateFolderChildren(node)) {
202
- yield* this.verifyNodeTree(child, options);
229
+ for await (const child of this.protonDriveClient.iterateFolderChildren(parentNode)) {
230
+ if (options?.expectedStructure) {
231
+ children.push(child);
232
+ }
233
+
234
+ yield *
235
+ this.verifyNodeTree(child, {
236
+ ...options,
237
+ expectedStructure: options?.expectedStructure
238
+ ? getTreeNodeChildByNodeName(options.expectedStructure, getNodeName(child))
239
+ : undefined,
240
+ });
203
241
  }
204
242
  } catch (error: unknown) {
205
243
  yield {
206
244
  type: 'sdk_error',
207
- call: `iterateFolderChildren(${nodeUid})`,
245
+ call: `iterateFolderChildren(${parentNodeUid})`,
208
246
  error,
209
247
  };
210
248
  }
249
+
250
+ if (options?.expectedStructure) {
251
+ yield* this.verifyExpectedNodeChildren(parentNodeUid, children, options);
252
+ }
253
+ }
254
+
255
+ private async *verifyExpectedNodeChildren(
256
+ parentNodeUid: string,
257
+ children: MaybeNode[],
258
+ options: DiagnosticOptions,
259
+ ): AsyncGenerator<DiagnosticResult> {
260
+ if (!options.expectedStructure) {
261
+ return;
262
+ }
263
+
264
+ const expectedNodes = options.expectedStructure.children ?? [];
265
+ const actualNodeNames = children.map((child) => getNodeName(child));
266
+
267
+ for (const expectedNode of expectedNodes) {
268
+ if (!actualNodeNames.includes(expectedNode.name)) {
269
+ yield {
270
+ type: 'expected_structure_missing_node',
271
+ expectedNode: getExpectedTreeNodeDetails(expectedNode),
272
+ parentNodeUid,
273
+ };
274
+ }
275
+ }
276
+
277
+ for (const child of children) {
278
+ const childName = getNodeName(child);
279
+ const isExpected = expectedNodes.some((expectedNode) => expectedNode.name === childName);
280
+
281
+ if (!isExpected) {
282
+ yield {
283
+ type: 'expected_structure_unexpected_node',
284
+ ...getNodeDetails(child),
285
+ };
286
+ }
287
+ }
211
288
  }
212
289
  }
213
290
 
@@ -275,3 +352,27 @@ function getActiveRevision(node: MaybeNode): Revision | undefined {
275
352
  }
276
353
  return undefined;
277
354
  }
355
+
356
+ function getNodeName(node: MaybeNode): string {
357
+ if (node.ok) {
358
+ return node.value.name;
359
+ }
360
+ if (node.error.name.ok) {
361
+ return node.error.name.value;
362
+ }
363
+ return 'N/A';
364
+ }
365
+
366
+ function getExpectedTreeNodeDetails(expectedNode: ExcpectedTreeNode): ExcpectedTreeNode {
367
+ return {
368
+ ...expectedNode,
369
+ children: undefined,
370
+ };
371
+ }
372
+
373
+ function getTreeNodeChildByNodeName(
374
+ expectedSubtree: ExcpectedTreeNode,
375
+ nodeName: string,
376
+ ): ExcpectedTreeNode | undefined {
377
+ return expectedSubtree.children?.find((expectedNode) => expectedNode.name === nodeName);
378
+ }
@@ -41,6 +41,7 @@ export type {
41
41
  NodeOrUid,
42
42
  RevisionOrUid,
43
43
  NodeResult,
44
+ NodeResultWithNewUid,
44
45
  Membership,
45
46
  } from './nodes';
46
47
  export { NodeType, MemberRole, RevisionState } from './nodes';
@@ -224,3 +224,6 @@ export type NodeOrUid = MaybeNode | NodeEntity | DegradedNode | string;
224
224
  export type RevisionOrUid = Revision | string;
225
225
 
226
226
  export type NodeResult = { uid: string; ok: true } | { uid: string; ok: false; error: string };
227
+ export type NodeResultWithNewUid =
228
+ | { uid: string; newUid: string; ok: true }
229
+ | { uid: string; ok: false; error: string };
@@ -12,6 +12,7 @@ export interface Logger {
12
12
 
13
13
  export type MetricEvent =
14
14
  | MetricAPIRetrySucceededEvent
15
+ | MetricDebounceLongWaitEvent
15
16
  | MetricUploadEvent
16
17
  | MetricDownloadEvent
17
18
  | MetricDecryptionErrorEvent
@@ -25,6 +26,10 @@ export interface MetricAPIRetrySucceededEvent {
25
26
  failedAttempts: number;
26
27
  }
27
28
 
29
+ export interface MetricDebounceLongWaitEvent {
30
+ eventName: 'debounceLongWait';
31
+ }
32
+
28
33
  export interface MetricUploadEvent {
29
34
  eventName: 'upload';
30
35
  volumeType?: MetricVolumeType;