@typeberry/lib 0.5.10-7338c21 → 0.5.10-9ffd7ac

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 (443) hide show
  1. package/README.md +2 -2
  2. package/bin/lib/examples/pvm-usage.test.js +2 -2
  3. package/package.json +1 -1
  4. package/packages/core/codec/descriptor.js +1 -1
  5. package/packages/core/codec/descriptors.js +7 -4
  6. package/packages/core/codec/index.test.js +1 -1
  7. package/packages/core/codec/skip.d.ts +2 -1
  8. package/packages/core/codec/skip.d.ts.map +1 -1
  9. package/packages/core/codec/skip.js +3 -0
  10. package/packages/core/codec/view.js +2 -2
  11. package/packages/core/collections/multi-map.d.ts +2 -1
  12. package/packages/core/collections/multi-map.d.ts.map +1 -1
  13. package/packages/core/collections/multi-map.js +3 -0
  14. package/packages/core/collections/multi-map.test.js +2 -2
  15. package/packages/core/concurrent/parent.js +4 -1
  16. package/packages/core/crypto/ed25519.d.ts +2 -5
  17. package/packages/core/crypto/ed25519.d.ts.map +1 -1
  18. package/packages/core/crypto/ed25519.js +4 -1
  19. package/packages/core/hash/hash.d.ts +4 -2
  20. package/packages/core/hash/hash.d.ts.map +1 -1
  21. package/packages/core/hash/hash.js +6 -1
  22. package/packages/core/networking/quic-network.d.ts +3 -2
  23. package/packages/core/networking/quic-network.d.ts.map +1 -1
  24. package/packages/core/networking/quic-network.js +3 -0
  25. package/packages/core/networking/quic-peer.d.ts +2 -1
  26. package/packages/core/networking/quic-peer.d.ts.map +1 -1
  27. package/packages/core/networking/quic-peer.js +5 -2
  28. package/packages/core/networking/quic-stream.d.ts +2 -1
  29. package/packages/core/networking/quic-stream.d.ts.map +1 -1
  30. package/packages/core/networking/quic-stream.js +3 -0
  31. package/packages/core/networking/setup.js +2 -2
  32. package/packages/core/pvm-host-calls/bin.js +2 -2
  33. package/packages/core/pvm-host-calls/ecalli-trace-logger.test.js +1 -1
  34. package/packages/core/pvm-host-calls/host-call-memory.d.ts +2 -1
  35. package/packages/core/pvm-host-calls/host-call-memory.d.ts.map +1 -1
  36. package/packages/core/pvm-host-calls/host-call-memory.js +3 -0
  37. package/packages/core/pvm-host-calls/host-call-memory.test.js +1 -1
  38. package/packages/core/pvm-host-calls/host-call-registers.d.ts +5 -1
  39. package/packages/core/pvm-host-calls/host-call-registers.d.ts.map +1 -1
  40. package/packages/core/pvm-host-calls/host-call-registers.js +11 -1
  41. package/packages/core/pvm-host-calls/host-call-registers.test.js +2 -2
  42. package/packages/core/pvm-host-calls/host-calls-executor.d.ts +2 -1
  43. package/packages/core/pvm-host-calls/host-calls-executor.d.ts.map +1 -1
  44. package/packages/core/pvm-host-calls/host-calls-executor.js +5 -2
  45. package/packages/core/pvm-host-calls/host-calls.d.ts +4 -2
  46. package/packages/core/pvm-host-calls/host-calls.d.ts.map +1 -1
  47. package/packages/core/pvm-host-calls/host-calls.js +9 -4
  48. package/packages/core/pvm-host-calls/pvm-instance-manager.js +1 -1
  49. package/packages/core/pvm-interpreter/args-decoder/args-decoder.js +1 -1
  50. package/packages/core/pvm-interpreter/args-decoder/args-decoder.test.js +3 -3
  51. package/packages/core/pvm-interpreter/args-decoder/args-decoding-results.js +11 -11
  52. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts +2 -1
  53. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.d.ts.map +1 -1
  54. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.js +3 -0
  55. package/packages/core/pvm-interpreter/args-decoder/decoders/extended-with-immediate-decoder.test.js +2 -2
  56. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts +2 -1
  57. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.d.ts.map +1 -1
  58. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.js +3 -0
  59. package/packages/core/pvm-interpreter/args-decoder/decoders/immediate-decoder.test.js +26 -26
  60. package/packages/core/pvm-interpreter/basic-blocks/basic-blocks.test.js +8 -8
  61. package/packages/core/pvm-interpreter/bin.js +1 -1
  62. package/packages/core/pvm-interpreter/debugger-adapter.d.ts +2 -1
  63. package/packages/core/pvm-interpreter/debugger-adapter.d.ts.map +1 -1
  64. package/packages/core/pvm-interpreter/debugger-adapter.js +6 -3
  65. package/packages/core/pvm-interpreter/gas.js +4 -1
  66. package/packages/core/pvm-interpreter/interpreter.d.ts +2 -1
  67. package/packages/core/pvm-interpreter/interpreter.d.ts.map +1 -1
  68. package/packages/core/pvm-interpreter/interpreter.js +19 -16
  69. package/packages/core/pvm-interpreter/memory/memory-builder.js +2 -2
  70. package/packages/core/pvm-interpreter/memory/memory-builder.test.js +7 -7
  71. package/packages/core/pvm-interpreter/memory/memory.d.ts +2 -1
  72. package/packages/core/pvm-interpreter/memory/memory.d.ts.map +1 -1
  73. package/packages/core/pvm-interpreter/memory/memory.js +4 -1
  74. package/packages/core/pvm-interpreter/memory/memory.test.js +31 -31
  75. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts +2 -1
  76. package/packages/core/pvm-interpreter/memory/pages/readable-page.d.ts.map +1 -1
  77. package/packages/core/pvm-interpreter/memory/pages/readable-page.js +3 -0
  78. package/packages/core/pvm-interpreter/memory/pages/readable-page.test.js +3 -3
  79. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts +2 -1
  80. package/packages/core/pvm-interpreter/memory/pages/writeable-page.d.ts.map +1 -1
  81. package/packages/core/pvm-interpreter/memory/pages/writeable-page.js +3 -0
  82. package/packages/core/pvm-interpreter/memory/pages/writeable-page.test.js +4 -4
  83. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts +2 -1
  84. package/packages/core/pvm-interpreter/ops/bit-ops.d.ts.map +1 -1
  85. package/packages/core/pvm-interpreter/ops/bit-ops.js +3 -0
  86. package/packages/core/pvm-interpreter/ops/bit-ops.test.js +3 -3
  87. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts +2 -1
  88. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.d.ts.map +1 -1
  89. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.js +3 -0
  90. package/packages/core/pvm-interpreter/ops/bit-rotation-ops.test.js +5 -5
  91. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts +2 -1
  92. package/packages/core/pvm-interpreter/ops/boolean-ops.d.ts.map +1 -1
  93. package/packages/core/pvm-interpreter/ops/boolean-ops.js +3 -0
  94. package/packages/core/pvm-interpreter/ops/boolean-ops.test.js +3 -3
  95. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts +2 -1
  96. package/packages/core/pvm-interpreter/ops/branch-ops.d.ts.map +1 -1
  97. package/packages/core/pvm-interpreter/ops/branch-ops.js +3 -0
  98. package/packages/core/pvm-interpreter/ops/branch-ops.test.js +4 -4
  99. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts +2 -1
  100. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.d.ts.map +1 -1
  101. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.js +3 -0
  102. package/packages/core/pvm-interpreter/ops/dynamic-jump-ops.test.js +5 -5
  103. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts +2 -1
  104. package/packages/core/pvm-interpreter/ops/host-call-ops.d.ts.map +1 -1
  105. package/packages/core/pvm-interpreter/ops/host-call-ops.js +3 -0
  106. package/packages/core/pvm-interpreter/ops/host-call-ops.test.js +2 -2
  107. package/packages/core/pvm-interpreter/ops/load-ops.d.ts +2 -1
  108. package/packages/core/pvm-interpreter/ops/load-ops.d.ts.map +1 -1
  109. package/packages/core/pvm-interpreter/ops/load-ops.js +3 -0
  110. package/packages/core/pvm-interpreter/ops/load-ops.test.js +10 -10
  111. package/packages/core/pvm-interpreter/ops/math-ops.d.ts +2 -1
  112. package/packages/core/pvm-interpreter/ops/math-ops.d.ts.map +1 -1
  113. package/packages/core/pvm-interpreter/ops/math-ops.js +3 -0
  114. package/packages/core/pvm-interpreter/ops/math-ops.test.js +3 -3
  115. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts +2 -1
  116. package/packages/core/pvm-interpreter/ops/memory-ops.d.ts.map +1 -1
  117. package/packages/core/pvm-interpreter/ops/memory-ops.js +3 -0
  118. package/packages/core/pvm-interpreter/ops/memory-ops.test.js +3 -3
  119. package/packages/core/pvm-interpreter/ops/move-ops.d.ts +2 -1
  120. package/packages/core/pvm-interpreter/ops/move-ops.d.ts.map +1 -1
  121. package/packages/core/pvm-interpreter/ops/move-ops.js +3 -0
  122. package/packages/core/pvm-interpreter/ops/move-ops.test.js +3 -3
  123. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts +2 -1
  124. package/packages/core/pvm-interpreter/ops/no-args-ops.d.ts.map +1 -1
  125. package/packages/core/pvm-interpreter/ops/no-args-ops.js +3 -0
  126. package/packages/core/pvm-interpreter/ops/no-args-ops.test.js +2 -2
  127. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts +2 -1
  128. package/packages/core/pvm-interpreter/ops/shift-ops.d.ts.map +1 -1
  129. package/packages/core/pvm-interpreter/ops/shift-ops.js +3 -0
  130. package/packages/core/pvm-interpreter/ops/shift-ops.test.js +3 -3
  131. package/packages/core/pvm-interpreter/ops/store-ops.d.ts +2 -1
  132. package/packages/core/pvm-interpreter/ops/store-ops.d.ts.map +1 -1
  133. package/packages/core/pvm-interpreter/ops/store-ops.js +3 -0
  134. package/packages/core/pvm-interpreter/ops/store-ops.test.js +7 -7
  135. package/packages/core/pvm-interpreter/ops-dispatchers/no-args-dispatcher.test.js +1 -1
  136. package/packages/core/pvm-interpreter/ops-dispatchers/one-imm-dispatcher.test.js +4 -4
  137. package/packages/core/pvm-interpreter/ops-dispatchers/one-offset-dispatcher.test.js +2 -2
  138. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-ext-imm-dispatcher.test.js +4 -4
  139. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-dispatcher.test.js +7 -7
  140. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-one-imm-one-offset-dispatcher.test.js +10 -10
  141. package/packages/core/pvm-interpreter/ops-dispatchers/one-reg-two-imms-dispatcher.test.js +5 -5
  142. package/packages/core/pvm-interpreter/ops-dispatchers/three-regs-dispatcher.test.js +7 -7
  143. package/packages/core/pvm-interpreter/ops-dispatchers/two-imms-dispatcher.test.js +5 -5
  144. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-dispatcher.test.js +6 -6
  145. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-imm-dispatcher.test.js +11 -11
  146. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-one-offset-dispatcher.test.js +2 -2
  147. package/packages/core/pvm-interpreter/ops-dispatchers/two-regs-two-imms-dispatcher.test.js +14 -14
  148. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts +5 -2
  149. package/packages/core/pvm-interpreter/program-decoder/jump-table.d.ts.map +1 -1
  150. package/packages/core/pvm-interpreter/program-decoder/jump-table.js +9 -4
  151. package/packages/core/pvm-interpreter/program-decoder/jump-table.test.js +6 -6
  152. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts +2 -1
  153. package/packages/core/pvm-interpreter/program-decoder/mask.d.ts.map +1 -1
  154. package/packages/core/pvm-interpreter/program-decoder/mask.js +3 -0
  155. package/packages/core/pvm-interpreter/program-decoder/mask.test.js +10 -10
  156. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts +2 -1
  157. package/packages/core/pvm-interpreter/program-decoder/program-decoder.d.ts.map +1 -1
  158. package/packages/core/pvm-interpreter/program-decoder/program-decoder.js +6 -3
  159. package/packages/core/pvm-interpreter/program-decoder/program-decoder.test.js +5 -5
  160. package/packages/core/pvm-interpreter/program.js +3 -3
  161. package/packages/core/pvm-interpreter/registers.d.ts +5 -2
  162. package/packages/core/pvm-interpreter/registers.d.ts.map +1 -1
  163. package/packages/core/pvm-interpreter/registers.js +10 -6
  164. package/packages/core/pvm-interpreter/registers.test.js +10 -10
  165. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts +6 -3
  166. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.d.ts.map +1 -1
  167. package/packages/core/pvm-interpreter/spi-decoder/decode-standard-program.js +11 -2
  168. package/packages/core/pvm-interpreter-ananas/index.d.ts +6 -3
  169. package/packages/core/pvm-interpreter-ananas/index.d.ts.map +1 -1
  170. package/packages/core/pvm-interpreter-ananas/index.js +12 -3
  171. package/packages/core/trie/nodes.d.ts +7 -2
  172. package/packages/core/trie/nodes.d.ts.map +1 -1
  173. package/packages/core/trie/nodes.js +20 -11
  174. package/packages/core/trie/nodesDb.d.ts +3 -1
  175. package/packages/core/trie/nodesDb.d.ts.map +1 -1
  176. package/packages/core/trie/nodesDb.js +6 -0
  177. package/packages/core/trie/trie.js +2 -2
  178. package/packages/extensions/ipc/index.js +5 -2
  179. package/packages/extensions/ipc/jamnp/handler.d.ts +4 -2
  180. package/packages/extensions/ipc/jamnp/handler.d.ts.map +1 -1
  181. package/packages/extensions/ipc/jamnp/handler.js +9 -3
  182. package/packages/extensions/ipc/jamnp/server.js +3 -3
  183. package/packages/extensions/ipc/server.d.ts +2 -1
  184. package/packages/extensions/ipc/server.d.ts.map +1 -1
  185. package/packages/extensions/ipc/server.js +4 -1
  186. package/packages/jam/block/header.js +1 -1
  187. package/packages/jam/config/chain-spec.d.ts +2 -1
  188. package/packages/jam/config/chain-spec.d.ts.map +1 -1
  189. package/packages/jam/config/chain-spec.js +5 -2
  190. package/packages/jam/config/network.d.ts +2 -7
  191. package/packages/jam/config/network.d.ts.map +1 -1
  192. package/packages/jam/config/network.js +3 -0
  193. package/packages/jam/config-node/jip-chain-spec.js +1 -1
  194. package/packages/jam/database/blocks.test.js +1 -1
  195. package/packages/jam/database/states.d.ts +2 -1
  196. package/packages/jam/database/states.d.ts.map +1 -1
  197. package/packages/jam/database/states.js +3 -0
  198. package/packages/jam/database/states.test.js +1 -1
  199. package/packages/jam/database-lmdb/blocks.d.ts +2 -1
  200. package/packages/jam/database-lmdb/blocks.d.ts.map +1 -1
  201. package/packages/jam/database-lmdb/blocks.js +3 -0
  202. package/packages/jam/database-lmdb/root.d.ts +2 -1
  203. package/packages/jam/database-lmdb/root.d.ts.map +1 -1
  204. package/packages/jam/database-lmdb/root.js +3 -0
  205. package/packages/jam/database-lmdb/states.d.ts +2 -1
  206. package/packages/jam/database-lmdb/states.d.ts.map +1 -1
  207. package/packages/jam/database-lmdb/states.js +3 -0
  208. package/packages/jam/database-lmdb/states.test.js +9 -9
  209. package/packages/jam/executor/pvm-executor.js +24 -24
  210. package/packages/jam/fuzz-proto/v1/handler.d.ts +2 -1
  211. package/packages/jam/fuzz-proto/v1/handler.d.ts.map +1 -1
  212. package/packages/jam/fuzz-proto/v1/handler.js +3 -0
  213. package/packages/jam/fuzz-proto/v1/handler.test.js +10 -10
  214. package/packages/jam/in-core/externalities/refine.js +1 -1
  215. package/packages/jam/in-core/externalities/refine.test.js +3 -3
  216. package/packages/jam/in-core/in-core.d.ts +2 -1
  217. package/packages/jam/in-core/in-core.d.ts.map +1 -1
  218. package/packages/jam/in-core/in-core.js +3 -0
  219. package/packages/jam/in-core/in-core.test.js +6 -6
  220. package/packages/jam/in-core/is-authorized.test.js +2 -2
  221. package/packages/jam/in-core/refine.js +1 -1
  222. package/packages/jam/jam-host-calls/accumulate/assign.d.ts +2 -1
  223. package/packages/jam/jam-host-calls/accumulate/assign.d.ts.map +1 -1
  224. package/packages/jam/jam-host-calls/accumulate/assign.js +3 -0
  225. package/packages/jam/jam-host-calls/accumulate/assign.test.js +8 -9
  226. package/packages/jam/jam-host-calls/accumulate/bless.d.ts +2 -1
  227. package/packages/jam/jam-host-calls/accumulate/bless.d.ts.map +1 -1
  228. package/packages/jam/jam-host-calls/accumulate/bless.js +3 -0
  229. package/packages/jam/jam-host-calls/accumulate/bless.test.js +11 -12
  230. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts +2 -1
  231. package/packages/jam/jam-host-calls/accumulate/checkpoint.d.ts.map +1 -1
  232. package/packages/jam/jam-host-calls/accumulate/checkpoint.js +4 -1
  233. package/packages/jam/jam-host-calls/accumulate/checkpoint.test.js +2 -3
  234. package/packages/jam/jam-host-calls/accumulate/designate.d.ts +2 -1
  235. package/packages/jam/jam-host-calls/accumulate/designate.d.ts.map +1 -1
  236. package/packages/jam/jam-host-calls/accumulate/designate.js +3 -0
  237. package/packages/jam/jam-host-calls/accumulate/designate.test.js +5 -6
  238. package/packages/jam/jam-host-calls/accumulate/eject.d.ts +2 -1
  239. package/packages/jam/jam-host-calls/accumulate/eject.d.ts.map +1 -1
  240. package/packages/jam/jam-host-calls/accumulate/eject.js +3 -0
  241. package/packages/jam/jam-host-calls/accumulate/eject.test.js +8 -9
  242. package/packages/jam/jam-host-calls/accumulate/forget.d.ts +2 -1
  243. package/packages/jam/jam-host-calls/accumulate/forget.d.ts.map +1 -1
  244. package/packages/jam/jam-host-calls/accumulate/forget.js +3 -0
  245. package/packages/jam/jam-host-calls/accumulate/forget.test.js +5 -6
  246. package/packages/jam/jam-host-calls/accumulate/new.d.ts +2 -1
  247. package/packages/jam/jam-host-calls/accumulate/new.d.ts.map +1 -1
  248. package/packages/jam/jam-host-calls/accumulate/new.js +3 -0
  249. package/packages/jam/jam-host-calls/accumulate/new.test.js +9 -10
  250. package/packages/jam/jam-host-calls/accumulate/provide.d.ts +2 -1
  251. package/packages/jam/jam-host-calls/accumulate/provide.d.ts.map +1 -1
  252. package/packages/jam/jam-host-calls/accumulate/provide.js +3 -0
  253. package/packages/jam/jam-host-calls/accumulate/provide.test.js +8 -9
  254. package/packages/jam/jam-host-calls/accumulate/query.d.ts +2 -1
  255. package/packages/jam/jam-host-calls/accumulate/query.d.ts.map +1 -1
  256. package/packages/jam/jam-host-calls/accumulate/query.js +3 -0
  257. package/packages/jam/jam-host-calls/accumulate/query.test.js +8 -9
  258. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts +2 -1
  259. package/packages/jam/jam-host-calls/accumulate/solicit.d.ts.map +1 -1
  260. package/packages/jam/jam-host-calls/accumulate/solicit.js +3 -0
  261. package/packages/jam/jam-host-calls/accumulate/solicit.test.js +7 -8
  262. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts +2 -1
  263. package/packages/jam/jam-host-calls/accumulate/transfer.d.ts.map +1 -1
  264. package/packages/jam/jam-host-calls/accumulate/transfer.js +3 -0
  265. package/packages/jam/jam-host-calls/accumulate/transfer.test.js +9 -10
  266. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts +2 -1
  267. package/packages/jam/jam-host-calls/accumulate/upgrade.d.ts.map +1 -1
  268. package/packages/jam/jam-host-calls/accumulate/upgrade.js +3 -0
  269. package/packages/jam/jam-host-calls/accumulate/upgrade.test.js +4 -5
  270. package/packages/jam/jam-host-calls/accumulate/yield.d.ts +2 -1
  271. package/packages/jam/jam-host-calls/accumulate/yield.d.ts.map +1 -1
  272. package/packages/jam/jam-host-calls/accumulate/yield.js +3 -0
  273. package/packages/jam/jam-host-calls/accumulate/yield.test.js +4 -5
  274. package/packages/jam/jam-host-calls/externalities/refine-externalities.test.js +9 -9
  275. package/packages/jam/jam-host-calls/externalities/state-update.d.ts +2 -3
  276. package/packages/jam/jam-host-calls/externalities/state-update.d.ts.map +1 -1
  277. package/packages/jam/jam-host-calls/externalities/state-update.js +5 -2
  278. package/packages/jam/jam-host-calls/externalities/test-accounts.js +2 -2
  279. package/packages/jam/jam-host-calls/general/fetch.d.ts +2 -1
  280. package/packages/jam/jam-host-calls/general/fetch.d.ts.map +1 -1
  281. package/packages/jam/jam-host-calls/general/fetch.js +3 -0
  282. package/packages/jam/jam-host-calls/general/fetch.test.js +27 -28
  283. package/packages/jam/jam-host-calls/general/gas.d.ts +2 -1
  284. package/packages/jam/jam-host-calls/general/gas.d.ts.map +1 -1
  285. package/packages/jam/jam-host-calls/general/gas.js +3 -0
  286. package/packages/jam/jam-host-calls/general/gas.test.js +4 -5
  287. package/packages/jam/jam-host-calls/general/info.d.ts +2 -1
  288. package/packages/jam/jam-host-calls/general/info.d.ts.map +1 -1
  289. package/packages/jam/jam-host-calls/general/info.js +3 -0
  290. package/packages/jam/jam-host-calls/general/info.test.js +6 -7
  291. package/packages/jam/jam-host-calls/general/log.d.ts +2 -1
  292. package/packages/jam/jam-host-calls/general/log.d.ts.map +1 -1
  293. package/packages/jam/jam-host-calls/general/log.js +3 -0
  294. package/packages/jam/jam-host-calls/general/lookup.d.ts +2 -1
  295. package/packages/jam/jam-host-calls/general/lookup.d.ts.map +1 -1
  296. package/packages/jam/jam-host-calls/general/lookup.js +3 -0
  297. package/packages/jam/jam-host-calls/general/lookup.test.js +8 -9
  298. package/packages/jam/jam-host-calls/general/read.d.ts +2 -1
  299. package/packages/jam/jam-host-calls/general/read.d.ts.map +1 -1
  300. package/packages/jam/jam-host-calls/general/read.js +3 -0
  301. package/packages/jam/jam-host-calls/general/read.test.js +11 -12
  302. package/packages/jam/jam-host-calls/general/write.d.ts +2 -1
  303. package/packages/jam/jam-host-calls/general/write.d.ts.map +1 -1
  304. package/packages/jam/jam-host-calls/general/write.js +3 -0
  305. package/packages/jam/jam-host-calls/general/write.test.js +10 -11
  306. package/packages/jam/jam-host-calls/refine/export.d.ts +2 -1
  307. package/packages/jam/jam-host-calls/refine/export.d.ts.map +1 -1
  308. package/packages/jam/jam-host-calls/refine/export.js +3 -0
  309. package/packages/jam/jam-host-calls/refine/export.test.js +6 -7
  310. package/packages/jam/jam-host-calls/refine/expunge.d.ts +2 -1
  311. package/packages/jam/jam-host-calls/refine/expunge.d.ts.map +1 -1
  312. package/packages/jam/jam-host-calls/refine/expunge.js +3 -0
  313. package/packages/jam/jam-host-calls/refine/expunge.test.js +3 -4
  314. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts +2 -1
  315. package/packages/jam/jam-host-calls/refine/historical-lookup.d.ts.map +1 -1
  316. package/packages/jam/jam-host-calls/refine/historical-lookup.js +3 -0
  317. package/packages/jam/jam-host-calls/refine/historical-lookup.test.js +11 -12
  318. package/packages/jam/jam-host-calls/refine/invoke.d.ts +2 -1
  319. package/packages/jam/jam-host-calls/refine/invoke.d.ts.map +1 -1
  320. package/packages/jam/jam-host-calls/refine/invoke.js +4 -1
  321. package/packages/jam/jam-host-calls/refine/invoke.test.js +10 -11
  322. package/packages/jam/jam-host-calls/refine/machine.d.ts +2 -1
  323. package/packages/jam/jam-host-calls/refine/machine.d.ts.map +1 -1
  324. package/packages/jam/jam-host-calls/refine/machine.js +3 -0
  325. package/packages/jam/jam-host-calls/refine/machine.test.js +6 -7
  326. package/packages/jam/jam-host-calls/refine/pages.d.ts +2 -1
  327. package/packages/jam/jam-host-calls/refine/pages.d.ts.map +1 -1
  328. package/packages/jam/jam-host-calls/refine/pages.js +3 -0
  329. package/packages/jam/jam-host-calls/refine/pages.test.js +3 -4
  330. package/packages/jam/jam-host-calls/refine/peek.d.ts +2 -1
  331. package/packages/jam/jam-host-calls/refine/peek.d.ts.map +1 -1
  332. package/packages/jam/jam-host-calls/refine/peek.js +3 -0
  333. package/packages/jam/jam-host-calls/refine/peek.test.js +3 -4
  334. package/packages/jam/jam-host-calls/refine/poke.d.ts +2 -1
  335. package/packages/jam/jam-host-calls/refine/poke.d.ts.map +1 -1
  336. package/packages/jam/jam-host-calls/refine/poke.js +3 -0
  337. package/packages/jam/jam-host-calls/refine/poke.test.js +3 -4
  338. package/packages/jam/jamnp-s/network.js +1 -1
  339. package/packages/jam/jamnp-s/peers.d.ts +2 -1
  340. package/packages/jam/jamnp-s/peers.d.ts.map +1 -1
  341. package/packages/jam/jamnp-s/peers.js +3 -0
  342. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts +4 -2
  343. package/packages/jam/jamnp-s/protocol/ce-128-block-request.d.ts.map +1 -1
  344. package/packages/jam/jamnp-s/protocol/ce-128-block-request.js +6 -0
  345. package/packages/jam/jamnp-s/protocol/ce-128-block-request.test.js +2 -2
  346. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts +4 -2
  347. package/packages/jam/jamnp-s/protocol/ce-129-state-request.d.ts.map +1 -1
  348. package/packages/jam/jamnp-s/protocol/ce-129-state-request.js +6 -0
  349. package/packages/jam/jamnp-s/protocol/ce-129-state-request.test.js +4 -4
  350. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts +4 -2
  351. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.d.ts.map +1 -1
  352. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.js +6 -0
  353. package/packages/jam/jamnp-s/protocol/ce-131-ce-132-safrole-ticket-distribution.test.js +2 -2
  354. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts +4 -1
  355. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.d.ts.map +1 -1
  356. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.js +7 -0
  357. package/packages/jam/jamnp-s/protocol/ce-133-work-package-submission.test.js +2 -2
  358. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts +5 -2
  359. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.d.ts.map +1 -1
  360. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.js +7 -0
  361. package/packages/jam/jamnp-s/protocol/ce-134-work-package-sharing.test.js +2 -2
  362. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts +4 -2
  363. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.d.ts.map +1 -1
  364. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.js +6 -0
  365. package/packages/jam/jamnp-s/protocol/ce-135-work-report-distribution.test.js +2 -2
  366. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts +2 -1
  367. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.d.ts.map +1 -1
  368. package/packages/jam/jamnp-s/protocol/up-0-block-announcement.js +3 -0
  369. package/packages/jam/jamnp-s/stream-manager.d.ts +2 -1
  370. package/packages/jam/jamnp-s/stream-manager.d.ts.map +1 -1
  371. package/packages/jam/jamnp-s/stream-manager.js +4 -1
  372. package/packages/jam/jamnp-s/tasks/sync.js +4 -4
  373. package/packages/jam/jamnp-s/tasks/sync.test.js +4 -4
  374. package/packages/jam/jamnp-s/tasks/ticket-distribution.js +2 -2
  375. package/packages/jam/jamnp-s/tasks/ticket-distribution.test.js +1 -1
  376. package/packages/jam/node/common.d.ts.map +1 -1
  377. package/packages/jam/node/common.js +3 -3
  378. package/packages/jam/rpc-client/index.d.ts +4 -2
  379. package/packages/jam/rpc-client/index.d.ts.map +1 -1
  380. package/packages/jam/rpc-client/index.js +7 -1
  381. package/packages/jam/state/in-memory-state-view.d.ts +2 -1
  382. package/packages/jam/state/in-memory-state-view.d.ts.map +1 -1
  383. package/packages/jam/state/in-memory-state-view.js +3 -0
  384. package/packages/jam/state/in-memory-state.d.ts +16 -21
  385. package/packages/jam/state/in-memory-state.d.ts.map +1 -1
  386. package/packages/jam/state/in-memory-state.js +10 -6
  387. package/packages/jam/state/in-memory-state.test.js +2 -2
  388. package/packages/jam/state/service.d.ts +2 -6
  389. package/packages/jam/state/service.d.ts.map +1 -1
  390. package/packages/jam/state/service.js +3 -0
  391. package/packages/jam/state/test.utils.js +3 -3
  392. package/packages/jam/state-json/accounts.js +5 -5
  393. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts +3 -34
  394. package/packages/jam/state-merkleization/in-memory-state-codec.d.ts.map +1 -1
  395. package/packages/jam/state-merkleization/in-memory-state-codec.js +1 -1
  396. package/packages/jam/state-merkleization/serialized-state-view.d.ts +8 -3
  397. package/packages/jam/state-merkleization/serialized-state-view.d.ts.map +1 -1
  398. package/packages/jam/state-merkleization/serialized-state-view.js +6 -3
  399. package/packages/jam/state-merkleization/serialized-state.d.ts +2 -3
  400. package/packages/jam/state-merkleization/serialized-state.d.ts.map +1 -1
  401. package/packages/jam/state-merkleization/serialized-state.js +10 -2
  402. package/packages/jam/state-merkleization/serialized-state.test.js +1 -1
  403. package/packages/jam/transition/accumulate/accumulate.js +10 -3
  404. package/packages/jam/transition/accumulate/accumulate.test.js +1 -1
  405. package/packages/jam/transition/block-verifier.d.ts +2 -1
  406. package/packages/jam/transition/block-verifier.d.ts.map +1 -1
  407. package/packages/jam/transition/block-verifier.js +3 -0
  408. package/packages/jam/transition/block-verifier.test.js +8 -8
  409. package/packages/jam/transition/chain-stf.d.ts +12 -4
  410. package/packages/jam/transition/chain-stf.d.ts.map +1 -1
  411. package/packages/jam/transition/chain-stf.js +7 -3
  412. package/packages/jam/transition/externalities/accumulate-externalities.d.ts +20 -6
  413. package/packages/jam/transition/externalities/accumulate-externalities.d.ts.map +1 -1
  414. package/packages/jam/transition/externalities/accumulate-externalities.js +29 -22
  415. package/packages/jam/transition/externalities/accumulate-externalities.test.js +590 -100
  416. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts +2 -1
  417. package/packages/jam/transition/externalities/refine-fetch-externalities.d.ts.map +1 -1
  418. package/packages/jam/transition/externalities/refine-fetch-externalities.js +3 -0
  419. package/packages/jam/transition/externalities/refine-fetch-externalities.test.js +1 -1
  420. package/packages/jam/transition/hasher.d.ts +2 -1
  421. package/packages/jam/transition/hasher.d.ts.map +1 -1
  422. package/packages/jam/transition/hasher.js +5 -2
  423. package/packages/jam/transition/hasher.test.js +1 -1
  424. package/packages/jam/transition/preimages.test.js +4 -4
  425. package/packages/jam/transition/reports/test.utils.js +1 -1
  426. package/packages/workers/api-node/config.js +4 -4
  427. package/packages/workers/api-node/port.d.ts +2 -1
  428. package/packages/workers/api-node/port.d.ts.map +1 -1
  429. package/packages/workers/api-node/port.js +4 -1
  430. package/packages/workers/api-node/port.test.js +2 -2
  431. package/packages/workers/api-node/protocol.js +2 -2
  432. package/packages/workers/block-authorship/generator.d.ts +13 -2
  433. package/packages/workers/block-authorship/generator.d.ts.map +1 -1
  434. package/packages/workers/block-authorship/generator.js +13 -9
  435. package/packages/workers/block-authorship/generator.test.js +16 -2
  436. package/packages/workers/block-authorship/main.d.ts.map +1 -1
  437. package/packages/workers/block-authorship/main.js +8 -1
  438. package/packages/workers/importer/finality.test.js +1 -1
  439. package/packages/workers/importer/importer.d.ts +23 -6
  440. package/packages/workers/importer/importer.d.ts.map +1 -1
  441. package/packages/workers/importer/importer.js +34 -19
  442. package/packages/workers/importer/main.d.ts.map +1 -1
  443. package/packages/workers/importer/main.js +13 -5
package/README.md CHANGED
@@ -243,7 +243,7 @@ const programHex = "0x0000213308013309012803009577ff51070c648ac8980864a928f36487
243
243
  const program = BytesBlob.parseBlob(programHex);
244
244
 
245
245
  // Create interpreter and initialize with program
246
- const pvm = new Interpreter();
246
+ const pvm = Interpreter.new();
247
247
  pvm.resetGeneric(program.raw, 0, tryAsGas(1000));
248
248
 
249
249
  // dump the program data
@@ -269,7 +269,7 @@ import { BytesBlob } from "@typeberry/lib/bytes";
269
269
  const programHex = "0x0000210408010409010503000277ff07070c528a08980852a905f3528704080409111300499352d500";
270
270
  const program = BytesBlob.parseBlob(programHex);
271
271
 
272
- const pvm = new Interpreter();
272
+ const pvm = Interpreter.new();
273
273
  pvm.resetGeneric(program.raw, 0, tryAsGas(1000));
274
274
  pvm.runProgram();
275
275
 
@@ -11,7 +11,7 @@ describe("PVM Examples", () => {
11
11
  const programHex = "0x0000213308013309012803009577ff51070c648ac8980864a928f3648733083309013200499352d500";
12
12
  const program = BytesBlob.parseBlob(programHex);
13
13
  // Create interpreter and initialize with program
14
- const pvm = new Interpreter();
14
+ const pvm = Interpreter.new();
15
15
  pvm.resetGeneric(program.raw, 0, tryAsGas(1000));
16
16
  // dump the program data
17
17
  console.table(pvm.dumpProgram());
@@ -29,7 +29,7 @@ describe("PVM Examples", () => {
29
29
  const { BytesBlob } = await import("@typeberry/lib/bytes");
30
30
  const programHex = "0x0000210408010409010503000277ff07070c528a08980852a905f3528704080409111300499352d500";
31
31
  const program = BytesBlob.parseBlob(programHex);
32
- const pvm = new Interpreter();
32
+ const pvm = Interpreter.new();
33
33
  pvm.resetGeneric(program.raw, 0, tryAsGas(1000));
34
34
  pvm.runProgram();
35
35
  // Access register values after execution
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@typeberry/lib",
3
- "version": "0.5.10-7338c21",
3
+ "version": "0.5.10-9ffd7ac",
4
4
  "description": "Typeberry Library",
5
5
  "main": "./bin/lib/index.js",
6
6
  "types": "./bin/lib/index.d.ts",
@@ -54,7 +54,7 @@ export class Descriptor {
54
54
  */
55
55
  skipEncoded(decoder) {
56
56
  const initBytes = decoder.bytesRead();
57
- this.skip(new Skipper(decoder));
57
+ this.skip(Skipper.new(decoder));
58
58
  const endBytes = decoder.bytesRead();
59
59
  return BytesBlob.blobFrom(decoder.source.subarray(initBytes, endBytes));
60
60
  }
@@ -311,6 +311,9 @@ function hasUniqueView(a) {
311
311
  function objectView(Class, descriptors, sizeHint, skipper) {
312
312
  // Create a View, based on the `AbstractView`.
313
313
  class ClassView extends ObjectView {
314
+ static new(d) {
315
+ return new ClassView(d);
316
+ }
314
317
  constructor(d) {
315
318
  super(d, Class, descriptors);
316
319
  }
@@ -330,8 +333,8 @@ function objectView(Class, descriptors, sizeHint, skipper) {
330
333
  const encoded = t.encoded();
331
334
  e.bytes(Bytes.fromBlob(encoded.raw, encoded.length));
332
335
  }, (d) => {
333
- const view = new ClassView(d.clone());
334
- skipper(new Skipper(d));
336
+ const view = ClassView.new(d.clone());
337
+ skipper(Skipper.new(d));
335
338
  return view;
336
339
  }, skipper);
337
340
  }
@@ -351,7 +354,7 @@ function sequenceViewVarLen(type, options) {
351
354
  e.bytes(Bytes.fromBlob(encoded.raw, encoded.length));
352
355
  }, (d) => {
353
356
  const view = new SequenceView(d.clone(), type);
354
- skipper(new Skipper(d));
357
+ skipper(Skipper.new(d));
355
358
  return view;
356
359
  }, skipper);
357
360
  }
@@ -366,7 +369,7 @@ function sequenceViewFixLen(type, { fixedLength }) {
366
369
  e.bytes(Bytes.fromBlob(encoded.raw, encoded.length));
367
370
  }, (d) => {
368
371
  const view = new SequenceView(d.clone(), type, fixedLength);
369
- skipper(new Skipper(d));
372
+ skipper(Skipper.new(d));
370
373
  return view;
371
374
  }, skipper);
372
375
  }
@@ -67,7 +67,7 @@ describe("JAM encoder / decoder", () => {
67
67
  const encoded = encoder.viewResult();
68
68
  const decoder = Decoder.fromBytesBlob(encoded);
69
69
  // skipping
70
- const skip = new Skipper(decoder.clone());
70
+ const skip = Skipper.new(decoder.clone());
71
71
  g.descriptor.skip(skip);
72
72
  skip.decoder.finish();
73
73
  // decoding
@@ -7,7 +7,8 @@ export type Skip = {
7
7
  /** Wrapper for `Decoder` that can skip bytes of fields in the data buffer instead of decoding them. */
8
8
  export declare class Skipper {
9
9
  readonly decoder: Decoder;
10
- constructor(decoder: Decoder);
10
+ static new(decoder: Decoder): Skipper;
11
+ private constructor();
11
12
  /** Skip U64/I64. */
12
13
  u64: () => void;
13
14
  /** Skip U32/I32. */
@@ -1 +1 @@
1
- {"version":3,"file":"skip.d.ts","sourceRoot":"","sources":["../../../../../packages/core/codec/skip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAkC,MAAM,cAAc,CAAC;AAE5E,yDAAyD;AACzD,MAAM,MAAM,IAAI,GAAG;IACjB,4CAA4C;IAC5C,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5B,CAAC;AAEF,uGAAuG;AACvG,qBAAa,OAAO;aACU,OAAO,EAAE,OAAO;gBAAhB,OAAO,EAAE,OAAO;IAC5C,oBAAoB;IACpB,GAAG,aAA8B;IACjC,oBAAoB;IACpB,GAAG,aAA8B;IACjC,oBAAoB;IACpB,GAAG,aAA8B;IACjC,oBAAoB;IACpB,GAAG,aAA8B;IACjC,kBAAkB;IAClB,EAAE,aAA8B;IAChC,oBAAoB;IACpB,IAAI,aAA8B;IAClC,gCAAgC;IAChC,MAAM,aAAuB;IAC7B,gCAAgC;IAChC,MAAM;IAKN,+BAA+B;IAC/B,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC;IAG9B,uCAAuC;IACvC,SAAS;IAIT,oCAAoC;IACpC,YAAY,CAAC,SAAS,EAAE,MAAM;IAG9B,uCAAuC;IACvC,YAAY;IAIZ,+BAA+B;IAC/B,MAAM,CAAC,MAAM,EAAE,IAAI;IAGnB,yCAAyC;IACzC,QAAQ,CAAC,MAAM,EAAE,IAAI;IAMrB,kCAAkC;IAClC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM;IAKxC,qCAAqC;IACrC,cAAc,CAAC,MAAM,EAAE,IAAI;CAI5B"}
1
+ {"version":3,"file":"skip.d.ts","sourceRoot":"","sources":["../../../../../packages/core/codec/skip.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAkC,MAAM,cAAc,CAAC;AAE5E,yDAAyD;AACzD,MAAM,MAAM,IAAI,GAAG;IACjB,4CAA4C;IAC5C,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAC5B,CAAC;AAEF,uGAAuG;AACvG,qBAAa,OAAO;aAKkB,OAAO,EAAE,OAAO;IAJpD,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO;IAI3B,OAAO;IACP,oBAAoB;IACpB,GAAG,aAA8B;IACjC,oBAAoB;IACpB,GAAG,aAA8B;IACjC,oBAAoB;IACpB,GAAG,aAA8B;IACjC,oBAAoB;IACpB,GAAG,aAA8B;IACjC,kBAAkB;IAClB,EAAE,aAA8B;IAChC,oBAAoB;IACpB,IAAI,aAA8B;IAClC,gCAAgC;IAChC,MAAM,aAAuB;IAC7B,gCAAgC;IAChC,MAAM;IAKN,+BAA+B;IAC/B,KAAK,CAAC,CAAC,SAAS,MAAM,EAAE,GAAG,EAAE,CAAC;IAG9B,uCAAuC;IACvC,SAAS;IAIT,oCAAoC;IACpC,YAAY,CAAC,SAAS,EAAE,MAAM;IAG9B,uCAAuC;IACvC,YAAY;IAIZ,+BAA+B;IAC/B,MAAM,CAAC,MAAM,EAAE,IAAI;IAGnB,yCAAyC;IACzC,QAAQ,CAAC,MAAM,EAAE,IAAI;IAMrB,kCAAkC;IAClC,cAAc,CAAC,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM;IAKxC,qCAAqC;IACrC,cAAc,CAAC,MAAM,EAAE,IAAI;CAI5B"}
@@ -2,6 +2,9 @@ import { decodeVariableLengthExtraBytes } from "./decoder.js";
2
2
  /** Wrapper for `Decoder` that can skip bytes of fields in the data buffer instead of decoding them. */
3
3
  export class Skipper {
4
4
  decoder;
5
+ static new(decoder) {
6
+ return new Skipper(decoder);
7
+ }
5
8
  constructor(decoder) {
6
9
  this.decoder = decoder;
7
10
  }
@@ -107,7 +107,7 @@ export class ObjectView {
107
107
  is already decoded (${this.lastDecodedFieldIdx}, ${String(lastField)}).
108
108
  `;
109
109
  let lastItem = this.cache.get(lastField);
110
- const skipper = new Skipper(this.decoder);
110
+ const skipper = Skipper.new(this.decoder);
111
111
  // now skip all of the fields and further populate the cache.
112
112
  for (let i = this.lastDecodedFieldIdx + 1; i <= index; i++) {
113
113
  // create new cached prop
@@ -214,7 +214,7 @@ export class SequenceView {
214
214
  Unjustified call to 'decodeUpTo' - the index (${index}) is already decoded (${this.lastDecodedIdx}).
215
215
  `;
216
216
  let lastItem = this.cache.get(this.lastDecodedIdx);
217
- const skipper = new Skipper(this.decoder);
217
+ const skipper = Skipper.new(this.decoder);
218
218
  // now skip all of the fields and further populate the cache.
219
219
  for (let i = this.lastDecodedIdx + 1; i <= index; i++) {
220
220
  // create new cached prop
@@ -18,7 +18,8 @@ export declare class MultiMap<TKeys extends readonly unknown[], TValue> {
18
18
  * Pass the number of keys and optionally mappers from keys to primitive types
19
19
  * if needed.
20
20
  */
21
- constructor(keysLength: TKeys["length"], keyMappers?: KeyMappers<TKeys>);
21
+ static new<TKeys extends readonly unknown[], TValue>(keysLength: TKeys["length"], keyMappers?: KeyMappers<TKeys>): MultiMap<TKeys, TValue>;
22
+ private constructor();
22
23
  /** Convert input keys into primitive types. */
23
24
  private primitiveKeys;
24
25
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"multi-map.d.ts","sourceRoot":"","sources":["../../../../../packages/core/collections/multi-map.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EAAE,MAAM,IAAI,KAAK,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC,GACnG,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GACrC,MAAM,CAAC;AAEX,KAAK,UAAU,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,IAAI,KAAK,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC,GAC3F,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAC/C,EAAE,CAAC;AAEP,sDAAsD;AACtD,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzE;;;;;;;;GAQG;AACH,qBAAa,QAAQ,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EAAE,MAAM;IAC5D,SAAgB,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAE/C;;;OAGG;gBACS,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC;IAOvE,+CAA+C;IAC/C,OAAO,CAAC,aAAa;IAOrB;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,KAAK;IAsBnC;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,GAAG,OAAO;IAKjC,kDAAkD;IAClD,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,GAAG,OAAO;IAK9B,kEAAkE;IAClE,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS;IAKzC;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;CA0B1B"}
1
+ {"version":3,"file":"multi-map.d.ts","sourceRoot":"","sources":["../../../../../packages/core/collections/multi-map.ts"],"names":[],"mappings":"AAEA,KAAK,UAAU,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EAAE,MAAM,IAAI,KAAK,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC,GACnG,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,GACrC,MAAM,CAAC;AAEX,KAAK,UAAU,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,IAAI,KAAK,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,KAAK,CAAC,GAC3F,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,GAC/C,EAAE,CAAC;AAEP,sDAAsD;AACtD,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAEzE;;;;;;;;GAQG;AACH,qBAAa,QAAQ,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EAAE,MAAM;IAC5D,SAAgB,IAAI,EAAE,UAAU,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAE/C;;;OAGG;IACH,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,SAAS,OAAO,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC;IAIhH,OAAO;IAOP,+CAA+C;IAC/C,OAAO,CAAC,aAAa;IAOrB;;;;OAIG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,KAAK;IAsBnC;;;;;;OAMG;IACH,MAAM,CAAC,GAAG,MAAM,EAAE,KAAK,GAAG,OAAO;IAKjC,kDAAkD;IAClD,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,GAAG,OAAO;IAK9B,kEAAkE;IAClE,GAAG,CAAC,GAAG,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS;IAKzC;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;CA0B1B"}
@@ -15,6 +15,9 @@ export class MultiMap {
15
15
  * Pass the number of keys and optionally mappers from keys to primitive types
16
16
  * if needed.
17
17
  */
18
+ static new(keysLength, keyMappers) {
19
+ return new MultiMap(keysLength, keyMappers);
20
+ }
18
21
  constructor(keysLength, keyMappers) {
19
22
  check `${keysLength > 0} Keys cannot be empty.`;
20
23
  check `${keyMappers === undefined || keyMappers.length === keysLength} Incorrect number of key mappers given!`;
@@ -18,7 +18,7 @@ describe("Multi Map", () => {
18
18
  }
19
19
  }
20
20
  // given
21
- const map = new MultiMap(3, [null, (obj) => obj.val, null]);
21
+ const map = MultiMap.new(3, [null, (obj) => obj.val, null]);
22
22
  map
23
23
  .set("hello", "a", new MyObject(5), 10)
24
24
  .set("world", "b", new MyObject(10), 10)
@@ -37,7 +37,7 @@ describe("Multi Map", () => {
37
37
  });
38
38
  it("should check existence and remove elements", () => {
39
39
  // given
40
- const map = new MultiMap(2);
40
+ const map = MultiMap.new(2);
41
41
  map.set("hello", "a", 10).set("world", "b", 10).set("frens", "a", 11);
42
42
  // when
43
43
  const has_a = map.has("a", 10);
@@ -113,11 +113,14 @@ async function initWorker(workerPath) {
113
113
  });
114
114
  // make sure the threads don't prevent the program from stopping.
115
115
  workerThread.unref();
116
- return new WorkerChannel(workerThread, port2);
116
+ return WorkerChannel.new(workerThread, port2);
117
117
  }
118
118
  class WorkerChannel {
119
119
  worker;
120
120
  port;
121
+ static new(worker, port) {
122
+ return new WorkerChannel(worker, port);
123
+ }
121
124
  constructor(worker, port) {
122
125
  this.worker = worker;
123
126
  this.port = port;
@@ -31,11 +31,8 @@ export declare class Ed25519Pair {
31
31
  readonly pubKey: Ed25519Key;
32
32
  /** Private key. NOTE: Avoid using directly. */
33
33
  readonly _privKey: Bytes<ED25519_PRIV_KEY_BYTES>;
34
- constructor(
35
- /** Public key */
36
- pubKey: Ed25519Key,
37
- /** Private key. NOTE: Avoid using directly. */
38
- _privKey: Bytes<ED25519_PRIV_KEY_BYTES>);
34
+ static new(pubKey: Ed25519Key, _privKey: Bytes<ED25519_PRIV_KEY_BYTES>): Ed25519Pair;
35
+ private constructor();
39
36
  }
40
37
  /** Create a private key from given raw bytes. */
41
38
  export declare function privateKey(privKey: Bytes<ED25519_PRIV_KEY_BYTES>): Promise<Ed25519Pair>;
@@ -1 +1 @@
1
- {"version":3,"file":"ed25519.d.ts","sourceRoot":"","sources":["../../../../../packages/core/crypto/ed25519.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAS,KAAK,MAAM,EAAuB,MAAM,kBAAkB,CAAC;AAE3E,gCAAgC;AAChC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,KAAK,sBAAsB,GAAG,OAAO,sBAAsB,CAAC;AAE5D,+BAA+B;AAC/B,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC;AAEzD,8BAA8B;AAC9B,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAC;AAErE;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,YAAY,CAAC,CAAC;AAExE;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAE1F;;;;GAIG;AACH,qBAAa,WAAW;IAEpB,iBAAiB;aACD,MAAM,EAAE,UAAU;IAClC,+CAA+C;aAC/B,QAAQ,EAAE,KAAK,CAAC,sBAAsB,CAAC;;IAHvD,iBAAiB;IACD,MAAM,EAAE,UAAU;IAClC,+CAA+C;IAC/B,QAAQ,EAAE,KAAK,CAAC,sBAAsB,CAAC;CAE1D;AAED,iDAAiD;AACjD,wBAAsB,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAG7F;AAED,wDAAwD;AACxD,wBAAsB,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAGvG;AAED,oCAAoC;AACpC,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,IAAI;IACnD,iBAAiB;IACjB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,kBAAkB;IAClB,GAAG,EAAE,UAAU,CAAC;IAChB,yBAAyB;IACzB,OAAO,EAAE,CAAC,CAAC;CACZ,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CA2BvF;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAa1F"}
1
+ {"version":3,"file":"ed25519.d.ts","sourceRoot":"","sources":["../../../../../packages/core/crypto/ed25519.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAEpD,OAAO,EAAS,KAAK,MAAM,EAAuB,MAAM,kBAAkB,CAAC;AAE3E,gCAAgC;AAChC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,KAAK,sBAAsB,GAAG,OAAO,sBAAsB,CAAC;AAE5D,+BAA+B;AAC/B,eAAO,MAAM,iBAAiB,KAAK,CAAC;AACpC,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC;AAEzD,8BAA8B;AAC9B,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAC;AAErE;;;;GAIG;AACH,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAAE,YAAY,CAAC,CAAC;AAExE;;;;GAIG;AACH,MAAM,MAAM,gBAAgB,GAAG,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAE1F;;;;GAIG;AACH,qBAAa,WAAW;IAMpB,iBAAiB;aACD,MAAM,EAAE,UAAU;IAClC,+CAA+C;aAC/B,QAAQ,EAAE,KAAK,CAAC,sBAAsB,CAAC;IARzD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,sBAAsB,CAAC;IAItE,OAAO;CAMR;AAED,iDAAiD;AACjD,wBAAsB,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,sBAAsB,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAG7F;AAED,wDAAwD;AACxD,wBAAsB,IAAI,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAGvG;AAED,oCAAoC;AACpC,MAAM,MAAM,KAAK,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,IAAI;IACnD,iBAAiB;IACjB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,kBAAkB;IAClB,GAAG,EAAE,UAAU,CAAC;IAChB,yBAAyB;IACzB,OAAO,EAAE,CAAC,CAAC;CACZ,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,MAAM,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CA2BvF;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAa1F"}
@@ -16,6 +16,9 @@ export const ED25519_SIGNATURE_BYTES = 64;
16
16
  export class Ed25519Pair {
17
17
  pubKey;
18
18
  _privKey;
19
+ static new(pubKey, _privKey) {
20
+ return new Ed25519Pair(pubKey, _privKey);
21
+ }
19
22
  constructor(
20
23
  /** Public key */
21
24
  pubKey,
@@ -28,7 +31,7 @@ export class Ed25519Pair {
28
31
  /** Create a private key from given raw bytes. */
29
32
  export async function privateKey(privKey) {
30
33
  const pubKey = await ed.getPublicKeyAsync(privKey.raw);
31
- return new Ed25519Pair(Bytes.fromBlob(pubKey, ED25519_KEY_BYTES).asOpaque(), privKey.asOpaque());
34
+ return Ed25519Pair.new(Bytes.fromBlob(pubKey, ED25519_KEY_BYTES).asOpaque(), privKey.asOpaque());
32
35
  }
33
36
  /** Sign given piece of data using provided key pair. */
34
37
  export async function sign(key, message) {
@@ -29,13 +29,15 @@ export declare const ZERO_HASH: Bytes<32>;
29
29
  export declare class WithHash<THash extends OpaqueHash, TData> extends WithDebug {
30
30
  readonly hash: THash;
31
31
  readonly data: TData;
32
- constructor(hash: THash, data: TData);
32
+ static new<THash extends OpaqueHash, TData>(hash: THash, data: TData): WithHash<THash, TData>;
33
+ protected constructor(hash: THash, data: TData);
33
34
  }
34
35
  /**
35
36
  * Extension of [`WithHash`] additionally containing an encoded version of the object.
36
37
  */
37
38
  export declare class WithHashAndBytes<THash extends OpaqueHash, TData> extends WithHash<THash, TData> {
38
39
  readonly encoded: BytesBlob;
39
- constructor(hash: THash, data: TData, encoded: BytesBlob);
40
+ static create<THash extends OpaqueHash, TData>(hash: THash, data: TData, encoded: BytesBlob): WithHashAndBytes<THash, TData>;
41
+ protected constructor(hash: THash, data: TData, encoded: BytesBlob);
40
42
  }
41
43
  //# sourceMappingURL=hash.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../../../../packages/core/hash/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC;AAEzC,iEAAiE;AACjE,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC;AAE7D,4BAA4B;AAC5B,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AAE1C,sBAAsB;AACtB,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AAE3C,yBAAyB;AACzB,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AAE1C,sBAAsB;AACtB,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAEvD,eAAO,MAAM,SAAS,WAAwB,CAAC;AAE/C;;;;;GAKG;AACH,qBAAa,QAAQ,CAAC,KAAK,SAAS,UAAU,EAAE,KAAK,CAAE,SAAQ,SAAS;aAGpD,IAAI,EAAE,KAAK;aACX,IAAI,EAAE,KAAK;gBADX,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,KAAK;CAI9B;AAED;;GAEG;AACH,qBAAa,gBAAgB,CAAC,KAAK,SAAS,UAAU,EAAE,KAAK,CAAE,SAAQ,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;aAIzE,OAAO,EAAE,SAAS;gBAFlC,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,KAAK,EACK,OAAO,EAAE,SAAS;CAIrC"}
1
+ {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../../../../packages/core/hash/hash.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAE7C;;;;;GAKG;AACH,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC;AAEzC,iEAAiE;AACjE,eAAO,MAAM,mBAAmB,KAAK,CAAC;AACtC,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC;AAE7D,4BAA4B;AAC5B,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AAE1C,sBAAsB;AACtB,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AAE3C,yBAAyB;AACzB,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC;AAE1C,sBAAsB;AACtB,MAAM,MAAM,aAAa,GAAG,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAEvD,eAAO,MAAM,SAAS,WAAwB,CAAC;AAE/C;;;;;GAKG;AACH,qBAAa,QAAQ,CAAC,KAAK,SAAS,UAAU,EAAE,KAAK,CAAE,SAAQ,SAAS;aAMpD,IAAI,EAAE,KAAK;aACX,IAAI,EAAE,KAAK;IAN7B,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK;IAIpE,SAAS,aACS,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,KAAK;CAI9B;AAED;;GAEG;AACH,qBAAa,gBAAgB,CAAC,KAAK,SAAS,UAAU,EAAE,KAAK,CAAE,SAAQ,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;aAQzE,OAAO,EAAE,SAAS;IAPpC,MAAM,CAAC,MAAM,CAAC,KAAK,SAAS,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS;IAI3F,SAAS,aACP,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,KAAK,EACK,OAAO,EAAE,SAAS;CAIrC"}
@@ -19,7 +19,9 @@ export const ZERO_HASH = Bytes.zero(HASH_SIZE);
19
19
  export class WithHash extends WithDebug {
20
20
  hash;
21
21
  data;
22
- // TODO [ToDr] use static method and make constructor private
22
+ static new(hash, data) {
23
+ return new WithHash(hash, data);
24
+ }
23
25
  constructor(hash, data) {
24
26
  super();
25
27
  this.hash = hash;
@@ -31,6 +33,9 @@ export class WithHash extends WithDebug {
31
33
  */
32
34
  export class WithHashAndBytes extends WithHash {
33
35
  encoded;
36
+ static create(hash, data, encoded) {
37
+ return new WithHashAndBytes(hash, data, encoded);
38
+ }
34
39
  constructor(hash, data, encoded) {
35
40
  super(hash, data);
36
41
  this.encoded = encoded;
@@ -9,10 +9,11 @@ export declare class QuicNetwork implements Network<QuicPeer> {
9
9
  private readonly _peers;
10
10
  private readonly listen;
11
11
  private started;
12
- constructor(socket: QUICSocket, server: QUICServer, _dial: (peer: PeerAddress, options: DialOptions) => Promise<QuicPeer>, _peers: PeersManagement<QuicPeer>, listen: {
12
+ static new(socket: QUICSocket, server: QUICServer, _dial: (peer: PeerAddress, options: DialOptions) => Promise<QuicPeer>, _peers: PeersManagement<QuicPeer>, listen: {
13
13
  host: string;
14
14
  port: number;
15
- });
15
+ }): QuicNetwork;
16
+ private constructor();
16
17
  get isRunning(): boolean;
17
18
  start(): Promise<void>;
18
19
  stop(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"quic-network.d.ts","sourceRoot":"","sources":["../../../../../packages/core/networking/quic-network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,qBAAa,WAAY,YAAW,OAAO,CAAC,QAAQ,CAAC;IAIjD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,OAAO,CAAC,OAAO,CAAS;gBAGL,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,EACrE,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EACjC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAGzD,IAAI,SAAS,YAEZ;IAEK,KAAK;IAYL,IAAI;IAYV,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,CAE3B;IAEK,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;CAG5E"}
1
+ {"version":3,"file":"quic-network.d.ts","sourceRoot":"","sources":["../../../../../packages/core/networking/quic-network.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE7D,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAI/C,qBAAa,WAAY,YAAW,OAAO,CAAC,QAAQ,CAAC;IAcjD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAjBzB,OAAO,CAAC,OAAO,CAAS;IAExB,MAAM,CAAC,GAAG,CACR,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,EACrE,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EACjC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE;IAKxC,OAAO;IAQP,IAAI,SAAS,YAEZ;IAEK,KAAK;IAYL,IAAI;IAYV,IAAI,KAAK,IAAI,KAAK,CAAC,QAAQ,CAAC,CAE3B;IAEK,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,QAAQ,CAAC;CAG5E"}
@@ -7,6 +7,9 @@ export class QuicNetwork {
7
7
  _peers;
8
8
  listen;
9
9
  started = false;
10
+ static new(socket, server, _dial, _peers, listen) {
11
+ return new QuicNetwork(socket, server, _dial, _peers, listen);
12
+ }
10
13
  constructor(socket, server, _dial, _peers, listen) {
11
14
  this.socket = socket;
12
15
  this.server = server;
@@ -10,7 +10,8 @@ export declare class QuicPeer implements Peer {
10
10
  readonly id: PeerId;
11
11
  readonly key: Ed25519Key;
12
12
  private readonly streamEvents;
13
- constructor(conn: QUICConnection, peerInfo: PeerInfo);
13
+ static new(conn: QUICConnection, peerInfo: PeerInfo): QuicPeer;
14
+ private constructor();
14
15
  addOnIncomingStream(streamCallback: StreamCallback<QuicStream>): void;
15
16
  openStream(): QuicStream;
16
17
  disconnect(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"quic-peer.d.ts","sourceRoot":"","sources":["../../../../../packages/core/networking/quic-peer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAK9C,qBAAa,QAAS,YAAW,IAAI;aAQjB,IAAI,EAAE,cAAc;IAPtC,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,SAAgB,OAAO,EAAE,WAAW,CAAC;IACrC,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,GAAG,EAAE,UAAU,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;gBAGjC,IAAI,EAAE,cAAc,EACpC,QAAQ,EAAE,QAAQ;IAuBpB,mBAAmB,CAAC,cAAc,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI;IAIrE,UAAU,IAAI,UAAU;IAMlB,UAAU;CAIjB"}
1
+ {"version":3,"file":"quic-peer.d.ts","sourceRoot":"","sources":["../../../../../packages/core/networking/quic-peer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAU,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAK9C,qBAAa,QAAS,YAAW,IAAI;aAYjB,IAAI,EAAE,cAAc;IAXtC,SAAgB,YAAY,EAAE,MAAM,CAAC;IACrC,SAAgB,OAAO,EAAE,WAAW,CAAC;IACrC,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,SAAgB,GAAG,EAAE,UAAU,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;IAEnD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ;IAInD,OAAO;IAyBP,mBAAmB,CAAC,cAAc,EAAE,cAAc,CAAC,UAAU,CAAC,GAAG,IAAI;IAIrE,UAAU,IAAI,UAAU;IAMlB,UAAU;CAIjB"}
@@ -11,6 +11,9 @@ export class QuicPeer {
11
11
  id;
12
12
  key;
13
13
  streamEvents = new EventEmitter();
14
+ static new(conn, peerInfo) {
15
+ return new QuicPeer(conn, peerInfo);
16
+ }
14
17
  constructor(conn, peerInfo) {
15
18
  this.conn = conn;
16
19
  logger.log `👥 [${peerInfo.id}] peer connected ${conn.remoteHost}:${conn.remotePort}`;
@@ -24,7 +27,7 @@ export class QuicPeer {
24
27
  addEventListener(conn, events.EventQUICConnectionStream, (ev) => {
25
28
  const stream = ev.detail;
26
29
  logger.log `🚰 [${this.id}] new stream: [${stream.streamId}]`;
27
- this.streamEvents.emit("stream", new QuicStream(stream));
30
+ this.streamEvents.emit("stream", QuicStream.new(stream));
28
31
  });
29
32
  addEventListener(conn, events.EventQUICConnectionError, (err) => {
30
33
  logger.error `❌ [${this.id}] connection failed: ${err.detail}`;
@@ -36,7 +39,7 @@ export class QuicPeer {
36
39
  openStream() {
37
40
  const stream = this.conn.newStream("bidi");
38
41
  logger.log `🚰 [${this.id}] opening stream: [${stream.streamId}]`;
39
- return new QuicStream(stream);
42
+ return QuicStream.new(stream);
40
43
  }
41
44
  async disconnect() {
42
45
  logger.log `👋 [${this.id}] disconnecting`;
@@ -3,7 +3,8 @@ import { type Stream, type StreamErrorCallback } from "./peers.js";
3
3
  /** `QUICStream` adapter for our `Stream` API. */
4
4
  export declare class QuicStream implements Stream {
5
5
  readonly stream: QUICStream;
6
- constructor(stream: QUICStream);
6
+ static new(stream: QUICStream): QuicStream;
7
+ private constructor();
7
8
  get streamId(): import("@matrixai/quic").StreamId;
8
9
  get readable(): import("stream/web").ReadableStream<Uint8Array<ArrayBufferLike>>;
9
10
  get writable(): import("stream/web").WritableStream<Uint8Array<ArrayBufferLike>>;
@@ -1 +1 @@
1
- {"version":3,"file":"quic-stream.d.ts","sourceRoot":"","sources":["../../../../../packages/core/networking/quic-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,mBAAmB,EAAmB,MAAM,YAAY,CAAC;AAGpF,iDAAiD;AACjD,qBAAa,UAAW,YAAW,MAAM;aACX,MAAM,EAAE,UAAU;gBAAlB,MAAM,EAAE,UAAU;IAE9C,IAAI,QAAQ,sCAEX;IAED,IAAI,QAAQ,qEAEX;IAED,IAAI,QAAQ,qEAEX;IAED,UAAU,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAmB9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAGzB"}
1
+ {"version":3,"file":"quic-stream.d.ts","sourceRoot":"","sources":["../../../../../packages/core/networking/quic-stream.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,KAAK,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,mBAAmB,EAAmB,MAAM,YAAY,CAAC;AAGpF,iDAAiD;AACjD,qBAAa,UAAW,YAAW,MAAM;aAKH,MAAM,EAAE,UAAU;IAJtD,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU;IAI7B,OAAO;IAEP,IAAI,QAAQ,sCAEX;IAED,IAAI,QAAQ,qEAEX;IAED,IAAI,QAAQ,qEAEX;IAED,UAAU,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAmB9C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAGzB"}
@@ -4,6 +4,9 @@ import { addEventListener } from "./quic-utils.js";
4
4
  /** `QUICStream` adapter for our `Stream` API. */
5
5
  export class QuicStream {
6
6
  stream;
7
+ static new(stream) {
8
+ return new QuicStream(stream);
9
+ }
7
10
  constructor(stream) {
8
11
  this.stream = stream;
9
12
  }
@@ -144,7 +144,7 @@ export class Quic {
144
144
  }
145
145
  }
146
146
  function newPeer(conn, peerInfo, side) {
147
- const peer = new QuicPeer(conn, peerInfo);
147
+ const peer = QuicPeer.new(conn, peerInfo);
148
148
  const connectionStartTime = now();
149
149
  addEventListener(peer.conn, events.EventQUICConnectionClose, (ev) => {
150
150
  const duration = now() - connectionStartTime;
@@ -155,6 +155,6 @@ export class Quic {
155
155
  peers.peerConnected(peer);
156
156
  return peer;
157
157
  }
158
- return new QuicNetwork(socket, server, dial, peers, { host, port });
158
+ return QuicNetwork.new(socket, server, dial, peers, { host, port });
159
159
  }
160
160
  }
@@ -3,9 +3,9 @@ import { tryAsGas } from "#@typeberry/pvm-interface";
3
3
  import { HostCalls, NoopMissing } from "./host-calls.js";
4
4
  import { HostCallsExecutor } from "./host-calls-executor.js";
5
5
  import { PvmInstanceManager } from "./pvm-instance-manager.js";
6
- const hostCalls = new HostCalls({ missing: new NoopMissing(), handlers: [] });
6
+ const hostCalls = HostCalls.new({ missing: new NoopMissing(), handlers: [] });
7
7
  const pvmInstanceManager = await PvmInstanceManager.new(PvmBackend.BuiltIn);
8
- const pvmHostCallExtension = new HostCallsExecutor(pvmInstanceManager, hostCalls);
8
+ const pvmHostCallExtension = HostCallsExecutor.new(pvmInstanceManager, hostCalls);
9
9
  const program = new Uint8Array([
10
10
  0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x10, 0x1, 0x0, 0x0, 0xf9, 0x0, 0x0, 0x0, 0x0, 0x0, 0x80, 0xd9, 0x5, 0x12,
11
11
  0x0, 0x0, 0x0, 0x5, 0x11, 0x0, 0x0, 0x0, 0x5, 0xa3, 0x0, 0x0, 0x0, 0x5, 0xc6, 0x0, 0x4, 0x7, 0x13, 0x0, 0x2, 0x11,
@@ -12,7 +12,7 @@ function createRegisters(values) {
12
12
  for (const [idx, value] of values) {
13
13
  view.setBigUint64(idx * REGISTER_BYTE_SIZE, value, true);
14
14
  }
15
- return new HostCallRegisters(bytes);
15
+ return HostCallRegisters.fromRaw(bytes);
16
16
  }
17
17
  describe("IoTraceLogger", () => {
18
18
  describe("logProgram", () => {
@@ -5,7 +5,8 @@ import type { IoTracker } from "./ecalli-io-tracker.js";
5
5
  export declare class HostCallMemory {
6
6
  private readonly memory;
7
7
  ioTracker: IoTracker | null;
8
- constructor(memory: IMemory);
8
+ static new(memory: IMemory): HostCallMemory;
9
+ private constructor();
9
10
  /**
10
11
  * Save some bytes into memory under given address.
11
12
  *
@@ -1 +1 @@
1
- {"version":3,"file":"host-call-memory.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-host-calls/host-call-memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,qBAAa,cAAc;IAIb,OAAO,CAAC,QAAQ,CAAC,MAAM;IAF5B,SAAS,EAAE,SAAS,GAAG,IAAI,CAAQ;gBAEb,MAAM,EAAE,OAAO;IAE5C;;;;;OAKG;IACH,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;IAgBpE;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;CAerE"}
1
+ {"version":3,"file":"host-call-memory.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-host-calls/host-call-memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,qBAAa,cAAc;IAQL,OAAO,CAAC,QAAQ,CAAC,MAAM;IANpC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAQ;IAE1C,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO;IAI1B,OAAO;IAEP;;;;;OAKG;IACH,SAAS,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;IAgBpE;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,GAAG,MAAM,CAAC,EAAE,EAAE,SAAS,CAAC;CAerE"}
@@ -4,6 +4,9 @@ export class HostCallMemory {
4
4
  memory;
5
5
  // Track successful memory reads and writes.
6
6
  ioTracker = null;
7
+ static new(memory) {
8
+ return new HostCallMemory(memory);
9
+ }
7
10
  constructor(memory) {
8
11
  this.memory = memory;
9
12
  }
@@ -18,7 +18,7 @@ describe("HostCallMemory", () => {
18
18
  let hostCallMemory;
19
19
  beforeEach(() => {
20
20
  memory = new FakeMemory();
21
- hostCallMemory = new HostCallMemory(memory);
21
+ hostCallMemory = HostCallMemory.new(memory);
22
22
  });
23
23
  describe("storeFrom", () => {
24
24
  it("should always allow 0-length bytes", () => {
@@ -5,7 +5,11 @@ export declare class HostCallRegisters {
5
5
  private readonly raw;
6
6
  private readonly registers;
7
7
  ioTracker: IoTracker | null;
8
- constructor(bytes: Uint8Array);
8
+ /** Creates empty registers object. */
9
+ static empty(noOfRegisters?: number): HostCallRegisters;
10
+ /** Creates new `HostCallRegisters` by wrapping an already allocated byte array. */
11
+ static fromRaw(bytes: Uint8Array): HostCallRegisters;
12
+ private constructor();
9
13
  /** Get U64 register value. */
10
14
  get(registerIndex: number): U64;
11
15
  /** Set U64 register value. */
@@ -1 +1 @@
1
- {"version":3,"file":"host-call-registers.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-host-calls/host-call-registers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,qBAAa,iBAAiB;IAMhB,OAAO,CAAC,QAAQ,CAAC,KAAK;IALlC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IAE9B,SAAS,EAAE,SAAS,GAAG,IAAI,CAAQ;gBAEb,KAAK,EAAE,UAAU;IAK9C,8BAA8B;IAC9B,GAAG,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG;IAI/B,8BAA8B;IAC9B,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAOrC,0DAA0D;IAC1D,UAAU,IAAI,UAAU;IAIxB,sCAAsC;IACtC,UAAU,CAAC,KAAK,EAAE,UAAU;IAK5B,QAAQ;CAWT"}
1
+ {"version":3,"file":"host-call-registers.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-host-calls/host-call-registers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,qBAAa,iBAAiB;IAkBR,OAAO,CAAC,QAAQ,CAAC,KAAK;IAjB1C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAW;IAE9B,SAAS,EAAE,SAAS,GAAG,IAAI,CAAQ;IAE1C,sCAAsC;IACtC,MAAM,CAAC,KAAK,CAAC,aAAa,SAAkB;IAI5C,mFAAmF;IACnF,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU;IAMhC,OAAO;IAKP,8BAA8B;IAC9B,GAAG,CAAC,aAAa,EAAE,MAAM,GAAG,GAAG;IAI/B,8BAA8B;IAC9B,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAOrC,0DAA0D;IAC1D,UAAU,IAAI,UAAU;IAIxB,sCAAsC;IACtC,UAAU,CAAC,KAAK,EAAE,UAAU;IAK5B,QAAQ;CAWT"}
@@ -1,5 +1,5 @@
1
1
  import { tryAsU64 } from "#@typeberry/numbers";
2
- import { REGISTER_BYTE_SIZE } from "#@typeberry/pvm-interface";
2
+ import { NO_OF_REGISTERS, REGISTER_BYTE_SIZE } from "#@typeberry/pvm-interface";
3
3
  import { check } from "#@typeberry/utils";
4
4
  export class HostCallRegisters {
5
5
  bytes;
@@ -7,6 +7,16 @@ export class HostCallRegisters {
7
7
  registers;
8
8
  // Track register modifications.
9
9
  ioTracker = null;
10
+ /** Creates empty registers object. */
11
+ static empty(noOfRegisters = NO_OF_REGISTERS) {
12
+ return HostCallRegisters.fromRaw(new Uint8Array(noOfRegisters * REGISTER_BYTE_SIZE));
13
+ }
14
+ /** Creates new `HostCallRegisters` by wrapping an already allocated byte array. */
15
+ static fromRaw(bytes) {
16
+ check `${bytes.length % REGISTER_BYTE_SIZE === 0} registers array must be a multiply of ${REGISTER_BYTE_SIZE},
17
+ got: ${bytes.length}`;
18
+ return new HostCallRegisters(bytes);
19
+ }
10
20
  constructor(bytes) {
11
21
  this.bytes = bytes;
12
22
  this.raw = bytes;
@@ -7,14 +7,14 @@ describe("HostCallRegisters", () => {
7
7
  it("reads a u64 value from the underlying registers", () => {
8
8
  const regs = new BigUint64Array(13);
9
9
  regs[0] = 0xfffffffffffffffdn;
10
- const hostCallRegisters = new HostCallRegisters(new Uint8Array(regs.buffer));
10
+ const hostCallRegisters = HostCallRegisters.fromRaw(new Uint8Array(regs.buffer));
11
11
  assert.strictEqual(hostCallRegisters.get(0), tryAsU64(0xfffffffffffffffdn));
12
12
  });
13
13
  });
14
14
  describe("setAllEncoded", () => {
15
15
  it("writes a u64 value to the underlying registers", () => {
16
16
  const regs = new BigUint64Array(13);
17
- const hostCallRegisters = new HostCallRegisters(new Uint8Array(regs.buffer));
17
+ const hostCallRegisters = HostCallRegisters.fromRaw(new Uint8Array(regs.buffer));
18
18
  hostCallRegisters.set(0, tryAsU64(0xfffffffffffffffdn));
19
19
  const view = new DataView(hostCallRegisters.getEncoded().buffer);
20
20
  assert.strictEqual(view.getBigUint64(0, true), tryAsU64(0xfffffffffffffffdn));
@@ -29,7 +29,8 @@ export declare class HostCallsExecutor {
29
29
  private pvmInstanceManager;
30
30
  private hostCalls;
31
31
  private ioTracer;
32
- constructor(pvmInstanceManager: PvmInstanceManager, hostCalls: HostCalls, ioTracer?: EcalliTraceLogger | null);
32
+ static new(pvmInstanceManager: PvmInstanceManager, hostCalls: HostCalls, ioTracer?: EcalliTraceLogger | null): HostCallsExecutor;
33
+ private constructor();
33
34
  private getReturnValue;
34
35
  private execute;
35
36
  runProgram(program: Uint8Array, args: Uint8Array, initialPc: number, initialGas: Gas): Promise<ReturnValue>;
@@ -1 +1 @@
1
- {"version":3,"file":"host-calls-executor.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-host-calls/host-calls-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAgC,MAAM,0BAA0B,CAAC;AAElF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAI7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;;;;;GAMG;AACH,oBAAY,YAAY;IACtB,2BAA2B;IAC3B,EAAE,IAAI;IACN,iCAAiC;IACjC,GAAG,IAAI;IACP,qCAAqC;IACrC,KAAK,IAAI;CACV;AAED,MAAM,MAAM,WAAW,CAAC,IAAI,GAAG,GAAG,IAAI;IACpC,WAAW,EAAE,IAAI,CAAC;CACnB,GAAG,CACA;IACE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;IACxB,WAAW,EAAE,UAAU,CAAC;CACzB,GACD;IACE,MAAM,EAAE,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC;CAC/C,CACJ,CAAC;AAEF,qBAAa,iBAAiB;IAE1B,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;gBAFR,kBAAkB,EAAE,kBAAkB,EACtC,SAAS,EAAE,SAAS,EACpB,QAAQ,GAAE,iBAAiB,GAAG,IAAiC;IAGzE,OAAO,CAAC,cAAc;YAqCR,OAAO;IAkFf,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;CAWlH"}
1
+ {"version":3,"file":"host-calls-executor.d.ts","sourceRoot":"","sources":["../../../../../packages/core/pvm-host-calls/host-calls-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,GAAG,EAAgC,MAAM,0BAA0B,CAAC;AAElF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAI7D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;;;;;GAMG;AACH,oBAAY,YAAY;IACtB,2BAA2B;IAC3B,EAAE,IAAI;IACN,iCAAiC;IACjC,GAAG,IAAI;IACP,qCAAqC;IACrC,KAAK,IAAI;CACV;AAED,MAAM,MAAM,WAAW,CAAC,IAAI,GAAG,GAAG,IAAI;IACpC,WAAW,EAAE,IAAI,CAAC;CACnB,GAAG,CACA;IACE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC;IACxB,WAAW,EAAE,UAAU,CAAC;CACzB,GACD;IACE,MAAM,EAAE,YAAY,CAAC,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC;CAC/C,CACJ,CAAC;AAEF,qBAAa,iBAAiB;IAU1B,OAAO,CAAC,kBAAkB;IAC1B,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,QAAQ;IAXlB,MAAM,CAAC,GAAG,CACR,kBAAkB,EAAE,kBAAkB,EACtC,SAAS,EAAE,SAAS,EACpB,QAAQ,GAAE,iBAAiB,GAAG,IAAiC;IAKjE,OAAO;IAMP,OAAO,CAAC,cAAc;YAqCR,OAAO;IAkFf,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;CAWlH"}
@@ -24,6 +24,9 @@ export class HostCallsExecutor {
24
24
  pvmInstanceManager;
25
25
  hostCalls;
26
26
  ioTracer;
27
+ static new(pvmInstanceManager, hostCalls, ioTracer = EcalliTraceLogger.create()) {
28
+ return new HostCallsExecutor(pvmInstanceManager, hostCalls, ioTracer);
29
+ }
27
30
  constructor(pvmInstanceManager, hostCalls, ioTracer = EcalliTraceLogger.create()) {
28
31
  this.pvmInstanceManager = pvmInstanceManager;
29
32
  this.hostCalls = hostCalls;
@@ -54,9 +57,9 @@ export class HostCallsExecutor {
54
57
  }
55
58
  async execute(pvmInstance, initialPc) {
56
59
  const ioTracker = this.ioTracer?.tracker() ?? null;
57
- const registers = new HostCallRegisters(pvmInstance.registers.getAllEncoded());
60
+ const registers = HostCallRegisters.fromRaw(pvmInstance.registers.getAllEncoded());
58
61
  registers.ioTracker = ioTracker;
59
- const memory = new HostCallMemory(pvmInstance.memory);
62
+ const memory = HostCallMemory.new(pvmInstance.memory);
60
63
  memory.ioTracker = ioTracker;
61
64
  const gas = pvmInstance.gas;
62
65
  // log start of execution (note the PVM initialisation should be logged already)