@lodestar/api 1.47.0-dev.9c75ac2a0f → 1.47.0-dev.9f5d083b06
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/lib/beacon/routes/debug.d.ts +3 -3
- package/lib/beacon/routes/debug.js +3 -3
- package/lib/beacon/routes/debug.js.map +1 -1
- package/lib/beacon/server/events.d.ts.map +1 -1
- package/lib/beacon/server/events.js +10 -2
- package/lib/beacon/server/events.js.map +1 -1
- package/package.json +8 -8
- package/src/beacon/routes/debug.ts +3 -3
- package/src/beacon/server/events.ts +10 -3
|
@@ -21,7 +21,7 @@ declare const ForkChoiceResponseType: ContainerType<{
|
|
|
21
21
|
parentRoot: StringType<string>;
|
|
22
22
|
justifiedEpoch: import("@chainsafe/ssz").UintNumberType;
|
|
23
23
|
finalizedEpoch: import("@chainsafe/ssz").UintNumberType;
|
|
24
|
-
weight: import("@chainsafe/ssz").
|
|
24
|
+
weight: import("@chainsafe/ssz").UintBigintType;
|
|
25
25
|
validity: StringType<"invalid" | "optimistic" | "valid">;
|
|
26
26
|
executionBlockHash: StringType<string>;
|
|
27
27
|
}>>, unknown, unknown>;
|
|
@@ -40,7 +40,7 @@ declare const ForkChoiceResponseV2Type: ContainerType<{
|
|
|
40
40
|
slot: import("@chainsafe/ssz").UintNumberType;
|
|
41
41
|
blockRoot: StringType<string>;
|
|
42
42
|
parentRoot: StringType<string>;
|
|
43
|
-
weight: import("@chainsafe/ssz").
|
|
43
|
+
weight: import("@chainsafe/ssz").UintBigintType;
|
|
44
44
|
validity: StringType<"invalid" | "optimistic" | "valid">;
|
|
45
45
|
executionBlockHash: StringType<string>;
|
|
46
46
|
extraData: ContainerType<{
|
|
@@ -90,7 +90,7 @@ declare const ProtoNodeListType: import("@chainsafe/ssz").ArrayType<Type<import(
|
|
|
90
90
|
unrealizedFinalizedEpoch: import("@chainsafe/ssz").UintNumberType;
|
|
91
91
|
unrealizedFinalizedRoot: StringType<string>;
|
|
92
92
|
parent: StringType<string>;
|
|
93
|
-
weight: import("@chainsafe/ssz").
|
|
93
|
+
weight: import("@chainsafe/ssz").UintBigintType;
|
|
94
94
|
bestChild: StringType<string>;
|
|
95
95
|
bestDescendant: StringType<string>;
|
|
96
96
|
}>>, unknown, unknown>;
|
|
@@ -25,7 +25,7 @@ const ProtoNodeType = new ContainerType({
|
|
|
25
25
|
unrealizedFinalizedEpoch: ssz.Epoch,
|
|
26
26
|
unrealizedFinalizedRoot: stringType,
|
|
27
27
|
parent: stringType,
|
|
28
|
-
weight: ssz.
|
|
28
|
+
weight: ssz.Gwei,
|
|
29
29
|
bestChild: stringType,
|
|
30
30
|
bestDescendant: stringType,
|
|
31
31
|
}, { jsonCase: "eth2" });
|
|
@@ -40,7 +40,7 @@ const ForkChoiceNodeType = new ContainerType({
|
|
|
40
40
|
parentRoot: stringType,
|
|
41
41
|
justifiedEpoch: ssz.Epoch,
|
|
42
42
|
finalizedEpoch: ssz.Epoch,
|
|
43
|
-
weight: ssz.
|
|
43
|
+
weight: ssz.Gwei,
|
|
44
44
|
validity: new StringType(),
|
|
45
45
|
executionBlockHash: stringType,
|
|
46
46
|
}, { jsonCase: "eth2" });
|
|
@@ -67,7 +67,7 @@ const ForkChoiceNodeV2Type = new ContainerType({
|
|
|
67
67
|
slot: ssz.Slot,
|
|
68
68
|
blockRoot: stringType,
|
|
69
69
|
parentRoot: stringType,
|
|
70
|
-
weight: ssz.
|
|
70
|
+
weight: ssz.Gwei,
|
|
71
71
|
validity: new StringType(),
|
|
72
72
|
executionBlockHash: stringType,
|
|
73
73
|
extraData: ForkChoiceNodeV2ExtraDataType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/beacon/routes/debug.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAE,YAAY,EAAgB,MAAM,gBAAgB,CAAC;AAE1E,OAAO,EAAC,cAAc,EAAC,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAC,OAAO,EAAmC,UAAU,EAAE,GAAG,EAAE,WAAW,EAAC,MAAM,iBAAiB,CAAC;AACvG,OAAO,EAGL,cAAc,EAEd,iBAAiB,EACjB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,2CAA2C,GAE5C,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAC,MAAM,EAAC,MAAM,uBAAuB,CAAC;AAE7C,OAAO,EAAC,UAAU,EAAC,MAAM,2BAA2B,CAAC;AAIrD,MAAM,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;AACpC,MAAM,aAAa,GAAG,IAAI,aAAa,CACrC;IACE,yBAAyB,EAAE,UAAU;IACrC,sBAAsB,EAAE,GAAG,CAAC,SAAS;IACrC,eAAe,EAAE,UAAU;IAC3B,IAAI,EAAE,GAAG,CAAC,IAAI;IACd,SAAS,EAAE,UAAU;IACrB,UAAU,EAAE,UAAU;IACtB,SAAS,EAAE,UAAU;IACrB,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE,GAAG,CAAC,OAAO;IACvB,cAAc,EAAE,GAAG,CAAC,KAAK;IACzB,aAAa,EAAE,UAAU;IACzB,cAAc,EAAE,GAAG,CAAC,KAAK;IACzB,aAAa,EAAE,UAAU;IACzB,wBAAwB,EAAE,GAAG,CAAC,KAAK;IACnC,uBAAuB,EAAE,UAAU;IACnC,wBAAwB,EAAE,GAAG,CAAC,KAAK;IACnC,uBAAuB,EAAE,UAAU;IACnC,MAAM,EAAE,UAAU;IAClB,MAAM,EAAE,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/beacon/routes/debug.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/beacon/server/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAW,kBAAkB,EAAE,aAAa,EAAsB,MAAM,6BAA6B,CAAC;AAC7G,OAAO,EAAC,SAAS,EAA6C,MAAM,qBAAqB,CAAC;AAE1F,wBAAgB,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/beacon/server/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAW,kBAAkB,EAAE,aAAa,EAAsB,MAAM,6BAA6B,CAAC;AAC7G,OAAO,EAAC,SAAS,EAA6C,MAAM,qBAAqB,CAAC;AAE1F,wBAAgB,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC,SAAS,CAAC,CAuEnH;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,CAAA;CAAC,GAAG,MAAM,CAE/E"}
|
|
@@ -36,11 +36,15 @@ export function getRoutes(config, methods) {
|
|
|
36
36
|
topics: req.query.topics,
|
|
37
37
|
signal: controller.signal,
|
|
38
38
|
onEvent: (event) => {
|
|
39
|
+
// Serialization is per event and must not tear down the stream. Throwing here is
|
|
40
|
+
// handled by the caller which logs it and keeps the subscription alive, the client
|
|
41
|
+
// only misses this single event instead of silently losing the whole stream.
|
|
42
|
+
const data = eventSerdes.toJson(event);
|
|
39
43
|
try {
|
|
40
|
-
const data = eventSerdes.toJson(event);
|
|
41
44
|
res.raw.write(serializeSSEEvent({ event: event.type, data }));
|
|
42
45
|
}
|
|
43
46
|
catch (e) {
|
|
47
|
+
// The connection itself is broken, there is no way to recover it
|
|
44
48
|
reject(e);
|
|
45
49
|
}
|
|
46
50
|
},
|
|
@@ -51,10 +55,14 @@ export function getRoutes(config, methods) {
|
|
|
51
55
|
req.socket.once("close", () => resolve());
|
|
52
56
|
req.socket.once("end", () => resolve());
|
|
53
57
|
});
|
|
54
|
-
// api.eventstream will never stop, so no need to ever call `res.raw.end();`
|
|
55
58
|
}
|
|
56
59
|
finally {
|
|
57
60
|
controller.abort();
|
|
61
|
+
// Always end the response. If an error is thrown after the headers were sent, fastify can
|
|
62
|
+
// no longer write a status code and would leave the socket open, the client then waits
|
|
63
|
+
// forever on a stream that will never emit another event.
|
|
64
|
+
if (!res.raw.writableEnded && !res.raw.destroyed)
|
|
65
|
+
res.raw.end();
|
|
58
66
|
}
|
|
59
67
|
},
|
|
60
68
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/beacon/server/events.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,QAAQ,EAAqC,mBAAmB,EAAC,MAAM,6BAA6B,CAAC;AAC7G,OAAO,EAAY,UAAU,EAAE,cAAc,EAAE,cAAc,EAAC,MAAM,qBAAqB,CAAC;AAE1F,MAAM,UAAU,SAAS,CAAC,MAAuB,EAAE,OAAsC;IACvF,MAAM,WAAW,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,mBAAmB,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC;IAE1E,OAAO;QACL,2CAA2C;QAC3C,WAAW,EAAE;YACX,GAAG,YAAY,CAAC,WAAW;YAC3B,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;gBAC1B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC;gBACvD,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;oBACrC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC5B,MAAM,IAAI,QAAQ,CAAC,GAAG,EAAE,kBAAkB,KAAK,EAAE,CAAC,CAAC;oBACrD,CAAC;gBACH,CAAC;gBAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;gBAEzC,IAAI,CAAC;oBACH,yFAAyF;oBACzF,oHAAoH;oBACpH,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC;wBAC5D,IAAI,KAAK,KAAK,SAAS;4BAAE,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;oBACzD,CAAC;oBAED,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,mBAAmB,CAAC,CAAC;oBACvD,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,uBAAuB,CAAC,CAAC;oBAC5D,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;oBAC9C,wIAAwI;oBACxI,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;oBACzC,wGAAwG;oBACxG,oGAAoG;oBACpG,oGAAoG;oBACpG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;oBAE7C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAC1C,KAAK,OAAO,CAAC,WAAW,CAAC;4BACvB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;4BACxB,MAAM,EAAE,UAAU,CAAC,MAAM;4BACzB,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gCACjB,
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../src/beacon/server/events.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"bugs": {
|
|
12
12
|
"url": "https://github.com/ChainSafe/lodestar/issues"
|
|
13
13
|
},
|
|
14
|
-
"version": "1.47.0-dev.
|
|
14
|
+
"version": "1.47.0-dev.9f5d083b06",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -74,12 +74,12 @@
|
|
|
74
74
|
"check-readme": "pnpm exec tsx ../../scripts/check_readme.ts"
|
|
75
75
|
},
|
|
76
76
|
"dependencies": {
|
|
77
|
-
"@chainsafe/persistent-merkle-tree": "^1.3.
|
|
78
|
-
"@chainsafe/ssz": "^1.6.
|
|
79
|
-
"@lodestar/config": "^1.47.0-dev.
|
|
80
|
-
"@lodestar/params": "^1.47.0-dev.
|
|
81
|
-
"@lodestar/types": "^1.47.0-dev.
|
|
82
|
-
"@lodestar/utils": "^1.47.0-dev.
|
|
77
|
+
"@chainsafe/persistent-merkle-tree": "^1.3.1",
|
|
78
|
+
"@chainsafe/ssz": "^1.6.3",
|
|
79
|
+
"@lodestar/config": "^1.47.0-dev.9f5d083b06",
|
|
80
|
+
"@lodestar/params": "^1.47.0-dev.9f5d083b06",
|
|
81
|
+
"@lodestar/types": "^1.47.0-dev.9f5d083b06",
|
|
82
|
+
"@lodestar/utils": "^1.47.0-dev.9f5d083b06",
|
|
83
83
|
"eventsource": "^2.0.2",
|
|
84
84
|
"qs": "^6.14.2"
|
|
85
85
|
},
|
|
@@ -96,5 +96,5 @@
|
|
|
96
96
|
"api",
|
|
97
97
|
"blockchain"
|
|
98
98
|
],
|
|
99
|
-
"gitHead": "
|
|
99
|
+
"gitHead": "d75a056575862d49e32bbd3b6e2366042ea3ea3d"
|
|
100
100
|
}
|
|
@@ -41,7 +41,7 @@ const ProtoNodeType = new ContainerType(
|
|
|
41
41
|
unrealizedFinalizedEpoch: ssz.Epoch,
|
|
42
42
|
unrealizedFinalizedRoot: stringType,
|
|
43
43
|
parent: stringType,
|
|
44
|
-
weight: ssz.
|
|
44
|
+
weight: ssz.Gwei,
|
|
45
45
|
bestChild: stringType,
|
|
46
46
|
bestDescendant: stringType,
|
|
47
47
|
},
|
|
@@ -63,7 +63,7 @@ const ForkChoiceNodeType = new ContainerType(
|
|
|
63
63
|
parentRoot: stringType,
|
|
64
64
|
justifiedEpoch: ssz.Epoch,
|
|
65
65
|
finalizedEpoch: ssz.Epoch,
|
|
66
|
-
weight: ssz.
|
|
66
|
+
weight: ssz.Gwei,
|
|
67
67
|
validity: new StringType<"valid" | "invalid" | "optimistic">(),
|
|
68
68
|
executionBlockHash: stringType,
|
|
69
69
|
},
|
|
@@ -100,7 +100,7 @@ const ForkChoiceNodeV2Type = new ContainerType(
|
|
|
100
100
|
slot: ssz.Slot,
|
|
101
101
|
blockRoot: stringType,
|
|
102
102
|
parentRoot: stringType,
|
|
103
|
-
weight: ssz.
|
|
103
|
+
weight: ssz.Gwei,
|
|
104
104
|
validity: new StringType<"valid" | "invalid" | "optimistic">(),
|
|
105
105
|
executionBlockHash: stringType,
|
|
106
106
|
extraData: ForkChoiceNodeV2ExtraDataType,
|
|
@@ -42,10 +42,15 @@ export function getRoutes(config: ChainForkConfig, methods: ApplicationMethods<E
|
|
|
42
42
|
topics: req.query.topics,
|
|
43
43
|
signal: controller.signal,
|
|
44
44
|
onEvent: (event) => {
|
|
45
|
+
// Serialization is per event and must not tear down the stream. Throwing here is
|
|
46
|
+
// handled by the caller which logs it and keeps the subscription alive, the client
|
|
47
|
+
// only misses this single event instead of silently losing the whole stream.
|
|
48
|
+
const data = eventSerdes.toJson(event);
|
|
49
|
+
|
|
45
50
|
try {
|
|
46
|
-
const data = eventSerdes.toJson(event);
|
|
47
51
|
res.raw.write(serializeSSEEvent({event: event.type, data}));
|
|
48
52
|
} catch (e) {
|
|
53
|
+
// The connection itself is broken, there is no way to recover it
|
|
49
54
|
reject(e);
|
|
50
55
|
}
|
|
51
56
|
},
|
|
@@ -58,10 +63,12 @@ export function getRoutes(config: ChainForkConfig, methods: ApplicationMethods<E
|
|
|
58
63
|
req.socket.once("close", () => resolve());
|
|
59
64
|
req.socket.once("end", () => resolve());
|
|
60
65
|
});
|
|
61
|
-
|
|
62
|
-
// api.eventstream will never stop, so no need to ever call `res.raw.end();`
|
|
63
66
|
} finally {
|
|
64
67
|
controller.abort();
|
|
68
|
+
// Always end the response. If an error is thrown after the headers were sent, fastify can
|
|
69
|
+
// no longer write a status code and would leave the socket open, the client then waits
|
|
70
|
+
// forever on a stream that will never emit another event.
|
|
71
|
+
if (!res.raw.writableEnded && !res.raw.destroyed) res.raw.end();
|
|
65
72
|
}
|
|
66
73
|
},
|
|
67
74
|
},
|