@protontech/drive-sdk 0.1.2 → 0.2.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 (153) 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/telemetry.d.ts +5 -2
  17. package/dist/interface/telemetry.js.map +1 -1
  18. package/dist/internal/apiService/apiService.js +1 -1
  19. package/dist/internal/apiService/apiService.js.map +1 -1
  20. package/dist/internal/apiService/driveTypes.d.ts +78 -165
  21. package/dist/internal/apiService/index.d.ts +1 -1
  22. package/dist/internal/apiService/index.js +2 -2
  23. package/dist/internal/apiService/index.js.map +1 -1
  24. package/dist/internal/apiService/transformers.d.ts +1 -1
  25. package/dist/internal/apiService/transformers.js +2 -2
  26. package/dist/internal/apiService/transformers.js.map +1 -1
  27. package/dist/internal/download/blockIndex.d.ts +11 -0
  28. package/dist/internal/download/blockIndex.js +35 -0
  29. package/dist/internal/download/blockIndex.js.map +1 -0
  30. package/dist/internal/download/blockIndex.test.d.ts +1 -0
  31. package/dist/internal/download/blockIndex.test.js +147 -0
  32. package/dist/internal/download/blockIndex.test.js.map +1 -0
  33. package/dist/internal/download/fileDownloader.d.ts +6 -2
  34. package/dist/internal/download/fileDownloader.js +83 -6
  35. package/dist/internal/download/fileDownloader.js.map +1 -1
  36. package/dist/internal/download/fileDownloader.test.js +69 -4
  37. package/dist/internal/download/fileDownloader.test.js.map +1 -1
  38. package/dist/internal/download/interface.d.ts +4 -4
  39. package/dist/internal/download/seekableStream.d.ts +80 -0
  40. package/dist/internal/download/seekableStream.js +163 -0
  41. package/dist/internal/download/seekableStream.js.map +1 -0
  42. package/dist/internal/download/seekableStream.test.d.ts +1 -0
  43. package/dist/internal/download/seekableStream.test.js +149 -0
  44. package/dist/internal/download/seekableStream.test.js.map +1 -0
  45. package/dist/internal/download/telemetry.js +1 -1
  46. package/dist/internal/download/telemetry.js.map +1 -1
  47. package/dist/internal/download/telemetry.test.js +7 -7
  48. package/dist/internal/download/telemetry.test.js.map +1 -1
  49. package/dist/internal/errors.d.ts +1 -1
  50. package/dist/internal/errors.js +7 -1
  51. package/dist/internal/errors.js.map +1 -1
  52. package/dist/internal/errors.test.js +44 -10
  53. package/dist/internal/errors.test.js.map +1 -1
  54. package/dist/internal/events/index.js +1 -1
  55. package/dist/internal/events/index.js.map +1 -1
  56. package/dist/internal/nodes/apiService.js +16 -3
  57. package/dist/internal/nodes/apiService.js.map +1 -1
  58. package/dist/internal/nodes/apiService.test.js +43 -7
  59. package/dist/internal/nodes/apiService.test.js.map +1 -1
  60. package/dist/internal/nodes/cache.js +9 -2
  61. package/dist/internal/nodes/cache.js.map +1 -1
  62. package/dist/internal/nodes/cache.test.js +6 -1
  63. package/dist/internal/nodes/cache.test.js.map +1 -1
  64. package/dist/internal/nodes/cryptoService.d.ts +4 -1
  65. package/dist/internal/nodes/cryptoService.js +66 -16
  66. package/dist/internal/nodes/cryptoService.js.map +1 -1
  67. package/dist/internal/nodes/cryptoService.test.js +129 -46
  68. package/dist/internal/nodes/cryptoService.test.js.map +1 -1
  69. package/dist/internal/nodes/extendedAttributes.d.ts +2 -1
  70. package/dist/internal/nodes/extendedAttributes.js +27 -1
  71. package/dist/internal/nodes/extendedAttributes.js.map +1 -1
  72. package/dist/internal/nodes/extendedAttributes.test.js +59 -6
  73. package/dist/internal/nodes/extendedAttributes.test.js.map +1 -1
  74. package/dist/internal/nodes/index.test.js +1 -1
  75. package/dist/internal/nodes/index.test.js.map +1 -1
  76. package/dist/internal/nodes/interface.d.ts +18 -2
  77. package/dist/internal/nodes/nodesAccess.js +11 -1
  78. package/dist/internal/nodes/nodesAccess.js.map +1 -1
  79. package/dist/internal/nodes/nodesManagement.js +1 -1
  80. package/dist/internal/nodes/nodesManagement.js.map +1 -1
  81. package/dist/internal/nodes/nodesRevisions.d.ts +4 -3
  82. package/dist/internal/nodes/nodesRevisions.js +2 -2
  83. package/dist/internal/nodes/nodesRevisions.js.map +1 -1
  84. package/dist/internal/shares/cryptoService.js +7 -4
  85. package/dist/internal/shares/cryptoService.js.map +1 -1
  86. package/dist/internal/shares/cryptoService.test.js +5 -3
  87. package/dist/internal/shares/cryptoService.test.js.map +1 -1
  88. package/dist/internal/sharing/apiService.js +5 -5
  89. package/dist/internal/sharing/apiService.js.map +1 -1
  90. package/dist/internal/sharing/cryptoService.js +8 -5
  91. package/dist/internal/sharing/cryptoService.js.map +1 -1
  92. package/dist/internal/sharing/cryptoService.test.js +7 -4
  93. package/dist/internal/sharing/cryptoService.test.js.map +1 -1
  94. package/dist/internal/upload/telemetry.js +2 -2
  95. package/dist/internal/upload/telemetry.js.map +1 -1
  96. package/dist/internal/upload/telemetry.test.js +7 -7
  97. package/dist/internal/upload/telemetry.test.js.map +1 -1
  98. package/dist/telemetry.d.ts +2 -2
  99. package/dist/telemetry.js +2 -2
  100. package/dist/telemetry.js.map +1 -1
  101. package/dist/tests/telemetry.js +1 -1
  102. package/dist/tests/telemetry.js.map +1 -1
  103. package/dist/transformers.d.ts +1 -1
  104. package/dist/transformers.js +2 -1
  105. package/dist/transformers.js.map +1 -1
  106. package/package.json +1 -1
  107. package/src/crypto/driveCrypto.ts +70 -25
  108. package/src/crypto/interface.ts +15 -0
  109. package/src/crypto/openPGPCrypto.ts +37 -5
  110. package/src/diagnostic/telemetry.ts +1 -1
  111. package/src/interface/download.ts +46 -0
  112. package/src/interface/index.ts +2 -1
  113. package/src/interface/nodes.ts +28 -1
  114. package/src/interface/telemetry.ts +6 -1
  115. package/src/internal/apiService/apiService.ts +1 -1
  116. package/src/internal/apiService/driveTypes.ts +78 -165
  117. package/src/internal/apiService/index.ts +1 -1
  118. package/src/internal/apiService/transformers.ts +1 -1
  119. package/src/internal/download/blockIndex.test.ts +158 -0
  120. package/src/internal/download/blockIndex.ts +36 -0
  121. package/src/internal/download/fileDownloader.test.ts +100 -7
  122. package/src/internal/download/fileDownloader.ts +109 -9
  123. package/src/internal/download/interface.ts +4 -4
  124. package/src/internal/download/seekableStream.test.ts +187 -0
  125. package/src/internal/download/seekableStream.ts +182 -0
  126. package/src/internal/download/telemetry.test.ts +7 -7
  127. package/src/internal/download/telemetry.ts +1 -1
  128. package/src/internal/errors.test.ts +45 -11
  129. package/src/internal/errors.ts +8 -0
  130. package/src/internal/events/index.ts +1 -1
  131. package/src/internal/nodes/apiService.test.ts +59 -15
  132. package/src/internal/nodes/apiService.ts +21 -4
  133. package/src/internal/nodes/cache.test.ts +6 -1
  134. package/src/internal/nodes/cache.ts +9 -2
  135. package/src/internal/nodes/cryptoService.test.ts +139 -47
  136. package/src/internal/nodes/cryptoService.ts +94 -9
  137. package/src/internal/nodes/extendedAttributes.test.ts +60 -7
  138. package/src/internal/nodes/extendedAttributes.ts +37 -1
  139. package/src/internal/nodes/index.test.ts +1 -1
  140. package/src/internal/nodes/interface.ts +19 -2
  141. package/src/internal/nodes/nodesAccess.ts +15 -1
  142. package/src/internal/nodes/nodesManagement.ts +1 -1
  143. package/src/internal/nodes/nodesRevisions.ts +14 -5
  144. package/src/internal/shares/cryptoService.test.ts +5 -3
  145. package/src/internal/shares/cryptoService.ts +7 -4
  146. package/src/internal/sharing/apiService.ts +6 -6
  147. package/src/internal/sharing/cryptoService.test.ts +7 -4
  148. package/src/internal/sharing/cryptoService.ts +8 -5
  149. package/src/internal/upload/telemetry.test.ts +7 -7
  150. package/src/internal/upload/telemetry.ts +2 -2
  151. package/src/telemetry.ts +2 -2
  152. package/src/tests/telemetry.ts +1 -1
  153. package/src/transformers.ts +4 -2
@@ -14,7 +14,7 @@ describe('UploadTelemetry', () => {
14
14
 
15
15
  beforeEach(() => {
16
16
  mockTelemetry = {
17
- logEvent: jest.fn(),
17
+ recordMetric: jest.fn(),
18
18
  getLogger: jest.fn().mockReturnValue({
19
19
  info: jest.fn(),
20
20
  warn: jest.fn(),
@@ -34,7 +34,7 @@ describe('UploadTelemetry', () => {
34
34
  const error = new Error('Failed');
35
35
  await uploadTelemetry.uploadInitFailed(parentNodeUid, error, 1000);
36
36
 
37
- expect(mockTelemetry.logEvent).toHaveBeenCalledWith({
37
+ expect(mockTelemetry.recordMetric).toHaveBeenCalledWith({
38
38
  eventName: 'upload',
39
39
  volumeType: 'own_volume',
40
40
  uploadedSize: 0,
@@ -48,7 +48,7 @@ describe('UploadTelemetry', () => {
48
48
  const error = new Error('Failed');
49
49
  await uploadTelemetry.uploadFailed(revisionUid, error, 500, 1000);
50
50
 
51
- expect(mockTelemetry.logEvent).toHaveBeenCalledWith({
51
+ expect(mockTelemetry.recordMetric).toHaveBeenCalledWith({
52
52
  eventName: 'upload',
53
53
  volumeType: 'own_volume',
54
54
  uploadedSize: 500,
@@ -61,7 +61,7 @@ describe('UploadTelemetry', () => {
61
61
  it('should log successful upload (excludes error)', async () => {
62
62
  await uploadTelemetry.uploadFinished(revisionUid, 1000);
63
63
 
64
- expect(mockTelemetry.logEvent).toHaveBeenCalledWith({
64
+ expect(mockTelemetry.recordMetric).toHaveBeenCalledWith({
65
65
  eventName: 'upload',
66
66
  volumeType: 'own_volume',
67
67
  uploadedSize: 1000,
@@ -71,7 +71,7 @@ describe('UploadTelemetry', () => {
71
71
 
72
72
  describe('detect error category', () => {
73
73
  const verifyErrorCategory = (error: string) => {
74
- expect(mockTelemetry.logEvent).toHaveBeenCalledWith(
74
+ expect(mockTelemetry.recordMetric).toHaveBeenCalledWith(
75
75
  expect.objectContaining({
76
76
  error,
77
77
  }),
@@ -81,7 +81,7 @@ describe('UploadTelemetry', () => {
81
81
  it('should ignore ValidationError', async () => {
82
82
  const error = new ValidationError('Validation error');
83
83
  await uploadTelemetry.uploadFailed(revisionUid, error, 500, 1000);
84
- expect(mockTelemetry.logEvent).not.toHaveBeenCalled();
84
+ expect(mockTelemetry.recordMetric).not.toHaveBeenCalled();
85
85
  });
86
86
 
87
87
  it('should ignore AbortError', async () => {
@@ -89,7 +89,7 @@ describe('UploadTelemetry', () => {
89
89
  error.name = 'AbortError';
90
90
  await uploadTelemetry.uploadFailed(revisionUid, error, 500, 1000);
91
91
 
92
- expect(mockTelemetry.logEvent).not.toHaveBeenCalled();
92
+ expect(mockTelemetry.recordMetric).not.toHaveBeenCalled();
93
93
  });
94
94
 
95
95
  it('should detect "rate_limited" error for RateLimitedError', async () => {
@@ -23,7 +23,7 @@ export class UploadTelemetry {
23
23
  }
24
24
 
25
25
  logBlockVerificationError(retryHelped: boolean) {
26
- this.telemetry.logEvent({
26
+ this.telemetry.recordMetric({
27
27
  eventName: 'blockVerificationError',
28
28
  retryHelped,
29
29
  });
@@ -89,7 +89,7 @@ export class UploadTelemetry {
89
89
  this.logger.error('Failed to get metric volume type', error);
90
90
  }
91
91
 
92
- this.telemetry.logEvent({
92
+ this.telemetry.recordMetric({
93
93
  eventName: 'upload',
94
94
  volumeType,
95
95
  ...options,
package/src/telemetry.ts CHANGED
@@ -66,7 +66,7 @@ export interface MetricHandler<T extends MetricEvent> {
66
66
  * const logger = telemetry.getLogger('myLogger');
67
67
  * logger.debug('Debug message');
68
68
  *
69
- * telemetry.logEvent({ name: 'somethingHappened', value: 42 });
69
+ * telemetry.recordMetric({ name: 'somethingHappened', value: 42 });
70
70
  *
71
71
  * const logs = memoryLogHandler.getLogs();
72
72
  * // Process logs
@@ -91,7 +91,7 @@ export class Telemetry<T extends MetricEvent> {
91
91
  return new Logger(name, this.logFilter, this.logHandlers);
92
92
  }
93
93
 
94
- logEvent(event: T): void {
94
+ recordMetric(event: T): void {
95
95
  const metric = {
96
96
  time: new Date(),
97
97
  event,
@@ -4,6 +4,6 @@ import { getMockLogger } from './logger';
4
4
  export function getMockTelemetry(): ProtonDriveTelemetry {
5
5
  return {
6
6
  getLogger: getMockLogger,
7
- logEvent: jest.fn(),
7
+ recordMetric: jest.fn(),
8
8
  };
9
9
  }
@@ -18,7 +18,8 @@ type InternalPartialNode = Pick<
18
18
  | 'name'
19
19
  | 'keyAuthor'
20
20
  | 'nameAuthor'
21
- | 'directMemberRole'
21
+ | 'directRole'
22
+ | 'membership'
22
23
  | 'type'
23
24
  | 'mediaType'
24
25
  | 'isShared'
@@ -84,7 +85,8 @@ export function convertInternalNode(node: InternalPartialNode): PublicMaybeNode
84
85
  parentUid: node.parentUid,
85
86
  keyAuthor: node.keyAuthor,
86
87
  nameAuthor: node.nameAuthor,
87
- directMemberRole: node.directMemberRole,
88
+ directRole: node.directRole,
89
+ membership: node.membership,
88
90
  type: node.type,
89
91
  mediaType: node.mediaType,
90
92
  isShared: node.isShared,