@typeberry/lib 0.10.0-89fc6fa → 0.10.0-9e3af22

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 (105) hide show
  1. package/package.json +3 -3
  2. package/packages/configs/index.d.ts +9 -0
  3. package/packages/configs/index.d.ts.map +1 -1
  4. package/packages/configs/typeberry-default.json +4 -1
  5. package/packages/configs/typeberry-dev-full.json +3 -0
  6. package/packages/configs/typeberry-dev-tiny.json +3 -0
  7. package/packages/jam/config-node/index.d.ts +1 -0
  8. package/packages/jam/config-node/index.d.ts.map +1 -1
  9. package/packages/jam/config-node/index.js +1 -0
  10. package/packages/jam/config-node/node-config.d.ts +5 -1
  11. package/packages/jam/config-node/node-config.d.ts.map +1 -1
  12. package/packages/jam/config-node/node-config.js +9 -3
  13. package/packages/jam/config-node/node-config.test.js +9 -0
  14. package/packages/jam/config-node/rpc.d.ts +11 -0
  15. package/packages/jam/config-node/rpc.d.ts.map +1 -0
  16. package/packages/jam/config-node/rpc.js +16 -0
  17. package/packages/jam/node/jam-config.d.ts +5 -1
  18. package/packages/jam/node/jam-config.d.ts.map +1 -1
  19. package/packages/jam/node/jam-config.js +6 -2
  20. package/packages/jam/node/main-fuzz.d.ts.map +1 -1
  21. package/packages/jam/node/main-fuzz.js +6 -5
  22. package/packages/jam/rpc/index.d.ts +3 -0
  23. package/packages/jam/rpc/index.d.ts.map +1 -0
  24. package/packages/jam/rpc/index.js +2 -0
  25. package/packages/jam/rpc/src/handlers/best-block.d.ts +6 -0
  26. package/packages/jam/rpc/src/handlers/best-block.d.ts.map +1 -0
  27. package/packages/jam/rpc/src/handlers/best-block.js +15 -0
  28. package/packages/jam/rpc/src/handlers/finalized-block.d.ts +6 -0
  29. package/packages/jam/rpc/src/handlers/finalized-block.d.ts.map +1 -0
  30. package/packages/jam/rpc/src/handlers/finalized-block.js +7 -0
  31. package/packages/jam/rpc/src/handlers/list-services.d.ts +6 -0
  32. package/packages/jam/rpc/src/handlers/list-services.d.ts.map +1 -0
  33. package/packages/jam/rpc/src/handlers/list-services.js +15 -0
  34. package/packages/jam/rpc/src/handlers/not-implemented.d.ts +4 -0
  35. package/packages/jam/rpc/src/handlers/not-implemented.d.ts.map +1 -0
  36. package/packages/jam/rpc/src/handlers/not-implemented.js +4 -0
  37. package/packages/jam/rpc/src/handlers/parameters.d.ts +7 -0
  38. package/packages/jam/rpc/src/handlers/parameters.d.ts.map +1 -0
  39. package/packages/jam/rpc/src/handlers/parameters.js +53 -0
  40. package/packages/jam/rpc/src/handlers/parent.d.ts +6 -0
  41. package/packages/jam/rpc/src/handlers/parent.d.ts.map +1 -0
  42. package/packages/jam/rpc/src/handlers/parent.js +25 -0
  43. package/packages/jam/rpc/src/handlers/service-data.d.ts +6 -0
  44. package/packages/jam/rpc/src/handlers/service-data.d.ts.map +1 -0
  45. package/packages/jam/rpc/src/handlers/service-data.js +21 -0
  46. package/packages/jam/rpc/src/handlers/service-preimage.d.ts +6 -0
  47. package/packages/jam/rpc/src/handlers/service-preimage.d.ts.map +1 -0
  48. package/packages/jam/rpc/src/handlers/service-preimage.js +23 -0
  49. package/packages/jam/rpc/src/handlers/service-request.d.ts +6 -0
  50. package/packages/jam/rpc/src/handlers/service-request.d.ts.map +1 -0
  51. package/packages/jam/rpc/src/handlers/service-request.js +23 -0
  52. package/packages/jam/rpc/src/handlers/service-value.d.ts +6 -0
  53. package/packages/jam/rpc/src/handlers/service-value.d.ts.map +1 -0
  54. package/packages/jam/rpc/src/handlers/service-value.js +23 -0
  55. package/packages/jam/rpc/src/handlers/state-root.d.ts +6 -0
  56. package/packages/jam/rpc/src/handlers/state-root.d.ts.map +1 -0
  57. package/packages/jam/rpc/src/handlers/state-root.js +14 -0
  58. package/packages/jam/rpc/src/handlers/statistics.d.ts +6 -0
  59. package/packages/jam/rpc/src/handlers/statistics.d.ts.map +1 -0
  60. package/packages/jam/rpc/src/handlers/statistics.js +16 -0
  61. package/packages/jam/rpc/src/handlers/subscribe-best-block.d.ts +6 -0
  62. package/packages/jam/rpc/src/handlers/subscribe-best-block.d.ts.map +1 -0
  63. package/packages/jam/rpc/src/handlers/subscribe-best-block.js +8 -0
  64. package/packages/jam/rpc/src/handlers/subscribe-finalized-block.d.ts +6 -0
  65. package/packages/jam/rpc/src/handlers/subscribe-finalized-block.d.ts.map +1 -0
  66. package/packages/jam/rpc/src/handlers/subscribe-finalized-block.js +8 -0
  67. package/packages/jam/rpc/src/handlers/subscribe-service-data.d.ts +6 -0
  68. package/packages/jam/rpc/src/handlers/subscribe-service-data.d.ts.map +1 -0
  69. package/packages/jam/rpc/src/handlers/subscribe-service-data.js +13 -0
  70. package/packages/jam/rpc/src/handlers/subscribe-service-preimage.d.ts +6 -0
  71. package/packages/jam/rpc/src/handlers/subscribe-service-preimage.d.ts.map +1 -0
  72. package/packages/jam/rpc/src/handlers/subscribe-service-preimage.js +13 -0
  73. package/packages/jam/rpc/src/handlers/subscribe-service-request.d.ts +6 -0
  74. package/packages/jam/rpc/src/handlers/subscribe-service-request.d.ts.map +1 -0
  75. package/packages/jam/rpc/src/handlers/subscribe-service-request.js +13 -0
  76. package/packages/jam/rpc/src/handlers/subscribe-service-value.d.ts +6 -0
  77. package/packages/jam/rpc/src/handlers/subscribe-service-value.d.ts.map +1 -0
  78. package/packages/jam/rpc/src/handlers/subscribe-service-value.js +13 -0
  79. package/packages/jam/rpc/src/handlers/subscribe-statistics.d.ts +6 -0
  80. package/packages/jam/rpc/src/handlers/subscribe-statistics.d.ts.map +1 -0
  81. package/packages/jam/rpc/src/handlers/subscribe-statistics.js +13 -0
  82. package/packages/jam/rpc/src/handlers/typeberry/refine-work-package.d.ts +8 -0
  83. package/packages/jam/rpc/src/handlers/typeberry/refine-work-package.d.ts.map +1 -0
  84. package/packages/jam/rpc/src/handlers/typeberry/refine-work-package.js +68 -0
  85. package/packages/jam/rpc/src/handlers/unsubscribe.d.ts +4 -0
  86. package/packages/jam/rpc/src/handlers/unsubscribe.d.ts.map +1 -0
  87. package/packages/jam/rpc/src/handlers/unsubscribe.js +3 -0
  88. package/packages/jam/rpc/src/handlers.d.ts +3 -0
  89. package/packages/jam/rpc/src/handlers.d.ts.map +1 -0
  90. package/packages/jam/rpc/src/handlers.js +60 -0
  91. package/packages/jam/rpc/src/server.d.ts +31 -0
  92. package/packages/jam/rpc/src/server.d.ts.map +1 -0
  93. package/packages/jam/rpc/src/server.js +179 -0
  94. package/packages/jam/rpc/src/subscription-manager.d.ts +20 -0
  95. package/packages/jam/rpc/src/subscription-manager.d.ts.map +1 -0
  96. package/packages/jam/rpc/src/subscription-manager.js +74 -0
  97. package/packages/jam/rpc/test/e2e-server.d.ts +3 -0
  98. package/packages/jam/rpc/test/e2e-server.d.ts.map +1 -0
  99. package/packages/jam/rpc/test/e2e-server.js +32 -0
  100. package/packages/jam/rpc/test/e2e-setup.d.ts +2 -0
  101. package/packages/jam/rpc/test/e2e-setup.d.ts.map +1 -0
  102. package/packages/jam/rpc/test/e2e-setup.js +126 -0
  103. package/packages/jam/rpc/test/e2e.d.ts +2 -0
  104. package/packages/jam/rpc/test/e2e.d.ts.map +1 -0
  105. package/packages/jam/rpc/test/e2e.js +326 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typeberry/lib",
3
- "version": "0.10.0-89fc6fa",
3
+ "version": "0.10.0-9e3af22",
4
4
  "description": "Typeberry Library",
5
5
  "main": "./bin/lib/index.js",
6
6
  "types": "./bin/lib/index.d.ts",
@@ -152,8 +152,6 @@
152
152
  "#@typeberry/lib/*": "./bin/lib/*",
153
153
  "#@typeberry/pvm": "./bin/pvm/index.js",
154
154
  "#@typeberry/pvm/*": "./bin/pvm/*",
155
- "#@typeberry/rpc": "./bin/rpc/index.js",
156
- "#@typeberry/rpc/*": "./bin/rpc/*",
157
155
  "#@typeberry/test-runner": "./bin/test-runner/index.js",
158
156
  "#@typeberry/test-runner/*": "./bin/test-runner/*",
159
157
  "#@typeberry/configs": "./packages/configs/index.js",
@@ -230,6 +228,8 @@
230
228
  "#@typeberry/jamnp-s/*": "./packages/jam/jamnp-s/*",
231
229
  "#@typeberry/node": "./packages/jam/node/index.js",
232
230
  "#@typeberry/node/*": "./packages/jam/node/*",
231
+ "#@typeberry/rpc": "./packages/jam/rpc/index.js",
232
+ "#@typeberry/rpc/*": "./packages/jam/rpc/*",
233
233
  "#@typeberry/rpc-client": "./packages/jam/rpc-client/index.js",
234
234
  "#@typeberry/rpc-client/*": "./packages/jam/rpc-client/*",
235
235
  "#@typeberry/rpc-validation": "./packages/jam/rpc-validation/index.js",
@@ -33,6 +33,9 @@ export declare const configs: {
33
33
  };
34
34
  };
35
35
  database_base_path: string;
36
+ rpc: {
37
+ port: number;
38
+ };
36
39
  };
37
40
  devTiny: {
38
41
  $schema: string;
@@ -67,6 +70,9 @@ export declare const configs: {
67
70
  ff000000000000000000000000000000000000000000000000000000000000: string;
68
71
  };
69
72
  };
73
+ rpc: {
74
+ port: number;
75
+ };
70
76
  };
71
77
  devFull: {
72
78
  $schema: string;
@@ -96,6 +102,9 @@ export declare const configs: {
96
102
  "10000000000000000000000000000000000000000000000000000000000000": string;
97
103
  };
98
104
  };
105
+ rpc: {
106
+ port: number;
107
+ };
99
108
  };
100
109
  };
101
110
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/configs/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAInB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../packages/configs/index.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAInB,CAAC"}
@@ -34,5 +34,8 @@
34
34
  "ff000000000000000000000000000000000000000000000000000000000000": "00d1b097b4410b3a63446d7c57d093972a9744fcd2d74f4a5e2ec163610e6d6327ffffffffffffffff0a000000000000000a000000000000003418020000000000ffffffffffffffff04000000000000000000000000000000"
35
35
  }
36
36
  },
37
- "database_base_path": "./database"
37
+ "database_base_path": "./database",
38
+ "rpc": {
39
+ "port": 19800
40
+ }
38
41
  }
@@ -25,5 +25,8 @@
25
25
  "0f000000000000000000000000000000000000000000000000000000000000": "000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
26
26
  "10000000000000000000000000000000000000000000000000000000000000": "00"
27
27
  }
28
+ },
29
+ "rpc": {
30
+ "port": 19800
28
31
  }
29
32
  }
@@ -30,5 +30,8 @@
30
30
  "10000000000000000000000000000000000000000000000000000000000000": "00",
31
31
  "ff000000000000000000000000000000000000000000000000000000000000": "00d1b097b4410b3a63446d7c57d093972a9744fcd2d74f4a5e2ec163610e6d6327ffffffffffffffff0a000000000000000a000000000000003418020000000000ffffffffffffffff04000000000000000000000000000000"
32
32
  }
33
+ },
34
+ "rpc": {
35
+ "port": 19800
33
36
  }
34
37
  }
@@ -1,3 +1,4 @@
1
1
  export * from "./jip-chain-spec.js";
2
2
  export * from "./node-config.js";
3
+ export * from "./rpc.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/config-node/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/config-node/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export * from "./jip-chain-spec.js";
2
2
  export * from "./node-config.js";
3
+ export * from "./rpc.js";
@@ -2,6 +2,7 @@ import { PvmBackend } from "#@typeberry/config";
2
2
  import { type FromJson } from "#@typeberry/json-parser";
3
3
  import { AuthorshipOptions } from "./authorship.js";
4
4
  import { JipChainSpec } from "./jip-chain-spec.js";
5
+ import { RpcOptions } from "./rpc.js";
5
6
  /** Development config. Will accept unsealed blocks for now. */
6
7
  export declare const DEV_TINY_CONFIG = "dev";
7
8
  export declare const DEV_FULL_CONFIG = "dev-full";
@@ -35,6 +36,7 @@ type NodeConfigurationJson = {
35
36
  database_base_path?: string;
36
37
  state_backend?: RegularStateBackend;
37
38
  authorship: AuthorshipOptions;
39
+ rpc?: RpcOptions;
38
40
  };
39
41
  export declare class NodeConfiguration {
40
42
  readonly $schema: string;
@@ -46,8 +48,10 @@ export declare class NodeConfiguration {
46
48
  /** Persistent database backend used when `databaseBasePath` is set. */
47
49
  readonly stateBackend: RegularStateBackend;
48
50
  readonly authorship: AuthorshipOptions;
51
+ /** Optional RPC server configuration. When present, an in-process RPC server is started. */
52
+ readonly rpc: RpcOptions | undefined;
49
53
  static fromJson: import("@typeberry/json-parser").FromJsonWithParser<unknown, NodeConfiguration>;
50
- static new({ $schema, version, flavor, chain_spec, database_base_path, state_backend, authorship, }: NodeConfigurationJson): NodeConfiguration;
54
+ static new({ $schema, version, flavor, chain_spec, database_base_path, state_backend, authorship, rpc, }: NodeConfigurationJson): NodeConfiguration;
51
55
  private constructor();
52
56
  }
53
57
  export declare function loadConfig(config: string[], withRelPath: (p: string) => string): NodeConfiguration;
@@ -1 +1 @@
1
- {"version":3,"file":"node-config.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/config-node/node-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,KAAK,QAAQ,EAAuB,MAAM,wBAAwB,CAAC;AAG5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAInD,+DAA+D;AAC/D,eAAO,MAAM,eAAe,QAAQ,CAAC;AACrC,eAAO,MAAM,eAAe,aAAa,CAAC;AAE1C,2BAA2B;AAC3B,eAAO,MAAM,cAAc,YAAY,CAAC;AAExC,eAAO,MAAM,aAAa;;;;CAIzB,CAAC;AAEF,0BAA0B;AAC1B,oBAAY,cAAc;IACxB,uBAAuB;IACvB,IAAI,SAAS;IACb,uBAAuB;IACvB,IAAI,SAAS;CACd;AAED,gDAAgD;AAChD,oBAAY,mBAAmB;IAC7B,oGAAoG;IACpG,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,eAAO,MAAM,sBAAsB,EAS7B,QAAQ,CAAC,cAAc,CAAC,CAAC;AAE/B,eAAO,MAAM,2BAA2B,EASlC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAEpC,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,YAAY,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,UAAU,EAAE,iBAAiB,CAAC;CAC/B,CAAC;AAEF,qBAAa,iBAAiB;aAsCV,OAAO,EAAE,MAAM;aACf,OAAO,EAAE,MAAM;aACf,MAAM,EAAE,cAAc;aACtB,SAAS,EAAE,YAAY;IACvC,iEAAiE;aACjD,gBAAgB,EAAE,MAAM,GAAG,SAAS;IACpD,uEAAuE;aACvD,YAAY,EAAE,mBAAmB;aACjC,UAAU,EAAE,iBAAiB;IA7C/C,MAAM,CAAC,QAAQ,kFAWb;IAEF,MAAM,CAAC,GAAG,CAAC,EACT,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,UAAU,GACX,EAAE,qBAAqB;IAexB,OAAO;CAWR;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,iBAAiB,CAuDlG"}
1
+ {"version":3,"file":"node-config.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/config-node/node-config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,OAAO,EAAE,KAAK,QAAQ,EAAuB,MAAM,wBAAwB,CAAC;AAG5E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAItC,+DAA+D;AAC/D,eAAO,MAAM,eAAe,QAAQ,CAAC;AACrC,eAAO,MAAM,eAAe,aAAa,CAAC;AAE1C,2BAA2B;AAC3B,eAAO,MAAM,cAAc,YAAY,CAAC;AAExC,eAAO,MAAM,aAAa;;;;CAIzB,CAAC;AAEF,0BAA0B;AAC1B,oBAAY,cAAc;IACxB,uBAAuB;IACvB,IAAI,SAAS;IACb,uBAAuB;IACvB,IAAI,SAAS;CACd;AAED,gDAAgD;AAChD,oBAAY,mBAAmB;IAC7B,oGAAoG;IACpG,IAAI,SAAS;IACb,KAAK,UAAU;CAChB;AAED,eAAO,MAAM,sBAAsB,EAS7B,QAAQ,CAAC,cAAc,CAAC,CAAC;AAE/B,eAAO,MAAM,2BAA2B,EASlC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;AAEpC,KAAK,qBAAqB,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,cAAc,CAAC;IACvB,UAAU,EAAE,YAAY,CAAC;IACzB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,GAAG,CAAC,EAAE,UAAU,CAAC;CAClB,CAAC;AAEF,qBAAa,iBAAiB;aAyCV,OAAO,EAAE,MAAM;aACf,OAAO,EAAE,MAAM;aACf,MAAM,EAAE,cAAc;aACtB,SAAS,EAAE,YAAY;IACvC,iEAAiE;aACjD,gBAAgB,EAAE,MAAM,GAAG,SAAS;IACpD,uEAAuE;aACvD,YAAY,EAAE,mBAAmB;aACjC,UAAU,EAAE,iBAAiB;IAC7C,4FAA4F;aAC5E,GAAG,EAAE,UAAU,GAAG,SAAS;IAlD7C,MAAM,CAAC,QAAQ,kFAYb;IAEF,MAAM,CAAC,GAAG,CAAC,EACT,OAAO,EACP,OAAO,EACP,MAAM,EACN,UAAU,EACV,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,GAAG,GACJ,EAAE,qBAAqB;IAgBxB,OAAO;CAaR;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,iBAAiB,CAuDlG"}
@@ -7,6 +7,7 @@ import { Logger } from "#@typeberry/logger";
7
7
  import { isBrowser } from "#@typeberry/utils";
8
8
  import { AuthorshipOptions } from "./authorship.js";
9
9
  import { JipChainSpec } from "./jip-chain-spec.js";
10
+ import { RpcOptions } from "./rpc.js";
10
11
  const logger = Logger.new(import.meta.filename, "config");
11
12
  /** Development config. Will accept unsealed blocks for now. */
12
13
  export const DEV_TINY_CONFIG = "dev";
@@ -61,6 +62,7 @@ export class NodeConfiguration {
61
62
  databaseBasePath;
62
63
  stateBackend;
63
64
  authorship;
65
+ rpc;
64
66
  static fromJson = json.object({
65
67
  $schema: "string",
66
68
  version: "number",
@@ -69,18 +71,21 @@ export class NodeConfiguration {
69
71
  database_base_path: json.optional("string"),
70
72
  state_backend: json.optional(regularStateBackendFromJson),
71
73
  authorship: AuthorshipOptions.fromJson,
74
+ rpc: json.optional(RpcOptions.fromJson),
72
75
  }, NodeConfiguration.new);
73
- static new({ $schema, version, flavor, chain_spec, database_base_path, state_backend, authorship, }) {
76
+ static new({ $schema, version, flavor, chain_spec, database_base_path, state_backend, authorship, rpc, }) {
74
77
  if (version !== 1) {
75
78
  throw new Error("Only version=1 config is supported.");
76
79
  }
77
- return new NodeConfiguration($schema, version, flavor, chain_spec, database_base_path ?? undefined, state_backend ?? RegularStateBackend.Fjall, authorship);
80
+ return new NodeConfiguration($schema, version, flavor, chain_spec, database_base_path ?? undefined, state_backend ?? RegularStateBackend.Fjall, authorship, rpc ?? undefined);
78
81
  }
79
82
  constructor($schema, version, flavor, chainSpec,
80
83
  /** If database path is not provided, we load an in-memory db. */
81
84
  databaseBasePath,
82
85
  /** Persistent database backend used when `databaseBasePath` is set. */
83
- stateBackend, authorship) {
86
+ stateBackend, authorship,
87
+ /** Optional RPC server configuration. When present, an in-process RPC server is started. */
88
+ rpc) {
84
89
  this.$schema = $schema;
85
90
  this.version = version;
86
91
  this.flavor = flavor;
@@ -88,6 +93,7 @@ export class NodeConfiguration {
88
93
  this.databaseBasePath = databaseBasePath;
89
94
  this.stateBackend = stateBackend;
90
95
  this.authorship = authorship;
96
+ this.rpc = rpc;
91
97
  }
92
98
  }
93
99
  export function loadConfig(config, withRelPath) {
@@ -6,6 +6,7 @@ import polkajamConfig from "#@typeberry/configs/typeberry-polkajam-dev.json" wit
6
6
  import { parseFromJson } from "#@typeberry/json-parser";
7
7
  import { workspacePathFix } from "#@typeberry/utils";
8
8
  import { KnownChainSpec, loadConfig, NodeConfiguration, RegularStateBackend } from "./node-config.js";
9
+ import { RpcOptions } from "./rpc.js";
9
10
  const withRelPath = workspacePathFix(`${import.meta.dirname}/../..`);
10
11
  const NODE_CONFIG_TEST = {
11
12
  $schema: "https://typeberry.dev/schemas/config-v1.schema.json",
@@ -43,6 +44,13 @@ describe("Importing Node Configuration", () => {
43
44
  it("defaults to the fjall state backend", () => {
44
45
  assert.deepStrictEqual(config.stateBackend, RegularStateBackend.Fjall);
45
46
  });
47
+ it("defaults to no rpc config", () => {
48
+ assert.deepStrictEqual(config.rpc, undefined);
49
+ });
50
+ it("should read rpc config when present", () => {
51
+ const withRpc = parseFromJson({ ...NODE_CONFIG_TEST, rpc: { port: 9999 } }, NodeConfiguration.fromJson);
52
+ assert.deepStrictEqual(withRpc.rpc, RpcOptions.new({ port: 9999 }));
53
+ });
46
54
  it("should read the state backend", () => {
47
55
  const lmdbConfig = parseFromJson({ ...NODE_CONFIG_TEST, state_backend: "lmdb" }, NodeConfiguration.fromJson);
48
56
  assert.deepStrictEqual(lmdbConfig.stateBackend, RegularStateBackend.Lmdb);
@@ -74,6 +82,7 @@ describe("loadConfig", () => {
74
82
  it("should load default config", () => {
75
83
  const config = loadConfig(["default"], withRelPath);
76
84
  assert.deepStrictEqual(config, parseFromJson(configs.default, NodeConfiguration.fromJson));
85
+ assert.deepStrictEqual(config.rpc, RpcOptions.new({ port: 19800 }));
77
86
  });
78
87
  it("should load dev config", () => {
79
88
  const config = loadConfig(["dev"], withRelPath);
@@ -0,0 +1,11 @@
1
+ /** RPC server options. */
2
+ export declare class RpcOptions {
3
+ /** Port for the JSON-RPC WebSocket server. */
4
+ readonly port: number;
5
+ static fromJson: import("@typeberry/json-parser").FromJsonWithParser<unknown, RpcOptions>;
6
+ static new({ port }: {
7
+ port: number;
8
+ }): RpcOptions;
9
+ private constructor();
10
+ }
11
+ //# sourceMappingURL=rpc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rpc.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/config-node/rpc.ts"],"names":[],"mappings":"AAGA,0BAA0B;AAC1B,qBAAa,UAAU;IAanB,8CAA8C;aAC9B,IAAI,EAAE,MAAM;IAb9B,MAAM,CAAC,QAAQ,2EAKb;IAEF,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAIrC,OAAO;CAIR"}
@@ -0,0 +1,16 @@
1
+ import { json } from "#@typeberry/json-parser";
2
+ /** RPC server options. */
3
+ export class RpcOptions {
4
+ port;
5
+ static fromJson = json.object({
6
+ port: "number",
7
+ }, RpcOptions.new);
8
+ static new({ port }) {
9
+ return new RpcOptions(port);
10
+ }
11
+ constructor(
12
+ /** Port for the JSON-RPC WebSocket server. */
13
+ port) {
14
+ this.port = port;
15
+ }
16
+ }
@@ -26,11 +26,13 @@ export declare class JamConfig {
26
26
  readonly dev: DevConfig | null;
27
27
  /** Networking options. */
28
28
  readonly network: NetworkConfig | null;
29
+ /** RPC WebSocket port. When set, an in-process RPC server is started. */
30
+ readonly rpcPort: number | null;
29
31
  /** Optional pre-genesis ancestry information. */
30
32
  readonly ancestry: [HeaderHash, TimeSlot][];
31
33
  /** Validator index for dev mode authorship. Use "all" to author as all validators. */
32
34
  readonly devValidatorIndex: U16 | "all" | null;
33
- static new({ isAuthoring, isFastForward, nodeName, nodeConfig, pvmBackend, devConfig, networkConfig, ancestry, devValidatorIndex, }: {
35
+ static new({ isAuthoring, isFastForward, nodeName, nodeConfig, pvmBackend, devConfig, networkConfig, rpcPort, ancestry, devValidatorIndex, }: {
34
36
  isAuthoring?: boolean;
35
37
  isFastForward?: boolean;
36
38
  nodeName: string;
@@ -38,6 +40,8 @@ export declare class JamConfig {
38
40
  pvmBackend: PvmBackend;
39
41
  devConfig?: DevConfig | null;
40
42
  networkConfig?: NetworkConfig | null;
43
+ /** RPC WebSocket port. When set, an in-process RPC server is started. */
44
+ rpcPort?: number | null;
41
45
  ancestry?: [HeaderHash, TimeSlot][];
42
46
  /** Validator index for dev mode authorship. Use "all" to author as all validators. */
43
47
  devValidatorIndex?: U16 | "all" | null;
@@ -1 +1 @@
1
- {"version":3,"file":"jam-config.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/node/jam-config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,QAAQ,EAGb,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AACtF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAS;IAqClB,6CAA6C;aAC7B,WAAW,EAAE,OAAO;IACpC,6FAA6F;aAC7E,aAAa,EAAE,OAAO;IACtC,iBAAiB;aACD,QAAQ,EAAE,MAAM;IAChC,mCAAmC;aACnB,IAAI,EAAE,iBAAiB;IACvC,4BAA4B;aACZ,UAAU,EAAE,UAAU;IACtC,wCAAwC;aACxB,GAAG,EAAE,SAAS,GAAG,IAAI;IACrC,0BAA0B;aACV,OAAO,EAAE,aAAa,GAAG,IAAI;IAC7C,iDAAiD;aACjC,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;IAClD,sFAAsF;aACtE,iBAAiB,EAAE,GAAG,GAAG,KAAK,GAAG,IAAI;IArDvD,MAAM,CAAC,GAAG,CAAC,EACT,WAAW,EACX,aAAa,EACb,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAgB,EAChB,aAAoB,EACpB,QAAa,EACb,iBAAwB,GACzB,EAAE;QACD,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,iBAAiB,CAAC;QAC9B,UAAU,EAAE,UAAU,CAAC;QACvB,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QAC7B,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;QACrC,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;QACpC,sFAAsF;QACtF,iBAAiB,CAAC,EAAE,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC;KACxC;IAcD,OAAO;CAoBR;AAED,6CAA6C;AAC7C,MAAM,MAAM,aAAa,GAAG;IAC1B,uCAAuC;IACvC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,8BAA8B;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,oCAAoC;AACpC,MAAM,MAAM,SAAS,GAAG;IAGtB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,wCAAwC;IACxC,cAAc,EAAE,cAAc,CAAC;IAC/B,2CAA2C;IAC3C,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,gCAAgC;AAChC,MAAM,MAAM,aAAa,GAAG;IAC1B,2BAA2B;IAC3B,GAAG,EAAE,iBAAiB,CAAC;IACvB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB,CAAC"}
1
+ {"version":3,"file":"jam-config.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/node/jam-config.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,UAAU,EACf,KAAK,QAAQ,EAGb,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,qCAAqC,CAAC;AACtF,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE9C,eAAO,MAAM,kBAAkB;;;;CAI9B,CAAC;AAEF;;GAEG;AACH,qBAAa,SAAS;IAyClB,6CAA6C;aAC7B,WAAW,EAAE,OAAO;IACpC,6FAA6F;aAC7E,aAAa,EAAE,OAAO;IACtC,iBAAiB;aACD,QAAQ,EAAE,MAAM;IAChC,mCAAmC;aACnB,IAAI,EAAE,iBAAiB;IACvC,4BAA4B;aACZ,UAAU,EAAE,UAAU;IACtC,wCAAwC;aACxB,GAAG,EAAE,SAAS,GAAG,IAAI;IACrC,0BAA0B;aACV,OAAO,EAAE,aAAa,GAAG,IAAI;IAC7C,yEAAyE;aACzD,OAAO,EAAE,MAAM,GAAG,IAAI;IACtC,iDAAiD;aACjC,QAAQ,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE;IAClD,sFAAsF;aACtE,iBAAiB,EAAE,GAAG,GAAG,KAAK,GAAG,IAAI;IA3DvD,MAAM,CAAC,GAAG,CAAC,EACT,WAAW,EACX,aAAa,EACb,QAAQ,EACR,UAAU,EACV,UAAU,EACV,SAAgB,EAChB,aAAoB,EACpB,OAAc,EACd,QAAa,EACb,iBAAwB,GACzB,EAAE;QACD,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,aAAa,CAAC,EAAE,OAAO,CAAC;QACxB,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,iBAAiB,CAAC;QAC9B,UAAU,EAAE,UAAU,CAAC;QACvB,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;QAC7B,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;QACrC,yEAAyE;QACzE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACxB,QAAQ,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC;QACpC,sFAAsF;QACtF,iBAAiB,CAAC,EAAE,GAAG,GAAG,KAAK,GAAG,IAAI,CAAC;KACxC;IAeD,OAAO;CAsBR;AAED,6CAA6C;AAC7C,MAAM,MAAM,aAAa,GAAG;IAC1B,uCAAuC;IACvC,gBAAgB,EAAE,OAAO,CAAC;IAC1B,8BAA8B;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,kCAAkC;IAClC,WAAW,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,oCAAoC;AACpC,MAAM,MAAM,SAAS,GAAG;IAGtB,mDAAmD;IACnD,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,QAAQ,EAAE,QAAQ,CAAC;IACnB,wCAAwC;IACxC,cAAc,EAAE,cAAc,CAAC;IAC/B,2CAA2C;IAC3C,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB,CAAC;AAEF,gCAAgC;AAChC,MAAM,MAAM,aAAa,GAAG;IAC1B,2BAA2B;IAC3B,GAAG,EAAE,iBAAiB,CAAC;IACvB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,yCAAyC;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB,CAAC"}
@@ -15,10 +15,11 @@ export class JamConfig {
15
15
  pvmBackend;
16
16
  dev;
17
17
  network;
18
+ rpcPort;
18
19
  ancestry;
19
20
  devValidatorIndex;
20
- static new({ isAuthoring, isFastForward, nodeName, nodeConfig, pvmBackend, devConfig = null, networkConfig = null, ancestry = [], devValidatorIndex = null, }) {
21
- return new JamConfig(isAuthoring ?? false, isFastForward ?? false, nodeName, nodeConfig, pvmBackend, devConfig, networkConfig, ancestry, devValidatorIndex);
21
+ static new({ isAuthoring, isFastForward, nodeName, nodeConfig, pvmBackend, devConfig = null, networkConfig = null, rpcPort = null, ancestry = [], devValidatorIndex = null, }) {
22
+ return new JamConfig(isAuthoring ?? false, isFastForward ?? false, nodeName, nodeConfig, pvmBackend, devConfig, networkConfig, rpcPort, ancestry, devValidatorIndex);
22
23
  }
23
24
  constructor(
24
25
  /** Whether we should be authoring blocks. */
@@ -35,6 +36,8 @@ export class JamConfig {
35
36
  dev,
36
37
  /** Networking options. */
37
38
  network,
39
+ /** RPC WebSocket port. When set, an in-process RPC server is started. */
40
+ rpcPort,
38
41
  /** Optional pre-genesis ancestry information. */
39
42
  ancestry,
40
43
  /** Validator index for dev mode authorship. Use "all" to author as all validators. */
@@ -46,6 +49,7 @@ export class JamConfig {
46
49
  this.pvmBackend = pvmBackend;
47
50
  this.dev = dev;
48
51
  this.network = network;
52
+ this.rpcPort = rpcPort;
49
53
  this.ancestry = ancestry;
50
54
  this.devValidatorIndex = devValidatorIndex;
51
55
  }
@@ -1 +1 @@
1
- {"version":3,"file":"main-fuzz.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/node/main-fuzz.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIrD,OAAO,EAAE,KAAK,MAAM,EAAoC,MAAM,kBAAkB,CAAC;AAGjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,aAAa,EAAE,SAAS,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,uBAAuB,EAAE,OAAO,CAAC;CAClC,CAAC;AAsBF;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CASpF;AAED,iFAAiF;AACjF,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D;AAED,wBAAgB,cAAc;;;;EAM7B;AAED,wBAAsB,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA6LrH"}
1
+ {"version":3,"file":"main-fuzz.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/node/main-fuzz.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,WAAW,EAAmB,MAAM,oBAAoB,CAAC;AACvE,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAIrD,OAAO,EAAE,KAAK,MAAM,EAAoC,MAAM,kBAAkB,CAAC;AAGjF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIjD,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,WAAW,CAAC;IACrB,aAAa,EAAE,SAAS,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,uBAAuB,EAAE,OAAO,CAAC;CAClC,CAAC;AAsBF;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CASpF;AAED,iFAAiF;AACjF,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE5D;AAED,wBAAgB,cAAc;;;;EAM7B;AAED,wBAAsB,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA8LrH"}
@@ -155,29 +155,30 @@ export async function mainFuzz(fuzzConfig, withRelPath) {
155
155
  if (hybridStateBackend === FUZZ_DB_FJALL) {
156
156
  // fjall-hybrid: manage a reused values session.
157
157
  // Rebuild it periodically to avoid LSM read amplification.
158
+ const fjallSessionPath = `${withRelPath(fuzzDbBase)}/${FUZZ_FJALL_VALUES_SUBDIR}`;
158
159
  if (resetCount === 1) {
159
160
  // First reset: start from a clean slate.
160
161
  await wipeFuzzDb(fuzzDbBase);
161
- fjallSession = await FjallValuesSession.open(`${withRelPath(fuzzDbBase)}/${FUZZ_FJALL_VALUES_SUBDIR}`, {
162
+ fjallSession = await FjallValuesSession.open(fjallSessionPath, {
162
163
  ephemeral: true,
163
164
  cacheSizeBytes: FUZZ_FJALL_CACHE_BYTES,
164
165
  });
165
- logger.info `🗄️ Opened reusable fjall values session at ${withRelPath(fuzzDbBase)}/${FUZZ_FJALL_VALUES_SUBDIR}`;
166
+ logger.info `🗄️ Opened reusable fjall values session at ${fjallSessionPath}`;
166
167
  }
167
168
  if (resetCount % REBUILD_FJALL_SESSION_EVERY === 0 && fjallSession !== null) {
168
169
  // Periodic rebuild: close, wipe session dir, and reopen.
169
170
  const session = fjallSession;
170
171
  fjallSession = null;
171
172
  await session.close().catch(() => { });
172
- await wipeFuzzDb(`${fuzzDbBase}/${FUZZ_FJALL_VALUES_SUBDIR}`).catch(() => { });
173
+ await wipeFuzzDb(fjallSessionPath).catch(() => { });
173
174
  }
174
175
  if (fjallSession === null) {
175
176
  // No active session: create a fresh one.
176
- fjallSession = await FjallValuesSession.open(`${withRelPath(fuzzDbBase)}/${FUZZ_FJALL_VALUES_SUBDIR}`, {
177
+ fjallSession = await FjallValuesSession.open(fjallSessionPath, {
177
178
  ephemeral: true,
178
179
  cacheSizeBytes: FUZZ_FJALL_CACHE_BYTES,
179
180
  });
180
- logger.info `🗄️ Opened reusable fjall values session at ${withRelPath(fuzzDbBase)}/${FUZZ_FJALL_VALUES_SUBDIR}`;
181
+ logger.info `🗄️ Opened reusable fjall values session at ${fjallSessionPath}`;
181
182
  }
182
183
  }
183
184
  else {
@@ -0,0 +1,3 @@
1
+ export { handlers as rpcHandlers } from "./src/handlers.js";
2
+ export { RpcServer } from "./src/server.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../packages/jam/rpc/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { handlers as rpcHandlers } from "./src/handlers.js";
2
+ export { RpcServer } from "./src/server.js";
@@ -0,0 +1,6 @@
1
+ import { type Handler } from "#@typeberry/rpc-validation";
2
+ /**
3
+ * https://github.com/polkadot-fellows/JIPs/blob/772ce90bfc33f4e1de9de3bbe10c561753cc0d41/JIP-2.md#bestblock
4
+ */
5
+ export declare const bestBlock: Handler<"bestBlock">;
6
+ //# sourceMappingURL=best-block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"best-block.d.ts","sourceRoot":"","sources":["../../../../../../../packages/jam/rpc/src/handlers/best-block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAsC,MAAM,2BAA2B,CAAC;AAE7F;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,OAAO,CAAC,WAAW,CAgB1C,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { RpcError, RpcErrorCode, validation } from "#@typeberry/rpc-validation";
2
+ /**
3
+ * https://github.com/polkadot-fellows/JIPs/blob/772ce90bfc33f4e1de9de3bbe10c561753cc0d41/JIP-2.md#bestblock
4
+ */
5
+ export const bestBlock = async (_params, { db }) => {
6
+ const headerHash = db.blocks.getBestHeaderHash();
7
+ const header = db.blocks.getHeader(headerHash);
8
+ if (header === null) {
9
+ throw new RpcError(RpcErrorCode.BlockUnavailable, `Best header not found with hash: ${headerHash.toString()}`, validation.hash.encode(headerHash.raw));
10
+ }
11
+ return {
12
+ header_hash: headerHash.raw,
13
+ slot: header.timeSlotIndex.materialize(),
14
+ };
15
+ };
@@ -0,0 +1,6 @@
1
+ import type { Handler } from "#@typeberry/rpc-validation";
2
+ /**
3
+ * https://github.com/polkadot-fellows/JIPs/blob/772ce90bfc33f4e1de9de3bbe10c561753cc0d41/JIP-2.md#finalizedblock
4
+ */
5
+ export declare const finalizedBlock: Handler<"finalizedBlock">;
6
+ //# sourceMappingURL=finalized-block.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finalized-block.d.ts","sourceRoot":"","sources":["../../../../../../../packages/jam/rpc/src/handlers/finalized-block.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAGzD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,gBAAgB,CAEpD,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { bestBlock } from "./best-block.js";
2
+ /**
3
+ * https://github.com/polkadot-fellows/JIPs/blob/772ce90bfc33f4e1de9de3bbe10c561753cc0d41/JIP-2.md#finalizedblock
4
+ */
5
+ export const finalizedBlock = async (params, context) => {
6
+ return bestBlock(params, context); // todo [seko] implement finalized block logic once finality is there
7
+ };
@@ -0,0 +1,6 @@
1
+ import { type Handler } from "#@typeberry/rpc-validation";
2
+ /**
3
+ * https://github.com/polkadot-fellows/JIPs/blob/772ce90bfc33f4e1de9de3bbe10c561753cc0d41/JIP-2.md#listservicesheader_hash
4
+ */
5
+ export declare const listServices: Handler<"listServices">;
6
+ //# sourceMappingURL=list-services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-services.d.ts","sourceRoot":"","sources":["../../../../../../../packages/jam/rpc/src/handlers/list-services.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,OAAO,EAA0B,MAAM,2BAA2B,CAAC;AAEjF;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,OAAO,CAAC,cAAc,CAWhD,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { Bytes } from "#@typeberry/bytes";
2
+ import { HASH_SIZE } from "#@typeberry/hash";
3
+ import { RpcError, RpcErrorCode } from "#@typeberry/rpc-validation";
4
+ /**
5
+ * https://github.com/polkadot-fellows/JIPs/blob/772ce90bfc33f4e1de9de3bbe10c561753cc0d41/JIP-2.md#listservicesheader_hash
6
+ */
7
+ export const listServices = async ([headerHash], { db }) => {
8
+ const hashOpaque = Bytes.fromBlob(headerHash, HASH_SIZE).asOpaque();
9
+ const state = db.states.getState(hashOpaque);
10
+ if (state === null) {
11
+ throw new RpcError(RpcErrorCode.Other, `Posterior state not found for block: ${hashOpaque.toString()}`);
12
+ }
13
+ const serviceIds = state.recentServiceIds();
14
+ return [...serviceIds];
15
+ };
@@ -0,0 +1,4 @@
1
+ import { type GenericHandler, type validation } from "#@typeberry/rpc-validation";
2
+ import type z from "zod";
3
+ export declare const notImplemented: GenericHandler<z.infer<typeof validation.notImplementedSchema.input>, z.infer<typeof validation.notImplementedSchema.output>>;
4
+ //# sourceMappingURL=not-implemented.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"not-implemented.d.ts","sourceRoot":"","sources":["../../../../../../../packages/jam/rpc/src/handlers/not-implemented.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,cAAc,EAA0B,KAAK,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACzG,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,eAAO,MAAM,cAAc,EAAE,cAAc,CACzC,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,EACrD,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAGvD,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { RpcError, RpcErrorCode } from "#@typeberry/rpc-validation";
2
+ export const notImplemented = () => {
3
+ throw new RpcError(RpcErrorCode.Other, "Method not implemented");
4
+ };
@@ -0,0 +1,7 @@
1
+ import type { Handler } from "#@typeberry/rpc-validation";
2
+ /**
3
+ * https://github.com/polkadot-fellows/JIPs/blob/77cba2dcc1887233d4b19371c05284ff761a5fa6/JIP-2.md#chain-parameters
4
+ * Returns the parameters of the current node/chain.
5
+ */
6
+ export declare const parameters: Handler<"parameters">;
7
+ //# sourceMappingURL=parameters.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parameters.d.ts","sourceRoot":"","sources":["../../../../../../../packages/jam/rpc/src/handlers/parameters.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AAUzD;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,OAAO,CAAC,YAAY,CA0C5C,CAAC"}
@@ -0,0 +1,53 @@
1
+ import { W_E } from "#@typeberry/block";
2
+ import { G_I, MAX_REPORT_DEPENDENCIES, O, Q, T, W_B, W_C, W_T } from "#@typeberry/block/gp-constants.js";
3
+ import { MAX_NUMBER_OF_WORK_ITEMS } from "#@typeberry/block/work-package.js";
4
+ import { BASE_SERVICE_BALANCE, ELECTIVE_BYTE_BALANCE, ELECTIVE_ITEM_BALANCE, MAX_RECENT_HISTORY, } from "#@typeberry/state";
5
+ import { REPORT_TIMEOUT_GRACE_PERIOD } from "#@typeberry/transition/assurances.js";
6
+ import { G_A } from "#@typeberry/transition/reports/verify-post-signature.js";
7
+ /**
8
+ * https://github.com/polkadot-fellows/JIPs/blob/77cba2dcc1887233d4b19371c05284ff761a5fa6/JIP-2.md#chain-parameters
9
+ * Returns the parameters of the current node/chain.
10
+ */
11
+ export const parameters = async (_params, { chainSpec }) => {
12
+ return {
13
+ V1: {
14
+ deposit_per_account: Number(BASE_SERVICE_BALANCE),
15
+ deposit_per_item: Number(ELECTIVE_ITEM_BALANCE),
16
+ deposit_per_byte: Number(ELECTIVE_BYTE_BALANCE),
17
+ min_turnaround_period: 32,
18
+ epoch_period: chainSpec.epochLength,
19
+ max_accumulate_gas: G_A,
20
+ max_is_authorized_gas: G_I,
21
+ max_refine_gas: Number(chainSpec.maxRefineGas),
22
+ block_gas_limit: Number(chainSpec.maxBlockGas),
23
+ recent_block_count: MAX_RECENT_HISTORY,
24
+ max_work_items: MAX_NUMBER_OF_WORK_ITEMS,
25
+ max_dependencies: MAX_REPORT_DEPENDENCIES,
26
+ max_tickets_per_block: chainSpec.maxTicketsPerExtrinsic,
27
+ max_lookup_anchor_age: chainSpec.maxLookupAnchorAge,
28
+ tickets_attempts_number: chainSpec.ticketsPerValidator,
29
+ auth_window: O,
30
+ auth_queue_len: Q,
31
+ rotation_period: chainSpec.rotationPeriod,
32
+ max_extrinsics: T,
33
+ availability_timeout: REPORT_TIMEOUT_GRACE_PERIOD,
34
+ val_count: chainSpec.validatorsCount,
35
+ max_input: W_B,
36
+ max_refine_code_size: W_C,
37
+ basic_piece_len: W_E,
38
+ max_imports: 3072,
39
+ max_is_authorized_code_size: 64000,
40
+ max_exports: 3072,
41
+ max_refine_memory: 4096,
42
+ max_is_authorized_memory: 4096,
43
+ segment_piece_count: chainSpec.numberECPiecesPerSegment,
44
+ max_report_elective_data: 49152,
45
+ transfer_memo_size: W_T,
46
+ epoch_tail_start: chainSpec.contestLength,
47
+ core_count: chainSpec.coresCount,
48
+ slot_period_sec: chainSpec.slotDuration,
49
+ max_authorizer_code_size: 64000,
50
+ max_service_code_size: 4000000,
51
+ },
52
+ };
53
+ };
@@ -0,0 +1,6 @@
1
+ import { type Handler } from "#@typeberry/rpc-validation";
2
+ /**
3
+ * https://github.com/polkadot-fellows/JIPs/blob/772ce90bfc33f4e1de9de3bbe10c561753cc0d41/JIP-2.md#parentheader_hash
4
+ */
5
+ export declare const parent: Handler<"parent">;
6
+ //# sourceMappingURL=parent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parent.d.ts","sourceRoot":"","sources":["../../../../../../../packages/jam/rpc/src/handlers/parent.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,OAAO,EAAsC,MAAM,2BAA2B,CAAC;AAE7F;;GAEG;AACH,eAAO,MAAM,MAAM,EAAE,OAAO,CAAC,QAAQ,CA6BpC,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { Bytes } from "#@typeberry/bytes";
2
+ import { HASH_SIZE } from "#@typeberry/hash";
3
+ import { RpcError, RpcErrorCode, validation } from "#@typeberry/rpc-validation";
4
+ /**
5
+ * https://github.com/polkadot-fellows/JIPs/blob/772ce90bfc33f4e1de9de3bbe10c561753cc0d41/JIP-2.md#parentheader_hash
6
+ */
7
+ export const parent = async ([headerHash], { db }) => {
8
+ const hashOpaque = Bytes.fromBlob(headerHash, HASH_SIZE).asOpaque();
9
+ const header = db.blocks.getHeader(hashOpaque);
10
+ if (header === null) {
11
+ throw new RpcError(RpcErrorCode.BlockUnavailable, `Block unavailable: ${hashOpaque.toString()}`, validation.hash.encode(hashOpaque.raw));
12
+ }
13
+ const parentHash = header.parentHeaderHash.materialize();
14
+ if (parentHash.isEqualTo(Bytes.zero(HASH_SIZE).asOpaque())) {
15
+ throw new RpcError(RpcErrorCode.Other, `Parent not found for block: ${hashOpaque.toString()}`);
16
+ }
17
+ const parentHeader = db.blocks.getHeader(parentHash);
18
+ if (parentHeader === null) {
19
+ throw new RpcError(RpcErrorCode.Other, `The hash of parent was found (${parentHash}) but its header doesn't exist in the database.`);
20
+ }
21
+ return {
22
+ header_hash: parentHash.raw,
23
+ slot: parentHeader.timeSlotIndex.materialize(),
24
+ };
25
+ };
@@ -0,0 +1,6 @@
1
+ import { type Handler } from "#@typeberry/rpc-validation";
2
+ /**
3
+ * https://github.com/polkadot-fellows/JIPs/blob/772ce90bfc33f4e1de9de3bbe10c561753cc0d41/JIP-2.md#servicedataheader_hash-id
4
+ */
5
+ export declare const serviceData: Handler<"serviceData">;
6
+ //# sourceMappingURL=service-data.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-data.d.ts","sourceRoot":"","sources":["../../../../../../../packages/jam/rpc/src/handlers/service-data.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,OAAO,EAA0B,MAAM,2BAA2B,CAAC;AAGjF;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,OAAO,CAAC,aAAa,CAe9C,CAAC"}