rac-delta 1.0.8 → 1.0.10

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 (26) hide show
  1. package/dist/core/adapters/storage-adapter.d.ts +2 -2
  2. package/dist/core/adapters/storage-adapter.d.ts.map +1 -1
  3. package/dist/core/services/hasher-service.d.ts +3 -3
  4. package/dist/core/services/hasher-service.d.ts.map +1 -1
  5. package/dist/infrastructure/adapters/azure-blob-storage-adapter.d.ts +1 -1
  6. package/dist/infrastructure/adapters/azure-blob-storage-adapter.d.ts.map +1 -1
  7. package/dist/infrastructure/adapters/azure-blob-storage-adapter.js +2 -1
  8. package/dist/infrastructure/adapters/gcs-storage-adapter.d.ts +1 -1
  9. package/dist/infrastructure/adapters/gcs-storage-adapter.d.ts.map +1 -1
  10. package/dist/infrastructure/adapters/gcs-storage-adapter.js +3 -1
  11. package/dist/infrastructure/adapters/http-storage-adapter.d.ts +1 -1
  12. package/dist/infrastructure/adapters/http-storage-adapter.d.ts.map +1 -1
  13. package/dist/infrastructure/adapters/local-storage-adapter.d.ts +1 -1
  14. package/dist/infrastructure/adapters/local-storage-adapter.d.ts.map +1 -1
  15. package/dist/infrastructure/adapters/local-storage-adapter.js +4 -2
  16. package/dist/infrastructure/adapters/s3-storage-adapter.d.ts +1 -1
  17. package/dist/infrastructure/adapters/s3-storage-adapter.d.ts.map +1 -1
  18. package/dist/infrastructure/adapters/ssh-storage-adapter.d.ts +1 -1
  19. package/dist/infrastructure/adapters/ssh-storage-adapter.d.ts.map +1 -1
  20. package/dist/infrastructure/adapters/ssh-storage-adapter.js +2 -1
  21. package/dist/infrastructure/services/hash-wasm-hasher-service.d.ts +1 -2
  22. package/dist/infrastructure/services/hash-wasm-hasher-service.d.ts.map +1 -1
  23. package/dist/infrastructure/services/hash-wasm-hasher-service.js +24 -26
  24. package/dist/infrastructure/services/memory-delta-service.d.ts.map +1 -1
  25. package/dist/infrastructure/services/memory-delta-service.js +4 -2
  26. package/package.json +1 -1
@@ -23,11 +23,11 @@ export declare abstract class HashStorageAdapter extends StorageAdapter {
23
23
  * Upload a chunk from a readable stream
24
24
  *
25
25
  * @param hash the hash of the chunk
26
- * @param data the `Readable` stream
26
+ * @param data the `Readable` stream or Buffer to upload
27
27
  * @param opts.overwrite whether to overwrite chunk if exists or not (depends on the implementation)
28
28
  * @param opts.size ContentLength of the chunk, sometimes needed for some adapters
29
29
  */
30
- abstract putChunk(hash: string, data: Readable, opts?: Nullish<{
30
+ abstract putChunk(hash: string, data: Readable | Buffer, opts?: Nullish<{
31
31
  overwrite?: Nullish<boolean>;
32
32
  size?: Nullish<number>;
33
33
  }>): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"storage-adapter.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/storage-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storage-adapter.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/storage-adapter.ts"],"names":[],"mappings":"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"}
@@ -16,13 +16,13 @@ export interface HasherService {
16
16
  */
17
17
  hashFile(filePath: string, rootDir: string, chunkSize: number): Promise<FileEntry>;
18
18
  /**
19
- * Will process a stream of Chunks and return an array of hashed Chunks
19
+ * Will process a stream of Chunks and return in a callback each processed chunk
20
20
  *
21
21
  * @param stream
22
22
  * @param chunkSize The size (in bytes) chunks will need to be processed and emited.
23
- * @param onChunk callback that returns the processed bytes
23
+ * @param onChunk callback that returns the processed chunk
24
24
  */
25
- hashStream(stream: AsyncChunkStream, chunkSize: number, onChunk?: (chunk: Uint8Array, hash: string) => void): Promise<Chunk[]>;
25
+ hashStream(stream: AsyncChunkStream, chunkSize: number, onChunk: (data: Buffer, chunk: Chunk) => void): Promise<void>;
26
26
  /**
27
27
  * Returns a hash of a buffer
28
28
  *
@@ -1 +1 @@
1
- {"version":3,"file":"hasher-service.d.ts","sourceRoot":"","sources":["../../../src/core/services/hasher-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;IAExC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEnF;;;;;;OAMG;IACH,UAAU,CACR,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,GAClD,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IAEpB;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9C;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtE;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjE,qBAAqB,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;CACnD"}
1
+ {"version":3,"file":"hasher-service.d.ts","sourceRoot":"","sources":["../../../src/core/services/hasher-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAAC;IAExC,MAAM,CAAC,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,aAAa;IAC5B;;;;;;;;OAQG;IACH,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAEnF;;;;;;OAMG;IACH,UAAU,CACR,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,GAC5C,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAE9C;;;;;OAKG;IACH,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEtE;;;;;OAKG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAEjE,qBAAqB,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;CACnD"}
@@ -11,7 +11,7 @@ export declare class AzureBlobStorageAdapter extends HashStorageAdapter {
11
11
  private getChunkPath;
12
12
  private getIndexPath;
13
13
  getChunk(hash: string): Promise<Readable | null>;
14
- putChunk(hash: string, data: Readable, opts?: {
14
+ putChunk(hash: string, data: Readable | Buffer, opts?: {
15
15
  overwrite?: boolean;
16
16
  }): Promise<void>;
17
17
  chunkExists(hash: string): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"azure-blob-storage-adapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/azure-blob-storage-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AASlC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,qBAAa,uBAAwB,SAAQ,kBAAkB;IAIjD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEH,MAAM,EAAE,sBAAsB;IA+BrD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAId,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAmBhD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBrF,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAc/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAyBpD,cAAc,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAgCzC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAQpD"}
1
+ {"version":3,"file":"azure-blob-storage-adapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/azure-blob-storage-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AASlC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,qBAAa,uBAAwB,SAAQ,kBAAkB;IAIjD,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEH,MAAM,EAAE,sBAAsB;IA+BrD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,YAAY;IAId,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAmBhD,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,GAAG,MAAM,EACvB,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7B,OAAO,CAAC,IAAI,CAAC;IAyBV,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAK3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAc/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAyBpD,cAAc,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAgCzC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAQpD"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.AzureBlobStorageAdapter = void 0;
4
+ const stream_1 = require("stream");
4
5
  const storage_blob_1 = require("@azure/storage-blob");
5
6
  const identity_1 = require("@azure/identity");
6
7
  const adapters_1 = require("../../core/adapters");
@@ -64,7 +65,7 @@ class AzureBlobStorageAdapter extends adapters_1.HashStorageAdapter {
64
65
  return;
65
66
  }
66
67
  }
67
- await blob.uploadStream(data, 4 * 1024 * 1024, 5, {
68
+ await blob.uploadStream(Buffer.isBuffer(data) ? stream_1.Readable.from(data) : data, 4 * 1024 * 1024, 5, {
68
69
  blobHTTPHeaders: { blobContentType: 'application/octet-stream' },
69
70
  });
70
71
  }
@@ -9,7 +9,7 @@ export declare class GCSStorageAdapter extends HashStorageAdapter {
9
9
  dispose(): Promise<void>;
10
10
  private getPath;
11
11
  getChunk(hash: string): Promise<Readable | null>;
12
- putChunk(hash: string, data: Readable): Promise<void>;
12
+ putChunk(hash: string, data: Readable | Buffer): Promise<void>;
13
13
  chunkExists(hash: string): Promise<boolean>;
14
14
  deleteChunk(hash: string): Promise<void>;
15
15
  listChunks(): Promise<string[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"gcs-storage-adapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/gcs-storage-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGlC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,qBAAa,iBAAkB,SAAQ,kBAAkB;IAG3C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,OAAO,CAAU;gBAEI,MAAM,EAAE,gBAAgB;IAa/C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,OAAO,CAAC,OAAO;IAIT,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAWhD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAUrD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAU/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAwBpD,cAAc,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAkBzC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAepD"}
1
+ {"version":3,"file":"gcs-storage-adapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/gcs-storage-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGlC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,qBAAa,iBAAkB,SAAQ,kBAAkB;IAG3C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,OAAO,CAAU;gBAEI,MAAM,EAAE,gBAAgB;IAa/C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,OAAO,CAAC,OAAO;IAIT,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAWhD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAY9D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQ3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAU/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAwBpD,cAAc,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAkBzC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAepD"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GCSStorageAdapter = void 0;
4
+ const stream_1 = require("stream");
4
5
  const storage_1 = require("@google-cloud/storage");
5
6
  const adapters_1 = require("../../core/adapters");
6
7
  class GCSStorageAdapter extends adapters_1.HashStorageAdapter {
@@ -35,8 +36,9 @@ class GCSStorageAdapter extends adapters_1.HashStorageAdapter {
35
36
  async putChunk(hash, data) {
36
37
  const file = this.storage.bucket(this.config.bucket).file(this.getPath(hash));
37
38
  const writeStream = file.createWriteStream({ resumable: false });
39
+ const stream = Buffer.isBuffer(data) ? stream_1.Readable.from(data) : data;
38
40
  await new Promise((resolve, reject) => {
39
- data.pipe(writeStream).on('finish', resolve).on('error', reject);
41
+ stream.pipe(writeStream).on('finish', resolve).on('error', reject);
40
42
  });
41
43
  }
42
44
  async chunkExists(hash) {
@@ -13,7 +13,7 @@ export declare class HTTPStorageAdapter extends HashStorageAdapter {
13
13
  private buildIndexUrl;
14
14
  private headers;
15
15
  getChunk(hash: string): Promise<Readable | null>;
16
- putChunk(hash: string, data: Readable): Promise<void>;
16
+ putChunk(hash: string, data: Readable | Buffer): Promise<void>;
17
17
  chunkExists(hash: string): Promise<boolean>;
18
18
  deleteChunk(hash: string): Promise<void>;
19
19
  getChunkInfo(hash: string): Promise<BlobInfo | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"http-storage-adapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/http-storage-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAU5C,qBAAa,kBAAmB,SAAQ,kBAAkB;IAK5C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAkB;gBAEb,MAAM,EAAE,iBAAiB;IAUhD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,OAAO;IAcT,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAqBhD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAcrD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBxC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgCpD,cAAc,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAsBzC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAepD"}
1
+ {"version":3,"file":"http-storage-adapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/http-storage-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAU5C,qBAAa,kBAAmB,SAAQ,kBAAkB;IAK5C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAkB;gBAEb,MAAM,EAAE,iBAAiB;IAUhD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,OAAO;IAcT,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAqBhD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAc9D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiBxC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgCpD,cAAc,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAsBzC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAepD"}
@@ -10,7 +10,7 @@ export declare class LocalStorageAdapter extends HashStorageAdapter {
10
10
  private resolveChunkPath;
11
11
  private resolveIndexPath;
12
12
  getChunk(hash: string): Promise<Readable | null>;
13
- putChunk(hash: string, data: Readable, opts?: Nullish<{
13
+ putChunk(hash: string, data: Readable | Buffer, opts?: Nullish<{
14
14
  overwrite?: Nullish<boolean>;
15
15
  }>): Promise<void>;
16
16
  chunkExists(hash: string): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"local-storage-adapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/local-storage-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAIlC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,qBAAa,mBAAoB,SAAQ,kBAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,kBAAkB;IAIjD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,gBAAgB;IAKlB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAWhD,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,EACd,IAAI,CAAC,EAAE,OAAO,CAAC;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,GAC/C,OAAO,CAAC,IAAI,CAAC;IA4BV,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAoB/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAepD,cAAc,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAgBzC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAKpD"}
1
+ {"version":3,"file":"local-storage-adapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/local-storage-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAIlC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,qBAAa,mBAAoB,SAAQ,kBAAkB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,kBAAkB;IAIjD,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,gBAAgB;IAKlB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAWhD,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,GAAG,MAAM,EACvB,IAAI,CAAC,EAAE,OAAO,CAAC;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,GAC/C,OAAO,CAAC,IAAI,CAAC;IA8BV,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAW3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAoB/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAepD,cAAc,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAgBzC,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAKpD"}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LocalStorageAdapter = void 0;
4
4
  const promises_1 = require("fs/promises");
5
5
  const fs_1 = require("fs");
6
+ const stream_1 = require("stream");
6
7
  const path_1 = require("path");
7
8
  const exceptions_1 = require("../../core/exceptions");
8
9
  const adapters_1 = require("../../core/adapters");
@@ -48,12 +49,13 @@ class LocalStorageAdapter extends adapters_1.HashStorageAdapter {
48
49
  }
49
50
  }
50
51
  }
52
+ const stream = Buffer.isBuffer(data) ? stream_1.Readable.from(data) : data;
51
53
  await new Promise((resolve, reject) => {
52
54
  const writeStream = (0, fs_1.createWriteStream)(path);
53
- data.pipe(writeStream);
55
+ stream.pipe(writeStream);
54
56
  writeStream.on('finish', () => resolve());
55
57
  writeStream.on('error', (err) => reject(err));
56
- data.on('error', (err) => reject(err));
58
+ stream.on('error', (err) => reject(err));
57
59
  });
58
60
  }
59
61
  async chunkExists(hash) {
@@ -10,7 +10,7 @@ export declare class S3StorageAdapter extends HashStorageAdapter {
10
10
  dispose(): Promise<void>;
11
11
  private resolveKey;
12
12
  getChunk(hash: string): Promise<Readable | null>;
13
- putChunk(hash: string, data: Readable, opts?: {
13
+ putChunk(hash: string, data: Readable | Buffer, opts?: {
14
14
  overwrite?: Nullish<boolean>;
15
15
  size?: Nullish<number>;
16
16
  }): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"s3-storage-adapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/s3-storage-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAWlC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,qBAAa,gBAAiB,SAAQ,kBAAkB;IAG1C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;gBAED,MAAM,EAAE,eAAe;IAU9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,OAAO,CAAC,UAAU;IAIZ,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAiBhD,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,EACd,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC9D,OAAO,CAAC,IAAI,CAAC;IAoBV,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA8B/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAqBpD,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7C,cAAc,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CA6BhD"}
1
+ {"version":3,"file":"s3-storage-adapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/s3-storage-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAWlC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,qBAAa,gBAAiB,SAAQ,kBAAkB;IAG1C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;gBAED,MAAM,EAAE,eAAe;IAU9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,OAAO,CAAC,UAAU;IAIZ,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAiBhD,QAAQ,CACZ,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,QAAQ,GAAG,MAAM,EACvB,IAAI,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;KAAE,GAC9D,OAAO,CAAC,IAAI,CAAC;IAoBV,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAY3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKxC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA8B/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAqBpD,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAe7C,cAAc,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;CA6BhD"}
@@ -12,7 +12,7 @@ export declare class SSHStorageAdapter extends HashStorageAdapter {
12
12
  private resolveChunkPath;
13
13
  private resolveIndexPath;
14
14
  getChunk(hash: string): Promise<Readable | null>;
15
- putChunk(hash: string, data: Readable): Promise<void>;
15
+ putChunk(hash: string, data: Readable | Buffer): Promise<void>;
16
16
  chunkExists(hash: string): Promise<boolean>;
17
17
  deleteChunk(hash: string): Promise<void>;
18
18
  listChunks(): Promise<string[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"ssh-storage-adapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/ssh-storage-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGlC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAK5C,qBAAa,iBAAkB,SAAQ,kBAAkB;IAM3C,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAa;IAE3B,OAAO,CAAC,UAAU,CAA6B;gBAElB,MAAM,EAAE,gBAAgB;YAIvC,OAAO;IA4CrB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,gBAAgB;IAKlB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAwBhD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBrD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAexC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAe/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAuBpD,cAAc,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAkC/C,OAAO,CAAC,UAAU;IAaZ,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAehB,mBAAmB;IAgBjC,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,cAAc;CAKvB"}
1
+ {"version":3,"file":"ssh-storage-adapter.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/adapters/ssh-storage-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAGlC,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAK5C,qBAAa,iBAAkB,SAAQ,kBAAkB;IAM3C,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,MAAM,CAAa;IAE3B,OAAO,CAAC,UAAU,CAA6B;gBAElB,MAAM,EAAE,gBAAgB;YAIvC,OAAO;IA4CrB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,gBAAgB;IAKlB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAwBhD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkB9D,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS3C,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAexC,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAe/B,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAuBpD,cAAc,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAkC/C,OAAO,CAAC,UAAU;IAaZ,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB7C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAehB,mBAAmB;IAgBjC,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,cAAc;CAKvB"}
@@ -118,10 +118,11 @@ class SSHStorageAdapter extends adapters_1.HashStorageAdapter {
118
118
  const sftp = await this.connect();
119
119
  const remotePath = this.resolveChunkPath(hash);
120
120
  const dir = remotePath.substring(0, remotePath.lastIndexOf('/'));
121
+ const stream = Buffer.isBuffer(data) ? stream_1.Readable.from(data) : data;
121
122
  await this.createDirIfNotFound(sftp, dir);
122
123
  return new Promise((resolve, reject) => {
123
124
  const writeStream = sftp.createWriteStream(remotePath);
124
- data.pipe(writeStream);
125
+ stream.pipe(writeStream);
125
126
  writeStream.on('close', resolve);
126
127
  writeStream.on('error', reject);
127
128
  });
@@ -1,10 +1,9 @@
1
1
  import { HasherService, StreamingHasher } from '../../core/services';
2
2
  import { AsyncChunkStream } from '../../core/services';
3
3
  import { FileEntry, Chunk } from '../../core/models';
4
- import { Nullish } from '../../core/types';
5
4
  export declare class HashWasmHasherService implements HasherService {
6
5
  hashFile(filePath: string, rootDir: string, chunkSize: number): Promise<FileEntry>;
7
- hashStream(stream: AsyncChunkStream, chunkSize: number, onChunk?: Nullish<(chunk: Uint8Array, hash: string) => void>): Promise<Chunk[]>;
6
+ hashStream(stream: AsyncChunkStream, chunkSize: number, onChunk: (data: Buffer, chunk: Chunk) => void): Promise<void>;
8
7
  verifyChunk(data: Uint8Array, expectedHash: string): Promise<boolean>;
9
8
  hashBuffer(data: Uint8Array): Promise<string>;
10
9
  verifyFile(path: string, expectedHash: string): Promise<boolean>;
@@ -1 +1 @@
1
- {"version":3,"file":"hash-wasm-hasher-service.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/services/hash-wasm-hasher-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,qBAAa,qBAAsB,YAAW,aAAa;IACnD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAiDlF,UAAU,CACd,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAC3D,OAAO,CAAC,KAAK,EAAE,CAAC;IAkEb,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQrE,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAM7C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBhE,qBAAqB,IAAI,OAAO,CAAC,eAAe,CAAC;CAYxD"}
1
+ {"version":3,"file":"hash-wasm-hasher-service.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/services/hash-wasm-hasher-service.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAErE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAGrD,qBAAa,qBAAsB,YAAW,aAAa;IACnD,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAiDlF,UAAU,CACd,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,GAC5C,OAAO,CAAC,IAAI,CAAC;IAkEV,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAQrE,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC;IAM7C,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBhE,qBAAqB,IAAI,OAAO,CAAC,eAAe,CAAC;CAYxD"}
@@ -50,47 +50,45 @@ class HashWasmHasherService {
50
50
  if (!chunkSize || chunkSize <= 0) {
51
51
  throw new Error('chunkSize must be a positive number.');
52
52
  }
53
- const chunks = [];
54
53
  let offset = 0;
55
- let buffer = Buffer.alloc(0);
54
+ let buffer = Buffer.allocUnsafe(chunkSize);
55
+ let bufferLen = 0;
56
56
  try {
57
57
  for await (const data of stream) {
58
- buffer = Buffer.concat([buffer, data]);
59
- while (buffer.length >= chunkSize) {
60
- const emitChunk = buffer.subarray(0, chunkSize);
61
- const chunkHasher = await (0, hash_wasm_1.createBLAKE3)();
62
- chunkHasher.update(emitChunk);
63
- const chunkHash = chunkHasher.digest('hex');
64
- if (onChunk) {
58
+ let input = Buffer.isBuffer(data) ? data : Buffer.from(data);
59
+ while (input.length > 0) {
60
+ const take = Math.min(chunkSize - bufferLen, input.length);
61
+ input.copy(buffer, bufferLen, 0, take);
62
+ bufferLen += take;
63
+ input = input.subarray(take);
64
+ if (bufferLen === chunkSize) {
65
+ const chunkView = buffer.subarray(0, bufferLen);
66
+ const chunk = Buffer.from(chunkView);
67
+ const chunkHasher = await (0, hash_wasm_1.createBLAKE3)();
68
+ chunkHasher.update(chunk);
69
+ const chunkHash = chunkHasher.digest('hex');
65
70
  // onChunk could be a promise
66
- await Promise.resolve(onChunk(emitChunk, chunkHash));
71
+ await Promise.resolve(onChunk(chunk, { hash: chunkHash, offset, size: bufferLen }));
72
+ offset += bufferLen;
73
+ bufferLen = 0;
67
74
  }
68
- chunks.push({
69
- hash: chunkHash,
70
- offset,
71
- size: emitChunk.length,
72
- });
73
- offset += emitChunk.length;
74
- buffer = buffer.subarray(chunkSize);
75
75
  }
76
76
  }
77
- if (buffer.length > 0) {
77
+ if (bufferLen > 0) {
78
+ const chunkView = buffer.subarray(0, bufferLen);
79
+ const chunk = Buffer.from(chunkView);
78
80
  const chunkHasher = await (0, hash_wasm_1.createBLAKE3)();
79
- chunkHasher.update(buffer);
81
+ chunkHasher.update(chunk);
80
82
  const chunkHash = chunkHasher.digest('hex');
81
- if (onChunk) {
82
- await Promise.resolve(onChunk(buffer, chunkHash));
83
- }
84
- chunks.push({
83
+ await Promise.resolve(onChunk(chunk, {
85
84
  hash: chunkHash,
86
85
  offset,
87
- size: buffer.length,
88
- });
86
+ size: bufferLen,
87
+ }));
89
88
  }
90
89
  if (stream.close) {
91
90
  await stream.close();
92
91
  }
93
- return chunks;
94
92
  }
95
93
  catch (err) {
96
94
  if (err instanceof Error) {
@@ -1 +1 @@
1
- {"version":3,"file":"memory-delta-service.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/services/memory-delta-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAc,MAAM,mBAAmB,CAAC;AAE9E,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,qBAAa,kBAAmB,YAAW,YAAY;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,wBAAwB,CAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,WAAW,SAAI,EACf,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,GACjC,OAAO,CAAC,OAAO,CAAC;IA8Cb,yBAAyB,CAC7B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,SAAS,CAAC;YAqBN,SAAS;IAuBxB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS;IAiE3D,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,GAAG,SAAS;IA0CpD,gBAAgB,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;IAkBtF,kBAAkB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;CAG/F"}
1
+ {"version":3,"file":"memory-delta-service.d.ts","sourceRoot":"","sources":["../../../src/infrastructure/services/memory-delta-service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAqB,MAAM,mBAAmB,CAAC;AAErF,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,qBAAa,kBAAmB,YAAW,YAAY;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAE5C,wBAAwB,CAC5B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,WAAW,SAAI,EACf,cAAc,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,GACjC,OAAO,CAAC,OAAO,CAAC;IA8Cb,yBAAyB,CAC7B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,SAAS,CAAC;YAwBN,SAAS;IAuBxB,OAAO,CAAC,iBAAiB;IAYzB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS;IAiE3D,UAAU,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,GAAG,SAAS;IA0CpD,gBAAgB,CAAC,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC;IAkBtF,kBAAkB,CAAC,UAAU,EAAE,OAAO,GAAG,IAAI,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;CAG/F"}
@@ -47,8 +47,10 @@ class MemoryDeltaService {
47
47
  }
48
48
  async createFileEntryFromStream(stream, path, chunkSize) {
49
49
  const fileHasher = await this.hasher.createStreamingHasher();
50
- const chunks = await this.hasher.hashStream(stream, chunkSize, (chunk) => {
51
- fileHasher.update(chunk);
50
+ const chunks = [];
51
+ await this.hasher.hashStream(stream, chunkSize, (data, chunk) => {
52
+ fileHasher.update(data);
53
+ chunks.push(chunk);
52
54
  });
53
55
  const fileHash = fileHasher.digest('hex');
54
56
  const totalSize = chunks.reduce((total, chunk) => total + chunk.size, 0);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "rac-delta",
3
3
  "description": "Storage agnostic delta patching implementation of rac-delta protocol for NodeJs. With streaming support and file reconstruction.",
4
- "version": "1.0.8",
4
+ "version": "1.0.10",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "repository": {