@lodestar/reqresp 1.7.2 → 1.8.0-dev.0ed1cd1585

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/README.md +19 -7
  2. package/lib/ReqResp.d.ts +14 -6
  3. package/lib/ReqResp.js +28 -8
  4. package/lib/ReqResp.js.map +1 -1
  5. package/lib/encoders/requestDecode.d.ts +2 -2
  6. package/lib/encoders/requestDecode.js +3 -3
  7. package/lib/encoders/requestDecode.js.map +1 -1
  8. package/lib/encoders/requestEncode.d.ts +2 -2
  9. package/lib/encoders/requestEncode.js +2 -4
  10. package/lib/encoders/requestEncode.js.map +1 -1
  11. package/lib/encoders/responseDecode.d.ts +4 -4
  12. package/lib/encoders/responseDecode.js +7 -2
  13. package/lib/encoders/responseDecode.js.map +1 -1
  14. package/lib/encoders/responseEncode.d.ts +3 -3
  15. package/lib/encoders/responseEncode.js +3 -31
  16. package/lib/encoders/responseEncode.js.map +1 -1
  17. package/lib/encodingStrategies/index.d.ts +3 -3
  18. package/lib/encodingStrategies/index.js +2 -2
  19. package/lib/encodingStrategies/index.js.map +1 -1
  20. package/lib/encodingStrategies/sszSnappy/decode.d.ts +3 -3
  21. package/lib/encodingStrategies/sszSnappy/decode.js +3 -16
  22. package/lib/encodingStrategies/sszSnappy/decode.js.map +1 -1
  23. package/lib/encodingStrategies/sszSnappy/encode.d.ts +1 -2
  24. package/lib/encodingStrategies/sszSnappy/encode.js +2 -23
  25. package/lib/encodingStrategies/sszSnappy/encode.js.map +1 -1
  26. package/lib/index.d.ts +2 -2
  27. package/lib/index.js.map +1 -1
  28. package/lib/rate_limiter/ReqRespRateLimiter.d.ts +1 -1
  29. package/lib/rate_limiter/ReqRespRateLimiter.js.map +1 -1
  30. package/lib/request/errors.d.ts +5 -14
  31. package/lib/request/errors.js +3 -11
  32. package/lib/request/errors.js.map +1 -1
  33. package/lib/request/index.d.ts +2 -2
  34. package/lib/request/index.js +12 -17
  35. package/lib/request/index.js.map +1 -1
  36. package/lib/response/index.d.ts +4 -4
  37. package/lib/response/index.js +10 -5
  38. package/lib/response/index.js.map +1 -1
  39. package/lib/types.d.ts +96 -53
  40. package/lib/types.js +0 -5
  41. package/lib/types.js.map +1 -1
  42. package/lib/utils/bufferedSource.d.ts +1 -1
  43. package/lib/utils/bufferedSource.js.map +1 -1
  44. package/lib/utils/collectExactOne.js +2 -2
  45. package/lib/utils/collectExactOne.js.map +1 -1
  46. package/lib/utils/protocolId.d.ts +2 -2
  47. package/lib/utils/protocolId.js.map +1 -1
  48. package/package.json +11 -12
  49. package/lib/protocols/BeaconBlockAndBlobsSidecarByRoot.d.ts +0 -4
  50. package/lib/protocols/BeaconBlockAndBlobsSidecarByRoot.js +0 -27
  51. package/lib/protocols/BeaconBlockAndBlobsSidecarByRoot.js.map +0 -1
  52. package/lib/protocols/BeaconBlocksByRange.d.ts +0 -5
  53. package/lib/protocols/BeaconBlocksByRange.js +0 -38
  54. package/lib/protocols/BeaconBlocksByRange.js.map +0 -1
  55. package/lib/protocols/BeaconBlocksByRoot.d.ts +0 -5
  56. package/lib/protocols/BeaconBlocksByRoot.js +0 -38
  57. package/lib/protocols/BeaconBlocksByRoot.js.map +0 -1
  58. package/lib/protocols/BlobsSidecarsByRange.d.ts +0 -4
  59. package/lib/protocols/BlobsSidecarsByRange.js +0 -27
  60. package/lib/protocols/BlobsSidecarsByRange.js.map +0 -1
  61. package/lib/protocols/Goodbye.d.ts +0 -4
  62. package/lib/protocols/Goodbye.js +0 -21
  63. package/lib/protocols/Goodbye.js.map +0 -1
  64. package/lib/protocols/LightClientBootstrap.d.ts +0 -4
  65. package/lib/protocols/LightClientBootstrap.js +0 -25
  66. package/lib/protocols/LightClientBootstrap.js.map +0 -1
  67. package/lib/protocols/LightClientFinalityUpdate.d.ts +0 -4
  68. package/lib/protocols/LightClientFinalityUpdate.js +0 -24
  69. package/lib/protocols/LightClientFinalityUpdate.js.map +0 -1
  70. package/lib/protocols/LightClientOptimisticUpdate.d.ts +0 -4
  71. package/lib/protocols/LightClientOptimisticUpdate.js +0 -24
  72. package/lib/protocols/LightClientOptimisticUpdate.js.map +0 -1
  73. package/lib/protocols/LightClientUpdatesByRange.d.ts +0 -4
  74. package/lib/protocols/LightClientUpdatesByRange.js +0 -23
  75. package/lib/protocols/LightClientUpdatesByRange.js.map +0 -1
  76. package/lib/protocols/Metadata.d.ts +0 -5
  77. package/lib/protocols/Metadata.js +0 -31
  78. package/lib/protocols/Metadata.js.map +0 -1
  79. package/lib/protocols/Ping.d.ts +0 -4
  80. package/lib/protocols/Ping.js +0 -20
  81. package/lib/protocols/Ping.js.map +0 -1
  82. package/lib/protocols/Status.d.ts +0 -4
  83. package/lib/protocols/Status.js +0 -19
  84. package/lib/protocols/Status.js.map +0 -1
  85. package/lib/protocols/index.d.ts +0 -13
  86. package/lib/protocols/index.js +0 -13
  87. package/lib/protocols/index.js.map +0 -1
  88. package/lib/protocols/utils.d.ts +0 -7
  89. package/lib/protocols/utils.js +0 -9
  90. package/lib/protocols/utils.js.map +0 -1
package/README.md CHANGED
@@ -13,19 +13,31 @@ Typescript REST client for the [Ethereum Consensus API spec](https://github.com/
13
13
 
14
14
  ```typescript
15
15
  import {Libp2p} from "libp2p";
16
- import {EncodedPayloadType, ReqResp} from "@lodestar/reqresp";
17
- import {Ping} from "@lodestar/reqresp/protocols";
16
+ import {ssz} from "@lodestar/types";
17
+ import {ReqResp, ContextBytesType, Protocol, Encoding} from "@lodestar/reqresp";
18
+ import {ForkName} from "@lodestar/params";
18
19
  import {Logger} from "@lodestar/utils";
19
20
 
20
21
  async function getReqResp(libp2p: Libp2p, logger: Logger): Promise<void> {
21
22
  const reqResp = new ReqResp({libp2p, logger, metricsRegister: null});
22
23
 
23
24
  // Register a PONG handler to respond with caller's Ping request
24
- reqResp.registerProtocol(
25
- Ping(async function* (req: bigint) {
26
- yield {type: EncodedPayloadType.ssz, data: req};
27
- })
28
- );
25
+ const pingProtocol: Protocol = {
26
+ method: "ping",
27
+ version: 1,
28
+ encoding: Encoding.SSZ_SNAPPY,
29
+ contextBytes: {type: ContextBytesType.Empty},
30
+ requestSizes: ssz.phase0.Ping,
31
+ responseSizes: () => ssz.phase0.Ping,
32
+ handler: async function* (req) {
33
+ yield {
34
+ data: req.data,
35
+ fork: ForkName.phase0,
36
+ };
37
+ },
38
+ };
39
+
40
+ reqResp.registerProtocol(pingProtocol);
29
41
  }
30
42
  ```
31
43
 
package/lib/ReqResp.d.ts CHANGED
@@ -3,7 +3,7 @@ import { Libp2p } from "libp2p";
3
3
  import { Logger } from "@lodestar/utils";
4
4
  import { Metrics, MetricsRegister } from "./metrics.js";
5
5
  import { RequestError, SendRequestOpts } from "./request/index.js";
6
- import { Encoding, ProtocolDefinition, ReqRespRateLimiterOpts } from "./types.js";
6
+ import { DialOnlyProtocol, Encoding, MixedProtocol, ReqRespRateLimiterOpts, Protocol, ProtocolDescriptor, ResponseIncoming } from "./types.js";
7
7
  type ProtocolID = string;
8
8
  export declare const DEFAULT_PROTOCOL_PREFIX = "/eth2/beacon_chain/req";
9
9
  export interface ReqRespProtocolModules {
@@ -37,14 +37,22 @@ export declare class ReqResp {
37
37
  private readonly protocolPrefix;
38
38
  /** `${protocolPrefix}/${method}/${version}/${encoding}` */
39
39
  private readonly registeredProtocols;
40
+ private readonly dialOnlyProtocols;
40
41
  constructor(modules: ReqRespProtocolModules, opts?: ReqRespOpts);
42
+ /**
43
+ * Register protocol which will be used only to dial to other peers
44
+ * The libp2p instance will not handle that protocol
45
+ *
46
+ * Made it explicit method to avoid any developer mistake
47
+ */
48
+ registerDialOnlyProtocol(protocol: DialOnlyProtocol, opts?: ReqRespRegisterOpts): void;
41
49
  /**
42
50
  * Register protocol as supported and to libp2p.
43
51
  * async because libp2p registar persists the new protocol list in the peer-store.
44
52
  * Throws if the same protocol is registered twice.
45
53
  * Can be called at any time, no concept of started / stopped
46
54
  */
47
- registerProtocol<Req, Resp>(protocol: ProtocolDefinition<Req, Resp>, opts?: ReqRespRegisterOpts): Promise<void>;
55
+ registerProtocol(protocol: Protocol, opts?: ReqRespRegisterOpts): Promise<void>;
48
56
  /**
49
57
  * Remove protocol as supported and from libp2p.
50
58
  * async because libp2p registar persists the new protocol list in the peer-store.
@@ -59,10 +67,10 @@ export declare class ReqResp {
59
67
  getRegisteredProtocols(): ProtocolID[];
60
68
  start(): Promise<void>;
61
69
  stop(): Promise<void>;
62
- protected sendRequest<Req, Resp>(peerId: PeerId, method: string, versions: number[], encoding: Encoding, body: Req): AsyncIterable<Resp>;
70
+ protected sendRequest(peerId: PeerId, method: string, versions: number[], encoding: Encoding, body: Uint8Array): AsyncIterable<ResponseIncoming>;
63
71
  private getRequestHandler;
64
- protected onIncomingRequest(_peerId: PeerId, _protocol: ProtocolDefinition): void;
65
- protected onIncomingRequestError(_protocol: ProtocolDefinition<any, any>, _error: RequestError): void;
72
+ protected onIncomingRequest(_peerId: PeerId, _protocol: ProtocolDescriptor): void;
73
+ protected onIncomingRequestError(_protocol: ProtocolDescriptor, _error: RequestError): void;
66
74
  protected onOutgoingRequestError(_peerId: PeerId, _method: string, _error: RequestError): void;
67
75
  /**
68
76
  * ```
@@ -70,7 +78,7 @@ export declare class ReqResp {
70
78
  * ```
71
79
  * https://github.com/ethereum/consensus-specs/blob/v1.2.0/specs/phase0/p2p-interface.md#protocol-identification
72
80
  */
73
- protected formatProtocolID(protocol: Pick<ProtocolDefinition, "method" | "version" | "encoding">): string;
81
+ protected formatProtocolID(protocol: Pick<MixedProtocol, "method" | "version" | "encoding">): string;
74
82
  }
75
83
  export {};
76
84
  //# sourceMappingURL=ReqResp.d.ts.map
package/lib/ReqResp.js CHANGED
@@ -19,13 +19,32 @@ export class ReqResp {
19
19
  /** Tracks request and responses in a sequential counter */
20
20
  this.reqCount = 0;
21
21
  /** `${protocolPrefix}/${method}/${version}/${encoding}` */
22
+ // Use any to avoid TS error on registering protocol
23
+ // Type 'unknown' is not assignable to type 'Resp'
24
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
25
  this.registeredProtocols = new Map();
26
+ this.dialOnlyProtocols = new Map();
23
27
  this.libp2p = modules.libp2p;
24
28
  this.logger = modules.logger;
25
29
  this.metrics = modules.metricsRegister ? getMetrics(modules.metricsRegister) : null;
26
30
  this.protocolPrefix = (_a = opts.protocolPrefix) !== null && _a !== void 0 ? _a : DEFAULT_PROTOCOL_PREFIX;
27
31
  this.rateLimiter = new ReqRespRateLimiter(opts);
28
32
  }
33
+ /**
34
+ * Register protocol which will be used only to dial to other peers
35
+ * The libp2p instance will not handle that protocol
36
+ *
37
+ * Made it explicit method to avoid any developer mistake
38
+ */
39
+ registerDialOnlyProtocol(protocol, opts) {
40
+ const protocolID = this.formatProtocolID(protocol);
41
+ // libp2p will throw on error on duplicates, allow to overwrite behavior
42
+ if ((opts === null || opts === void 0 ? void 0 : opts.ignoreIfDuplicate) && this.registeredProtocols.has(protocolID)) {
43
+ return;
44
+ }
45
+ this.registeredProtocols.set(protocolID, protocol);
46
+ this.dialOnlyProtocols.set(protocolID, true);
47
+ }
29
48
  /**
30
49
  * Register protocol as supported and to libp2p.
31
50
  * async because libp2p registar persists the new protocol list in the peer-store.
@@ -34,13 +53,11 @@ export class ReqResp {
34
53
  */
35
54
  async registerProtocol(protocol, opts) {
36
55
  const protocolID = this.formatProtocolID(protocol);
37
- // libp2p will throw on error on duplicates, allow to overwrite behaviour
38
- if ((opts === null || opts === void 0 ? void 0 : opts.ignoreIfDuplicate) && this.registeredProtocols.has(protocolID)) {
39
- return;
40
- }
41
- this.registeredProtocols.set(protocolID, protocol);
42
- if (protocol.inboundRateLimits) {
43
- this.rateLimiter.initRateLimits(protocolID, protocol.inboundRateLimits);
56
+ const { handler: _handler, inboundRateLimits, ...rest } = protocol;
57
+ this.registerDialOnlyProtocol(rest, opts);
58
+ this.dialOnlyProtocols.set(protocolID, false);
59
+ if (inboundRateLimits) {
60
+ this.rateLimiter.initRateLimits(protocolID, inboundRateLimits);
44
61
  }
45
62
  return this.libp2p.handle(protocolID, this.getRequestHandler(protocol, protocolID));
46
63
  }
@@ -112,6 +129,9 @@ export class ReqResp {
112
129
  getRequestHandler(protocol, protocolID) {
113
130
  return async ({ connection, stream }) => {
114
131
  var _a, _b, _c, _d, _e, _f;
132
+ if (this.dialOnlyProtocols.get(protocolID)) {
133
+ throw new Error(`Received request on dial only protocol '${protocolID}'`);
134
+ }
115
135
  const peerId = connection.remotePeer;
116
136
  const peerClient = (_b = (_a = this.opts).getPeerLogMetadata) === null || _b === void 0 ? void 0 : _b.call(_a, peerId.toString());
117
137
  const { method } = protocol;
@@ -123,7 +143,7 @@ export class ReqResp {
123
143
  logger: this.logger,
124
144
  stream,
125
145
  peerId,
126
- protocol,
146
+ protocol: protocol,
127
147
  protocolID,
128
148
  rateLimiter: this.rateLimiter,
129
149
  signal: this.controller.signal,
@@ -1 +1 @@
1
- {"version":3,"file":"ReqResp.js","sourceRoot":"","sources":["../src/ReqResp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ReqResp.js","sourceRoot":"","sources":["../src/ReqResp.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,11 @@
1
1
  import { Sink } from "it-stream-types";
2
2
  import { Uint8ArrayList } from "uint8arraylist";
3
- import { ProtocolDefinition } from "../types.js";
3
+ import { MixedProtocol } from "../types.js";
4
4
  /**
5
5
  * Consumes a stream source to read a `<request>`
6
6
  * ```bnf
7
7
  * request ::= <encoding-dependent-header> | <encoded-payload>
8
8
  * ```
9
9
  */
10
- export declare function requestDecode<Req, Resp>(protocol: ProtocolDefinition<Req, Resp>): Sink<Uint8Array | Uint8ArrayList, Promise<Req>>;
10
+ export declare function requestDecode(protocol: MixedProtocol): Sink<Uint8Array | Uint8ArrayList, Promise<Uint8Array>>;
11
11
  //# sourceMappingURL=requestDecode.d.ts.map
@@ -1,6 +1,6 @@
1
- import { ForkName } from "@lodestar/params";
2
1
  import { BufferedSource } from "../utils/index.js";
3
2
  import { readEncodedPayload } from "../encodingStrategies/index.js";
3
+ const EMPTY_DATA = new Uint8Array();
4
4
  /**
5
5
  * Consumes a stream source to read a `<request>`
6
6
  * ```bnf
@@ -9,10 +9,10 @@ import { readEncodedPayload } from "../encodingStrategies/index.js";
9
9
  */
10
10
  export function requestDecode(protocol) {
11
11
  return async function requestDecodeSink(source) {
12
- const type = protocol.requestType(ForkName.phase0);
12
+ const type = protocol.requestSizes;
13
13
  if (type === null) {
14
14
  // method has no body
15
- return null;
15
+ return EMPTY_DATA;
16
16
  }
17
17
  // Request has a single payload, so return immediately
18
18
  const bufferedSource = new BufferedSource(source);
@@ -1 +1 @@
1
- {"version":3,"file":"requestDecode.js","sourceRoot":"","sources":["../../src/encoders/requestDecode.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAE1C,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAC,kBAAkB,EAAC,MAAM,gCAAgC,CAAC;AAClE;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,QAAuC;IAEvC,OAAO,KAAK,UAAU,iBAAiB,CAAC,MAAM;QAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnD,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,qBAAqB;YACrB,OAAQ,IAAuB,CAAC;SACjC;QAED,sDAAsD;QACtD,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAwC,CAAC,CAAC;QACpF,OAAO,kBAAkB,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"requestDecode.js","sourceRoot":"","sources":["../../src/encoders/requestDecode.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAC,kBAAkB,EAAC,MAAM,gCAAgC,CAAC;AAElE,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,QAAuB;IACnD,OAAO,KAAK,UAAU,iBAAiB,CAAC,MAAM;QAC5C,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC;QACnC,IAAI,IAAI,KAAK,IAAI,EAAE;YACjB,qBAAqB;YACrB,OAAO,UAAU,CAAC;SACnB;QAED,sDAAsD;QACtD,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,MAAwC,CAAC,CAAC;QACpF,OAAO,kBAAkB,CAAC,cAAc,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC,CAAC;AACJ,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- import { ProtocolDefinition } from "../types.js";
2
+ import { MixedProtocol } from "../types.js";
3
3
  /**
4
4
  * Yields byte chunks for a `<request>`
5
5
  * ```bnf
@@ -8,5 +8,5 @@ import { ProtocolDefinition } from "../types.js";
8
8
  * Requests may contain no payload (e.g. /eth2/beacon_chain/req/metadata/1/)
9
9
  * if so, it would yield no byte chunks
10
10
  */
11
- export declare function requestEncode<Req>(protocol: ProtocolDefinition<Req>, requestBody: Req): AsyncGenerator<Buffer>;
11
+ export declare function requestEncode(protocol: MixedProtocol, requestBody: Uint8Array): AsyncGenerator<Buffer>;
12
12
  //# sourceMappingURL=requestEncode.d.ts.map
@@ -1,5 +1,3 @@
1
- import { ForkName } from "@lodestar/params";
2
- import { EncodedPayloadType } from "../types.js";
3
1
  import { writeEncodedPayload } from "../encodingStrategies/index.js";
4
2
  /**
5
3
  * Yields byte chunks for a `<request>`
@@ -10,9 +8,9 @@ import { writeEncodedPayload } from "../encodingStrategies/index.js";
10
8
  * if so, it would yield no byte chunks
11
9
  */
12
10
  export async function* requestEncode(protocol, requestBody) {
13
- const type = protocol.requestType(ForkName.phase0);
11
+ const type = protocol.requestSizes;
14
12
  if (type && requestBody !== null) {
15
- yield* writeEncodedPayload({ type: EncodedPayloadType.ssz, data: requestBody }, protocol.encoding, type);
13
+ yield* writeEncodedPayload(requestBody, protocol.encoding);
16
14
  }
17
15
  }
18
16
  //# sourceMappingURL=requestEncode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"requestEncode.js","sourceRoot":"","sources":["../../src/encoders/requestEncode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAC,kBAAkB,EAAqB,MAAM,aAAa,CAAC;AACnE,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,aAAa,CAAM,QAAiC,EAAE,WAAgB;IAC3F,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAEnD,IAAI,IAAI,IAAI,WAAW,KAAK,IAAI,EAAE;QAChC,KAAK,CAAC,CAAC,mBAAmB,CAAC,EAAC,IAAI,EAAE,kBAAkB,CAAC,GAAG,EAAE,IAAI,EAAE,WAAW,EAAC,EAAE,QAAQ,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;KACxG;AACH,CAAC"}
1
+ {"version":3,"file":"requestEncode.js","sourceRoot":"","sources":["../../src/encoders/requestEncode.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AAEnE;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,aAAa,CAAC,QAAuB,EAAE,WAAuB;IACnF,MAAM,IAAI,GAAG,QAAQ,CAAC,YAAY,CAAC;IAEnC,IAAI,IAAI,IAAI,WAAW,KAAK,IAAI,EAAE;QAChC,KAAK,CAAC,CAAC,mBAAmB,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAC5D;AACH,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { Uint8ArrayList } from "uint8arraylist";
2
2
  import { ForkName } from "@lodestar/params";
3
3
  import { BufferedSource } from "../utils/index.js";
4
- import { ContextBytesFactory, ProtocolDefinition } from "../types.js";
4
+ import { ContextBytesFactory, MixedProtocol, ResponseIncoming } from "../types.js";
5
5
  import { RespStatus } from "../interface.js";
6
6
  /**
7
7
  * Internal helper type to signal stream ended early
@@ -17,10 +17,10 @@ declare enum StreamStatus {
17
17
  * result ::= "0" | "1" | "2" | ["128" ... "255"]
18
18
  * ```
19
19
  */
20
- export declare function responseDecode<Resp>(protocol: ProtocolDefinition, cbs: {
20
+ export declare function responseDecode(protocol: MixedProtocol, cbs: {
21
21
  onFirstHeader: () => void;
22
22
  onFirstResponseChunk: () => void;
23
- }): (source: AsyncIterable<Uint8Array | Uint8ArrayList>) => AsyncIterable<Resp>;
23
+ }): (source: AsyncIterable<Uint8Array | Uint8ArrayList>) => AsyncIterable<ResponseIncoming>;
24
24
  /**
25
25
  * Consumes a stream source to read a `<result>`
26
26
  * ```bnf
@@ -42,7 +42,7 @@ export declare function readErrorMessage(bufferedSource: BufferedSource): Promis
42
42
  * While `<context-bytes>` has a single type of `ForkDigest`, this function only parses the `ForkName`
43
43
  * of the `ForkDigest` or defaults to `phase0`
44
44
  */
45
- export declare function readContextBytes<Resp>(contextBytes: ContextBytesFactory<Resp>, bufferedSource: BufferedSource): Promise<ForkName>;
45
+ export declare function readContextBytes(contextBytes: ContextBytesFactory, bufferedSource: BufferedSource): Promise<ForkName>;
46
46
  /**
47
47
  * Consumes a stream source to read `<context-bytes>`, where it's a fixed-width 4 byte
48
48
  */
@@ -43,8 +43,13 @@ export function responseDecode(protocol, cbs) {
43
43
  throw new ResponseError(status, errorMessage);
44
44
  }
45
45
  const forkName = await readContextBytes(protocol.contextBytes, bufferedSource);
46
- const type = protocol.responseType(forkName);
47
- yield await readEncodedPayload(bufferedSource, protocol.encoding, type);
46
+ const typeSizes = protocol.responseSizes(forkName);
47
+ const chunkData = await readEncodedPayload(bufferedSource, protocol.encoding, typeSizes);
48
+ yield {
49
+ data: chunkData,
50
+ fork: forkName,
51
+ protocolVersion: protocol.version,
52
+ };
48
53
  if (!readFirstResponseChunk) {
49
54
  cbs.onFirstResponseChunk();
50
55
  readFirstResponseChunk = true;
@@ -1 +1 @@
1
- {"version":3,"file":"responseDecode.js","sourceRoot":"","sources":["../../src/encoders/responseDecode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"responseDecode.js","sourceRoot":"","sources":["../../src/encoders/responseDecode.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- import { ProtocolDefinition, EncodedPayload } from "../types.js";
2
+ import { MixedProtocol, Protocol, ResponseOutgoing } from "../types.js";
3
3
  import { RpcResponseStatusError } from "../interface.js";
4
4
  /**
5
5
  * Yields byte chunks for a `<response>` with a zero response code `<result>`
@@ -10,7 +10,7 @@ import { RpcResponseStatusError } from "../interface.js";
10
10
  * ```
11
11
  * Note: `response` has zero or more chunks (denoted by `<>*`)
12
12
  */
13
- export declare function responseEncodeSuccess<Req, Resp>(protocol: ProtocolDefinition<Req, Resp>): (source: AsyncIterable<EncodedPayload<Resp>>) => AsyncIterable<Buffer>;
13
+ export declare function responseEncodeSuccess(protocol: Protocol): (source: AsyncIterable<ResponseOutgoing>) => AsyncIterable<Buffer>;
14
14
  /**
15
15
  * Yields byte chunks for a `<response_chunk>` with a non-zero response code `<result>`
16
16
  * denoted as `<error_response>`
@@ -21,5 +21,5 @@ export declare function responseEncodeSuccess<Req, Resp>(protocol: ProtocolDefin
21
21
  * Only the last `<response_chunk>` is allowed to have a non-zero error code, so this
22
22
  * fn yields exactly one `<error_response>` and afterwards the stream must be terminated
23
23
  */
24
- export declare function responseEncodeError(protocol: Pick<ProtocolDefinition, "encoding">, status: RpcResponseStatusError, errorMessage: string): AsyncGenerator<Buffer>;
24
+ export declare function responseEncodeError(protocol: Pick<MixedProtocol, "encoding">, status: RpcResponseStatusError, errorMessage: string): AsyncGenerator<Buffer>;
25
25
  //# sourceMappingURL=responseEncode.d.ts.map
@@ -1,7 +1,6 @@
1
- import { ForkName } from "@lodestar/params";
2
1
  import { writeEncodedPayload } from "../encodingStrategies/index.js";
3
2
  import { encodeErrorMessage } from "../utils/index.js";
4
- import { ContextBytesType, EncodedPayloadType, } from "../types.js";
3
+ import { ContextBytesType } from "../types.js";
5
4
  import { RespStatus } from "../interface.js";
6
5
  /**
7
6
  * Yields byte chunks for a `<response>` with a zero response code `<result>`
@@ -23,9 +22,7 @@ export function responseEncodeSuccess(protocol) {
23
22
  yield contextBytes;
24
23
  }
25
24
  // <encoding-dependent-header> | <encoded-payload>
26
- const forkName = getForkNameFromContextBytes(protocol.contextBytes, chunk);
27
- const respType = protocol.responseType(forkName);
28
- yield* writeEncodedPayload(chunk, protocol.encoding, respType);
25
+ yield* writeEncodedPayload(chunk.data, protocol.encoding);
29
26
  }
30
27
  };
31
28
  }
@@ -58,32 +55,7 @@ function getContextBytes(contextBytes, chunk) {
58
55
  return null;
59
56
  // Yield a fixed-width 4 byte chunk, set to the `ForkDigest`
60
57
  case ContextBytesType.ForkDigest:
61
- switch (chunk.type) {
62
- case EncodedPayloadType.ssz:
63
- return contextBytes.forkDigestContext.forkName2ForkDigest(contextBytes.forkFromResponse(chunk.data));
64
- case EncodedPayloadType.bytes:
65
- if (chunk.contextBytes.type !== ContextBytesType.ForkDigest) {
66
- throw Error(`Expected context bytes ForkDigest but got ${chunk.contextBytes.type}`);
67
- }
68
- return contextBytes.forkDigestContext.forkName2ForkDigest(contextBytes.forkDigestContext.getForkName(chunk.contextBytes.forkSlot));
69
- }
70
- }
71
- }
72
- function getForkNameFromContextBytes(contextBytes, chunk) {
73
- switch (contextBytes.type) {
74
- case ContextBytesType.Empty:
75
- return ForkName.phase0;
76
- // Yield a fixed-width 4 byte chunk, set to the `ForkDigest`
77
- case ContextBytesType.ForkDigest:
78
- switch (chunk.type) {
79
- case EncodedPayloadType.ssz:
80
- return contextBytes.forkFromResponse(chunk.data);
81
- case EncodedPayloadType.bytes:
82
- if (chunk.contextBytes.type !== ContextBytesType.ForkDigest) {
83
- throw Error(`Expected context bytes ForkDigest but got ${chunk.contextBytes.type}`);
84
- }
85
- return contextBytes.forkDigestContext.getForkName(chunk.contextBytes.forkSlot);
86
- }
58
+ return contextBytes.forkDigestContext.forkName2ForkDigest(chunk.fork);
87
59
  }
88
60
  }
89
61
  //# sourceMappingURL=responseEncode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"responseEncode.js","sourceRoot":"","sources":["../../src/encoders/responseEncode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"responseEncode.js","sourceRoot":"","sources":["../../src/encoders/responseEncode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,mBAAmB,EAAC,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAC,gBAAgB,EAAiE,MAAM,aAAa,CAAC;AAC7G,OAAO,EAAC,UAAU,EAAyB,MAAM,iBAAiB,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAkB;IAElB,OAAO,KAAK,SAAS,CAAC,CAAC,8BAA8B,CAAC,MAAM;QAC1D,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE;YAChC,WAAW;YACX,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;YAExC,gCAAgC;YAChC,MAAM,YAAY,GAAG,eAAe,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACnE,IAAI,YAAY,EAAE;gBAChB,MAAM,YAAsB,CAAC;aAC9B;YAED,kDAAkD;YAClD,KAAK,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAC3D;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,mBAAmB,CACxC,QAAyC,EACzC,MAA8B,EAC9B,YAAoB;IAEpB,WAAW;IACX,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;IAE5B,+BAA+B;IAC/B,IAAI,YAAY,EAAE;QAChB,KAAK,CAAC,CAAC,kBAAkB,CAAC,YAAY,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;KAC5D;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,YAAiC,EAAE,KAAuB;IACjF,QAAQ,YAAY,CAAC,IAAI,EAAE;QACzB,gBAAgB;QAChB,KAAK,gBAAgB,CAAC,KAAK;YACzB,OAAO,IAAI,CAAC;QAEd,4DAA4D;QAC5D,KAAK,gBAAgB,CAAC,UAAU;YAC9B,OAAO,YAAY,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAW,CAAC;KACnF;AACH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="node" />
2
- import { Encoding, EncodedPayload, TypeSerializer } from "../types.js";
2
+ import { Encoding, TypeSizes } from "../types.js";
3
3
  import { BufferedSource } from "../utils/index.js";
4
4
  /**
5
5
  * Consumes a stream source to read encoded header and payload as defined in the spec:
@@ -7,12 +7,12 @@ import { BufferedSource } from "../utils/index.js";
7
7
  * <encoding-dependent-header> | <encoded-payload>
8
8
  * ```
9
9
  */
10
- export declare function readEncodedPayload<T>(bufferedSource: BufferedSource, encoding: Encoding, type: TypeSerializer<T>): Promise<T>;
10
+ export declare function readEncodedPayload(bufferedSource: BufferedSource, encoding: Encoding, type: TypeSizes): Promise<Uint8Array>;
11
11
  /**
12
12
  * Yields byte chunks for encoded header and payload as defined in the spec:
13
13
  * ```
14
14
  * <encoding-dependent-header> | <encoded-payload>
15
15
  * ```
16
16
  */
17
- export declare function writeEncodedPayload<T>(chunk: EncodedPayload<T>, encoding: Encoding, serializer: TypeSerializer<T>): AsyncGenerator<Buffer>;
17
+ export declare function writeEncodedPayload(chunkData: Uint8Array, encoding: Encoding): AsyncGenerator<Buffer>;
18
18
  //# sourceMappingURL=index.d.ts.map
@@ -25,10 +25,10 @@ export async function readEncodedPayload(bufferedSource, encoding, type) {
25
25
  * <encoding-dependent-header> | <encoded-payload>
26
26
  * ```
27
27
  */
28
- export async function* writeEncodedPayload(chunk, encoding, serializer) {
28
+ export async function* writeEncodedPayload(chunkData, encoding) {
29
29
  switch (encoding) {
30
30
  case Encoding.SSZ_SNAPPY:
31
- yield* writeSszSnappyPayload(chunk, serializer);
31
+ yield* writeSszSnappyPayload(chunkData);
32
32
  break;
33
33
  default:
34
34
  throw Error("Unsupported encoding");
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/encodingStrategies/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAiC,MAAM,aAAa,CAAC;AAErE,OAAO,EAAC,oBAAoB,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAE5D,oFAAoF;AACpF,6GAA6G;AAC7G,iCAAiC;AACjC,eAAe;AAEf;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,cAA8B,EAC9B,QAAkB,EAClB,IAAuB;IAEvB,QAAQ,QAAQ,EAAE;QAChB,KAAK,QAAQ,CAAC,UAAU;YACtB,OAAO,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAEpD;YACE,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACvC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,mBAAmB,CACxC,KAAwB,EACxB,QAAkB,EAClB,UAA6B;IAE7B,QAAQ,QAAQ,EAAE;QAChB,KAAK,QAAQ,CAAC,UAAU;YACtB,KAAK,CAAC,CAAC,qBAAqB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;YAChD,MAAM;QAER;YACE,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACvC;AACH,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/encodingStrategies/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,QAAQ,EAAY,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAC,oBAAoB,EAAC,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAC,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAE5D,oFAAoF;AACpF,6GAA6G;AAC7G,iCAAiC;AACjC,eAAe;AAEf;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,cAA8B,EAC9B,QAAkB,EAClB,IAAe;IAEf,QAAQ,QAAQ,EAAE;QAChB,KAAK,QAAQ,CAAC,UAAU;YACtB,OAAO,oBAAoB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAEpD;YACE,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACvC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,mBAAmB,CAAC,SAAqB,EAAE,QAAkB;IAClF,QAAQ,QAAQ,EAAE;QAChB,KAAK,QAAQ,CAAC,UAAU;YACtB,KAAK,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;YACxC,MAAM;QAER;YACE,MAAM,KAAK,CAAC,sBAAsB,CAAC,CAAC;KACvC;AACH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { BufferedSource } from "../../utils/index.js";
2
- import { TypeSerializer } from "../../types.js";
2
+ import { TypeSizes } from "../../types.js";
3
3
  export declare const MAX_VARINT_BYTES = 10;
4
4
  /**
5
5
  * ssz_snappy encoding strategy reader.
@@ -8,12 +8,12 @@ export declare const MAX_VARINT_BYTES = 10;
8
8
  * <encoding-dependent-header> | <encoded-payload>
9
9
  * ```
10
10
  */
11
- export declare function readSszSnappyPayload<T>(bufferedSource: BufferedSource, type: TypeSerializer<T>): Promise<T>;
11
+ export declare function readSszSnappyPayload(bufferedSource: BufferedSource, type: TypeSizes): Promise<Uint8Array>;
12
12
  /**
13
13
  * Reads `<encoding-dependent-header>` for ssz-snappy.
14
14
  * encoding-header ::= the length of the raw SSZ bytes, encoded as an unsigned protobuf varint
15
15
  */
16
- export declare function readSszSnappyHeader(bufferedSource: BufferedSource, type: Pick<TypeSerializer<unknown>, "minSize" | "maxSize">): Promise<number>;
16
+ export declare function readSszSnappyHeader(bufferedSource: BufferedSource, type: TypeSizes): Promise<number>;
17
17
  /**
18
18
  * Reads `<encoded-payload>` for ssz-snappy and decompress.
19
19
  * The returned bytes can be SSZ deseralized
@@ -13,8 +13,7 @@ export const MAX_VARINT_BYTES = 10;
13
13
  */
14
14
  export async function readSszSnappyPayload(bufferedSource, type) {
15
15
  const sszDataLength = await readSszSnappyHeader(bufferedSource, type);
16
- const bytes = await readSszSnappyBody(bufferedSource, sszDataLength);
17
- return deserializeSszBody(bytes, type);
16
+ return readSszSnappyBody(bufferedSource, sszDataLength);
18
17
  }
19
18
  /**
20
19
  * Reads `<encoding-dependent-header>` for ssz-snappy.
@@ -40,8 +39,8 @@ export async function readSszSnappyHeader(bufferedSource, type) {
40
39
  // MUST validate: the unsigned protobuf varint used for the length-prefix MUST not be longer than 10 bytes
41
40
  // Check for varintBytes > 0 to guard against NaN, or 0 values
42
41
  const varintBytes = varint.decode.bytes;
43
- if (varintBytes > MAX_VARINT_BYTES || !(varintBytes > 0)) {
44
- throw new SszSnappyError({ code: SszSnappyErrorCode.INVALID_VARINT_BYTES_COUNT, bytes: varintBytes });
42
+ if (varintBytes === undefined || varintBytes > MAX_VARINT_BYTES || !(varintBytes > 0)) {
43
+ throw new SszSnappyError({ code: SszSnappyErrorCode.INVALID_VARINT_BYTES_COUNT, bytes: varintBytes !== null && varintBytes !== void 0 ? varintBytes : 0 });
45
44
  }
46
45
  buffer.consume(varintBytes);
47
46
  // MUST validate: the length-prefix is within the expected size bounds derived from the payload SSZ type.
@@ -100,16 +99,4 @@ export async function readSszSnappyBody(bufferedSource, sszDataLength) {
100
99
  // SHOULD consider invalid: An early EOF before fully reading the declared length-prefix worth of SSZ bytes
101
100
  throw new SszSnappyError({ code: SszSnappyErrorCode.SOURCE_ABORTED });
102
101
  }
103
- /**
104
- * Deseralizes SSZ body.
105
- * `isSszTree` option allows the SignedBeaconBlock type to be deserialized as a tree
106
- */
107
- function deserializeSszBody(bytes, type) {
108
- try {
109
- return type.deserialize(bytes);
110
- }
111
- catch (e) {
112
- throw new SszSnappyError({ code: SszSnappyErrorCode.DESERIALIZE_ERROR, deserializeError: e });
113
- }
114
- }
115
102
  //# sourceMappingURL=decode.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"decode.js","sourceRoot":"","sources":["../../../src/encodingStrategies/sszSnappy/decode.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"decode.js","sourceRoot":"","sources":["../../../src/encodingStrategies/sszSnappy/decode.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,4 @@
1
1
  /// <reference types="node" />
2
- import { EncodedPayload, TypeSerializer } from "../../types.js";
3
2
  /**
4
3
  * ssz_snappy encoding strategy writer.
5
4
  * Yields byte chunks for encoded header and payload as defined in the spec:
@@ -7,7 +6,7 @@ import { EncodedPayload, TypeSerializer } from "../../types.js";
7
6
  * <encoding-dependent-header> | <encoded-payload>
8
7
  * ```
9
8
  */
10
- export declare function writeSszSnappyPayload<T>(body: EncodedPayload<T>, type: TypeSerializer<T>): AsyncGenerator<Buffer>;
9
+ export declare function writeSszSnappyPayload(bodyData: Uint8Array): AsyncGenerator<Buffer>;
11
10
  /**
12
11
  * Buffered Snappy writer
13
12
  */
@@ -1,8 +1,6 @@
1
1
  import varint from "varint";
2
2
  import { source } from "stream-to-it";
3
3
  import snappy from "@chainsafe/snappy-stream";
4
- import { EncodedPayloadType } from "../../types.js";
5
- import { SszSnappyError, SszSnappyErrorCode } from "./errors.js";
6
4
  /**
7
5
  * ssz_snappy encoding strategy writer.
8
6
  * Yields byte chunks for encoded header and payload as defined in the spec:
@@ -10,9 +8,8 @@ import { SszSnappyError, SszSnappyErrorCode } from "./errors.js";
10
8
  * <encoding-dependent-header> | <encoded-payload>
11
9
  * ```
12
10
  */
13
- export async function* writeSszSnappyPayload(body, type) {
14
- const serializedBody = serializeSszBody(body, type);
15
- yield* encodeSszSnappy(serializedBody);
11
+ export async function* writeSszSnappyPayload(bodyData) {
12
+ yield* encodeSszSnappy(bodyData);
16
13
  }
17
14
  /**
18
15
  * Buffered Snappy writer
@@ -35,22 +32,4 @@ export async function* encodeSszSnappy(bytes) {
35
32
  stream.end();
36
33
  yield* source(stream);
37
34
  }
38
- /**
39
- * Returns SSZ serialized body. Wrapps errors with SszSnappyError.SERIALIZE_ERROR
40
- */
41
- function serializeSszBody(chunk, type) {
42
- switch (chunk.type) {
43
- case EncodedPayloadType.bytes:
44
- return chunk.bytes;
45
- case EncodedPayloadType.ssz: {
46
- try {
47
- const bytes = type.serialize(chunk.data);
48
- return Buffer.from(bytes.buffer, bytes.byteOffset, bytes.length);
49
- }
50
- catch (e) {
51
- throw new SszSnappyError({ code: SszSnappyErrorCode.SERIALIZE_ERROR, serializeError: e });
52
- }
53
- }
54
- }
55
- }
56
35
  //# sourceMappingURL=encode.js.map