@protontech/drive-sdk 0.0.11 → 0.0.12

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 (100) hide show
  1. package/dist/cache/index.d.ts +2 -0
  2. package/dist/cache/index.js +6 -0
  3. package/dist/cache/index.js.map +1 -0
  4. package/dist/cache/interface.d.ts +105 -0
  5. package/dist/cache/interface.js +3 -0
  6. package/dist/cache/interface.js.map +1 -0
  7. package/dist/cache/memoryCache.d.ts +18 -0
  8. package/dist/cache/memoryCache.js +78 -0
  9. package/dist/cache/memoryCache.js.map +1 -0
  10. package/dist/cache/memoryCache.test.d.ts +1 -0
  11. package/dist/cache/memoryCache.test.js +121 -0
  12. package/dist/cache/memoryCache.test.js.map +1 -0
  13. package/dist/crypto/hmac.d.ts +22 -0
  14. package/dist/crypto/hmac.js +44 -0
  15. package/dist/crypto/hmac.js.map +1 -0
  16. package/dist/crypto/utils.d.ts +2 -0
  17. package/dist/crypto/utils.js +35 -0
  18. package/dist/crypto/utils.js.map +1 -0
  19. package/dist/errors.d.ts +138 -0
  20. package/dist/errors.js +163 -0
  21. package/dist/errors.js.map +1 -0
  22. package/dist/interface/account.js +3 -0
  23. package/dist/interface/account.js.map +1 -0
  24. package/dist/interface/author.d.ts +26 -0
  25. package/dist/interface/author.js +3 -0
  26. package/dist/interface/author.js.map +1 -0
  27. package/dist/interface/download.d.ts +29 -0
  28. package/dist/interface/download.js +3 -0
  29. package/dist/interface/download.js.map +1 -0
  30. package/dist/interface/httpClient.d.ts +38 -0
  31. package/dist/interface/httpClient.js +3 -0
  32. package/dist/interface/httpClient.js.map +1 -0
  33. package/dist/interface/result.d.ts +9 -0
  34. package/dist/interface/result.js +11 -0
  35. package/dist/interface/result.js.map +1 -0
  36. package/dist/interface/thumbnail.d.ts +17 -0
  37. package/dist/interface/thumbnail.js +9 -0
  38. package/dist/interface/thumbnail.js.map +1 -0
  39. package/dist/interface/upload.d.ts +16 -0
  40. package/dist/interface/upload.js +3 -0
  41. package/dist/interface/upload.js.map +1 -0
  42. package/dist/internal/apiService/errorCodes.d.ts +30 -0
  43. package/dist/internal/apiService/errorCodes.js +11 -0
  44. package/dist/internal/apiService/errorCodes.js.map +1 -0
  45. package/dist/internal/apiService/observerStream.d.ts +3 -0
  46. package/dist/internal/apiService/observerStream.js +15 -0
  47. package/dist/internal/apiService/observerStream.js.map +1 -0
  48. package/dist/internal/batchLoading.d.ts +34 -0
  49. package/dist/internal/batchLoading.js +68 -0
  50. package/dist/internal/batchLoading.js.map +1 -0
  51. package/dist/internal/batchLoading.test.d.ts +1 -0
  52. package/dist/internal/batchLoading.test.js +50 -0
  53. package/dist/internal/batchLoading.test.js.map +1 -0
  54. package/dist/internal/download/controller.d.ts +8 -0
  55. package/dist/internal/download/controller.js +22 -0
  56. package/dist/internal/download/controller.js.map +1 -0
  57. package/dist/internal/download/queue.d.ts +5 -0
  58. package/dist/internal/download/queue.js +31 -0
  59. package/dist/internal/download/queue.js.map +1 -0
  60. package/dist/internal/errors.js +28 -0
  61. package/dist/internal/errors.js.map +1 -0
  62. package/dist/internal/errors.test.js +22 -0
  63. package/dist/internal/errors.test.js.map +1 -0
  64. package/dist/internal/events/interface.d.ts +47 -0
  65. package/dist/internal/events/interface.js +12 -0
  66. package/dist/internal/events/interface.js.map +1 -0
  67. package/dist/internal/nodes/mediaTypes.d.ts +2 -0
  68. package/dist/internal/nodes/mediaTypes.js +13 -0
  69. package/dist/internal/nodes/mediaTypes.js.map +1 -0
  70. package/dist/internal/nodes/validations.d.ts +4 -0
  71. package/dist/internal/nodes/validations.js +21 -0
  72. package/dist/internal/nodes/validations.js.map +1 -0
  73. package/dist/internal/uids.d.ts +38 -0
  74. package/dist/internal/uids.js +85 -0
  75. package/dist/internal/uids.js.map +1 -0
  76. package/dist/internal/upload/chunkStreamReader.d.ts +13 -0
  77. package/dist/internal/upload/chunkStreamReader.js +46 -0
  78. package/dist/internal/upload/chunkStreamReader.js.map +1 -0
  79. package/dist/internal/upload/chunkStreamReader.test.d.ts +1 -0
  80. package/dist/internal/upload/chunkStreamReader.test.js +75 -0
  81. package/dist/internal/upload/chunkStreamReader.test.js.map +1 -0
  82. package/dist/internal/upload/controller.d.ts +8 -0
  83. package/dist/internal/upload/controller.js +25 -0
  84. package/dist/internal/upload/controller.js.map +1 -0
  85. package/dist/internal/upload/digests.d.ts +8 -0
  86. package/dist/internal/upload/digests.js +22 -0
  87. package/dist/internal/upload/digests.js.map +1 -0
  88. package/dist/internal/upload/queue.d.ts +5 -0
  89. package/dist/internal/upload/queue.js +32 -0
  90. package/dist/internal/upload/queue.js.map +1 -0
  91. package/dist/internal/utils.d.ts +1 -0
  92. package/dist/internal/utils.js +13 -0
  93. package/dist/internal/utils.js.map +1 -0
  94. package/dist/internal/wait.d.ts +3 -0
  95. package/dist/internal/wait.js +28 -0
  96. package/dist/internal/wait.js.map +1 -0
  97. package/dist/internal/wait.test.d.ts +1 -0
  98. package/dist/internal/wait.test.js +21 -0
  99. package/dist/internal/wait.test.js.map +1 -0
  100. package/package.json +1 -1
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.UploadQueue = void 0;
4
+ const wait_1 = require("../wait");
5
+ /**
6
+ * A queue that limits the number of concurrent uploads.
7
+ *
8
+ * This is used to limit the number of concurrent uploads to avoid
9
+ * overloading the server, or get rate limited.
10
+ *
11
+ * Each file upload consumes memory and is limited by the number of
12
+ * concurrent block uploads for each file.
13
+ *
14
+ * This queue is straitforward and does not have any priority mechanism
15
+ * or other features, such as limiting total number of blocks being
16
+ * uploaded. That is something we want to add in the future to be
17
+ * more performant for many small file uploads.
18
+ */
19
+ const MAX_CONCURRENT_UPLOADS = 5;
20
+ class UploadQueue {
21
+ capacity = 0;
22
+ // TODO: use expected size to control the size of the queue
23
+ async waitForCapacity(signal) {
24
+ await (0, wait_1.waitForCondition)(() => this.capacity < MAX_CONCURRENT_UPLOADS, signal);
25
+ this.capacity++;
26
+ }
27
+ releaseCapacity() {
28
+ this.capacity--;
29
+ }
30
+ }
31
+ exports.UploadQueue = UploadQueue;
32
+ //# sourceMappingURL=queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"queue.js","sourceRoot":"","sources":["../../../src/internal/upload/queue.ts"],"names":[],"mappings":";;;AAAA,kCAA2C;AAE3C;;;;;;;;;;;;;GAaG;AACH,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAEjC,MAAa,WAAW;IACZ,QAAQ,GAAG,CAAC,CAAC;IAErB,2DAA2D;IAC3D,KAAK,CAAC,eAAe,CAAC,MAAoB;QACtC,MAAM,IAAA,uBAAgB,EAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,GAAG,sBAAsB,EAAE,MAAM,CAAC,CAAC;QAC7E,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpB,CAAC;IAED,eAAe;QACX,IAAI,CAAC,QAAQ,EAAE,CAAC;IACpB,CAAC;CACJ;AAZD,kCAYC"}
@@ -0,0 +1 @@
1
+ export declare function mergeUint8Arrays(arrays: Uint8Array[]): Uint8Array;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mergeUint8Arrays = mergeUint8Arrays;
4
+ function mergeUint8Arrays(arrays) {
5
+ const length = arrays.reduce((sum, arr) => sum + arr.length, 0);
6
+ const chunksAll = new Uint8Array(length);
7
+ arrays.reduce((position, arr) => {
8
+ chunksAll.set(arr, position);
9
+ return position + arr.length;
10
+ }, 0);
11
+ return chunksAll;
12
+ }
13
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/internal/utils.ts"],"names":[],"mappings":";;AAAA,4CAQC;AARD,SAAgB,gBAAgB,CAAC,MAAoB;IACjD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE;QAC5B,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC7B,OAAO,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC;IACjC,CAAC,EAAE,CAAC,CAAC,CAAC;IACN,OAAO,SAAS,CAAC;AACrB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare function waitForCondition(callback: () => boolean, signal?: AbortSignal): Promise<void>;
2
+ export declare function waitSeconds(seconds: number): Promise<void>;
3
+ export declare function wait(miliseconds: number): Promise<void>;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.waitForCondition = waitForCondition;
4
+ exports.waitSeconds = waitSeconds;
5
+ exports.wait = wait;
6
+ const errors_1 = require("../errors");
7
+ const WAIT_TIME = 50;
8
+ function waitForCondition(callback, signal) {
9
+ return new Promise((resolve, reject) => {
10
+ const waitForCondition = () => {
11
+ if (signal?.aborted) {
12
+ return reject(new errors_1.AbortError());
13
+ }
14
+ if (callback()) {
15
+ return resolve();
16
+ }
17
+ setTimeout(waitForCondition, WAIT_TIME);
18
+ };
19
+ waitForCondition();
20
+ });
21
+ }
22
+ async function waitSeconds(seconds) {
23
+ return wait(seconds * 1000);
24
+ }
25
+ async function wait(miliseconds) {
26
+ return new Promise((resolve) => setTimeout(resolve, miliseconds));
27
+ }
28
+ //# sourceMappingURL=wait.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.js","sourceRoot":"","sources":["../../src/internal/wait.ts"],"names":[],"mappings":";;AAIA,4CAaC;AAED,kCAEC;AAED,oBAEC;AAzBD,sCAAuC;AAEvC,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB,SAAgB,gBAAgB,CAAC,QAAuB,EAAE,MAAoB;IAC1E,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACzC,MAAM,gBAAgB,GAAG,GAAG,EAAE;YAC1B,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;gBAClB,OAAO,MAAM,CAAC,IAAI,mBAAU,EAAE,CAAC,CAAC;YACpC,CAAC;YACD,IAAI,QAAQ,EAAE,EAAE,CAAC;gBACb,OAAO,OAAO,EAAE,CAAC;YACrB,CAAC;YACD,UAAU,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;QAC5C,CAAC,CAAC;QACF,gBAAgB,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;AACP,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,OAAe;IAC7C,OAAO,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;AAChC,CAAC;AAEM,KAAK,UAAU,IAAI,CAAC,WAAmB;IAC1C,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const wait_1 = require("./wait");
4
+ describe('waitForCondition', () => {
5
+ it('should resolve immediately if condition is met', async () => {
6
+ const callback = jest.fn().mockReturnValue(true);
7
+ await (0, wait_1.waitForCondition)(callback);
8
+ expect(callback).toHaveBeenCalled();
9
+ });
10
+ it('should resolve after condition is met', async () => {
11
+ const callback = jest.fn().mockReturnValueOnce(false).mockReturnValueOnce(true);
12
+ await (0, wait_1.waitForCondition)(callback);
13
+ expect(callback).toHaveBeenCalledTimes(2);
14
+ });
15
+ it('should reject if signal is aborted', async () => {
16
+ const signal = { aborted: true };
17
+ const callback = jest.fn().mockReturnValue(false);
18
+ await expect((0, wait_1.waitForCondition)(callback, signal)).rejects.toThrow('aborted');
19
+ });
20
+ });
21
+ //# sourceMappingURL=wait.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wait.test.js","sourceRoot":"","sources":["../../src/internal/wait.test.ts"],"names":[],"mappings":";;AAAA,iCAA0C;AAE1C,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACjD,MAAM,IAAA,uBAAgB,EAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE;QACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAChF,MAAM,IAAA,uBAAgB,EAAC,QAAQ,CAAC,CAAC;QACjC,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,IAAI,EAAwB,CAAC;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,MAAM,CAAC,IAAA,uBAAgB,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAChF,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@protontech/drive-sdk",
3
- "version": "0.0.11",
3
+ "version": "0.0.12",
4
4
  "description": "Proton Drive SDK",
5
5
  "license": "GPL-3.0",
6
6
  "main": "dist/index.js",