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.
- package/README.md +28 -20
- package/lib/{es2015 → nodejs}/index.d.ts +0 -0
- package/lib/{es2015 → nodejs}/index.js +0 -0
- package/lib/nodejs/index.js.map +1 -0
- package/lib/{es2018 → nodejs}/split-hash-validator.d.ts +3 -3
- package/lib/{es2015 → nodejs}/split-hash-validator.js +2 -2
- package/lib/nodejs/split-hash-validator.js.map +1 -0
- package/lib/{es2015 → nodejs}/split-hash.d.ts +2 -2
- package/lib/{es2018 → nodejs}/split-hash.js +3 -3
- package/lib/nodejs/split-hash.js.map +1 -0
- package/lib/nodejs/types.d.ts +6 -0
- package/lib/{es2015 → nodejs}/types.js +0 -0
- package/lib/{es2015 → nodejs}/types.js.map +1 -1
- package/lib/{es2018 → whatwg}/index.d.ts +0 -1
- package/lib/{es2018 → whatwg}/index.js +0 -1
- package/lib/whatwg/index.js.map +1 -0
- package/lib/whatwg/split-hash.d.ts +2 -0
- package/lib/whatwg/split-hash.js +52 -0
- package/lib/whatwg/split-hash.js.map +1 -0
- package/lib/whatwg/types.d.ts +5 -0
- package/lib/{es2018 → whatwg}/types.js +0 -0
- package/lib/{es2018 → whatwg}/types.js.map +1 -1
- package/package.json +27 -24
- package/lib/es2015/index.js.map +0 -1
- package/lib/es2015/split-hash-validator.d.ts +0 -19
- package/lib/es2015/split-hash-validator.js.map +0 -1
- package/lib/es2015/split-hash.js +0 -78
- package/lib/es2015/split-hash.js.map +0 -1
- package/lib/es2015/types.d.ts +0 -6
- package/lib/es2018/index.js.map +0 -1
- package/lib/es2018/split-hash-validator.js +0 -68
- package/lib/es2018/split-hash-validator.js.map +0 -1
- package/lib/es2018/split-hash.d.ts +0 -7
- package/lib/es2018/split-hash.js.map +0 -1
- 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
|
-
##
|
|
74
|
-
|
|
68
|
+
## API
|
|
69
|
+
### Node.js
|
|
75
70
|
```ts
|
|
76
71
|
type ProgressiveHashFactory<T> = () => ProgressiveHash<T>
|
|
77
72
|
|
|
78
|
-
interface
|
|
73
|
+
interface IProgressiveHash<T> {
|
|
79
74
|
update(buffer: Buffer): void
|
|
80
75
|
digest(): T
|
|
81
76
|
}
|
|
82
77
|
```
|
|
83
78
|
|
|
84
|
-
|
|
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
|
-
|
|
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
|
-
|
|
114
|
-
|
|
104
|
+
#### StreamEncodingError
|
|
115
105
|
```ts
|
|
116
106
|
class StreamEncodingError extends Error
|
|
117
107
|
```
|
|
118
108
|
|
|
119
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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"}
|
|
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":""}
|
|
@@ -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,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"}
|
|
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
|
|
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
|
-
"
|
|
18
|
-
|
|
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": "
|
|
30
|
-
"
|
|
31
|
-
"build": "
|
|
32
|
-
"build:
|
|
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.
|
|
49
|
-
"@
|
|
50
|
-
"@
|
|
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": "
|
|
53
|
-
"@typescript-eslint/eslint-plugin": "^5.
|
|
54
|
-
"@typescript-eslint/parser": "^5.
|
|
55
|
-
"eslint": "^8.
|
|
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": "^
|
|
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.
|
|
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
|
}
|
package/lib/es2015/index.js.map
DELETED
|
@@ -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"}
|
package/lib/es2015/split-hash.js
DELETED
|
@@ -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"}
|
package/lib/es2015/types.d.ts
DELETED
package/lib/es2018/index.js.map
DELETED
|
@@ -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"}
|