@typeberry/convert 0.1.2-ef67dce → 0.1.3-6edad4a
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/index.js +198 -197
- package/index.js.map +1 -1
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -5511,7 +5511,7 @@ function isResult(x) {
|
|
|
5511
5511
|
var minimist = __nccwpck_require__(595);
|
|
5512
5512
|
var minimist_default = /*#__PURE__*/__nccwpck_require__.n(minimist);
|
|
5513
5513
|
;// CONCATENATED MODULE: ./bin/convert/package.json
|
|
5514
|
-
const package_namespaceObject = {"rE":"0.1.
|
|
5514
|
+
const package_namespaceObject = {"rE":"0.1.3"};
|
|
5515
5515
|
;// CONCATENATED MODULE: ./packages/core/bytes/bitvec.ts
|
|
5516
5516
|
|
|
5517
5517
|
/**
|
|
@@ -6867,13 +6867,15 @@ function validateLength(range, length, context) {
|
|
|
6867
6867
|
|
|
6868
6868
|
/** A caching wrapper for either object or sequence item. */
|
|
6869
6869
|
class ViewField {
|
|
6870
|
+
name;
|
|
6870
6871
|
getView;
|
|
6871
6872
|
getValue;
|
|
6872
6873
|
getEncoded;
|
|
6873
6874
|
cachedValue;
|
|
6874
6875
|
cachedView;
|
|
6875
6876
|
cachedBlob;
|
|
6876
|
-
constructor(getView, getValue, getEncoded) {
|
|
6877
|
+
constructor(name, getView, getValue, getEncoded) {
|
|
6878
|
+
this.name = name;
|
|
6877
6879
|
this.getView = getView;
|
|
6878
6880
|
this.getValue = getValue;
|
|
6879
6881
|
this.getEncoded = getEncoded;
|
|
@@ -6899,6 +6901,9 @@ class ViewField {
|
|
|
6899
6901
|
}
|
|
6900
6902
|
return this.cachedBlob;
|
|
6901
6903
|
}
|
|
6904
|
+
toString() {
|
|
6905
|
+
return `ViewField<${this.name}>`;
|
|
6906
|
+
}
|
|
6902
6907
|
}
|
|
6903
6908
|
/**
|
|
6904
6909
|
* A base class for all the lazy views.
|
|
@@ -6973,7 +6978,7 @@ class ObjectView {
|
|
|
6973
6978
|
const fieldDecoder = skipper.decoder.clone();
|
|
6974
6979
|
const field = this.descriptorsKeys[i];
|
|
6975
6980
|
const type = this.descriptors[field];
|
|
6976
|
-
lastItem = new ViewField(() => type.View.decode(fieldDecoder.clone()), () => type.decode(fieldDecoder.clone()), () => type.skipEncoded(fieldDecoder.clone()));
|
|
6981
|
+
lastItem = new ViewField(`${this.toString()}.${String(field)}`, () => type.View.decode(fieldDecoder.clone()), () => type.decode(fieldDecoder.clone()), () => type.skipEncoded(fieldDecoder.clone()));
|
|
6977
6982
|
// skip the field
|
|
6978
6983
|
type.skip(skipper);
|
|
6979
6984
|
// cache data
|
|
@@ -6985,6 +6990,9 @@ class ObjectView {
|
|
|
6985
6990
|
}
|
|
6986
6991
|
return lastItem;
|
|
6987
6992
|
}
|
|
6993
|
+
toString() {
|
|
6994
|
+
return `View<${this.materializedConstructor.name}>(cache: ${this.cache.size})`;
|
|
6995
|
+
}
|
|
6988
6996
|
}
|
|
6989
6997
|
/**
|
|
6990
6998
|
* A lazy-evaluated decoder of a sequence.
|
|
@@ -7073,7 +7081,7 @@ class SequenceView {
|
|
|
7073
7081
|
// create new cached prop
|
|
7074
7082
|
const fieldDecoder = skipper.decoder.clone();
|
|
7075
7083
|
const type = this.descriptor;
|
|
7076
|
-
lastItem = new ViewField(() => type.View.decode(fieldDecoder.clone()), () => type.decode(fieldDecoder.clone()), () => type.skipEncoded(fieldDecoder.clone()));
|
|
7084
|
+
lastItem = new ViewField(`${this.toString()}[${index}]`, () => type.View.decode(fieldDecoder.clone()), () => type.decode(fieldDecoder.clone()), () => type.skipEncoded(fieldDecoder.clone()));
|
|
7077
7085
|
// skip the field
|
|
7078
7086
|
type.skip(skipper);
|
|
7079
7087
|
// cache data
|
|
@@ -7085,6 +7093,9 @@ class SequenceView {
|
|
|
7085
7093
|
}
|
|
7086
7094
|
return lastItem;
|
|
7087
7095
|
}
|
|
7096
|
+
toString() {
|
|
7097
|
+
return `SequenceView<${this.descriptor.name}>(cache: ${this.cache.size})`;
|
|
7098
|
+
}
|
|
7088
7099
|
}
|
|
7089
7100
|
|
|
7090
7101
|
;// CONCATENATED MODULE: ./packages/core/codec/descriptors.ts
|
|
@@ -11498,15 +11509,12 @@ function loadConfig(configPath) {
|
|
|
11498
11509
|
|
|
11499
11510
|
|
|
11500
11511
|
|
|
11501
|
-
;// CONCATENATED MODULE: ./packages/
|
|
11512
|
+
;// CONCATENATED MODULE: ./packages/jam/fuzz-proto/v1/types.ts
|
|
11502
11513
|
|
|
11503
11514
|
|
|
11504
11515
|
|
|
11505
11516
|
|
|
11506
11517
|
|
|
11507
|
-
/**
|
|
11508
|
-
* Reference: https://github.com/davxy/jam-conformance/blob/7c6a371a966c6446564f91676e7a2afdec5fa3da/fuzz-proto/fuzz.asn
|
|
11509
|
-
*/
|
|
11510
11518
|
/**
|
|
11511
11519
|
* Version ::= SEQUENCE {
|
|
11512
11520
|
* major INTEGER (0..255),
|
|
@@ -11547,190 +11555,17 @@ class Version extends WithDebug {
|
|
|
11547
11555
|
this.patch = patch;
|
|
11548
11556
|
}
|
|
11549
11557
|
}
|
|
11550
|
-
/**
|
|
11551
|
-
* PeerInfo ::= SEQUENCE {
|
|
11552
|
-
* name UTF8String,
|
|
11553
|
-
* app-version Version,
|
|
11554
|
-
* jam-version Version
|
|
11555
|
-
* }
|
|
11556
|
-
*/
|
|
11557
|
-
class PeerInfo extends WithDebug {
|
|
11558
|
-
name;
|
|
11559
|
-
appVersion;
|
|
11560
|
-
jamVersion;
|
|
11561
|
-
static Codec = descriptors_codec.Class(PeerInfo, {
|
|
11562
|
-
name: descriptors_codec.string,
|
|
11563
|
-
appVersion: Version.Codec,
|
|
11564
|
-
jamVersion: Version.Codec,
|
|
11565
|
-
});
|
|
11566
|
-
static create({ name, appVersion, jamVersion }) {
|
|
11567
|
-
return new PeerInfo(name, appVersion, jamVersion);
|
|
11568
|
-
}
|
|
11569
|
-
constructor(name, appVersion, jamVersion) {
|
|
11570
|
-
super();
|
|
11571
|
-
this.name = name;
|
|
11572
|
-
this.appVersion = appVersion;
|
|
11573
|
-
this.jamVersion = jamVersion;
|
|
11574
|
-
}
|
|
11575
|
-
}
|
|
11576
|
-
/**
|
|
11577
|
-
* KeyValue ::= SEQUENCE {
|
|
11578
|
-
* key TrieKey,
|
|
11579
|
-
* value OCTET STRING
|
|
11580
|
-
* }
|
|
11581
|
-
*/
|
|
11582
|
-
class KeyValue extends WithDebug {
|
|
11583
|
-
key;
|
|
11584
|
-
value;
|
|
11585
|
-
static Codec = descriptors_codec.Class(KeyValue, {
|
|
11586
|
-
key: descriptors_codec.bytes(TRUNCATED_HASH_SIZE),
|
|
11587
|
-
value: descriptors_codec.blob,
|
|
11588
|
-
});
|
|
11589
|
-
static create({ key, value }) {
|
|
11590
|
-
return new KeyValue(key, value);
|
|
11591
|
-
}
|
|
11592
|
-
constructor(key, value) {
|
|
11593
|
-
super();
|
|
11594
|
-
this.key = key;
|
|
11595
|
-
this.value = value;
|
|
11596
|
-
}
|
|
11597
|
-
}
|
|
11598
|
-
/** State ::= SEQUENCE OF KeyValue */
|
|
11599
|
-
const stateCodec = descriptors_codec.sequenceVarLen(KeyValue.Codec);
|
|
11600
|
-
/**
|
|
11601
|
-
* SetState ::= SEQUENCE {
|
|
11602
|
-
* header Header,
|
|
11603
|
-
* state State
|
|
11604
|
-
* }
|
|
11605
|
-
*/
|
|
11606
|
-
class SetState extends WithDebug {
|
|
11607
|
-
header;
|
|
11608
|
-
state;
|
|
11609
|
-
static Codec = descriptors_codec.Class(SetState, {
|
|
11610
|
-
header: header_Header.Codec,
|
|
11611
|
-
state: descriptors_codec.sequenceVarLen(KeyValue.Codec),
|
|
11612
|
-
});
|
|
11613
|
-
static create({ header, state }) {
|
|
11614
|
-
return new SetState(header, state);
|
|
11615
|
-
}
|
|
11616
|
-
constructor(header, state) {
|
|
11617
|
-
super();
|
|
11618
|
-
this.header = header;
|
|
11619
|
-
this.state = state;
|
|
11620
|
-
}
|
|
11621
|
-
}
|
|
11622
|
-
/** GetState ::= HeaderHash */
|
|
11623
|
-
const getStateCodec = descriptors_codec.bytes(hash_HASH_SIZE).asOpaque();
|
|
11624
|
-
/** StateRoot ::= StateRootHash */
|
|
11625
|
-
const stateRootCodec = descriptors_codec.bytes(hash_HASH_SIZE).asOpaque();
|
|
11626
|
-
/** Message choice type tags */
|
|
11627
|
-
var MessageType;
|
|
11628
|
-
(function (MessageType) {
|
|
11629
|
-
MessageType[MessageType["PeerInfo"] = 0] = "PeerInfo";
|
|
11630
|
-
MessageType[MessageType["ImportBlock"] = 1] = "ImportBlock";
|
|
11631
|
-
MessageType[MessageType["SetState"] = 2] = "SetState";
|
|
11632
|
-
MessageType[MessageType["GetState"] = 3] = "GetState";
|
|
11633
|
-
MessageType[MessageType["State"] = 4] = "State";
|
|
11634
|
-
MessageType[MessageType["StateRoot"] = 5] = "StateRoot";
|
|
11635
|
-
})(MessageType || (MessageType = {}));
|
|
11636
|
-
/**
|
|
11637
|
-
* Message ::= CHOICE {
|
|
11638
|
-
* peer-info [0] PeerInfo,
|
|
11639
|
-
* import-block [1] ImportBlock,
|
|
11640
|
-
* set-state [2] SetState,
|
|
11641
|
-
* get-state [3] GetState,
|
|
11642
|
-
* state [4] State,
|
|
11643
|
-
* state-root [5] StateRoot
|
|
11644
|
-
* }
|
|
11645
|
-
*/
|
|
11646
|
-
const messageCodec = descriptors_codec.custom({
|
|
11647
|
-
name: "Message",
|
|
11648
|
-
sizeHint: { bytes: 1, isExact: false },
|
|
11649
|
-
}, (e, msg) => {
|
|
11650
|
-
e.i8(msg.type);
|
|
11651
|
-
switch (msg.type) {
|
|
11652
|
-
case MessageType.PeerInfo:
|
|
11653
|
-
PeerInfo.Codec.encode(e, msg.value);
|
|
11654
|
-
break;
|
|
11655
|
-
case MessageType.ImportBlock:
|
|
11656
|
-
block_Block.Codec.View.encode(e, msg.value);
|
|
11657
|
-
break;
|
|
11658
|
-
case MessageType.SetState:
|
|
11659
|
-
SetState.Codec.encode(e, msg.value);
|
|
11660
|
-
break;
|
|
11661
|
-
case MessageType.GetState:
|
|
11662
|
-
getStateCodec.encode(e, msg.value);
|
|
11663
|
-
break;
|
|
11664
|
-
case MessageType.State:
|
|
11665
|
-
stateCodec.encode(e, msg.value);
|
|
11666
|
-
break;
|
|
11667
|
-
case MessageType.StateRoot:
|
|
11668
|
-
stateRootCodec.encode(e, msg.value);
|
|
11669
|
-
break;
|
|
11670
|
-
default:
|
|
11671
|
-
throw new Error(`Unknown message type: ${msg}`);
|
|
11672
|
-
}
|
|
11673
|
-
}, (d) => {
|
|
11674
|
-
const type = d.u8();
|
|
11675
|
-
switch (type) {
|
|
11676
|
-
case MessageType.PeerInfo:
|
|
11677
|
-
return { type: MessageType.PeerInfo, value: PeerInfo.Codec.decode(d) };
|
|
11678
|
-
case MessageType.ImportBlock:
|
|
11679
|
-
return { type: MessageType.ImportBlock, value: block_Block.Codec.View.decode(d) };
|
|
11680
|
-
case MessageType.SetState:
|
|
11681
|
-
return { type: MessageType.SetState, value: SetState.Codec.decode(d) };
|
|
11682
|
-
case MessageType.GetState:
|
|
11683
|
-
return { type: MessageType.GetState, value: getStateCodec.decode(d) };
|
|
11684
|
-
case MessageType.State:
|
|
11685
|
-
return { type: MessageType.State, value: stateCodec.decode(d) };
|
|
11686
|
-
case MessageType.StateRoot:
|
|
11687
|
-
return { type: MessageType.StateRoot, value: stateRootCodec.decode(d) };
|
|
11688
|
-
default:
|
|
11689
|
-
throw new Error(`Unknown message type: ${type}`);
|
|
11690
|
-
}
|
|
11691
|
-
}, (s) => {
|
|
11692
|
-
const type = s.decoder.u8();
|
|
11693
|
-
switch (type) {
|
|
11694
|
-
case MessageType.PeerInfo:
|
|
11695
|
-
PeerInfo.Codec.View.skip(s);
|
|
11696
|
-
break;
|
|
11697
|
-
case MessageType.ImportBlock:
|
|
11698
|
-
block_Block.Codec.View.skip(s);
|
|
11699
|
-
break;
|
|
11700
|
-
case MessageType.SetState:
|
|
11701
|
-
SetState.Codec.View.skip(s);
|
|
11702
|
-
break;
|
|
11703
|
-
case MessageType.GetState:
|
|
11704
|
-
getStateCodec.View.skip(s);
|
|
11705
|
-
break;
|
|
11706
|
-
case MessageType.State:
|
|
11707
|
-
stateCodec.View.skip(s);
|
|
11708
|
-
break;
|
|
11709
|
-
case MessageType.StateRoot:
|
|
11710
|
-
stateRootCodec.View.skip(s);
|
|
11711
|
-
break;
|
|
11712
|
-
default:
|
|
11713
|
-
throw new Error(`Unknown message type: ${type}`);
|
|
11714
|
-
}
|
|
11715
|
-
});
|
|
11716
|
-
|
|
11717
|
-
;// CONCATENATED MODULE: ./packages/extensions/ipc/fuzz/v1/types.ts
|
|
11718
|
-
|
|
11719
|
-
|
|
11720
|
-
|
|
11721
|
-
|
|
11722
|
-
|
|
11723
11558
|
/**
|
|
11724
11559
|
* Fuzzer Protocol V1
|
|
11725
11560
|
* Reference: https://github.com/davxy/jam-conformance/blob/main/fuzz-proto/fuzz.asn
|
|
11726
11561
|
*/
|
|
11727
11562
|
// Feature bit constants
|
|
11728
|
-
var
|
|
11563
|
+
var types_Features;
|
|
11729
11564
|
(function (Features) {
|
|
11730
11565
|
Features[Features["Ancestry"] = 1] = "Ancestry";
|
|
11731
11566
|
Features[Features["Fork"] = 2] = "Fork";
|
|
11732
11567
|
Features[Features["Reserved"] = 2147483648] = "Reserved";
|
|
11733
|
-
})(
|
|
11568
|
+
})(types_Features || (types_Features = {}));
|
|
11734
11569
|
/**
|
|
11735
11570
|
* PeerInfo ::= SEQUENCE {
|
|
11736
11571
|
* fuzz-version U8,
|
|
@@ -11740,13 +11575,13 @@ var Features;
|
|
|
11740
11575
|
* name UTF8String
|
|
11741
11576
|
* }
|
|
11742
11577
|
*/
|
|
11743
|
-
class
|
|
11578
|
+
class PeerInfo extends WithDebug {
|
|
11744
11579
|
fuzzVersion;
|
|
11745
11580
|
features;
|
|
11746
11581
|
jamVersion;
|
|
11747
11582
|
appVersion;
|
|
11748
11583
|
name;
|
|
11749
|
-
static Codec = descriptors_codec.Class(
|
|
11584
|
+
static Codec = descriptors_codec.Class(PeerInfo, {
|
|
11750
11585
|
fuzzVersion: descriptors_codec.u8,
|
|
11751
11586
|
features: descriptors_codec.u32,
|
|
11752
11587
|
jamVersion: Version.Codec,
|
|
@@ -11754,7 +11589,7 @@ class types_PeerInfo extends WithDebug {
|
|
|
11754
11589
|
name: descriptors_codec.string,
|
|
11755
11590
|
});
|
|
11756
11591
|
static create({ fuzzVersion, features, appVersion, jamVersion, name }) {
|
|
11757
|
-
return new
|
|
11592
|
+
return new PeerInfo(fuzzVersion, features, jamVersion, appVersion, name);
|
|
11758
11593
|
}
|
|
11759
11594
|
constructor(fuzzVersion, features, jamVersion, appVersion, name) {
|
|
11760
11595
|
super();
|
|
@@ -11787,6 +11622,30 @@ class AncestryItem extends WithDebug {
|
|
|
11787
11622
|
this.headerHash = headerHash;
|
|
11788
11623
|
}
|
|
11789
11624
|
}
|
|
11625
|
+
/**
|
|
11626
|
+
* KeyValue ::= SEQUENCE {
|
|
11627
|
+
* key TrieKey,
|
|
11628
|
+
* value OCTET STRING
|
|
11629
|
+
* }
|
|
11630
|
+
*/
|
|
11631
|
+
class KeyValue extends WithDebug {
|
|
11632
|
+
key;
|
|
11633
|
+
value;
|
|
11634
|
+
static Codec = descriptors_codec.Class(KeyValue, {
|
|
11635
|
+
key: descriptors_codec.bytes(TRUNCATED_HASH_SIZE),
|
|
11636
|
+
value: descriptors_codec.blob,
|
|
11637
|
+
});
|
|
11638
|
+
static create({ key, value }) {
|
|
11639
|
+
return new KeyValue(key, value);
|
|
11640
|
+
}
|
|
11641
|
+
constructor(key, value) {
|
|
11642
|
+
super();
|
|
11643
|
+
this.key = key;
|
|
11644
|
+
this.value = value;
|
|
11645
|
+
}
|
|
11646
|
+
}
|
|
11647
|
+
/** State ::= SEQUENCE OF KeyValue */
|
|
11648
|
+
const stateCodec = descriptors_codec.sequenceVarLen(KeyValue.Codec);
|
|
11790
11649
|
/**
|
|
11791
11650
|
* Ancestry ::= SEQUENCE (SIZE(0..24)) OF AncestryItem
|
|
11792
11651
|
* Empty when `feature-ancestry` is not supported by both parties
|
|
@@ -11822,9 +11681,9 @@ class Initialize extends WithDebug {
|
|
|
11822
11681
|
}
|
|
11823
11682
|
}
|
|
11824
11683
|
/** GetState ::= HeaderHash */
|
|
11825
|
-
const
|
|
11684
|
+
const getStateCodec = descriptors_codec.bytes(hash_HASH_SIZE).asOpaque();
|
|
11826
11685
|
/** StateRoot ::= StateRootHash */
|
|
11827
|
-
const
|
|
11686
|
+
const stateRootCodec = descriptors_codec.bytes(hash_HASH_SIZE).asOpaque();
|
|
11828
11687
|
/** Error ::= UTF8String */
|
|
11829
11688
|
class ErrorMessage extends WithDebug {
|
|
11830
11689
|
message;
|
|
@@ -11868,19 +11727,19 @@ const types_messageCodec = descriptors_codec.custom({
|
|
|
11868
11727
|
e.i8(msg.type);
|
|
11869
11728
|
switch (msg.type) {
|
|
11870
11729
|
case types_MessageType.PeerInfo:
|
|
11871
|
-
|
|
11730
|
+
PeerInfo.Codec.encode(e, msg.value);
|
|
11872
11731
|
break;
|
|
11873
11732
|
case types_MessageType.Initialize:
|
|
11874
11733
|
Initialize.Codec.encode(e, msg.value);
|
|
11875
11734
|
break;
|
|
11876
11735
|
case types_MessageType.StateRoot:
|
|
11877
|
-
|
|
11736
|
+
stateRootCodec.encode(e, msg.value);
|
|
11878
11737
|
break;
|
|
11879
11738
|
case types_MessageType.ImportBlock:
|
|
11880
11739
|
block_Block.Codec.View.encode(e, msg.value);
|
|
11881
11740
|
break;
|
|
11882
11741
|
case types_MessageType.GetState:
|
|
11883
|
-
|
|
11742
|
+
getStateCodec.encode(e, msg.value);
|
|
11884
11743
|
break;
|
|
11885
11744
|
case types_MessageType.State:
|
|
11886
11745
|
stateCodec.encode(e, msg.value);
|
|
@@ -11895,15 +11754,15 @@ const types_messageCodec = descriptors_codec.custom({
|
|
|
11895
11754
|
const type = d.u8();
|
|
11896
11755
|
switch (type) {
|
|
11897
11756
|
case types_MessageType.PeerInfo:
|
|
11898
|
-
return { type: types_MessageType.PeerInfo, value:
|
|
11757
|
+
return { type: types_MessageType.PeerInfo, value: PeerInfo.Codec.decode(d) };
|
|
11899
11758
|
case types_MessageType.Initialize:
|
|
11900
11759
|
return { type: types_MessageType.Initialize, value: Initialize.Codec.decode(d) };
|
|
11901
11760
|
case types_MessageType.StateRoot:
|
|
11902
|
-
return { type: types_MessageType.StateRoot, value:
|
|
11761
|
+
return { type: types_MessageType.StateRoot, value: stateRootCodec.decode(d) };
|
|
11903
11762
|
case types_MessageType.ImportBlock:
|
|
11904
11763
|
return { type: types_MessageType.ImportBlock, value: block_Block.Codec.View.decode(d) };
|
|
11905
11764
|
case types_MessageType.GetState:
|
|
11906
|
-
return { type: types_MessageType.GetState, value:
|
|
11765
|
+
return { type: types_MessageType.GetState, value: getStateCodec.decode(d) };
|
|
11907
11766
|
case types_MessageType.State:
|
|
11908
11767
|
return { type: types_MessageType.State, value: stateCodec.decode(d) };
|
|
11909
11768
|
case types_MessageType.Error:
|
|
@@ -11915,19 +11774,19 @@ const types_messageCodec = descriptors_codec.custom({
|
|
|
11915
11774
|
const type = s.decoder.u8();
|
|
11916
11775
|
switch (type) {
|
|
11917
11776
|
case types_MessageType.PeerInfo:
|
|
11918
|
-
|
|
11777
|
+
PeerInfo.Codec.View.skip(s);
|
|
11919
11778
|
break;
|
|
11920
11779
|
case types_MessageType.Initialize:
|
|
11921
11780
|
Initialize.Codec.View.skip(s);
|
|
11922
11781
|
break;
|
|
11923
11782
|
case types_MessageType.StateRoot:
|
|
11924
|
-
|
|
11783
|
+
stateRootCodec.View.skip(s);
|
|
11925
11784
|
break;
|
|
11926
11785
|
case types_MessageType.ImportBlock:
|
|
11927
11786
|
block_Block.Codec.View.skip(s);
|
|
11928
11787
|
break;
|
|
11929
11788
|
case types_MessageType.GetState:
|
|
11930
|
-
|
|
11789
|
+
getStateCodec.View.skip(s);
|
|
11931
11790
|
break;
|
|
11932
11791
|
case types_MessageType.State:
|
|
11933
11792
|
stateCodec.View.skip(s);
|
|
@@ -11940,6 +11799,145 @@ const types_messageCodec = descriptors_codec.custom({
|
|
|
11940
11799
|
}
|
|
11941
11800
|
});
|
|
11942
11801
|
|
|
11802
|
+
;// CONCATENATED MODULE: ./packages/jam/fuzz-proto/v1/handler.ts
|
|
11803
|
+
|
|
11804
|
+
|
|
11805
|
+
|
|
11806
|
+
|
|
11807
|
+
const handler_logger = Logger.new(import.meta.filename, "ext-ipc-fuzz-v1");
|
|
11808
|
+
class FuzzTarget {
|
|
11809
|
+
msgHandler;
|
|
11810
|
+
sender;
|
|
11811
|
+
spec;
|
|
11812
|
+
sessionFeatures = 0;
|
|
11813
|
+
constructor(msgHandler, sender, spec) {
|
|
11814
|
+
this.msgHandler = msgHandler;
|
|
11815
|
+
this.sender = sender;
|
|
11816
|
+
this.spec = spec;
|
|
11817
|
+
}
|
|
11818
|
+
async onSocketMessage(msg) {
|
|
11819
|
+
// attempt to decode the messsage
|
|
11820
|
+
try {
|
|
11821
|
+
const message = Decoder.decodeObject(messageCodec, msg, this.spec);
|
|
11822
|
+
handler_logger.log `[${message.type}] incoming message`;
|
|
11823
|
+
await this.processAndRespond(message);
|
|
11824
|
+
}
|
|
11825
|
+
catch (e) {
|
|
11826
|
+
handler_logger.error `Error while processing fuzz v1 message: ${e}`;
|
|
11827
|
+
handler_logger.error `${e}`;
|
|
11828
|
+
if (e instanceof Error) {
|
|
11829
|
+
handler_logger.error `${e.stack ?? ""}`;
|
|
11830
|
+
}
|
|
11831
|
+
this.sender.close();
|
|
11832
|
+
}
|
|
11833
|
+
}
|
|
11834
|
+
async processAndRespond(message) {
|
|
11835
|
+
let response = null;
|
|
11836
|
+
switch (message.type) {
|
|
11837
|
+
case MessageType.PeerInfo: {
|
|
11838
|
+
// only support V1
|
|
11839
|
+
if (message.value.fuzzVersion !== 1) {
|
|
11840
|
+
handler_logger.warn `Unsupported fuzzer protocol version: ${message.value.fuzzVersion}. Closing`;
|
|
11841
|
+
this.sender.close();
|
|
11842
|
+
return;
|
|
11843
|
+
}
|
|
11844
|
+
// Handle handshake
|
|
11845
|
+
const ourPeerInfo = await this.msgHandler.getPeerInfo(message.value);
|
|
11846
|
+
// Calculate session features (intersection of both peer features)
|
|
11847
|
+
this.sessionFeatures = message.value.features & ourPeerInfo.features;
|
|
11848
|
+
handler_logger.info `Handshake completed. Shared features: 0b${this.sessionFeatures.toString(2)}`;
|
|
11849
|
+
handler_logger.log `Feature ancestry: ${(this.sessionFeatures & Features.Ancestry) !== 0}`;
|
|
11850
|
+
handler_logger.log `Feature fork: ${(this.sessionFeatures & Features.Fork) !== 0}`;
|
|
11851
|
+
response = {
|
|
11852
|
+
type: MessageType.PeerInfo,
|
|
11853
|
+
value: ourPeerInfo,
|
|
11854
|
+
};
|
|
11855
|
+
break;
|
|
11856
|
+
}
|
|
11857
|
+
case MessageType.Initialize: {
|
|
11858
|
+
const stateRoot = await this.msgHandler.initialize(message.value);
|
|
11859
|
+
response = {
|
|
11860
|
+
type: MessageType.StateRoot,
|
|
11861
|
+
value: stateRoot,
|
|
11862
|
+
};
|
|
11863
|
+
break;
|
|
11864
|
+
}
|
|
11865
|
+
case MessageType.ImportBlock: {
|
|
11866
|
+
const result = await this.msgHandler.importBlock(message.value);
|
|
11867
|
+
if (result.isOk) {
|
|
11868
|
+
response = {
|
|
11869
|
+
type: MessageType.StateRoot,
|
|
11870
|
+
value: result.ok,
|
|
11871
|
+
};
|
|
11872
|
+
}
|
|
11873
|
+
else {
|
|
11874
|
+
response = {
|
|
11875
|
+
type: MessageType.Error,
|
|
11876
|
+
value: result.error,
|
|
11877
|
+
};
|
|
11878
|
+
}
|
|
11879
|
+
break;
|
|
11880
|
+
}
|
|
11881
|
+
case MessageType.GetState: {
|
|
11882
|
+
const state = await this.msgHandler.getSerializedState(message.value);
|
|
11883
|
+
response = {
|
|
11884
|
+
type: MessageType.State,
|
|
11885
|
+
value: state,
|
|
11886
|
+
};
|
|
11887
|
+
break;
|
|
11888
|
+
}
|
|
11889
|
+
case MessageType.StateRoot: {
|
|
11890
|
+
handler_logger.log `--> Received unexpected 'StateRoot' message from the fuzzer. Closing.`;
|
|
11891
|
+
this.sender.close();
|
|
11892
|
+
return;
|
|
11893
|
+
}
|
|
11894
|
+
case MessageType.State: {
|
|
11895
|
+
handler_logger.log `--> Received unexpected 'State' message from the fuzzer. Closing.`;
|
|
11896
|
+
this.sender.close();
|
|
11897
|
+
return;
|
|
11898
|
+
}
|
|
11899
|
+
case MessageType.Error: {
|
|
11900
|
+
handler_logger.log `--> Received unexpected 'Error' message from the fuzzer. Closing.`;
|
|
11901
|
+
this.sender.close();
|
|
11902
|
+
return;
|
|
11903
|
+
}
|
|
11904
|
+
default: {
|
|
11905
|
+
handler_logger.log `--> Received unexpected message type ${JSON.stringify(message)} from the fuzzer. Closing.`;
|
|
11906
|
+
this.sender.close();
|
|
11907
|
+
try {
|
|
11908
|
+
assertNever(message);
|
|
11909
|
+
}
|
|
11910
|
+
catch {
|
|
11911
|
+
return;
|
|
11912
|
+
}
|
|
11913
|
+
}
|
|
11914
|
+
}
|
|
11915
|
+
if (response !== null) {
|
|
11916
|
+
handler_logger.trace `<-- responding with: ${response.type}`;
|
|
11917
|
+
const encoded = Encoder.encodeObject(messageCodec, response, this.spec);
|
|
11918
|
+
this.sender.send(encoded);
|
|
11919
|
+
}
|
|
11920
|
+
else {
|
|
11921
|
+
handler_logger.warn `<-- no response generated for: ${message.type}`;
|
|
11922
|
+
}
|
|
11923
|
+
}
|
|
11924
|
+
onClose({ error }) {
|
|
11925
|
+
handler_logger.log `Closing the v1 handler. Reason: ${error !== undefined ? error.message : "close"}.`;
|
|
11926
|
+
}
|
|
11927
|
+
/** Check if a specific feature is enabled in the session */
|
|
11928
|
+
hasFeature(feature) {
|
|
11929
|
+
return (this.sessionFeatures & feature) !== 0;
|
|
11930
|
+
}
|
|
11931
|
+
}
|
|
11932
|
+
|
|
11933
|
+
;// CONCATENATED MODULE: ./packages/jam/fuzz-proto/v1/index.ts
|
|
11934
|
+
|
|
11935
|
+
|
|
11936
|
+
|
|
11937
|
+
;// CONCATENATED MODULE: ./packages/jam/fuzz-proto/index.ts
|
|
11938
|
+
|
|
11939
|
+
|
|
11940
|
+
|
|
11943
11941
|
;// CONCATENATED MODULE: ./packages/core/pvm-spi-decoder/memory-conts.ts
|
|
11944
11942
|
// GP reference: https://graypaper.fluffylabs.dev/#/7e6ff6a/2d32002d3200?v=0.6.7
|
|
11945
11943
|
const memory_conts_PAGE_SIZE = 2 ** 12; // Z_P from GP
|
|
@@ -27367,6 +27365,9 @@ function toJson(data) {
|
|
|
27367
27365
|
if (value instanceof Map) {
|
|
27368
27366
|
return Object.fromEntries(value.entries());
|
|
27369
27367
|
}
|
|
27368
|
+
if (value instanceof ObjectView) {
|
|
27369
|
+
return value.materialize();
|
|
27370
|
+
}
|
|
27370
27371
|
return value;
|
|
27371
27372
|
}, 2);
|
|
27372
27373
|
}
|