@typeberry/lib 0.5.3 → 0.5.4-ab9c0e1

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 (221) hide show
  1. package/package.json +8 -4
  2. package/packages/core/hash/hash.d.ts.map +1 -1
  3. package/packages/core/hash/hash.js +1 -0
  4. package/packages/core/networking/certificate.d.ts.map +1 -1
  5. package/packages/core/networking/certificate.js +1 -0
  6. package/packages/core/networking/package.json +1 -1
  7. package/packages/core/networking/setup.d.ts.map +1 -1
  8. package/packages/core/networking/setup.js +16 -12
  9. package/packages/core/numbers/index.d.ts +4 -0
  10. package/packages/core/numbers/index.d.ts.map +1 -1
  11. package/packages/core/numbers/index.js +4 -4
  12. package/packages/core/pvm-host-calls/host-calls-executor.d.ts +23 -17
  13. package/packages/core/pvm-host-calls/host-calls-executor.d.ts.map +1 -1
  14. package/packages/core/pvm-host-calls/host-calls-executor.js +23 -31
  15. package/packages/core/pvm-interpreter/ops/math-consts.d.ts +2 -3
  16. package/packages/core/pvm-interpreter/ops/math-consts.d.ts.map +1 -1
  17. package/packages/core/pvm-interpreter/ops/math-consts.js +2 -3
  18. package/packages/core/pvm-interpreter/ops/math-ops.js +3 -3
  19. package/packages/core/pvm-interpreter/ops/math-utils.js +13 -13
  20. package/packages/core/pvm-interpreter/ops/math-utils.test.js +17 -16
  21. package/packages/core/telemetry/package.json +1 -1
  22. package/packages/core/utils/compatibility.d.ts +0 -1
  23. package/packages/core/utils/compatibility.d.ts.map +1 -1
  24. package/packages/core/utils/compatibility.js +1 -2
  25. package/packages/core/utils/compatibility.test.js +6 -10
  26. package/packages/extensions/ipc/jamnp/handler.d.ts +5 -4
  27. package/packages/extensions/ipc/jamnp/handler.d.ts.map +1 -1
  28. package/packages/extensions/ipc/jamnp/handler.js +59 -34
  29. package/packages/extensions/ipc/jamnp/stream.d.ts +6 -4
  30. package/packages/extensions/ipc/jamnp/stream.d.ts.map +1 -1
  31. package/packages/jam/block/index.d.ts +11 -11
  32. package/packages/jam/block/index.d.ts.map +1 -1
  33. package/packages/jam/block/index.js +11 -11
  34. package/packages/jam/block/work-item.d.ts +13 -4
  35. package/packages/jam/block/work-item.d.ts.map +1 -1
  36. package/packages/jam/block/work-package.d.ts +3 -1
  37. package/packages/jam/block/work-package.d.ts.map +1 -1
  38. package/packages/jam/block/work-package.js +6 -2
  39. package/packages/jam/block/work-result.d.ts +3 -5
  40. package/packages/jam/block/work-result.d.ts.map +1 -1
  41. package/packages/jam/block/work-result.js +6 -0
  42. package/packages/jam/block-json/block.d.ts +125 -0
  43. package/packages/jam/block-json/block.d.ts.map +1 -1
  44. package/packages/jam/block-json/block.js +9 -2
  45. package/packages/jam/block-json/work-result.d.ts.map +1 -1
  46. package/packages/jam/block-json/work-result.js +6 -6
  47. package/packages/jam/database-lmdb/states.test.js +2 -3
  48. package/packages/jam/executor/index.d.ts +4 -0
  49. package/packages/jam/executor/index.d.ts.map +1 -0
  50. package/packages/jam/executor/index.js +2 -0
  51. package/packages/jam/{transition/accumulate → executor}/pvm-executor.d.ts +19 -16
  52. package/packages/jam/executor/pvm-executor.d.ts.map +1 -0
  53. package/packages/jam/{transition/accumulate → executor}/pvm-executor.js +46 -3
  54. package/packages/jam/fuzz-proto/v1/handler.d.ts +1 -1
  55. package/packages/jam/fuzz-proto/v1/handler.d.ts.map +1 -1
  56. package/packages/jam/fuzz-proto/v1/handler.js +43 -19
  57. package/packages/jam/fuzz-proto/v1/types.d.ts +1 -1
  58. package/packages/jam/in-core/externalities/refine.d.ts +24 -0
  59. package/packages/jam/in-core/externalities/refine.d.ts.map +1 -0
  60. package/packages/jam/in-core/externalities/refine.js +36 -0
  61. package/packages/jam/in-core/in-core.d.ts +60 -0
  62. package/packages/jam/in-core/in-core.d.ts.map +1 -0
  63. package/packages/jam/in-core/in-core.js +294 -0
  64. package/packages/jam/in-core/in-core.test.d.ts +2 -0
  65. package/packages/jam/in-core/in-core.test.d.ts.map +1 -0
  66. package/packages/jam/in-core/in-core.test.js +81 -0
  67. package/packages/jam/in-core/index.d.ts +2 -0
  68. package/packages/jam/in-core/index.d.ts.map +1 -0
  69. package/packages/jam/in-core/index.js +1 -0
  70. package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
  71. package/packages/jam/jam-host-calls/accumulate/bless.js +6 -10
  72. package/packages/jam/jam-host-calls/accumulate/bless.test.js +32 -73
  73. package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
  74. package/packages/jam/jam-host-calls/accumulate/new.js +2 -4
  75. package/packages/jam/jam-host-calls/accumulate/new.test.js +4 -5
  76. package/packages/jam/jam-host-calls/general/fetch.d.ts +1 -57
  77. package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
  78. package/packages/jam/jam-host-calls/general/fetch.js +6 -29
  79. package/packages/jam/jam-host-calls/general/fetch.test.js +2 -58
  80. package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
  81. package/packages/jam/jamnp-s/peers.js +10 -0
  82. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +1 -1
  83. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
  84. package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +10 -8
  85. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
  86. package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +11 -9
  87. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +3 -3
  88. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
  89. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +2 -2
  90. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +9 -9
  91. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
  92. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +2 -2
  93. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
  94. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +8 -6
  95. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +16 -16
  96. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
  97. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +2 -2
  98. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
  99. package/packages/jam/jamnp-s/protocol/stream.d.ts +13 -7
  100. package/packages/jam/jamnp-s/protocol/stream.d.ts.map +1 -1
  101. package/packages/jam/jamnp-s/protocol/stream.js +5 -4
  102. package/packages/jam/jamnp-s/protocol/test-utils.d.ts +1 -1
  103. package/packages/jam/jamnp-s/protocol/test-utils.d.ts.map +1 -1
  104. package/packages/jam/jamnp-s/protocol/test-utils.js +9 -12
  105. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +2 -2
  106. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
  107. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +1 -1
  108. package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
  109. package/packages/jam/jamnp-s/stream-manager.js +7 -5
  110. package/packages/jam/jamnp-s/stream-manager.test.js +8 -5
  111. package/packages/jam/jamnp-s/tasks/sync.js +1 -1
  112. package/packages/jam/node/jam-config.d.ts +4 -1
  113. package/packages/jam/node/jam-config.d.ts.map +1 -1
  114. package/packages/jam/node/jam-config.js +6 -2
  115. package/packages/jam/node/main.d.ts.map +1 -1
  116. package/packages/jam/node/main.js +5 -4
  117. package/packages/jam/node/package.json +1 -1
  118. package/packages/jam/node/reader.d.ts +25 -25
  119. package/packages/jam/node/workers.d.ts +183 -183
  120. package/packages/jam/rpc-validation/types.d.ts +7 -3
  121. package/packages/jam/rpc-validation/types.d.ts.map +1 -1
  122. package/packages/jam/rpc-validation/validation.d.ts +254 -36
  123. package/packages/jam/rpc-validation/validation.d.ts.map +1 -1
  124. package/packages/jam/rpc-validation/validation.js +20 -2
  125. package/packages/jam/state/accumulation-queue.d.ts +26 -26
  126. package/packages/jam/state/assurances.d.ts +26 -26
  127. package/packages/jam/state/in-memory-state.d.ts.map +1 -1
  128. package/packages/jam/state/in-memory-state.js +2 -3
  129. package/packages/jam/state/privileged-services.d.ts +1 -1
  130. package/packages/jam/state/privileged-services.d.ts.map +1 -1
  131. package/packages/jam/state/privileged-services.js +1 -6
  132. package/packages/jam/state/service.d.ts +1 -1
  133. package/packages/jam/state/service.d.ts.map +1 -1
  134. package/packages/jam/state/statistics.d.ts +0 -8
  135. package/packages/jam/state/statistics.d.ts.map +1 -1
  136. package/packages/jam/state/statistics.js +14 -44
  137. package/packages/jam/state/statistics.test.js +1 -8
  138. package/packages/jam/state/test.utils.d.ts +1 -1
  139. package/packages/jam/state/test.utils.d.ts.map +1 -1
  140. package/packages/jam/state/test.utils.js +6 -25
  141. package/packages/jam/state-json/accounts.d.ts +10 -0
  142. package/packages/jam/state-json/accounts.d.ts.map +1 -1
  143. package/packages/jam/state-json/accounts.js +47 -19
  144. package/packages/jam/state-json/dump.d.ts.map +1 -1
  145. package/packages/jam/state-json/dump.js +5 -9
  146. package/packages/jam/state-json/dump.test.js +2 -10
  147. package/packages/jam/state-json/statistics.d.ts +1 -1
  148. package/packages/jam/state-json/statistics.d.ts.map +1 -1
  149. package/packages/jam/state-json/statistics.js +1 -13
  150. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +29 -31
  151. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
  152. package/packages/jam/state-merkleization/serialize.d.ts +4 -4
  153. package/packages/jam/state-merkleization/serialize.d.ts.map +1 -1
  154. package/packages/jam/state-merkleization/serialize.js +5 -8
  155. package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
  156. package/packages/jam/state-merkleization/state-entries.test.js +1 -7
  157. package/packages/jam/state-vectors/index.d.ts +377 -5
  158. package/packages/jam/state-vectors/index.d.ts.map +1 -1
  159. package/packages/jam/state-vectors/index.js +3 -3
  160. package/packages/jam/transition/accumulate/accumulate-data.d.ts.map +1 -1
  161. package/packages/jam/transition/accumulate/accumulate-data.js +1 -2
  162. package/packages/jam/transition/accumulate/accumulate-queue.test.js +2 -2
  163. package/packages/jam/transition/accumulate/accumulate-state.d.ts +1 -2
  164. package/packages/jam/transition/accumulate/accumulate-state.d.ts.map +1 -1
  165. package/packages/jam/transition/accumulate/accumulate-utils.d.ts.map +1 -1
  166. package/packages/jam/transition/accumulate/accumulate-utils.js +2 -6
  167. package/packages/jam/transition/accumulate/accumulate-utils.test.js +4 -6
  168. package/packages/jam/transition/accumulate/accumulate.d.ts.map +1 -1
  169. package/packages/jam/transition/accumulate/accumulate.js +19 -33
  170. package/packages/jam/transition/accumulate/accumulate.test.js +2 -2
  171. package/packages/jam/transition/accumulate/accumulation-result-merge-utils.d.ts.map +1 -1
  172. package/packages/jam/transition/accumulate/accumulation-result-merge-utils.js +1 -2
  173. package/packages/jam/transition/accumulate/accumulation-result-merge-utils.test.js +1 -2
  174. package/packages/jam/transition/accumulate/index.d.ts +0 -1
  175. package/packages/jam/transition/accumulate/index.d.ts.map +1 -1
  176. package/packages/jam/transition/accumulate/index.js +0 -1
  177. package/packages/jam/transition/accumulate/operand.d.ts +7 -7
  178. package/packages/jam/transition/chain-stf.d.ts +3 -5
  179. package/packages/jam/transition/chain-stf.d.ts.map +1 -1
  180. package/packages/jam/transition/chain-stf.js +5 -29
  181. package/packages/jam/transition/disputes/disputes.test.data2.d.ts +3 -3
  182. package/packages/jam/transition/disputes/disputes.test.data2.d.ts.map +1 -1
  183. package/packages/jam/transition/disputes/disputes.test.data2.js +2 -2
  184. package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
  185. package/packages/jam/transition/externalities/accumulate-externalities.js +22 -49
  186. package/packages/jam/transition/externalities/accumulate-externalities.test.js +8 -72
  187. package/packages/jam/transition/externalities/fetch-externalities.d.ts +8 -21
  188. package/packages/jam/transition/externalities/fetch-externalities.d.ts.map +1 -1
  189. package/packages/jam/transition/externalities/fetch-externalities.js +5 -53
  190. package/packages/jam/transition/externalities/fetch-externalities.test.js +201 -114
  191. package/packages/jam/transition/hasher.test.js +2 -2
  192. package/packages/jam/transition/reports/error.d.ts +3 -1
  193. package/packages/jam/transition/reports/error.d.ts.map +1 -1
  194. package/packages/jam/transition/reports/error.js +2 -0
  195. package/packages/jam/transition/reports/test.utils.d.ts.map +1 -1
  196. package/packages/jam/transition/reports/test.utils.js +2 -2
  197. package/packages/jam/transition/reports/verify-basic.d.ts.map +1 -1
  198. package/packages/jam/transition/reports/verify-basic.js +10 -0
  199. package/packages/jam/transition/reports/verify-basic.test.js +29 -0
  200. package/packages/jam/transition/statistics.d.ts +0 -7
  201. package/packages/jam/transition/statistics.d.ts.map +1 -1
  202. package/packages/jam/transition/statistics.js +2 -11
  203. package/packages/jam/transition/statistics.test.js +0 -40
  204. package/packages/workers/block-authorship/generator.test.d.ts +2 -0
  205. package/packages/workers/block-authorship/generator.test.d.ts.map +1 -0
  206. package/packages/workers/block-authorship/generator.test.js +200 -0
  207. package/packages/workers/block-authorship/main.d.ts.map +1 -1
  208. package/packages/workers/block-authorship/main.js +23 -4
  209. package/packages/workers/block-authorship/package.json +1 -1
  210. package/packages/workers/block-authorship/protocol.d.ts +53 -51
  211. package/packages/workers/block-authorship/protocol.d.ts.map +1 -1
  212. package/packages/workers/block-authorship/protocol.js +6 -3
  213. package/packages/workers/importer/importer.d.ts.map +1 -1
  214. package/packages/workers/importer/importer.js +0 -1
  215. package/packages/workers/importer/package.json +1 -1
  216. package/packages/workers/importer/protocol.d.ts +54 -54
  217. package/packages/workers/jam-network/protocol.d.ts +79 -79
  218. package/packages/jam/transition/accumulate/deferred-transfers.d.ts +0 -36
  219. package/packages/jam/transition/accumulate/deferred-transfers.d.ts.map +0 -1
  220. package/packages/jam/transition/accumulate/deferred-transfers.js +0 -95
  221. package/packages/jam/transition/accumulate/pvm-executor.d.ts.map +0 -1
@@ -15,22 +15,21 @@ describe("GrayPaper compatibility", { concurrency: false }, () => {
15
15
  assert.equal(Compatibility.is(defaultVersion), true);
16
16
  });
17
17
  it("Should check with env variable if env variable was set", () => {
18
- const gpVersion = GpVersion.V0_7_0;
18
+ const gpVersion = GpVersion.V0_7_2;
19
19
  Compatibility.override(gpVersion);
20
20
  assert.equal(Compatibility.is(gpVersion), true);
21
21
  });
22
22
  it("Should check an order of versions (isGreaterOrEqual)", () => {
23
- const gpVersion = GpVersion.V0_7_0;
23
+ const gpVersion = GpVersion.V0_7_1;
24
24
  Compatibility.override(gpVersion);
25
- assert.equal(Compatibility.isGreaterOrEqual(GpVersion.V0_7_0), true);
26
- assert.equal(Compatibility.isGreaterOrEqual(GpVersion.V0_7_1), false);
25
+ assert.equal(Compatibility.isGreaterOrEqual(GpVersion.V0_7_1), true);
27
26
  assert.equal(Compatibility.isGreaterOrEqual(GpVersion.V0_7_2), false);
28
27
  });
29
28
  it("Should order values by versions and get the one for highest version matching", () => {
30
29
  const gpVersion = GpVersion.V0_7_1;
31
30
  Compatibility.override(gpVersion);
32
31
  const record = {
33
- [GpVersion.V0_7_0]: "low",
32
+ [GpVersion.V0_7_1]: "low",
34
33
  [GpVersion.V0_7_2]: "high",
35
34
  };
36
35
  const result = Compatibility.selectIfGreaterOrEqual({ fallback: "default", versions: record });
@@ -40,7 +39,6 @@ describe("GrayPaper compatibility", { concurrency: false }, () => {
40
39
  const gpVersion = GpVersion.V0_7_1;
41
40
  Compatibility.override(gpVersion);
42
41
  const record = {
43
- [GpVersion.V0_7_0]: "low",
44
42
  [GpVersion.V0_7_1]: "mid",
45
43
  [GpVersion.V0_7_2]: "high",
46
44
  };
@@ -51,7 +49,6 @@ describe("GrayPaper compatibility", { concurrency: false }, () => {
51
49
  const gpVersion = GpVersion.V0_7_2;
52
50
  Compatibility.override(gpVersion);
53
51
  const record = {
54
- [GpVersion.V0_7_0]: "low",
55
52
  [GpVersion.V0_7_1]: "mid",
56
53
  [GpVersion.V0_7_2]: "high",
57
54
  };
@@ -59,17 +56,16 @@ describe("GrayPaper compatibility", { concurrency: false }, () => {
59
56
  assert.equal(result, "high");
60
57
  });
61
58
  it("Should return default if no version is greater or equal", () => {
62
- const gpVersion = GpVersion.V0_7_0;
59
+ const gpVersion = GpVersion.V0_7_1;
63
60
  Compatibility.override(gpVersion);
64
61
  const record = {
65
- [GpVersion.V0_7_1]: "mid",
66
62
  [GpVersion.V0_7_2]: "high",
67
63
  };
68
64
  const result = Compatibility.selectIfGreaterOrEqual({ fallback: "default", versions: record });
69
65
  assert.equal(result, "default");
70
66
  });
71
67
  it("Should return default if record is empty", () => {
72
- const gpVersion = GpVersion.V0_7_0;
68
+ const gpVersion = GpVersion.V0_7_1;
73
69
  Compatibility.override(gpVersion);
74
70
  const result = Compatibility.selectIfGreaterOrEqual({ fallback: "default", versions: {} });
75
71
  assert.equal(result, "default");
@@ -1,8 +1,8 @@
1
1
  import { BytesBlob } from "#@typeberry/bytes";
2
2
  import type { IpcHandler } from "#@typeberry/fuzz-proto";
3
- import type { StreamHandler, StreamId, StreamKindOf, StreamMessageSender } from "#@typeberry/jamnp-s";
3
+ import { type StreamHandler, type StreamId, type StreamKindOf, type StreamMessageSender } from "#@typeberry/jamnp-s";
4
4
  import type { IpcSender } from "../server.js";
5
- import { NewStream } from "./stream.js";
5
+ import { type IpcStreamId, NewStream } from "./stream.js";
6
6
  export type ResponseHandler = (err: Error | null, response?: BytesBlob) => void;
7
7
  export declare class JamnpIpcHandler implements IpcHandler {
8
8
  private readonly sender;
@@ -31,9 +31,10 @@ export declare class JamnpIpcHandler implements IpcHandler {
31
31
  waitForEnd(): Promise<void>;
32
32
  }
33
33
  declare class EnvelopeSender implements StreamMessageSender {
34
- readonly streamId: StreamId;
34
+ private readonly ipcStreamId;
35
35
  private readonly sender;
36
- constructor(streamId: StreamId, sender: IpcSender);
36
+ readonly streamId: StreamId;
37
+ constructor(ipcStreamId: IpcStreamId, sender: IpcSender);
37
38
  open(newStream: NewStream): void;
38
39
  bufferAndSend(msg: BytesBlob): boolean;
39
40
  close(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../../packages/extensions/ipc/jamnp/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAc,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEjH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAsC,MAAM,aAAa,CAAC;AAE5E,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;AAWhF,qBAAa,eAAgB,YAAW,UAAU;IAUpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IATnC,gCAAgC;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2C;IACnE,yDAAyD;IACzD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAqC;IACpE,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,sCAAsC;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAED,MAAM,EAAE,SAAS;IAe9C,gCAAgC;IAChC,sBAAsB,CAAC,GAAG,QAAQ,EAAE,aAAa,EAAE;IAMnD,0DAA0D;IAC1D,gBAAgB,CAAC,QAAQ,SAAS,aAAa,EAC7C,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,EAClC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,GACxD,IAAI;IAWP,uCAAuC;IACvC,aAAa,CAAC,QAAQ,SAAS,aAAa,EAC1C,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC5B,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,GACxD,IAAI;IA2BP,8CAA8C;IACxC,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAkDrD,yDAAyD;IACzD,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;IAiBpC,qEAAqE;IACrE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAI5B;AAED,cAAM,cAAe,YAAW,mBAAmB;aAE/B,QAAQ,EAAE,QAAQ;IAClC,OAAO,CAAC,QAAQ,CAAC,MAAM;gBADP,QAAQ,EAAE,QAAQ,EACjB,MAAM,EAAE,SAAS;IAGpC,IAAI,CAAC,SAAS,EAAE,SAAS;IAUzB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO;IAWtC,KAAK,IAAI,IAAI;CAYd"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../../../packages/extensions/ipc/jamnp/handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,QAAQ,EAEb,KAAK,YAAY,EACjB,KAAK,mBAAmB,EAEzB,MAAM,oBAAoB,CAAC;AAI5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,KAAK,WAAW,EAAE,SAAS,EAAsC,MAAM,aAAa,CAAC;AAS9F,MAAM,MAAM,eAAe,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,IAAI,EAAE,QAAQ,CAAC,EAAE,SAAS,KAAK,IAAI,CAAC;AAWhF,qBAAa,eAAgB,YAAW,UAAU;IAUpC,OAAO,CAAC,QAAQ,CAAC,MAAM;IATnC,gCAAgC;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8C;IACtE,yDAAyD;IACzD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwC;IACvE,0DAA0D;IAC1D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,sCAAsC;IACtC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;gBAED,MAAM,EAAE,SAAS;IAe9C,gCAAgC;IAChC,sBAAsB,CAAC,GAAG,QAAQ,EAAE,aAAa,EAAE;IAMnD,0DAA0D;IAC1D,gBAAgB,CAAC,QAAQ,SAAS,aAAa,EAC7C,UAAU,EAAE,YAAY,CAAC,QAAQ,CAAC,EAClC,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,GACxD,IAAI;IAWP,uCAAuC;IACvC,aAAa,CAAC,QAAQ,SAAS,aAAa,EAC1C,IAAI,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC5B,IAAI,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,KAAK,IAAI,GACxD,IAAI;IA2BP,8CAA8C;IACxC,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;IAmErD,yDAAyD;IACzD,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAA;KAAE;IAkBpC,qEAAqE;IACrE,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAI5B;AAED,cAAM,cAAe,YAAW,mBAAmB;IAI/C,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJzB,SAAgB,QAAQ,EAAE,QAAQ,CAAC;gBAGhB,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,SAAS;IAKpC,IAAI,CAAC,SAAS,EAAE,SAAS;IAUzB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO;IAWtC,KAAK,IAAI,IAAI;CAYd"}
@@ -1,7 +1,14 @@
1
1
  import { BytesBlob } from "#@typeberry/bytes";
2
2
  import { Decoder, Encoder } from "#@typeberry/codec";
3
+ import { tryAsStreamId, } from "#@typeberry/jamnp-s";
3
4
  import { Logger } from "#@typeberry/logger";
5
+ import { assertNever } from "#@typeberry/utils";
4
6
  import { NewStream, StreamEnvelope, StreamEnvelopeType } from "./stream.js";
7
+ const IPC_PEER_ID = "ipc-peer";
8
+ /** Construct a protocol-level StreamId from an IPC-level numeric stream ID. */
9
+ function toStreamId(ipcStreamId) {
10
+ return tryAsStreamId(`${IPC_PEER_ID}:${ipcStreamId}`);
11
+ }
5
12
  const logger = Logger.new(import.meta.filename, "ext-ipc-jamnp");
6
13
  export class JamnpIpcHandler {
7
14
  sender;
@@ -37,9 +44,9 @@ export class JamnpIpcHandler {
37
44
  /** Re-use an existing stream of given kind if present. */
38
45
  withStreamOfKind(streamKind, work) {
39
46
  // find first stream id with given kind
40
- for (const [streamId, handler] of this.streams.entries()) {
47
+ for (const [ipcStreamId, handler] of this.streams.entries()) {
41
48
  if (handler.kind === streamKind) {
42
- work(handler, new EnvelopeSender(streamId, this.sender));
49
+ work(handler, new EnvelopeSender(ipcStreamId, this.sender));
43
50
  return;
44
51
  }
45
52
  }
@@ -52,19 +59,19 @@ export class JamnpIpcHandler {
52
59
  throw new Error(`Stream with unregistered handler of kind: ${kind} was requested to be opened.`);
53
60
  }
54
61
  // pick a stream id
55
- const getRandomStreamId = () => Math.floor(Math.random() * 2 ** 16);
62
+ const getRandomIpcStreamId = () => Math.floor(Math.random() * 2 ** 32);
56
63
  const streams = this.streams;
57
- const streamId = (function findStreamId() {
58
- const s = getRandomStreamId();
64
+ const ipcStreamId = (function findStreamId() {
65
+ const s = getRandomIpcStreamId();
59
66
  if (!streams.has(s)) {
60
67
  return s;
61
68
  }
62
69
  return findStreamId();
63
70
  })();
64
71
  // register the stream
65
- this.streams.set(streamId, handler);
66
- this.pendingStreams.set(streamId, true);
67
- const sender = new EnvelopeSender(streamId, this.sender);
72
+ this.streams.set(ipcStreamId, handler);
73
+ this.pendingStreams.set(ipcStreamId, true);
74
+ const sender = new EnvelopeSender(ipcStreamId, this.sender);
68
75
  sender.open(NewStream.create({ streamByte: kind }));
69
76
  work(handler, sender);
70
77
  }
@@ -72,24 +79,24 @@ export class JamnpIpcHandler {
72
79
  async onSocketMessage(msg) {
73
80
  // decode the message as `StreamEnvelope`
74
81
  const envelope = Decoder.decodeObject(StreamEnvelope.Codec, msg);
75
- const streamId = envelope.streamId;
76
- logger.log `[${streamId}] incoming message: ${envelope.type} ${envelope.data}`;
82
+ const ipcStreamId = envelope.streamId;
83
+ logger.log `[${ipcStreamId}] incoming message: ${envelope.type} ${envelope.data}`;
77
84
  // check if this is a already known stream id
78
- const streamHandler = this.streams.get(streamId);
79
- const streamSender = new EnvelopeSender(streamId, this.sender);
85
+ const streamHandler = this.streams.get(ipcStreamId);
86
+ const streamSender = new EnvelopeSender(ipcStreamId, this.sender);
80
87
  // we don't know that stream yet, so it has to be a new one
81
88
  if (streamHandler === undefined) {
82
89
  // closing or message of unknown stream - ignore.
83
90
  if (envelope.type !== StreamEnvelopeType.Open) {
84
- logger.warn `[${streamId}] (unknown) got invalid type ${envelope.type}.`;
91
+ logger.warn `[${ipcStreamId}] (unknown) got invalid type ${envelope.type}.`;
85
92
  return;
86
93
  }
87
94
  const newStream = Decoder.decodeObject(NewStream.Codec, envelope.data);
88
95
  const handler = this.streamHandlers.get(newStream.streamByte);
89
96
  if (handler !== undefined) {
90
- logger.log `[${streamId}] new stream for ${handler.kind}`;
97
+ logger.log `[${ipcStreamId}] new stream for ${handler.kind}`;
91
98
  // insert the stream
92
- this.streams.set(streamId, handler);
99
+ this.streams.set(ipcStreamId, handler);
93
100
  // Just send back the same stream byte.
94
101
  streamSender.open(newStream);
95
102
  return;
@@ -98,31 +105,47 @@ export class JamnpIpcHandler {
98
105
  streamSender.close();
99
106
  return;
100
107
  }
101
- // close the stream
102
- if (envelope.type === StreamEnvelopeType.Close) {
103
- const handler = this.streams.get(streamId);
104
- handler?.onClose(streamId, false);
105
- this.streams.delete(streamId);
106
- return;
107
- }
108
- if (envelope.type !== StreamEnvelopeType.Msg) {
108
+ if (envelope.type === StreamEnvelopeType.Open) {
109
109
  // display a warning but only if the stream was not pending for confirmation.
110
- if (!this.pendingStreams.delete(streamId)) {
111
- logger.warn `[${streamId}] got invalid type ${envelope.type}.`;
110
+ if (!this.pendingStreams.delete(ipcStreamId)) {
111
+ logger.warn `[${ipcStreamId}] got invalid type ${envelope.type}.`;
112
112
  }
113
113
  return;
114
114
  }
115
+ // reject stream messages without open ack first.
116
+ if (this.pendingStreams.has(ipcStreamId)) {
117
+ logger.warn `[${ipcStreamId}] got invalid type ${envelope.type}. Expected Open.`;
118
+ // closing the connection and removing the stream from pending.
119
+ this.pendingStreams.delete(ipcStreamId);
120
+ // the stream should not be in the collection yet, but we remove it just for safety.
121
+ this.streams.delete(ipcStreamId);
122
+ streamSender.close();
123
+ return;
124
+ }
115
125
  // this is a known stream, so just dispatch the message.
116
- streamHandler.onStreamMessage(streamSender, envelope.data);
126
+ if (envelope.type === StreamEnvelopeType.Msg) {
127
+ streamHandler.onStreamMessage(streamSender, envelope.data);
128
+ return;
129
+ }
130
+ // close the stream
131
+ if (envelope.type === StreamEnvelopeType.Close) {
132
+ streamHandler.onClose(toStreamId(ipcStreamId), false);
133
+ this.streams.delete(ipcStreamId);
134
+ // not really needed, but just for sure.
135
+ this.pendingStreams.delete(ipcStreamId);
136
+ return;
137
+ }
138
+ assertNever(envelope.type);
117
139
  }
118
140
  /** Notify about termination of the underlying socket. */
119
141
  onClose({ error }) {
120
142
  logger.log `Closing the handler. Reason: ${error !== undefined ? error.message : "close"}.`;
121
143
  // Socket closed - we should probably clear everything.
122
- for (const [streamId, handler] of this.streams.entries()) {
123
- handler.onClose(streamId, error === undefined);
144
+ for (const [ipcStreamId, handler] of this.streams.entries()) {
145
+ handler.onClose(toStreamId(ipcStreamId), error !== undefined);
124
146
  }
125
147
  this.streams.clear();
148
+ this.pendingStreams.clear();
126
149
  // finish the handler.
127
150
  this.onEnd.finished = true;
128
151
  if (error !== undefined) {
@@ -139,24 +162,26 @@ export class JamnpIpcHandler {
139
162
  }
140
163
  }
141
164
  class EnvelopeSender {
142
- streamId;
165
+ ipcStreamId;
143
166
  sender;
144
- constructor(streamId, sender) {
145
- this.streamId = streamId;
167
+ streamId;
168
+ constructor(ipcStreamId, sender) {
169
+ this.ipcStreamId = ipcStreamId;
146
170
  this.sender = sender;
171
+ this.streamId = toStreamId(ipcStreamId);
147
172
  }
148
173
  open(newStream) {
149
174
  const msg = Encoder.encodeObject(NewStream.Codec, newStream);
150
- this.sender.send(Encoder.encodeObject(StreamEnvelope.Codec, StreamEnvelope.create({ streamId: this.streamId, type: StreamEnvelopeType.Open, data: msg })));
175
+ this.sender.send(Encoder.encodeObject(StreamEnvelope.Codec, StreamEnvelope.create({ streamId: this.ipcStreamId, type: StreamEnvelopeType.Open, data: msg })));
151
176
  }
152
177
  bufferAndSend(msg) {
153
- this.sender.send(Encoder.encodeObject(StreamEnvelope.Codec, StreamEnvelope.create({ streamId: this.streamId, type: StreamEnvelopeType.Msg, data: msg })));
178
+ this.sender.send(Encoder.encodeObject(StreamEnvelope.Codec, StreamEnvelope.create({ streamId: this.ipcStreamId, type: StreamEnvelopeType.Msg, data: msg })));
154
179
  // we are buffering until we run OOM
155
180
  return true;
156
181
  }
157
182
  close() {
158
183
  this.sender.send(Encoder.encodeObject(StreamEnvelope.Codec, StreamEnvelope.create({
159
- streamId: this.streamId,
184
+ streamId: this.ipcStreamId,
160
185
  type: StreamEnvelopeType.Close,
161
186
  data: BytesBlob.blobFromNumbers([]),
162
187
  })));
@@ -1,18 +1,20 @@
1
1
  import type { BytesBlob } from "#@typeberry/bytes";
2
2
  import { type CodecRecord } from "#@typeberry/codec";
3
- import type { StreamId, StreamKind } from "#@typeberry/jamnp-s";
4
- import { type U8 } from "#@typeberry/numbers";
3
+ import type { StreamKind } from "#@typeberry/jamnp-s";
4
+ import { type U8, type U32 } from "#@typeberry/numbers";
5
+ /** IPC-level stream identifier (u32), used for multiplexing streams over a single socket. */
6
+ export type IpcStreamId = U32;
5
7
  export declare enum StreamEnvelopeType {
6
8
  Msg = 0,
7
9
  Open = 1,
8
10
  Close = 2
9
11
  }
10
12
  export declare class StreamEnvelope {
11
- readonly streamId: StreamId;
13
+ readonly streamId: IpcStreamId;
12
14
  readonly type: StreamEnvelopeType;
13
15
  readonly data: BytesBlob;
14
16
  static Codec: import("@typeberry/codec").Descriptor<StreamEnvelope, import("@typeberry/codec").ViewOf<StreamEnvelope, {
15
- streamId: import("@typeberry/codec").Descriptor<import("@typeberry/numbers").U32, import("@typeberry/bytes").Bytes<4>>;
17
+ streamId: import("@typeberry/codec").Descriptor<U32, import("@typeberry/bytes").Bytes<4>>;
16
18
  type: import("@typeberry/codec").Descriptor<StreamEnvelopeType, U8>;
17
19
  data: import("@typeberry/codec").Descriptor<BytesBlob, BytesBlob>;
18
20
  }>>;
@@ -1 +1 @@
1
- {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../../../../packages/extensions/ipc/jamnp/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAAS,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAW,KAAK,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAEtD,oBAAY,kBAAkB;IAC5B,GAAG,IAAI;IACP,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED,qBAAa,cAAc;aA0BP,QAAQ,EAAE,QAAQ;aAClB,IAAI,EAAE,kBAAkB;aACxB,IAAI,EAAE,SAAS;IA3BjC,MAAM,CAAC,KAAK;;;;QAkBT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,cAAc,CAAC;IAInE,OAAO;CAKR;AAED,qBAAa,SAAS;aASgB,UAAU,EAAE,UAAU;IAR1D,MAAM,CAAC,KAAK;;QAET;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC;IAIpD,OAAO;CACR"}
1
+ {"version":3,"file":"stream.d.ts","sourceRoot":"","sources":["../../../../../../packages/extensions/ipc/jamnp/stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAAS,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAW,KAAK,EAAE,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEhE,6FAA6F;AAC7F,MAAM,MAAM,WAAW,GAAG,GAAG,CAAC;AAE9B,oBAAY,kBAAkB;IAC5B,GAAG,IAAI;IACP,IAAI,IAAI;IACR,KAAK,IAAI;CACV;AAED,qBAAa,cAAc;aA0BP,QAAQ,EAAE,WAAW;aACrB,IAAI,EAAE,kBAAkB;aACxB,IAAI,EAAE,SAAS;IA3BjC,MAAM,CAAC,KAAK;;;;QAkBT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,cAAc,CAAC;IAInE,OAAO;CAKR;AAED,qBAAa,SAAS;aASgB,UAAU,EAAE,UAAU;IAR1D,MAAM,CAAC,KAAK;;QAET;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC;IAIpD,OAAO;CACR"}
@@ -1,18 +1,18 @@
1
- export * as assurances from "./assurances.js";
1
+ export * from "./assurances.js";
2
2
  export * from "./block.js";
3
- export * as codecUtils from "./codec-utils.js";
3
+ export * from "./codec-utils.js";
4
4
  export * from "./common.js";
5
- export * as disputes from "./disputes.js";
6
- export * as guarantees from "./guarantees.js";
5
+ export * from "./disputes.js";
6
+ export * from "./guarantees.js";
7
7
  export * from "./hash.js";
8
8
  export * from "./header.js";
9
- export * as preimage from "./preimage.js";
10
- export * as refineContext from "./refine-context.js";
11
- export * as tickets from "./tickets.js";
9
+ export * from "./preimage.js";
10
+ export * from "./refine-context.js";
11
+ export * from "./tickets.js";
12
12
  export * from "./utils.js";
13
- export * as workItem from "./work-item.js";
13
+ export * from "./work-item.js";
14
14
  export * from "./work-item-segment.js";
15
- export * as workPackage from "./work-package.js";
16
- export * as workReport from "./work-report.js";
17
- export * as workResult from "./work-result.js";
15
+ export * from "./work-package.js";
16
+ export * from "./work-report.js";
17
+ export * from "./work-result.js";
18
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,cAAc,YAAY,CAAC;AAC3B,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,cAAc,aAAa,CAAC;AAC5B,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,aAAa,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,OAAO,KAAK,WAAW,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,UAAU,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,wBAAwB,CAAC;AACvC,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC"}
@@ -1,17 +1,17 @@
1
- export * as assurances from "./assurances.js";
1
+ export * from "./assurances.js";
2
2
  export * from "./block.js";
3
- export * as codecUtils from "./codec-utils.js";
3
+ export * from "./codec-utils.js";
4
4
  export * from "./common.js";
5
- export * as disputes from "./disputes.js";
6
- export * as guarantees from "./guarantees.js";
5
+ export * from "./disputes.js";
6
+ export * from "./guarantees.js";
7
7
  export * from "./hash.js";
8
8
  export * from "./header.js";
9
- export * as preimage from "./preimage.js";
10
- export * as refineContext from "./refine-context.js";
11
- export * as tickets from "./tickets.js";
9
+ export * from "./preimage.js";
10
+ export * from "./refine-context.js";
11
+ export * from "./tickets.js";
12
12
  export * from "./utils.js";
13
- export * as workItem from "./work-item.js";
13
+ export * from "./work-item.js";
14
14
  export * from "./work-item-segment.js";
15
- export * as workPackage from "./work-package.js";
16
- export * as workReport from "./work-report.js";
17
- export * as workResult from "./work-result.js";
15
+ export * from "./work-package.js";
16
+ export * from "./work-report.js";
17
+ export * from "./work-result.js";
@@ -8,6 +8,19 @@ import type { ServiceGas, ServiceId } from "./common.js";
8
8
  import type { CodeHash } from "./hash.js";
9
9
  import { MAX_NUMBER_OF_SEGMENTS, type SegmentIndex } from "./work-item-segment.js";
10
10
  type WorkItemExtrinsicHash = Opaque<OpaqueHash, "ExtrinsicHash">;
11
+ /**
12
+ * An opaque piece of data that the work item brings in.
13
+ *
14
+ * https://graypaper.fluffylabs.dev/#/ab2cdbd/1a1b001a1d00?v=0.7.2
15
+ */
16
+ export type WorkItemExtrinsic = Opaque<BytesBlob, "Extrinsic">;
17
+ /**
18
+ * Extrinsics that are needed by all [`WorkItem`]s and are specified via [`WorkItemExtrinsicSpec`].
19
+ *
20
+ * This is a flat-package of all extrinsics in a work package across all work items.
21
+ * For encoding it also requires the length of items to be known in advance.
22
+ */
23
+ export type WorkPackageExtrinsics = KnownSizeArray<Bytes<U32>, "Count of all extrinsics within work items in a work package">;
11
24
  /**
12
25
  * Definition of data segment that was exported by some work package earlier
13
26
  * and now is being imported by another work-item.
@@ -40,10 +53,6 @@ export declare class WorkItemExtrinsicSpec extends WithDebug {
40
53
  static create({ hash, len }: CodecRecord<WorkItemExtrinsicSpec>): WorkItemExtrinsicSpec;
41
54
  private constructor();
42
55
  }
43
- /**
44
- * Extrinsics that are needed by [`WorkItem`]s and are specified via [`WorkItemExtrinsicSpec`].
45
- */
46
- export type WorkItemExtrinsics = KnownSizeArray<Bytes<U32>, "Count of all extrinsics within work items in a work package">;
47
56
  /**
48
57
  * To encode/decode extrinsics that are specified via [`WorkItemExtrinsicSpec`]
49
58
  * we need to know their lenghts. Hence this is created dynamically.
@@ -1 +1 @@
1
- {"version":3,"file":"work-item.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block/work-item.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAS,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAU,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,KAAK,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEnF,KAAK,qBAAqB,GAAG,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AAEjE;;;GAGG;AACH,qBAAa,UAAW,SAAQ,SAAS;IAWrC;;;OAGG;aACa,QAAQ,EAAE,UAAU;IACpC,2CAA2C;aAC3B,KAAK,EAAE,YAAY;IAhBrC,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,UAAU,CAAC;IAI1D,OAAO;CAWR;AAED,gDAAgD;AAChD,qBAAa,qBAAsB,SAAQ,SAAS;IAWhD,+FAA+F;aAC/E,IAAI,EAAE,qBAAqB;IAC3C,2DAA2D;aAC3C,GAAG,EAAE,GAAG;IAb1B,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,WAAW,CAAC,qBAAqB,CAAC;IAI/D,OAAO;CAQR;AACD;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,cAAc,CAC7C,KAAK,CAAC,GAAG,CAAC,EACV,6DAA6D,CAC9D,CAAC;AAEF;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,QAAQ,EAAE,qSAgC5D;AAED;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,SAAS;IAuCnC,2BAA2B;aACX,OAAO,EAAE,SAAS;IAClC;;;;;OAKG;aACa,QAAQ,EAAE,QAAQ;IAClC,wBAAwB;aACR,OAAO,EAAE,SAAS;IAClC,sCAAsC;aACtB,cAAc,EAAE,UAAU;IAC1C,0CAA0C;aAC1B,kBAAkB,EAAE,UAAU;IAC9C,wFAAwF;aACxE,cAAc,EAAE,cAAc,CAAC,UAAU,EAAE,aAAa,OAAO,sBAAsB,EAAE,CAAC;IACxG,8EAA8E;aAC9D,SAAS,EAAE,qBAAqB,EAAE;IAClD,+DAA+D;aAC/C,WAAW,EAAE,GAAG;IA1DlC,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;QAaT;IAEH,MAAM,CAAC,MAAM,CAAC,EACZ,OAAO,EACP,QAAQ,EACR,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,WAAW,GACZ,EAAE,WAAW,CAAC,QAAQ,CAAC;IAaxB,OAAO;CAyBR"}
1
+ {"version":3,"file":"work-item.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block/work-item.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,KAAK,WAAW,EAAS,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAe,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,EAAU,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAE,KAAK,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,sBAAsB,EAAE,KAAK,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAEnF,KAAK,qBAAqB,GAAG,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AAEjE;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,MAAM,qBAAqB,GAAG,cAAc,CAChD,KAAK,CAAC,GAAG,CAAC,EACV,6DAA6D,CAC9D,CAAC;AAEF;;;GAGG;AACH,qBAAa,UAAW,SAAQ,SAAS;IAWrC;;;OAGG;aACa,QAAQ,EAAE,UAAU;IACpC,2CAA2C;aAC3B,KAAK,EAAE,YAAY;IAhBrC,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,WAAW,CAAC,UAAU,CAAC;IAI1D,OAAO;CAWR;AAED,gDAAgD;AAChD,qBAAa,qBAAsB,SAAQ,SAAS;IAWhD,+FAA+F;aAC/E,IAAI,EAAE,qBAAqB;IAC3C,2DAA2D;aAC3C,GAAG,EAAE,GAAG;IAb1B,MAAM,CAAC,KAAK;;;QAGT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,WAAW,CAAC,qBAAqB,CAAC;IAI/D,OAAO;CAQR;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,QAAQ,EAAE,qSAgC5D;AAED;;;;GAIG;AACH,qBAAa,QAAS,SAAQ,SAAS;IAuCnC,2BAA2B;aACX,OAAO,EAAE,SAAS;IAClC;;;;;OAKG;aACa,QAAQ,EAAE,QAAQ;IAClC,wBAAwB;aACR,OAAO,EAAE,SAAS;IAClC,sCAAsC;aACtB,cAAc,EAAE,UAAU;IAC1C,0CAA0C;aAC1B,kBAAkB,EAAE,UAAU;IAC9C,wFAAwF;aACxE,cAAc,EAAE,cAAc,CAAC,UAAU,EAAE,aAAa,OAAO,sBAAsB,EAAE,CAAC;IACxG,8EAA8E;aAC9D,SAAS,EAAE,qBAAqB,EAAE;IAClD,+DAA+D;aAC/C,WAAW,EAAE,GAAG;IA1DlC,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;QAaT;IAEH,MAAM,CAAC,MAAM,CAAC,EACZ,OAAO,EACP,QAAQ,EACR,OAAO,EACP,cAAc,EACd,kBAAkB,EAClB,cAAc,EACd,SAAS,EACT,WAAW,GACZ,EAAE,WAAW,CAAC,QAAQ,CAAC;IAaxB,OAAO;CAyBR"}
@@ -10,8 +10,10 @@ import { WorkItem } from "./work-item.js";
10
10
  /** Possible number of work items in the package or results in the report. */
11
11
  /** Constrained by I=16 https://graypaper.fluffylabs.dev/#/68eaa1f/417a00417a00?v=0.6.4 */
12
12
  export type WorkItemsCount = U8;
13
- /** Verify the value is within the `WorkItemsCount` bounds. */
13
+ /** Convert the value to `WorkItemsCount` bounds. */
14
14
  export declare function tryAsWorkItemsCount(len: number): WorkItemsCount;
15
+ /** Verify the value is within the `WorkItemsCount` bounds. */
16
+ export declare function isWorkItemsCount(len: number): len is WorkItemsCount;
15
17
  /** Minimal number of work items in the work package or results in work report. */
16
18
  export declare const MIN_NUMBER_OF_WORK_ITEMS = 1;
17
19
  /** `I`: Maximal number of work items in the work package or results in work report. */
@@ -1 +1 @@
1
- {"version":3,"file":"work-package.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block/work-package.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAAS,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAW,KAAK,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAS,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,6EAA6E;AAC7E,0FAA0F;AAC1F,MAAM,MAAM,cAAc,GAAG,EAAE,CAAC;AAEhC,8DAA8D;AAC9D,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAM/D;AAED,kFAAkF;AAClF,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,uFAAuF;AACvF,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;;;;;GAMG;AACH,qBAAa,WAAY,SAAQ,SAAS;IAyBtC,wDAAwD;aACxC,aAAa,EAAE,SAAS;IACxC,kEAAkE;aAClD,YAAY,EAAE,SAAS;IACvC,mCAAmC;aACnB,YAAY,EAAE,QAAQ;IACtC,8CAA8C;aAC9B,eAAe,EAAE,SAAS;IAC1C,2DAA2D;aAC3C,OAAO,EAAE,aAAa;IACtC;;;;;OAKG;aACa,KAAK,EAAE,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC;IAxCjE,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAUT;IAEH,MAAM,CAAC,MAAM,CAAC,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,OAAO,EACP,KAAK,GACN,EAAE,WAAW,CAAC,WAAW,CAAC;IAI3B,OAAO;CAqBR;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"work-package.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block/work-package.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,WAAW,EAAS,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,OAAO,EAAW,KAAK,EAAE,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAS,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,6EAA6E;AAC7E,0FAA0F;AAC1F,MAAM,MAAM,cAAc,GAAG,EAAE,CAAC;AAEhC,oDAAoD;AACpD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAM/D;AAED,8DAA8D;AAC9D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,IAAI,cAAc,CAEnE;AAED,kFAAkF;AAClF,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAC1C,uFAAuF;AACvF,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAE3C;;;;;;GAMG;AACH,qBAAa,WAAY,SAAQ,SAAS;IAyBtC,wDAAwD;aACxC,aAAa,EAAE,SAAS;IACxC,kEAAkE;aAClD,YAAY,EAAE,SAAS;IACvC,mCAAmC;aACnB,YAAY,EAAE,QAAQ;IACtC,8CAA8C;aAC9B,eAAe,EAAE,SAAS;IAC1C,2DAA2D;aAC3C,OAAO,EAAE,aAAa;IACtC;;;;;OAKG;aACa,KAAK,EAAE,cAAc,CAAC,QAAQ,EAAE,cAAc,CAAC;IAxCjE,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAUT;IAEH,MAAM,CAAC,MAAM,CAAC,EACZ,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,OAAO,EACP,KAAK,GACN,EAAE,WAAW,CAAC,WAAW,CAAC;IAI3B,OAAO;CAqBR;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC"}
@@ -5,14 +5,18 @@ import { tryAsU8 } from "#@typeberry/numbers";
5
5
  import { check, WithDebug } from "#@typeberry/utils";
6
6
  import { RefineContext } from "./refine-context.js";
7
7
  import { WorkItem } from "./work-item.js";
8
- /** Verify the value is within the `WorkItemsCount` bounds. */
8
+ /** Convert the value to `WorkItemsCount` bounds. */
9
9
  export function tryAsWorkItemsCount(len) {
10
10
  check `
11
- ${len >= MIN_NUMBER_OF_WORK_ITEMS && len <= MAX_NUMBER_OF_WORK_ITEMS}
11
+ ${isWorkItemsCount(len)}
12
12
  WorkItemsCount: Expected '${MIN_NUMBER_OF_WORK_ITEMS} <= count <= ${MAX_NUMBER_OF_WORK_ITEMS}' got ${len}
13
13
  `;
14
14
  return tryAsU8(len);
15
15
  }
16
+ /** Verify the value is within the `WorkItemsCount` bounds. */
17
+ export function isWorkItemsCount(len) {
18
+ return len >= MIN_NUMBER_OF_WORK_ITEMS && len <= MAX_NUMBER_OF_WORK_ITEMS;
19
+ }
16
20
  /** Minimal number of work items in the work package or results in work report. */
17
21
  export const MIN_NUMBER_OF_WORK_ITEMS = 1;
18
22
  /** `I`: Maximal number of work items in the work package or results in work report. */
@@ -45,11 +45,9 @@ export declare class WorkExecResult extends WithDebug {
45
45
  /** Optional octet sequence - available only if `kind === ok` */
46
46
  readonly okBlob: BytesBlob | null;
47
47
  static Codec: import("@typeberry/codec").Descriptor<WorkExecResult, WorkExecResultUnion>;
48
- constructor(
49
- /** The execution result tag. */
50
- kind: WorkExecResultKind,
51
- /** Optional octet sequence - available only if `kind === ok` */
52
- okBlob?: BytesBlob | null);
48
+ static ok(blob: BytesBlob): WorkExecResult;
49
+ static error(kind: Exclude<WorkExecResultKind, WorkExecResultKind.ok>): WorkExecResult;
50
+ private constructor();
53
51
  }
54
52
  /**
55
53
  * Five fields describing the level of activity which this workload
@@ -1 +1 @@
1
- {"version":3,"file":"work-result.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block/work-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,WAAW,EAAS,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,wDAAwD;AACxD,oBAAY,kBAAkB;IAC5B,6EAA6E;IAC7E,EAAE,IAAI;IACN,yDAAyD;IACzD,QAAQ,IAAI;IACZ,2CAA2C;IAC3C,KAAK,IAAI;IACT,8DAA8D;IAC9D,wBAAwB,IAAI;IAC5B,wFAAwF;IACxF,YAAY,IAAI;IAChB,iEAAiE;IACjE,OAAO,IAAI;IACX,0EAA0E;IAC1E,YAAY,IAAI;CACjB;AAED,KAAK,mBAAmB,GACpB;IAAE,IAAI,EAAE,kBAAkB,CAAC,EAAE,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,kBAAkB,CAAC,QAAQ,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,kBAAkB,CAAC,wBAAwB,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,kBAAkB,CAAC,YAAY,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,kBAAkB,CAAC,YAAY,CAAA;CAAE,CAAC;AAE9C,iDAAiD;AACjD,qBAAa,cAAe,SAAQ,SAAS;IAsBzC,gCAAgC;aAChB,IAAI,EAAE,kBAAkB;IACxC,gEAAgE;aAChD,MAAM,EAAE,SAAS,GAAG,IAAI;IAxB1C,MAAM,CAAC,KAAK,6EAkBR;;IAGF,gCAAgC;IAChB,IAAI,EAAE,kBAAkB;IACxC,gEAAgE;IAChD,MAAM,GAAE,SAAS,GAAG,IAAW;CAIlD;AAED;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,SAAS;IAoBzC,wDAAwD;aACxC,OAAO,EAAE,UAAU;IACnC,4CAA4C;aAC5B,gBAAgB,EAAE,GAAG;IACrC,+DAA+D;aAC/C,cAAc,EAAE,GAAG;IACnC,6DAA6D;aAC7C,aAAa,EAAE,GAAG;IAClC,4CAA4C;aAC5B,gBAAgB,EAAE,GAAG;IA5BvC,MAAM,CAAC,KAAK;;;;;;QAMT;IAEH,MAAM,CAAC,MAAM,CAAC,EACZ,OAAO,EACP,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,gBAAgB,GACjB,EAAE,WAAW,CAAC,cAAc,CAAC;IAI9B,OAAO;CAcR;AAED;;;;GAIG;AACH,qBAAa,UAAU;IAenB,wFAAwF;aACxE,SAAS,EAAE,SAAS;IACpC,0EAA0E;aAC1D,QAAQ,EAAE,QAAQ;IAClC;;;;;;OAMG;aACa,WAAW,EAAE,UAAU;IACvC;;;;;OAKG;aACa,GAAG,EAAE,UAAU;IAC/B,6DAA6D;aAC7C,MAAM,EAAE,cAAc;IACtC;;;;;;OAMG;aACa,IAAI,EAAE,cAAc;IA1CtC,MAAM,CAAC,KAAK;;;;;;;;;;;;;QAOT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,UAAU,CAAC;IAI9F,OAAO;CA+BR"}
1
+ {"version":3,"file":"work-result.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block/work-result.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,WAAW,EAAS,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAa,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE1C,wDAAwD;AACxD,oBAAY,kBAAkB;IAC5B,6EAA6E;IAC7E,EAAE,IAAI;IACN,yDAAyD;IACzD,QAAQ,IAAI;IACZ,2CAA2C;IAC3C,KAAK,IAAI;IACT,8DAA8D;IAC9D,wBAAwB,IAAI;IAC5B,wFAAwF;IACxF,YAAY,IAAI;IAChB,iEAAiE;IACjE,OAAO,IAAI;IACX,0EAA0E;IAC1E,YAAY,IAAI;CACjB;AAED,KAAK,mBAAmB,GACpB;IAAE,IAAI,EAAE,kBAAkB,CAAC,EAAE,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GAClD;IAAE,IAAI,EAAE,kBAAkB,CAAC,QAAQ,CAAA;CAAE,GACrC;IAAE,IAAI,EAAE,kBAAkB,CAAC,KAAK,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,kBAAkB,CAAC,wBAAwB,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,kBAAkB,CAAC,YAAY,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,kBAAkB,CAAC,OAAO,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,kBAAkB,CAAC,YAAY,CAAA;CAAE,CAAC;AAE9C,iDAAiD;AACjD,qBAAa,cAAe,SAAQ,SAAS;IA8BzC,gCAAgC;aAChB,IAAI,EAAE,kBAAkB;IACxC,gEAAgE;aAChD,MAAM,EAAE,SAAS,GAAG,IAAI;IAhC1C,MAAM,CAAC,KAAK,6EAkBR;IAEJ,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS;IAIzB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,OAAO,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,EAAE,CAAC;IAIrE,OAAO;CAQR;AAED;;;;;;GAMG;AACH,qBAAa,cAAe,SAAQ,SAAS;IAoBzC,wDAAwD;aACxC,OAAO,EAAE,UAAU;IACnC,4CAA4C;aAC5B,gBAAgB,EAAE,GAAG;IACrC,+DAA+D;aAC/C,cAAc,EAAE,GAAG;IACnC,6DAA6D;aAC7C,aAAa,EAAE,GAAG;IAClC,4CAA4C;aAC5B,gBAAgB,EAAE,GAAG;IA5BvC,MAAM,CAAC,KAAK;;;;;;QAMT;IAEH,MAAM,CAAC,MAAM,CAAC,EACZ,OAAO,EACP,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,gBAAgB,GACjB,EAAE,WAAW,CAAC,cAAc,CAAC;IAI9B,OAAO;CAcR;AAED;;;;GAIG;AACH,qBAAa,UAAU;IAenB,wFAAwF;aACxE,SAAS,EAAE,SAAS;IACpC,0EAA0E;aAC1D,QAAQ,EAAE,QAAQ;IAClC;;;;;;OAMG;aACa,WAAW,EAAE,UAAU;IACvC;;;;;OAKG;aACa,GAAG,EAAE,UAAU;IAC/B,6DAA6D;aAC7C,MAAM,EAAE,cAAc;IACtC;;;;;;OAMG;aACa,IAAI,EAAE,cAAc;IA1CtC,MAAM,CAAC,KAAK;;;;;;;;;;;;;QAOT;IAEH,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,UAAU,CAAC;IAI9F,OAAO;CA+BR"}
@@ -40,6 +40,12 @@ export class WorkExecResult extends WithDebug {
40
40
  }
41
41
  return { kind: x.kind };
42
42
  }, (x) => new WorkExecResult(x.kind, x.kind === WorkExecResultKind.ok ? x.okBlob : null));
43
+ static ok(blob) {
44
+ return new WorkExecResult(WorkExecResultKind.ok, blob);
45
+ }
46
+ static error(kind) {
47
+ return new WorkExecResult(kind, null);
48
+ }
43
49
  constructor(
44
50
  /** The execution result tag. */
45
51
  kind,