@lodestar/reqresp 1.41.0-dev.9fa839a030 → 1.41.0-dev.aeab9f930d
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 +1 -1
- package/lib/ReqResp.d.ts +3 -3
- package/lib/ReqResp.d.ts.map +1 -1
- package/lib/ReqResp.js +4 -4
- package/lib/ReqResp.js.map +1 -1
- package/lib/encoders/requestDecode.d.ts +2 -3
- package/lib/encoders/requestDecode.d.ts.map +1 -1
- package/lib/encoders/requestDecode.js +28 -11
- package/lib/encoders/requestDecode.js.map +1 -1
- package/lib/encoders/requestEncode.d.ts +1 -1
- package/lib/encoders/requestEncode.d.ts.map +1 -1
- package/lib/encoders/requestEncode.js +1 -1
- package/lib/encoders/requestEncode.js.map +1 -1
- package/lib/encoders/responseDecode.d.ts +10 -10
- package/lib/encoders/responseDecode.d.ts.map +1 -1
- package/lib/encoders/responseDecode.js +63 -60
- package/lib/encoders/responseDecode.js.map +1 -1
- package/lib/encoders/responseEncode.d.ts +2 -4
- package/lib/encoders/responseEncode.d.ts.map +1 -1
- package/lib/encoders/responseEncode.js +18 -24
- package/lib/encoders/responseEncode.js.map +1 -1
- package/lib/encodingStrategies/index.d.ts +4 -3
- package/lib/encodingStrategies/index.d.ts.map +1 -1
- package/lib/encodingStrategies/index.js +4 -4
- package/lib/encodingStrategies/index.js.map +1 -1
- package/lib/encodingStrategies/sszSnappy/decode.d.ts +5 -4
- package/lib/encodingStrategies/sszSnappy/decode.d.ts.map +1 -1
- package/lib/encodingStrategies/sszSnappy/decode.js +83 -52
- package/lib/encodingStrategies/sszSnappy/decode.js.map +1 -1
- package/lib/encodingStrategies/sszSnappy/encode.d.ts +2 -2
- package/lib/encodingStrategies/sszSnappy/encode.d.ts.map +1 -1
- package/lib/encodingStrategies/sszSnappy/encode.js +1 -1
- package/lib/encodingStrategies/sszSnappy/encode.js.map +1 -1
- package/lib/encodingStrategies/sszSnappy/errors.d.ts +0 -8
- package/lib/encodingStrategies/sszSnappy/errors.d.ts.map +1 -1
- package/lib/encodingStrategies/sszSnappy/errors.js +2 -3
- package/lib/encodingStrategies/sszSnappy/errors.js.map +1 -1
- package/lib/encodingStrategies/sszSnappy/index.d.ts +0 -1
- package/lib/encodingStrategies/sszSnappy/index.d.ts.map +1 -1
- package/lib/encodingStrategies/sszSnappy/index.js +0 -1
- package/lib/encodingStrategies/sszSnappy/index.js.map +1 -1
- package/lib/encodingStrategies/sszSnappy/utils.js.map +1 -1
- package/lib/interface.js +2 -1
- package/lib/interface.js.map +1 -1
- package/lib/metrics.d.ts +1 -7
- package/lib/metrics.d.ts.map +1 -1
- package/lib/metrics.js +1 -17
- package/lib/metrics.js.map +1 -1
- package/lib/rate_limiter/ReqRespRateLimiter.d.ts.map +1 -1
- package/lib/rate_limiter/ReqRespRateLimiter.js.map +1 -1
- package/lib/rate_limiter/rateLimiterGRCA.d.ts.map +1 -1
- package/lib/rate_limiter/rateLimiterGRCA.js.map +1 -1
- package/lib/rate_limiter/selfRateLimiter.d.ts.map +1 -1
- package/lib/rate_limiter/selfRateLimiter.js.map +1 -1
- package/lib/request/errors.d.ts +1 -7
- package/lib/request/errors.d.ts.map +1 -1
- package/lib/request/errors.js +3 -6
- package/lib/request/errors.js.map +1 -1
- package/lib/request/index.d.ts +0 -3
- package/lib/request/index.d.ts.map +1 -1
- package/lib/request/index.js +85 -70
- package/lib/request/index.js.map +1 -1
- package/lib/response/errors.d.ts.map +1 -1
- package/lib/response/errors.js +2 -1
- package/lib/response/errors.js.map +1 -1
- package/lib/response/index.d.ts +2 -2
- package/lib/response/index.d.ts.map +1 -1
- package/lib/response/index.js +46 -50
- package/lib/response/index.js.map +1 -1
- package/lib/types.d.ts +1 -2
- package/lib/types.d.ts.map +1 -1
- package/lib/types.js +7 -5
- package/lib/types.js.map +1 -1
- package/lib/utils/collectExactOne.js.map +1 -1
- package/lib/utils/collectMaxResponse.d.ts.map +1 -1
- package/lib/utils/collectMaxResponse.js +1 -2
- package/lib/utils/collectMaxResponse.js.map +1 -1
- package/lib/utils/errorMessage.d.ts +7 -2
- package/lib/utils/errorMessage.d.ts.map +1 -1
- package/lib/utils/errorMessage.js +23 -11
- package/lib/utils/errorMessage.js.map +1 -1
- package/lib/utils/index.d.ts +1 -3
- package/lib/utils/index.d.ts.map +1 -1
- package/lib/utils/index.js +1 -3
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/peerId.js.map +1 -1
- package/lib/utils/protocolId.d.ts +2 -2
- package/lib/utils/protocolId.js +2 -2
- package/lib/utils/protocolId.js.map +1 -1
- package/lib/utils/snappyCommon.js +2 -1
- package/lib/utils/snappyCommon.js.map +1 -1
- package/lib/utils/snappyCompress.d.ts +1 -1
- package/lib/utils/snappyCompress.d.ts.map +1 -1
- package/lib/utils/snappyCompress.js +1 -1
- package/lib/utils/snappyCompress.js.map +1 -1
- package/lib/utils/snappyIndex.d.ts +1 -1
- package/lib/utils/snappyIndex.d.ts.map +1 -1
- package/lib/utils/snappyIndex.js +1 -1
- package/lib/utils/snappyIndex.js.map +1 -1
- package/lib/utils/snappyUncompress.d.ts +7 -11
- package/lib/utils/snappyUncompress.d.ts.map +1 -1
- package/lib/utils/snappyUncompress.js +68 -68
- package/lib/utils/snappyUncompress.js.map +1 -1
- package/lib/utils/stream.d.ts +6 -0
- package/lib/utils/stream.d.ts.map +1 -0
- package/lib/utils/stream.js +21 -0
- package/lib/utils/stream.js.map +1 -0
- package/package.json +16 -18
- package/src/ReqResp.ts +4 -4
- package/src/encoders/requestDecode.ts +32 -16
- package/src/encoders/requestEncode.ts +1 -1
- package/src/encoders/responseDecode.ts +68 -72
- package/src/encoders/responseEncode.ts +22 -31
- package/src/encodingStrategies/index.ts +8 -6
- package/src/encodingStrategies/sszSnappy/decode.ts +111 -53
- package/src/encodingStrategies/sszSnappy/encode.ts +2 -2
- package/src/encodingStrategies/sszSnappy/errors.ts +0 -4
- package/src/encodingStrategies/sszSnappy/index.ts +0 -1
- package/src/metrics.ts +1 -17
- package/src/request/errors.ts +1 -6
- package/src/request/index.ts +109 -86
- package/src/response/index.ts +55 -61
- package/src/types.ts +1 -3
- package/src/utils/collectMaxResponse.ts +1 -2
- package/src/utils/errorMessage.ts +24 -11
- package/src/utils/index.ts +1 -3
- package/src/utils/protocolId.ts +2 -2
- package/src/utils/snappyCompress.ts +1 -1
- package/src/utils/snappyIndex.ts +1 -1
- package/src/utils/snappyUncompress.ts +73 -75
- package/src/utils/stream.ts +34 -0
- package/lib/utils/abortableSource.d.ts +0 -12
- package/lib/utils/abortableSource.d.ts.map +0 -1
- package/lib/utils/abortableSource.js +0 -69
- package/lib/utils/abortableSource.js.map +0 -1
- package/lib/utils/bufferedSource.d.ts +0 -16
- package/lib/utils/bufferedSource.d.ts.map +0 -1
- package/lib/utils/bufferedSource.js +0 -40
- package/lib/utils/bufferedSource.js.map +0 -1
- package/lib/utils/onChunk.d.ts +0 -6
- package/lib/utils/onChunk.d.ts.map +0 -1
- package/lib/utils/onChunk.js +0 -13
- package/lib/utils/onChunk.js.map +0 -1
- package/lib/utils/snappy.d.ts +0 -3
- package/lib/utils/snappy.d.ts.map +0 -1
- package/lib/utils/snappy.js +0 -3
- package/lib/utils/snappy.js.map +0 -1
- package/src/utils/abortableSource.ts +0 -80
- package/src/utils/bufferedSource.ts +0 -46
- package/src/utils/onChunk.ts +0 -12
- package/src/utils/snappy.ts +0 -2
package/lib/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;SAOlC,QAAQ;AAJpB;;;GAGG;AACH,IAAY,QAEX;AAFD,WAAY,QAAQ;IAClB,qCAAyB,CAAA;AAAC,CAC5B,EAFY,QAAQ,KAAR,QAAQ,QAEnB;AAED,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,CAAC;SA+HtC,gBAAgB;AAA5B,IAAY,gBAKX;AALD,WAAY,gBAAgB;IAC1B,oCAAoC;IACpC,yDAAK,CAAA;IACL,iJAAiJ;IACjJ,mEAAU,CAAA;AAAC,CACb,EALY,gBAAgB,KAAhB,gBAAgB,QAK3B;SAEW,0BAA0B;AAAtC,IAAY,0BAEX;AAFD,WAAY,0BAA0B;IACpC,2EAA6C,CAAA;AAAC,CAChD,EAFY,0BAA0B,KAA1B,0BAA0B,QAErC;AAID,MAAM,OAAO,sBAAuB,SAAQ,aAAyC;CAAG"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectExactOne.js","sourceRoot":"","sources":["../../src/utils/collectExactOne.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAI,MAAwB;
|
|
1
|
+
{"version":3,"file":"collectExactOne.js","sourceRoot":"","sources":["../../src/utils/collectExactOne.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,YAAY,EAAE,gBAAgB,EAAC,MAAM,sBAAsB,CAAC;AAEpE;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAI,MAAwB,EAAc;IAC7E,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;QACpC,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD,MAAM,IAAI,YAAY,CAAC,EAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,EAAC,CAAC,CAAC;AAAA,CACjE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectMaxResponse.d.ts","sourceRoot":"","sources":["../../src/utils/collectMaxResponse.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"collectMaxResponse.d.ts","sourceRoot":"","sources":["../../src/utils/collectMaxResponse.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAUxG"}
|
|
@@ -6,11 +6,10 @@
|
|
|
6
6
|
* Collects a bounded list of responses up to `maxResponses`
|
|
7
7
|
*/
|
|
8
8
|
export async function collectMaxResponse(source, maxResponses) {
|
|
9
|
-
// else: zero or more responses
|
|
10
9
|
const responses = [];
|
|
11
10
|
for await (const response of source) {
|
|
12
11
|
responses.push(response);
|
|
13
|
-
if (
|
|
12
|
+
if (responses.length >= maxResponses) {
|
|
14
13
|
break;
|
|
15
14
|
}
|
|
16
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collectMaxResponse.js","sourceRoot":"","sources":["../../src/utils/collectMaxResponse.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAI,MAAwB,EAAE,YAAoB;
|
|
1
|
+
{"version":3,"file":"collectMaxResponse.js","sourceRoot":"","sources":["../../src/utils/collectMaxResponse.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAI,MAAwB,EAAE,YAAoB,EAAgB;IACxG,MAAM,SAAS,GAAQ,EAAE,CAAC;IAC1B,IAAI,KAAK,EAAE,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;QACpC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEzB,IAAI,SAAS,CAAC,MAAM,IAAI,YAAY,EAAE,CAAC;YACrC,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AAAA,CAClB"}
|
|
@@ -2,9 +2,14 @@ import { Encoding } from "../types.js";
|
|
|
2
2
|
/**
|
|
3
3
|
* Encodes a UTF-8 string to 256 bytes max
|
|
4
4
|
*/
|
|
5
|
-
export declare function encodeErrorMessage(errorMessage: string, encoding: Encoding):
|
|
5
|
+
export declare function encodeErrorMessage(errorMessage: string, encoding: Encoding): Generator<Buffer>;
|
|
6
|
+
/**
|
|
7
|
+
* Encodes a UTF-8 error message string into a single buffer (max 256 bytes before encoding).
|
|
8
|
+
* Unlike `encodeErrorMessage`, this collects all encoded chunks into one buffer.
|
|
9
|
+
*/
|
|
10
|
+
export declare function encodeErrorMessageToBuffer(errorMessage: string, encoding: Encoding): Buffer;
|
|
6
11
|
/**
|
|
7
12
|
* Decodes error message from network bytes and removes non printable, non ascii characters.
|
|
8
13
|
*/
|
|
9
|
-
export declare function decodeErrorMessage(encodedErrorMessage: Uint8Array):
|
|
14
|
+
export declare function decodeErrorMessage(encodedErrorMessage: Uint8Array): string;
|
|
10
15
|
//# sourceMappingURL=errorMessage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorMessage.d.ts","sourceRoot":"","sources":["../../src/utils/errorMessage.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"errorMessage.d.ts","sourceRoot":"","sources":["../../src/utils/errorMessage.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;AAcrC;;GAEG;AACH,wBAAiB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAW/F;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAM3F;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,mBAAmB,EAAE,UAAU,GAAG,MAAM,CAgB1E"}
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { decode as varintDecode, encodingLength as varintEncodingLength } from "uint8-varint";
|
|
2
|
-
import { Uint8ArrayList } from "uint8arraylist";
|
|
3
2
|
import { writeSszSnappyPayload } from "../encodingStrategies/sszSnappy/encode.js";
|
|
4
3
|
import { Encoding } from "../types.js";
|
|
5
|
-
import {
|
|
4
|
+
import { decodeSnappyFrames } from "./snappyIndex.js";
|
|
6
5
|
// ErrorMessage schema:
|
|
7
6
|
//
|
|
8
7
|
// (
|
|
@@ -12,38 +11,51 @@ import { SnappyFramesUncompress } from "./snappyIndex.js";
|
|
|
12
11
|
// By convention, the error_message is a sequence of bytes that MAY be interpreted as a
|
|
13
12
|
// UTF-8 string (for debugging purposes). Clients MUST treat as valid any byte sequences
|
|
14
13
|
//
|
|
15
|
-
//
|
|
14
|
+
// https://github.com/ethereum/consensus-specs/blob/v1.6.1/specs/phase0/p2p-interface.md#responding-side
|
|
16
15
|
/**
|
|
17
16
|
* Encodes a UTF-8 string to 256 bytes max
|
|
18
17
|
*/
|
|
19
|
-
export
|
|
18
|
+
export function* encodeErrorMessage(errorMessage, encoding) {
|
|
20
19
|
const encoder = new TextEncoder();
|
|
21
20
|
const bytes = encoder.encode(errorMessage).slice(0, 256);
|
|
22
21
|
switch (encoding) {
|
|
23
22
|
case Encoding.SSZ_SNAPPY:
|
|
24
23
|
yield* writeSszSnappyPayload(bytes);
|
|
24
|
+
break;
|
|
25
|
+
default:
|
|
26
|
+
throw Error("Unsupported encoding");
|
|
25
27
|
}
|
|
26
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Encodes a UTF-8 error message string into a single buffer (max 256 bytes before encoding).
|
|
31
|
+
* Unlike `encodeErrorMessage`, this collects all encoded chunks into one buffer.
|
|
32
|
+
*/
|
|
33
|
+
export function encodeErrorMessageToBuffer(errorMessage, encoding) {
|
|
34
|
+
const chunks = [];
|
|
35
|
+
for (const chunk of encodeErrorMessage(errorMessage, encoding)) {
|
|
36
|
+
chunks.push(chunk);
|
|
37
|
+
}
|
|
38
|
+
return Buffer.concat(chunks);
|
|
39
|
+
}
|
|
27
40
|
/**
|
|
28
41
|
* Decodes error message from network bytes and removes non printable, non ascii characters.
|
|
29
42
|
*/
|
|
30
|
-
export
|
|
31
|
-
const
|
|
43
|
+
export function decodeErrorMessage(encodedErrorMessage) {
|
|
44
|
+
const decoder = new TextDecoder();
|
|
32
45
|
let sszDataLength;
|
|
33
46
|
try {
|
|
34
47
|
sszDataLength = varintDecode(encodedErrorMessage);
|
|
35
|
-
const decompressor = new SnappyFramesUncompress();
|
|
36
48
|
const varintBytes = varintEncodingLength(sszDataLength);
|
|
37
|
-
const errorMessage =
|
|
38
|
-
if (errorMessage
|
|
49
|
+
const errorMessage = decodeSnappyFrames(encodedErrorMessage.subarray(varintBytes));
|
|
50
|
+
if (errorMessage.length !== sszDataLength) {
|
|
39
51
|
throw new Error("Malformed input: data length mismatch");
|
|
40
52
|
}
|
|
41
53
|
// remove non ascii characters from string
|
|
42
|
-
return
|
|
54
|
+
return decoder.decode(errorMessage.subarray(0)).replace(/[^\x20-\x7F]/g, "");
|
|
43
55
|
}
|
|
44
56
|
catch (_e) {
|
|
45
57
|
// remove non ascii characters from string
|
|
46
|
-
return
|
|
58
|
+
return decoder.decode(encodedErrorMessage.slice(0, 256)).replace(/[^\x20-\x7F]/g, "");
|
|
47
59
|
}
|
|
48
60
|
}
|
|
49
61
|
//# sourceMappingURL=errorMessage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errorMessage.js","sourceRoot":"","sources":["../../src/utils/errorMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,IAAI,YAAY,EAAE,cAAc,IAAI,oBAAoB,EAAC,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"errorMessage.js","sourceRoot":"","sources":["../../src/utils/errorMessage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,IAAI,YAAY,EAAE,cAAc,IAAI,oBAAoB,EAAC,MAAM,cAAc,CAAC;AAC5F,OAAO,EAAC,qBAAqB,EAAC,MAAM,2CAA2C,CAAC;AAChF,OAAO,EAAC,QAAQ,EAAC,MAAM,aAAa,CAAC;AACrC,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AAEpD,uBAAuB;AACvB,EAAE;AACF,IAAI;AACJ,mCAAmC;AACnC,IAAI;AACJ,EAAE;AACF,uFAAuF;AACvF,wFAAwF;AACxF,EAAE;AACF,wGAAwG;AAExG;;GAEG;AACH,MAAM,SAAS,CAAC,CAAC,kBAAkB,CAAC,YAAoB,EAAE,QAAkB,EAAqB;IAC/F,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEzD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC,UAAU;YACtB,KAAK,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACpC,MAAM;QACR;YACE,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACxC,CAAC;AAAA,CACF;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,YAAoB,EAAE,QAAkB,EAAU;IAC3F,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAAA,CAC9B;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,mBAA+B,EAAU;IAC1E,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,IAAI,aAAqB,CAAC;IAC1B,IAAI,CAAC;QACH,aAAa,GAAG,YAAY,CAAC,mBAAmB,CAAC,CAAC;QAClD,MAAM,WAAW,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;QACxD,MAAM,YAAY,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QACnF,IAAI,YAAY,CAAC,MAAM,KAAK,aAAa,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QACD,0CAA0C;QAC1C,OAAO,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAC/E,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC;QACZ,0CAA0C;QAC1C,OAAO,OAAO,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IACxF,CAAC;AAAA,CACF"}
|
package/lib/utils/index.d.ts
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
export * from "./abortableSource.js";
|
|
2
|
-
export * from "./bufferedSource.js";
|
|
3
1
|
export * from "./collectExactOne.js";
|
|
4
2
|
export * from "./collectMaxResponse.js";
|
|
5
3
|
export * from "./errorMessage.js";
|
|
6
|
-
export * from "./onChunk.js";
|
|
7
4
|
export * from "./peerId.js";
|
|
8
5
|
export * from "./protocolId.js";
|
|
9
6
|
export * from "./snappyIndex.js";
|
|
7
|
+
export * from "./stream.js";
|
|
10
8
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/utils/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
|
package/lib/utils/index.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
export * from "./abortableSource.js";
|
|
2
|
-
export * from "./bufferedSource.js";
|
|
3
1
|
export * from "./collectExactOne.js";
|
|
4
2
|
export * from "./collectMaxResponse.js";
|
|
5
3
|
export * from "./errorMessage.js";
|
|
6
|
-
export * from "./onChunk.js";
|
|
7
4
|
export * from "./peerId.js";
|
|
8
5
|
export * from "./protocolId.js";
|
|
9
6
|
export * from "./snappyIndex.js";
|
|
7
|
+
export * from "./stream.js";
|
|
10
8
|
//# sourceMappingURL=index.js.map
|
package/lib/utils/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC"}
|
package/lib/utils/peerId.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peerId.js","sourceRoot":"","sources":["../../src/utils/peerId.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,MAAc;
|
|
1
|
+
{"version":3,"file":"peerId.js","sourceRoot":"","sources":["../../src/utils/peerId.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB,CAAC,MAAc,EAAU;IACxD,MAAM,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC7B,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;AAAA,CACtE"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { Encoding, ProtocolAttributes } from "../types.js";
|
|
2
2
|
/**
|
|
3
|
-
* https://github.com/ethereum/consensus-specs/blob/v1.
|
|
3
|
+
* https://github.com/ethereum/consensus-specs/blob/v1.6.1/specs/phase0/p2p-interface.md#protocol-identification
|
|
4
4
|
*/
|
|
5
5
|
export declare function formatProtocolID(protocolPrefix: string, method: string, version: number, encoding: Encoding): string;
|
|
6
6
|
/**
|
|
7
|
-
* https://github.com/ethereum/consensus-specs/blob/v1.
|
|
7
|
+
* https://github.com/ethereum/consensus-specs/blob/v1.6.1/specs/phase0/p2p-interface.md#protocol-identification
|
|
8
8
|
*/
|
|
9
9
|
export declare function parseProtocolID(protocolId: string): ProtocolAttributes;
|
|
10
10
|
//# sourceMappingURL=protocolId.d.ts.map
|
package/lib/utils/protocolId.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Encoding } from "../types.js";
|
|
2
2
|
/**
|
|
3
|
-
* https://github.com/ethereum/consensus-specs/blob/v1.
|
|
3
|
+
* https://github.com/ethereum/consensus-specs/blob/v1.6.1/specs/phase0/p2p-interface.md#protocol-identification
|
|
4
4
|
*/
|
|
5
5
|
export function formatProtocolID(protocolPrefix, method, version, encoding) {
|
|
6
6
|
return `${protocolPrefix}/${method}/${version}/${encoding}`;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
|
-
* https://github.com/ethereum/consensus-specs/blob/v1.
|
|
9
|
+
* https://github.com/ethereum/consensus-specs/blob/v1.6.1/specs/phase0/p2p-interface.md#protocol-identification
|
|
10
10
|
*/
|
|
11
11
|
export function parseProtocolID(protocolId) {
|
|
12
12
|
const result = protocolId.split("/");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocolId.js","sourceRoot":"","sources":["../../src/utils/protocolId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAqB,MAAM,aAAa,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,cAAsB,EAAE,MAAc,EAAE,OAAe,EAAE,QAAkB;
|
|
1
|
+
{"version":3,"file":"protocolId.js","sourceRoot":"","sources":["../../src/utils/protocolId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAqB,MAAM,aAAa,CAAC;AAEzD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,cAAsB,EAAE,MAAc,EAAE,OAAe,EAAE,QAAkB,EAAU;IACpH,OAAO,GAAG,cAAc,IAAI,MAAM,IAAI,OAAO,IAAI,QAAQ,EAAE,CAAC;AAAA,CAC7D;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB,EAAsB;IACtE,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAa,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAW,CAAC;IAC3C,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,6BAA6B,UAAU,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,6CAA6C;IAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IAErC,mGAAmG;IACnG,MAAM,MAAM,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAW,CAAC;IAEvC,wFAAwF;IACxF,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEpE,OAAO;QACL,cAAc;QACd,MAAM;QACN,OAAO;QACP,QAAQ;KACT,CAAC;AAAA,CACH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snappyCommon.js","sourceRoot":"","sources":["../../src/utils/snappyCommon.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"snappyCommon.js","sourceRoot":"","sources":["../../src/utils/snappyCommon.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,wBAAwB,CAAC;SAEhC,SAAS;AAArB,IAAY,SAMX;AAND,WAAY,SAAS;IACnB,uDAAiB,CAAA;IACjB,qDAAiB,CAAA;IACjB,yDAAmB,CAAA;IACnB,iDAAc,CAAA;IACd,qDAAgB,CAAA;AAAC,CACnB,EANY,SAAS,KAAT,SAAS,QAMpB;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAE1G;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAE7C,MAAM,UAAU,GAAG,CAAC,KAAiB,EAAU;IAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAE1D,6FAA6F;IAC7F,2CAA2C;IAC3C,mGAAmG;IACnG,qHAAqH;IACrH,uFAAuF;IACvF,uEAAuE;IACvE,sCAAsC;IACtC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAElF,OAAO,MAAM,CAAC;AAAA,CACf"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function encodeSnappy(bytes: Buffer):
|
|
1
|
+
export declare function encodeSnappy(bytes: Buffer): Generator<Buffer>;
|
|
2
2
|
//# sourceMappingURL=snappyCompress.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snappyCompress.d.ts","sourceRoot":"","sources":["../../src/utils/snappyCompress.ts"],"names":[],"mappings":"AAKA,
|
|
1
|
+
{"version":3,"file":"snappyCompress.d.ts","sourceRoot":"","sources":["../../src/utils/snappyCompress.ts"],"names":[],"mappings":"AAKA,wBAAiB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,CAmB9D"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { compressSync } from "snappy";
|
|
3
3
|
import { ChunkType, IDENTIFIER_FRAME, UNCOMPRESSED_CHUNK_SIZE, crc } from "./snappyCommon.js";
|
|
4
4
|
// The logic in this file is largely copied (in simplified form) from https://github.com/ChainSafe/node-snappy-stream/
|
|
5
|
-
export
|
|
5
|
+
export function* encodeSnappy(bytes) {
|
|
6
6
|
yield IDENTIFIER_FRAME;
|
|
7
7
|
for (let i = 0; i < bytes.length; i += UNCOMPRESSED_CHUNK_SIZE) {
|
|
8
8
|
const chunk = bytes.subarray(i, i + UNCOMPRESSED_CHUNK_SIZE);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snappyCompress.js","sourceRoot":"","sources":["../../src/utils/snappyCompress.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAC,SAAS,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,GAAG,EAAC,MAAM,mBAAmB,CAAC;AAE5F,sHAAsH;AACtH,MAAM,
|
|
1
|
+
{"version":3,"file":"snappyCompress.js","sourceRoot":"","sources":["../../src/utils/snappyCompress.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,OAAO,EAAC,YAAY,EAAC,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAC,SAAS,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,GAAG,EAAC,MAAM,mBAAmB,CAAC;AAE5F,sHAAsH;AACtH,MAAM,SAAS,CAAC,CAAC,YAAY,CAAC,KAAa,EAAqB;IAC9D,MAAM,gBAAgB,CAAC;IAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,uBAAuB,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,uBAAuB,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,UAAU,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;YACnC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;QAClH,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9B,MAAM,MAAM,CAAC,MAAM,CAAC;gBAClB,EAAE;gBACF,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;gBAClE,GAAG,CAAC,KAAK,CAAC;gBACV,KAAK;aACN,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AAAA,CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snappyIndex.d.ts","sourceRoot":"","sources":["../../src/utils/snappyIndex.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACjD,
|
|
1
|
+
{"version":3,"file":"snappyIndex.d.ts","sourceRoot":"","sources":["../../src/utils/snappyIndex.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACjD,cAAc,uBAAuB,CAAC"}
|
package/lib/utils/snappyIndex.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snappyIndex.js","sourceRoot":"","sources":["../../src/utils/snappyIndex.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACjD,
|
|
1
|
+
{"version":3,"file":"snappyIndex.js","sourceRoot":"","sources":["../../src/utils/snappyIndex.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,OAAO,EAAC,YAAY,EAAC,MAAM,qBAAqB,CAAC;AACjD,cAAc,uBAAuB,CAAC"}
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import { Uint8ArrayList } from "uint8arraylist";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
*/
|
|
10
|
-
uncompress(chunk: Uint8ArrayList): Uint8ArrayList | null;
|
|
11
|
-
reset(): void;
|
|
12
|
-
}
|
|
2
|
+
import { ChunkType } from "./snappyCommon.js";
|
|
3
|
+
export declare function parseSnappyFrameHeader(header: Uint8Array): {
|
|
4
|
+
type: ChunkType;
|
|
5
|
+
frameSize: number;
|
|
6
|
+
};
|
|
7
|
+
export declare function decodeSnappyFrameData(type: ChunkType, frame: Uint8Array): Uint8Array | null;
|
|
8
|
+
export declare function decodeSnappyFrames(data: Uint8Array): Uint8ArrayList;
|
|
13
9
|
//# sourceMappingURL=snappyUncompress.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snappyUncompress.d.ts","sourceRoot":"","sources":["../../src/utils/snappyUncompress.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAC,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"snappyUncompress.d.ts","sourceRoot":"","sources":["../../src/utils/snappyUncompress.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAC,SAAS,EAA2C,MAAM,mBAAmB,CAAC;AAEtF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAC,CAQ/F;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAwC3F;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,CAoCnE"}
|
|
@@ -1,81 +1,81 @@
|
|
|
1
1
|
import { uncompress } from "snappyjs";
|
|
2
2
|
import { Uint8ArrayList } from "uint8arraylist";
|
|
3
3
|
import { ChunkType, IDENTIFIER, UNCOMPRESSED_CHUNK_SIZE, crc } from "./snappyCommon.js";
|
|
4
|
-
export
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
while (this.buffer.length > 0) {
|
|
18
|
-
if (this.buffer.length < 4)
|
|
19
|
-
break;
|
|
20
|
-
const type = getChunkType(this.buffer.get(0));
|
|
21
|
-
if (!this.state.foundIdentifier && type !== ChunkType.IDENTIFIER) {
|
|
22
|
-
throw "malformed input: must begin with an identifier";
|
|
4
|
+
export function parseSnappyFrameHeader(header) {
|
|
5
|
+
if (header.length !== 4) {
|
|
6
|
+
throw new Error("malformed input: incomplete frame header");
|
|
7
|
+
}
|
|
8
|
+
const type = getChunkType(header[0]);
|
|
9
|
+
const frameSize = header[1] + (header[2] << 8) + (header[3] << 16);
|
|
10
|
+
return { type, frameSize };
|
|
11
|
+
}
|
|
12
|
+
export function decodeSnappyFrameData(type, frame) {
|
|
13
|
+
switch (type) {
|
|
14
|
+
case ChunkType.IDENTIFIER: {
|
|
15
|
+
if (!Buffer.prototype.equals.call(frame, IDENTIFIER)) {
|
|
16
|
+
throw new Error("malformed input: bad identifier");
|
|
23
17
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
case ChunkType.PADDING:
|
|
21
|
+
case ChunkType.SKIPPABLE:
|
|
22
|
+
return null;
|
|
23
|
+
case ChunkType.COMPRESSED: {
|
|
24
|
+
if (frame.length < 4) {
|
|
25
|
+
throw new Error("malformed input: too short");
|
|
27
26
|
}
|
|
28
|
-
const
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
throw "malformed input: bad identifier";
|
|
34
|
-
}
|
|
35
|
-
this.state.foundIdentifier = true;
|
|
36
|
-
continue;
|
|
37
|
-
}
|
|
38
|
-
case ChunkType.PADDING:
|
|
39
|
-
case ChunkType.SKIPPABLE:
|
|
40
|
-
continue;
|
|
41
|
-
case ChunkType.COMPRESSED: {
|
|
42
|
-
const checksum = frame.subarray(0, 4);
|
|
43
|
-
const data = frame.subarray(4);
|
|
44
|
-
const uncompressed = uncompress(data, UNCOMPRESSED_CHUNK_SIZE);
|
|
45
|
-
if (crc(uncompressed).compare(checksum) !== 0) {
|
|
46
|
-
throw "malformed input: bad checksum";
|
|
47
|
-
}
|
|
48
|
-
result.append(uncompressed);
|
|
49
|
-
break;
|
|
50
|
-
}
|
|
51
|
-
case ChunkType.UNCOMPRESSED: {
|
|
52
|
-
const checksum = frame.subarray(0, 4);
|
|
53
|
-
const uncompressed = frame.subarray(4);
|
|
54
|
-
if (uncompressed.length > UNCOMPRESSED_CHUNK_SIZE) {
|
|
55
|
-
throw "malformed input: too large";
|
|
56
|
-
}
|
|
57
|
-
if (crc(uncompressed).compare(checksum) !== 0) {
|
|
58
|
-
throw "malformed input: bad checksum";
|
|
59
|
-
}
|
|
60
|
-
result.append(uncompressed);
|
|
61
|
-
break;
|
|
62
|
-
}
|
|
27
|
+
const checksum = frame.subarray(0, 4);
|
|
28
|
+
const data = frame.subarray(4);
|
|
29
|
+
const uncompressed = uncompress(data, UNCOMPRESSED_CHUNK_SIZE);
|
|
30
|
+
if (crc(uncompressed).compare(checksum) !== 0) {
|
|
31
|
+
throw new Error("malformed input: bad checksum");
|
|
63
32
|
}
|
|
33
|
+
return uncompressed;
|
|
64
34
|
}
|
|
65
|
-
|
|
66
|
-
|
|
35
|
+
case ChunkType.UNCOMPRESSED: {
|
|
36
|
+
if (frame.length < 4) {
|
|
37
|
+
throw new Error("malformed input: too short");
|
|
38
|
+
}
|
|
39
|
+
const checksum = frame.subarray(0, 4);
|
|
40
|
+
const uncompressed = frame.subarray(4);
|
|
41
|
+
if (uncompressed.length > UNCOMPRESSED_CHUNK_SIZE) {
|
|
42
|
+
throw new Error("malformed input: too large");
|
|
43
|
+
}
|
|
44
|
+
if (crc(uncompressed).compare(checksum) !== 0) {
|
|
45
|
+
throw new Error("malformed input: bad checksum");
|
|
46
|
+
}
|
|
47
|
+
return uncompressed;
|
|
67
48
|
}
|
|
68
|
-
return result;
|
|
69
|
-
}
|
|
70
|
-
reset() {
|
|
71
|
-
this.buffer = new Uint8ArrayList();
|
|
72
|
-
this.state = {
|
|
73
|
-
foundIdentifier: false,
|
|
74
|
-
};
|
|
75
49
|
}
|
|
76
50
|
}
|
|
77
|
-
function
|
|
78
|
-
|
|
51
|
+
export function decodeSnappyFrames(data) {
|
|
52
|
+
const out = new Uint8ArrayList();
|
|
53
|
+
let foundIdentifier = false;
|
|
54
|
+
let offset = 0;
|
|
55
|
+
while (offset < data.length) {
|
|
56
|
+
const remaining = data.length - offset;
|
|
57
|
+
if (remaining < 4) {
|
|
58
|
+
throw new Error("malformed input: incomplete frame header");
|
|
59
|
+
}
|
|
60
|
+
const { type, frameSize } = parseSnappyFrameHeader(data.subarray(offset, offset + 4));
|
|
61
|
+
if (!foundIdentifier && type !== ChunkType.IDENTIFIER) {
|
|
62
|
+
throw new Error("malformed input: must begin with an identifier");
|
|
63
|
+
}
|
|
64
|
+
offset += 4;
|
|
65
|
+
if (data.length - offset < frameSize) {
|
|
66
|
+
throw new Error("malformed input: incomplete frame");
|
|
67
|
+
}
|
|
68
|
+
const frame = data.subarray(offset, offset + frameSize);
|
|
69
|
+
offset += frameSize;
|
|
70
|
+
if (type === ChunkType.IDENTIFIER) {
|
|
71
|
+
foundIdentifier = true;
|
|
72
|
+
}
|
|
73
|
+
const uncompressed = decodeSnappyFrameData(type, frame);
|
|
74
|
+
if (uncompressed !== null) {
|
|
75
|
+
out.append(uncompressed);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return out;
|
|
79
79
|
}
|
|
80
80
|
function getChunkType(value) {
|
|
81
81
|
switch (value) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"snappyUncompress.js","sourceRoot":"","sources":["../../src/utils/snappyUncompress.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAC,SAAS,EAAE,UAAU,EAAE,uBAAuB,EAAE,GAAG,EAAC,MAAM,mBAAmB,CAAC;AAEtF,MAAM,
|
|
1
|
+
{"version":3,"file":"snappyUncompress.js","sourceRoot":"","sources":["../../src/utils/snappyUncompress.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Stream } from "@libp2p/interface";
|
|
2
|
+
import { ByteStream } from "@libp2p/utils";
|
|
3
|
+
import { Uint8ArrayList } from "uint8arraylist";
|
|
4
|
+
export declare function sendChunks(stream: Stream, source: Iterable<Uint8Array | Uint8ArrayList> | AsyncIterable<Uint8Array | Uint8ArrayList>, signal?: AbortSignal): Promise<void>;
|
|
5
|
+
export declare function drainByteStream(bytes: ByteStream<Stream>): Uint8Array | undefined;
|
|
6
|
+
//# sourceMappingURL=stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../src/utils/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,MAAM,EAAC,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AACzC,OAAO,EAAC,cAAc,EAAC,MAAM,gBAAgB,CAAC;AAG9C,wBAAsB,UAAU,CAC9B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,QAAQ,CAAC,UAAU,GAAG,cAAc,CAAC,GAAG,aAAa,CAAC,UAAU,GAAG,cAAc,CAAC,EAC1F,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,SAAS,CAYjF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ErrorAborted } from "@lodestar/utils";
|
|
2
|
+
export async function sendChunks(stream, source, signal) {
|
|
3
|
+
for await (const chunk of source) {
|
|
4
|
+
if (signal?.aborted) {
|
|
5
|
+
throw new ErrorAborted("sendChunks");
|
|
6
|
+
}
|
|
7
|
+
if (!stream.send(chunk)) {
|
|
8
|
+
await stream.onDrain({ signal });
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export function drainByteStream(bytes) {
|
|
13
|
+
const readBuffer = bytes.readBuffer;
|
|
14
|
+
if (readBuffer && readBuffer.byteLength > 0) {
|
|
15
|
+
const drained = readBuffer.subarray();
|
|
16
|
+
readBuffer.consume(readBuffer.byteLength);
|
|
17
|
+
return drained;
|
|
18
|
+
}
|
|
19
|
+
return undefined;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=stream.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stream.js","sourceRoot":"","sources":["../../src/utils/stream.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,YAAY,EAAC,MAAM,iBAAiB,CAAC;AAE7C,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAc,EACd,MAA0F,EAC1F,MAAoB,EACL;IACf,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,YAAY,CAAC,YAAY,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,MAAM,CAAC,OAAO,CAAC,EAAC,MAAM,EAAC,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;AAAA,CACF;AAED,MAAM,UAAU,eAAe,CAAC,KAAyB,EAA0B;IACjF,MAAM,UAAU,GACd,KAGD,CAAC,UAAU,CAAC;IACb,IAAI,UAAU,IAAI,UAAU,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;QACtC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC1C,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,SAAS,CAAC;AAAA,CAClB"}
|