@typeberry/lib 0.5.2 → 0.5.3-5a6cfcc

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 (179) hide show
  1. package/package.json +9 -5
  2. package/packages/core/collections/blob-dictionary.d.ts.map +1 -1
  3. package/packages/core/collections/blob-dictionary.js +3 -3
  4. package/packages/core/crypto/bandersnatch.d.ts +2 -1
  5. package/packages/core/crypto/bandersnatch.d.ts.map +1 -1
  6. package/packages/core/crypto/bandersnatch.js +9 -2
  7. package/packages/core/crypto/key-derivation.test.js +8 -7
  8. package/packages/core/hash/hash.d.ts.map +1 -1
  9. package/packages/core/hash/hash.js +1 -0
  10. package/packages/core/networking/certificate.d.ts.map +1 -1
  11. package/packages/core/networking/certificate.js +1 -0
  12. package/packages/core/networking/package.json +1 -1
  13. package/packages/core/networking/setup.d.ts.map +1 -1
  14. package/packages/core/networking/setup.js +16 -12
  15. package/packages/core/numbers/index.d.ts +4 -0
  16. package/packages/core/numbers/index.d.ts.map +1 -1
  17. package/packages/core/numbers/index.js +4 -4
  18. package/packages/core/pvm-host-calls/bin.js +6 -6
  19. package/packages/core/pvm-host-calls/ecalli-io-tracker.d.ts +32 -0
  20. package/packages/core/pvm-host-calls/ecalli-io-tracker.d.ts.map +1 -0
  21. package/packages/core/pvm-host-calls/ecalli-io-tracker.js +14 -0
  22. package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts +139 -0
  23. package/packages/core/pvm-host-calls/ecalli-trace-logger.d.ts.map +1 -0
  24. package/packages/core/pvm-host-calls/ecalli-trace-logger.js +209 -0
  25. package/packages/core/pvm-host-calls/ecalli-trace-logger.test.d.ts +2 -0
  26. package/packages/core/pvm-host-calls/ecalli-trace-logger.test.d.ts.map +1 -0
  27. package/packages/core/pvm-host-calls/ecalli-trace-logger.test.js +231 -0
  28. package/packages/core/pvm-host-calls/host-call-memory.d.ts +2 -0
  29. package/packages/core/pvm-host-calls/host-call-memory.d.ts.map +1 -1
  30. package/packages/core/pvm-host-calls/host-call-memory.js +12 -2
  31. package/packages/core/pvm-host-calls/host-call-registers.d.ts +6 -0
  32. package/packages/core/pvm-host-calls/host-call-registers.d.ts.map +1 -1
  33. package/packages/core/pvm-host-calls/host-call-registers.js +24 -0
  34. package/packages/core/pvm-host-calls/host-calls-executor.d.ts +37 -0
  35. package/packages/core/pvm-host-calls/host-calls-executor.d.ts.map +1 -0
  36. package/packages/core/pvm-host-calls/host-calls-executor.js +129 -0
  37. package/packages/core/pvm-host-calls/host-calls.d.ts +20 -26
  38. package/packages/core/pvm-host-calls/host-calls.d.ts.map +1 -1
  39. package/packages/core/pvm-host-calls/host-calls.js +40 -112
  40. package/packages/core/pvm-host-calls/index.d.ts +7 -6
  41. package/packages/core/pvm-host-calls/index.d.ts.map +1 -1
  42. package/packages/core/pvm-host-calls/index.js +7 -6
  43. package/packages/core/pvm-host-calls/{interpreter-instance-manager.d.ts → pvm-instance-manager.d.ts} +3 -3
  44. package/packages/core/pvm-host-calls/pvm-instance-manager.d.ts.map +1 -0
  45. package/packages/core/pvm-host-calls/{interpreter-instance-manager.js → pvm-instance-manager.js} +2 -2
  46. package/packages/core/pvm-interpreter/ops/math-consts.d.ts +2 -3
  47. package/packages/core/pvm-interpreter/ops/math-consts.d.ts.map +1 -1
  48. package/packages/core/pvm-interpreter/ops/math-consts.js +2 -3
  49. package/packages/core/pvm-interpreter/ops/math-ops.js +3 -3
  50. package/packages/core/pvm-interpreter/ops/math-utils.js +13 -13
  51. package/packages/core/pvm-interpreter/ops/math-utils.test.js +17 -16
  52. package/packages/core/telemetry/package.json +1 -1
  53. package/packages/extensions/ipc/jamnp/handler.d.ts +5 -4
  54. package/packages/extensions/ipc/jamnp/handler.d.ts.map +1 -1
  55. package/packages/extensions/ipc/jamnp/handler.js +59 -34
  56. package/packages/extensions/ipc/jamnp/stream.d.ts +6 -4
  57. package/packages/extensions/ipc/jamnp/stream.d.ts.map +1 -1
  58. package/packages/jam/block/work-item.d.ts +13 -4
  59. package/packages/jam/block/work-item.d.ts.map +1 -1
  60. package/packages/jam/block/work-result.d.ts +3 -5
  61. package/packages/jam/block/work-result.d.ts.map +1 -1
  62. package/packages/jam/block/work-result.js +6 -0
  63. package/packages/jam/block-json/work-result.d.ts.map +1 -1
  64. package/packages/jam/block-json/work-result.js +6 -6
  65. package/packages/jam/database-lmdb/states.test.js +4 -3
  66. package/packages/jam/executor/index.d.ts +4 -0
  67. package/packages/jam/executor/index.d.ts.map +1 -0
  68. package/packages/jam/executor/index.js +2 -0
  69. package/packages/jam/{transition/accumulate → executor}/pvm-executor.d.ts +19 -16
  70. package/packages/jam/executor/pvm-executor.d.ts.map +1 -0
  71. package/packages/jam/{transition/accumulate → executor}/pvm-executor.js +48 -5
  72. package/packages/jam/in-core/externalities/refine.d.ts +24 -0
  73. package/packages/jam/in-core/externalities/refine.d.ts.map +1 -0
  74. package/packages/jam/in-core/externalities/refine.js +36 -0
  75. package/packages/jam/in-core/in-core.d.ts +60 -0
  76. package/packages/jam/in-core/in-core.d.ts.map +1 -0
  77. package/packages/jam/in-core/in-core.js +294 -0
  78. package/packages/jam/in-core/in-core.test.d.ts +2 -0
  79. package/packages/jam/in-core/in-core.test.d.ts.map +1 -0
  80. package/packages/jam/in-core/in-core.test.js +81 -0
  81. package/packages/jam/in-core/index.d.ts +2 -0
  82. package/packages/jam/in-core/index.d.ts.map +1 -0
  83. package/packages/jam/in-core/index.js +1 -0
  84. package/packages/jam/jam-host-calls/accumulate/bless.test.js +4 -5
  85. package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
  86. package/packages/jam/jamnp-s/peers.js +10 -0
  87. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +1 -1
  88. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
  89. package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +10 -8
  90. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
  91. package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +11 -9
  92. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +3 -3
  93. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
  94. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +2 -2
  95. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +5 -5
  96. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
  97. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +2 -2
  98. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
  99. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +8 -6
  100. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +3 -3
  101. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
  102. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +2 -2
  103. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
  104. package/packages/jam/jamnp-s/protocol/stream.d.ts +13 -7
  105. package/packages/jam/jamnp-s/protocol/stream.d.ts.map +1 -1
  106. package/packages/jam/jamnp-s/protocol/stream.js +5 -4
  107. package/packages/jam/jamnp-s/protocol/test-utils.d.ts +1 -1
  108. package/packages/jam/jamnp-s/protocol/test-utils.d.ts.map +1 -1
  109. package/packages/jam/jamnp-s/protocol/test-utils.js +9 -12
  110. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +1 -1
  111. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
  112. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +1 -1
  113. package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
  114. package/packages/jam/jamnp-s/stream-manager.js +7 -5
  115. package/packages/jam/jamnp-s/stream-manager.test.js +8 -5
  116. package/packages/jam/jamnp-s/tasks/sync.js +1 -1
  117. package/packages/jam/node/jam-config.d.ts +4 -1
  118. package/packages/jam/node/jam-config.d.ts.map +1 -1
  119. package/packages/jam/node/jam-config.js +6 -2
  120. package/packages/jam/node/main-importer.d.ts.map +1 -1
  121. package/packages/jam/node/main-importer.js +3 -1
  122. package/packages/jam/node/main.d.ts.map +1 -1
  123. package/packages/jam/node/main.js +5 -4
  124. package/packages/jam/node/package.json +1 -1
  125. package/packages/jam/rpc-validation/types.d.ts +7 -3
  126. package/packages/jam/rpc-validation/types.d.ts.map +1 -1
  127. package/packages/jam/rpc-validation/validation.d.ts +254 -36
  128. package/packages/jam/rpc-validation/validation.d.ts.map +1 -1
  129. package/packages/jam/rpc-validation/validation.js +20 -2
  130. package/packages/jam/safrole/bandersnatch-vrf.d.ts +2 -0
  131. package/packages/jam/safrole/bandersnatch-vrf.d.ts.map +1 -1
  132. package/packages/jam/safrole/bandersnatch-vrf.js +11 -0
  133. package/packages/jam/safrole/bandersnatch-vrf.test.js +3 -3
  134. package/packages/jam/safrole/bandersnatch-wasm.d.ts +1 -0
  135. package/packages/jam/safrole/bandersnatch-wasm.d.ts.map +1 -1
  136. package/packages/jam/safrole/bandersnatch-wasm.js +8 -5
  137. package/packages/jam/safrole/safrole-seal.d.ts +1 -3
  138. package/packages/jam/safrole/safrole-seal.d.ts.map +1 -1
  139. package/packages/jam/safrole/safrole-seal.js +14 -25
  140. package/packages/jam/safrole/safrole-seal.test.js +4 -10
  141. package/packages/jam/state/in-memory-state.d.ts.map +1 -1
  142. package/packages/jam/state/in-memory-state.js +2 -3
  143. package/packages/jam/state/test.utils.d.ts.map +1 -1
  144. package/packages/jam/state/test.utils.js +2 -3
  145. package/packages/jam/transition/accumulate/accumulate-data.d.ts.map +1 -1
  146. package/packages/jam/transition/accumulate/accumulate-data.js +1 -2
  147. package/packages/jam/transition/accumulate/accumulate-queue.test.js +2 -2
  148. package/packages/jam/transition/accumulate/accumulate-utils.test.js +2 -2
  149. package/packages/jam/transition/accumulate/accumulate.d.ts.map +1 -1
  150. package/packages/jam/transition/accumulate/accumulate.js +8 -13
  151. package/packages/jam/transition/accumulate/accumulate.test.js +2 -2
  152. package/packages/jam/transition/accumulate/accumulation-result-merge-utils.d.ts.map +1 -1
  153. package/packages/jam/transition/accumulate/accumulation-result-merge-utils.js +1 -2
  154. package/packages/jam/transition/accumulate/accumulation-result-merge-utils.test.js +1 -2
  155. package/packages/jam/transition/accumulate/deferred-transfers.d.ts +1 -1
  156. package/packages/jam/transition/accumulate/deferred-transfers.d.ts.map +1 -1
  157. package/packages/jam/transition/accumulate/deferred-transfers.js +6 -7
  158. package/packages/jam/transition/disputes/disputes.d.ts.map +1 -1
  159. package/packages/jam/transition/disputes/disputes.js +5 -4
  160. package/packages/jam/transition/disputes/disputes.test.data2.js +2 -2
  161. package/packages/jam/transition/externalities/fetch-externalities.d.ts +7 -1
  162. package/packages/jam/transition/externalities/fetch-externalities.d.ts.map +1 -1
  163. package/packages/jam/transition/externalities/fetch-externalities.js +4 -0
  164. package/packages/jam/transition/externalities/fetch-externalities.test.js +2 -2
  165. package/packages/jam/transition/hasher.test.js +2 -2
  166. package/packages/jam/transition/reports/test.utils.d.ts.map +1 -1
  167. package/packages/jam/transition/reports/test.utils.js +2 -2
  168. package/packages/workers/block-authorship/main.d.ts.map +1 -1
  169. package/packages/workers/block-authorship/main.js +23 -4
  170. package/packages/workers/block-authorship/package.json +1 -1
  171. package/packages/workers/block-authorship/protocol.d.ts +3 -1
  172. package/packages/workers/block-authorship/protocol.d.ts.map +1 -1
  173. package/packages/workers/block-authorship/protocol.js +6 -3
  174. package/packages/workers/importer/package.json +1 -1
  175. package/packages/core/pvm-host-calls/host-calls-manager.d.ts +0 -23
  176. package/packages/core/pvm-host-calls/host-calls-manager.d.ts.map +0 -1
  177. package/packages/core/pvm-host-calls/host-calls-manager.js +0 -44
  178. package/packages/core/pvm-host-calls/interpreter-instance-manager.d.ts.map +0 -1
  179. package/packages/jam/transition/accumulate/pvm-executor.d.ts.map +0 -1
@@ -82,37 +82,39 @@ export class Handler {
82
82
  }
83
83
  }
84
84
  onStreamMessage(sender, message) {
85
+ const { streamId } = sender;
85
86
  if (this.isServer) {
86
- logger.info `[${sender.streamId}][server]: Received request.`;
87
+ logger.info `[${streamId}][server]: Received request.`;
87
88
  if (this.getBoundaryNodes === undefined || this.getKeyValuePairs === undefined) {
88
89
  return;
89
90
  }
90
91
  const request = Decoder.decodeObject(StateRequest.Codec, message);
91
92
  const boundaryNodes = this.getBoundaryNodes(request.headerHash, request.startKey, request.endKey);
92
93
  const keyValuePairs = this.getKeyValuePairs(request.headerHash, request.startKey, request.endKey);
93
- logger.info `[${sender.streamId}][server]: <-- responding with boundary nodes and key value pairs.`;
94
+ logger.info `[${streamId}][server]: <-- responding with boundary nodes and key value pairs.`;
94
95
  sender.bufferAndSend(Encoder.encodeObject(codec.sequenceVarLen(trieNodeCodec), boundaryNodes));
95
96
  sender.bufferAndSend(Encoder.encodeObject(StateResponse.Codec, StateResponse.create({ keyValuePairs })));
96
97
  sender.close();
97
98
  return;
98
99
  }
99
- if (!this.boundaryNodes.has(sender.streamId)) {
100
- this.boundaryNodes.set(sender.streamId, Decoder.decodeObject(codec.sequenceVarLen(trieNodeCodec), message));
101
- logger.info `[${sender.streamId}][client]: Received boundary nodes.`;
100
+ if (!this.boundaryNodes.has(streamId)) {
101
+ this.boundaryNodes.set(streamId, Decoder.decodeObject(codec.sequenceVarLen(trieNodeCodec), message));
102
+ logger.info `[${streamId}][client]: Received boundary nodes.`;
102
103
  return;
103
104
  }
104
- this.onResponse.get(sender.streamId)?.(Decoder.decodeObject(StateResponse.Codec, message));
105
- logger.info `[${sender.streamId}][client]: Received state values.`;
105
+ this.onResponse.get(streamId)?.(Decoder.decodeObject(StateResponse.Codec, message));
106
+ logger.info `[${streamId}][client]: Received state values.`;
106
107
  }
107
108
  onClose(streamId) {
108
109
  this.boundaryNodes.delete(streamId);
109
110
  this.onResponse.delete(streamId);
110
111
  }
111
112
  getStateByKey(sender, headerHash, startKey, onResponse) {
112
- if (this.onResponse.has(sender.streamId)) {
113
+ const { streamId } = sender;
114
+ if (this.onResponse.has(streamId)) {
113
115
  throw new Error("It is disallowed to use the same stream for multiple requests.");
114
116
  }
115
- this.onResponse.set(sender.streamId, onResponse);
117
+ this.onResponse.set(streamId, onResponse);
116
118
  sender.bufferAndSend(Encoder.encodeObject(StateRequest.Codec, StateRequest.create({ headerHash, startKey, endKey: startKey, maximumSize: tryAsU32(4096) })));
117
119
  sender.close();
118
120
  }
@@ -3,7 +3,7 @@ import { SignedTicket } from "#@typeberry/block/tickets.js";
3
3
  import type { BytesBlob } from "#@typeberry/bytes";
4
4
  import { type CodecRecord } from "#@typeberry/codec";
5
5
  import { WithDebug } from "#@typeberry/utils";
6
- import { type StreamHandler, type StreamMessageSender } from "./stream.js";
6
+ import { type StreamHandler, type StreamId, type StreamMessageSender } from "./stream.js";
7
7
  /**
8
8
  * JAM-SNP CE-131 and CE-132 streams.
9
9
  *
@@ -32,13 +32,13 @@ export declare class ServerHandler<T extends STREAM_KIND> implements StreamHandl
32
32
  private readonly onTicketReceived;
33
33
  constructor(kind: T, onTicketReceived: (epochIndex: Epoch, ticket: SignedTicket) => void);
34
34
  onStreamMessage(sender: StreamMessageSender, message: BytesBlob): void;
35
- onClose(): void;
35
+ onClose(_streamId: StreamId): void;
36
36
  }
37
37
  export declare class ClientHandler<T extends STREAM_KIND> implements StreamHandler<T> {
38
38
  readonly kind: T;
39
39
  constructor(kind: T);
40
40
  onStreamMessage(sender: StreamMessageSender): void;
41
- onClose(): void;
41
+ onClose(_streamId: StreamId): void;
42
42
  sendTicket(sender: StreamMessageSender, epochIndex: Epoch, ticket: SignedTicket): void;
43
43
  }
44
44
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ce-131-ce-132-safrole-ticket-distribution.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE5F;;;;;;GAMG;AAEH,eAAO,MAAM,8BAA8B,+DAAuB,CAAC;AACnE,eAAO,MAAM,wBAAwB,+DAAuB,CAAC;AAE7D,KAAK,WAAW,GAAG,OAAO,8BAA8B,GAAG,OAAO,wBAAwB,CAAC;AAE3F,qBAAa,yBAA0B,SAAQ,SAAS;aAWpC,UAAU,EAAE,KAAK;aACjB,MAAM,EAAE,YAAY;IAXtC,MAAM,CAAC,KAAK;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,yBAAyB,CAAC;IAI5E,OAAO;CAMR;AAID,qBAAa,aAAa,CAAC,CAAC,SAAS,WAAW,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;aAEzD,IAAI,EAAE,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBADjB,IAAI,EAAE,CAAC,EACN,gBAAgB,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI;IAGtF,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAOtE,OAAO;CACR;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,WAAW,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;aAC/C,IAAI,EAAE,CAAC;gBAAP,IAAI,EAAE,CAAC;IAEnC,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAKlD,OAAO;IAEP,UAAU,CAAC,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY;CAKhF"}
1
+ {"version":3,"file":"ce-131-ce-132-safrole-ticket-distribution.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AAEH,eAAO,MAAM,8BAA8B,+DAAuB,CAAC;AACnE,eAAO,MAAM,wBAAwB,+DAAuB,CAAC;AAE7D,KAAK,WAAW,GAAG,OAAO,8BAA8B,GAAG,OAAO,wBAAwB,CAAC;AAE3F,qBAAa,yBAA0B,SAAQ,SAAS;aAWpC,UAAU,EAAE,KAAK;aACjB,MAAM,EAAE,YAAY;IAXtC,MAAM,CAAC,KAAK;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,yBAAyB,CAAC;IAI5E,OAAO;CAMR;AAID,qBAAa,aAAa,CAAC,CAAC,SAAS,WAAW,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;aAEzD,IAAI,EAAE,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,gBAAgB;gBADjB,IAAI,EAAE,CAAC,EACN,gBAAgB,EAAE,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI;IAGtF,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAOtE,OAAO,CAAC,SAAS,EAAE,QAAQ;CAC5B;AAED,qBAAa,aAAa,CAAC,CAAC,SAAS,WAAW,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;aAC/C,IAAI,EAAE,CAAC;gBAAP,IAAI,EAAE,CAAC;IAEnC,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAKlD,OAAO,CAAC,SAAS,EAAE,QAAQ;IAE3B,UAAU,CAAC,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY;CAKhF"}
@@ -42,7 +42,7 @@ export class ServerHandler {
42
42
  this.onTicketReceived(ticketDistribution.epochIndex, ticketDistribution.ticket);
43
43
  sender.close();
44
44
  }
45
- onClose() { }
45
+ onClose(_streamId) { }
46
46
  }
47
47
  export class ClientHandler {
48
48
  kind;
@@ -53,7 +53,7 @@ export class ClientHandler {
53
53
  logger.warn `[${sender.streamId}][ce-${this.kind}] Unexpected message received. Closing.`;
54
54
  sender.close();
55
55
  }
56
- onClose() { }
56
+ onClose(_streamId) { }
57
57
  sendTicket(sender, epochIndex, ticket) {
58
58
  const request = TicketDistributionRequest.create({ epochIndex, ticket });
59
59
  sender.bufferAndSend(Encoder.encodeObject(TicketDistributionRequest.Codec, request));
@@ -1,5 +1,5 @@
1
1
  import type { CoreIndex } from "#@typeberry/block";
2
- import { type WorkItemExtrinsics } from "#@typeberry/block/work-item.js";
2
+ import { type WorkPackageExtrinsics } from "#@typeberry/block/work-item.js";
3
3
  import { WorkPackage } from "#@typeberry/block/work-package.js";
4
4
  import type { BytesBlob } from "#@typeberry/bytes";
5
5
  import { type CodecRecord } from "#@typeberry/codec";
@@ -55,15 +55,15 @@ export declare class CoreWorkPackage extends WithDebug {
55
55
  export declare class ServerHandler implements StreamHandler<typeof STREAM_KIND> {
56
56
  private readonly onWorkPackage;
57
57
  kind: 133 & import("@typeberry/numbers").WithBytesRepresentation<1>;
58
- constructor(onWorkPackage: (i: CoreIndex, w: WorkPackage, e: WorkItemExtrinsics) => void);
59
- readonly workPackages: Map<import("@typeberry/numbers").U32, CoreWorkPackage>;
58
+ constructor(onWorkPackage: (i: CoreIndex, w: WorkPackage, e: WorkPackageExtrinsics) => void);
59
+ readonly workPackages: Map<string & import("@typeberry/utils").WithOpaque<"streamId">, CoreWorkPackage>;
60
60
  onStreamMessage(sender: StreamMessageSender, message: BytesBlob): void;
61
61
  onClose(streamId: StreamId): void;
62
62
  }
63
63
  export declare class ClientHandler implements StreamHandler<typeof STREAM_KIND> {
64
64
  kind: 133 & import("@typeberry/numbers").WithBytesRepresentation<1>;
65
65
  onStreamMessage(sender: StreamMessageSender): void;
66
- onClose(): void;
67
- sendWorkPackage(sender: StreamMessageSender, coreIndex: CoreIndex, workPackage: WorkPackage, extrinsic: WorkItemExtrinsics): void;
66
+ onClose(_streamId: StreamId): void;
67
+ sendWorkPackage(sender: StreamMessageSender, coreIndex: CoreIndex, workPackage: WorkPackage, extrinsic: WorkPackageExtrinsics): void;
68
68
  }
69
69
  //# sourceMappingURL=ce-133-work-package-submission.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ce-133-work-package-submission.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-133-work-package-submission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,kBAAkB,EAA2B,MAAM,+BAA+B,CAAC;AACjG,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,qBAAa,eAAgB,SAAQ,SAAS;aAW1B,SAAS,EAAE,SAAS;aACpB,WAAW,EAAE,WAAW;IAX1C,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,eAAe,CAAC;IAItE,OAAO;CAMR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAGzD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,IAAI,gEAAe;gBAEU,aAAa,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,kBAAkB,KAAK,IAAI;IAEzG,SAAgB,YAAY,yDAAwC;IAEpE,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAiBtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAGlC;AAED,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IACrE,IAAI,gEAAe;IAEnB,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAKlD,OAAO,IAAI,IAAI;IAEf,eAAe,CACb,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,kBAAkB;CAUhC"}
1
+ {"version":3,"file":"ce-133-work-package-submission.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-133-work-package-submission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,qBAAqB,EAA2B,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAE7E,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,qBAAa,eAAgB,SAAQ,SAAS;aAW1B,SAAS,EAAE,SAAS;aACpB,WAAW,EAAE,WAAW;IAX1C,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,WAAW,CAAC,eAAe,CAAC;IAItE,OAAO;CAMR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAGzD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAF1C,IAAI,gEAAe;gBAEU,aAAa,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,qBAAqB,KAAK,IAAI;IAE5G,SAAgB,YAAY,mFAAwC;IAEpE,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAiBtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAGlC;AAED,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IACrE,IAAI,gEAAe;IAEnB,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAKlD,OAAO,CAAC,SAAS,EAAE,QAAQ,GAAG,IAAI;IAElC,eAAe,CACb,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,SAAS,EACpB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,qBAAqB;CAUnC"}
@@ -37,7 +37,7 @@ export class ServerHandler {
37
37
  }
38
38
  workPackages = new Map();
39
39
  onStreamMessage(sender, message) {
40
- const streamId = sender.streamId;
40
+ const { streamId } = sender;
41
41
  // initially we expect the `CoreWorkPackage`
42
42
  const workPackage = this.workPackages.get(streamId);
43
43
  if (workPackage === undefined) {
@@ -62,7 +62,7 @@ export class ClientHandler {
62
62
  logger.warn `[${sender.streamId}] Got unexpected message on CE-133 stream. Closing.`;
63
63
  sender.close();
64
64
  }
65
- onClose() { }
65
+ onClose(_streamId) { }
66
66
  sendWorkPackage(sender, coreIndex, workPackage, extrinsic) {
67
67
  const corePack = CoreWorkPackage.create({ coreIndex, workPackage });
68
68
  logger.trace `[${sender.streamId}] Sending work package: ${corePack}`;
@@ -1 +1 @@
1
- {"version":3,"file":"ce-134-work-package-sharing.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGnF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AAIH,KAAK,iBAAiB,GAAG,SAAS,CAAC;AAGnC,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,qBAAa,yBAA0B,SAAQ,SAAS;aAWpC,SAAS,EAAE,SAAS;aACpB,oBAAoB,EAAE,eAAe,EAAE;IAXzD,MAAM,CAAC,KAAK;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,EAAE,WAAW,CAAC,yBAAyB,CAAC;IAIzF,OAAO;CAMR;AAED,qBAAa,0BAA2B,SAAQ,SAAS;aAWrC,cAAc,EAAE,cAAc;aAC9B,SAAS,EAAE,gBAAgB;IAX7C,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,WAAW,CAAC,0BAA0B,CAAC;IAIpF,OAAO;CAMR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAInE,OAAO,CAAC,QAAQ,CAAC,aAAa;IAHhC,IAAI,gEAAe;gBAGA,aAAa,EAAE,CAC9B,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,eAAe,EAAE,EACvC,iBAAiB,EAAE,iBAAiB,KACjC,OAAO,CAAC;QAAE,cAAc,EAAE,cAAc,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAG/E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkD;IAE9E,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAsBtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAGlC;AAED,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IACrE,IAAI,gEAAe;IACnB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAM5B;IAEJ,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAYtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAQ3B,eAAe,CACnB,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,eAAe,EAAE,EACvC,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC;QAAE,cAAc,EAAE,cAAc,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAA;KAAE,CAAC;CAW5E"}
1
+ {"version":3,"file":"ce-134-work-package-sharing.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAA2B,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGnF,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AAIH,KAAK,iBAAiB,GAAG,SAAS,CAAC;AAGnC,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,qBAAa,yBAA0B,SAAQ,SAAS;aAWpC,SAAS,EAAE,SAAS;aACpB,oBAAoB,EAAE,eAAe,EAAE;IAXzD,MAAM,CAAC,KAAK;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,oBAAoB,EAAE,EAAE,WAAW,CAAC,yBAAyB,CAAC;IAIzF,OAAO;CAMR;AAED,qBAAa,0BAA2B,SAAQ,SAAS;aAWrC,cAAc,EAAE,cAAc;aAC9B,SAAS,EAAE,gBAAgB;IAX7C,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,SAAS,EAAE,EAAE,WAAW,CAAC,0BAA0B,CAAC;IAIpF,OAAO;CAMR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAInE,OAAO,CAAC,QAAQ,CAAC,aAAa;IAHhC,IAAI,gEAAe;gBAGA,aAAa,EAAE,CAC9B,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,eAAe,EAAE,EACvC,iBAAiB,EAAE,iBAAiB,KACjC,OAAO,CAAC;QAAE,cAAc,EAAE,cAAc,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAG/E,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkD;IAE9E,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAsBtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;CAGlC;AAED,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IACrE,IAAI,gEAAe;IACnB,OAAO,CAAC,QAAQ,CAAC,eAAe,CAM5B;IAEJ,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAatE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAQ3B,eAAe,CACnB,MAAM,EAAE,mBAAmB,EAC3B,SAAS,EAAE,SAAS,EACpB,oBAAoB,EAAE,eAAe,EAAE,EACvC,iBAAiB,EAAE,iBAAiB,GACnC,OAAO,CAAC;QAAE,cAAc,EAAE,cAAc,CAAC;QAAC,SAAS,EAAE,gBAAgB,CAAA;KAAE,CAAC;CAY5E"}
@@ -53,7 +53,7 @@ export class ServerHandler {
53
53
  sender.close();
54
54
  }
55
55
  onStreamMessage(sender, message) {
56
- const streamId = sender.streamId;
56
+ const { streamId } = sender;
57
57
  const request = this.requestsMap.get(streamId);
58
58
  if (request === undefined) {
59
59
  const receivedRequest = Decoder.decodeObject(WorkPackageSharingRequest.Codec, message);
@@ -78,12 +78,13 @@ export class ClientHandler {
78
78
  kind = STREAM_KIND;
79
79
  pendingRequests = new Map();
80
80
  onStreamMessage(sender, message) {
81
- const pendingRequest = this.pendingRequests.get(sender.streamId);
81
+ const { streamId } = sender;
82
+ const pendingRequest = this.pendingRequests.get(streamId);
82
83
  if (pendingRequest === undefined) {
83
84
  throw new Error("Unexpected message received.");
84
85
  }
85
86
  const response = Decoder.decodeObject(WorkPackageSharingResponse.Codec, message);
86
- logger.info `[${sender.streamId}] Received work report hash and signature.`;
87
+ logger.info `[${streamId}] Received work report hash and signature.`;
87
88
  pendingRequest.resolve({ workReportHash: response.workReportHash, signature: response.signature });
88
89
  sender.close();
89
90
  }
@@ -95,13 +96,14 @@ export class ClientHandler {
95
96
  }
96
97
  }
97
98
  async sendWorkPackage(sender, coreIndex, segmentsRootMappings, workPackageBundle) {
99
+ const { streamId } = sender;
98
100
  const request = WorkPackageSharingRequest.create({ coreIndex, segmentsRootMappings });
99
- logger.trace `[${sender.streamId}] Sending core index and segments-root mappings.`;
101
+ logger.trace `[${streamId}] Sending core index and segments-root mappings.`;
100
102
  sender.bufferAndSend(Encoder.encodeObject(WorkPackageSharingRequest.Codec, request));
101
- logger.trace `[${sender.streamId}] Sending work package bundle.`;
103
+ logger.trace `[${streamId}] Sending work package bundle.`;
102
104
  sender.bufferAndSend(Encoder.encodeObject(WorkPackageBundleCodec, workPackageBundle));
103
105
  return new Promise((resolve, reject) => {
104
- this.pendingRequests.set(sender.streamId, { resolve, reject });
106
+ this.pendingRequests.set(streamId, { resolve, reject });
105
107
  });
106
108
  }
107
109
  }
@@ -6,7 +6,7 @@ import { type CodecRecord } from "#@typeberry/codec";
6
6
  import type { KnownSizeArray } from "#@typeberry/collections";
7
7
  import type { ChainSpec } from "#@typeberry/config";
8
8
  import { WithDebug } from "#@typeberry/utils";
9
- import { type StreamHandler, type StreamMessageSender } from "./stream.js";
9
+ import { type StreamHandler, type StreamId, type StreamMessageSender } from "./stream.js";
10
10
  /**
11
11
  * JAMNP-S CE 135 Stream
12
12
  *
@@ -89,14 +89,14 @@ export declare class ServerHandler implements StreamHandler<typeof STREAM_KIND>
89
89
  kind: 135 & import("@typeberry/numbers").WithBytesRepresentation<1>;
90
90
  constructor(chainSpec: ChainSpec, onWorkReport: (workReport: GuaranteedWorkReport) => void);
91
91
  onStreamMessage(sender: StreamMessageSender, message: BytesBlob): void;
92
- onClose(): void;
92
+ onClose(_streamId: StreamId): void;
93
93
  }
94
94
  export declare class ClientHandler implements StreamHandler<typeof STREAM_KIND> {
95
95
  private readonly chainSpec;
96
96
  kind: 135 & import("@typeberry/numbers").WithBytesRepresentation<1>;
97
97
  constructor(chainSpec: ChainSpec);
98
98
  onStreamMessage(sender: StreamMessageSender): void;
99
- onClose(): void;
99
+ onClose(_streamId: StreamId): void;
100
100
  sendWorkReport(sender: StreamMessageSender, workReport: GuaranteedWorkReport): void;
101
101
  }
102
102
  //# sourceMappingURL=ce-135-work-report-distribution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ce-135-work-report-distribution.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE5F;;;;;;GAMG;AAEH,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,qBAAa,oBAAqB,SAAQ,SAAS;aAkB/B,MAAM,EAAE,UAAU;aAClB,IAAI,EAAE,QAAQ;aACd,UAAU,EAAE,cAAc,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAnBhF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAUT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,WAAW,CAAC,oBAAoB,CAAC;IAI7E,OAAO;CAOR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAInE,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAJ/B,IAAI,gEAAe;gBAGA,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,CAAC,UAAU,EAAE,oBAAoB,KAAK,IAAI;IAG3E,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAOtE,OAAO;CACR;AAED,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAGzD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,IAAI,gEAAe;gBAEU,SAAS,EAAE,SAAS;IAEjD,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAKlD,OAAO,IAAI,IAAI;IAEf,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,oBAAoB;CAK7E"}
1
+ {"version":3,"file":"ce-135-work-report-distribution.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AAEH,eAAO,MAAM,WAAW,+DAAuB,CAAC;AAEhD,qBAAa,oBAAqB,SAAQ,SAAS;aAkB/B,MAAM,EAAE,UAAU;aAClB,IAAI,EAAE,QAAQ;aACd,UAAU,EAAE,cAAc,CAAC,UAAU,EAAE,sBAAsB,CAAC;IAnBhF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAUT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,WAAW,CAAC,oBAAoB,CAAC;IAI7E,OAAO;CAOR;AAID,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAInE,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAJ/B,IAAI,gEAAe;gBAGA,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,CAAC,UAAU,EAAE,oBAAoB,KAAK,IAAI;IAG3E,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAOtE,OAAO,CAAC,SAAS,EAAE,QAAQ;CAC5B;AAED,qBAAa,aAAc,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAGzD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,IAAI,gEAAe;gBAEU,SAAS,EAAE,SAAS;IAEjD,eAAe,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI;IAKlD,OAAO,CAAC,SAAS,EAAE,QAAQ,GAAG,IAAI;IAElC,cAAc,CAAC,MAAM,EAAE,mBAAmB,EAAE,UAAU,EAAE,oBAAoB;CAK7E"}
@@ -53,7 +53,7 @@ export class ServerHandler {
53
53
  this.onWorkReport(guaranteedWorkReport);
54
54
  sender.close();
55
55
  }
56
- onClose() { }
56
+ onClose(_streamId) { }
57
57
  }
58
58
  export class ClientHandler {
59
59
  chainSpec;
@@ -65,7 +65,7 @@ export class ClientHandler {
65
65
  logger.warn `[${sender.streamId}] Got unexpected message on CE-135 stream. Closing.`;
66
66
  sender.close();
67
67
  }
68
- onClose() { }
68
+ onClose(_streamId) { }
69
69
  sendWorkReport(sender, workReport) {
70
70
  logger.trace `[${sender.streamId}] Sending guaranteed work report.`;
71
71
  sender.bufferAndSend(Encoder.encodeObject(GuaranteedWorkReport.Codec, workReport, this.chainSpec));
@@ -5,7 +5,7 @@ import { Credential } from "#@typeberry/block/guarantees.js";
5
5
  import { RefineContext } from "#@typeberry/block/refine-context.js";
6
6
  import { tryAsWorkItemsCount } from "#@typeberry/block/work-package.js";
7
7
  import { WorkPackageSpec, WorkReport } from "#@typeberry/block/work-report.js";
8
- import { WorkExecResult, WorkExecResultKind, WorkRefineLoad, WorkResult } from "#@typeberry/block/work-result.js";
8
+ import { WorkExecResult, WorkRefineLoad, WorkResult } from "#@typeberry/block/work-result.js";
9
9
  import { Bytes, BytesBlob } from "#@typeberry/bytes";
10
10
  import { asKnownSize, FixedSizeArray } from "#@typeberry/collections";
11
11
  import { tinyChainSpec } from "#@typeberry/config";
@@ -36,7 +36,7 @@ const MOCK_WORK_RESULT = WorkResult.create({
36
36
  codeHash: Bytes.zero(HASH_SIZE).asOpaque(),
37
37
  payloadHash: Bytes.zero(HASH_SIZE),
38
38
  gas: tryAsServiceGas(1000n),
39
- result: new WorkExecResult(WorkExecResultKind.ok, BytesBlob.blobFrom(new Uint8Array())),
39
+ result: WorkExecResult.ok(BytesBlob.empty()),
40
40
  load: WorkRefineLoad.create({
41
41
  gasUsed: tryAsServiceGas(10000n),
42
42
  importedSegments: tryAsU32(1),
@@ -1,16 +1,22 @@
1
1
  import type { BytesBlob } from "#@typeberry/bytes";
2
- import { type U8, type U32 } from "#@typeberry/numbers";
3
- /** Unique stream identifier. */
4
- export type StreamId = U32;
5
- /** Try to cast the number as `StreamId`. */
6
- export declare function tryAsStreamId(num: number): StreamId;
2
+ import { type U8 } from "#@typeberry/numbers";
3
+ import { type Opaque } from "#@typeberry/utils";
4
+ /**
5
+ * Globally unique stream identifier.
6
+ *
7
+ * Assigned during stream registration and used as the sole public
8
+ * identifier for a stream throughout the protocol layer.
9
+ */
10
+ export type StreamId = Opaque<string, "streamId">;
11
+ /** Cast a string as `StreamId`. */
12
+ export declare function tryAsStreamId(id: string): StreamId;
7
13
  /** Unique stream kind. */
8
14
  export type StreamKind<T extends U8 = U8> = T;
9
15
  /** Try to cast the number as `StreamKind`. */
10
16
  export declare function tryAsStreamKind<T extends number>(num: T): StreamKind<T & U8>;
11
17
  /** Abstraction over sending messages tied to a particular stream. */
12
18
  export interface StreamMessageSender {
13
- /** Stream Id information. */
19
+ /** Globally unique stream identifier. */
14
20
  streamId: StreamId;
15
21
  /**
16
22
  * Send data blob to the other end.
@@ -29,7 +35,7 @@ export interface StreamHandler<TStreamKind extends StreamKind = StreamKind> {
29
35
  readonly kind: TStreamKind;
30
36
  /** Handle message for that particular stream kind. */
31
37
  onStreamMessage(streamSender: StreamMessageSender, message: BytesBlob): void;
32
- /** Handle closing of given `streamId`. */
38
+ /** Handle closing of given stream. */
33
39
  onClose(streamId: StreamId, isError: boolean): void;
34
40
  }
35
41
  /** Extract the stream kind out of the the handler type. */
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAqB,KAAK,EAAE,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE1E,gCAAgC;AAChC,MAAM,MAAM,QAAQ,GAAG,GAAG,CAAC;AAC3B,4CAA4C;AAC5C,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAEnD;AAED,0BAA0B;AAC1B,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC9C,8CAA8C;AAC9C,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAE5E;AAED,qEAAqE;AACrE,MAAM,WAAW,mBAAmB;IAClC,6BAA6B;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAEpE,8CAA8C;IAC9C,KAAK,IAAI,IAAI,CAAC;CACf;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa,CAAC,WAAW,SAAS,UAAU,GAAG,UAAU;IACxE,yBAAyB;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAE3B,sDAAsD;IACtD,eAAe,CAAC,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC;IAE7E,0CAA0C;IAC1C,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACrD;AAED,2DAA2D;AAC3D,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS,aAAa,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC"}
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAW,KAAK,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE7D;;;;;GAKG;AACH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAElD,mCAAmC;AACnC,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,CAElD;AAED,0BAA0B;AAC1B,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;AAC9C,8CAA8C;AAC9C,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,CAAC,GAAG,EAAE,CAAC,CAE5E;AAED,qEAAqE;AACrE,MAAM,WAAW,mBAAmB;IAClC,yCAAyC;IACzC,QAAQ,EAAE,QAAQ,CAAC;IAEnB;;;;;;OAMG;IACH,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;IAEpE,8CAA8C;IAC9C,KAAK,IAAI,IAAI,CAAC;CACf;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAa,CAAC,WAAW,SAAS,UAAU,GAAG,UAAU;IACxE,yBAAyB;IACzB,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAE3B,sDAAsD;IACtD,eAAe,CAAC,YAAY,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI,CAAC;IAE7E,sCAAsC;IACtC,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACrD;AAED,2DAA2D;AAC3D,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS,aAAa,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC"}
@@ -1,7 +1,8 @@
1
- import { tryAsU8, tryAsU32 } from "#@typeberry/numbers";
2
- /** Try to cast the number as `StreamId`. */
3
- export function tryAsStreamId(num) {
4
- return tryAsU32(num);
1
+ import { tryAsU8 } from "#@typeberry/numbers";
2
+ import { asOpaqueType } from "#@typeberry/utils";
3
+ /** Cast a string as `StreamId`. */
4
+ export function tryAsStreamId(id) {
5
+ return asOpaqueType(id);
5
6
  }
6
7
  /** Try to cast the number as `StreamKind`. */
7
8
  export function tryAsStreamKind(num) {
@@ -4,7 +4,7 @@ import { type StreamHandler, type StreamId, type StreamKind, type StreamKindOf,
4
4
  export declare class TestStreamSender implements StreamMessageSender {
5
5
  readonly streamId: StreamId;
6
6
  readonly onSend: (data: BytesBlob) => void;
7
- readonly onClose: () => void;
7
+ readonly onCloseCallback: () => void;
8
8
  constructor(streamId: StreamId, { onSend, onClose, }: {
9
9
  onSend: (data: BytesBlob) => void;
10
10
  onClose?: () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAEzB,MAAM,aAAa,CAAC;AAErB,qBAAa,gBAAiB,YAAW,mBAAmB;aAKxC,QAAQ,EAAE,QAAQ;IAJpC,SAAgB,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAClD,SAAgB,OAAO,EAAE,MAAM,IAAI,CAAC;gBAGlB,QAAQ,EAAE,QAAQ,EAClC,EACE,MAAM,EACN,OAAkB,GACnB,EAAE;QACD,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;QAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;KACtB;IAMH,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAOvC,KAAK,IAAI,IAAI;CAKd;AAKD,qBAAa,kBAAkB;IAO3B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAN5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoE;IACtG,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6C;IAEhF,SAAgB,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAa;gBAG1E,SAAS,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,mBAAmB;IAG1G,gBAAgB,CAAC,GAAG,QAAQ,EAAE,aAAa,EAAE;IAM7C,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IASlD,gBAAgB,CAAC,QAAQ,SAAS,aAAa,EAC7C,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,EAClC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,KAAK,EAAE,GAC3D,IAAI;IASP,aAAa,CAAC,QAAQ,SAAS,aAAa,EAC1C,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,EAClC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,KAAK,EAAE,GAC3D,IAAI;IAiBP;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU;IAMhD;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,EAAE,QAAQ;IAS/B,OAAO,CAAC,wBAAwB;CAsBjC;AAED,wBAAgB,gBAAgB;;;EA6B/B"}
1
+ {"version":3,"file":"test-utils.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/test-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAEzB,MAAM,aAAa,CAAC;AAUrB,qBAAa,gBAAiB,YAAW,mBAAmB;aAKxC,QAAQ,EAAE,QAAQ;IAJpC,SAAgB,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;IAClD,SAAgB,eAAe,EAAE,MAAM,IAAI,CAAC;gBAG1B,QAAQ,EAAE,QAAQ,EAClC,EACE,MAAM,EACN,OAAkB,GACnB,EAAE;QACD,MAAM,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,CAAC;QAClC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;KACtB;IAMH,aAAa,CAAC,IAAI,EAAE,SAAS,GAAG,OAAO;IAOvC,KAAK,IAAI,IAAI;CAKd;AAKD,qBAAa,kBAAkB;IAO3B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAN5B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoE;IACtG,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAA6C;IAEhF,SAAgB,WAAW,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAa;gBAG1E,SAAS,EAAE,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,IAAI,KAAK,mBAAmB;IAG1G,gBAAgB,CAAC,GAAG,QAAQ,EAAE,aAAa,EAAE;IAM7C,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI;IASlD,gBAAgB,CAAC,QAAQ,SAAS,aAAa,EAC7C,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,EAClC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,KAAK,EAAE,GAC3D,IAAI;IASP,aAAa,CAAC,QAAQ,SAAS,aAAa,EAC1C,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,EAClC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,KAAK,EAAE,GAC3D,IAAI;IASP;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU;IAMhD;;;;;;;;OAQG;IACH,kBAAkB,CAAC,EAAE,EAAE,QAAQ;IAS/B,OAAO,CAAC,wBAAwB;CAsBjC;AAED,wBAAgB,gBAAgB;;;EA6B/B"}
@@ -1,12 +1,17 @@
1
1
  import { tryAsStreamId, } from "./stream.js";
2
+ const TEST_PEER_ID = "test-peer";
3
+ let nextTestStreamCounter = 0;
4
+ function nextTestStreamId() {
5
+ return tryAsStreamId(`${TEST_PEER_ID}:${nextTestStreamCounter++}`);
6
+ }
2
7
  export class TestStreamSender {
3
8
  streamId;
4
9
  onSend;
5
- onClose;
10
+ onCloseCallback;
6
11
  constructor(streamId, { onSend, onClose = () => { }, }) {
7
12
  this.streamId = streamId;
8
13
  this.onSend = onSend;
9
- this.onClose = onClose;
14
+ this.onCloseCallback = onClose;
10
15
  }
11
16
  bufferAndSend(data) {
12
17
  setImmediate(() => {
@@ -16,7 +21,7 @@ export class TestStreamSender {
16
21
  }
17
22
  close() {
18
23
  setImmediate(() => {
19
- this.onClose();
24
+ this.onCloseCallback();
20
25
  });
21
26
  }
22
27
  }
@@ -50,15 +55,7 @@ export class TestMessageHandler {
50
55
  work(handler[0], handler[1]);
51
56
  }
52
57
  withNewStream(streamKind, work) {
53
- const getRandomStreamId = () => tryAsStreamId(Math.floor(Math.random() * 2 ** 16));
54
- const streams = this.openStreams;
55
- const streamId = (function findStreamId() {
56
- const s = getRandomStreamId();
57
- if (!streams.has(s)) {
58
- return s;
59
- }
60
- return findStreamId();
61
- })();
58
+ const streamId = nextTestStreamId();
62
59
  // since we are picking a non-existing stream id, there is no way of
63
60
  // conflicting here, so the `[handler, stream]` will be fresh.
64
61
  const [handler, stream] = this.createStreamIfNotPresent(streamId, streamKind);
@@ -93,7 +93,7 @@ export declare class Handler implements StreamHandler<typeof STREAM_KIND> {
93
93
  kind: 0 & import("@typeberry/numbers").WithBytesRepresentation<1>;
94
94
  private readonly handshakes;
95
95
  private readonly pendingHandshakes;
96
- constructor(spec: ChainSpec, getHandshake: () => Handshake, onAnnouncement: (sender: StreamId, ann: Announcement) => void, onHandshake: (sender: StreamId, handshake: Handshake) => void);
96
+ constructor(spec: ChainSpec, getHandshake: () => Handshake, onAnnouncement: (streamId: StreamId, ann: Announcement) => void, onHandshake: (streamId: StreamId, handshake: Handshake) => void);
97
97
  onStreamMessage(sender: StreamMessageSender, message: BytesBlob): void;
98
98
  onClose(streamId: StreamId): void;
99
99
  sendHandshake(sender: StreamMessageSender): void;
@@ -1 +1 @@
1
- {"version":3,"file":"up-0-block-announcement.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/up-0-block-announcement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,6DAAqB,CAAC;AAE9C,qBAAa,WAAY,SAAQ,SAAS;aAWtB,IAAI,EAAE,UAAU;aAChB,IAAI,EAAE,QAAQ;IAXhC,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,WAAW,CAAC;IAItD,OAAO;CAMR;AAED;;GAEG;AACH,qBAAa,SAAS;IAWlB,4BAA4B;aACZ,KAAK,EAAE,WAAW;IAClC,sEAAsE;aACtD,KAAK,EAAE,WAAW,EAAE;IAbtC,MAAM,CAAC,KAAK;;;;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC;IAItD,OAAO;CAMR;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,SAAS;IAWvC,sDAAsD;aACtC,MAAM,EAAE,MAAM;IAC9B,4BAA4B;aACZ,KAAK,EAAE,WAAW;IAbpC,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC;IAI1D,OAAO;CAQR;AAID,qBAAa,OAAQ,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAO7D,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAT9B,IAAI,8DAAe;IAEnB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuC;IAClE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqC;gBAGpD,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,MAAM,SAAS,EAC7B,cAAc,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,KAAK,IAAI,EAC7D,WAAW,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,KAAK,IAAI;IAGhF,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAqBtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAKjC,aAAa,CAAC,MAAM,EAAE,mBAAmB;IAWzC,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY;CAUxE"}
1
+ {"version":3,"file":"up-0-block-announcement.d.ts","sourceRoot":"","sources":["../../../../../../packages/jam/jamnp-s/protocol/up-0-block-announcement.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,UAAU,EAAE,KAAK,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAA2B,MAAM,kBAAkB,CAAC;AAC7E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,mBAAmB,EAAmB,MAAM,aAAa,CAAC;AAE3G;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,6DAAqB,CAAC;AAE9C,qBAAa,WAAY,SAAQ,SAAS;aAWtB,IAAI,EAAE,UAAU;aAChB,IAAI,EAAE,QAAQ;IAXhC,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,WAAW,CAAC;IAItD,OAAO;CAMR;AAED;;GAEG;AACH,qBAAa,SAAS;IAWlB,4BAA4B;aACZ,KAAK,EAAE,WAAW;IAClC,sEAAsE;aACtD,KAAK,EAAE,WAAW,EAAE;IAbtC,MAAM,CAAC,KAAK;;;;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC;IAItD,OAAO;CAMR;AAED;;;GAGG;AACH,qBAAa,YAAa,SAAQ,SAAS;IAWvC,sDAAsD;aACtC,MAAM,EAAE,MAAM;IAC9B,4BAA4B;aACZ,KAAK,EAAE,WAAW;IAbpC,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,YAAY,CAAC;IAI1D,OAAO;CAQR;AAID,qBAAa,OAAQ,YAAW,aAAa,CAAC,OAAO,WAAW,CAAC;IAO7D,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAT9B,IAAI,8DAAe;IAEnB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuC;IAClE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAqC;gBAGpD,IAAI,EAAE,SAAS,EACf,YAAY,EAAE,MAAM,SAAS,EAC7B,cAAc,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,KAAK,IAAI,EAC/D,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,KAAK,IAAI;IAGlF,eAAe,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI;IAqBtE,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAKjC,aAAa,CAAC,MAAM,EAAE,mBAAmB;IAWzC,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,YAAY;CAUxE"}
@@ -119,7 +119,7 @@ export class Handler {
119
119
  }
120
120
  const handshake = this.getHandshake();
121
121
  logger.trace `[${streamId}] <-- sending handshake`;
122
- this.pendingHandshakes.set(sender.streamId, true);
122
+ this.pendingHandshakes.set(streamId, true);
123
123
  sender.bufferAndSend(Encoder.encodeObject(Handshake.Codec, handshake));
124
124
  }
125
125
  sendAnnouncement(sender, annoucement) {
@@ -1 +1 @@
1
- {"version":3,"file":"stream-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/jamnp-s/stream-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAGL,KAAK,IAAI,EACT,KAAK,MAAM,EACX,KAAK,MAAM,EACX,KAAK,mBAAmB,EAEzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,QAAQ,EAEb,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAGzB,MAAM,sBAAsB,CAAC;AAK9B,qBAAa,aAAa;IACxB,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6C;IAC9E,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6C;IAE9E,8DAA8D;IAC9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAOV;IAEd,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2C;IAE3E,uCAAuC;IACvC,wBAAwB,CAAC,GAAG,QAAQ,EAAE,aAAa,EAAE;IAMrD,uCAAuC;IACvC,wBAAwB,CAAC,GAAG,QAAQ,EAAE,aAAa,EAAE;IAMrD,yCAAyC;IACzC,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI;IAIxC,gDAAgD;IAC1C,aAAa;IAMnB,4DAA4D;IAC5D,gBAAgB,CAAC,QAAQ,SAAS,aAAa,EAC7C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC5B,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,KAAK,EAAE,GACxD,IAAI;IAWP,4DAA4D;IAC5D,aAAa,CAAC,QAAQ,SAAS,aAAa,EAC1C,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC5B,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,KAAK,EAAE,GACxD,IAAI;IAcP,iCAAiC;IAC3B,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM;IA8BjD,OAAO,CAAC,cAAc;CA6CvB;AA4CD,cAAM,gBAAiB,YAAW,mBAAmB;aAMjC,QAAQ,EAAE,QAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,YAAY,CAAiD;IACrE,OAAO,CAAC,oBAAoB,CAA8B;gBAGxC,QAAQ,EAAE,QAAQ,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,mBAAmB;IAG/C,iDAAiD;IACjD,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,UAAO,GAAG,OAAO;IAsChE,KAAK,IAAI,IAAI;IAab;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB"}
1
+ {"version":3,"file":"stream-manager.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/jamnp-s/stream-manager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,EAGL,KAAK,IAAI,EACT,KAAK,MAAM,EACX,KAAK,MAAM,EACX,KAAK,mBAAmB,EAEzB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,QAAQ,EAEb,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAGzB,MAAM,sBAAsB,CAAC;AAK9B,qBAAa,aAAa;IACxB,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6C;IAC9E,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAA6C;IAE9E,8DAA8D;IAC9D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAOV;IAEd,2DAA2D;IAC3D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA2C;IAE3E,uCAAuC;IACvC,wBAAwB,CAAC,GAAG,QAAQ,EAAE,aAAa,EAAE;IAMrD,uCAAuC;IACvC,wBAAwB,CAAC,GAAG,QAAQ,EAAE,aAAa,EAAE;IAMrD,yCAAyC;IACzC,OAAO,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI;IAIxC,gDAAgD;IAC1C,aAAa;IAMnB,4DAA4D;IAC5D,gBAAgB,CAAC,QAAQ,SAAS,aAAa,EAC7C,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC5B,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,KAAK,EAAE,GACxD,IAAI;IAWP,4DAA4D;IAC5D,aAAa,CAAC,QAAQ,SAAS,aAAa,EAC1C,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC5B,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,gBAAgB,KAAK,EAAE,GACxD,IAAI;IAcP,iCAAiC;IAC3B,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM;IA8BjD,OAAO,CAAC,cAAc;CA8CvB;AA4CD,cAAM,gBAAiB,YAAW,mBAAmB;aAMjC,QAAQ,EAAE,QAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,OAAO,CAAC,cAAc,CAAK;IAC3B,OAAO,CAAC,YAAY,CAAiD;IACrE,OAAO,CAAC,oBAAoB,CAA8B;gBAGxC,QAAQ,EAAE,QAAQ,EACjB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,mBAAmB;IAG/C,iDAAiD;IACjD,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,gBAAgB,UAAO,GAAG,OAAO;IAsChE,KAAK,IAAI,IAAI;IAab;;;;OAIG;IACH,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAGvB"}
@@ -1,6 +1,7 @@
1
1
  import { BytesBlob } from "#@typeberry/bytes";
2
2
  import { Logger } from "#@typeberry/logger";
3
3
  import { encodeMessageLength, handleMessageFragmentation, StreamErrorKind, } from "#@typeberry/networking";
4
+ import { tryAsU32 } from "#@typeberry/numbers";
4
5
  import { tryAsStreamId, tryAsStreamKind, } from "./protocol/stream.js";
5
6
  import { handleAsyncErrors } from "./utils.js";
6
7
  const logger = Logger.new(import.meta.filename, "stream");
@@ -85,13 +86,14 @@ export class StreamManager {
85
86
  this.registerStream(peer, handler, stream, BytesBlob.blobFrom(bytes.raw.subarray(1)));
86
87
  }
87
88
  registerStream(peer, handler, stream, initialData) {
88
- const streamId = tryAsStreamId(stream.streamId);
89
+ const quicStreamId = tryAsU32(stream.streamId);
90
+ const streamId = tryAsStreamId(`${peer.id}:${quicStreamId}`);
89
91
  // NOTE: `onError` callback may be called multiple times.
90
92
  const onError = (e, kind) => {
91
93
  this.streams.delete(streamId);
92
94
  this.backgroundTasks.delete(streamId);
93
95
  if (kind === StreamErrorKind.Exception) {
94
- logger.error `🚰 --- [${peer.id}:${streamId}] Stream error: ${e}. Disconnecting peer.`;
96
+ logger.error `🚰 --- [${streamId}] Stream error: ${e}. Disconnecting peer.`;
95
97
  }
96
98
  if (kind !== StreamErrorKind.LocalClose) {
97
99
  // whenever we have an error, we are going to inform the handler
@@ -125,10 +127,10 @@ async function readStreamForever(peer, handler, quicStream, initialData, reader)
125
127
  let isDone = false;
126
128
  const callback = handleMessageFragmentation((data) => {
127
129
  const bytes = BytesBlob.blobFrom(new Uint8Array(data));
128
- logger.trace `🚰 --> [${peer.id}:${quicStream.streamId}] ${bytes}`;
130
+ logger.trace `🚰 --> [${quicStream.streamId}] ${bytes}`;
129
131
  handler.onStreamMessage(quicStream, bytes);
130
132
  }, () => {
131
- logger.error `🚰 --> [${peer.id}:${quicStream.streamId}] got too much data. Disconnecting.`;
133
+ logger.error `🚰 --> [${quicStream.streamId}] got too much data. Disconnecting.`;
132
134
  peer.disconnect();
133
135
  });
134
136
  for (;;) {
@@ -137,7 +139,7 @@ async function readStreamForever(peer, handler, quicStream, initialData, reader)
137
139
  // be a promise, so that we can make back pressure here.
138
140
  callback(bytes.raw);
139
141
  if (isDone) {
140
- logger.log `🚰 --> [${peer.id}:${quicStream.streamId}] remote finished.`;
142
+ logger.log `🚰 --> [${quicStream.streamId}] remote finished.`;
141
143
  return;
142
144
  }
143
145
  // await for more data
@@ -2,6 +2,7 @@ import assert from "node:assert";
2
2
  import { describe, it } from "node:test";
3
3
  import { createDisconnectedPeer, TestManualStream } from "#@typeberry/networking/testing.js";
4
4
  import { OK } from "#@typeberry/utils";
5
+ import { tryAsStreamId, } from "./protocol/stream.js";
5
6
  import { StreamManager } from "./stream-manager.js";
6
7
  // Test StreamHandler implementation
7
8
  class TestStreamHandler {
@@ -25,7 +26,7 @@ describe("StreamManager", () => {
25
26
  describe("stream management", () => {
26
27
  it("should return null for unknown stream ID", () => {
27
28
  const manager = new StreamManager();
28
- const peer = manager.getPeer(123);
29
+ const peer = manager.getPeer(tryAsStreamId("peer1:123"));
29
30
  assert.strictEqual(peer, null);
30
31
  });
31
32
  it("should open new stream and call work function", async () => {
@@ -38,7 +39,7 @@ describe("StreamManager", () => {
38
39
  manager.withNewStream(peer, 1, (h, sender) => {
39
40
  workCalled = true;
40
41
  assert.strictEqual(h, handler);
41
- assert.strictEqual(typeof sender.streamId, "number");
42
+ assert.strictEqual(typeof sender.streamId, "string");
42
43
  senderFlush = sender.flush();
43
44
  return OK;
44
45
  });
@@ -88,17 +89,19 @@ describe("StreamManager", () => {
88
89
  describe("incoming streams", () => {
89
90
  it("should handle incoming stream with valid kind", async () => {
90
91
  const manager = new StreamManager();
91
- const peer = createDisconnectedPeer("peer1");
92
+ const peerId = "peer1";
93
+ const peer = createDisconnectedPeer(peerId);
92
94
  const handler = createTestHandler(1);
93
95
  manager.registerIncomingHandlers(handler);
94
- const stream = new TestManualStream(42);
96
+ const quicStreamId = 42;
97
+ const stream = new TestManualStream(quicStreamId);
95
98
  // Simulate incoming stream with kind byte
96
99
  const kindData = new Uint8Array([1, 0x41, 0x42]); // kind=1, followed by some data
97
100
  stream._simulateIncomingData(kindData);
98
101
  stream._incomingData.close();
99
102
  await manager.onIncomingStream(peer, stream);
100
103
  // Check that peer is tracked
101
- const retrievedPeer = manager.getPeer(42);
104
+ const retrievedPeer = manager.getPeer(tryAsStreamId(`${peerId}:${quicStreamId}`));
102
105
  assert.strictEqual(retrievedPeer, peer);
103
106
  });
104
107
  it("should throw error for stream without kind byte", async () => {
@@ -48,7 +48,7 @@ export class SyncTask {
48
48
  // server mode
49
49
  streamManager.registerIncomingHandlers(up0Handler);
50
50
  streamManager.registerIncomingHandlers(new ce128.ServerHandler(spec, (streamId, hash, direction, maxBlocks) => {
51
- const peer = getPeerForStream(streamId);
51
+ const peer = streamManager.getPeer(streamId);
52
52
  if (peer !== null) {
53
53
  return syncTask.handleGetBlockSequence(peer, hash, direction, maxBlocks);
54
54
  }
@@ -14,6 +14,8 @@ export declare const DEFAULT_DEV_CONFIG: {
14
14
  export declare class JamConfig {
15
15
  /** Whether we should be authoring blocks. */
16
16
  readonly isAuthoring: boolean;
17
+ /** Fast forward mode - generate blocks as fast as possible without waiting for real time. */
18
+ readonly isFastForward: boolean;
17
19
  /** Node name. */
18
20
  readonly nodeName: string;
19
21
  /** Node starting configuration. */
@@ -28,8 +30,9 @@ export declare class JamConfig {
28
30
  readonly ancestry: [HeaderHash, TimeSlot][];
29
31
  /** Validator index for dev mode authorship. Use "all" to author as all validators. */
30
32
  readonly devValidatorIndex: U16 | "all" | null;
31
- static new({ isAuthoring, nodeName, nodeConfig, pvmBackend, devConfig, networkConfig, ancestry, devValidatorIndex, }: {
33
+ static new({ isAuthoring, isFastForward, nodeName, nodeConfig, pvmBackend, devConfig, networkConfig, ancestry, devValidatorIndex, }: {
32
34
  isAuthoring?: boolean;
35
+ isFastForward?: boolean;
33
36
  nodeName: string;
34
37
  nodeConfig: NodeConfiguration;
35
38
  pvmBackend: PvmBackend;
@@ -1 +1 @@
1
- {"version":3,"file":"jam-config.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/node/jam-config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,QAAQ,EAGb,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AACtF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAS;IAkClB,6CAA6C;aAC7B,WAAW,EAAE,OAAO;IACpC,iBAAiB;aACD,QAAQ,EAAE,MAAM;IAChC,mCAAmC;aACnB,IAAI,EAAE,iBAAiB;IACvC,4BAA4B;aACZ,UAAU,EAAE,UAAU;IACtC,wCAAwC;aACxB,GAAG,EAAE,SAAS,GAAG,IAAI;IACrC,0BAA0B;aACV,OAAO,EAAE,aAAa,GAAG,IAAI;IAC7C,iDAAiD;aACjC,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;IAClD,sFAAsF;aACtE,iBAAiB,EAAE,GAAG,GAAG,KAAK,GAAG,IAAI;IAhDvD,MAAM,CAAC,GAAG,CAAC,EACT,WAAW,EACX,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAgB,EAChB,aAAoB,EACpB,QAAa,EACb,iBAAwB,GACzB,EAAE;QACD,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,iBAAiB,CAAC;QAC9B,UAAU,EAAE,UAAU,CAAC;QACvB,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QAC7B,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;QACrC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;QACpC,sFAAsF;QACtF,iBAAiB,CAAC,EAAE,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC;KACxC;IAaD,OAAO;CAkBR;AAED,6CAA6C;AAC7C,MAAM,MAAM,aAAa,GAAG;IAC1B,uCAAuC;IACvC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,8BAA8B;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,oCAAoC;AACpC,MAAM,MAAM,SAAS,GAAG;IAGtB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,wCAAwC;IACxC,cAAc,EAAE,cAAc,CAAC;IAC/B,2CAA2C;IAC3C,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,gCAAgC;AAChC,MAAM,MAAM,aAAa,GAAG;IAC1B,2BAA2B;IAC3B,GAAG,EAAE,iBAAiB,CAAC;IACvB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB,CAAC"}
1
+ {"version":3,"file":"jam-config.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/node/jam-config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,QAAQ,EAGb,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AACtF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAS;IAqClB,6CAA6C;aAC7B,WAAW,EAAE,OAAO;IACpC,6FAA6F;aAC7E,aAAa,EAAE,OAAO;IACtC,iBAAiB;aACD,QAAQ,EAAE,MAAM;IAChC,mCAAmC;aACnB,IAAI,EAAE,iBAAiB;IACvC,4BAA4B;aACZ,UAAU,EAAE,UAAU;IACtC,wCAAwC;aACxB,GAAG,EAAE,SAAS,GAAG,IAAI;IACrC,0BAA0B;aACV,OAAO,EAAE,aAAa,GAAG,IAAI;IAC7C,iDAAiD;aACjC,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;IAClD,sFAAsF;aACtE,iBAAiB,EAAE,GAAG,GAAG,KAAK,GAAG,IAAI;IArDvD,MAAM,CAAC,GAAG,CAAC,EACT,WAAW,EACX,aAAa,EACb,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAgB,EAChB,aAAoB,EACpB,QAAa,EACb,iBAAwB,GACzB,EAAE;QACD,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,iBAAiB,CAAC;QAC9B,UAAU,EAAE,UAAU,CAAC;QACvB,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QAC7B,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;QACrC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;QACpC,sFAAsF;QACtF,iBAAiB,CAAC,EAAE,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC;KACxC;IAcD,OAAO;CAoBR;AAED,6CAA6C;AAC7C,MAAM,MAAM,aAAa,GAAG;IAC1B,uCAAuC;IACvC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,8BAA8B;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,oCAAoC;AACpC,MAAM,MAAM,SAAS,GAAG;IAGtB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,wCAAwC;IACxC,cAAc,EAAE,cAAc,CAAC;IAC/B,2CAA2C;IAC3C,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,gCAAgC;AAChC,MAAM,MAAM,aAAa,GAAG;IAC1B,2BAA2B;IAC3B,GAAG,EAAE,iBAAiB,CAAC;IACvB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB,CAAC"}