split-hash 0.1.7 → 0.2.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 (35) hide show
  1. package/README.md +28 -20
  2. package/lib/{es2015 → nodejs}/index.d.ts +0 -0
  3. package/lib/{es2015 → nodejs}/index.js +0 -0
  4. package/lib/nodejs/index.js.map +1 -0
  5. package/lib/{es2018 → nodejs}/split-hash-validator.d.ts +3 -3
  6. package/lib/{es2015 → nodejs}/split-hash-validator.js +2 -2
  7. package/lib/nodejs/split-hash-validator.js.map +1 -0
  8. package/lib/{es2015 → nodejs}/split-hash.d.ts +2 -2
  9. package/lib/{es2018 → nodejs}/split-hash.js +3 -3
  10. package/lib/nodejs/split-hash.js.map +1 -0
  11. package/lib/nodejs/types.d.ts +6 -0
  12. package/lib/{es2015 → nodejs}/types.js +0 -0
  13. package/lib/{es2015 → nodejs}/types.js.map +1 -1
  14. package/lib/{es2018 → whatwg}/index.d.ts +0 -1
  15. package/lib/{es2018 → whatwg}/index.js +0 -1
  16. package/lib/whatwg/index.js.map +1 -0
  17. package/lib/whatwg/split-hash.d.ts +2 -0
  18. package/lib/whatwg/split-hash.js +52 -0
  19. package/lib/whatwg/split-hash.js.map +1 -0
  20. package/lib/whatwg/types.d.ts +5 -0
  21. package/lib/{es2018 → whatwg}/types.js +0 -0
  22. package/lib/{es2018 → whatwg}/types.js.map +1 -1
  23. package/package.json +27 -24
  24. package/lib/es2015/index.js.map +0 -1
  25. package/lib/es2015/split-hash-validator.d.ts +0 -19
  26. package/lib/es2015/split-hash-validator.js.map +0 -1
  27. package/lib/es2015/split-hash.js +0 -78
  28. package/lib/es2015/split-hash.js.map +0 -1
  29. package/lib/es2015/types.d.ts +0 -6
  30. package/lib/es2018/index.js.map +0 -1
  31. package/lib/es2018/split-hash-validator.js +0 -68
  32. package/lib/es2018/split-hash-validator.js.map +0 -1
  33. package/lib/es2018/split-hash.d.ts +0 -7
  34. package/lib/es2018/split-hash.js.map +0 -1
  35. package/lib/es2018/types.d.ts +0 -6
package/README.md CHANGED
@@ -1,9 +1,7 @@
1
1
  # split-hash
2
-
3
2
  Split the stream based on bytes and get digests from each part.
4
3
 
5
4
  ## Install
6
-
7
5
  ```sh
8
6
  npm install --save split-hash
9
7
  # or
@@ -11,11 +9,9 @@ yarn add split-hash
11
9
  ```
12
10
 
13
11
  ## Usage
14
-
15
12
  ### Hash
16
-
17
13
  ```js
18
- import { splitHash } from 'split-hash'
14
+ import { splitHash } from 'split-hash/nodejs'
19
15
  import * as crypto from 'crypto'
20
16
 
21
17
  const KiB = 1024
@@ -41,9 +37,8 @@ for await (const hash of iter) {
41
37
  ```
42
38
 
43
39
  ### Validate
44
-
45
40
  ```js
46
- import { SplitHashValidator } from 'split-hash'
41
+ import { SplitHashValidator } from 'split-hash/nodejs'
47
42
  import * as crypto from 'crypto'
48
43
 
49
44
  const KiB = 1024
@@ -70,21 +65,18 @@ stream
70
65
  .on('error', err => console.error('not matched'))
71
66
  ```
72
67
 
73
- ## Interface
74
-
68
+ ## API
69
+ ### Node.js
75
70
  ```ts
76
71
  type ProgressiveHashFactory<T> = () => ProgressiveHash<T>
77
72
 
78
- interface ProgressiveHash<T> {
73
+ interface IProgressiveHash<T> {
79
74
  update(buffer: Buffer): void
80
75
  digest(): T
81
76
  }
82
77
  ```
83
78
 
84
- ## API
85
-
86
- ### splitHash
87
-
79
+ #### splitHash
88
80
  ```ts
89
81
  function splitHash<T>(
90
82
  stream: NodeJS.ReadableStream
@@ -95,8 +87,7 @@ function splitHash<T>(
95
87
 
96
88
  It throws `StreamEncodingError` when the `stream` encoding is set.
97
89
 
98
- ### SplitHashValidator
99
-
90
+ #### SplitHashValidator
100
91
  ```ts
101
92
  class SplitHashValidator<T> extends Stream.Transform {
102
93
  constructor(
@@ -110,14 +101,31 @@ class SplitHashValidator<T> extends Stream.Transform {
110
101
 
111
102
  It throws `NotMatchedError` when the `stream` does not match digests.
112
103
 
113
- ### StreamEncodingError
114
-
104
+ #### StreamEncodingError
115
105
  ```ts
116
106
  class StreamEncodingError extends Error
117
107
  ```
118
108
 
119
- ### NotMatchedError
120
-
109
+ #### NotMatchedError
121
110
  ```ts
122
111
  class NotMatchedError extends Error
123
112
  ```
113
+
114
+ ### WHATWG
115
+ ```ts
116
+ type ProgressiveHashFactory<T> = () => IProgressiveHash<T>
117
+
118
+ interface IProgressiveHash<T> {
119
+ update(buffer: Uint8Array): void
120
+ digest(): Promise<T>
121
+ }
122
+ ```
123
+
124
+ #### splitHash
125
+ ```ts
126
+ async function* splitHash<T>(
127
+ stream: ReadableStream
128
+ , blockSize: number
129
+ , createHash: ProgressiveHashFactory<T>
130
+ ): AsyncIterable<T>
131
+ ```
File without changes
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/nodejs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,+CAA4B;AAC5B,yDAAsC"}
@@ -1,6 +1,7 @@
1
1
  /// <reference types="node" />
2
- import { ProgressiveHashFactory } from './types';
3
2
  import { Transform, TransformCallback } from 'stream';
3
+ import { CustomError } from '@blackglory/errors';
4
+ import { ProgressiveHashFactory } from './types';
4
5
  export declare class SplitHashValidator<T> extends Transform {
5
6
  private digests;
6
7
  private blockSize;
@@ -13,7 +14,6 @@ export declare class SplitHashValidator<T> extends Transform {
13
14
  _transform(chunk: Buffer, encoding: BufferEncoding, callback: TransformCallback): void;
14
15
  _flush(callback: TransformCallback): void;
15
16
  }
16
- export declare class NotMatchedError extends Error {
17
- name: string;
17
+ export declare class NotMatchedError extends CustomError {
18
18
  constructor();
19
19
  }
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.NotMatchedError = exports.SplitHashValidator = void 0;
4
4
  const stream_1 = require("stream");
5
+ const errors_1 = require("@blackglory/errors");
5
6
  class SplitHashValidator extends stream_1.Transform {
6
7
  constructor(digests, blockSize, createHash, equals = Object.is) {
7
8
  super();
@@ -58,10 +59,9 @@ class SplitHashValidator extends stream_1.Transform {
58
59
  }
59
60
  }
60
61
  exports.SplitHashValidator = SplitHashValidator;
61
- class NotMatchedError extends Error {
62
+ class NotMatchedError extends errors_1.CustomError {
62
63
  constructor() {
63
64
  super('hashes do not match');
64
- this.name = this.constructor.name;
65
65
  }
66
66
  }
67
67
  exports.NotMatchedError = NotMatchedError;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-hash-validator.js","sourceRoot":"","sources":["../../src/nodejs/split-hash-validator.ts"],"names":[],"mappings":";;;AAAA,mCAAqD;AACrD,+CAAgD;AAGhD,MAAa,kBAAsB,SAAQ,kBAAS;IAKlD,YACU,OAAY,EACZ,SAAiB,EACjB,UAAqC,EACrC,SAAkC,MAAM,CAAC,EAAE;QAEnD,KAAK,EAAE,CAAA;QALC,YAAO,GAAP,OAAO,CAAK;QACZ,cAAS,GAAT,SAAS,CAAQ;QACjB,eAAU,GAAV,UAAU,CAA2B;QACrC,WAAM,GAAN,MAAM,CAAqC;QAR7C,SAAI,GAAwB,IAAI,CAAC,UAAU,EAAE,CAAA;QAC7C,SAAI,GAAG,CAAC,CAAA;QACR,gBAAW,GAAG,CAAC,CAAA;IASvB,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,QAAwB,EAAE,QAA2B;QAG7E,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;YAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACvB,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAA;SAC1B;aAAM;YACL,IAAI,MAAM,GAAG,CAAC,CAAA;YACd,OAAO,IAAI,EAAE;gBACX,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;gBACzC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;gBAClD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;oBAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBACvB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;oBACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,EAAE;wBACxD,OAAO,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC,CAAA;qBACvC;oBACD,IAAI,CAAC,WAAW,EAAE,CAAA;oBAElB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;oBAC7B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;oBACb,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;iBACvB;qBAAM;oBAEL,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBACvB,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAA;oBACzB,MAAK;iBACN;aACF;SACF;QAED,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IACvB,CAAC;IAED,MAAM,CAAC,QAA2B;QAChC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;YACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,EAAE;gBACxD,OAAO,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC,CAAA;aACvC;YACD,IAAI,CAAC,WAAW,EAAE,CAAA;SACnB;QAED,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAC5C,OAAO,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC,CAAA;SACvC;QAED,QAAQ,EAAE,CAAA;IACZ,CAAC;CACF;AA/DD,gDA+DC;AAED,MAAa,eAAgB,SAAQ,oBAAW;IAC9C;QACE,KAAK,CAAC,qBAAqB,CAAC,CAAA;IAC9B,CAAC;CACF;AAJD,0CAIC"}
@@ -1,7 +1,7 @@
1
1
  /// <reference types="node" />
2
+ import { CustomError } from '@blackglory/errors';
2
3
  import { ProgressiveHashFactory } from './types';
3
4
  export declare function splitHash<T>(stream: NodeJS.ReadableStream, blockSize: number, createHash: ProgressiveHashFactory<T>): AsyncIterable<T>;
4
- export declare class StreamEncodingError extends Error {
5
- name: string;
5
+ export declare class StreamEncodingError extends CustomError {
6
6
  constructor();
7
7
  }
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.StreamEncodingError = exports.splitHash = void 0;
4
+ const errors_1 = require("@blackglory/errors");
4
5
  async function* splitHash(stream, blockSize, createHash) {
5
6
  let hash = createHash();
6
7
  let accu = 0;
@@ -36,10 +37,9 @@ async function* splitHash(stream, blockSize, createHash) {
36
37
  yield hash.digest();
37
38
  }
38
39
  exports.splitHash = splitHash;
39
- class StreamEncodingError extends Error {
40
+ class StreamEncodingError extends errors_1.CustomError {
40
41
  constructor() {
41
- super('stream encoding must not be set.');
42
- this.name = this.constructor.name;
42
+ super('stream encoding must not be set');
43
43
  }
44
44
  }
45
45
  exports.StreamEncodingError = StreamEncodingError;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-hash.js","sourceRoot":"","sources":["../../src/nodejs/split-hash.ts"],"names":[],"mappings":";;;AAAA,+CAAgD;AAGzC,KAAK,SAAS,CAAC,CAAC,SAAS,CAC9B,MAA6B,EAC7B,SAAiB,EACjB,UAAqC;IAErC,IAAI,IAAI,GAAG,UAAU,EAAE,CAAA;IACvB,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE;QAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;QAC5D,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAClB,IAAI,IAAI,KAAK,CAAC,MAAM,CAAA;SACrB;aAAM;YACL,IAAI,MAAM,GAAG,CAAC,CAAA;YACd,OAAO,IAAI,EAAE;gBACX,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;gBAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;gBAClD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;oBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAClB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;oBAC5B,MAAM,MAAM,CAAA;oBAEZ,IAAI,GAAG,UAAU,EAAE,CAAA;oBACnB,IAAI,GAAG,CAAC,CAAA;oBACR,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;iBACvB;qBAAM;oBAEL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAClB,IAAI,IAAI,KAAK,CAAC,MAAM,CAAA;oBACpB,MAAK;iBACN;aACF;SACF;KACF;IAED,IAAI,IAAI,GAAG,CAAC;QAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;AACnC,CAAC;AApCD,8BAoCC;AAED,MAAa,mBAAoB,SAAQ,oBAAW;IAClD;QACE,KAAK,CAAC,iCAAiC,CAAC,CAAA;IAC1C,CAAC;CACF;AAJD,kDAIC"}
@@ -0,0 +1,6 @@
1
+ /// <reference types="node" />
2
+ export declare type ProgressiveHashFactory<T> = () => IProgressiveHash<T>;
3
+ export interface IProgressiveHash<T> {
4
+ update(buffer: Buffer): void;
5
+ digest(): T;
6
+ }
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/nodejs/types.ts"],"names":[],"mappings":""}
@@ -1,3 +1,2 @@
1
1
  export * from './types';
2
2
  export * from './split-hash';
3
- export * from './split-hash-validator';
@@ -16,5 +16,4 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./types"), exports);
18
18
  __exportStar(require("./split-hash"), exports);
19
- __exportStar(require("./split-hash-validator"), exports);
20
19
  //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/whatwg/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAuB;AACvB,+CAA4B"}
@@ -0,0 +1,2 @@
1
+ import { ProgressiveHashFactory } from './types';
2
+ export declare function splitHash<T>(stream: ReadableStream, blockSize: number, createHash: ProgressiveHashFactory<T>): AsyncIterable<T>;
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.splitHash = void 0;
4
+ async function* splitHash(stream, blockSize, createHash) {
5
+ let hash = createHash();
6
+ let accu = 0;
7
+ for await (const chunk of getIterator(stream)) {
8
+ if (accu + chunk.length < blockSize) {
9
+ hash.update(chunk);
10
+ accu += chunk.length;
11
+ }
12
+ else {
13
+ let offset = 0;
14
+ while (true) {
15
+ const needed = blockSize - accu;
16
+ const slice = chunk.slice(offset, offset + needed);
17
+ if (slice.length === needed) {
18
+ hash.update(slice);
19
+ const digest = await hash.digest();
20
+ yield digest;
21
+ hash = createHash();
22
+ accu = 0;
23
+ offset += slice.length;
24
+ }
25
+ else {
26
+ hash.update(slice);
27
+ accu += slice.length;
28
+ break;
29
+ }
30
+ }
31
+ }
32
+ }
33
+ if (accu > 0)
34
+ yield await hash.digest();
35
+ }
36
+ exports.splitHash = splitHash;
37
+ async function* getIterator(stream) {
38
+ const reader = stream.getReader();
39
+ try {
40
+ while (true) {
41
+ const { done, value } = await reader.read();
42
+ if (done)
43
+ break;
44
+ yield value;
45
+ }
46
+ }
47
+ finally {
48
+ reader.cancel();
49
+ reader.releaseLock();
50
+ }
51
+ }
52
+ //# sourceMappingURL=split-hash.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"split-hash.js","sourceRoot":"","sources":["../../src/whatwg/split-hash.ts"],"names":[],"mappings":";;;AAEO,KAAK,SAAS,CAAC,CAAC,SAAS,CAC9B,MAAsB,EACtB,SAAiB,EACjB,UAAqC;IAErC,IAAI,IAAI,GAAG,UAAU,EAAE,CAAA;IACvB,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE;QAC7C,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAClB,IAAI,IAAI,KAAK,CAAC,MAAM,CAAA;SACrB;aAAM;YACL,IAAI,MAAM,GAAG,CAAC,CAAA;YACd,OAAO,IAAI,EAAE;gBACX,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;gBAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;gBAClD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;oBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;oBAClC,MAAM,MAAM,CAAA;oBAEZ,IAAI,GAAG,UAAU,EAAE,CAAA;oBACnB,IAAI,GAAG,CAAC,CAAA;oBACR,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;iBACvB;qBAAM;oBAGL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAClB,IAAI,IAAI,KAAK,CAAC,MAAM,CAAA;oBACpB,MAAK;iBACN;aACF;SACF;KACF;IAED,IAAI,IAAI,GAAG,CAAC;QAAE,MAAM,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;AACzC,CAAC;AApCD,8BAoCC;AAED,KAAK,SAAS,CAAC,CAAC,WAAW,CAAC,MAAsB;IAChD,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE,CAAA;IACjC,IAAI;QACF,OAAO,IAAI,EAAE;YACX,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAA;YAC3C,IAAI,IAAI;gBAAE,MAAK;YACf,MAAM,KAAK,CAAA;SACZ;KACF;YAAS;QACR,MAAM,CAAC,MAAM,EAAE,CAAA;QACf,MAAM,CAAC,WAAW,EAAE,CAAA;KACrB;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare type ProgressiveHashFactory<T> = () => IProgressiveHash<T>;
2
+ export interface IProgressiveHash<T> {
3
+ update(buffer: Uint8Array): void;
4
+ digest(): Promise<T>;
5
+ }
File without changes
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/whatwg/types.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,21 +1,21 @@
1
1
  {
2
2
  "name": "split-hash",
3
- "version": "0.1.7",
3
+ "version": "0.2.1",
4
4
  "description": "Split the stream based on bytes and get digests from each part.",
5
5
  "keywords": [
6
6
  "split",
7
7
  "hash",
8
- "HashList",
9
8
  "stream",
10
9
  "block",
11
- "chunk",
12
- "slice"
10
+ "chunk"
13
11
  ],
14
12
  "files": [
15
13
  "lib"
16
14
  ],
17
- "main": "lib/es2018/index.js",
18
- "types": "lib/es2018/index.d.ts",
15
+ "exports": {
16
+ "./nodejs": "./lib/nodejs/index.js",
17
+ "./whatwg": "./lib/whatwg/index.js"
18
+ },
19
19
  "sideEffects": false,
20
20
  "repository": "git@github.com:BlackGlory/split-hash.git",
21
21
  "author": "BlackGlory <woshenmedoubuzhidao@blackglory.me>",
@@ -26,15 +26,10 @@
26
26
  "test:debug": "node --inspect node_modules/.bin/jest --runInBand",
27
27
  "test:coverage": "jest --coverage --config jest.config.js",
28
28
  "prepublishOnly": "run-s clean build",
29
- "clean": "run-p clean:*",
30
- "clean:build": "rimraf lib",
31
- "build": "run-p build:*",
32
- "build:es2015": "run-s build:es2015:*",
33
- "build:es2015:compile": "tsc --project tsconfig.build.json --module commonjs --target es2015 --outDir lib/es2015",
34
- "build:es2015:patch": "tscpaths -p tsconfig.build.json -s ./src -o ./lib/es2015",
35
- "build:es2018": "run-s build:es2018:*",
36
- "build:es2018:compile": "tsc --project tsconfig.build.json --module commonjs --target es2018 --outDir lib/es2018",
37
- "build:es2018:patch": "tscpaths -p tsconfig.build.json -s ./src -o ./lib/es2018",
29
+ "clean": "rimraf lib",
30
+ "build": "run-s build:*",
31
+ "build:compile": "tsc --project tsconfig.build.json --module commonjs --target es2018 --outDir lib",
32
+ "build:patch": "tscpaths -p tsconfig.build.json -s ./src -o ./lib",
38
33
  "release": "standard-version"
39
34
  },
40
35
  "husky": {
@@ -45,23 +40,31 @@
45
40
  },
46
41
  "devDependencies": {
47
42
  "@blackglory/jest-matchers": "0.3",
48
- "@blackglory/prelude": "^0.1.1",
49
- "@commitlint/cli": "^16.3.0",
50
- "@commitlint/config-conventional": "^16.2.4",
43
+ "@blackglory/prelude": "^0.1.7",
44
+ "@blackglory/structures": "^0.11.3",
45
+ "@blackglory/wait-for": "^0.5.3",
46
+ "@commitlint/cli": "^17.2.0",
47
+ "@commitlint/config-conventional": "^17.2.0",
48
+ "@peculiar/webcrypto": "^1.4.0",
51
49
  "@types/jest": "^27.5.1",
52
- "@types/node": "14",
53
- "@typescript-eslint/eslint-plugin": "^5.23.0",
54
- "@typescript-eslint/parser": "^5.23.0",
55
- "eslint": "^8.15.0",
50
+ "@types/node": "16",
51
+ "@typescript-eslint/eslint-plugin": "^5.42.0",
52
+ "@typescript-eslint/parser": "^5.42.0",
53
+ "eslint": "^8.26.0",
54
+ "extra-abort": "^0.2.0",
55
+ "extra-promise": "^4.0.0",
56
56
  "husky": "^4.3.0",
57
- "iterable-operator": "^1.1.0",
57
+ "iterable-operator": "^2.1.0",
58
58
  "jest": "^27.4.7",
59
59
  "npm-run-all": "^4.1.5",
60
60
  "return-style": "^1.0.0",
61
61
  "rimraf": "^3.0.2",
62
- "standard-version": "^9.3.2",
62
+ "standard-version": "^9.5.0",
63
63
  "ts-jest": "^27.0.5",
64
64
  "tscpaths": "^0.0.9",
65
65
  "typescript": "^4.6.4"
66
+ },
67
+ "dependencies": {
68
+ "@blackglory/errors": "^2.2.3"
66
69
  }
67
70
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA0B;AAC1B,kDAA+B;AAC/B,4DAAyC"}
@@ -1,19 +0,0 @@
1
- /// <reference types="node" />
2
- import { ProgressiveHashFactory } from './types';
3
- import { Transform, TransformCallback } from 'stream';
4
- export declare class SplitHashValidator<T> extends Transform {
5
- private digests;
6
- private blockSize;
7
- private createHash;
8
- private equals;
9
- private hash;
10
- private accu;
11
- private digestIndex;
12
- constructor(digests: T[], blockSize: number, createHash: ProgressiveHashFactory<T>, equals?: (a: T, b: T) => boolean);
13
- _transform(chunk: Buffer, encoding: BufferEncoding, callback: TransformCallback): void;
14
- _flush(callback: TransformCallback): void;
15
- }
16
- export declare class NotMatchedError extends Error {
17
- name: string;
18
- constructor();
19
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"split-hash-validator.js","sourceRoot":"","sources":["../../src/split-hash-validator.ts"],"names":[],"mappings":";;;AACA,mCAAqD;AAErD,MAAa,kBAAsB,SAAQ,kBAAS;IAKlD,YACU,OAAY,EACZ,SAAiB,EACjB,UAAqC,EACrC,SAAkC,MAAM,CAAC,EAAE;QAEnD,KAAK,EAAE,CAAA;QALC,YAAO,GAAP,OAAO,CAAK;QACZ,cAAS,GAAT,SAAS,CAAQ;QACjB,eAAU,GAAV,UAAU,CAA2B;QACrC,WAAM,GAAN,MAAM,CAAqC;QAR7C,SAAI,GAAuB,IAAI,CAAC,UAAU,EAAE,CAAA;QAC5C,SAAI,GAAG,CAAC,CAAA;QACR,gBAAW,GAAG,CAAC,CAAA;IASvB,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,QAAwB,EAAE,QAA2B;QAG7E,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;YAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACvB,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAA;SAC1B;aAAM;YACL,IAAI,MAAM,GAAG,CAAC,CAAA;YACd,OAAO,IAAI,EAAE;gBACX,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;gBACzC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;gBAClD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;oBAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBACvB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;oBACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,EAAE;wBACxD,OAAO,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC,CAAA;qBACvC;oBACD,IAAI,CAAC,WAAW,EAAE,CAAA;oBAElB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;oBAC7B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;oBACb,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;iBACvB;qBAAM;oBAEL,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBACvB,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAA;oBACzB,MAAK;iBACN;aACF;SACF;QAED,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IACvB,CAAC;IAED,MAAM,CAAC,QAA2B;QAChC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;YACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,EAAE;gBACxD,OAAO,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC,CAAA;aACvC;YACD,IAAI,CAAC,WAAW,EAAE,CAAA;SACnB;QAED,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAC5C,OAAO,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC,CAAA;SACvC;QAED,QAAQ,EAAE,CAAA;IACZ,CAAC;CACF;AA/DD,gDA+DC;AAED,MAAa,eAAgB,SAAQ,KAAK;IAGxC;QACE,KAAK,CAAC,qBAAqB,CAAC,CAAA;QAH9B,SAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAI5B,CAAC;CACF;AAND,0CAMC"}
@@ -1,78 +0,0 @@
1
- "use strict";
2
- var __asyncValues = (this && this.__asyncValues) || function (o) {
3
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
4
- var m = o[Symbol.asyncIterator], i;
5
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
6
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
7
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
8
- };
9
- var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
10
- var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
11
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
12
- var g = generator.apply(thisArg, _arguments || []), i, q = [];
13
- return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
14
- function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
15
- function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
16
- function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
17
- function fulfill(value) { resume("next", value); }
18
- function reject(value) { resume("throw", value); }
19
- function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
20
- };
21
- Object.defineProperty(exports, "__esModule", { value: true });
22
- exports.StreamEncodingError = exports.splitHash = void 0;
23
- function splitHash(stream, blockSize, createHash) {
24
- return __asyncGenerator(this, arguments, function* splitHash_1() {
25
- var e_1, _a;
26
- let hash = createHash();
27
- let accu = 0;
28
- try {
29
- for (var stream_1 = __asyncValues(stream), stream_1_1; stream_1_1 = yield __await(stream_1.next()), !stream_1_1.done;) {
30
- const chunk = stream_1_1.value;
31
- if (!Buffer.isBuffer(chunk))
32
- throw new StreamEncodingError();
33
- if (accu + chunk.length < blockSize) {
34
- hash.update(chunk);
35
- accu += chunk.length;
36
- }
37
- else {
38
- let offset = 0;
39
- while (true) {
40
- const needed = blockSize - accu;
41
- const slice = chunk.slice(offset, offset + needed);
42
- if (slice.length === needed) {
43
- hash.update(slice);
44
- const digest = hash.digest();
45
- yield yield __await(digest);
46
- hash = createHash();
47
- accu = 0;
48
- offset += slice.length;
49
- }
50
- else {
51
- hash.update(slice);
52
- accu += slice.length;
53
- break;
54
- }
55
- }
56
- }
57
- }
58
- }
59
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
60
- finally {
61
- try {
62
- if (stream_1_1 && !stream_1_1.done && (_a = stream_1.return)) yield __await(_a.call(stream_1));
63
- }
64
- finally { if (e_1) throw e_1.error; }
65
- }
66
- if (accu > 0)
67
- yield yield __await(hash.digest());
68
- });
69
- }
70
- exports.splitHash = splitHash;
71
- class StreamEncodingError extends Error {
72
- constructor() {
73
- super('stream encoding must not be set.');
74
- this.name = this.constructor.name;
75
- }
76
- }
77
- exports.StreamEncodingError = StreamEncodingError;
78
- //# sourceMappingURL=split-hash.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"split-hash.js","sourceRoot":"","sources":["../../src/split-hash.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAEA,SAAuB,SAAS,CAAI,MAA6B,EAAE,SAAiB,EAAE,UAAqC;;;QACzH,IAAI,IAAI,GAAG,UAAU,EAAE,CAAA;QACvB,IAAI,IAAI,GAAG,CAAC,CAAA;;YACZ,KAA0B,IAAA,WAAA,cAAA,MAAM,CAAA,YAAA;gBAArB,MAAM,KAAK,mBAAA,CAAA;gBACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;gBAC5D,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE;oBACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAClB,IAAI,IAAI,KAAK,CAAC,MAAM,CAAA;iBACrB;qBAAM;oBACL,IAAI,MAAM,GAAG,CAAC,CAAA;oBACd,OAAO,IAAI,EAAE;wBACX,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;wBAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;wBAClD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;4BAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;4BAClB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;4BAC5B,oBAAM,MAAM,CAAA,CAAA;4BAEZ,IAAI,GAAG,UAAU,EAAE,CAAA;4BACnB,IAAI,GAAG,CAAC,CAAA;4BACR,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;yBACvB;6BAAM;4BAEL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;4BAClB,IAAI,IAAI,KAAK,CAAC,MAAM,CAAA;4BACpB,MAAK;yBACN;qBACF;iBACF;aACF;;;;;;;;;QAED,IAAI,IAAI,GAAG,CAAC;YAAE,oBAAM,IAAI,CAAC,MAAM,EAAE,CAAA,CAAA;IACnC,CAAC;CAAA;AAhCD,8BAgCC;AAED,MAAa,mBAAoB,SAAQ,KAAK;IAG5C;QACE,KAAK,CAAC,kCAAkC,CAAC,CAAA;QAH3C,SAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAI5B,CAAC;CACF;AAND,kDAMC"}
@@ -1,6 +0,0 @@
1
- /// <reference types="node" />
2
- export declare type ProgressiveHashFactory<T> = () => ProgressiveHash<T>;
3
- export interface ProgressiveHash<T> {
4
- update(buffer: Buffer): void;
5
- digest(): T;
6
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA0B;AAC1B,kDAA+B;AAC/B,4DAAyC"}
@@ -1,68 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.NotMatchedError = exports.SplitHashValidator = void 0;
4
- const stream_1 = require("stream");
5
- class SplitHashValidator extends stream_1.Transform {
6
- constructor(digests, blockSize, createHash, equals = Object.is) {
7
- super();
8
- this.digests = digests;
9
- this.blockSize = blockSize;
10
- this.createHash = createHash;
11
- this.equals = equals;
12
- this.hash = this.createHash();
13
- this.accu = 0;
14
- this.digestIndex = 0;
15
- }
16
- _transform(chunk, encoding, callback) {
17
- if (this.accu + chunk.length < this.blockSize) {
18
- this.hash.update(chunk);
19
- this.accu += chunk.length;
20
- }
21
- else {
22
- let offset = 0;
23
- while (true) {
24
- const needed = this.blockSize - this.accu;
25
- const slice = chunk.slice(offset, offset + needed);
26
- if (slice.length === needed) {
27
- this.hash.update(slice);
28
- const digest = this.hash.digest();
29
- if (!this.equals(this.digests[this.digestIndex], digest)) {
30
- return callback(new NotMatchedError());
31
- }
32
- this.digestIndex++;
33
- this.hash = this.createHash();
34
- this.accu = 0;
35
- offset += slice.length;
36
- }
37
- else {
38
- this.hash.update(slice);
39
- this.accu += slice.length;
40
- break;
41
- }
42
- }
43
- }
44
- callback(null, chunk);
45
- }
46
- _flush(callback) {
47
- if (this.accu > 0) {
48
- const digest = this.hash.digest();
49
- if (!this.equals(this.digests[this.digestIndex], digest)) {
50
- return callback(new NotMatchedError());
51
- }
52
- this.digestIndex++;
53
- }
54
- if (this.digestIndex !== this.digests.length) {
55
- return callback(new NotMatchedError());
56
- }
57
- callback();
58
- }
59
- }
60
- exports.SplitHashValidator = SplitHashValidator;
61
- class NotMatchedError extends Error {
62
- constructor() {
63
- super('hashes do not match');
64
- this.name = this.constructor.name;
65
- }
66
- }
67
- exports.NotMatchedError = NotMatchedError;
68
- //# sourceMappingURL=split-hash-validator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"split-hash-validator.js","sourceRoot":"","sources":["../../src/split-hash-validator.ts"],"names":[],"mappings":";;;AACA,mCAAqD;AAErD,MAAa,kBAAsB,SAAQ,kBAAS;IAKlD,YACU,OAAY,EACZ,SAAiB,EACjB,UAAqC,EACrC,SAAkC,MAAM,CAAC,EAAE;QAEnD,KAAK,EAAE,CAAA;QALC,YAAO,GAAP,OAAO,CAAK;QACZ,cAAS,GAAT,SAAS,CAAQ;QACjB,eAAU,GAAV,UAAU,CAA2B;QACrC,WAAM,GAAN,MAAM,CAAqC;QAR7C,SAAI,GAAuB,IAAI,CAAC,UAAU,EAAE,CAAA;QAC5C,SAAI,GAAG,CAAC,CAAA;QACR,gBAAW,GAAG,CAAC,CAAA;IASvB,CAAC;IAED,UAAU,CAAC,KAAa,EAAE,QAAwB,EAAE,QAA2B;QAG7E,IAAI,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE;YAC7C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACvB,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAA;SAC1B;aAAM;YACL,IAAI,MAAM,GAAG,CAAC,CAAA;YACd,OAAO,IAAI,EAAE;gBACX,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAA;gBACzC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;gBAClD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;oBAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBACvB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;oBACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,EAAE;wBACxD,OAAO,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC,CAAA;qBACvC;oBACD,IAAI,CAAC,WAAW,EAAE,CAAA;oBAElB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;oBAC7B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;oBACb,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;iBACvB;qBAAM;oBAEL,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBACvB,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAA;oBACzB,MAAK;iBACN;aACF;SACF;QAED,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IACvB,CAAC;IAED,MAAM,CAAC,QAA2B;QAChC,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,EAAE;YACjB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAA;YACjC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,EAAE;gBACxD,OAAO,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC,CAAA;aACvC;YACD,IAAI,CAAC,WAAW,EAAE,CAAA;SACnB;QAED,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YAC5C,OAAO,QAAQ,CAAC,IAAI,eAAe,EAAE,CAAC,CAAA;SACvC;QAED,QAAQ,EAAE,CAAA;IACZ,CAAC;CACF;AA/DD,gDA+DC;AAED,MAAa,eAAgB,SAAQ,KAAK;IAGxC;QACE,KAAK,CAAC,qBAAqB,CAAC,CAAA;QAH9B,SAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAI5B,CAAC;CACF;AAND,0CAMC"}
@@ -1,7 +0,0 @@
1
- /// <reference types="node" />
2
- import { ProgressiveHashFactory } from './types';
3
- export declare function splitHash<T>(stream: NodeJS.ReadableStream, blockSize: number, createHash: ProgressiveHashFactory<T>): AsyncIterable<T>;
4
- export declare class StreamEncodingError extends Error {
5
- name: string;
6
- constructor();
7
- }
@@ -1 +0,0 @@
1
- {"version":3,"file":"split-hash.js","sourceRoot":"","sources":["../../src/split-hash.ts"],"names":[],"mappings":";;;AAEO,KAAK,SAAS,CAAC,CAAC,SAAS,CAAI,MAA6B,EAAE,SAAiB,EAAE,UAAqC;IACzH,IAAI,IAAI,GAAG,UAAU,EAAE,CAAA;IACvB,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE;QAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,mBAAmB,EAAE,CAAA;QAC5D,IAAI,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YAClB,IAAI,IAAI,KAAK,CAAC,MAAM,CAAA;SACrB;aAAM;YACL,IAAI,MAAM,GAAG,CAAC,CAAA;YACd,OAAO,IAAI,EAAE;gBACX,MAAM,MAAM,GAAG,SAAS,GAAG,IAAI,CAAA;gBAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAA;gBAClD,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE;oBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAClB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAA;oBAC5B,MAAM,MAAM,CAAA;oBAEZ,IAAI,GAAG,UAAU,EAAE,CAAA;oBACnB,IAAI,GAAG,CAAC,CAAA;oBACR,MAAM,IAAI,KAAK,CAAC,MAAM,CAAA;iBACvB;qBAAM;oBAEL,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;oBAClB,IAAI,IAAI,KAAK,CAAC,MAAM,CAAA;oBACpB,MAAK;iBACN;aACF;SACF;KACF;IAED,IAAI,IAAI,GAAG,CAAC;QAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAA;AACnC,CAAC;AAhCD,8BAgCC;AAED,MAAa,mBAAoB,SAAQ,KAAK;IAG5C;QACE,KAAK,CAAC,kCAAkC,CAAC,CAAA;QAH3C,SAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAA;IAI5B,CAAC;CACF;AAND,kDAMC"}
@@ -1,6 +0,0 @@
1
- /// <reference types="node" />
2
- export declare type ProgressiveHashFactory<T> = () => ProgressiveHash<T>;
3
- export interface ProgressiveHash<T> {
4
- update(buffer: Buffer): void;
5
- digest(): T;
6
- }