@lodestar/reqresp 1.41.0-dev.a35cbde8b3 → 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 +13 -22
- 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 +3 -3
- package/lib/utils/errorMessage.d.ts.map +1 -1
- package/lib/utils/errorMessage.js +14 -13
- 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 +17 -29
- 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 +14 -13
- 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,14 +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
6
|
/**
|
|
7
7
|
* Encodes a UTF-8 error message string into a single buffer (max 256 bytes before encoding).
|
|
8
8
|
* Unlike `encodeErrorMessage`, this collects all encoded chunks into one buffer.
|
|
9
9
|
*/
|
|
10
|
-
export declare function encodeErrorMessageToBuffer(errorMessage: string, encoding: Encoding):
|
|
10
|
+
export declare function encodeErrorMessageToBuffer(errorMessage: string, encoding: Encoding): Buffer;
|
|
11
11
|
/**
|
|
12
12
|
* Decodes error message from network bytes and removes non printable, non ascii characters.
|
|
13
13
|
*/
|
|
14
|
-
export declare function decodeErrorMessage(encodedErrorMessage: Uint8Array):
|
|
14
|
+
export declare function decodeErrorMessage(encodedErrorMessage: Uint8Array): string;
|
|
15
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,25 +11,28 @@ 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
|
}
|
|
27
29
|
/**
|
|
28
30
|
* Encodes a UTF-8 error message string into a single buffer (max 256 bytes before encoding).
|
|
29
31
|
* Unlike `encodeErrorMessage`, this collects all encoded chunks into one buffer.
|
|
30
32
|
*/
|
|
31
|
-
export
|
|
33
|
+
export function encodeErrorMessageToBuffer(errorMessage, encoding) {
|
|
32
34
|
const chunks = [];
|
|
33
|
-
for
|
|
35
|
+
for (const chunk of encodeErrorMessage(errorMessage, encoding)) {
|
|
34
36
|
chunks.push(chunk);
|
|
35
37
|
}
|
|
36
38
|
return Buffer.concat(chunks);
|
|
@@ -38,23 +40,22 @@ export async function encodeErrorMessageToBuffer(errorMessage, encoding) {
|
|
|
38
40
|
/**
|
|
39
41
|
* Decodes error message from network bytes and removes non printable, non ascii characters.
|
|
40
42
|
*/
|
|
41
|
-
export
|
|
42
|
-
const
|
|
43
|
+
export function decodeErrorMessage(encodedErrorMessage) {
|
|
44
|
+
const decoder = new TextDecoder();
|
|
43
45
|
let sszDataLength;
|
|
44
46
|
try {
|
|
45
47
|
sszDataLength = varintDecode(encodedErrorMessage);
|
|
46
|
-
const decompressor = new SnappyFramesUncompress();
|
|
47
48
|
const varintBytes = varintEncodingLength(sszDataLength);
|
|
48
|
-
const errorMessage =
|
|
49
|
-
if (errorMessage
|
|
49
|
+
const errorMessage = decodeSnappyFrames(encodedErrorMessage.subarray(varintBytes));
|
|
50
|
+
if (errorMessage.length !== sszDataLength) {
|
|
50
51
|
throw new Error("Malformed input: data length mismatch");
|
|
51
52
|
}
|
|
52
53
|
// remove non ascii characters from string
|
|
53
|
-
return
|
|
54
|
+
return decoder.decode(errorMessage.subarray(0)).replace(/[^\x20-\x7F]/g, "");
|
|
54
55
|
}
|
|
55
56
|
catch (_e) {
|
|
56
57
|
// remove non ascii characters from string
|
|
57
|
-
return
|
|
58
|
+
return decoder.decode(encodedErrorMessage.slice(0, 256)).replace(/[^\x20-\x7F]/g, "");
|
|
58
59
|
}
|
|
59
60
|
}
|
|
60
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"}
|