@typeberry/jam 0.1.1-b537c8b → 0.1.1-e48de40

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env node
1
2
  import './sourcemap-register.cjs';import { createRequire as __WEBPACK_EXTERNAL_createRequire } from "module";
2
3
  import * as __WEBPACK_EXTERNAL_MODULE_lmdb__ from "lmdb";
3
4
  /******/ var __webpack_modules__ = ({
@@ -28434,6 +28435,34 @@ class WithDebug {
28434
28435
  }
28435
28436
  }
28436
28437
 
28438
+ ;// CONCATENATED MODULE: ./packages/core/utils/dev.ts
28439
+ const dev_env = typeof process === "undefined" ? {} : process.env;
28440
+ /**
28441
+ * The function will produce relative path resolver that is adjusted
28442
+ * for package location within the workspace.
28443
+ *
28444
+ * Example:
28445
+ * $ npm start -w @typeberry/jam
28446
+ *
28447
+ * The above command will run `./bin/jam/index.js`, however we would
28448
+ * still want relative paths to be resolved according to top-level workspace
28449
+ * directory.
28450
+ *
28451
+ * So the caller, passes the absolute workspace path as argument and get's
28452
+ * a function that can properly resolve relative paths.
28453
+ *
28454
+ * NOTE: the translation happens only for development build! When
28455
+ * we build a single library from our project, we no longer mangle the paths.
28456
+ */
28457
+ const workspacePathFix = dev_env.NODE_ENV === "development"
28458
+ ? (workspacePath) => (p) => {
28459
+ if (p.startsWith("/")) {
28460
+ return p;
28461
+ }
28462
+ return `${workspacePath}/${p}`;
28463
+ }
28464
+ : () => (p) => p;
28465
+
28437
28466
  ;// CONCATENATED MODULE: ./packages/core/utils/opaque.ts
28438
28467
  /**
28439
28468
  * @fileoverview `Opaque<Type, Token>` constructs a unique type which is a subset of Type with a
@@ -28777,6 +28806,7 @@ function isResult(x) {
28777
28806
 
28778
28807
 
28779
28808
 
28809
+
28780
28810
  ;// CONCATENATED MODULE: ./packages/core/bytes/bitvec.ts
28781
28811
 
28782
28812
  /**
@@ -35148,6 +35178,23 @@ function parseLevel(lvl) {
35148
35178
  ;// CONCATENATED MODULE: ./packages/core/logger/console.ts
35149
35179
  // biome-ignore-all lint/suspicious/noConsole: logger
35150
35180
 
35181
+ function print(level, levelAndName, strings, data) {
35182
+ if (level < levelAndName[0]) {
35183
+ return;
35184
+ }
35185
+ const lvlText = Level[level].padEnd(5);
35186
+ const val = strings.map((v, idx) => `${v}${data[idx]}`);
35187
+ const msg = `${lvlText} [${levelAndName[1]}] ${val}`;
35188
+ if (level === Level.WARN) {
35189
+ console.warn(msg);
35190
+ }
35191
+ else if (level === Level.ERROR) {
35192
+ console.error(msg);
35193
+ }
35194
+ else {
35195
+ console.info(msg);
35196
+ }
35197
+ }
35151
35198
  /** An optimized logger that ignores `TRACE`, `DEBUG` and `LOG` messages.
35152
35199
  *
35153
35200
  * Use the `create` method to instantiate the right instance of a more specialized logger.
@@ -35178,109 +35225,91 @@ class ConsoleTransport {
35178
35225
  constructor(options) {
35179
35226
  this.options = options;
35180
35227
  }
35181
- insane(_moduleName, _val) {
35228
+ insane(_levelAndName, _strings, _data) {
35182
35229
  /* no-op */
35183
35230
  }
35184
- trace(_moduleName, _val) {
35231
+ trace(_levelAndName, _strings, _data) {
35185
35232
  /* no-op */
35186
35233
  }
35187
- log(_moduleName, _val) {
35234
+ log(_levelAndName, _strings, _data) {
35188
35235
  /* no-op */
35189
35236
  }
35190
- info(_moduleName, _val) {
35237
+ info(_levelAndName, _strings, _data) {
35191
35238
  /* no-op */
35192
35239
  }
35193
- warn(moduleName, val) {
35194
- this.push(Level.WARN, moduleName, val);
35240
+ warn(levelAndName, strings, data) {
35241
+ print(Level.WARN, levelAndName, strings, data);
35195
35242
  }
35196
- error(moduleName, val) {
35197
- this.push(Level.ERROR, moduleName, val);
35198
- }
35199
- push(level, moduleName, val) {
35200
- const shortModule = moduleName.replace(this.options.workingDir, "");
35201
- const configuredLevel = findLevel(this.options, moduleName);
35202
- const lvlText = Level[level].padEnd(5);
35203
- if (level < configuredLevel) {
35204
- return;
35205
- }
35206
- const msg = `${lvlText} [${shortModule}] ${val}`;
35207
- if (level === Level.WARN) {
35208
- console.warn(msg);
35209
- }
35210
- else if (level === Level.ERROR) {
35211
- console.error(msg);
35212
- }
35213
- else {
35214
- console.info(msg);
35215
- }
35243
+ error(levelAndName, strings, data) {
35244
+ print(Level.ERROR, levelAndName, strings, data);
35216
35245
  }
35217
35246
  }
35218
35247
  /**
35219
35248
  * Insane version of console logger - supports insane level.
35220
35249
  */
35221
35250
  class InsaneConsoleLogger extends ConsoleTransport {
35222
- insane(moduleName, val) {
35223
- this.push(Level.INSANE, moduleName, val);
35251
+ insane(levelAndName, strings, data) {
35252
+ print(Level.INSANE, levelAndName, strings, data);
35224
35253
  }
35225
- trace(moduleName, val) {
35226
- this.push(Level.TRACE, moduleName, val);
35254
+ trace(levelAndName, strings, data) {
35255
+ print(Level.TRACE, levelAndName, strings, data);
35227
35256
  }
35228
- log(moduleName, val) {
35229
- this.push(Level.LOG, moduleName, val);
35257
+ log(levelAndName, strings, data) {
35258
+ print(Level.LOG, levelAndName, strings, data);
35230
35259
  }
35231
- info(moduleName, val) {
35232
- this.push(Level.INFO, moduleName, val);
35260
+ info(levelAndName, strings, data) {
35261
+ print(Level.INFO, levelAndName, strings, data);
35233
35262
  }
35234
35263
  }
35235
35264
  /**
35236
35265
  * A basic version of console logger - printing everything.
35237
35266
  */
35238
35267
  class TraceConsoleTransport extends ConsoleTransport {
35239
- insane(_moduleName, _val) {
35268
+ insane(_levelAndName, _strings, _data) {
35240
35269
  /* no-op */
35241
35270
  }
35242
- trace(moduleName, val) {
35243
- this.push(Level.TRACE, moduleName, val);
35271
+ trace(levelAndName, strings, data) {
35272
+ print(Level.TRACE, levelAndName, strings, data);
35244
35273
  }
35245
- log(moduleName, val) {
35246
- this.push(Level.LOG, moduleName, val);
35274
+ log(levelAndName, strings, data) {
35275
+ print(Level.LOG, levelAndName, strings, data);
35247
35276
  }
35248
- info(moduleName, val) {
35249
- this.push(Level.INFO, moduleName, val);
35277
+ info(levelAndName, strings, data) {
35278
+ print(Level.INFO, levelAndName, strings, data);
35250
35279
  }
35251
35280
  }
35252
35281
  /**
35253
35282
  * An optimized version of the logger - completely ignores `TRACE` level calls.
35254
35283
  */
35255
35284
  class LogConsoleTransport extends ConsoleTransport {
35256
- insane(_moduleName, _val) {
35285
+ insane(_levelAndName, _strings, _data) {
35257
35286
  /* no-op */
35258
35287
  }
35259
- trace(_moduleName, _val) {
35288
+ trace(_levelAndName, _strings, _data) {
35260
35289
  /* no-op */
35261
35290
  }
35262
- log(moduleName, val) {
35263
- this.push(Level.LOG, moduleName, val);
35291
+ log(levelAndName, strings, data) {
35292
+ print(Level.LOG, levelAndName, strings, data);
35264
35293
  }
35265
- info(moduleName, val) {
35266
- this.push(Level.INFO, moduleName, val);
35294
+ info(levelAndName, strings, data) {
35295
+ print(Level.INFO, levelAndName, strings, data);
35267
35296
  }
35268
35297
  }
35269
35298
  /**
35270
35299
  * An optimized version of the logger - completely ignores `TRACE` & `DEBUG` level calls.
35271
35300
  */
35272
35301
  class InfoConsoleTransport extends ConsoleTransport {
35273
- insane(_moduleName, _val) {
35302
+ insane(_levelAndName, _strings, _data) {
35274
35303
  /* no-op */
35275
35304
  }
35276
- trace(_moduleName, _val) {
35305
+ trace(_levelAndName, _strings, _data) {
35277
35306
  /* no-op */
35278
35307
  }
35279
- log(_moduleName, _val) {
35308
+ log(_levelAndName, _strings, _data) {
35280
35309
  /* no-op */
35281
35310
  }
35282
- info(moduleName, val) {
35283
- this.push(Level.INFO, moduleName, val);
35311
+ info(levelAndName, strings, data) {
35312
+ print(Level.INFO, levelAndName, strings, data);
35284
35313
  }
35285
35314
  }
35286
35315
 
@@ -35317,11 +35346,6 @@ class Logger {
35317
35346
  const module = moduleName ?? fName;
35318
35347
  return new Logger(module.padStart(8, " "), GLOBAL_CONFIG);
35319
35348
  }
35320
- /**
35321
- * Return currently configured level for given module. */
35322
- static getLevel(moduleName) {
35323
- return findLevel(GLOBAL_CONFIG.options, moduleName);
35324
- }
35325
35349
  /**
35326
35350
  * Global configuration of all loggers.
35327
35351
  *
@@ -35352,33 +35376,46 @@ class Logger {
35352
35376
  const options = parseLoggerOptions(input, defaultLevel, workingDir);
35353
35377
  Logger.configureAllFromOptions(options);
35354
35378
  }
35379
+ cachedLevelAndName;
35355
35380
  constructor(moduleName, config) {
35356
35381
  this.moduleName = moduleName;
35357
35382
  this.config = config;
35358
35383
  }
35384
+ /** Return currently configured level for given module. */
35385
+ getLevel() {
35386
+ return this.getLevelAndName()[0];
35387
+ }
35388
+ getLevelAndName() {
35389
+ if (this.cachedLevelAndName === undefined) {
35390
+ const level = findLevel(this.config.options, this.moduleName);
35391
+ const shortName = this.moduleName.replace(this.config.options.workingDir, "");
35392
+ this.cachedLevelAndName = [level, shortName];
35393
+ }
35394
+ return this.cachedLevelAndName;
35395
+ }
35359
35396
  /** Log a message with `INSANE` level. */
35360
- insane(val) {
35361
- this.config.transport.insane(this.moduleName, val);
35397
+ insane(strings, ...data) {
35398
+ this.config.transport.insane(this.getLevelAndName(), strings, data);
35362
35399
  }
35363
35400
  /** Log a message with `TRACE` level. */
35364
- trace(val) {
35365
- this.config.transport.trace(this.moduleName, val);
35401
+ trace(strings, ...data) {
35402
+ this.config.transport.trace(this.getLevelAndName(), strings, data);
35366
35403
  }
35367
35404
  /** Log a message with `DEBUG`/`LOG` level. */
35368
- log(val) {
35369
- this.config.transport.log(this.moduleName, val);
35405
+ log(strings, ...data) {
35406
+ this.config.transport.log(this.getLevelAndName(), strings, data);
35370
35407
  }
35371
35408
  /** Log a message with `INFO` level. */
35372
- info(val) {
35373
- this.config.transport.info(this.moduleName, val);
35409
+ info(strings, ...data) {
35410
+ this.config.transport.info(this.getLevelAndName(), strings, data);
35374
35411
  }
35375
35412
  /** Log a message with `WARN` level. */
35376
- warn(val) {
35377
- this.config.transport.warn(this.moduleName, val);
35413
+ warn(strings, ...data) {
35414
+ this.config.transport.warn(this.getLevelAndName(), strings, data);
35378
35415
  }
35379
35416
  /** Log a message with `ERROR` level. */
35380
- error(val) {
35381
- this.config.transport.error(this.moduleName, val);
35417
+ error(strings, ...data) {
35418
+ this.config.transport.error(this.getLevelAndName(), strings, data);
35382
35419
  }
35383
35420
  }
35384
35421
 
@@ -35468,15 +35505,15 @@ class NodeConfiguration {
35468
35505
  }
35469
35506
  function loadConfig(configPath) {
35470
35507
  if (configPath === DEFAULT_CONFIG) {
35471
- logger.log("🔧 Loading DEFAULT config");
35508
+ logger.log `🔧 Loading DEFAULT config`;
35472
35509
  return parseFromJson(configs.default, NodeConfiguration.fromJson);
35473
35510
  }
35474
35511
  if (configPath === DEV_CONFIG) {
35475
- logger.log("🔧 Loading DEV config");
35512
+ logger.log `🔧 Loading DEV config`;
35476
35513
  return parseFromJson(configs.dev, NodeConfiguration.fromJson);
35477
35514
  }
35478
35515
  try {
35479
- logger.log(`🔧 Loading config from ${configPath}`);
35516
+ logger.log `🔧 Loading config from ${configPath}`;
35480
35517
  const configFile = external_node_fs_default().readFileSync(configPath, "utf8");
35481
35518
  const parsed = JSON.parse(configFile);
35482
35519
  return parseFromJson(parsed, NodeConfiguration.fromJson);
@@ -39182,7 +39219,7 @@ class LmdbStates {
39182
39219
  await Promise.all([valuesWrite, statesWrite]);
39183
39220
  }
39184
39221
  catch (e) {
39185
- states_logger.error(`${e}`);
39222
+ states_logger.error `${e}`;
39186
39223
  return result_Result.error(StateUpdateError.Commit);
39187
39224
  }
39188
39225
  return result_Result.ok(result_OK);
@@ -39251,7 +39288,7 @@ function openDatabase(nodeName, genesisHeader, databaseBasePath, { readOnly = fa
39251
39288
  const genesisHeaderHash = hashBytes(genesisHeader).asOpaque();
39252
39289
  const genesisHeaderHashNibbles = genesisHeaderHash.toString().substring(2, 10);
39253
39290
  const dbPath = `${databaseBasePath}/${nodeNameHash}/${genesisHeaderHashNibbles}`;
39254
- common_logger.info(`🛢️ Opening database at ${dbPath}`);
39291
+ common_logger.info `🛢️ Opening database at ${dbPath}`;
39255
39292
  try {
39256
39293
  return {
39257
39294
  dbPath,
@@ -39273,21 +39310,21 @@ async function initializeDatabase(spec, genesisHeaderHash, rootDb, config, ances
39273
39310
  const states = new LmdbStates(spec, rootDb);
39274
39311
  const header = blocks.getBestHeaderHash();
39275
39312
  const state = blocks.getPostStateRoot(header);
39276
- common_logger.log(`🛢️ Best header hash: ${header}`);
39277
- common_logger.log(`🛢️ Best state root: ${state}`);
39313
+ common_logger.log `🛢️ Best header hash: ${header}`;
39314
+ common_logger.log `🛢️ Best state root: ${state}`;
39278
39315
  // DB seems already initialized, just go with what we have.
39279
39316
  const isDbInitialized = state !== null && !state.isEqualTo(bytes_Bytes.zero(hash_HASH_SIZE)) && !header.isEqualTo(bytes_Bytes.zero(hash_HASH_SIZE));
39280
39317
  if (isDbInitialized) {
39281
39318
  await rootDb.db.close();
39282
39319
  return;
39283
39320
  }
39284
- common_logger.log("🛢️ Database looks fresh. Initializing.");
39321
+ common_logger.log `🛢️ Database looks fresh. Initializing.`;
39285
39322
  // looks like a fresh db, initialize the state.
39286
39323
  const genesisHeader = decoder_Decoder.decodeObject(Header.Codec, config.genesisHeader, spec);
39287
39324
  const genesisExtrinsic = emptyBlock().extrinsic;
39288
39325
  const genesisBlock = Block.create({ header: genesisHeader, extrinsic: genesisExtrinsic });
39289
39326
  const blockView = blockAsView(genesisBlock, spec);
39290
- common_logger.log(`🧬 Writing genesis block #${genesisHeader.timeSlotIndex}: ${genesisHeaderHash}`);
39327
+ common_logger.log `🧬 Writing genesis block #${genesisHeader.timeSlotIndex}: ${genesisHeaderHash}`;
39291
39328
  const { genesisStateSerialized, genesisStateRootHash } = loadGenesisState(spec, config.genesisState);
39292
39329
  // write to db
39293
39330
  await blocks.insertBlock(new WithHash(genesisHeaderHash, blockView));
@@ -39305,7 +39342,7 @@ function loadGenesisState(spec, data) {
39305
39342
  const stateEntries = state_entries_StateEntries.fromEntriesUnsafe(data.entries());
39306
39343
  const state = serialized_state_SerializedState.fromStateEntries(spec, stateEntries);
39307
39344
  const genesisStateRootHash = stateEntries.getRootHash();
39308
- common_logger.info(`🧬 Genesis state root: ${genesisStateRootHash}`);
39345
+ common_logger.info `🧬 Genesis state root: ${genesisStateRootHash}`;
39309
39346
  return {
39310
39347
  genesisState: state,
39311
39348
  genesisStateSerialized: stateEntries,
@@ -39444,7 +39481,7 @@ class TypedPort {
39444
39481
  this.dispatchPortMessage(msg);
39445
39482
  }
39446
39483
  catch (e) {
39447
- port_logger.error(`[${this.constructor.name}] Failed to dispatch a message: ${e}: ${JSON.stringify(msg)}`);
39484
+ port_logger.error `[${this.constructor.name}] Failed to dispatch a message: ${e}: ${msg}`;
39448
39485
  throw e;
39449
39486
  }
39450
39487
  });
@@ -39518,7 +39555,7 @@ class TypedPort {
39518
39555
  this.port.postMessage(msg, transferList);
39519
39556
  }
39520
39557
  catch (e) {
39521
- port_logger.error(`[${this.constructor.name}] Failed to post a message: ${e}: ${JSON.stringify(msg)}`);
39558
+ port_logger.error `[${this.constructor.name}] Failed to post a message: ${e}: ${msg}`;
39522
39559
  throw e;
39523
39560
  }
39524
39561
  }
@@ -39549,7 +39586,7 @@ class TypedPort {
39549
39586
  cleanup(reason) {
39550
39587
  // resolve all pending requests with an error.
39551
39588
  const responseListeners = this.responseListeners.eventNames();
39552
- for (const ev in responseListeners) {
39589
+ for (const ev of responseListeners) {
39553
39590
  this.responseListeners.emit(ev, new Error(`port is ${reason}`));
39554
39591
  }
39555
39592
  }
@@ -39598,7 +39635,7 @@ class MessageChannelStateMachine {
39598
39635
  this.dispatchSignal(name, data);
39599
39636
  }
39600
39637
  catch (e) {
39601
- channel_logger.error(`[${this.constructor.name}] Unable to dispatch signal (${name}): ${e}. ${this.stateInfo(remoteState)}`);
39638
+ channel_logger.error `[${this.constructor.name}] Unable to dispatch signal (${name}): ${e}. ${this.stateInfo(remoteState)}`;
39602
39639
  throw e;
39603
39640
  }
39604
39641
  });
@@ -39607,7 +39644,7 @@ class MessageChannelStateMachine {
39607
39644
  await this.dispatchRequest(name, data, msg);
39608
39645
  }
39609
39646
  catch (e) {
39610
- channel_logger.error(`[${this.constructor.name}] Unable to dispatch request (${name}): ${e}. ${this.stateInfo(remoteState)}`);
39647
+ channel_logger.error `[${this.constructor.name}] Unable to dispatch request (${name}): ${e}. ${this.stateInfo(remoteState)}`;
39611
39648
  throw e;
39612
39649
  }
39613
39650
  });
@@ -39693,7 +39730,7 @@ class MessageChannelStateMachine {
39693
39730
  this.machine.transition(res.transitionTo.state, res.transitionTo.data);
39694
39731
  }
39695
39732
  if (didStateChangeInMeantime) {
39696
- channel_logger.warn(`Ignoring obsolete response for an old request: "${name}"`);
39733
+ channel_logger.warn `Ignoring obsolete response for an old request: "${name}"`;
39697
39734
  return;
39698
39735
  }
39699
39736
  return this.port.respond(prevState.stateName, msg, res.response);
@@ -39709,7 +39746,7 @@ class MessageChannelStateMachine {
39709
39746
  }
39710
39747
  }
39711
39748
  transitionTo() {
39712
- channel_logger.trace(`[${this.machine.name}] transitioned to ${this.currentState()}`);
39749
+ channel_logger.trace `[${this.machine.name}] transitioned to ${this.currentState()}`;
39713
39750
  return this;
39714
39751
  }
39715
39752
  /**
@@ -39729,7 +39766,7 @@ class MessageChannelStateMachine {
39729
39766
  await promise;
39730
39767
  }
39731
39768
  catch (e) {
39732
- channel_logger.error(JSON.stringify(e));
39769
+ channel_logger.error `${e}`;
39733
39770
  }
39734
39771
  return new MessageChannelStateMachine(machine, port);
39735
39772
  }
@@ -39932,7 +39969,7 @@ class State {
39932
39969
  * actions.
39933
39970
  */
39934
39971
  onActivation(data) {
39935
- state_logger.trace(`[${this.constructor.name}] Changing state to: ${this}`);
39972
+ state_logger.trace `[${this.constructor.name}] Changing state to: ${this}`;
39936
39973
  this.data = data;
39937
39974
  }
39938
39975
  /**
@@ -40030,7 +40067,7 @@ async function spawnWorkerGeneric(bootstrapPath, logger, mainReadyName, mainRead
40030
40067
  const worker = new external_node_worker_threads_namespaceObject.Worker(bootstrapPath);
40031
40068
  const machine = stateMachineMain(`main->${mainReadyName}`, mainReadyName, mainReadyState);
40032
40069
  const channel = await MessageChannelStateMachine.createAndTransferChannel(machine, worker);
40033
- logger.trace(`[${machine.name}] Worker spawned ${channel.currentState()}`);
40070
+ logger.trace `[${machine.name}] Worker spawned ${channel.currentState()}`;
40034
40071
  return channel;
40035
40072
  }
40036
40073
 
@@ -40143,7 +40180,7 @@ class MainReady extends State {
40143
40180
  if (res instanceof Uint8Array) {
40144
40181
  return bytes_Bytes.fromBlob(res, hash_HASH_SIZE).asOpaque();
40145
40182
  }
40146
- state_machine_logger.error(`Invalid response for getBestStateRootHash. Expected Uint8Array, got: ${res}`);
40183
+ state_machine_logger.error `Invalid response for getBestStateRootHash. Expected Uint8Array, got: ${res}`;
40147
40184
  return bytes_Bytes.zero(hash_HASH_SIZE).asOpaque();
40148
40185
  }
40149
40186
  finish(channel) {
@@ -40191,7 +40228,7 @@ class ImporterReady extends State {
40191
40228
  }
40192
40229
  async getStateEntries(hash) {
40193
40230
  if (this.importer === null) {
40194
- state_machine_logger.error(`${this.constructor.name} importer not initialized yet!`);
40231
+ state_machine_logger.error `${this.constructor.name} importer not initialized yet!`;
40195
40232
  await new Promise((resolve) => {
40196
40233
  this.onImporter.once(resolve);
40197
40234
  });
@@ -40205,7 +40242,7 @@ class ImporterReady extends State {
40205
40242
  response: encoded.raw,
40206
40243
  };
40207
40244
  }
40208
- state_machine_logger.error(`${this.constructor.name} got invalid request type: ${JSON.stringify(hash)}.`);
40245
+ state_machine_logger.error `${this.constructor.name} got invalid request type: ${JSON.stringify(hash)}.`;
40209
40246
  return {
40210
40247
  response: null,
40211
40248
  };
@@ -40225,7 +40262,7 @@ class ImporterReady extends State {
40225
40262
  }
40226
40263
  async importBlock(block) {
40227
40264
  if (this.importer === null) {
40228
- state_machine_logger.error(`${this.constructor.name} importer not initialized yet!`);
40265
+ state_machine_logger.error `${this.constructor.name} importer not initialized yet!`;
40229
40266
  await new Promise((resolve) => {
40230
40267
  this.onImporter.once(resolve);
40231
40268
  });
@@ -40245,8 +40282,8 @@ class ImporterReady extends State {
40245
40282
  }
40246
40283
  }
40247
40284
  catch (e) {
40248
- state_machine_logger.error(`Failed to import block: ${e}`);
40249
- state_machine_logger.error(`${e instanceof Error ? e.stack : ""}`);
40285
+ state_machine_logger.error `Failed to import block: ${e}`;
40286
+ state_machine_logger.error `${e instanceof Error ? e.stack : ""}`;
40250
40287
  response = result_Result.error(`${e}`);
40251
40288
  }
40252
40289
  const encoded = encoder_Encoder.encodeObject(importBlockResultCodec, response);
@@ -40254,7 +40291,7 @@ class ImporterReady extends State {
40254
40291
  response: encoded.raw,
40255
40292
  };
40256
40293
  }
40257
- state_machine_logger.error(`${this.constructor.name} got invalid request type: ${JSON.stringify(block)}.`);
40294
+ state_machine_logger.error `${this.constructor.name} got invalid request type: ${JSON.stringify(block)}.`;
40258
40295
  return {
40259
40296
  response: null,
40260
40297
  };
@@ -40266,7 +40303,7 @@ class ImporterReady extends State {
40266
40303
  this.onBlock.emit(blockView);
40267
40304
  }
40268
40305
  else {
40269
- state_machine_logger.error(`${this.constructor.name} got invalid signal type: ${JSON.stringify(block)}.`);
40306
+ state_machine_logger.error `${this.constructor.name} got invalid signal type: ${JSON.stringify(block)}.`;
40270
40307
  }
40271
40308
  }
40272
40309
  async endWork() {
@@ -40365,7 +40402,7 @@ class state_machine_MainReady extends State {
40365
40402
  this.onNewBlocks.emit(blocks);
40366
40403
  }
40367
40404
  else {
40368
- jam_network_state_machine_logger.error(`${this.constructor.name} got invalid signal type: ${JSON.stringify(block)}.`);
40405
+ jam_network_state_machine_logger.error `${this.constructor.name} got invalid signal type: ${JSON.stringify(block)}.`;
40369
40406
  }
40370
40407
  }
40371
40408
  announceHeader(port, header) {
@@ -40403,7 +40440,7 @@ class NetworkReady extends State {
40403
40440
  this.onNewHeader.emit(decoded);
40404
40441
  }
40405
40442
  else {
40406
- jam_network_state_machine_logger.error(`${this.constructor.name} got invalid signal type: ${JSON.stringify(header)}.`);
40443
+ jam_network_state_machine_logger.error `${this.constructor.name} got invalid signal type: ${JSON.stringify(header)}.`;
40407
40444
  }
40408
40445
  }
40409
40446
  sendBlocks(port, blocks) {
@@ -42111,12 +42148,14 @@ class WriteablePage extends MemoryPage {
42111
42148
 
42112
42149
 
42113
42150
 
42151
+
42152
+
42114
42153
  var AccessType;
42115
42154
  (function (AccessType) {
42116
42155
  AccessType[AccessType["READ"] = 0] = "READ";
42117
42156
  AccessType[AccessType["WRITE"] = 1] = "WRITE";
42118
42157
  })(AccessType || (AccessType = {}));
42119
- // const logger = Logger.new(import.meta.filename, "pvm:mem");
42158
+ const memory_logger = Logger.new(import.meta.filename, "pvm:mem");
42120
42159
  class Memory {
42121
42160
  sbrkIndex;
42122
42161
  virtualSbrkIndex;
@@ -42147,7 +42186,7 @@ class Memory {
42147
42186
  if (bytes.length === 0) {
42148
42187
  return result_Result.ok(result_OK);
42149
42188
  }
42150
- // logger.insane(`MEM[${address}] <- ${BytesBlob.blobFrom(bytes)}`);
42189
+ memory_logger.insane `MEM[${address}] <- ${bytes_BytesBlob.blobFrom(bytes)}`;
42151
42190
  const pagesResult = this.getPages(address, bytes.length, AccessType.WRITE);
42152
42191
  if (pagesResult.isError) {
42153
42192
  return result_Result.error(pagesResult.error);
@@ -42214,7 +42253,7 @@ class Memory {
42214
42253
  currentPosition += bytesToRead;
42215
42254
  bytesLeft -= bytesToRead;
42216
42255
  }
42217
- // logger.insane(`MEM[${startAddress}] => ${BytesBlob.blobFrom(result)}`);
42256
+ memory_logger.insane `MEM[${startAddress}] => ${bytes_BytesBlob.blobFrom(result)}`;
42218
42257
  return result_Result.ok(result_OK);
42219
42258
  }
42220
42259
  sbrk(length) {
@@ -44144,7 +44183,7 @@ class ProgramDecoder {
44144
44183
  return result_Result.ok(new ProgramDecoder(program));
44145
44184
  }
44146
44185
  catch (e) {
44147
- program_decoder_logger.error(`Invalid program: ${e}`);
44186
+ program_decoder_logger.error `Invalid program: ${e}`;
44148
44187
  return result_Result.error(ProgramDecoderError.InvalidProgramError);
44149
44188
  }
44150
44189
  }
@@ -44310,7 +44349,7 @@ class Interpreter {
44310
44349
  const argsType = instructionArgumentTypeMap[currentInstruction] ?? ArgumentType.NO_ARGUMENTS;
44311
44350
  const argsResult = this.argsDecodingResults[argsType];
44312
44351
  this.argsDecoder.fillArgs(this.pc, argsResult);
44313
- interpreter_logger.insane(`[PC: ${this.pc}] ${Instruction[currentInstruction]}`);
44352
+ interpreter_logger.insane `[PC: ${this.pc}] ${Instruction[currentInstruction]}`;
44314
44353
  if (!isValidInstruction) {
44315
44354
  this.instructionResult.status = pvm_interpreter_result_Result.PANIC;
44316
44355
  }
@@ -44382,7 +44421,7 @@ class Interpreter {
44382
44421
  this.status = status_Status.HOST;
44383
44422
  break;
44384
44423
  }
44385
- interpreter_logger.insane(`[PC: ${this.pc}] Status: ${pvm_interpreter_result_Result[this.instructionResult.status]}`);
44424
+ interpreter_logger.insane `[PC: ${this.pc}] Status: ${pvm_interpreter_result_Result[this.instructionResult.status]}`;
44386
44425
  return this.status;
44387
44426
  }
44388
44427
  this.pc = this.instructionResult.nextPc;
@@ -44629,7 +44668,7 @@ class host_calls_manager_HostCallsManager {
44629
44668
  return `r${idx}=${value} (0x${value.toString(16)})`;
44630
44669
  })
44631
44670
  .join(", ");
44632
- host_calls_manager_logger.insane(`[${currentServiceId}] ${context} ${name}${requested}. Gas: ${gas}. Regs: ${registerValues}.`);
44671
+ host_calls_manager_logger.insane `[${currentServiceId}] ${context} ${name}${requested}. Gas: ${gas}. Regs: ${registerValues}.`;
44633
44672
  }
44634
44673
  }
44635
44674
  class NoopMissing {
@@ -45237,7 +45276,7 @@ class block_generator_state_machine_MainReady extends State {
45237
45276
  this.onBlock.emit(block);
45238
45277
  }
45239
45278
  else {
45240
- block_generator_state_machine_logger.error(`${this.constructor.name} got invalid signal type: ${JSON.stringify(block)}.`);
45279
+ block_generator_state_machine_logger.error `${this.constructor.name} got invalid signal type: ${JSON.stringify(block)}.`;
45241
45280
  }
45242
45281
  }
45243
45282
  finish(channel) {
@@ -45292,12 +45331,12 @@ if (!external_node_worker_threads_namespaceObject.isMainThread) {
45292
45331
  channel
45293
45332
  .then((channel) => main(channel))
45294
45333
  .catch((e) => {
45295
- block_generator_logger.error(e);
45334
+ block_generator_logger.error `${e}`;
45296
45335
  if (e.stack !== undefined) {
45297
- block_generator_logger.error(e.stack);
45336
+ block_generator_logger.error `${e.stack}`;
45298
45337
  }
45299
45338
  if (e.cause !== undefined) {
45300
- block_generator_logger.error(e.cause);
45339
+ block_generator_logger.error `${e.cause}`;
45301
45340
  }
45302
45341
  });
45303
45342
  }
@@ -45305,7 +45344,7 @@ if (!external_node_worker_threads_namespaceObject.isMainThread) {
45305
45344
  * The `BlockGenerator` should periodically create new blocks and send them as signals to the main thread.
45306
45345
  */
45307
45346
  async function main(channel) {
45308
- block_generator_logger.info(`🎁 Block Generator running ${channel.currentState()}`);
45347
+ block_generator_logger.info `🎁 Block Generator running ${channel.currentState()}`;
45309
45348
  // Await the configuration object
45310
45349
  const ready = await channel.waitForState("ready(generator)");
45311
45350
  const config = ready.currentState().getConfig();
@@ -45320,11 +45359,11 @@ async function main(channel) {
45320
45359
  await (0,promises_namespaceObject.setTimeout)(config.chainSpec.slotDuration * 1000);
45321
45360
  counter += 1;
45322
45361
  const newBlock = await generator.nextEncodedBlock();
45323
- block_generator_logger.trace(`Sending block ${counter}`);
45362
+ block_generator_logger.trace `Sending block ${counter}`;
45324
45363
  worker.sendBlock(port, newBlock);
45325
45364
  }
45326
45365
  });
45327
- block_generator_logger.info("Block Generator finished. Closing channel.");
45366
+ block_generator_logger.info `Block Generator finished. Closing channel.`;
45328
45367
  // Close the comms to gracefully close the app.
45329
45368
  finished.currentState().close(channel);
45330
45369
  }
@@ -45439,11 +45478,11 @@ class PeersManagement {
45439
45478
  _onPeerDisconnected = [];
45440
45479
  peers = new Map();
45441
45480
  peerConnected(peer) {
45442
- peers_logger.info(`💡 Peer ${displayId(peer)} connected.`);
45481
+ peers_logger.info `💡 Peer ${displayId(peer)} connected.`;
45443
45482
  const oldPeerData = this.peers.get(peer.id);
45444
45483
  if (oldPeerData !== undefined) {
45445
45484
  // TODO [ToDr] replacing old connection?
45446
- peers_logger.warn("Replacing older connection.");
45485
+ peers_logger.warn `Replacing older connection.`;
45447
45486
  }
45448
45487
  this.peers.set(peer.id, peer);
45449
45488
  for (const callback of this._onPeerConnected) {
@@ -45451,7 +45490,7 @@ class PeersManagement {
45451
45490
  }
45452
45491
  }
45453
45492
  peerDisconnected(peer) {
45454
- peers_logger.info(`⚡︎Peer ${displayId(peer)} disconnected.`);
45493
+ peers_logger.info `⚡︎Peer ${displayId(peer)} disconnected.`;
45455
45494
  this.peers.delete(peer.id);
45456
45495
  for (const callback of this._onPeerDisconnected) {
45457
45496
  callback(peer);
@@ -54243,23 +54282,23 @@ var VerifyCertError;
54243
54282
  VerifyCertError[VerifyCertError["IncorrectSignature"] = 4] = "IncorrectSignature";
54244
54283
  })(VerifyCertError || (VerifyCertError = {}));
54245
54284
  async function verifyCertificate(certs) {
54246
- certificate_logger.log("Incoming peer. Verifying certificate");
54285
+ certificate_logger.log `Incoming peer. Verifying certificate`;
54247
54286
  // Must present exactly one cert
54248
54287
  if (certs.length !== 1) {
54249
- certificate_logger.log("Rejecting peer with no certificates.");
54288
+ certificate_logger.log `Rejecting peer: expected exactly one certificate, got: ${certs.length}`;
54250
54289
  return result_Result.error(VerifyCertError.NoCertificate);
54251
54290
  }
54252
54291
  // Parse with Node's X509Certificate (accepts PEM or DER)
54253
54292
  const xc = new (external_node_crypto_default()).X509Certificate(certs[0]);
54254
54293
  // Must be Ed25519 key
54255
54294
  if (xc.publicKey.asymmetricKeyType !== CURVE_NAME.toLowerCase()) {
54256
- certificate_logger.log(`Rejecting peer using non-ed25519 certificate: ${xc.publicKey.asymmetricKeyType}`);
54295
+ certificate_logger.log `Rejecting peer using non-ed25519 certificate: ${xc.publicKey.asymmetricKeyType}`;
54257
54296
  return result_Result.error(VerifyCertError.NotEd25519);
54258
54297
  }
54259
54298
  // Extract raw public key via JWK export
54260
54299
  const jwk = xc.publicKey.export({ format: "jwk" });
54261
54300
  if (jwk.kty !== KEY_TYPE || jwk.crv !== CURVE_NAME) {
54262
- certificate_logger.log(`Public key type mismatch: ${jwk.kty}, ${jwk.crv}`);
54301
+ certificate_logger.log `Public key type mismatch: ${jwk.kty}, ${jwk.crv}`;
54263
54302
  return result_Result.error(VerifyCertError.PublicKeyTypeMismatch);
54264
54303
  }
54265
54304
  // SAN must be exactly 'e'+base32(rawPub)
@@ -54267,7 +54306,7 @@ async function verifyCertificate(certs) {
54267
54306
  const sanField = xc.subjectAltName ?? "";
54268
54307
  const m = sanField.match(/DNS:([^,]+)/);
54269
54308
  if (m === null || m[1] !== expectedSan) {
54270
- certificate_logger.log(`AltName mismatch. Expected: '${expectedSan}', got: '${m?.[1]}'`);
54309
+ certificate_logger.log `AltName mismatch. Expected: '${expectedSan}', got: '${m?.[1]}'`;
54271
54310
  return result_Result.error(VerifyCertError.AltNameMismatch);
54272
54311
  }
54273
54312
  const key = Buffer.from(jwk.x ?? "", "base64url");
@@ -54534,19 +54573,19 @@ class QuicNetwork {
54534
54573
  }
54535
54574
  this.started = true;
54536
54575
  await this.socket.start({ host: this.listen.host, port: this.listen.port });
54537
- quic_network_logger.info(`🛜 QUIC socket on ${this.socket.host}:${this.socket.port}`);
54576
+ quic_network_logger.info `🛜 QUIC socket on ${this.socket.host}:${this.socket.port}`;
54538
54577
  await this.server.start();
54539
- quic_network_logger.log("🛜 QUIC server listening");
54578
+ quic_network_logger.log `🛜 QUIC server listening`;
54540
54579
  }
54541
54580
  async stop() {
54542
54581
  if (!this.started) {
54543
54582
  throw new Error("Network not started yet!");
54544
54583
  }
54545
- quic_network_logger.info("Stopping the networking.");
54584
+ quic_network_logger.info `Stopping the networking.`;
54546
54585
  await this.server.stop();
54547
54586
  await this.socket.stop();
54548
54587
  this.started = false;
54549
- quic_network_logger.info("Networking stopped.");
54588
+ quic_network_logger.info `Networking stopped.`;
54550
54589
  }
54551
54590
  get peers() {
54552
54591
  return this._peers;
@@ -54567,7 +54606,7 @@ clazz, callback) {
54567
54606
  await callback(ev);
54568
54607
  }
54569
54608
  catch (e) {
54570
- quic_utils_logger.error(`Unhandled exception in ${clazz.name} event handler: ${e}`);
54609
+ quic_utils_logger.error `Unhandled exception in ${clazz.name} event handler: ${e}`;
54571
54610
  }
54572
54611
  });
54573
54612
  }
@@ -54626,7 +54665,7 @@ class QuicPeer {
54626
54665
  streamEvents = new (external_node_events_default())();
54627
54666
  constructor(conn, peerInfo) {
54628
54667
  this.conn = conn;
54629
- quic_peer_logger.log(`👥 [${peerInfo.id}] peer connected ${conn.remoteHost}:${conn.remotePort}`);
54668
+ quic_peer_logger.log `👥 [${peerInfo.id}] peer connected ${conn.remoteHost}:${conn.remotePort}`;
54630
54669
  this.connectionId = conn.connectionIdShared.toString();
54631
54670
  this.address = {
54632
54671
  host: conn.remoteHost,
@@ -54636,11 +54675,11 @@ class QuicPeer {
54636
54675
  this.key = peerInfo.key;
54637
54676
  addEventListener(conn, EventQUICConnectionStream, (ev) => {
54638
54677
  const stream = ev.detail;
54639
- quic_peer_logger.log(`🚰 [${this.id}] new stream: [${stream.streamId}]`);
54678
+ quic_peer_logger.log `🚰 [${this.id}] new stream: [${stream.streamId}]`;
54640
54679
  this.streamEvents.emit("stream", new QuicStream(stream));
54641
54680
  });
54642
54681
  addEventListener(conn, EventQUICConnectionError, (err) => {
54643
- quic_peer_logger.error(`❌ [${this.id}] connection failed: ${err.detail}`);
54682
+ quic_peer_logger.error `❌ [${this.id}] connection failed: ${err.detail}`;
54644
54683
  });
54645
54684
  }
54646
54685
  addOnIncomingStream(streamCallback) {
@@ -54648,11 +54687,11 @@ class QuicPeer {
54648
54687
  }
54649
54688
  openStream() {
54650
54689
  const stream = this.conn.newStream("bidi");
54651
- quic_peer_logger.log(`🚰 [${this.id}] opening stream: [${stream.streamId}]`);
54690
+ quic_peer_logger.log `🚰 [${this.id}] opening stream: [${stream.streamId}]`;
54652
54691
  return new QuicStream(stream);
54653
54692
  }
54654
54693
  async disconnect() {
54655
- quic_peer_logger.log(`👋 [${this.id}] disconnecting`);
54694
+ quic_peer_logger.log `👋 [${this.id}] disconnecting`;
54656
54695
  await this.conn.stop({ isApp: true });
54657
54696
  }
54658
54697
  }
@@ -54673,7 +54712,7 @@ const setup_logger = Logger.new(import.meta.filename, "net");
54673
54712
  class Quic {
54674
54713
  /** Setup QUIC socket and start listening for connections. */
54675
54714
  static async setup({ host, port, protocols, key }) {
54676
- const quicLoggerLvl = Logger.getLevel("net") > Level.TRACE ? LogLevel.WARN : LogLevel.DEBUG;
54715
+ const quicLoggerLvl = setup_logger.getLevel() > Level.TRACE ? LogLevel.WARN : LogLevel.DEBUG;
54677
54716
  const quicLogger = new dist_Logger("quic", quicLoggerLvl, [
54678
54717
  new handlers_StreamHandler(format `${level}:${keys}:${msg}`),
54679
54718
  ]);
@@ -54696,7 +54735,7 @@ class Quic {
54696
54735
  verifyPeer: true,
54697
54736
  verifyCallback: lastConnectedPeer.verifyCallback,
54698
54737
  };
54699
- setup_logger.info(`🆔 Peer id: ** ${altNameRaw(key.pubKey)}@${host}:${port} ** (pubkey: ${key.pubKey})`);
54738
+ setup_logger.info `🆔 Peer id: ** ${altNameRaw(key.pubKey)}@${host}:${port} ** (pubkey: ${key.pubKey})`;
54700
54739
  // Shared injected UDP socket
54701
54740
  const socket = new dist_QUICSocket({
54702
54741
  logger: quicLogger.getChild("socket"),
@@ -54711,8 +54750,8 @@ class Quic {
54711
54750
  // peer management
54712
54751
  const peers = new PeersManagement();
54713
54752
  // basic error handling
54714
- addEventListener(server, EventQUICServerError, (error) => setup_logger.error(`🛜 Server error: ${error}`));
54715
- addEventListener(server, EventQUICServerClose, (ev) => setup_logger.error(`🛜 Server stopped: ${ev}`));
54753
+ addEventListener(server, EventQUICServerError, (error) => setup_logger.error `🛜 Server error: ${error}`);
54754
+ addEventListener(server, EventQUICServerClose, (ev) => setup_logger.error `🛜 Server stopped: ${ev}`);
54716
54755
  // handling incoming session
54717
54756
  addEventListener(server, EventQUICServerConnection, async (ev) => {
54718
54757
  const conn = ev.detail;
@@ -54721,16 +54760,16 @@ class Quic {
54721
54760
  return;
54722
54761
  }
54723
54762
  if (lastConnectedPeer.info.key.isEqualTo(key.pubKey)) {
54724
- setup_logger.log(`🛜 Rejecting connection from ourself from ${conn.remoteHost}:${conn.remotePort}`);
54763
+ setup_logger.log `🛜 Rejecting connection from ourself from ${conn.remoteHost}:${conn.remotePort}`;
54725
54764
  await conn.stop();
54726
54765
  return;
54727
54766
  }
54728
54767
  if (peers.isConnected(lastConnectedPeer.info.id)) {
54729
- setup_logger.log(`🛜 Rejecting duplicate connection with peer ${lastConnectedPeer.info.id} from ${conn.remoteHost}:${conn.remotePort}`);
54768
+ setup_logger.log `🛜 Rejecting duplicate connection with peer ${lastConnectedPeer.info.id} from ${conn.remoteHost}:${conn.remotePort}`;
54730
54769
  await conn.stop();
54731
54770
  return;
54732
54771
  }
54733
- setup_logger.log(`🛜 Server handshake with ${conn.remoteHost}:${conn.remotePort}`);
54772
+ setup_logger.log `🛜 Server handshake with ${conn.remoteHost}:${conn.remotePort}`;
54734
54773
  newPeer(conn, lastConnectedPeer.info);
54735
54774
  lastConnectedPeer.info = null;
54736
54775
  await conn.start();
@@ -54753,10 +54792,10 @@ class Quic {
54753
54792
  });
54754
54793
  const client = await clientLater;
54755
54794
  addEventListener(client, EventQUICClientClose, () => {
54756
- setup_logger.log("⚰️ Client connection closed.");
54795
+ setup_logger.log `⚰️ Client connection closed.`;
54757
54796
  });
54758
54797
  addEventListener(client, EventQUICClientError, (error) => {
54759
- setup_logger.error(`🔴 Client error: ${error.detail}`);
54798
+ setup_logger.error `🔴 Client error: ${error.detail}`;
54760
54799
  });
54761
54800
  if (peerDetails.info === null) {
54762
54801
  throw new Error("Client connected, but there is no peer details!");
@@ -54764,7 +54803,7 @@ class Quic {
54764
54803
  if (options.verifyName !== undefined && options.verifyName !== peerDetails.info.id) {
54765
54804
  throw new Error(`Client connected, but the id didn't match. Expected: ${options.verifyName}, got: ${peerDetails.info.id}`);
54766
54805
  }
54767
- setup_logger.log(`🤝 Client handshake with: ${peer.host}:${peer.port}`);
54806
+ setup_logger.log `🤝 Client handshake with: ${peer.host}:${peer.port}`;
54768
54807
  return newPeer(client.connection, peerDetails.info);
54769
54808
  }
54770
54809
  function newPeer(conn, peerInfo) {
@@ -54884,10 +54923,10 @@ class Connections {
54884
54923
  for (;;) {
54885
54924
  // increase the reconnection counter
54886
54925
  meta.currentRetry += 1;
54887
- if (meta.currentRetry >= meta.maxRetries) {
54926
+ if (meta.currentRetry > meta.maxRetries) {
54888
54927
  // reached max retries for a peer, remove it from tracking.
54889
54928
  this.peerInfo.delete(id);
54890
- jamnp_s_peers_logger.log(`[${id}] max retries reached. Removing peer.`);
54929
+ jamnp_s_peers_logger.log `[${id}] max retries reached. Removing peer.`;
54891
54930
  return;
54892
54931
  }
54893
54932
  // else attempt to connect to a node a bit later.
@@ -54906,7 +54945,7 @@ class Connections {
54906
54945
  }
54907
54946
  // attempt to connect to the peer
54908
54947
  try {
54909
- jamnp_s_peers_logger.trace(`[${id}] Attempting to connect to peer at ${meta.address.host}:${meta.address.port}.`);
54948
+ jamnp_s_peers_logger.trace `[${id}] Attempting to connect to peer at ${meta.address.host}:${meta.address.port}.`;
54910
54949
  await this.network.dial(meta.address, { signal, verifyName: meta.peerId });
54911
54950
  return;
54912
54951
  }
@@ -54915,7 +54954,7 @@ class Connections {
54915
54954
  return;
54916
54955
  }
54917
54956
  // failing to connect, will retry.
54918
- jamnp_s_peers_logger.trace(`[${id}] attempt failed. Will retry (${meta.currentRetry}/${meta.maxRetries})`);
54957
+ jamnp_s_peers_logger.trace `[${id}] attempt failed. Will retry (${meta.currentRetry}/${meta.maxRetries})`;
54919
54958
  }
54920
54959
  }
54921
54960
  }
@@ -55028,7 +55067,7 @@ class StreamManager {
55028
55067
  // We expect a one-byte identifier first.
55029
55068
  const data = await reader.read();
55030
55069
  bytes = bytes_BytesBlob.blobFrom(data.value !== undefined ? data.value : new Uint8Array());
55031
- stream_manager_logger.trace(`🚰 --> [${peer.id}:${streamId}] Initial data: ${bytes}`);
55070
+ stream_manager_logger.trace `🚰 --> [${peer.id}:${streamId}] Initial data: ${bytes}`;
55032
55071
  }
55033
55072
  finally {
55034
55073
  reader.releaseLock();
@@ -55042,7 +55081,7 @@ class StreamManager {
55042
55081
  if (handler === undefined) {
55043
55082
  throw new Error(`Unsupported stream kind: ${kind}`);
55044
55083
  }
55045
- stream_manager_logger.log(`🚰 --> [${peer.id}:${stream.streamId}] Stream identified as: ${kind}`);
55084
+ stream_manager_logger.log `🚰 --> [${peer.id}:${stream.streamId}] Stream identified as: ${kind}`;
55046
55085
  this.registerStream(peer, handler, stream, bytes_BytesBlob.blobFrom(bytes.raw.subarray(1)));
55047
55086
  }
55048
55087
  registerStream(peer, handler, stream, initialData) {
@@ -55052,7 +55091,7 @@ class StreamManager {
55052
55091
  this.streams.delete(streamId);
55053
55092
  this.backgroundTasks.delete(streamId);
55054
55093
  if (kind === StreamErrorKind.Exception) {
55055
- stream_manager_logger.error(`🚰 --- [${peer.id}:${streamId}] Stream error: ${e}. Disconnecting peer.`);
55094
+ stream_manager_logger.error `🚰 --- [${peer.id}:${streamId}] Stream error: ${e}. Disconnecting peer.`;
55056
55095
  }
55057
55096
  if (kind !== StreamErrorKind.LocalClose) {
55058
55097
  // whenever we have an error, we are going to inform the handler
@@ -55086,10 +55125,10 @@ async function readStreamForever(peer, handler, quicStream, initialData, reader)
55086
55125
  let isDone = false;
55087
55126
  const callback = handleMessageFragmentation((data) => {
55088
55127
  const bytes = bytes_BytesBlob.blobFrom(new Uint8Array(data));
55089
- stream_manager_logger.trace(`🚰 --> [${peer.id}:${quicStream.streamId}] ${bytes}`);
55128
+ stream_manager_logger.trace `🚰 --> [${peer.id}:${quicStream.streamId}] ${bytes}`;
55090
55129
  handler.onStreamMessage(quicStream, bytes);
55091
55130
  }, () => {
55092
- stream_manager_logger.error(`🚰 --> [${peer.id}:${quicStream.streamId}] got too much data. Disconnecting.`);
55131
+ stream_manager_logger.error `🚰 --> [${peer.id}:${quicStream.streamId}] got too much data. Disconnecting.`;
55093
55132
  peer.disconnect();
55094
55133
  });
55095
55134
  for (;;) {
@@ -55098,7 +55137,7 @@ async function readStreamForever(peer, handler, quicStream, initialData, reader)
55098
55137
  // be a promise, so that we can make back pressure here.
55099
55138
  callback(bytes.raw);
55100
55139
  if (isDone) {
55101
- stream_manager_logger.log(`🚰 --> [${peer.id}:${quicStream.streamId}] remote finished.`);
55140
+ stream_manager_logger.log `🚰 --> [${peer.id}:${quicStream.streamId}] remote finished.`;
55102
55141
  return;
55103
55142
  }
55104
55143
  // await for more data
@@ -55141,7 +55180,7 @@ class QuicStreamSender {
55141
55180
  return;
55142
55181
  }
55143
55182
  const { data, addPrefix } = chunk;
55144
- stream_manager_logger.trace(`🚰 <-- [${this.streamId}] write: ${data}`);
55183
+ stream_manager_logger.trace `🚰 <-- [${this.streamId}] write: ${data}`;
55145
55184
  if (addPrefix) {
55146
55185
  await writer.write(encodeMessageLength(data.raw));
55147
55186
  }
@@ -55158,7 +55197,7 @@ class QuicStreamSender {
55158
55197
  }
55159
55198
  close() {
55160
55199
  handleAsyncErrors(async () => {
55161
- stream_manager_logger.trace(`🚰 <-- [${this.streamId}] closing`);
55200
+ stream_manager_logger.trace `🚰 <-- [${this.streamId}] closing`;
55162
55201
  if (this.currentWriterPromise !== null) {
55163
55202
  await this.currentWriterPromise;
55164
55203
  }
@@ -55244,7 +55283,7 @@ class ServerHandler {
55244
55283
  }
55245
55284
  onStreamMessage(sender, message) {
55246
55285
  const request = decoder_Decoder.decodeObject(BlockRequest.Codec, message);
55247
- ce_128_block_request_logger.log(`[${sender.streamId}] Client has requested: ${request}`);
55286
+ ce_128_block_request_logger.log `[${sender.streamId}] Client has requested: ${request}`;
55248
55287
  const blocks = this.getBlockSequence(sender.streamId, request.headerHash, request.direction, request.maxBlocks);
55249
55288
  sender.bufferAndSend(encoder_Encoder.encodeObject(descriptors_codec.sequenceFixLen(Block.Codec.View, blocks.length), blocks, this.chainSpec));
55250
55289
  sender.close();
@@ -55264,7 +55303,7 @@ class ClientHandler {
55264
55303
  throw new Error("Received an unexpected message from the server.");
55265
55304
  }
55266
55305
  const blocks = decoder_Decoder.decodeSequence(Block.Codec.View, message, this.chainSpec);
55267
- ce_128_block_request_logger.log(`[${sender.streamId}] Server returned ${blocks.length} blocks in ${message.length} bytes of data.`);
55306
+ ce_128_block_request_logger.log `[${sender.streamId}] Server returned ${blocks.length} blocks in ${message.length} bytes of data.`;
55268
55307
  this.promiseResolvers.get(sender.streamId)?.(blocks);
55269
55308
  this.promiseResolvers.delete(sender.streamId);
55270
55309
  }
@@ -55435,13 +55474,13 @@ class ce_129_state_request_Handler {
55435
55474
  }
55436
55475
  onStreamMessage(sender, message) {
55437
55476
  if (this.isServer) {
55438
- ce_129_state_request_logger.info(`[${sender.streamId}][server]: Received request.`);
55477
+ ce_129_state_request_logger.info `[${sender.streamId}][server]: Received request.`;
55439
55478
  if (this.getBoundaryNodes === undefined || this.getKeyValuePairs === undefined)
55440
55479
  return;
55441
55480
  const request = decoder_Decoder.decodeObject(StateRequest.Codec, message);
55442
55481
  const boundaryNodes = this.getBoundaryNodes(request.headerHash, request.startKey, request.endKey);
55443
55482
  const keyValuePairs = this.getKeyValuePairs(request.headerHash, request.startKey, request.endKey);
55444
- ce_129_state_request_logger.info(`[${sender.streamId}][server]: <-- responding with boundary nodes and key value pairs.`);
55483
+ ce_129_state_request_logger.info `[${sender.streamId}][server]: <-- responding with boundary nodes and key value pairs.`;
55445
55484
  sender.bufferAndSend(encoder_Encoder.encodeObject(descriptors_codec.sequenceVarLen(trieNodeCodec), boundaryNodes));
55446
55485
  sender.bufferAndSend(encoder_Encoder.encodeObject(StateResponse.Codec, StateResponse.create({ keyValuePairs })));
55447
55486
  sender.close();
@@ -55449,11 +55488,11 @@ class ce_129_state_request_Handler {
55449
55488
  }
55450
55489
  if (!this.boundaryNodes.has(sender.streamId)) {
55451
55490
  this.boundaryNodes.set(sender.streamId, decoder_Decoder.decodeObject(descriptors_codec.sequenceVarLen(trieNodeCodec), message));
55452
- ce_129_state_request_logger.info(`[${sender.streamId}][client]: Received boundary nodes.`);
55491
+ ce_129_state_request_logger.info `[${sender.streamId}][client]: Received boundary nodes.`;
55453
55492
  return;
55454
55493
  }
55455
55494
  this.onResponse.get(sender.streamId)?.(decoder_Decoder.decodeObject(StateResponse.Codec, message));
55456
- ce_129_state_request_logger.info(`[${sender.streamId}][client]: Received state values.`);
55495
+ ce_129_state_request_logger.info `[${sender.streamId}][client]: Received state values.`;
55457
55496
  }
55458
55497
  onClose(streamId) {
55459
55498
  this.boundaryNodes.delete(streamId);
@@ -55510,7 +55549,7 @@ class ce_131_ce_132_safrole_ticket_distribution_ServerHandler {
55510
55549
  }
55511
55550
  onStreamMessage(sender, message) {
55512
55551
  const ticketDistribution = Decoder.decodeObject(TicketDistributionRequest.Codec, message);
55513
- ce_131_ce_132_safrole_ticket_distribution_logger.log(`[${sender.streamId}][ce-${this.kind}] Received ticket for epoch ${ticketDistribution.epochIndex}`);
55552
+ ce_131_ce_132_safrole_ticket_distribution_logger.log `[${sender.streamId}][ce-${this.kind}] Received ticket for epoch ${ticketDistribution.epochIndex}`;
55514
55553
  this.onTicketReceived(ticketDistribution.epochIndex, ticketDistribution.ticket);
55515
55554
  sender.close();
55516
55555
  }
@@ -55522,7 +55561,7 @@ class ce_131_ce_132_safrole_ticket_distribution_ClientHandler {
55522
55561
  this.kind = kind;
55523
55562
  }
55524
55563
  onStreamMessage(sender) {
55525
- ce_131_ce_132_safrole_ticket_distribution_logger.warn(`[${sender.streamId}][ce-${this.kind}] Unexpected message received. Closing.`);
55564
+ ce_131_ce_132_safrole_ticket_distribution_logger.warn `[${sender.streamId}][ce-${this.kind}] Unexpected message received. Closing.`;
55526
55565
  sender.close();
55527
55566
  }
55528
55567
  onClose() { }
@@ -55595,15 +55634,15 @@ class ce_133_work_package_submission_ServerHandler {
55595
55634
  class ce_133_work_package_submission_ClientHandler {
55596
55635
  kind = ce_133_work_package_submission_STREAM_KIND;
55597
55636
  onStreamMessage(sender) {
55598
- ce_133_work_package_submission_logger.warn(`[${sender.streamId}] Got unexpected message on CE-133 stream. Closing.`);
55637
+ ce_133_work_package_submission_logger.warn `[${sender.streamId}] Got unexpected message on CE-133 stream. Closing.`;
55599
55638
  sender.close();
55600
55639
  }
55601
55640
  onClose() { }
55602
55641
  sendWorkPackage(sender, coreIndex, workPackage, extrinsic) {
55603
55642
  const corePack = CoreWorkPackage.create({ coreIndex, workPackage });
55604
- ce_133_work_package_submission_logger.trace(`[${sender.streamId}] Sending work package: ${corePack}`);
55643
+ ce_133_work_package_submission_logger.trace `[${sender.streamId}] Sending work package: ${corePack}`;
55605
55644
  sender.bufferAndSend(Encoder.encodeObject(CoreWorkPackage.Codec, corePack));
55606
- ce_133_work_package_submission_logger.trace(`[${sender.streamId}] Sending extrinsics: ${workPackage.items}`);
55645
+ ce_133_work_package_submission_logger.trace `[${sender.streamId}] Sending extrinsics: ${workPackage.items}`;
55607
55646
  sender.bufferAndSend(Encoder.encodeObject(workItemExtrinsicsCodec(workPackage.items), extrinsic));
55608
55647
  // now close the connection
55609
55648
  sender.close();
@@ -55679,7 +55718,7 @@ class ce_134_work_package_sharing_ServerHandler {
55679
55718
  ce_134_work_package_sharing_ServerHandler.sendWorkReport(sender, workReportHash, signature);
55680
55719
  })
55681
55720
  .catch((error) => {
55682
- ce_134_work_package_sharing_logger.error(`[${streamId}] Error processing work package: ${error}`);
55721
+ ce_134_work_package_sharing_logger.error `[${streamId}] Error processing work package: ${error}`;
55683
55722
  this.onClose(streamId);
55684
55723
  });
55685
55724
  }
@@ -55696,7 +55735,7 @@ class ce_134_work_package_sharing_ClientHandler {
55696
55735
  throw new Error("Unexpected message received.");
55697
55736
  }
55698
55737
  const response = Decoder.decodeObject(WorkPackageSharingResponse.Codec, message);
55699
- ce_134_work_package_sharing_logger.info(`[${sender.streamId}] Received work report hash and signature.`);
55738
+ ce_134_work_package_sharing_logger.info `[${sender.streamId}] Received work report hash and signature.`;
55700
55739
  pendingRequest.resolve({ workReportHash: response.workReportHash, signature: response.signature });
55701
55740
  sender.close();
55702
55741
  }
@@ -55709,9 +55748,9 @@ class ce_134_work_package_sharing_ClientHandler {
55709
55748
  }
55710
55749
  async sendWorkPackage(sender, coreIndex, segmentsRootMappings, workPackageBundle) {
55711
55750
  const request = WorkPackageSharingRequest.create({ coreIndex, segmentsRootMappings });
55712
- ce_134_work_package_sharing_logger.trace(`[${sender.streamId}] Sending core index and segments-root mappings.`);
55751
+ ce_134_work_package_sharing_logger.trace `[${sender.streamId}] Sending core index and segments-root mappings.`;
55713
55752
  sender.bufferAndSend(Encoder.encodeObject(WorkPackageSharingRequest.Codec, request));
55714
- ce_134_work_package_sharing_logger.trace(`[${sender.streamId}] Sending work package bundle.`);
55753
+ ce_134_work_package_sharing_logger.trace `[${sender.streamId}] Sending work package bundle.`;
55715
55754
  sender.bufferAndSend(Encoder.encodeObject(WorkPackageBundleCodec, workPackageBundle));
55716
55755
  return new Promise((resolve, reject) => {
55717
55756
  this.pendingRequests.set(sender.streamId, { resolve, reject });
@@ -55771,7 +55810,7 @@ class ce_135_work_report_distribution_ServerHandler {
55771
55810
  }
55772
55811
  onStreamMessage(sender, message) {
55773
55812
  const guaranteedWorkReport = Decoder.decodeObject(GuaranteedWorkReport.Codec, message, this.chainSpec);
55774
- ce_135_work_report_distribution_logger.log(`[${sender.streamId}] Received guaranteed work report.`);
55813
+ ce_135_work_report_distribution_logger.log `[${sender.streamId}] Received guaranteed work report.`;
55775
55814
  this.onWorkReport(guaranteedWorkReport);
55776
55815
  sender.close();
55777
55816
  }
@@ -55784,12 +55823,12 @@ class ce_135_work_report_distribution_ClientHandler {
55784
55823
  this.chainSpec = chainSpec;
55785
55824
  }
55786
55825
  onStreamMessage(sender) {
55787
- ce_135_work_report_distribution_logger.warn(`[${sender.streamId}] Got unexpected message on CE-135 stream. Closing.`);
55826
+ ce_135_work_report_distribution_logger.warn `[${sender.streamId}] Got unexpected message on CE-135 stream. Closing.`;
55788
55827
  sender.close();
55789
55828
  }
55790
55829
  onClose() { }
55791
55830
  sendWorkReport(sender, workReport) {
55792
- ce_135_work_report_distribution_logger.trace(`[${sender.streamId}] Sending guaranteed work report.`);
55831
+ ce_135_work_report_distribution_logger.trace `[${sender.streamId}] Sending guaranteed work report.`;
55793
55832
  sender.bufferAndSend(Encoder.encodeObject(GuaranteedWorkReport.Codec, workReport, this.chainSpec));
55794
55833
  sender.close();
55795
55834
  }
@@ -55895,7 +55934,7 @@ class up_0_block_announcement_Handler {
55895
55934
  this.handshakes.set(streamId, handshake);
55896
55935
  // we didn't initiate this handshake, so let's respond
55897
55936
  if (!this.pendingHandshakes.delete(streamId)) {
55898
- up_0_block_announcement_logger.log(`[${streamId}] <-- responding with a handshake.`);
55937
+ up_0_block_announcement_logger.log `[${streamId}] <-- responding with a handshake.`;
55899
55938
  sender.bufferAndSend(encoder_Encoder.encodeObject(Handshake.Codec, this.getHandshake()));
55900
55939
  }
55901
55940
  this.onHandshake(streamId, handshake);
@@ -55903,7 +55942,7 @@ class up_0_block_announcement_Handler {
55903
55942
  }
55904
55943
  // it's just an announcement
55905
55944
  const annoucement = decoder_Decoder.decodeObject(Announcement.Codec, message, this.spec);
55906
- up_0_block_announcement_logger.log(`[${streamId}] --> got blocks announcement: ${annoucement.final}`);
55945
+ up_0_block_announcement_logger.log `[${streamId}] --> got blocks announcement: ${annoucement.final}`;
55907
55946
  this.onAnnouncement(streamId, annoucement);
55908
55947
  }
55909
55948
  onClose(streamId) {
@@ -55916,7 +55955,7 @@ class up_0_block_announcement_Handler {
55916
55955
  return;
55917
55956
  }
55918
55957
  const handshake = this.getHandshake();
55919
- up_0_block_announcement_logger.trace(`[${streamId}] <-- sending handshake`);
55958
+ up_0_block_announcement_logger.trace `[${streamId}] <-- sending handshake`;
55920
55959
  this.pendingHandshakes.set(sender.streamId, true);
55921
55960
  sender.bufferAndSend(encoder_Encoder.encodeObject(Handshake.Codec, handshake));
55922
55961
  }
@@ -55924,11 +55963,11 @@ class up_0_block_announcement_Handler {
55924
55963
  const { streamId } = sender;
55925
55964
  // only send announcement if we've handshaken
55926
55965
  if (this.handshakes.has(streamId)) {
55927
- up_0_block_announcement_logger.trace(`[${streamId}] <-- sending block announcement: ${annoucement.final}`);
55966
+ up_0_block_announcement_logger.trace `[${streamId}] <-- sending block announcement: ${annoucement.final}`;
55928
55967
  sender.bufferAndSend(encoder_Encoder.encodeObject(Announcement.Codec, annoucement, this.spec));
55929
55968
  }
55930
55969
  else {
55931
- up_0_block_announcement_logger.warn(`[${streamId}] <-- no handshake yet, skipping announcement.`);
55970
+ up_0_block_announcement_logger.warn `[${streamId}] <-- no handshake yet, skipping announcement.`;
55932
55971
  }
55933
55972
  }
55934
55973
  }
@@ -56045,7 +56084,7 @@ class SyncTask {
56045
56084
  onUp0Annoucement(peer, announcement) {
56046
56085
  const { hash, slot } = announcement.final;
56047
56086
  const bestHeader = hashHeader(announcement.header, this.spec);
56048
- sync_logger.info(`[${peer.id}] --> Received new header #${announcement.header.timeSlotIndex}: ${bestHeader.hash}`);
56087
+ sync_logger.info `[${peer.id}] --> Received new header #${announcement.header.timeSlotIndex}: ${bestHeader.hash}`;
56049
56088
  // NOTE [ToDr] Instead of having `Connections` store aux data perhaps
56050
56089
  // we should maintain that directly? However that would require
56051
56090
  // listening to peers connected/disconnected to perfrom some cleanups
@@ -56120,7 +56159,7 @@ class SyncTask {
56120
56159
  const peers = this.connections.getConnectedPeers();
56121
56160
  for (const peerInfo of peers) {
56122
56161
  this.streamManager.withStreamOfKind(peerInfo.peerId, up_0_block_announcement_STREAM_KIND, (handler, sender) => {
56123
- sync_logger.log(`[${peerInfo.peerId}] <-- Broadcasting new header #${slot}: ${header.hash}`);
56162
+ sync_logger.log `[${peerInfo.peerId}] <-- Broadcasting new header #${slot}: ${header.hash}`;
56124
56163
  handler.sendAnnouncement(sender, annoucement);
56125
56164
  return result_OK;
56126
56165
  });
@@ -56134,13 +56173,13 @@ class SyncTask {
56134
56173
  }
56135
56174
  if (res.error === BlockSequenceError.BlockOnFork) {
56136
56175
  // seems that peer is requesting syncing a fork from us, let's bail.
56137
- sync_logger.warn(`[${peer.id}] <-- Invalid block sequence request: ${startHash} is on a fork.`);
56176
+ sync_logger.warn `[${peer.id}] --> Invalid block sequence request: ${startHash} is on a fork.`;
56138
56177
  return [];
56139
56178
  }
56140
56179
  if (res.error === BlockSequenceError.NoStartBlock) {
56141
56180
  // we don't know about that block at all, so let's just bail.
56142
56181
  // we should probably penalize the peer for sending BS?
56143
- sync_logger.warn(`[${peer.id}] <-- Invalid block sequence request: ${startHash} missing header or extrinsic.`);
56182
+ sync_logger.warn `[${peer.id}] --> Invalid block sequence request: ${startHash} missing header or extrinsic.`;
56144
56183
  return [];
56145
56184
  }
56146
56185
  debug_assertNever(res.error);
@@ -56160,10 +56199,10 @@ class SyncTask {
56160
56199
  // figure out where others are at
56161
56200
  const othersBest = this.othersBest;
56162
56201
  const blocksToSync = othersBest.slot - ourBestSlot;
56163
- sync_logger.trace(`Our best. ${ourBestSlot}. Best seen: ${othersBest.slot}`);
56202
+ sync_logger.trace `Our best. ${ourBestSlot}. Best seen: ${othersBest.slot}`;
56164
56203
  if (blocksToSync < 1) {
56165
56204
  this.connections.getPeerCount();
56166
- sync_logger.trace(`No new blocks. ${peerCount} peers.`);
56205
+ sync_logger.trace `No new blocks. ${peerCount} peers.`;
56167
56206
  return {
56168
56207
  kind: SyncResult.NoNewBlocks,
56169
56208
  ours: ourBestSlot,
@@ -56171,7 +56210,7 @@ class SyncTask {
56171
56210
  };
56172
56211
  }
56173
56212
  const requested = [];
56174
- sync_logger.log(`Sync ${blocksToSync} blocks from ${peerCount} peers.`);
56213
+ sync_logger.log `Sync ${blocksToSync} blocks from ${peerCount} peers.`;
56175
56214
  // NOTE [ToDr] We might be requesting the same blocks from many peers
56176
56215
  // which isn't very optimal, but for now: 🤷
56177
56216
  //
@@ -56197,12 +56236,12 @@ class SyncTask {
56197
56236
  // request as much blocks from that peer as possible.
56198
56237
  this.streamManager.withNewStream(peerInfo.peerRef, STREAM_KIND, (handler, sender) => {
56199
56238
  handleAsyncErrors(async () => {
56200
- sync_logger.log(`Fetching blocks from ${peerInfo.peerId}.`);
56239
+ sync_logger.log `[${peerInfo.peerId}] <-- Fetching ${bestSlot - ourBestSlot} blocks (${bestHash})`;
56201
56240
  const blocks = await handler.requestBlockSequence(sender, bestHash, Direction.DescIncl, numbers_tryAsU32(bestSlot - ourBestSlot));
56202
56241
  blocks.reverse();
56203
56242
  this.onNewBlocks(blocks, peerInfo.peerId);
56204
56243
  }, (e) => {
56205
- sync_logger.warn(`[${peerInfo.peerId}] --> requesting blocks to import: ${e}`);
56244
+ sync_logger.warn `[${peerInfo.peerId}] <-- requesting blocks to import: ${e}`;
56206
56245
  });
56207
56246
  return result_OK;
56208
56247
  });
@@ -56276,7 +56315,7 @@ function setupPeerListeners(syncTask, network, streamManager) {
56276
56315
  // whenever the peer wants to open a stream with us, let's handle that.
56277
56316
  peer.addOnIncomingStream((stream) => {
56278
56317
  handleAsyncErrors(() => streamManager.onIncomingStream(peer, stream), (e) => {
56279
- network_logger.error(`[${peer.id}:${stream.streamId}]🚰 Stream error: ${e}. Disconnecting peer.`);
56318
+ network_logger.error `[${peer.id}:${stream.streamId}]🚰 Stream error: ${e}. Disconnecting peer.`;
56280
56319
  peer.disconnect();
56281
56320
  });
56282
56321
  return result_OK;
@@ -56526,10 +56565,10 @@ class FuzzTarget {
56526
56565
  async onSocketMessage(msg) {
56527
56566
  // attempt to decode the messsage
56528
56567
  const message = decoder_Decoder.decodeObject(messageCodec, msg, this.spec);
56529
- handler_logger.log(`[${message.type}] incoming message`);
56568
+ handler_logger.log `[${message.type}] incoming message`;
56530
56569
  await processAndRespond(this.spec, message, this.msgHandler, this.sender).catch((e) => {
56531
- handler_logger.error(`Error while processing fuzz v0 message: ${e}`);
56532
- handler_logger.error(e);
56570
+ handler_logger.error `Error while processing fuzz v0 message: ${e}`;
56571
+ handler_logger.error `${e}`;
56533
56572
  this.sender.close();
56534
56573
  });
56535
56574
  return;
@@ -56570,17 +56609,17 @@ class FuzzTarget {
56570
56609
  break;
56571
56610
  }
56572
56611
  case MessageType.State: {
56573
- handler_logger.log(`--> Received unexpected 'State' message from the fuzzer. Closing.`);
56612
+ handler_logger.log `--> Received unexpected 'State' message from the fuzzer. Closing.`;
56574
56613
  sender.close();
56575
56614
  return;
56576
56615
  }
56577
56616
  case MessageType.StateRoot: {
56578
- handler_logger.log(`--> Received unexpected 'StateRoot' message from the fuzzer. Closing.`);
56617
+ handler_logger.log `--> Received unexpected 'StateRoot' message from the fuzzer. Closing.`;
56579
56618
  sender.close();
56580
56619
  return;
56581
56620
  }
56582
56621
  default: {
56583
- handler_logger.log(`--> Received unexpected message type ${JSON.stringify(message)} from the fuzzer. Closing.`);
56622
+ handler_logger.log `--> Received unexpected message type ${JSON.stringify(message)} from the fuzzer. Closing.`;
56584
56623
  sender.close();
56585
56624
  try {
56586
56625
  debug_assertNever(message);
@@ -56591,17 +56630,17 @@ class FuzzTarget {
56591
56630
  }
56592
56631
  }
56593
56632
  if (response !== null) {
56594
- handler_logger.trace(`<-- responding with: ${response.type}`);
56633
+ handler_logger.trace `<-- responding with: ${response.type}`;
56595
56634
  const encoded = encoder_Encoder.encodeObject(messageCodec, response, spec);
56596
56635
  sender.send(encoded);
56597
56636
  }
56598
56637
  else {
56599
- handler_logger.warn(`<-- no response generated for: ${message.type}`);
56638
+ handler_logger.warn `<-- no response generated for: ${message.type}`;
56600
56639
  }
56601
56640
  }
56602
56641
  }
56603
56642
  onClose({ error }) {
56604
- handler_logger.log(`Closing the handler. Reason: ${error !== undefined ? error.message : "close"}.`);
56643
+ handler_logger.log `Closing the handler. Reason: ${error !== undefined ? error.message : "close"}.`;
56605
56644
  }
56606
56645
  }
56607
56646
 
@@ -56855,14 +56894,14 @@ class handler_FuzzTarget {
56855
56894
  // attempt to decode the messsage
56856
56895
  try {
56857
56896
  const message = decoder_Decoder.decodeObject(types_messageCodec, msg, this.spec);
56858
- v1_handler_logger.log(`[${message.type}] incoming message`);
56897
+ v1_handler_logger.log `[${message.type}] incoming message`;
56859
56898
  await this.processAndRespond(message);
56860
56899
  }
56861
56900
  catch (e) {
56862
- v1_handler_logger.error(`Error while processing fuzz v1 message: ${e}`);
56863
- v1_handler_logger.error(`${e}`);
56901
+ v1_handler_logger.error `Error while processing fuzz v1 message: ${e}`;
56902
+ v1_handler_logger.error `${e}`;
56864
56903
  if (e instanceof Error) {
56865
- v1_handler_logger.error(e.stack ?? "");
56904
+ v1_handler_logger.error `${e.stack ?? ""}`;
56866
56905
  }
56867
56906
  this.sender.close();
56868
56907
  }
@@ -56873,7 +56912,7 @@ class handler_FuzzTarget {
56873
56912
  case types_MessageType.PeerInfo: {
56874
56913
  // only support V1
56875
56914
  if (message.value.fuzzVersion !== 1) {
56876
- v1_handler_logger.warn(`Unsupported fuzzer protocol version: ${message.value.fuzzVersion}. Closing`);
56915
+ v1_handler_logger.warn `Unsupported fuzzer protocol version: ${message.value.fuzzVersion}. Closing`;
56877
56916
  this.sender.close();
56878
56917
  return;
56879
56918
  }
@@ -56881,9 +56920,9 @@ class handler_FuzzTarget {
56881
56920
  const ourPeerInfo = await this.msgHandler.getPeerInfo(message.value);
56882
56921
  // Calculate session features (intersection of both peer features)
56883
56922
  this.sessionFeatures = message.value.features & ourPeerInfo.features;
56884
- v1_handler_logger.info(`Handshake completed. Shared features: 0b${this.sessionFeatures.toString(2)}`);
56885
- v1_handler_logger.log(`Feature ancestry: ${(this.sessionFeatures & Features.Ancestry) !== 0}`);
56886
- v1_handler_logger.log(`Feature fork: ${(this.sessionFeatures & Features.Fork) !== 0}`);
56923
+ v1_handler_logger.info `Handshake completed. Shared features: 0b${this.sessionFeatures.toString(2)}`;
56924
+ v1_handler_logger.log `Feature ancestry: ${(this.sessionFeatures & Features.Ancestry) !== 0}`;
56925
+ v1_handler_logger.log `Feature fork: ${(this.sessionFeatures & Features.Fork) !== 0}`;
56887
56926
  response = {
56888
56927
  type: types_MessageType.PeerInfo,
56889
56928
  value: ourPeerInfo,
@@ -56923,22 +56962,22 @@ class handler_FuzzTarget {
56923
56962
  break;
56924
56963
  }
56925
56964
  case types_MessageType.StateRoot: {
56926
- v1_handler_logger.log(`--> Received unexpected 'StateRoot' message from the fuzzer. Closing.`);
56965
+ v1_handler_logger.log `--> Received unexpected 'StateRoot' message from the fuzzer. Closing.`;
56927
56966
  this.sender.close();
56928
56967
  return;
56929
56968
  }
56930
56969
  case types_MessageType.State: {
56931
- v1_handler_logger.log(`--> Received unexpected 'State' message from the fuzzer. Closing.`);
56970
+ v1_handler_logger.log `--> Received unexpected 'State' message from the fuzzer. Closing.`;
56932
56971
  this.sender.close();
56933
56972
  return;
56934
56973
  }
56935
56974
  case types_MessageType.Error: {
56936
- v1_handler_logger.log(`--> Received unexpected 'Error' message from the fuzzer. Closing.`);
56975
+ v1_handler_logger.log `--> Received unexpected 'Error' message from the fuzzer. Closing.`;
56937
56976
  this.sender.close();
56938
56977
  return;
56939
56978
  }
56940
56979
  default: {
56941
- v1_handler_logger.log(`--> Received unexpected message type ${JSON.stringify(message)} from the fuzzer. Closing.`);
56980
+ v1_handler_logger.log `--> Received unexpected message type ${JSON.stringify(message)} from the fuzzer. Closing.`;
56942
56981
  this.sender.close();
56943
56982
  try {
56944
56983
  debug_assertNever(message);
@@ -56949,16 +56988,16 @@ class handler_FuzzTarget {
56949
56988
  }
56950
56989
  }
56951
56990
  if (response !== null) {
56952
- v1_handler_logger.trace(`<-- responding with: ${response.type}`);
56991
+ v1_handler_logger.trace `<-- responding with: ${response.type}`;
56953
56992
  const encoded = encoder_Encoder.encodeObject(types_messageCodec, response, this.spec);
56954
56993
  this.sender.send(encoded);
56955
56994
  }
56956
56995
  else {
56957
- v1_handler_logger.warn(`<-- no response generated for: ${message.type}`);
56996
+ v1_handler_logger.warn `<-- no response generated for: ${message.type}`;
56958
56997
  }
56959
56998
  }
56960
56999
  onClose({ error }) {
56961
- v1_handler_logger.log(`Closing the v1 handler. Reason: ${error !== undefined ? error.message : "close"}.`);
57000
+ v1_handler_logger.log `Closing the v1 handler. Reason: ${error !== undefined ? error.message : "close"}.`;
56962
57001
  }
56963
57002
  /** Check if a specific feature is enabled in the session */
56964
57003
  hasFeature(feature) {
@@ -57004,7 +57043,7 @@ function startIpcServer(name, newMessageHandler) {
57004
57043
  const logger = Logger.new(import.meta.filename, "ext-ipc");
57005
57044
  // Create the IPC server
57006
57045
  const server = (0,external_node_net_namespaceObject.createServer)((socket) => {
57007
- logger.log("Client connected");
57046
+ logger.log `Client connected`;
57008
57047
  const messageHandler = newMessageHandler(new IpcSender(socket));
57009
57048
  // Handle incoming data from the client
57010
57049
  socket.on("data", handleMessageFragmentation(async (data) => {
@@ -57016,23 +57055,23 @@ function startIpcServer(name, newMessageHandler) {
57016
57055
  await messageHandler.onSocketMessage(data);
57017
57056
  }
57018
57057
  catch (e) {
57019
- logger.error(`Received invalid data on socket: ${e}. Closing connection.`);
57058
+ logger.error `Received invalid data on socket: ${e}. Closing connection.`;
57020
57059
  socket.end();
57021
57060
  }
57022
57061
  finally {
57023
57062
  socket.resume();
57024
57063
  }
57025
57064
  }, () => {
57026
- logger.error("Received too much data on socket. Closing connection.");
57065
+ logger.error `Received too much data on socket. Closing connection.`;
57027
57066
  socket.end();
57028
57067
  }));
57029
57068
  // Handle client disconnection
57030
57069
  socket.on("end", () => {
57031
- logger.log("Client disconnected");
57070
+ logger.log `Client disconnected`;
57032
57071
  messageHandler.onClose({});
57033
57072
  });
57034
57073
  socket.on("error", (error) => {
57035
- logger.error(`Socket error: ${error}`);
57074
+ logger.error `Socket error: ${error}`;
57036
57075
  messageHandler.onClose({ error });
57037
57076
  socket.end();
57038
57077
  });
@@ -57047,14 +57086,14 @@ function startIpcServer(name, newMessageHandler) {
57047
57086
  path: socketPath,
57048
57087
  signal: controller.signal,
57049
57088
  }, () => {
57050
- logger.log(`IPC server is listening at ${socketPath}`);
57089
+ logger.log `IPC server is listening at ${socketPath}`;
57051
57090
  });
57052
57091
  // Handle server errors
57053
57092
  server.on("error", (err) => {
57054
57093
  throw err;
57055
57094
  });
57056
57095
  return () => {
57057
- logger.info("Closing IPC server.");
57096
+ logger.info `Closing IPC server.`;
57058
57097
  // stop accepting new connections
57059
57098
  server.close();
57060
57099
  // abort the server
@@ -57199,7 +57238,7 @@ class JamnpIpcHandler {
57199
57238
  // decode the message as `StreamEnvelope`
57200
57239
  const envelope = decoder_Decoder.decodeObject(StreamEnvelope.Codec, msg);
57201
57240
  const streamId = envelope.streamId;
57202
- jamnp_handler_logger.log(`[${streamId}] incoming message: ${envelope.type} ${envelope.data}`);
57241
+ jamnp_handler_logger.log `[${streamId}] incoming message: ${envelope.type} ${envelope.data}`;
57203
57242
  // check if this is a already known stream id
57204
57243
  const streamHandler = this.streams.get(streamId);
57205
57244
  const streamSender = new EnvelopeSender(streamId, this.sender);
@@ -57207,13 +57246,13 @@ class JamnpIpcHandler {
57207
57246
  if (streamHandler === undefined) {
57208
57247
  // closing or message of unknown stream - ignore.
57209
57248
  if (envelope.type !== StreamEnvelopeType.Open) {
57210
- jamnp_handler_logger.warn(`[${streamId}] (unknown) got invalid type ${envelope.type}.`);
57249
+ jamnp_handler_logger.warn `[${streamId}] (unknown) got invalid type ${envelope.type}.`;
57211
57250
  return;
57212
57251
  }
57213
57252
  const newStream = decoder_Decoder.decodeObject(NewStream.Codec, envelope.data);
57214
57253
  const handler = this.streamHandlers.get(newStream.streamByte);
57215
57254
  if (handler !== undefined) {
57216
- jamnp_handler_logger.log(`[${streamId}] new stream for ${handler.kind}`);
57255
+ jamnp_handler_logger.log `[${streamId}] new stream for ${handler.kind}`;
57217
57256
  // insert the stream
57218
57257
  this.streams.set(streamId, handler);
57219
57258
  // Just send back the same stream byte.
@@ -57234,7 +57273,7 @@ class JamnpIpcHandler {
57234
57273
  if (envelope.type !== StreamEnvelopeType.Msg) {
57235
57274
  // display a warning but only if the stream was not pending for confirmation.
57236
57275
  if (!this.pendingStreams.delete(streamId)) {
57237
- jamnp_handler_logger.warn(`[${streamId}] got invalid type ${envelope.type}.`);
57276
+ jamnp_handler_logger.warn `[${streamId}] got invalid type ${envelope.type}.`;
57238
57277
  }
57239
57278
  return;
57240
57279
  }
@@ -57243,7 +57282,7 @@ class JamnpIpcHandler {
57243
57282
  }
57244
57283
  /** Notify about termination of the underlying socket. */
57245
57284
  onClose({ error }) {
57246
- jamnp_handler_logger.log(`Closing the handler. Reason: ${error !== undefined ? error.message : "close"}.`);
57285
+ jamnp_handler_logger.log `Closing the handler. Reason: ${error !== undefined ? error.message : "close"}.`;
57247
57286
  // Socket closed - we should probably clear everything.
57248
57287
  for (const [streamId, handler] of this.streams.entries()) {
57249
57288
  handler.onClose(streamId, error === undefined);
@@ -57260,7 +57299,7 @@ class JamnpIpcHandler {
57260
57299
  }
57261
57300
  /** Wait for the handler to be finished either via close or error. */
57262
57301
  waitForEnd() {
57263
- jamnp_handler_logger.log("Waiting for the handler to be closed.");
57302
+ jamnp_handler_logger.log `Waiting for the handler to be closed.`;
57264
57303
  return this.onEnd.listen;
57265
57304
  }
57266
57305
  }
@@ -57389,7 +57428,7 @@ class FuzzHandler {
57389
57428
  async getSerializedState(value) {
57390
57429
  const state = await this.api.getPostSerializedState(value);
57391
57430
  if (state === null) {
57392
- ipc_logger.warn(`Fuzzer requested non-existing state for: ${value}`);
57431
+ ipc_logger.warn `Fuzzer requested non-existing state for: ${value}`;
57393
57432
  return [];
57394
57433
  }
57395
57434
  return Array.from(state).map(([key, value]) => {
@@ -57415,7 +57454,7 @@ class FuzzHandler {
57415
57454
  if (res.isOk) {
57416
57455
  return res;
57417
57456
  }
57418
- ipc_logger.log(`Rejecting block with error: ${res.error}. ${res.details}`);
57457
+ ipc_logger.log `Rejecting block with error: ${res.error}. ${res.details}`;
57419
57458
  return result_Result.error(ErrorMessage.create({ message: res.error }));
57420
57459
  }
57421
57460
  async importBlockV0(value) {
@@ -57423,11 +57462,11 @@ class FuzzHandler {
57423
57462
  if (res.isOk) {
57424
57463
  return res.ok;
57425
57464
  }
57426
- ipc_logger.warn(`Fuzzer sent incorrect block with error ${res.error}. ${res.details}`);
57465
+ ipc_logger.warn `Fuzzer sent incorrect block with error ${res.error}. ${res.details}`;
57427
57466
  return this.api.getBestStateRootHash();
57428
57467
  }
57429
57468
  async getPeerInfo(value) {
57430
- ipc_logger.info(`Fuzzer ${value} connected.`);
57469
+ ipc_logger.info `Fuzzer ${value} connected.`;
57431
57470
  return types_PeerInfo.create({
57432
57471
  name: this.api.nodeName,
57433
57472
  appVersion: this.api.nodeVersion,
@@ -57438,7 +57477,7 @@ class FuzzHandler {
57438
57477
  });
57439
57478
  }
57440
57479
  async getPeerInfoV0(value) {
57441
- ipc_logger.info(`Fuzzer ${value} connected.`);
57480
+ ipc_logger.info `Fuzzer ${value} connected.`;
57442
57481
  return PeerInfo.create({
57443
57482
  name: this.api.nodeName,
57444
57483
  appVersion: this.api.nodeVersion,
@@ -57471,7 +57510,7 @@ if (!external_node_worker_threads_namespaceObject.isMainThread) {
57471
57510
  Logger.configureAll(process.env.JAM_LOG ?? "", Level.LOG);
57472
57511
  const machine = networkStateMachine();
57473
57512
  const channel = MessageChannelStateMachine.receiveChannel(machine, external_node_worker_threads_namespaceObject.parentPort);
57474
- channel.then((channel) => jam_network_main(channel)).catch((e) => jam_network_logger.error(e));
57513
+ channel.then((channel) => jam_network_main(channel)).catch((e) => jam_network_logger.error `${e}`);
57475
57514
  }
57476
57515
  /**
57477
57516
  * JAM networking worker.
@@ -57482,7 +57521,7 @@ if (!external_node_worker_threads_namespaceObject.isMainThread) {
57482
57521
  */
57483
57522
  async function jam_network_main(channel) {
57484
57523
  await initAll();
57485
- jam_network_logger.trace(`🛜 Network starting ${channel.currentState()}`);
57524
+ jam_network_logger.trace `🛜 Network starting ${channel.currentState()}`;
57486
57525
  // Await the configuration object
57487
57526
  // TODO [ToDr] The whole state machine needs to die.
57488
57527
  const ready = channel.currentState().stateName !== "ready(network)"
@@ -57493,7 +57532,7 @@ async function jam_network_main(channel) {
57493
57532
  const key = await ed25519_privateKey(config.key);
57494
57533
  const lmdb = new LmdbRoot(config.genericConfig.dbPath);
57495
57534
  const blocks = new LmdbBlocks(config.genericConfig.chainSpec, lmdb);
57496
- jam_network_logger.info(`🛜 Listening at ${config.host}:${config.port}`);
57535
+ jam_network_logger.info `🛜 Listening at ${config.host}:${config.port}`;
57497
57536
  const network = await setup({
57498
57537
  host: config.host,
57499
57538
  port: config.port,
@@ -57506,7 +57545,7 @@ async function jam_network_main(channel) {
57506
57545
  ready.waitForState("finished").then(() => network.network.stop());
57507
57546
  await network.network.start();
57508
57547
  });
57509
- jam_network_logger.info("🛜 Network worker finished. Closing channel.");
57548
+ jam_network_logger.info `🛜 Network worker finished. Closing channel.`;
57510
57549
  // Close the comms to gracefuly close the app.
57511
57550
  finished.currentState().close(channel);
57512
57551
  }
@@ -57552,8 +57591,8 @@ async function main_main(config, withRelPath) {
57552
57591
  throw new Error("The main binary cannot be running as a Worker!");
57553
57592
  }
57554
57593
  await initAll();
57555
- common_logger.info(`🫐 Typeberry ${package_namespaceObject.rE}. GP: ${CURRENT_VERSION} (${CURRENT_SUITE})`);
57556
- common_logger.info(`🎸 Starting node: ${config.nodeName}.`);
57594
+ common_logger.info `🫐 Typeberry ${package_namespaceObject.rE}. GP: ${CURRENT_VERSION} (${CURRENT_SUITE})`;
57595
+ common_logger.info `🎸 Starting node: ${config.nodeName}.`;
57557
57596
  const chainSpec = getChainSpec(config.node.flavor);
57558
57597
  const { rootDb, dbPath, genesisHeaderHash } = openDatabase(config.nodeName, config.node.chainSpec.genesisHeader, withRelPath(config.node.databaseBasePath));
57559
57598
  // Initialize the database with genesis state and block if there isn't one.
@@ -57596,30 +57635,30 @@ async function main_main(config, withRelPath) {
57596
57635
  return importer.finish(port);
57597
57636
  });
57598
57637
  await importerFinished.currentState().waitForWorkerToFinish();
57599
- common_logger.log("[main] ☠️ Closing the extensions");
57638
+ common_logger.log `[main] ☠️ Closing the extensions`;
57600
57639
  closeExtensions();
57601
- common_logger.log("[main] ☠️ Closing the authorship module");
57640
+ common_logger.log `[main] ☠️ Closing the authorship module`;
57602
57641
  closeAuthorship();
57603
- common_logger.log("[main] ☠️ Closing the networking module");
57642
+ common_logger.log `[main] ☠️ Closing the networking module`;
57604
57643
  closeNetwork();
57605
- common_logger.log("[main] 🛢️ Closing the database");
57644
+ common_logger.log `[main] 🛢️ Closing the database`;
57606
57645
  await rootDb.close();
57607
- common_logger.info("[main] ✅ Done.");
57646
+ common_logger.info `[main] ✅ Done.`;
57608
57647
  },
57609
57648
  };
57610
57649
  return api;
57611
57650
  }
57612
57651
  const initAuthorship = async (importerReady, isAuthoring, config) => {
57613
57652
  if (!isAuthoring) {
57614
- common_logger.log("✍️ Authorship off: disabled");
57653
+ common_logger.log `✍️ Authorship off: disabled`;
57615
57654
  return () => Promise.resolve();
57616
57655
  }
57617
- common_logger.info("✍️ Starting block generator.");
57656
+ common_logger.info `✍️ Starting block generator.`;
57618
57657
  const { generator, finish } = await startBlockGenerator(config);
57619
57658
  // relay blocks from generator to importer
57620
57659
  importerReady.doUntil("finished", async (importer, port) => {
57621
57660
  generator.currentState().onBlock.on((b) => {
57622
- common_logger.log(`✍️ Produced block. Size: [${b.length}]`);
57661
+ common_logger.log `✍️ Produced block. Size: [${b.length}]`;
57623
57662
  importer.sendBlock(port, b);
57624
57663
  });
57625
57664
  });
@@ -57627,7 +57666,7 @@ const initAuthorship = async (importerReady, isAuthoring, config) => {
57627
57666
  };
57628
57667
  const initNetwork = async (importerReady, workerConfig, genesisHeaderHash, networkConfig, bestHeader) => {
57629
57668
  if (networkConfig === null) {
57630
- common_logger.log("🛜 Networking off: no config");
57669
+ common_logger.log `🛜 Networking off: no config`;
57631
57670
  return () => Promise.resolve();
57632
57671
  }
57633
57672
  const { key, host, port, bootnodes } = networkConfig;
@@ -59577,7 +59616,7 @@ class AccumulateExternalities {
59577
59616
  /** https://graypaper.fluffylabs.dev/#/7e6ff6a/362802362d02?v=0.6.7 */
59578
59617
  const validatorsManager = this.updatedState.getPrivilegedServices().validatorsManager;
59579
59618
  if (validatorsManager !== this.currentServiceId) {
59580
- accumulate_externalities_logger.trace(`Current service id (${this.currentServiceId}) is not a validators manager. (expected: ${validatorsManager}) and cannot update validators data. Ignoring`);
59619
+ accumulate_externalities_logger.trace `Current service id (${this.currentServiceId}) is not a validators manager. (expected: ${validatorsManager}) and cannot update validators data. Ignoring`;
59581
59620
  return result_Result.error(UnprivilegedError);
59582
59621
  }
59583
59622
  this.updatedState.stateUpdate.validatorsData = validatorsData;
@@ -59592,11 +59631,11 @@ class AccumulateExternalities {
59592
59631
  // NOTE `coreIndex` is already verified in the HC, so this is infallible.
59593
59632
  const currentAuthManager = this.updatedState.getPrivilegedServices().authManager[coreIndex];
59594
59633
  if (currentAuthManager !== this.currentServiceId) {
59595
- accumulate_externalities_logger.trace(`Current service id (${this.currentServiceId}) is not an auth manager of core ${coreIndex} (expected: ${currentAuthManager}) and cannot update authorization queue. Ignoring`);
59634
+ accumulate_externalities_logger.trace `Current service id (${this.currentServiceId}) is not an auth manager of core ${coreIndex} (expected: ${currentAuthManager}) and cannot update authorization queue. Ignoring`;
59596
59635
  return result_Result.error(UpdatePrivilegesError.UnprivilegedService);
59597
59636
  }
59598
59637
  if (authManager === null && Compatibility.isGreaterOrEqual(GpVersion.V0_7_1)) {
59599
- accumulate_externalities_logger.trace("The new auth manager is not a valid service id. Ignoring");
59638
+ accumulate_externalities_logger.trace `The new auth manager is not a valid service id. Ignoring`;
59600
59639
  return result_Result.error(UpdatePrivilegesError.InvalidServiceId);
59601
59640
  }
59602
59641
  this.updatedState.stateUpdate.authorizationQueues.set(coreIndex, authQueue);
@@ -60477,7 +60516,7 @@ class Assign {
60477
60516
  const memoryReadResult = memory.loadInto(res, authorizationQueueStart);
60478
60517
  // error while reading the memory.
60479
60518
  if (memoryReadResult.isError) {
60480
- logger_logger.trace("ASSIGN() <- PANIC");
60519
+ logger_logger.trace `ASSIGN() <- PANIC`;
60481
60520
  return PvmExecution.Panic;
60482
60521
  }
60483
60522
  if (maybeCoreIndex >= this.chainSpec.coresCount) {
@@ -60492,18 +60531,18 @@ class Assign {
60492
60531
  const result = this.partialState.updateAuthorizationQueue(coreIndex, fixedSizeAuthQueue, authManager);
60493
60532
  if (result.isOk) {
60494
60533
  regs.set(IN_OUT_REG, HostCallResult.OK);
60495
- logger_logger.trace(`ASSIGN(${coreIndex}, ${fixedSizeAuthQueue}) <- OK`);
60534
+ logger_logger.trace `ASSIGN(${coreIndex}, ${fixedSizeAuthQueue}) <- OK`;
60496
60535
  return;
60497
60536
  }
60498
60537
  const e = result.error;
60499
60538
  if (e === UpdatePrivilegesError.UnprivilegedService) {
60500
60539
  regs.set(IN_OUT_REG, HostCallResult.HUH);
60501
- logger_logger.trace(`ASSIGN(${coreIndex}, ${fixedSizeAuthQueue}) <- HUH`);
60540
+ logger_logger.trace `ASSIGN(${coreIndex}, ${fixedSizeAuthQueue}) <- HUH`;
60502
60541
  return;
60503
60542
  }
60504
60543
  if (e === UpdatePrivilegesError.InvalidServiceId) {
60505
60544
  regs.set(IN_OUT_REG, HostCallResult.WHO);
60506
- logger_logger.trace(`ASSIGN(${coreIndex}, ${fixedSizeAuthQueue}) <- HUH`);
60545
+ logger_logger.trace `ASSIGN(${coreIndex}, ${fixedSizeAuthQueue}) <- HUH`;
60507
60546
  return;
60508
60547
  }
60509
60548
  debug_assertNever(e);
@@ -60569,7 +60608,7 @@ class Bless {
60569
60608
  decoder.resetTo(0);
60570
60609
  const memoryReadResult = memory.loadInto(result, memIndex);
60571
60610
  if (memoryReadResult.isError) {
60572
- logger_logger.trace(`BLESS(${manager}, ${validator}) <- PANIC`);
60611
+ logger_logger.trace `BLESS(${manager}, ${validator}) <- PANIC`;
60573
60612
  return PvmExecution.Panic;
60574
60613
  }
60575
60614
  const { serviceId, gas } = decoder.object(serviceIdAndGasCodec);
@@ -60582,24 +60621,24 @@ class Bless {
60582
60621
  const authorizersDecoder = decoder_Decoder.fromBlob(res);
60583
60622
  const memoryReadResult = memory.loadInto(res, authorization);
60584
60623
  if (memoryReadResult.isError) {
60585
- logger_logger.trace(`BLESS(${manager}, ${validator}, ${autoAccumulateEntries}) <- PANIC`);
60624
+ logger_logger.trace `BLESS(${manager}, ${validator}, ${autoAccumulateEntries}) <- PANIC`;
60586
60625
  return PvmExecution.Panic;
60587
60626
  }
60588
60627
  const authorizers = tryAsPerCore(authorizersDecoder.sequenceFixLen(descriptors_codec.u32.asOpaque(), this.chainSpec.coresCount), this.chainSpec);
60589
60628
  const updateResult = this.partialState.updatePrivilegedServices(manager, authorizers, validator, autoAccumulateEntries);
60590
60629
  if (updateResult.isOk) {
60591
- logger_logger.trace(`BLESS(${manager}, ${authorizers}, ${validator}, ${autoAccumulateEntries}) <- OK`);
60630
+ logger_logger.trace `BLESS(${manager}, ${authorizers}, ${validator}, ${autoAccumulateEntries}) <- OK`;
60592
60631
  regs.set(bless_IN_OUT_REG, HostCallResult.OK);
60593
60632
  return;
60594
60633
  }
60595
60634
  const e = updateResult.error;
60596
60635
  if (e === UpdatePrivilegesError.UnprivilegedService) {
60597
- logger_logger.trace(`BLESS(${manager}, ${authorizers}, ${validator}, ${autoAccumulateEntries}) <- HUH`);
60636
+ logger_logger.trace `BLESS(${manager}, ${authorizers}, ${validator}, ${autoAccumulateEntries}) <- HUH`;
60598
60637
  regs.set(bless_IN_OUT_REG, HostCallResult.HUH);
60599
60638
  return;
60600
60639
  }
60601
60640
  if (e === UpdatePrivilegesError.InvalidServiceId) {
60602
- logger_logger.trace(`BLESS(${manager}, ${authorizers}, ${validator}, ${autoAccumulateEntries}) <- WHO`);
60641
+ logger_logger.trace `BLESS(${manager}, ${authorizers}, ${validator}, ${autoAccumulateEntries}) <- WHO`;
60603
60642
  regs.set(bless_IN_OUT_REG, HostCallResult.WHO);
60604
60643
  return;
60605
60644
  }
@@ -60629,7 +60668,7 @@ class GasHostCall {
60629
60668
  }
60630
60669
  execute(gas, regs) {
60631
60670
  const gasValue = gas.get();
60632
- logger_logger.trace(`GAS <- ${gasValue}`);
60671
+ logger_logger.trace `GAS <- ${gasValue}`;
60633
60672
  regs.set(7, numbers_tryAsU64(gasValue));
60634
60673
  return Promise.resolve(undefined);
60635
60674
  }
@@ -60661,7 +60700,7 @@ class Checkpoint {
60661
60700
  async execute(gas, regs) {
60662
60701
  await this.gasHostCall.execute(gas, regs);
60663
60702
  this.partialState.checkpoint();
60664
- logger_logger.trace("CHECKPOINT()");
60703
+ logger_logger.trace `CHECKPOINT()`;
60665
60704
  return;
60666
60705
  }
60667
60706
  }
@@ -60700,18 +60739,18 @@ class Designate {
60700
60739
  const memoryReadResult = memory.loadInto(res, validatorsStart);
60701
60740
  // error while reading the memory.
60702
60741
  if (memoryReadResult.isError) {
60703
- logger_logger.trace("DESIGNATE() <- PANIC");
60742
+ logger_logger.trace `DESIGNATE() <- PANIC`;
60704
60743
  return PvmExecution.Panic;
60705
60744
  }
60706
60745
  const decoder = decoder_Decoder.fromBlob(res);
60707
60746
  const validatorsData = decoder.sequenceFixLen(ValidatorData.Codec, this.chainSpec.validatorsCount);
60708
60747
  const result = this.partialState.updateValidatorsData(tryAsPerValidator(validatorsData, this.chainSpec));
60709
60748
  if (result.isError) {
60710
- logger_logger.trace(`DESIGNATE([${validatorsData[0]}, ${validatorsData[1]}, ...]) <- HUH`);
60749
+ logger_logger.trace `DESIGNATE([${validatorsData[0]}, ${validatorsData[1]}, ...]) <- HUH`;
60711
60750
  regs.set(designate_IN_OUT_REG, HostCallResult.HUH);
60712
60751
  }
60713
60752
  else {
60714
- logger_logger.trace(`DESIGNATE([${validatorsData[0]}, ${validatorsData[1]}, ...]) <- OK`);
60753
+ logger_logger.trace `DESIGNATE([${validatorsData[0]}, ${validatorsData[1]}, ...]) <- OK`;
60715
60754
  regs.set(designate_IN_OUT_REG, HostCallResult.OK);
60716
60755
  }
60717
60756
  }
@@ -60752,17 +60791,17 @@ class Eject {
60752
60791
  const previousCodeHash = bytes_Bytes.zero(hash_HASH_SIZE).asOpaque();
60753
60792
  const memoryReadResult = memory.loadInto(previousCodeHash.raw, preimageHashStart);
60754
60793
  if (memoryReadResult.isError) {
60755
- logger_logger.trace(`EJECT(${serviceId}) <- PANIC`);
60794
+ logger_logger.trace `EJECT(${serviceId}) <- PANIC`;
60756
60795
  return PvmExecution.Panic;
60757
60796
  }
60758
60797
  // cannot eject self
60759
60798
  if (serviceId === this.currentServiceId) {
60760
60799
  regs.set(eject_IN_OUT_REG, HostCallResult.WHO);
60761
- logger_logger.trace(`EJECT(${serviceId}, ${previousCodeHash}) <- WHO`);
60800
+ logger_logger.trace `EJECT(${serviceId}, ${previousCodeHash}) <- WHO`;
60762
60801
  return;
60763
60802
  }
60764
60803
  const result = this.partialState.eject(serviceId, previousCodeHash);
60765
- logger_logger.trace(`EJECT(${serviceId}, ${previousCodeHash}) <- ${resultToString(result)}`);
60804
+ logger_logger.trace `EJECT(${serviceId}, ${previousCodeHash}) <- ${resultToString(result)}`;
60766
60805
  // All good!
60767
60806
  if (result.isOk) {
60768
60807
  regs.set(eject_IN_OUT_REG, HostCallResult.OK);
@@ -60814,11 +60853,11 @@ class Forget {
60814
60853
  const memoryReadResult = memory.loadInto(hash.raw, hashStart);
60815
60854
  // error while reading the memory.
60816
60855
  if (memoryReadResult.isError) {
60817
- logger_logger.trace(`FORGET(${hash}, ${length}) <- PANIC`);
60856
+ logger_logger.trace `FORGET(${hash}, ${length}) <- PANIC`;
60818
60857
  return PvmExecution.Panic;
60819
60858
  }
60820
60859
  const result = this.partialState.forgetPreimage(hash.asOpaque(), length);
60821
- logger_logger.trace(`FORGET(${hash}, ${length}) <- ${resultToString(result)}`);
60860
+ logger_logger.trace `FORGET(${hash}, ${length}) <- ${resultToString(result)}`;
60822
60861
  if (result.isOk) {
60823
60862
  regs.set(forget_IN_OUT_REG, HostCallResult.OK);
60824
60863
  }
@@ -60871,11 +60910,11 @@ class New {
60871
60910
  const memoryReadResult = memory.loadInto(codeHash.raw, codeHashStart);
60872
60911
  // error while reading the memory.
60873
60912
  if (memoryReadResult.isError) {
60874
- logger_logger.trace(`NEW(${codeHash}, ${codeLength}, ${gas}, ${allowance}, ${gratisStorage}) <- PANIC`);
60913
+ logger_logger.trace `NEW(${codeHash}, ${codeLength}, ${gas}, ${allowance}, ${gratisStorage}) <- PANIC`;
60875
60914
  return PvmExecution.Panic;
60876
60915
  }
60877
60916
  const assignedId = this.partialState.newService(codeHash.asOpaque(), codeLength, gas, allowance, gratisStorage);
60878
- logger_logger.trace(`NEW(${codeHash}, ${codeLength}, ${gas}, ${allowance}, ${gratisStorage}) <- ${resultToString(assignedId)}`);
60917
+ logger_logger.trace `NEW(${codeHash}, ${codeLength}, ${gas}, ${allowance}, ${gratisStorage}) <- ${resultToString(assignedId)}`;
60879
60918
  if (assignedId.isOk) {
60880
60919
  regs.set(new_IN_OUT_REG, numbers_tryAsU64(assignedId.ok));
60881
60920
  return;
@@ -60930,11 +60969,11 @@ class Provide {
60930
60969
  const preimage = bytes_BytesBlob.blobFrom(new Uint8Array(length));
60931
60970
  const memoryReadResult = memory.loadInto(preimage.raw, preimageStart);
60932
60971
  if (memoryReadResult.isError) {
60933
- logger_logger.trace(`PROVIDE(${serviceId}, ${preimage.toStringTruncated()}) <- PANIC`);
60972
+ logger_logger.trace `PROVIDE(${serviceId}, ${preimage.toStringTruncated()}) <- PANIC`;
60934
60973
  return PvmExecution.Panic;
60935
60974
  }
60936
60975
  const result = this.partialState.providePreimage(serviceId, preimage);
60937
- logger_logger.trace(`PROVIDE(${serviceId}, ${preimage.toStringTruncated()}) <- ${resultToString(result)}`);
60976
+ logger_logger.trace `PROVIDE(${serviceId}, ${preimage.toStringTruncated()}) <- ${resultToString(result)}`;
60938
60977
  if (result.isOk) {
60939
60978
  regs.set(provide_IN_OUT_REG, HostCallResult.OK);
60940
60979
  return;
@@ -60988,11 +61027,11 @@ class Query {
60988
61027
  const memoryReadResult = memory.loadInto(hash.raw, hashStart);
60989
61028
  // error while reading the memory.
60990
61029
  if (memoryReadResult.isError) {
60991
- logger_logger.trace(`QUERY(${hash}, ${length}) <- PANIC`);
61030
+ logger_logger.trace `QUERY(${hash}, ${length}) <- PANIC`;
60992
61031
  return PvmExecution.Panic;
60993
61032
  }
60994
61033
  const result = this.partialState.checkPreimageStatus(hash.asOpaque(), length);
60995
- logger_logger.trace(`QUERY(${hash}, ${length}) <- ${result}`);
61034
+ logger_logger.trace `QUERY(${hash}, ${length}) <- ${result}`;
60996
61035
  const zero = numbers_tryAsU64(0n);
60997
61036
  if (result === null) {
60998
61037
  regs.set(IN_OUT_REG_1, HostCallResult.NONE);
@@ -61053,11 +61092,11 @@ class Solicit {
61053
61092
  const hash = bytes_Bytes.zero(hash_HASH_SIZE);
61054
61093
  const memoryReadResult = memory.loadInto(hash.raw, hashStart);
61055
61094
  if (memoryReadResult.isError) {
61056
- logger_logger.trace(`SOLICIT(${hash}, ${length}) <- PANIC`);
61095
+ logger_logger.trace `SOLICIT(${hash}, ${length}) <- PANIC`;
61057
61096
  return PvmExecution.Panic;
61058
61097
  }
61059
61098
  const result = this.partialState.requestPreimage(hash.asOpaque(), length);
61060
- logger_logger.trace(`SOLICIT(${hash}, ${length}) <- ${resultToString(result)}`);
61099
+ logger_logger.trace `SOLICIT(${hash}, ${length}) <- ${resultToString(result)}`;
61061
61100
  if (result.isOk) {
61062
61101
  regs.set(solicit_IN_OUT_REG, HostCallResult.OK);
61063
61102
  return;
@@ -61129,11 +61168,11 @@ class Transfer {
61129
61168
  const memoryReadResult = memory.loadInto(memo.raw, memoStart);
61130
61169
  // page fault while reading the memory.
61131
61170
  if (memoryReadResult.isError) {
61132
- logger_logger.trace(`TRANSFER(${destination}, ${amount}, ${onTransferGas}, ${memo}) <- PANIC`);
61171
+ logger_logger.trace `TRANSFER(${destination}, ${amount}, ${onTransferGas}, ${memo}) <- PANIC`;
61133
61172
  return PvmExecution.Panic;
61134
61173
  }
61135
61174
  const transferResult = this.partialState.transfer(destination, amount, onTransferGas, memo);
61136
- logger_logger.trace(`TRANSFER(${destination}, ${amount}, ${onTransferGas}, ${memo}) <- ${resultToString(transferResult)}`);
61175
+ logger_logger.trace `TRANSFER(${destination}, ${amount}, ${onTransferGas}, ${memo}) <- ${resultToString(transferResult)}`;
61137
61176
  // All good!
61138
61177
  if (transferResult.isOk) {
61139
61178
  regs.set(transfer_IN_OUT_REG, HostCallResult.OK);
@@ -61192,11 +61231,11 @@ class Upgrade {
61192
61231
  const codeHash = bytes_Bytes.zero(hash_HASH_SIZE);
61193
61232
  const memoryReadResult = memory.loadInto(codeHash.raw, codeHashStart);
61194
61233
  if (memoryReadResult.isError) {
61195
- logger_logger.trace(`UPGRADE(${codeHash}, ${gas}, ${allowance}) <- PANIC`);
61234
+ logger_logger.trace `UPGRADE(${codeHash}, ${gas}, ${allowance}) <- PANIC`;
61196
61235
  return PvmExecution.Panic;
61197
61236
  }
61198
61237
  this.partialState.upgradeService(codeHash.asOpaque(), gas, allowance);
61199
- logger_logger.trace(`UPGRADE(${codeHash}, ${gas}, ${allowance})`);
61238
+ logger_logger.trace `UPGRADE(${codeHash}, ${gas}, ${allowance})`;
61200
61239
  regs.set(upgrade_IN_OUT_REG, HostCallResult.OK);
61201
61240
  }
61202
61241
  }
@@ -61230,11 +61269,11 @@ class Yield {
61230
61269
  const hash = bytes_Bytes.zero(hash_HASH_SIZE);
61231
61270
  const memoryReadResult = memory.loadInto(hash.raw, hashStart);
61232
61271
  if (memoryReadResult.isError) {
61233
- logger_logger.trace("YIELD() <- PANIC");
61272
+ logger_logger.trace `YIELD() <- PANIC`;
61234
61273
  return PvmExecution.Panic;
61235
61274
  }
61236
61275
  this.partialState.yield(hash);
61237
- logger_logger.trace(`YIELD(${hash})`);
61276
+ logger_logger.trace `YIELD(${hash})`;
61238
61277
  regs.set(yield_IN_OUT_REG, HostCallResult.OK);
61239
61278
  }
61240
61279
  }
@@ -61276,10 +61315,10 @@ class Fetch {
61276
61315
  const chunk = value === null ? new Uint8Array() : value.raw.subarray(Number(offset), Number(offset + length));
61277
61316
  const storeResult = memory.storeFrom(output, chunk);
61278
61317
  if (storeResult.isError) {
61279
- logger_logger.trace(`FETCH(${kind}) <- PANIC`);
61318
+ logger_logger.trace `FETCH(${kind}) <- PANIC`;
61280
61319
  return PvmExecution.Panic;
61281
61320
  }
61282
- logger_logger.trace(`FETCH(${kind}) <- ${value?.toStringTruncated()}`);
61321
+ logger_logger.trace `FETCH(${kind}) <- ${value?.toStringTruncated()}`;
61283
61322
  // write result
61284
61323
  regs.set(fetch_IN_OUT_REG, value === null ? HostCallResult.NONE : valueLength);
61285
61324
  }
@@ -61438,10 +61477,10 @@ class Info {
61438
61477
  const chunk = encodedInfo.raw.subarray(Number(offset), Number(offset + length));
61439
61478
  const writeResult = memory.storeFrom(outputStart, chunk);
61440
61479
  if (writeResult.isError) {
61441
- logger_logger.trace(`INFO(${serviceId}) <- PANIC`);
61480
+ logger_logger.trace `INFO(${serviceId}) <- PANIC`;
61442
61481
  return PvmExecution.Panic;
61443
61482
  }
61444
- logger_logger.trace(`INFO(${serviceId}) <- ${bytes_BytesBlob.blobFrom(chunk)}`);
61483
+ logger_logger.trace `INFO(${serviceId}) <- ${bytes_BytesBlob.blobFrom(chunk)}`;
61445
61484
  if (accountInfo === null) {
61446
61485
  regs.set(info_IN_OUT_REG, HostCallResult.NONE);
61447
61486
  return;
@@ -61502,7 +61541,7 @@ class LogHostCall {
61502
61541
  memory.loadInto(target, targetStart);
61503
61542
  }
61504
61543
  memory.loadInto(message, msgStart);
61505
- logger_logger.trace(`SERVICE [${this.currentServiceId}] [${lvl}] ${decoder.decode(target)} ${decoder.decode(message)}`);
61544
+ logger_logger.trace `SERVICE [${this.currentServiceId}] [${lvl}] ${decoder.decode(target)} ${decoder.decode(message)}`;
61506
61545
  return Promise.resolve(undefined);
61507
61546
  }
61508
61547
  }
@@ -61542,12 +61581,12 @@ class Lookup {
61542
61581
  const preImageHash = bytes_Bytes.zero(hash_HASH_SIZE);
61543
61582
  const memoryReadResult = memory.loadInto(preImageHash.raw, hashAddress);
61544
61583
  if (memoryReadResult.isError) {
61545
- logger_logger.trace(`LOOKUP(${serviceId}, ${preImageHash}) <- PANIC`);
61584
+ logger_logger.trace `LOOKUP(${serviceId}, ${preImageHash}) <- PANIC`;
61546
61585
  return PvmExecution.Panic;
61547
61586
  }
61548
61587
  // v
61549
61588
  const preImage = this.account.lookup(serviceId, preImageHash);
61550
- logger_logger.trace(`LOOKUP(${serviceId}, ${preImageHash}) <- ${preImage?.toStringTruncated()}...`);
61589
+ logger_logger.trace `LOOKUP(${serviceId}, ${preImageHash}) <- ${preImage?.toStringTruncated()}...`;
61551
61590
  const preImageLength = preImage === null ? numbers_tryAsU64(0) : numbers_tryAsU64(preImage.raw.length);
61552
61591
  const preimageBlobOffset = regs.get(10);
61553
61592
  const lengthToWrite = regs.get(11);
@@ -61609,7 +61648,7 @@ class Read {
61609
61648
  const rawKey = bytes_BytesBlob.blobFrom(new Uint8Array(storageKeyLengthClamped));
61610
61649
  const memoryReadResult = memory.loadInto(rawKey.raw, storageKeyStartAddress);
61611
61650
  if (memoryReadResult.isError) {
61612
- logger_logger.trace(`READ(${serviceId}, ${rawKey}) <- PANIC`);
61651
+ logger_logger.trace `READ(${serviceId}, ${rawKey}) <- PANIC`;
61613
61652
  return PvmExecution.Panic;
61614
61653
  }
61615
61654
  // v
@@ -61627,15 +61666,15 @@ class Read {
61627
61666
  const chunk = value === null ? new Uint8Array(0) : value.raw.subarray(Number(offset), Number(offset + blobLength));
61628
61667
  const memoryWriteResult = memory.storeFrom(destinationAddress, chunk);
61629
61668
  if (memoryWriteResult.isError) {
61630
- logger_logger.trace(`READ(${serviceId}, ${rawKey}) <- PANIC`);
61669
+ logger_logger.trace `READ(${serviceId}, ${rawKey}) <- PANIC`;
61631
61670
  return PvmExecution.Panic;
61632
61671
  }
61633
61672
  if (value === null) {
61634
- logger_logger.trace(`READ(${serviceId}, ${rawKey}) <- NONE`);
61673
+ logger_logger.trace `READ(${serviceId}, ${rawKey}) <- NONE`;
61635
61674
  regs.set(read_IN_OUT_REG, HostCallResult.NONE);
61636
61675
  return;
61637
61676
  }
61638
- logger_logger.trace(`READ(${serviceId}, ${rawKey}) <- ${bytes_BytesBlob.blobFrom(chunk).toStringTruncated()}`);
61677
+ logger_logger.trace `READ(${serviceId}, ${rawKey}) <- ${bytes_BytesBlob.blobFrom(chunk).toStringTruncated()}`;
61639
61678
  regs.set(read_IN_OUT_REG, valueLength);
61640
61679
  }
61641
61680
  }
@@ -61678,7 +61717,7 @@ class Write {
61678
61717
  const rawStorageKey = new Uint8Array(storageKeyLengthClamped);
61679
61718
  const keyLoadingResult = memory.loadInto(rawStorageKey, storageKeyStartAddress);
61680
61719
  if (keyLoadingResult.isError) {
61681
- logger_logger.trace("WRITE() <- PANIC");
61720
+ logger_logger.trace `WRITE() <- PANIC`;
61682
61721
  return PvmExecution.Panic;
61683
61722
  }
61684
61723
  // k
@@ -61688,14 +61727,14 @@ class Write {
61688
61727
  const valueLoadingResult = memory.loadInto(value, valueStart);
61689
61728
  // Note [MaSo] this is ok to return bcs if valueLength is 0, then this panic won't happen
61690
61729
  if (valueLoadingResult.isError) {
61691
- logger_logger.trace(`WRITE(${storageKey})}) <- PANIC`);
61730
+ logger_logger.trace `WRITE(${storageKey}) <- PANIC`;
61692
61731
  return PvmExecution.Panic;
61693
61732
  }
61694
61733
  /** https://graypaper.fluffylabs.dev/#/9a08063/33af0133b201?v=0.6.6 */
61695
61734
  const maybeValue = valueLength === 0n ? null : bytes_BytesBlob.blobFrom(value);
61696
61735
  // a
61697
61736
  const result = this.account.write(storageKey, maybeValue);
61698
- logger_logger.trace(`WRITE(${storageKey}, ${maybeValue?.toStringTruncated()}) <- ${resultToString(result)}`);
61737
+ logger_logger.trace `WRITE(${storageKey}, ${maybeValue?.toStringTruncated()}) <- ${resultToString(result)}`;
61699
61738
  if (result.isError) {
61700
61739
  regs.set(write_IN_OUT_REG, HostCallResult.FULL);
61701
61740
  return;
@@ -61887,18 +61926,18 @@ class Accumulate {
61887
61926
  async pvmAccumulateInvocation(slot, serviceId, operands, gas, entropy, inputStateUpdate) {
61888
61927
  const service = this.state.getService(serviceId);
61889
61928
  if (service === null) {
61890
- accumulate_logger.log(`Service with id ${serviceId} not found.`);
61929
+ accumulate_logger.log `Service with id ${serviceId} not found.`;
61891
61930
  return result_Result.error(PvmInvocationError.NoService);
61892
61931
  }
61893
61932
  const codeHash = service.getInfo().codeHash;
61894
61933
  // TODO [ToDr] Should we check that the preimage is still available?
61895
61934
  const code = service.getPreimage(codeHash.asOpaque());
61896
61935
  if (code === null) {
61897
- accumulate_logger.log(`Code with hash ${codeHash} not found for service ${serviceId}.`);
61936
+ accumulate_logger.log `Code with hash ${codeHash} not found for service ${serviceId}.`;
61898
61937
  return result_Result.error(PvmInvocationError.NoPreimage);
61899
61938
  }
61900
61939
  if (code.length > W_C) {
61901
- accumulate_logger.log(`Code with hash ${codeHash} is too long for service ${serviceId}.`);
61940
+ accumulate_logger.log `Code with hash ${codeHash} is too long for service ${serviceId}.`;
61902
61941
  return result_Result.error(PvmInvocationError.PreimageTooLong);
61903
61942
  }
61904
61943
  const nextServiceId = generateNextServiceId({ serviceId, entropy, timeslot: slot }, this.chainSpec);
@@ -61920,10 +61959,10 @@ class Accumulate {
61920
61959
  if (result.hasStatus()) {
61921
61960
  const status = result.status;
61922
61961
  if (status === status_Status.OOG || status === status_Status.PANIC) {
61923
- accumulate_logger.trace(`[${serviceId}] accumulate finished with ${status_Status[status]} reverting to checkpoint.`);
61962
+ accumulate_logger.trace `[${serviceId}] accumulate finished with ${status_Status[status]} reverting to checkpoint.`;
61924
61963
  return result_Result.ok({ stateUpdate: checkpoint, consumedGas: common_tryAsServiceGas(result.consumedGas) });
61925
61964
  }
61926
- accumulate_logger.trace(`[${serviceId}] accumulate finished with ${status_Status[status]}`);
61965
+ accumulate_logger.trace `[${serviceId}] accumulate finished with ${status_Status[status]}`;
61927
61966
  }
61928
61967
  /**
61929
61968
  * PVM invocation returned a hash so we override whatever `yield` host call
@@ -61948,14 +61987,14 @@ class Accumulate {
61948
61987
  * https://graypaper.fluffylabs.dev/#/7e6ff6a/18d70118d701?v=0.6.7
61949
61988
  */
61950
61989
  async accumulateSingleService(serviceId, operands, gasCost, slot, entropy, inputStateUpdate) {
61951
- accumulate_logger.log(`Accumulating service ${serviceId}, items: ${operands.length} at slot: ${slot}.`);
61990
+ accumulate_logger.log `Accumulating service ${serviceId}, items: ${operands.length} at slot: ${slot}.`;
61952
61991
  const result = await this.pvmAccumulateInvocation(slot, serviceId, operands, gasCost, entropy, inputStateUpdate);
61953
61992
  if (result.isError) {
61954
61993
  // https://graypaper.fluffylabs.dev/#/7e6ff6a/2fb6012fb601?v=0.6.7
61955
- accumulate_logger.log(`Accumulation failed for ${serviceId}.`);
61994
+ accumulate_logger.log `Accumulation failed for ${serviceId}.`;
61956
61995
  return { stateUpdate: null, consumedGas: 0n };
61957
61996
  }
61958
- accumulate_logger.log(`Accumulation successful for ${serviceId}. Consumed: ${result.ok.consumedGas}`);
61997
+ accumulate_logger.log `Accumulation successful for ${serviceId}. Consumed: ${result.ok.consumedGas}`;
61959
61998
  return result.ok;
61960
61999
  }
61961
62000
  /**
@@ -62017,7 +62056,7 @@ class Accumulate {
62017
62056
  if (Compatibility.is(GpVersion.V0_7_0) && serviceId === currentManager) {
62018
62057
  const newV = currentState.privilegedServices?.validatorsManager;
62019
62058
  if (currentState.privilegedServices !== null && newV !== undefined && serviceIds.includes(newV)) {
62020
- accumulate_logger.info("Entering completely incorrect code that probably reverts validatorsManager change. This is valid in 0.7.0 only and incorrect in 0.7.1+");
62059
+ accumulate_logger.info `Entering completely incorrect code that probably reverts validatorsManager change. This is valid in 0.7.0 only and incorrect in 0.7.1+`;
62021
62060
  // Since serviceIds already contains newV, this service gets accumulated twice.
62022
62061
  // To avoid double-counting, we skip stats and gas cost tracking here.
62023
62062
  // We need this accumulation to get the correct `validatorsManager`
@@ -62200,13 +62239,13 @@ class DeferredTransfers {
62200
62239
  const isCodeCorrect = code !== null && code.length <= W_C;
62201
62240
  if (!hasTransfers || !isCodeCorrect) {
62202
62241
  if (code === null) {
62203
- deferred_transfers_logger.trace(`Skipping ON_TRANSFER execution for service ${serviceId} because code is null`);
62242
+ deferred_transfers_logger.trace `Skipping ON_TRANSFER execution for service ${serviceId} because code is null`;
62204
62243
  }
62205
62244
  else if (!hasTransfers) {
62206
- deferred_transfers_logger.trace(`Skipping ON_TRANSFER execution for service ${serviceId} because there are no transfers`);
62245
+ deferred_transfers_logger.trace `Skipping ON_TRANSFER execution for service ${serviceId} because there are no transfers`;
62207
62246
  }
62208
62247
  else {
62209
- deferred_transfers_logger.trace(`Skipping ON_TRANSFER execution for service ${serviceId} because code is too long`);
62248
+ deferred_transfers_logger.trace `Skipping ON_TRANSFER execution for service ${serviceId} because code is too long`;
62210
62249
  }
62211
62250
  }
62212
62251
  else {
@@ -62834,7 +62873,7 @@ function verifyRefineContexts(minLookupSlot, contexts, recentBlocksPartialUpdate
62834
62873
  headerChain.isAncestor(context.lookupAnchorSlot, context.lookupAnchor, context.anchor);
62835
62874
  if (!isInChain) {
62836
62875
  if (process.env.SKIP_LOOKUP_ANCHOR_CHECK !== undefined) {
62837
- verify_contextual_logger.warn(`Lookup anchor check for ${context.lookupAnchor} would fail, but override is active.`);
62876
+ verify_contextual_logger.warn `Lookup anchor check for ${context.lookupAnchor} would fail, but override is active.`;
62838
62877
  }
62839
62878
  else {
62840
62879
  return result_Result.error(ReportsError.SegmentRootLookupInvalid, `Lookup anchor is not found in chain. Hash: ${context.lookupAnchor} (slot: ${context.lookupAnchorSlot})`);
@@ -63721,7 +63760,7 @@ class OnChain {
63721
63760
  reports: availableReports,
63722
63761
  entropy: entropy[0],
63723
63762
  });
63724
- chain_stf_logger.log(timerAccumulate());
63763
+ chain_stf_logger.log `${timerAccumulate()}`;
63725
63764
  if (accumulateResult.isError) {
63726
63765
  return stfError(StfErrorKind.Accumulate, accumulateResult);
63727
63766
  }
@@ -63852,7 +63891,7 @@ class Importer {
63852
63891
  this.stf = new OnChain(spec, state, blocks, hasher);
63853
63892
  this.state = state;
63854
63893
  this.currentHash = currentBestHeaderHash;
63855
- logger.info(`😎 Best time slot: ${state.timeslot} (header hash: ${currentBestHeaderHash})`);
63894
+ logger.info `😎 Best time slot: ${state.timeslot} (header hash: ${currentBestHeaderHash})`;
63856
63895
  }
63857
63896
  async importBlock(block, omitSealVerification) {
63858
63897
  const timer = measure("importBlock");
@@ -63860,20 +63899,20 @@ class Importer {
63860
63899
  const maybeBestHeader = await this.importBlockInternal(block, omitSealVerification);
63861
63900
  if (maybeBestHeader.isOk) {
63862
63901
  const bestHeader = maybeBestHeader.ok;
63863
- this.logger.info(`🧊 Best block: #${timeSlot} (${bestHeader.hash})`);
63864
- this.logger.log(timer());
63902
+ this.logger.info `🧊 Best block: #${timeSlot} (${bestHeader.hash})`;
63903
+ this.logger.log `${timer()}`;
63865
63904
  return maybeBestHeader;
63866
63905
  }
63867
- this.logger.log(`❌ Rejected block #${timeSlot}: ${resultToString(maybeBestHeader)}`);
63868
- this.logger.log(timer());
63906
+ this.logger.log `❌ Rejected block #${timeSlot}: ${resultToString(maybeBestHeader)}`;
63907
+ this.logger.log `${timer()}`;
63869
63908
  return maybeBestHeader;
63870
63909
  }
63871
63910
  async importBlockInternal(block, omitSealVerification = false) {
63872
63911
  const logger = this.logger;
63873
- logger.log("🧱 Attempting to import a new block");
63912
+ logger.log `🧱 Attempting to import a new block`;
63874
63913
  const timerVerify = measure("import:verify");
63875
63914
  const hash = await this.verifier.verifyBlock(block);
63876
- logger.log(timerVerify());
63915
+ logger.log `${timerVerify()}`;
63877
63916
  if (hash.isError) {
63878
63917
  return importerError(ImporterErrorKind.Verifier, hash);
63879
63918
  }
@@ -63893,10 +63932,10 @@ class Importer {
63893
63932
  }
63894
63933
  const timeSlot = block.header.view().timeSlotIndex.materialize();
63895
63934
  const headerHash = hash.ok;
63896
- logger.log(`🧱 Verified block: Got hash ${headerHash} for block at slot ${timeSlot}.`);
63935
+ logger.log `🧱 Verified block: Got hash ${headerHash} for block at slot ${timeSlot}.`;
63897
63936
  const timerStf = measure("import:stf");
63898
63937
  const res = await this.stf.transition(block, headerHash, omitSealVerification);
63899
- logger.log(timerStf());
63938
+ logger.log `${timerStf()}`;
63900
63939
  if (res.isError) {
63901
63940
  return importerError(ImporterErrorKind.Stf, res);
63902
63941
  }
@@ -63905,7 +63944,7 @@ class Importer {
63905
63944
  const timerState = measure("import:state");
63906
63945
  const updateResult = await this.states.updateAndSetState(headerHash, this.state, update);
63907
63946
  if (updateResult.isError) {
63908
- logger.error(`🧱 Unable to update state: ${resultToString(updateResult)}`);
63947
+ logger.error `🧱 Unable to update state: ${resultToString(updateResult)}`;
63909
63948
  return importerError(ImporterErrorKind.Update, updateResult);
63910
63949
  }
63911
63950
  const newState = this.states.getState(headerHash);
@@ -63916,17 +63955,17 @@ class Importer {
63916
63955
  // the state of a parent block to support forks and create a fresh STF.
63917
63956
  this.state.updateBackend(newState.backend);
63918
63957
  this.currentHash = headerHash;
63919
- logger.log(timerState());
63958
+ logger.log `${timerState()}`;
63920
63959
  // insert new state and the block to DB.
63921
63960
  const timerDb = measure("import:db");
63922
63961
  const writeBlocks = this.blocks.insertBlock(new WithHash(headerHash, block));
63923
63962
  // Computation of the state root may happen asynchronously,
63924
63963
  // but we still need to wait for it before next block can be imported
63925
63964
  const stateRoot = await this.states.getStateRoot(newState);
63926
- logger.log(`🧱 Storing post-state-root for ${headerHash}: ${stateRoot}.`);
63965
+ logger.log `🧱 Storing post-state-root for ${headerHash}: ${stateRoot}.`;
63927
63966
  const writeStateRoot = this.blocks.setPostStateRoot(headerHash, stateRoot);
63928
63967
  await Promise.all([writeBlocks, writeStateRoot]);
63929
- logger.log(timerDb());
63968
+ logger.log `${timerDb()}`;
63930
63969
  // finally update the best block
63931
63970
  await this.blocks.setBestHeaderHash(headerHash);
63932
63971
  return result_Result.ok(new WithHash(headerHash, block.header.view()));
@@ -63974,7 +64013,7 @@ if (!external_node_worker_threads_namespaceObject.isMainThread) {
63974
64013
  Logger.configureAll(process.env.JAM_LOG ?? "", Level.LOG);
63975
64014
  const machine = importerStateMachine();
63976
64015
  const channel = MessageChannelStateMachine.receiveChannel(machine, external_node_worker_threads_namespaceObject.parentPort);
63977
- channel.then((channel) => importer_main(channel)).catch((e) => importer_logger.error(e));
64016
+ channel.then((channel) => importer_main(channel)).catch((e) => importer_logger.error `${e}`);
63978
64017
  }
63979
64018
  const keccakHasher = KeccakHasher.create();
63980
64019
  async function createImporter(config) {
@@ -63996,7 +64035,7 @@ async function createImporter(config) {
63996
64035
  */
63997
64036
  async function importer_main(channel) {
63998
64037
  const wasmPromise = initAll();
63999
- importer_logger.info(`📥 Importer starting ${channel.currentState()}`);
64038
+ importer_logger.info `📥 Importer starting ${channel.currentState()}`;
64000
64039
  // Await the configuration object
64001
64040
  const ready = await channel.waitForState("ready(importer)");
64002
64041
  let closeDb = async () => { };
@@ -64008,7 +64047,7 @@ async function importer_main(channel) {
64008
64047
  };
64009
64048
  // TODO [ToDr] this is shit, since we have circular dependency.
64010
64049
  worker.setImporter(importer);
64011
- importer_logger.info("📥 Importer waiting for blocks.");
64050
+ importer_logger.info `📥 Importer waiting for blocks.`;
64012
64051
  worker.onBlock.on(async (block) => {
64013
64052
  const res = await importer.importBlock(block, config.omitSealVerification);
64014
64053
  if (res.isOk) {
@@ -64017,7 +64056,7 @@ async function importer_main(channel) {
64017
64056
  });
64018
64057
  await wasmPromise;
64019
64058
  });
64020
- importer_logger.info("📥 Importer finished. Closing channel.");
64059
+ importer_logger.info `📥 Importer finished. Closing channel.`;
64021
64060
  // close the database
64022
64061
  await closeDb();
64023
64062
  // Close the comms to gracefuly close the app.
@@ -64038,8 +64077,8 @@ async function importer_main(channel) {
64038
64077
  const zeroHash = bytes_Bytes.zero(hash_HASH_SIZE).asOpaque();
64039
64078
  async function mainImporter(config, withRelPath) {
64040
64079
  await initAll();
64041
- common_logger.info(`🫐 Typeberry ${package_namespaceObject.rE}. GP: ${CURRENT_VERSION} (${CURRENT_SUITE})`);
64042
- common_logger.info(`🎸 Starting importer: ${config.nodeName}.`);
64080
+ common_logger.info `🫐 Typeberry ${package_namespaceObject.rE}. GP: ${CURRENT_VERSION} (${CURRENT_SUITE})`;
64081
+ common_logger.info `🎸 Starting importer: ${config.nodeName}.`;
64043
64082
  const chainSpec = getChainSpec(config.node.flavor);
64044
64083
  const { rootDb, dbPath, genesisHeaderHash } = openDatabase(config.nodeName, config.node.chainSpec.genesisHeader, withRelPath(config.node.databaseBasePath));
64045
64084
  // Initialize the database with genesis state and block if there isn't one.
@@ -64066,9 +64105,9 @@ async function mainImporter(config, withRelPath) {
64066
64105
  return importer.getBestStateRootHash() ?? zeroHash;
64067
64106
  },
64068
64107
  async close() {
64069
- common_logger.log("[main] 🛢️ Closing the database");
64108
+ common_logger.log `[main] 🛢️ Closing the database`;
64070
64109
  await lmdb.close();
64071
- common_logger.info("[main] ✅ Done.");
64110
+ common_logger.info `[main] ✅ Done.`;
64072
64111
  },
64073
64112
  };
64074
64113
  return api;
@@ -64095,7 +64134,7 @@ function getFuzzDetails() {
64095
64134
  };
64096
64135
  }
64097
64136
  async function mainFuzz(fuzzConfig, withRelPath) {
64098
- main_fuzz_logger.info(`💨 Fuzzer V${fuzzConfig.version} starting up.`);
64137
+ main_fuzz_logger.info `💨 Fuzzer V${fuzzConfig.version} starting up.`;
64099
64138
  const { jamNodeConfig: config } = fuzzConfig;
64100
64139
  let runningNode = null;
64101
64140
  const fuzzSeed = BigInt(Date.now());
@@ -64165,20 +64204,20 @@ async function mainFuzz(fuzzConfig, withRelPath) {
64165
64204
 
64166
64205
  const importBlocks = async (node, blocksToImport) => {
64167
64206
  const logger = Logger.new(import.meta.filename, "jam");
64168
- logger.info(`📖 Reading ${blocksToImport.length} blocks`);
64207
+ logger.info `📖 Reading ${blocksToImport.length} blocks`;
64169
64208
  const reader = startBlocksReader({
64170
64209
  files: blocksToImport,
64171
64210
  chainSpec: node.chainSpec,
64172
64211
  });
64173
64212
  for (const block of reader) {
64174
- logger.log(`📖 Importing block: #${block.header.view().timeSlotIndex.materialize()}`);
64213
+ logger.log `📖 Importing block: #${block.header.view().timeSlotIndex.materialize()}`;
64175
64214
  const res = await node.importBlock(block);
64176
64215
  if (res.isError) {
64177
- logger.error(`📖 ${resultToString(res)}`);
64216
+ logger.error `📖 ${resultToString(res)}`;
64178
64217
  }
64179
64218
  }
64180
64219
  // close the importer.
64181
- logger.info("All blocks scheduled to be imported.");
64220
+ logger.info `All blocks scheduled to be imported.`;
64182
64221
  return await node.close();
64183
64222
  };
64184
64223
  function* startBlocksReader(options) {
@@ -64375,6 +64414,7 @@ function parseFuzzVersion(v) {
64375
64414
 
64376
64415
 
64377
64416
 
64417
+
64378
64418
  const prepareConfigFile = (args) => {
64379
64419
  const nodeConfig = loadConfig(args.args.configPath);
64380
64420
  const nodeName = args.command === Command.Dev ? `${args.args.nodeName}-${args.args.index}` : args.args.nodeName;
@@ -64401,14 +64441,8 @@ const prepareConfigFile = (args) => {
64401
64441
  };
64402
64442
  if (import.meta.url === (0,external_node_url_namespaceObject.pathToFileURL)(process.argv[1]).href) {
64403
64443
  Logger.configureAll(process.env.JAM_LOG ?? "", Level.LOG);
64404
- const relPath = `${import.meta.dirname}/../..`;
64405
- const withRelPath = (p) => {
64406
- if (p.startsWith("/")) {
64407
- return p;
64408
- }
64409
- return `${relPath}/${p}`;
64410
- };
64411
64444
  let args;
64445
+ const withRelPath = workspacePathFix(`${import.meta.dirname}/../..`);
64412
64446
  try {
64413
64447
  const parsed = parseArgs(process.argv.slice(2), withRelPath);
64414
64448
  if (parsed === null) {