@typeberry/lib 0.5.3 → 0.5.4-472e282
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +8 -4
- package/packages/core/hash/hash.d.ts.map +1 -1
- package/packages/core/hash/hash.js +1 -0
- package/packages/core/networking/certificate.d.ts.map +1 -1
- package/packages/core/networking/certificate.js +1 -0
- package/packages/core/networking/package.json +1 -1
- package/packages/core/networking/setup.d.ts.map +1 -1
- package/packages/core/networking/setup.js +16 -12
- package/packages/core/numbers/index.d.ts +4 -0
- package/packages/core/numbers/index.d.ts.map +1 -1
- package/packages/core/numbers/index.js +4 -4
- package/packages/core/pvm-host-calls/host-calls-executor.d.ts +23 -17
- package/packages/core/pvm-host-calls/host-calls-executor.d.ts.map +1 -1
- package/packages/core/pvm-host-calls/host-calls-executor.js +23 -31
- package/packages/core/pvm-interpreter/ops/math-consts.d.ts +2 -3
- package/packages/core/pvm-interpreter/ops/math-consts.d.ts.map +1 -1
- package/packages/core/pvm-interpreter/ops/math-consts.js +2 -3
- package/packages/core/pvm-interpreter/ops/math-ops.js +3 -3
- package/packages/core/pvm-interpreter/ops/math-utils.js +13 -13
- package/packages/core/pvm-interpreter/ops/math-utils.test.js +17 -16
- package/packages/core/telemetry/package.json +1 -1
- package/packages/core/utils/compatibility.d.ts +0 -1
- package/packages/core/utils/compatibility.d.ts.map +1 -1
- package/packages/core/utils/compatibility.js +1 -2
- package/packages/core/utils/compatibility.test.js +6 -10
- package/packages/extensions/ipc/jamnp/handler.d.ts +5 -4
- package/packages/extensions/ipc/jamnp/handler.d.ts.map +1 -1
- package/packages/extensions/ipc/jamnp/handler.js +59 -34
- package/packages/extensions/ipc/jamnp/stream.d.ts +6 -4
- package/packages/extensions/ipc/jamnp/stream.d.ts.map +1 -1
- package/packages/jam/block/index.d.ts +11 -11
- package/packages/jam/block/index.d.ts.map +1 -1
- package/packages/jam/block/index.js +11 -11
- package/packages/jam/block/work-item.d.ts +13 -4
- package/packages/jam/block/work-item.d.ts.map +1 -1
- package/packages/jam/block/work-package.d.ts +3 -1
- package/packages/jam/block/work-package.d.ts.map +1 -1
- package/packages/jam/block/work-package.js +6 -2
- package/packages/jam/block/work-result.d.ts +3 -5
- package/packages/jam/block/work-result.d.ts.map +1 -1
- package/packages/jam/block/work-result.js +6 -0
- package/packages/jam/block-json/block.d.ts +125 -0
- package/packages/jam/block-json/block.d.ts.map +1 -1
- package/packages/jam/block-json/block.js +9 -2
- package/packages/jam/block-json/work-result.d.ts.map +1 -1
- package/packages/jam/block-json/work-result.js +6 -6
- package/packages/jam/database-lmdb/states.test.js +2 -3
- package/packages/jam/executor/index.d.ts +4 -0
- package/packages/jam/executor/index.d.ts.map +1 -0
- package/packages/jam/executor/index.js +2 -0
- package/packages/jam/{transition/accumulate → executor}/pvm-executor.d.ts +19 -16
- package/packages/jam/executor/pvm-executor.d.ts.map +1 -0
- package/packages/jam/{transition/accumulate → executor}/pvm-executor.js +46 -3
- package/packages/jam/fuzz-proto/v1/handler.d.ts +1 -1
- package/packages/jam/fuzz-proto/v1/handler.d.ts.map +1 -1
- package/packages/jam/fuzz-proto/v1/handler.js +43 -19
- package/packages/jam/fuzz-proto/v1/types.d.ts +1 -1
- package/packages/jam/in-core/externalities/refine.d.ts +24 -0
- package/packages/jam/in-core/externalities/refine.d.ts.map +1 -0
- package/packages/jam/in-core/externalities/refine.js +36 -0
- package/packages/jam/in-core/in-core.d.ts +60 -0
- package/packages/jam/in-core/in-core.d.ts.map +1 -0
- package/packages/jam/in-core/in-core.js +294 -0
- package/packages/jam/in-core/in-core.test.d.ts +2 -0
- package/packages/jam/in-core/in-core.test.d.ts.map +1 -0
- package/packages/jam/in-core/in-core.test.js +81 -0
- package/packages/jam/in-core/index.d.ts +2 -0
- package/packages/jam/in-core/index.d.ts.map +1 -0
- package/packages/jam/in-core/index.js +1 -0
- package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/bless.js +6 -10
- package/packages/jam/jam-host-calls/accumulate/bless.test.js +32 -73
- package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/accumulate/new.js +2 -4
- package/packages/jam/jam-host-calls/accumulate/new.test.js +4 -5
- package/packages/jam/jam-host-calls/general/fetch.d.ts +1 -57
- package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
- package/packages/jam/jam-host-calls/general/fetch.js +6 -29
- package/packages/jam/jam-host-calls/general/fetch.test.js +2 -58
- package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
- package/packages/jam/jamnp-s/peers.js +10 -0
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +1 -1
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +10 -8
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +11 -9
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +3 -3
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +9 -9
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +8 -6
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +16 -16
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +2 -2
- package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
- package/packages/jam/jamnp-s/protocol/stream.d.ts +13 -7
- package/packages/jam/jamnp-s/protocol/stream.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/stream.js +5 -4
- package/packages/jam/jamnp-s/protocol/test-utils.d.ts +1 -1
- package/packages/jam/jamnp-s/protocol/test-utils.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/test-utils.js +9 -12
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +2 -2
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
- package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +1 -1
- package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
- package/packages/jam/jamnp-s/stream-manager.js +7 -5
- package/packages/jam/jamnp-s/stream-manager.test.js +8 -5
- package/packages/jam/jamnp-s/tasks/sync.js +1 -1
- package/packages/jam/node/jam-config.d.ts +4 -1
- package/packages/jam/node/jam-config.d.ts.map +1 -1
- package/packages/jam/node/jam-config.js +6 -2
- package/packages/jam/node/main.d.ts.map +1 -1
- package/packages/jam/node/main.js +5 -4
- package/packages/jam/node/package.json +1 -1
- package/packages/jam/node/reader.d.ts +25 -25
- package/packages/jam/node/workers.d.ts +183 -183
- package/packages/jam/rpc-validation/types.d.ts +7 -3
- package/packages/jam/rpc-validation/types.d.ts.map +1 -1
- package/packages/jam/rpc-validation/validation.d.ts +254 -36
- package/packages/jam/rpc-validation/validation.d.ts.map +1 -1
- package/packages/jam/rpc-validation/validation.js +20 -2
- package/packages/jam/state/accumulation-queue.d.ts +26 -26
- package/packages/jam/state/assurances.d.ts +26 -26
- package/packages/jam/state/in-memory-state.d.ts.map +1 -1
- package/packages/jam/state/in-memory-state.js +2 -3
- package/packages/jam/state/privileged-services.d.ts +1 -1
- package/packages/jam/state/privileged-services.d.ts.map +1 -1
- package/packages/jam/state/privileged-services.js +1 -6
- package/packages/jam/state/service.d.ts +1 -1
- package/packages/jam/state/service.d.ts.map +1 -1
- package/packages/jam/state/statistics.d.ts +0 -8
- package/packages/jam/state/statistics.d.ts.map +1 -1
- package/packages/jam/state/statistics.js +14 -44
- package/packages/jam/state/statistics.test.js +1 -8
- package/packages/jam/state/test.utils.d.ts +1 -1
- package/packages/jam/state/test.utils.d.ts.map +1 -1
- package/packages/jam/state/test.utils.js +6 -25
- package/packages/jam/state-json/accounts.d.ts +10 -0
- package/packages/jam/state-json/accounts.d.ts.map +1 -1
- package/packages/jam/state-json/accounts.js +47 -19
- package/packages/jam/state-json/dump.d.ts.map +1 -1
- package/packages/jam/state-json/dump.js +5 -9
- package/packages/jam/state-json/dump.test.js +2 -10
- package/packages/jam/state-json/statistics.d.ts +1 -1
- package/packages/jam/state-json/statistics.d.ts.map +1 -1
- package/packages/jam/state-json/statistics.js +1 -13
- package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +29 -31
- package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
- package/packages/jam/state-merkleization/serialize.d.ts +4 -4
- package/packages/jam/state-merkleization/serialize.d.ts.map +1 -1
- package/packages/jam/state-merkleization/serialize.js +5 -8
- package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
- package/packages/jam/state-merkleization/state-entries.test.js +1 -7
- package/packages/jam/state-vectors/index.d.ts +377 -5
- package/packages/jam/state-vectors/index.d.ts.map +1 -1
- package/packages/jam/state-vectors/index.js +3 -3
- package/packages/jam/transition/accumulate/accumulate-data.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulate-data.js +1 -2
- package/packages/jam/transition/accumulate/accumulate-queue.test.js +2 -2
- package/packages/jam/transition/accumulate/accumulate-state.d.ts +1 -2
- package/packages/jam/transition/accumulate/accumulate-state.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulate-utils.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulate-utils.js +2 -6
- package/packages/jam/transition/accumulate/accumulate-utils.test.js +4 -6
- package/packages/jam/transition/accumulate/accumulate.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulate.js +19 -33
- package/packages/jam/transition/accumulate/accumulate.test.js +2 -2
- package/packages/jam/transition/accumulate/accumulation-result-merge-utils.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/accumulation-result-merge-utils.js +1 -2
- package/packages/jam/transition/accumulate/accumulation-result-merge-utils.test.js +1 -2
- package/packages/jam/transition/accumulate/index.d.ts +0 -1
- package/packages/jam/transition/accumulate/index.d.ts.map +1 -1
- package/packages/jam/transition/accumulate/index.js +0 -1
- package/packages/jam/transition/accumulate/operand.d.ts +7 -7
- package/packages/jam/transition/chain-stf.d.ts +3 -5
- package/packages/jam/transition/chain-stf.d.ts.map +1 -1
- package/packages/jam/transition/chain-stf.js +5 -29
- package/packages/jam/transition/disputes/disputes.test.data2.d.ts +3 -3
- package/packages/jam/transition/disputes/disputes.test.data2.d.ts.map +1 -1
- package/packages/jam/transition/disputes/disputes.test.data2.js +2 -2
- package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
- package/packages/jam/transition/externalities/accumulate-externalities.js +22 -49
- package/packages/jam/transition/externalities/accumulate-externalities.test.js +8 -72
- package/packages/jam/transition/externalities/fetch-externalities.d.ts +8 -21
- package/packages/jam/transition/externalities/fetch-externalities.d.ts.map +1 -1
- package/packages/jam/transition/externalities/fetch-externalities.js +5 -53
- package/packages/jam/transition/externalities/fetch-externalities.test.js +201 -114
- package/packages/jam/transition/hasher.test.js +2 -2
- package/packages/jam/transition/reports/error.d.ts +3 -1
- package/packages/jam/transition/reports/error.d.ts.map +1 -1
- package/packages/jam/transition/reports/error.js +2 -0
- package/packages/jam/transition/reports/test.utils.d.ts.map +1 -1
- package/packages/jam/transition/reports/test.utils.js +2 -2
- package/packages/jam/transition/reports/verify-basic.d.ts.map +1 -1
- package/packages/jam/transition/reports/verify-basic.js +10 -0
- package/packages/jam/transition/reports/verify-basic.test.js +29 -0
- package/packages/jam/transition/statistics.d.ts +0 -7
- package/packages/jam/transition/statistics.d.ts.map +1 -1
- package/packages/jam/transition/statistics.js +2 -11
- package/packages/jam/transition/statistics.test.js +0 -40
- package/packages/workers/block-authorship/generator.test.d.ts +2 -0
- package/packages/workers/block-authorship/generator.test.d.ts.map +1 -0
- package/packages/workers/block-authorship/generator.test.js +200 -0
- package/packages/workers/block-authorship/main.d.ts.map +1 -1
- package/packages/workers/block-authorship/main.js +23 -4
- package/packages/workers/block-authorship/package.json +1 -1
- package/packages/workers/block-authorship/protocol.d.ts +53 -51
- package/packages/workers/block-authorship/protocol.d.ts.map +1 -1
- package/packages/workers/block-authorship/protocol.js +6 -3
- package/packages/workers/importer/importer.d.ts.map +1 -1
- package/packages/workers/importer/importer.js +0 -1
- package/packages/workers/importer/package.json +1 -1
- package/packages/workers/importer/protocol.d.ts +54 -54
- package/packages/workers/jam-network/protocol.d.ts +79 -79
- package/packages/jam/transition/accumulate/deferred-transfers.d.ts +0 -36
- package/packages/jam/transition/accumulate/deferred-transfers.d.ts.map +0 -1
- package/packages/jam/transition/accumulate/deferred-transfers.js +0 -95
- 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.
|
|
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.
|
|
23
|
+
const gpVersion = GpVersion.V0_7_1;
|
|
24
24
|
Compatibility.override(gpVersion);
|
|
25
|
-
assert.equal(Compatibility.isGreaterOrEqual(GpVersion.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
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
|
|
34
|
+
private readonly ipcStreamId;
|
|
35
35
|
private readonly sender;
|
|
36
|
-
|
|
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,
|
|
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 [
|
|
47
|
+
for (const [ipcStreamId, handler] of this.streams.entries()) {
|
|
41
48
|
if (handler.kind === streamKind) {
|
|
42
|
-
work(handler, new EnvelopeSender(
|
|
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
|
|
62
|
+
const getRandomIpcStreamId = () => Math.floor(Math.random() * 2 ** 32);
|
|
56
63
|
const streams = this.streams;
|
|
57
|
-
const
|
|
58
|
-
const s =
|
|
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(
|
|
66
|
-
this.pendingStreams.set(
|
|
67
|
-
const sender = new EnvelopeSender(
|
|
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
|
|
76
|
-
logger.log `[${
|
|
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(
|
|
79
|
-
const streamSender = new EnvelopeSender(
|
|
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 `[${
|
|
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 `[${
|
|
97
|
+
logger.log `[${ipcStreamId}] new stream for ${handler.kind}`;
|
|
91
98
|
// insert the stream
|
|
92
|
-
this.streams.set(
|
|
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
|
-
|
|
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(
|
|
111
|
-
logger.warn `[${
|
|
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
|
-
|
|
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 [
|
|
123
|
-
handler.onClose(
|
|
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
|
-
|
|
165
|
+
ipcStreamId;
|
|
143
166
|
sender;
|
|
144
|
-
|
|
145
|
-
|
|
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.
|
|
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.
|
|
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.
|
|
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 {
|
|
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:
|
|
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<
|
|
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,
|
|
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 *
|
|
1
|
+
export * from "./assurances.js";
|
|
2
2
|
export * from "./block.js";
|
|
3
|
-
export *
|
|
3
|
+
export * from "./codec-utils.js";
|
|
4
4
|
export * from "./common.js";
|
|
5
|
-
export *
|
|
6
|
-
export *
|
|
5
|
+
export * from "./disputes.js";
|
|
6
|
+
export * from "./guarantees.js";
|
|
7
7
|
export * from "./hash.js";
|
|
8
8
|
export * from "./header.js";
|
|
9
|
-
export *
|
|
10
|
-
export *
|
|
11
|
-
export *
|
|
9
|
+
export * from "./preimage.js";
|
|
10
|
+
export * from "./refine-context.js";
|
|
11
|
+
export * from "./tickets.js";
|
|
12
12
|
export * from "./utils.js";
|
|
13
|
-
export *
|
|
13
|
+
export * from "./work-item.js";
|
|
14
14
|
export * from "./work-item-segment.js";
|
|
15
|
-
export *
|
|
16
|
-
export *
|
|
17
|
-
export *
|
|
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,
|
|
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 *
|
|
1
|
+
export * from "./assurances.js";
|
|
2
2
|
export * from "./block.js";
|
|
3
|
-
export *
|
|
3
|
+
export * from "./codec-utils.js";
|
|
4
4
|
export * from "./common.js";
|
|
5
|
-
export *
|
|
6
|
-
export *
|
|
5
|
+
export * from "./disputes.js";
|
|
6
|
+
export * from "./guarantees.js";
|
|
7
7
|
export * from "./hash.js";
|
|
8
8
|
export * from "./header.js";
|
|
9
|
-
export *
|
|
10
|
-
export *
|
|
11
|
-
export *
|
|
9
|
+
export * from "./preimage.js";
|
|
10
|
+
export * from "./refine-context.js";
|
|
11
|
+
export * from "./tickets.js";
|
|
12
12
|
export * from "./utils.js";
|
|
13
|
-
export *
|
|
13
|
+
export * from "./work-item.js";
|
|
14
14
|
export * from "./work-item-segment.js";
|
|
15
|
-
export *
|
|
16
|
-
export *
|
|
17
|
-
export *
|
|
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;
|
|
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
|
-
/**
|
|
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,
|
|
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
|
-
/**
|
|
8
|
+
/** Convert the value to `WorkItemsCount` bounds. */
|
|
9
9
|
export function tryAsWorkItemsCount(len) {
|
|
10
10
|
check `
|
|
11
|
-
${len
|
|
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
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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;
|
|
1
|
+
{"version":3,"file":"work-result.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/block/work-result.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|