@typeberry/jam 0.1.1-4a6ffa9 → 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
@@ -35178,6 +35178,23 @@ function parseLevel(lvl) {
35178
35178
  ;// CONCATENATED MODULE: ./packages/core/logger/console.ts
35179
35179
  // biome-ignore-all lint/suspicious/noConsole: logger
35180
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
+ }
35181
35198
  /** An optimized logger that ignores `TRACE`, `DEBUG` and `LOG` messages.
35182
35199
  *
35183
35200
  * Use the `create` method to instantiate the right instance of a more specialized logger.
@@ -35208,109 +35225,91 @@ class ConsoleTransport {
35208
35225
  constructor(options) {
35209
35226
  this.options = options;
35210
35227
  }
35211
- insane(_moduleName, _val) {
35228
+ insane(_levelAndName, _strings, _data) {
35212
35229
  /* no-op */
35213
35230
  }
35214
- trace(_moduleName, _val) {
35231
+ trace(_levelAndName, _strings, _data) {
35215
35232
  /* no-op */
35216
35233
  }
35217
- log(_moduleName, _val) {
35234
+ log(_levelAndName, _strings, _data) {
35218
35235
  /* no-op */
35219
35236
  }
35220
- info(_moduleName, _val) {
35237
+ info(_levelAndName, _strings, _data) {
35221
35238
  /* no-op */
35222
35239
  }
35223
- warn(moduleName, val) {
35224
- this.push(Level.WARN, moduleName, val);
35240
+ warn(levelAndName, strings, data) {
35241
+ print(Level.WARN, levelAndName, strings, data);
35225
35242
  }
35226
- error(moduleName, val) {
35227
- this.push(Level.ERROR, moduleName, val);
35228
- }
35229
- push(level, moduleName, val) {
35230
- const shortModule = moduleName.replace(this.options.workingDir, "");
35231
- const configuredLevel = findLevel(this.options, moduleName);
35232
- const lvlText = Level[level].padEnd(5);
35233
- if (level < configuredLevel) {
35234
- return;
35235
- }
35236
- const msg = `${lvlText} [${shortModule}] ${val}`;
35237
- if (level === Level.WARN) {
35238
- console.warn(msg);
35239
- }
35240
- else if (level === Level.ERROR) {
35241
- console.error(msg);
35242
- }
35243
- else {
35244
- console.info(msg);
35245
- }
35243
+ error(levelAndName, strings, data) {
35244
+ print(Level.ERROR, levelAndName, strings, data);
35246
35245
  }
35247
35246
  }
35248
35247
  /**
35249
35248
  * Insane version of console logger - supports insane level.
35250
35249
  */
35251
35250
  class InsaneConsoleLogger extends ConsoleTransport {
35252
- insane(moduleName, val) {
35253
- this.push(Level.INSANE, moduleName, val);
35251
+ insane(levelAndName, strings, data) {
35252
+ print(Level.INSANE, levelAndName, strings, data);
35254
35253
  }
35255
- trace(moduleName, val) {
35256
- this.push(Level.TRACE, moduleName, val);
35254
+ trace(levelAndName, strings, data) {
35255
+ print(Level.TRACE, levelAndName, strings, data);
35257
35256
  }
35258
- log(moduleName, val) {
35259
- this.push(Level.LOG, moduleName, val);
35257
+ log(levelAndName, strings, data) {
35258
+ print(Level.LOG, levelAndName, strings, data);
35260
35259
  }
35261
- info(moduleName, val) {
35262
- this.push(Level.INFO, moduleName, val);
35260
+ info(levelAndName, strings, data) {
35261
+ print(Level.INFO, levelAndName, strings, data);
35263
35262
  }
35264
35263
  }
35265
35264
  /**
35266
35265
  * A basic version of console logger - printing everything.
35267
35266
  */
35268
35267
  class TraceConsoleTransport extends ConsoleTransport {
35269
- insane(_moduleName, _val) {
35268
+ insane(_levelAndName, _strings, _data) {
35270
35269
  /* no-op */
35271
35270
  }
35272
- trace(moduleName, val) {
35273
- this.push(Level.TRACE, moduleName, val);
35271
+ trace(levelAndName, strings, data) {
35272
+ print(Level.TRACE, levelAndName, strings, data);
35274
35273
  }
35275
- log(moduleName, val) {
35276
- this.push(Level.LOG, moduleName, val);
35274
+ log(levelAndName, strings, data) {
35275
+ print(Level.LOG, levelAndName, strings, data);
35277
35276
  }
35278
- info(moduleName, val) {
35279
- this.push(Level.INFO, moduleName, val);
35277
+ info(levelAndName, strings, data) {
35278
+ print(Level.INFO, levelAndName, strings, data);
35280
35279
  }
35281
35280
  }
35282
35281
  /**
35283
35282
  * An optimized version of the logger - completely ignores `TRACE` level calls.
35284
35283
  */
35285
35284
  class LogConsoleTransport extends ConsoleTransport {
35286
- insane(_moduleName, _val) {
35285
+ insane(_levelAndName, _strings, _data) {
35287
35286
  /* no-op */
35288
35287
  }
35289
- trace(_moduleName, _val) {
35288
+ trace(_levelAndName, _strings, _data) {
35290
35289
  /* no-op */
35291
35290
  }
35292
- log(moduleName, val) {
35293
- this.push(Level.LOG, moduleName, val);
35291
+ log(levelAndName, strings, data) {
35292
+ print(Level.LOG, levelAndName, strings, data);
35294
35293
  }
35295
- info(moduleName, val) {
35296
- this.push(Level.INFO, moduleName, val);
35294
+ info(levelAndName, strings, data) {
35295
+ print(Level.INFO, levelAndName, strings, data);
35297
35296
  }
35298
35297
  }
35299
35298
  /**
35300
35299
  * An optimized version of the logger - completely ignores `TRACE` & `DEBUG` level calls.
35301
35300
  */
35302
35301
  class InfoConsoleTransport extends ConsoleTransport {
35303
- insane(_moduleName, _val) {
35302
+ insane(_levelAndName, _strings, _data) {
35304
35303
  /* no-op */
35305
35304
  }
35306
- trace(_moduleName, _val) {
35305
+ trace(_levelAndName, _strings, _data) {
35307
35306
  /* no-op */
35308
35307
  }
35309
- log(_moduleName, _val) {
35308
+ log(_levelAndName, _strings, _data) {
35310
35309
  /* no-op */
35311
35310
  }
35312
- info(moduleName, val) {
35313
- this.push(Level.INFO, moduleName, val);
35311
+ info(levelAndName, strings, data) {
35312
+ print(Level.INFO, levelAndName, strings, data);
35314
35313
  }
35315
35314
  }
35316
35315
 
@@ -35347,11 +35346,6 @@ class Logger {
35347
35346
  const module = moduleName ?? fName;
35348
35347
  return new Logger(module.padStart(8, " "), GLOBAL_CONFIG);
35349
35348
  }
35350
- /**
35351
- * Return currently configured level for given module. */
35352
- static getLevel(moduleName) {
35353
- return findLevel(GLOBAL_CONFIG.options, moduleName);
35354
- }
35355
35349
  /**
35356
35350
  * Global configuration of all loggers.
35357
35351
  *
@@ -35382,33 +35376,46 @@ class Logger {
35382
35376
  const options = parseLoggerOptions(input, defaultLevel, workingDir);
35383
35377
  Logger.configureAllFromOptions(options);
35384
35378
  }
35379
+ cachedLevelAndName;
35385
35380
  constructor(moduleName, config) {
35386
35381
  this.moduleName = moduleName;
35387
35382
  this.config = config;
35388
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
+ }
35389
35396
  /** Log a message with `INSANE` level. */
35390
- insane(val) {
35391
- this.config.transport.insane(this.moduleName, val);
35397
+ insane(strings, ...data) {
35398
+ this.config.transport.insane(this.getLevelAndName(), strings, data);
35392
35399
  }
35393
35400
  /** Log a message with `TRACE` level. */
35394
- trace(val) {
35395
- this.config.transport.trace(this.moduleName, val);
35401
+ trace(strings, ...data) {
35402
+ this.config.transport.trace(this.getLevelAndName(), strings, data);
35396
35403
  }
35397
35404
  /** Log a message with `DEBUG`/`LOG` level. */
35398
- log(val) {
35399
- this.config.transport.log(this.moduleName, val);
35405
+ log(strings, ...data) {
35406
+ this.config.transport.log(this.getLevelAndName(), strings, data);
35400
35407
  }
35401
35408
  /** Log a message with `INFO` level. */
35402
- info(val) {
35403
- this.config.transport.info(this.moduleName, val);
35409
+ info(strings, ...data) {
35410
+ this.config.transport.info(this.getLevelAndName(), strings, data);
35404
35411
  }
35405
35412
  /** Log a message with `WARN` level. */
35406
- warn(val) {
35407
- this.config.transport.warn(this.moduleName, val);
35413
+ warn(strings, ...data) {
35414
+ this.config.transport.warn(this.getLevelAndName(), strings, data);
35408
35415
  }
35409
35416
  /** Log a message with `ERROR` level. */
35410
- error(val) {
35411
- this.config.transport.error(this.moduleName, val);
35417
+ error(strings, ...data) {
35418
+ this.config.transport.error(this.getLevelAndName(), strings, data);
35412
35419
  }
35413
35420
  }
35414
35421
 
@@ -35498,15 +35505,15 @@ class NodeConfiguration {
35498
35505
  }
35499
35506
  function loadConfig(configPath) {
35500
35507
  if (configPath === DEFAULT_CONFIG) {
35501
- logger.log("🔧 Loading DEFAULT config");
35508
+ logger.log `🔧 Loading DEFAULT config`;
35502
35509
  return parseFromJson(configs.default, NodeConfiguration.fromJson);
35503
35510
  }
35504
35511
  if (configPath === DEV_CONFIG) {
35505
- logger.log("🔧 Loading DEV config");
35512
+ logger.log `🔧 Loading DEV config`;
35506
35513
  return parseFromJson(configs.dev, NodeConfiguration.fromJson);
35507
35514
  }
35508
35515
  try {
35509
- logger.log(`🔧 Loading config from ${configPath}`);
35516
+ logger.log `🔧 Loading config from ${configPath}`;
35510
35517
  const configFile = external_node_fs_default().readFileSync(configPath, "utf8");
35511
35518
  const parsed = JSON.parse(configFile);
35512
35519
  return parseFromJson(parsed, NodeConfiguration.fromJson);
@@ -39212,7 +39219,7 @@ class LmdbStates {
39212
39219
  await Promise.all([valuesWrite, statesWrite]);
39213
39220
  }
39214
39221
  catch (e) {
39215
- states_logger.error(`${e}`);
39222
+ states_logger.error `${e}`;
39216
39223
  return result_Result.error(StateUpdateError.Commit);
39217
39224
  }
39218
39225
  return result_Result.ok(result_OK);
@@ -39281,7 +39288,7 @@ function openDatabase(nodeName, genesisHeader, databaseBasePath, { readOnly = fa
39281
39288
  const genesisHeaderHash = hashBytes(genesisHeader).asOpaque();
39282
39289
  const genesisHeaderHashNibbles = genesisHeaderHash.toString().substring(2, 10);
39283
39290
  const dbPath = `${databaseBasePath}/${nodeNameHash}/${genesisHeaderHashNibbles}`;
39284
- common_logger.info(`🛢️ Opening database at ${dbPath}`);
39291
+ common_logger.info `🛢️ Opening database at ${dbPath}`;
39285
39292
  try {
39286
39293
  return {
39287
39294
  dbPath,
@@ -39303,21 +39310,21 @@ async function initializeDatabase(spec, genesisHeaderHash, rootDb, config, ances
39303
39310
  const states = new LmdbStates(spec, rootDb);
39304
39311
  const header = blocks.getBestHeaderHash();
39305
39312
  const state = blocks.getPostStateRoot(header);
39306
- common_logger.log(`🛢️ Best header hash: ${header}`);
39307
- common_logger.log(`🛢️ Best state root: ${state}`);
39313
+ common_logger.log `🛢️ Best header hash: ${header}`;
39314
+ common_logger.log `🛢️ Best state root: ${state}`;
39308
39315
  // DB seems already initialized, just go with what we have.
39309
39316
  const isDbInitialized = state !== null && !state.isEqualTo(bytes_Bytes.zero(hash_HASH_SIZE)) && !header.isEqualTo(bytes_Bytes.zero(hash_HASH_SIZE));
39310
39317
  if (isDbInitialized) {
39311
39318
  await rootDb.db.close();
39312
39319
  return;
39313
39320
  }
39314
- common_logger.log("🛢️ Database looks fresh. Initializing.");
39321
+ common_logger.log `🛢️ Database looks fresh. Initializing.`;
39315
39322
  // looks like a fresh db, initialize the state.
39316
39323
  const genesisHeader = decoder_Decoder.decodeObject(Header.Codec, config.genesisHeader, spec);
39317
39324
  const genesisExtrinsic = emptyBlock().extrinsic;
39318
39325
  const genesisBlock = Block.create({ header: genesisHeader, extrinsic: genesisExtrinsic });
39319
39326
  const blockView = blockAsView(genesisBlock, spec);
39320
- common_logger.log(`🧬 Writing genesis block #${genesisHeader.timeSlotIndex}: ${genesisHeaderHash}`);
39327
+ common_logger.log `🧬 Writing genesis block #${genesisHeader.timeSlotIndex}: ${genesisHeaderHash}`;
39321
39328
  const { genesisStateSerialized, genesisStateRootHash } = loadGenesisState(spec, config.genesisState);
39322
39329
  // write to db
39323
39330
  await blocks.insertBlock(new WithHash(genesisHeaderHash, blockView));
@@ -39335,7 +39342,7 @@ function loadGenesisState(spec, data) {
39335
39342
  const stateEntries = state_entries_StateEntries.fromEntriesUnsafe(data.entries());
39336
39343
  const state = serialized_state_SerializedState.fromStateEntries(spec, stateEntries);
39337
39344
  const genesisStateRootHash = stateEntries.getRootHash();
39338
- common_logger.info(`🧬 Genesis state root: ${genesisStateRootHash}`);
39345
+ common_logger.info `🧬 Genesis state root: ${genesisStateRootHash}`;
39339
39346
  return {
39340
39347
  genesisState: state,
39341
39348
  genesisStateSerialized: stateEntries,
@@ -39474,7 +39481,7 @@ class TypedPort {
39474
39481
  this.dispatchPortMessage(msg);
39475
39482
  }
39476
39483
  catch (e) {
39477
- 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}`;
39478
39485
  throw e;
39479
39486
  }
39480
39487
  });
@@ -39548,7 +39555,7 @@ class TypedPort {
39548
39555
  this.port.postMessage(msg, transferList);
39549
39556
  }
39550
39557
  catch (e) {
39551
- 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}`;
39552
39559
  throw e;
39553
39560
  }
39554
39561
  }
@@ -39579,7 +39586,7 @@ class TypedPort {
39579
39586
  cleanup(reason) {
39580
39587
  // resolve all pending requests with an error.
39581
39588
  const responseListeners = this.responseListeners.eventNames();
39582
- for (const ev in responseListeners) {
39589
+ for (const ev of responseListeners) {
39583
39590
  this.responseListeners.emit(ev, new Error(`port is ${reason}`));
39584
39591
  }
39585
39592
  }
@@ -39628,7 +39635,7 @@ class MessageChannelStateMachine {
39628
39635
  this.dispatchSignal(name, data);
39629
39636
  }
39630
39637
  catch (e) {
39631
- 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)}`;
39632
39639
  throw e;
39633
39640
  }
39634
39641
  });
@@ -39637,7 +39644,7 @@ class MessageChannelStateMachine {
39637
39644
  await this.dispatchRequest(name, data, msg);
39638
39645
  }
39639
39646
  catch (e) {
39640
- 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)}`;
39641
39648
  throw e;
39642
39649
  }
39643
39650
  });
@@ -39723,7 +39730,7 @@ class MessageChannelStateMachine {
39723
39730
  this.machine.transition(res.transitionTo.state, res.transitionTo.data);
39724
39731
  }
39725
39732
  if (didStateChangeInMeantime) {
39726
- channel_logger.warn(`Ignoring obsolete response for an old request: "${name}"`);
39733
+ channel_logger.warn `Ignoring obsolete response for an old request: "${name}"`;
39727
39734
  return;
39728
39735
  }
39729
39736
  return this.port.respond(prevState.stateName, msg, res.response);
@@ -39739,7 +39746,7 @@ class MessageChannelStateMachine {
39739
39746
  }
39740
39747
  }
39741
39748
  transitionTo() {
39742
- channel_logger.trace(`[${this.machine.name}] transitioned to ${this.currentState()}`);
39749
+ channel_logger.trace `[${this.machine.name}] transitioned to ${this.currentState()}`;
39743
39750
  return this;
39744
39751
  }
39745
39752
  /**
@@ -39759,7 +39766,7 @@ class MessageChannelStateMachine {
39759
39766
  await promise;
39760
39767
  }
39761
39768
  catch (e) {
39762
- channel_logger.error(JSON.stringify(e));
39769
+ channel_logger.error `${e}`;
39763
39770
  }
39764
39771
  return new MessageChannelStateMachine(machine, port);
39765
39772
  }
@@ -39962,7 +39969,7 @@ class State {
39962
39969
  * actions.
39963
39970
  */
39964
39971
  onActivation(data) {
39965
- state_logger.trace(`[${this.constructor.name}] Changing state to: ${this}`);
39972
+ state_logger.trace `[${this.constructor.name}] Changing state to: ${this}`;
39966
39973
  this.data = data;
39967
39974
  }
39968
39975
  /**
@@ -40060,7 +40067,7 @@ async function spawnWorkerGeneric(bootstrapPath, logger, mainReadyName, mainRead
40060
40067
  const worker = new external_node_worker_threads_namespaceObject.Worker(bootstrapPath);
40061
40068
  const machine = stateMachineMain(`main->${mainReadyName}`, mainReadyName, mainReadyState);
40062
40069
  const channel = await MessageChannelStateMachine.createAndTransferChannel(machine, worker);
40063
- logger.trace(`[${machine.name}] Worker spawned ${channel.currentState()}`);
40070
+ logger.trace `[${machine.name}] Worker spawned ${channel.currentState()}`;
40064
40071
  return channel;
40065
40072
  }
40066
40073
 
@@ -40173,7 +40180,7 @@ class MainReady extends State {
40173
40180
  if (res instanceof Uint8Array) {
40174
40181
  return bytes_Bytes.fromBlob(res, hash_HASH_SIZE).asOpaque();
40175
40182
  }
40176
- 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}`;
40177
40184
  return bytes_Bytes.zero(hash_HASH_SIZE).asOpaque();
40178
40185
  }
40179
40186
  finish(channel) {
@@ -40221,7 +40228,7 @@ class ImporterReady extends State {
40221
40228
  }
40222
40229
  async getStateEntries(hash) {
40223
40230
  if (this.importer === null) {
40224
- state_machine_logger.error(`${this.constructor.name} importer not initialized yet!`);
40231
+ state_machine_logger.error `${this.constructor.name} importer not initialized yet!`;
40225
40232
  await new Promise((resolve) => {
40226
40233
  this.onImporter.once(resolve);
40227
40234
  });
@@ -40235,7 +40242,7 @@ class ImporterReady extends State {
40235
40242
  response: encoded.raw,
40236
40243
  };
40237
40244
  }
40238
- 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)}.`;
40239
40246
  return {
40240
40247
  response: null,
40241
40248
  };
@@ -40255,7 +40262,7 @@ class ImporterReady extends State {
40255
40262
  }
40256
40263
  async importBlock(block) {
40257
40264
  if (this.importer === null) {
40258
- state_machine_logger.error(`${this.constructor.name} importer not initialized yet!`);
40265
+ state_machine_logger.error `${this.constructor.name} importer not initialized yet!`;
40259
40266
  await new Promise((resolve) => {
40260
40267
  this.onImporter.once(resolve);
40261
40268
  });
@@ -40275,8 +40282,8 @@ class ImporterReady extends State {
40275
40282
  }
40276
40283
  }
40277
40284
  catch (e) {
40278
- state_machine_logger.error(`Failed to import block: ${e}`);
40279
- 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 : ""}`;
40280
40287
  response = result_Result.error(`${e}`);
40281
40288
  }
40282
40289
  const encoded = encoder_Encoder.encodeObject(importBlockResultCodec, response);
@@ -40284,7 +40291,7 @@ class ImporterReady extends State {
40284
40291
  response: encoded.raw,
40285
40292
  };
40286
40293
  }
40287
- 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)}.`;
40288
40295
  return {
40289
40296
  response: null,
40290
40297
  };
@@ -40296,7 +40303,7 @@ class ImporterReady extends State {
40296
40303
  this.onBlock.emit(blockView);
40297
40304
  }
40298
40305
  else {
40299
- 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)}.`;
40300
40307
  }
40301
40308
  }
40302
40309
  async endWork() {
@@ -40395,7 +40402,7 @@ class state_machine_MainReady extends State {
40395
40402
  this.onNewBlocks.emit(blocks);
40396
40403
  }
40397
40404
  else {
40398
- 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)}.`;
40399
40406
  }
40400
40407
  }
40401
40408
  announceHeader(port, header) {
@@ -40433,7 +40440,7 @@ class NetworkReady extends State {
40433
40440
  this.onNewHeader.emit(decoded);
40434
40441
  }
40435
40442
  else {
40436
- 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)}.`;
40437
40444
  }
40438
40445
  }
40439
40446
  sendBlocks(port, blocks) {
@@ -42141,12 +42148,14 @@ class WriteablePage extends MemoryPage {
42141
42148
 
42142
42149
 
42143
42150
 
42151
+
42152
+
42144
42153
  var AccessType;
42145
42154
  (function (AccessType) {
42146
42155
  AccessType[AccessType["READ"] = 0] = "READ";
42147
42156
  AccessType[AccessType["WRITE"] = 1] = "WRITE";
42148
42157
  })(AccessType || (AccessType = {}));
42149
- // const logger = Logger.new(import.meta.filename, "pvm:mem");
42158
+ const memory_logger = Logger.new(import.meta.filename, "pvm:mem");
42150
42159
  class Memory {
42151
42160
  sbrkIndex;
42152
42161
  virtualSbrkIndex;
@@ -42177,7 +42186,7 @@ class Memory {
42177
42186
  if (bytes.length === 0) {
42178
42187
  return result_Result.ok(result_OK);
42179
42188
  }
42180
- // logger.insane(`MEM[${address}] <- ${BytesBlob.blobFrom(bytes)}`);
42189
+ memory_logger.insane `MEM[${address}] <- ${bytes_BytesBlob.blobFrom(bytes)}`;
42181
42190
  const pagesResult = this.getPages(address, bytes.length, AccessType.WRITE);
42182
42191
  if (pagesResult.isError) {
42183
42192
  return result_Result.error(pagesResult.error);
@@ -42244,7 +42253,7 @@ class Memory {
42244
42253
  currentPosition += bytesToRead;
42245
42254
  bytesLeft -= bytesToRead;
42246
42255
  }
42247
- // logger.insane(`MEM[${startAddress}] => ${BytesBlob.blobFrom(result)}`);
42256
+ memory_logger.insane `MEM[${startAddress}] => ${bytes_BytesBlob.blobFrom(result)}`;
42248
42257
  return result_Result.ok(result_OK);
42249
42258
  }
42250
42259
  sbrk(length) {
@@ -44174,7 +44183,7 @@ class ProgramDecoder {
44174
44183
  return result_Result.ok(new ProgramDecoder(program));
44175
44184
  }
44176
44185
  catch (e) {
44177
- program_decoder_logger.error(`Invalid program: ${e}`);
44186
+ program_decoder_logger.error `Invalid program: ${e}`;
44178
44187
  return result_Result.error(ProgramDecoderError.InvalidProgramError);
44179
44188
  }
44180
44189
  }
@@ -44340,7 +44349,7 @@ class Interpreter {
44340
44349
  const argsType = instructionArgumentTypeMap[currentInstruction] ?? ArgumentType.NO_ARGUMENTS;
44341
44350
  const argsResult = this.argsDecodingResults[argsType];
44342
44351
  this.argsDecoder.fillArgs(this.pc, argsResult);
44343
- interpreter_logger.insane(`[PC: ${this.pc}] ${Instruction[currentInstruction]}`);
44352
+ interpreter_logger.insane `[PC: ${this.pc}] ${Instruction[currentInstruction]}`;
44344
44353
  if (!isValidInstruction) {
44345
44354
  this.instructionResult.status = pvm_interpreter_result_Result.PANIC;
44346
44355
  }
@@ -44412,7 +44421,7 @@ class Interpreter {
44412
44421
  this.status = status_Status.HOST;
44413
44422
  break;
44414
44423
  }
44415
- 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]}`;
44416
44425
  return this.status;
44417
44426
  }
44418
44427
  this.pc = this.instructionResult.nextPc;
@@ -44659,7 +44668,7 @@ class host_calls_manager_HostCallsManager {
44659
44668
  return `r${idx}=${value} (0x${value.toString(16)})`;
44660
44669
  })
44661
44670
  .join(", ");
44662
- 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}.`;
44663
44672
  }
44664
44673
  }
44665
44674
  class NoopMissing {
@@ -45267,7 +45276,7 @@ class block_generator_state_machine_MainReady extends State {
45267
45276
  this.onBlock.emit(block);
45268
45277
  }
45269
45278
  else {
45270
- 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)}.`;
45271
45280
  }
45272
45281
  }
45273
45282
  finish(channel) {
@@ -45322,12 +45331,12 @@ if (!external_node_worker_threads_namespaceObject.isMainThread) {
45322
45331
  channel
45323
45332
  .then((channel) => main(channel))
45324
45333
  .catch((e) => {
45325
- block_generator_logger.error(e);
45334
+ block_generator_logger.error `${e}`;
45326
45335
  if (e.stack !== undefined) {
45327
- block_generator_logger.error(e.stack);
45336
+ block_generator_logger.error `${e.stack}`;
45328
45337
  }
45329
45338
  if (e.cause !== undefined) {
45330
- block_generator_logger.error(e.cause);
45339
+ block_generator_logger.error `${e.cause}`;
45331
45340
  }
45332
45341
  });
45333
45342
  }
@@ -45335,7 +45344,7 @@ if (!external_node_worker_threads_namespaceObject.isMainThread) {
45335
45344
  * The `BlockGenerator` should periodically create new blocks and send them as signals to the main thread.
45336
45345
  */
45337
45346
  async function main(channel) {
45338
- block_generator_logger.info(`🎁 Block Generator running ${channel.currentState()}`);
45347
+ block_generator_logger.info `🎁 Block Generator running ${channel.currentState()}`;
45339
45348
  // Await the configuration object
45340
45349
  const ready = await channel.waitForState("ready(generator)");
45341
45350
  const config = ready.currentState().getConfig();
@@ -45350,11 +45359,11 @@ async function main(channel) {
45350
45359
  await (0,promises_namespaceObject.setTimeout)(config.chainSpec.slotDuration * 1000);
45351
45360
  counter += 1;
45352
45361
  const newBlock = await generator.nextEncodedBlock();
45353
- block_generator_logger.trace(`Sending block ${counter}`);
45362
+ block_generator_logger.trace `Sending block ${counter}`;
45354
45363
  worker.sendBlock(port, newBlock);
45355
45364
  }
45356
45365
  });
45357
- block_generator_logger.info("Block Generator finished. Closing channel.");
45366
+ block_generator_logger.info `Block Generator finished. Closing channel.`;
45358
45367
  // Close the comms to gracefully close the app.
45359
45368
  finished.currentState().close(channel);
45360
45369
  }
@@ -45469,11 +45478,11 @@ class PeersManagement {
45469
45478
  _onPeerDisconnected = [];
45470
45479
  peers = new Map();
45471
45480
  peerConnected(peer) {
45472
- peers_logger.info(`💡 Peer ${displayId(peer)} connected.`);
45481
+ peers_logger.info `💡 Peer ${displayId(peer)} connected.`;
45473
45482
  const oldPeerData = this.peers.get(peer.id);
45474
45483
  if (oldPeerData !== undefined) {
45475
45484
  // TODO [ToDr] replacing old connection?
45476
- peers_logger.warn("Replacing older connection.");
45485
+ peers_logger.warn `Replacing older connection.`;
45477
45486
  }
45478
45487
  this.peers.set(peer.id, peer);
45479
45488
  for (const callback of this._onPeerConnected) {
@@ -45481,7 +45490,7 @@ class PeersManagement {
45481
45490
  }
45482
45491
  }
45483
45492
  peerDisconnected(peer) {
45484
- peers_logger.info(`⚡︎Peer ${displayId(peer)} disconnected.`);
45493
+ peers_logger.info `⚡︎Peer ${displayId(peer)} disconnected.`;
45485
45494
  this.peers.delete(peer.id);
45486
45495
  for (const callback of this._onPeerDisconnected) {
45487
45496
  callback(peer);
@@ -54273,23 +54282,23 @@ var VerifyCertError;
54273
54282
  VerifyCertError[VerifyCertError["IncorrectSignature"] = 4] = "IncorrectSignature";
54274
54283
  })(VerifyCertError || (VerifyCertError = {}));
54275
54284
  async function verifyCertificate(certs) {
54276
- certificate_logger.log("Incoming peer. Verifying certificate");
54285
+ certificate_logger.log `Incoming peer. Verifying certificate`;
54277
54286
  // Must present exactly one cert
54278
54287
  if (certs.length !== 1) {
54279
- certificate_logger.log("Rejecting peer with no certificates.");
54288
+ certificate_logger.log `Rejecting peer: expected exactly one certificate, got: ${certs.length}`;
54280
54289
  return result_Result.error(VerifyCertError.NoCertificate);
54281
54290
  }
54282
54291
  // Parse with Node's X509Certificate (accepts PEM or DER)
54283
54292
  const xc = new (external_node_crypto_default()).X509Certificate(certs[0]);
54284
54293
  // Must be Ed25519 key
54285
54294
  if (xc.publicKey.asymmetricKeyType !== CURVE_NAME.toLowerCase()) {
54286
- 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}`;
54287
54296
  return result_Result.error(VerifyCertError.NotEd25519);
54288
54297
  }
54289
54298
  // Extract raw public key via JWK export
54290
54299
  const jwk = xc.publicKey.export({ format: "jwk" });
54291
54300
  if (jwk.kty !== KEY_TYPE || jwk.crv !== CURVE_NAME) {
54292
- certificate_logger.log(`Public key type mismatch: ${jwk.kty}, ${jwk.crv}`);
54301
+ certificate_logger.log `Public key type mismatch: ${jwk.kty}, ${jwk.crv}`;
54293
54302
  return result_Result.error(VerifyCertError.PublicKeyTypeMismatch);
54294
54303
  }
54295
54304
  // SAN must be exactly 'e'+base32(rawPub)
@@ -54297,7 +54306,7 @@ async function verifyCertificate(certs) {
54297
54306
  const sanField = xc.subjectAltName ?? "";
54298
54307
  const m = sanField.match(/DNS:([^,]+)/);
54299
54308
  if (m === null || m[1] !== expectedSan) {
54300
- certificate_logger.log(`AltName mismatch. Expected: '${expectedSan}', got: '${m?.[1]}'`);
54309
+ certificate_logger.log `AltName mismatch. Expected: '${expectedSan}', got: '${m?.[1]}'`;
54301
54310
  return result_Result.error(VerifyCertError.AltNameMismatch);
54302
54311
  }
54303
54312
  const key = Buffer.from(jwk.x ?? "", "base64url");
@@ -54564,19 +54573,19 @@ class QuicNetwork {
54564
54573
  }
54565
54574
  this.started = true;
54566
54575
  await this.socket.start({ host: this.listen.host, port: this.listen.port });
54567
- 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}`;
54568
54577
  await this.server.start();
54569
- quic_network_logger.log("🛜 QUIC server listening");
54578
+ quic_network_logger.log `🛜 QUIC server listening`;
54570
54579
  }
54571
54580
  async stop() {
54572
54581
  if (!this.started) {
54573
54582
  throw new Error("Network not started yet!");
54574
54583
  }
54575
- quic_network_logger.info("Stopping the networking.");
54584
+ quic_network_logger.info `Stopping the networking.`;
54576
54585
  await this.server.stop();
54577
54586
  await this.socket.stop();
54578
54587
  this.started = false;
54579
- quic_network_logger.info("Networking stopped.");
54588
+ quic_network_logger.info `Networking stopped.`;
54580
54589
  }
54581
54590
  get peers() {
54582
54591
  return this._peers;
@@ -54597,7 +54606,7 @@ clazz, callback) {
54597
54606
  await callback(ev);
54598
54607
  }
54599
54608
  catch (e) {
54600
- 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}`;
54601
54610
  }
54602
54611
  });
54603
54612
  }
@@ -54656,7 +54665,7 @@ class QuicPeer {
54656
54665
  streamEvents = new (external_node_events_default())();
54657
54666
  constructor(conn, peerInfo) {
54658
54667
  this.conn = conn;
54659
- 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}`;
54660
54669
  this.connectionId = conn.connectionIdShared.toString();
54661
54670
  this.address = {
54662
54671
  host: conn.remoteHost,
@@ -54666,11 +54675,11 @@ class QuicPeer {
54666
54675
  this.key = peerInfo.key;
54667
54676
  addEventListener(conn, EventQUICConnectionStream, (ev) => {
54668
54677
  const stream = ev.detail;
54669
- quic_peer_logger.log(`🚰 [${this.id}] new stream: [${stream.streamId}]`);
54678
+ quic_peer_logger.log `🚰 [${this.id}] new stream: [${stream.streamId}]`;
54670
54679
  this.streamEvents.emit("stream", new QuicStream(stream));
54671
54680
  });
54672
54681
  addEventListener(conn, EventQUICConnectionError, (err) => {
54673
- quic_peer_logger.error(`❌ [${this.id}] connection failed: ${err.detail}`);
54682
+ quic_peer_logger.error `❌ [${this.id}] connection failed: ${err.detail}`;
54674
54683
  });
54675
54684
  }
54676
54685
  addOnIncomingStream(streamCallback) {
@@ -54678,11 +54687,11 @@ class QuicPeer {
54678
54687
  }
54679
54688
  openStream() {
54680
54689
  const stream = this.conn.newStream("bidi");
54681
- quic_peer_logger.log(`🚰 [${this.id}] opening stream: [${stream.streamId}]`);
54690
+ quic_peer_logger.log `🚰 [${this.id}] opening stream: [${stream.streamId}]`;
54682
54691
  return new QuicStream(stream);
54683
54692
  }
54684
54693
  async disconnect() {
54685
- quic_peer_logger.log(`👋 [${this.id}] disconnecting`);
54694
+ quic_peer_logger.log `👋 [${this.id}] disconnecting`;
54686
54695
  await this.conn.stop({ isApp: true });
54687
54696
  }
54688
54697
  }
@@ -54703,7 +54712,7 @@ const setup_logger = Logger.new(import.meta.filename, "net");
54703
54712
  class Quic {
54704
54713
  /** Setup QUIC socket and start listening for connections. */
54705
54714
  static async setup({ host, port, protocols, key }) {
54706
- const quicLoggerLvl = Logger.getLevel("net") > Level.TRACE ? LogLevel.WARN : LogLevel.DEBUG;
54715
+ const quicLoggerLvl = setup_logger.getLevel() > Level.TRACE ? LogLevel.WARN : LogLevel.DEBUG;
54707
54716
  const quicLogger = new dist_Logger("quic", quicLoggerLvl, [
54708
54717
  new handlers_StreamHandler(format `${level}:${keys}:${msg}`),
54709
54718
  ]);
@@ -54726,7 +54735,7 @@ class Quic {
54726
54735
  verifyPeer: true,
54727
54736
  verifyCallback: lastConnectedPeer.verifyCallback,
54728
54737
  };
54729
- 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})`;
54730
54739
  // Shared injected UDP socket
54731
54740
  const socket = new dist_QUICSocket({
54732
54741
  logger: quicLogger.getChild("socket"),
@@ -54741,8 +54750,8 @@ class Quic {
54741
54750
  // peer management
54742
54751
  const peers = new PeersManagement();
54743
54752
  // basic error handling
54744
- addEventListener(server, EventQUICServerError, (error) => setup_logger.error(`🛜 Server error: ${error}`));
54745
- 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}`);
54746
54755
  // handling incoming session
54747
54756
  addEventListener(server, EventQUICServerConnection, async (ev) => {
54748
54757
  const conn = ev.detail;
@@ -54751,16 +54760,16 @@ class Quic {
54751
54760
  return;
54752
54761
  }
54753
54762
  if (lastConnectedPeer.info.key.isEqualTo(key.pubKey)) {
54754
- 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}`;
54755
54764
  await conn.stop();
54756
54765
  return;
54757
54766
  }
54758
54767
  if (peers.isConnected(lastConnectedPeer.info.id)) {
54759
- 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}`;
54760
54769
  await conn.stop();
54761
54770
  return;
54762
54771
  }
54763
- setup_logger.log(`🛜 Server handshake with ${conn.remoteHost}:${conn.remotePort}`);
54772
+ setup_logger.log `🛜 Server handshake with ${conn.remoteHost}:${conn.remotePort}`;
54764
54773
  newPeer(conn, lastConnectedPeer.info);
54765
54774
  lastConnectedPeer.info = null;
54766
54775
  await conn.start();
@@ -54783,10 +54792,10 @@ class Quic {
54783
54792
  });
54784
54793
  const client = await clientLater;
54785
54794
  addEventListener(client, EventQUICClientClose, () => {
54786
- setup_logger.log("⚰️ Client connection closed.");
54795
+ setup_logger.log `⚰️ Client connection closed.`;
54787
54796
  });
54788
54797
  addEventListener(client, EventQUICClientError, (error) => {
54789
- setup_logger.error(`🔴 Client error: ${error.detail}`);
54798
+ setup_logger.error `🔴 Client error: ${error.detail}`;
54790
54799
  });
54791
54800
  if (peerDetails.info === null) {
54792
54801
  throw new Error("Client connected, but there is no peer details!");
@@ -54794,7 +54803,7 @@ class Quic {
54794
54803
  if (options.verifyName !== undefined && options.verifyName !== peerDetails.info.id) {
54795
54804
  throw new Error(`Client connected, but the id didn't match. Expected: ${options.verifyName}, got: ${peerDetails.info.id}`);
54796
54805
  }
54797
- setup_logger.log(`🤝 Client handshake with: ${peer.host}:${peer.port}`);
54806
+ setup_logger.log `🤝 Client handshake with: ${peer.host}:${peer.port}`;
54798
54807
  return newPeer(client.connection, peerDetails.info);
54799
54808
  }
54800
54809
  function newPeer(conn, peerInfo) {
@@ -54914,10 +54923,10 @@ class Connections {
54914
54923
  for (;;) {
54915
54924
  // increase the reconnection counter
54916
54925
  meta.currentRetry += 1;
54917
- if (meta.currentRetry >= meta.maxRetries) {
54926
+ if (meta.currentRetry > meta.maxRetries) {
54918
54927
  // reached max retries for a peer, remove it from tracking.
54919
54928
  this.peerInfo.delete(id);
54920
- jamnp_s_peers_logger.log(`[${id}] max retries reached. Removing peer.`);
54929
+ jamnp_s_peers_logger.log `[${id}] max retries reached. Removing peer.`;
54921
54930
  return;
54922
54931
  }
54923
54932
  // else attempt to connect to a node a bit later.
@@ -54936,7 +54945,7 @@ class Connections {
54936
54945
  }
54937
54946
  // attempt to connect to the peer
54938
54947
  try {
54939
- 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}.`;
54940
54949
  await this.network.dial(meta.address, { signal, verifyName: meta.peerId });
54941
54950
  return;
54942
54951
  }
@@ -54945,7 +54954,7 @@ class Connections {
54945
54954
  return;
54946
54955
  }
54947
54956
  // failing to connect, will retry.
54948
- 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})`;
54949
54958
  }
54950
54959
  }
54951
54960
  }
@@ -55058,7 +55067,7 @@ class StreamManager {
55058
55067
  // We expect a one-byte identifier first.
55059
55068
  const data = await reader.read();
55060
55069
  bytes = bytes_BytesBlob.blobFrom(data.value !== undefined ? data.value : new Uint8Array());
55061
- stream_manager_logger.trace(`🚰 --> [${peer.id}:${streamId}] Initial data: ${bytes}`);
55070
+ stream_manager_logger.trace `🚰 --> [${peer.id}:${streamId}] Initial data: ${bytes}`;
55062
55071
  }
55063
55072
  finally {
55064
55073
  reader.releaseLock();
@@ -55072,7 +55081,7 @@ class StreamManager {
55072
55081
  if (handler === undefined) {
55073
55082
  throw new Error(`Unsupported stream kind: ${kind}`);
55074
55083
  }
55075
- 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}`;
55076
55085
  this.registerStream(peer, handler, stream, bytes_BytesBlob.blobFrom(bytes.raw.subarray(1)));
55077
55086
  }
55078
55087
  registerStream(peer, handler, stream, initialData) {
@@ -55082,7 +55091,7 @@ class StreamManager {
55082
55091
  this.streams.delete(streamId);
55083
55092
  this.backgroundTasks.delete(streamId);
55084
55093
  if (kind === StreamErrorKind.Exception) {
55085
- 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.`;
55086
55095
  }
55087
55096
  if (kind !== StreamErrorKind.LocalClose) {
55088
55097
  // whenever we have an error, we are going to inform the handler
@@ -55116,10 +55125,10 @@ async function readStreamForever(peer, handler, quicStream, initialData, reader)
55116
55125
  let isDone = false;
55117
55126
  const callback = handleMessageFragmentation((data) => {
55118
55127
  const bytes = bytes_BytesBlob.blobFrom(new Uint8Array(data));
55119
- stream_manager_logger.trace(`🚰 --> [${peer.id}:${quicStream.streamId}] ${bytes}`);
55128
+ stream_manager_logger.trace `🚰 --> [${peer.id}:${quicStream.streamId}] ${bytes}`;
55120
55129
  handler.onStreamMessage(quicStream, bytes);
55121
55130
  }, () => {
55122
- 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.`;
55123
55132
  peer.disconnect();
55124
55133
  });
55125
55134
  for (;;) {
@@ -55128,7 +55137,7 @@ async function readStreamForever(peer, handler, quicStream, initialData, reader)
55128
55137
  // be a promise, so that we can make back pressure here.
55129
55138
  callback(bytes.raw);
55130
55139
  if (isDone) {
55131
- stream_manager_logger.log(`🚰 --> [${peer.id}:${quicStream.streamId}] remote finished.`);
55140
+ stream_manager_logger.log `🚰 --> [${peer.id}:${quicStream.streamId}] remote finished.`;
55132
55141
  return;
55133
55142
  }
55134
55143
  // await for more data
@@ -55171,7 +55180,7 @@ class QuicStreamSender {
55171
55180
  return;
55172
55181
  }
55173
55182
  const { data, addPrefix } = chunk;
55174
- stream_manager_logger.trace(`🚰 <-- [${this.streamId}] write: ${data}`);
55183
+ stream_manager_logger.trace `🚰 <-- [${this.streamId}] write: ${data}`;
55175
55184
  if (addPrefix) {
55176
55185
  await writer.write(encodeMessageLength(data.raw));
55177
55186
  }
@@ -55188,7 +55197,7 @@ class QuicStreamSender {
55188
55197
  }
55189
55198
  close() {
55190
55199
  handleAsyncErrors(async () => {
55191
- stream_manager_logger.trace(`🚰 <-- [${this.streamId}] closing`);
55200
+ stream_manager_logger.trace `🚰 <-- [${this.streamId}] closing`;
55192
55201
  if (this.currentWriterPromise !== null) {
55193
55202
  await this.currentWriterPromise;
55194
55203
  }
@@ -55274,7 +55283,7 @@ class ServerHandler {
55274
55283
  }
55275
55284
  onStreamMessage(sender, message) {
55276
55285
  const request = decoder_Decoder.decodeObject(BlockRequest.Codec, message);
55277
- 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}`;
55278
55287
  const blocks = this.getBlockSequence(sender.streamId, request.headerHash, request.direction, request.maxBlocks);
55279
55288
  sender.bufferAndSend(encoder_Encoder.encodeObject(descriptors_codec.sequenceFixLen(Block.Codec.View, blocks.length), blocks, this.chainSpec));
55280
55289
  sender.close();
@@ -55294,7 +55303,7 @@ class ClientHandler {
55294
55303
  throw new Error("Received an unexpected message from the server.");
55295
55304
  }
55296
55305
  const blocks = decoder_Decoder.decodeSequence(Block.Codec.View, message, this.chainSpec);
55297
- 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.`;
55298
55307
  this.promiseResolvers.get(sender.streamId)?.(blocks);
55299
55308
  this.promiseResolvers.delete(sender.streamId);
55300
55309
  }
@@ -55465,13 +55474,13 @@ class ce_129_state_request_Handler {
55465
55474
  }
55466
55475
  onStreamMessage(sender, message) {
55467
55476
  if (this.isServer) {
55468
- ce_129_state_request_logger.info(`[${sender.streamId}][server]: Received request.`);
55477
+ ce_129_state_request_logger.info `[${sender.streamId}][server]: Received request.`;
55469
55478
  if (this.getBoundaryNodes === undefined || this.getKeyValuePairs === undefined)
55470
55479
  return;
55471
55480
  const request = decoder_Decoder.decodeObject(StateRequest.Codec, message);
55472
55481
  const boundaryNodes = this.getBoundaryNodes(request.headerHash, request.startKey, request.endKey);
55473
55482
  const keyValuePairs = this.getKeyValuePairs(request.headerHash, request.startKey, request.endKey);
55474
- 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.`;
55475
55484
  sender.bufferAndSend(encoder_Encoder.encodeObject(descriptors_codec.sequenceVarLen(trieNodeCodec), boundaryNodes));
55476
55485
  sender.bufferAndSend(encoder_Encoder.encodeObject(StateResponse.Codec, StateResponse.create({ keyValuePairs })));
55477
55486
  sender.close();
@@ -55479,11 +55488,11 @@ class ce_129_state_request_Handler {
55479
55488
  }
55480
55489
  if (!this.boundaryNodes.has(sender.streamId)) {
55481
55490
  this.boundaryNodes.set(sender.streamId, decoder_Decoder.decodeObject(descriptors_codec.sequenceVarLen(trieNodeCodec), message));
55482
- 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.`;
55483
55492
  return;
55484
55493
  }
55485
55494
  this.onResponse.get(sender.streamId)?.(decoder_Decoder.decodeObject(StateResponse.Codec, message));
55486
- 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.`;
55487
55496
  }
55488
55497
  onClose(streamId) {
55489
55498
  this.boundaryNodes.delete(streamId);
@@ -55540,7 +55549,7 @@ class ce_131_ce_132_safrole_ticket_distribution_ServerHandler {
55540
55549
  }
55541
55550
  onStreamMessage(sender, message) {
55542
55551
  const ticketDistribution = Decoder.decodeObject(TicketDistributionRequest.Codec, message);
55543
- 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}`;
55544
55553
  this.onTicketReceived(ticketDistribution.epochIndex, ticketDistribution.ticket);
55545
55554
  sender.close();
55546
55555
  }
@@ -55552,7 +55561,7 @@ class ce_131_ce_132_safrole_ticket_distribution_ClientHandler {
55552
55561
  this.kind = kind;
55553
55562
  }
55554
55563
  onStreamMessage(sender) {
55555
- 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.`;
55556
55565
  sender.close();
55557
55566
  }
55558
55567
  onClose() { }
@@ -55625,15 +55634,15 @@ class ce_133_work_package_submission_ServerHandler {
55625
55634
  class ce_133_work_package_submission_ClientHandler {
55626
55635
  kind = ce_133_work_package_submission_STREAM_KIND;
55627
55636
  onStreamMessage(sender) {
55628
- 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.`;
55629
55638
  sender.close();
55630
55639
  }
55631
55640
  onClose() { }
55632
55641
  sendWorkPackage(sender, coreIndex, workPackage, extrinsic) {
55633
55642
  const corePack = CoreWorkPackage.create({ coreIndex, workPackage });
55634
- 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}`;
55635
55644
  sender.bufferAndSend(Encoder.encodeObject(CoreWorkPackage.Codec, corePack));
55636
- 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}`;
55637
55646
  sender.bufferAndSend(Encoder.encodeObject(workItemExtrinsicsCodec(workPackage.items), extrinsic));
55638
55647
  // now close the connection
55639
55648
  sender.close();
@@ -55709,7 +55718,7 @@ class ce_134_work_package_sharing_ServerHandler {
55709
55718
  ce_134_work_package_sharing_ServerHandler.sendWorkReport(sender, workReportHash, signature);
55710
55719
  })
55711
55720
  .catch((error) => {
55712
- 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}`;
55713
55722
  this.onClose(streamId);
55714
55723
  });
55715
55724
  }
@@ -55726,7 +55735,7 @@ class ce_134_work_package_sharing_ClientHandler {
55726
55735
  throw new Error("Unexpected message received.");
55727
55736
  }
55728
55737
  const response = Decoder.decodeObject(WorkPackageSharingResponse.Codec, message);
55729
- 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.`;
55730
55739
  pendingRequest.resolve({ workReportHash: response.workReportHash, signature: response.signature });
55731
55740
  sender.close();
55732
55741
  }
@@ -55739,9 +55748,9 @@ class ce_134_work_package_sharing_ClientHandler {
55739
55748
  }
55740
55749
  async sendWorkPackage(sender, coreIndex, segmentsRootMappings, workPackageBundle) {
55741
55750
  const request = WorkPackageSharingRequest.create({ coreIndex, segmentsRootMappings });
55742
- 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.`;
55743
55752
  sender.bufferAndSend(Encoder.encodeObject(WorkPackageSharingRequest.Codec, request));
55744
- 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.`;
55745
55754
  sender.bufferAndSend(Encoder.encodeObject(WorkPackageBundleCodec, workPackageBundle));
55746
55755
  return new Promise((resolve, reject) => {
55747
55756
  this.pendingRequests.set(sender.streamId, { resolve, reject });
@@ -55801,7 +55810,7 @@ class ce_135_work_report_distribution_ServerHandler {
55801
55810
  }
55802
55811
  onStreamMessage(sender, message) {
55803
55812
  const guaranteedWorkReport = Decoder.decodeObject(GuaranteedWorkReport.Codec, message, this.chainSpec);
55804
- 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.`;
55805
55814
  this.onWorkReport(guaranteedWorkReport);
55806
55815
  sender.close();
55807
55816
  }
@@ -55814,12 +55823,12 @@ class ce_135_work_report_distribution_ClientHandler {
55814
55823
  this.chainSpec = chainSpec;
55815
55824
  }
55816
55825
  onStreamMessage(sender) {
55817
- 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.`;
55818
55827
  sender.close();
55819
55828
  }
55820
55829
  onClose() { }
55821
55830
  sendWorkReport(sender, workReport) {
55822
- 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.`;
55823
55832
  sender.bufferAndSend(Encoder.encodeObject(GuaranteedWorkReport.Codec, workReport, this.chainSpec));
55824
55833
  sender.close();
55825
55834
  }
@@ -55925,7 +55934,7 @@ class up_0_block_announcement_Handler {
55925
55934
  this.handshakes.set(streamId, handshake);
55926
55935
  // we didn't initiate this handshake, so let's respond
55927
55936
  if (!this.pendingHandshakes.delete(streamId)) {
55928
- up_0_block_announcement_logger.log(`[${streamId}] <-- responding with a handshake.`);
55937
+ up_0_block_announcement_logger.log `[${streamId}] <-- responding with a handshake.`;
55929
55938
  sender.bufferAndSend(encoder_Encoder.encodeObject(Handshake.Codec, this.getHandshake()));
55930
55939
  }
55931
55940
  this.onHandshake(streamId, handshake);
@@ -55933,7 +55942,7 @@ class up_0_block_announcement_Handler {
55933
55942
  }
55934
55943
  // it's just an announcement
55935
55944
  const annoucement = decoder_Decoder.decodeObject(Announcement.Codec, message, this.spec);
55936
- 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}`;
55937
55946
  this.onAnnouncement(streamId, annoucement);
55938
55947
  }
55939
55948
  onClose(streamId) {
@@ -55946,7 +55955,7 @@ class up_0_block_announcement_Handler {
55946
55955
  return;
55947
55956
  }
55948
55957
  const handshake = this.getHandshake();
55949
- up_0_block_announcement_logger.trace(`[${streamId}] <-- sending handshake`);
55958
+ up_0_block_announcement_logger.trace `[${streamId}] <-- sending handshake`;
55950
55959
  this.pendingHandshakes.set(sender.streamId, true);
55951
55960
  sender.bufferAndSend(encoder_Encoder.encodeObject(Handshake.Codec, handshake));
55952
55961
  }
@@ -55954,11 +55963,11 @@ class up_0_block_announcement_Handler {
55954
55963
  const { streamId } = sender;
55955
55964
  // only send announcement if we've handshaken
55956
55965
  if (this.handshakes.has(streamId)) {
55957
- 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}`;
55958
55967
  sender.bufferAndSend(encoder_Encoder.encodeObject(Announcement.Codec, annoucement, this.spec));
55959
55968
  }
55960
55969
  else {
55961
- 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.`;
55962
55971
  }
55963
55972
  }
55964
55973
  }
@@ -56075,7 +56084,7 @@ class SyncTask {
56075
56084
  onUp0Annoucement(peer, announcement) {
56076
56085
  const { hash, slot } = announcement.final;
56077
56086
  const bestHeader = hashHeader(announcement.header, this.spec);
56078
- 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}`;
56079
56088
  // NOTE [ToDr] Instead of having `Connections` store aux data perhaps
56080
56089
  // we should maintain that directly? However that would require
56081
56090
  // listening to peers connected/disconnected to perfrom some cleanups
@@ -56150,7 +56159,7 @@ class SyncTask {
56150
56159
  const peers = this.connections.getConnectedPeers();
56151
56160
  for (const peerInfo of peers) {
56152
56161
  this.streamManager.withStreamOfKind(peerInfo.peerId, up_0_block_announcement_STREAM_KIND, (handler, sender) => {
56153
- sync_logger.log(`[${peerInfo.peerId}] <-- Broadcasting new header #${slot}: ${header.hash}`);
56162
+ sync_logger.log `[${peerInfo.peerId}] <-- Broadcasting new header #${slot}: ${header.hash}`;
56154
56163
  handler.sendAnnouncement(sender, annoucement);
56155
56164
  return result_OK;
56156
56165
  });
@@ -56164,13 +56173,13 @@ class SyncTask {
56164
56173
  }
56165
56174
  if (res.error === BlockSequenceError.BlockOnFork) {
56166
56175
  // seems that peer is requesting syncing a fork from us, let's bail.
56167
- 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.`;
56168
56177
  return [];
56169
56178
  }
56170
56179
  if (res.error === BlockSequenceError.NoStartBlock) {
56171
56180
  // we don't know about that block at all, so let's just bail.
56172
56181
  // we should probably penalize the peer for sending BS?
56173
- 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.`;
56174
56183
  return [];
56175
56184
  }
56176
56185
  debug_assertNever(res.error);
@@ -56190,10 +56199,10 @@ class SyncTask {
56190
56199
  // figure out where others are at
56191
56200
  const othersBest = this.othersBest;
56192
56201
  const blocksToSync = othersBest.slot - ourBestSlot;
56193
- sync_logger.trace(`Our best. ${ourBestSlot}. Best seen: ${othersBest.slot}`);
56202
+ sync_logger.trace `Our best. ${ourBestSlot}. Best seen: ${othersBest.slot}`;
56194
56203
  if (blocksToSync < 1) {
56195
56204
  this.connections.getPeerCount();
56196
- sync_logger.trace(`No new blocks. ${peerCount} peers.`);
56205
+ sync_logger.trace `No new blocks. ${peerCount} peers.`;
56197
56206
  return {
56198
56207
  kind: SyncResult.NoNewBlocks,
56199
56208
  ours: ourBestSlot,
@@ -56201,7 +56210,7 @@ class SyncTask {
56201
56210
  };
56202
56211
  }
56203
56212
  const requested = [];
56204
- sync_logger.log(`Sync ${blocksToSync} blocks from ${peerCount} peers.`);
56213
+ sync_logger.log `Sync ${blocksToSync} blocks from ${peerCount} peers.`;
56205
56214
  // NOTE [ToDr] We might be requesting the same blocks from many peers
56206
56215
  // which isn't very optimal, but for now: 🤷
56207
56216
  //
@@ -56227,12 +56236,12 @@ class SyncTask {
56227
56236
  // request as much blocks from that peer as possible.
56228
56237
  this.streamManager.withNewStream(peerInfo.peerRef, STREAM_KIND, (handler, sender) => {
56229
56238
  handleAsyncErrors(async () => {
56230
- sync_logger.log(`Fetching blocks from ${peerInfo.peerId}.`);
56239
+ sync_logger.log `[${peerInfo.peerId}] <-- Fetching ${bestSlot - ourBestSlot} blocks (${bestHash})`;
56231
56240
  const blocks = await handler.requestBlockSequence(sender, bestHash, Direction.DescIncl, numbers_tryAsU32(bestSlot - ourBestSlot));
56232
56241
  blocks.reverse();
56233
56242
  this.onNewBlocks(blocks, peerInfo.peerId);
56234
56243
  }, (e) => {
56235
- sync_logger.warn(`[${peerInfo.peerId}] --> requesting blocks to import: ${e}`);
56244
+ sync_logger.warn `[${peerInfo.peerId}] <-- requesting blocks to import: ${e}`;
56236
56245
  });
56237
56246
  return result_OK;
56238
56247
  });
@@ -56306,7 +56315,7 @@ function setupPeerListeners(syncTask, network, streamManager) {
56306
56315
  // whenever the peer wants to open a stream with us, let's handle that.
56307
56316
  peer.addOnIncomingStream((stream) => {
56308
56317
  handleAsyncErrors(() => streamManager.onIncomingStream(peer, stream), (e) => {
56309
- 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.`;
56310
56319
  peer.disconnect();
56311
56320
  });
56312
56321
  return result_OK;
@@ -56556,10 +56565,10 @@ class FuzzTarget {
56556
56565
  async onSocketMessage(msg) {
56557
56566
  // attempt to decode the messsage
56558
56567
  const message = decoder_Decoder.decodeObject(messageCodec, msg, this.spec);
56559
- handler_logger.log(`[${message.type}] incoming message`);
56568
+ handler_logger.log `[${message.type}] incoming message`;
56560
56569
  await processAndRespond(this.spec, message, this.msgHandler, this.sender).catch((e) => {
56561
- handler_logger.error(`Error while processing fuzz v0 message: ${e}`);
56562
- handler_logger.error(e);
56570
+ handler_logger.error `Error while processing fuzz v0 message: ${e}`;
56571
+ handler_logger.error `${e}`;
56563
56572
  this.sender.close();
56564
56573
  });
56565
56574
  return;
@@ -56600,17 +56609,17 @@ class FuzzTarget {
56600
56609
  break;
56601
56610
  }
56602
56611
  case MessageType.State: {
56603
- handler_logger.log(`--> Received unexpected 'State' message from the fuzzer. Closing.`);
56612
+ handler_logger.log `--> Received unexpected 'State' message from the fuzzer. Closing.`;
56604
56613
  sender.close();
56605
56614
  return;
56606
56615
  }
56607
56616
  case MessageType.StateRoot: {
56608
- handler_logger.log(`--> Received unexpected 'StateRoot' message from the fuzzer. Closing.`);
56617
+ handler_logger.log `--> Received unexpected 'StateRoot' message from the fuzzer. Closing.`;
56609
56618
  sender.close();
56610
56619
  return;
56611
56620
  }
56612
56621
  default: {
56613
- 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.`;
56614
56623
  sender.close();
56615
56624
  try {
56616
56625
  debug_assertNever(message);
@@ -56621,17 +56630,17 @@ class FuzzTarget {
56621
56630
  }
56622
56631
  }
56623
56632
  if (response !== null) {
56624
- handler_logger.trace(`<-- responding with: ${response.type}`);
56633
+ handler_logger.trace `<-- responding with: ${response.type}`;
56625
56634
  const encoded = encoder_Encoder.encodeObject(messageCodec, response, spec);
56626
56635
  sender.send(encoded);
56627
56636
  }
56628
56637
  else {
56629
- handler_logger.warn(`<-- no response generated for: ${message.type}`);
56638
+ handler_logger.warn `<-- no response generated for: ${message.type}`;
56630
56639
  }
56631
56640
  }
56632
56641
  }
56633
56642
  onClose({ error }) {
56634
- 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"}.`;
56635
56644
  }
56636
56645
  }
56637
56646
 
@@ -56885,14 +56894,14 @@ class handler_FuzzTarget {
56885
56894
  // attempt to decode the messsage
56886
56895
  try {
56887
56896
  const message = decoder_Decoder.decodeObject(types_messageCodec, msg, this.spec);
56888
- v1_handler_logger.log(`[${message.type}] incoming message`);
56897
+ v1_handler_logger.log `[${message.type}] incoming message`;
56889
56898
  await this.processAndRespond(message);
56890
56899
  }
56891
56900
  catch (e) {
56892
- v1_handler_logger.error(`Error while processing fuzz v1 message: ${e}`);
56893
- v1_handler_logger.error(`${e}`);
56901
+ v1_handler_logger.error `Error while processing fuzz v1 message: ${e}`;
56902
+ v1_handler_logger.error `${e}`;
56894
56903
  if (e instanceof Error) {
56895
- v1_handler_logger.error(e.stack ?? "");
56904
+ v1_handler_logger.error `${e.stack ?? ""}`;
56896
56905
  }
56897
56906
  this.sender.close();
56898
56907
  }
@@ -56903,7 +56912,7 @@ class handler_FuzzTarget {
56903
56912
  case types_MessageType.PeerInfo: {
56904
56913
  // only support V1
56905
56914
  if (message.value.fuzzVersion !== 1) {
56906
- 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`;
56907
56916
  this.sender.close();
56908
56917
  return;
56909
56918
  }
@@ -56911,9 +56920,9 @@ class handler_FuzzTarget {
56911
56920
  const ourPeerInfo = await this.msgHandler.getPeerInfo(message.value);
56912
56921
  // Calculate session features (intersection of both peer features)
56913
56922
  this.sessionFeatures = message.value.features & ourPeerInfo.features;
56914
- v1_handler_logger.info(`Handshake completed. Shared features: 0b${this.sessionFeatures.toString(2)}`);
56915
- v1_handler_logger.log(`Feature ancestry: ${(this.sessionFeatures & Features.Ancestry) !== 0}`);
56916
- 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}`;
56917
56926
  response = {
56918
56927
  type: types_MessageType.PeerInfo,
56919
56928
  value: ourPeerInfo,
@@ -56953,22 +56962,22 @@ class handler_FuzzTarget {
56953
56962
  break;
56954
56963
  }
56955
56964
  case types_MessageType.StateRoot: {
56956
- 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.`;
56957
56966
  this.sender.close();
56958
56967
  return;
56959
56968
  }
56960
56969
  case types_MessageType.State: {
56961
- 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.`;
56962
56971
  this.sender.close();
56963
56972
  return;
56964
56973
  }
56965
56974
  case types_MessageType.Error: {
56966
- 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.`;
56967
56976
  this.sender.close();
56968
56977
  return;
56969
56978
  }
56970
56979
  default: {
56971
- 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.`;
56972
56981
  this.sender.close();
56973
56982
  try {
56974
56983
  debug_assertNever(message);
@@ -56979,16 +56988,16 @@ class handler_FuzzTarget {
56979
56988
  }
56980
56989
  }
56981
56990
  if (response !== null) {
56982
- v1_handler_logger.trace(`<-- responding with: ${response.type}`);
56991
+ v1_handler_logger.trace `<-- responding with: ${response.type}`;
56983
56992
  const encoded = encoder_Encoder.encodeObject(types_messageCodec, response, this.spec);
56984
56993
  this.sender.send(encoded);
56985
56994
  }
56986
56995
  else {
56987
- v1_handler_logger.warn(`<-- no response generated for: ${message.type}`);
56996
+ v1_handler_logger.warn `<-- no response generated for: ${message.type}`;
56988
56997
  }
56989
56998
  }
56990
56999
  onClose({ error }) {
56991
- 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"}.`;
56992
57001
  }
56993
57002
  /** Check if a specific feature is enabled in the session */
56994
57003
  hasFeature(feature) {
@@ -57034,7 +57043,7 @@ function startIpcServer(name, newMessageHandler) {
57034
57043
  const logger = Logger.new(import.meta.filename, "ext-ipc");
57035
57044
  // Create the IPC server
57036
57045
  const server = (0,external_node_net_namespaceObject.createServer)((socket) => {
57037
- logger.log("Client connected");
57046
+ logger.log `Client connected`;
57038
57047
  const messageHandler = newMessageHandler(new IpcSender(socket));
57039
57048
  // Handle incoming data from the client
57040
57049
  socket.on("data", handleMessageFragmentation(async (data) => {
@@ -57046,23 +57055,23 @@ function startIpcServer(name, newMessageHandler) {
57046
57055
  await messageHandler.onSocketMessage(data);
57047
57056
  }
57048
57057
  catch (e) {
57049
- logger.error(`Received invalid data on socket: ${e}. Closing connection.`);
57058
+ logger.error `Received invalid data on socket: ${e}. Closing connection.`;
57050
57059
  socket.end();
57051
57060
  }
57052
57061
  finally {
57053
57062
  socket.resume();
57054
57063
  }
57055
57064
  }, () => {
57056
- logger.error("Received too much data on socket. Closing connection.");
57065
+ logger.error `Received too much data on socket. Closing connection.`;
57057
57066
  socket.end();
57058
57067
  }));
57059
57068
  // Handle client disconnection
57060
57069
  socket.on("end", () => {
57061
- logger.log("Client disconnected");
57070
+ logger.log `Client disconnected`;
57062
57071
  messageHandler.onClose({});
57063
57072
  });
57064
57073
  socket.on("error", (error) => {
57065
- logger.error(`Socket error: ${error}`);
57074
+ logger.error `Socket error: ${error}`;
57066
57075
  messageHandler.onClose({ error });
57067
57076
  socket.end();
57068
57077
  });
@@ -57077,14 +57086,14 @@ function startIpcServer(name, newMessageHandler) {
57077
57086
  path: socketPath,
57078
57087
  signal: controller.signal,
57079
57088
  }, () => {
57080
- logger.log(`IPC server is listening at ${socketPath}`);
57089
+ logger.log `IPC server is listening at ${socketPath}`;
57081
57090
  });
57082
57091
  // Handle server errors
57083
57092
  server.on("error", (err) => {
57084
57093
  throw err;
57085
57094
  });
57086
57095
  return () => {
57087
- logger.info("Closing IPC server.");
57096
+ logger.info `Closing IPC server.`;
57088
57097
  // stop accepting new connections
57089
57098
  server.close();
57090
57099
  // abort the server
@@ -57229,7 +57238,7 @@ class JamnpIpcHandler {
57229
57238
  // decode the message as `StreamEnvelope`
57230
57239
  const envelope = decoder_Decoder.decodeObject(StreamEnvelope.Codec, msg);
57231
57240
  const streamId = envelope.streamId;
57232
- jamnp_handler_logger.log(`[${streamId}] incoming message: ${envelope.type} ${envelope.data}`);
57241
+ jamnp_handler_logger.log `[${streamId}] incoming message: ${envelope.type} ${envelope.data}`;
57233
57242
  // check if this is a already known stream id
57234
57243
  const streamHandler = this.streams.get(streamId);
57235
57244
  const streamSender = new EnvelopeSender(streamId, this.sender);
@@ -57237,13 +57246,13 @@ class JamnpIpcHandler {
57237
57246
  if (streamHandler === undefined) {
57238
57247
  // closing or message of unknown stream - ignore.
57239
57248
  if (envelope.type !== StreamEnvelopeType.Open) {
57240
- jamnp_handler_logger.warn(`[${streamId}] (unknown) got invalid type ${envelope.type}.`);
57249
+ jamnp_handler_logger.warn `[${streamId}] (unknown) got invalid type ${envelope.type}.`;
57241
57250
  return;
57242
57251
  }
57243
57252
  const newStream = decoder_Decoder.decodeObject(NewStream.Codec, envelope.data);
57244
57253
  const handler = this.streamHandlers.get(newStream.streamByte);
57245
57254
  if (handler !== undefined) {
57246
- jamnp_handler_logger.log(`[${streamId}] new stream for ${handler.kind}`);
57255
+ jamnp_handler_logger.log `[${streamId}] new stream for ${handler.kind}`;
57247
57256
  // insert the stream
57248
57257
  this.streams.set(streamId, handler);
57249
57258
  // Just send back the same stream byte.
@@ -57264,7 +57273,7 @@ class JamnpIpcHandler {
57264
57273
  if (envelope.type !== StreamEnvelopeType.Msg) {
57265
57274
  // display a warning but only if the stream was not pending for confirmation.
57266
57275
  if (!this.pendingStreams.delete(streamId)) {
57267
- jamnp_handler_logger.warn(`[${streamId}] got invalid type ${envelope.type}.`);
57276
+ jamnp_handler_logger.warn `[${streamId}] got invalid type ${envelope.type}.`;
57268
57277
  }
57269
57278
  return;
57270
57279
  }
@@ -57273,7 +57282,7 @@ class JamnpIpcHandler {
57273
57282
  }
57274
57283
  /** Notify about termination of the underlying socket. */
57275
57284
  onClose({ error }) {
57276
- 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"}.`;
57277
57286
  // Socket closed - we should probably clear everything.
57278
57287
  for (const [streamId, handler] of this.streams.entries()) {
57279
57288
  handler.onClose(streamId, error === undefined);
@@ -57290,7 +57299,7 @@ class JamnpIpcHandler {
57290
57299
  }
57291
57300
  /** Wait for the handler to be finished either via close or error. */
57292
57301
  waitForEnd() {
57293
- jamnp_handler_logger.log("Waiting for the handler to be closed.");
57302
+ jamnp_handler_logger.log `Waiting for the handler to be closed.`;
57294
57303
  return this.onEnd.listen;
57295
57304
  }
57296
57305
  }
@@ -57419,7 +57428,7 @@ class FuzzHandler {
57419
57428
  async getSerializedState(value) {
57420
57429
  const state = await this.api.getPostSerializedState(value);
57421
57430
  if (state === null) {
57422
- ipc_logger.warn(`Fuzzer requested non-existing state for: ${value}`);
57431
+ ipc_logger.warn `Fuzzer requested non-existing state for: ${value}`;
57423
57432
  return [];
57424
57433
  }
57425
57434
  return Array.from(state).map(([key, value]) => {
@@ -57445,7 +57454,7 @@ class FuzzHandler {
57445
57454
  if (res.isOk) {
57446
57455
  return res;
57447
57456
  }
57448
- ipc_logger.log(`Rejecting block with error: ${res.error}. ${res.details}`);
57457
+ ipc_logger.log `Rejecting block with error: ${res.error}. ${res.details}`;
57449
57458
  return result_Result.error(ErrorMessage.create({ message: res.error }));
57450
57459
  }
57451
57460
  async importBlockV0(value) {
@@ -57453,11 +57462,11 @@ class FuzzHandler {
57453
57462
  if (res.isOk) {
57454
57463
  return res.ok;
57455
57464
  }
57456
- 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}`;
57457
57466
  return this.api.getBestStateRootHash();
57458
57467
  }
57459
57468
  async getPeerInfo(value) {
57460
- ipc_logger.info(`Fuzzer ${value} connected.`);
57469
+ ipc_logger.info `Fuzzer ${value} connected.`;
57461
57470
  return types_PeerInfo.create({
57462
57471
  name: this.api.nodeName,
57463
57472
  appVersion: this.api.nodeVersion,
@@ -57468,7 +57477,7 @@ class FuzzHandler {
57468
57477
  });
57469
57478
  }
57470
57479
  async getPeerInfoV0(value) {
57471
- ipc_logger.info(`Fuzzer ${value} connected.`);
57480
+ ipc_logger.info `Fuzzer ${value} connected.`;
57472
57481
  return PeerInfo.create({
57473
57482
  name: this.api.nodeName,
57474
57483
  appVersion: this.api.nodeVersion,
@@ -57501,7 +57510,7 @@ if (!external_node_worker_threads_namespaceObject.isMainThread) {
57501
57510
  Logger.configureAll(process.env.JAM_LOG ?? "", Level.LOG);
57502
57511
  const machine = networkStateMachine();
57503
57512
  const channel = MessageChannelStateMachine.receiveChannel(machine, external_node_worker_threads_namespaceObject.parentPort);
57504
- 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}`);
57505
57514
  }
57506
57515
  /**
57507
57516
  * JAM networking worker.
@@ -57512,7 +57521,7 @@ if (!external_node_worker_threads_namespaceObject.isMainThread) {
57512
57521
  */
57513
57522
  async function jam_network_main(channel) {
57514
57523
  await initAll();
57515
- jam_network_logger.trace(`🛜 Network starting ${channel.currentState()}`);
57524
+ jam_network_logger.trace `🛜 Network starting ${channel.currentState()}`;
57516
57525
  // Await the configuration object
57517
57526
  // TODO [ToDr] The whole state machine needs to die.
57518
57527
  const ready = channel.currentState().stateName !== "ready(network)"
@@ -57523,7 +57532,7 @@ async function jam_network_main(channel) {
57523
57532
  const key = await ed25519_privateKey(config.key);
57524
57533
  const lmdb = new LmdbRoot(config.genericConfig.dbPath);
57525
57534
  const blocks = new LmdbBlocks(config.genericConfig.chainSpec, lmdb);
57526
- jam_network_logger.info(`🛜 Listening at ${config.host}:${config.port}`);
57535
+ jam_network_logger.info `🛜 Listening at ${config.host}:${config.port}`;
57527
57536
  const network = await setup({
57528
57537
  host: config.host,
57529
57538
  port: config.port,
@@ -57536,7 +57545,7 @@ async function jam_network_main(channel) {
57536
57545
  ready.waitForState("finished").then(() => network.network.stop());
57537
57546
  await network.network.start();
57538
57547
  });
57539
- jam_network_logger.info("🛜 Network worker finished. Closing channel.");
57548
+ jam_network_logger.info `🛜 Network worker finished. Closing channel.`;
57540
57549
  // Close the comms to gracefuly close the app.
57541
57550
  finished.currentState().close(channel);
57542
57551
  }
@@ -57582,8 +57591,8 @@ async function main_main(config, withRelPath) {
57582
57591
  throw new Error("The main binary cannot be running as a Worker!");
57583
57592
  }
57584
57593
  await initAll();
57585
- common_logger.info(`🫐 Typeberry ${package_namespaceObject.rE}. GP: ${CURRENT_VERSION} (${CURRENT_SUITE})`);
57586
- 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}.`;
57587
57596
  const chainSpec = getChainSpec(config.node.flavor);
57588
57597
  const { rootDb, dbPath, genesisHeaderHash } = openDatabase(config.nodeName, config.node.chainSpec.genesisHeader, withRelPath(config.node.databaseBasePath));
57589
57598
  // Initialize the database with genesis state and block if there isn't one.
@@ -57626,30 +57635,30 @@ async function main_main(config, withRelPath) {
57626
57635
  return importer.finish(port);
57627
57636
  });
57628
57637
  await importerFinished.currentState().waitForWorkerToFinish();
57629
- common_logger.log("[main] ☠️ Closing the extensions");
57638
+ common_logger.log `[main] ☠️ Closing the extensions`;
57630
57639
  closeExtensions();
57631
- common_logger.log("[main] ☠️ Closing the authorship module");
57640
+ common_logger.log `[main] ☠️ Closing the authorship module`;
57632
57641
  closeAuthorship();
57633
- common_logger.log("[main] ☠️ Closing the networking module");
57642
+ common_logger.log `[main] ☠️ Closing the networking module`;
57634
57643
  closeNetwork();
57635
- common_logger.log("[main] 🛢️ Closing the database");
57644
+ common_logger.log `[main] 🛢️ Closing the database`;
57636
57645
  await rootDb.close();
57637
- common_logger.info("[main] ✅ Done.");
57646
+ common_logger.info `[main] ✅ Done.`;
57638
57647
  },
57639
57648
  };
57640
57649
  return api;
57641
57650
  }
57642
57651
  const initAuthorship = async (importerReady, isAuthoring, config) => {
57643
57652
  if (!isAuthoring) {
57644
- common_logger.log("✍️ Authorship off: disabled");
57653
+ common_logger.log `✍️ Authorship off: disabled`;
57645
57654
  return () => Promise.resolve();
57646
57655
  }
57647
- common_logger.info("✍️ Starting block generator.");
57656
+ common_logger.info `✍️ Starting block generator.`;
57648
57657
  const { generator, finish } = await startBlockGenerator(config);
57649
57658
  // relay blocks from generator to importer
57650
57659
  importerReady.doUntil("finished", async (importer, port) => {
57651
57660
  generator.currentState().onBlock.on((b) => {
57652
- common_logger.log(`✍️ Produced block. Size: [${b.length}]`);
57661
+ common_logger.log `✍️ Produced block. Size: [${b.length}]`;
57653
57662
  importer.sendBlock(port, b);
57654
57663
  });
57655
57664
  });
@@ -57657,7 +57666,7 @@ const initAuthorship = async (importerReady, isAuthoring, config) => {
57657
57666
  };
57658
57667
  const initNetwork = async (importerReady, workerConfig, genesisHeaderHash, networkConfig, bestHeader) => {
57659
57668
  if (networkConfig === null) {
57660
- common_logger.log("🛜 Networking off: no config");
57669
+ common_logger.log `🛜 Networking off: no config`;
57661
57670
  return () => Promise.resolve();
57662
57671
  }
57663
57672
  const { key, host, port, bootnodes } = networkConfig;
@@ -59607,7 +59616,7 @@ class AccumulateExternalities {
59607
59616
  /** https://graypaper.fluffylabs.dev/#/7e6ff6a/362802362d02?v=0.6.7 */
59608
59617
  const validatorsManager = this.updatedState.getPrivilegedServices().validatorsManager;
59609
59618
  if (validatorsManager !== this.currentServiceId) {
59610
- 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`;
59611
59620
  return result_Result.error(UnprivilegedError);
59612
59621
  }
59613
59622
  this.updatedState.stateUpdate.validatorsData = validatorsData;
@@ -59622,11 +59631,11 @@ class AccumulateExternalities {
59622
59631
  // NOTE `coreIndex` is already verified in the HC, so this is infallible.
59623
59632
  const currentAuthManager = this.updatedState.getPrivilegedServices().authManager[coreIndex];
59624
59633
  if (currentAuthManager !== this.currentServiceId) {
59625
- 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`;
59626
59635
  return result_Result.error(UpdatePrivilegesError.UnprivilegedService);
59627
59636
  }
59628
59637
  if (authManager === null && Compatibility.isGreaterOrEqual(GpVersion.V0_7_1)) {
59629
- 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`;
59630
59639
  return result_Result.error(UpdatePrivilegesError.InvalidServiceId);
59631
59640
  }
59632
59641
  this.updatedState.stateUpdate.authorizationQueues.set(coreIndex, authQueue);
@@ -60507,7 +60516,7 @@ class Assign {
60507
60516
  const memoryReadResult = memory.loadInto(res, authorizationQueueStart);
60508
60517
  // error while reading the memory.
60509
60518
  if (memoryReadResult.isError) {
60510
- logger_logger.trace("ASSIGN() <- PANIC");
60519
+ logger_logger.trace `ASSIGN() <- PANIC`;
60511
60520
  return PvmExecution.Panic;
60512
60521
  }
60513
60522
  if (maybeCoreIndex >= this.chainSpec.coresCount) {
@@ -60522,18 +60531,18 @@ class Assign {
60522
60531
  const result = this.partialState.updateAuthorizationQueue(coreIndex, fixedSizeAuthQueue, authManager);
60523
60532
  if (result.isOk) {
60524
60533
  regs.set(IN_OUT_REG, HostCallResult.OK);
60525
- logger_logger.trace(`ASSIGN(${coreIndex}, ${fixedSizeAuthQueue}) <- OK`);
60534
+ logger_logger.trace `ASSIGN(${coreIndex}, ${fixedSizeAuthQueue}) <- OK`;
60526
60535
  return;
60527
60536
  }
60528
60537
  const e = result.error;
60529
60538
  if (e === UpdatePrivilegesError.UnprivilegedService) {
60530
60539
  regs.set(IN_OUT_REG, HostCallResult.HUH);
60531
- logger_logger.trace(`ASSIGN(${coreIndex}, ${fixedSizeAuthQueue}) <- HUH`);
60540
+ logger_logger.trace `ASSIGN(${coreIndex}, ${fixedSizeAuthQueue}) <- HUH`;
60532
60541
  return;
60533
60542
  }
60534
60543
  if (e === UpdatePrivilegesError.InvalidServiceId) {
60535
60544
  regs.set(IN_OUT_REG, HostCallResult.WHO);
60536
- logger_logger.trace(`ASSIGN(${coreIndex}, ${fixedSizeAuthQueue}) <- HUH`);
60545
+ logger_logger.trace `ASSIGN(${coreIndex}, ${fixedSizeAuthQueue}) <- HUH`;
60537
60546
  return;
60538
60547
  }
60539
60548
  debug_assertNever(e);
@@ -60599,7 +60608,7 @@ class Bless {
60599
60608
  decoder.resetTo(0);
60600
60609
  const memoryReadResult = memory.loadInto(result, memIndex);
60601
60610
  if (memoryReadResult.isError) {
60602
- logger_logger.trace(`BLESS(${manager}, ${validator}) <- PANIC`);
60611
+ logger_logger.trace `BLESS(${manager}, ${validator}) <- PANIC`;
60603
60612
  return PvmExecution.Panic;
60604
60613
  }
60605
60614
  const { serviceId, gas } = decoder.object(serviceIdAndGasCodec);
@@ -60612,24 +60621,24 @@ class Bless {
60612
60621
  const authorizersDecoder = decoder_Decoder.fromBlob(res);
60613
60622
  const memoryReadResult = memory.loadInto(res, authorization);
60614
60623
  if (memoryReadResult.isError) {
60615
- logger_logger.trace(`BLESS(${manager}, ${validator}, ${autoAccumulateEntries}) <- PANIC`);
60624
+ logger_logger.trace `BLESS(${manager}, ${validator}, ${autoAccumulateEntries}) <- PANIC`;
60616
60625
  return PvmExecution.Panic;
60617
60626
  }
60618
60627
  const authorizers = tryAsPerCore(authorizersDecoder.sequenceFixLen(descriptors_codec.u32.asOpaque(), this.chainSpec.coresCount), this.chainSpec);
60619
60628
  const updateResult = this.partialState.updatePrivilegedServices(manager, authorizers, validator, autoAccumulateEntries);
60620
60629
  if (updateResult.isOk) {
60621
- logger_logger.trace(`BLESS(${manager}, ${authorizers}, ${validator}, ${autoAccumulateEntries}) <- OK`);
60630
+ logger_logger.trace `BLESS(${manager}, ${authorizers}, ${validator}, ${autoAccumulateEntries}) <- OK`;
60622
60631
  regs.set(bless_IN_OUT_REG, HostCallResult.OK);
60623
60632
  return;
60624
60633
  }
60625
60634
  const e = updateResult.error;
60626
60635
  if (e === UpdatePrivilegesError.UnprivilegedService) {
60627
- logger_logger.trace(`BLESS(${manager}, ${authorizers}, ${validator}, ${autoAccumulateEntries}) <- HUH`);
60636
+ logger_logger.trace `BLESS(${manager}, ${authorizers}, ${validator}, ${autoAccumulateEntries}) <- HUH`;
60628
60637
  regs.set(bless_IN_OUT_REG, HostCallResult.HUH);
60629
60638
  return;
60630
60639
  }
60631
60640
  if (e === UpdatePrivilegesError.InvalidServiceId) {
60632
- logger_logger.trace(`BLESS(${manager}, ${authorizers}, ${validator}, ${autoAccumulateEntries}) <- WHO`);
60641
+ logger_logger.trace `BLESS(${manager}, ${authorizers}, ${validator}, ${autoAccumulateEntries}) <- WHO`;
60633
60642
  regs.set(bless_IN_OUT_REG, HostCallResult.WHO);
60634
60643
  return;
60635
60644
  }
@@ -60659,7 +60668,7 @@ class GasHostCall {
60659
60668
  }
60660
60669
  execute(gas, regs) {
60661
60670
  const gasValue = gas.get();
60662
- logger_logger.trace(`GAS <- ${gasValue}`);
60671
+ logger_logger.trace `GAS <- ${gasValue}`;
60663
60672
  regs.set(7, numbers_tryAsU64(gasValue));
60664
60673
  return Promise.resolve(undefined);
60665
60674
  }
@@ -60691,7 +60700,7 @@ class Checkpoint {
60691
60700
  async execute(gas, regs) {
60692
60701
  await this.gasHostCall.execute(gas, regs);
60693
60702
  this.partialState.checkpoint();
60694
- logger_logger.trace("CHECKPOINT()");
60703
+ logger_logger.trace `CHECKPOINT()`;
60695
60704
  return;
60696
60705
  }
60697
60706
  }
@@ -60730,18 +60739,18 @@ class Designate {
60730
60739
  const memoryReadResult = memory.loadInto(res, validatorsStart);
60731
60740
  // error while reading the memory.
60732
60741
  if (memoryReadResult.isError) {
60733
- logger_logger.trace("DESIGNATE() <- PANIC");
60742
+ logger_logger.trace `DESIGNATE() <- PANIC`;
60734
60743
  return PvmExecution.Panic;
60735
60744
  }
60736
60745
  const decoder = decoder_Decoder.fromBlob(res);
60737
60746
  const validatorsData = decoder.sequenceFixLen(ValidatorData.Codec, this.chainSpec.validatorsCount);
60738
60747
  const result = this.partialState.updateValidatorsData(tryAsPerValidator(validatorsData, this.chainSpec));
60739
60748
  if (result.isError) {
60740
- logger_logger.trace(`DESIGNATE([${validatorsData[0]}, ${validatorsData[1]}, ...]) <- HUH`);
60749
+ logger_logger.trace `DESIGNATE([${validatorsData[0]}, ${validatorsData[1]}, ...]) <- HUH`;
60741
60750
  regs.set(designate_IN_OUT_REG, HostCallResult.HUH);
60742
60751
  }
60743
60752
  else {
60744
- logger_logger.trace(`DESIGNATE([${validatorsData[0]}, ${validatorsData[1]}, ...]) <- OK`);
60753
+ logger_logger.trace `DESIGNATE([${validatorsData[0]}, ${validatorsData[1]}, ...]) <- OK`;
60745
60754
  regs.set(designate_IN_OUT_REG, HostCallResult.OK);
60746
60755
  }
60747
60756
  }
@@ -60782,17 +60791,17 @@ class Eject {
60782
60791
  const previousCodeHash = bytes_Bytes.zero(hash_HASH_SIZE).asOpaque();
60783
60792
  const memoryReadResult = memory.loadInto(previousCodeHash.raw, preimageHashStart);
60784
60793
  if (memoryReadResult.isError) {
60785
- logger_logger.trace(`EJECT(${serviceId}) <- PANIC`);
60794
+ logger_logger.trace `EJECT(${serviceId}) <- PANIC`;
60786
60795
  return PvmExecution.Panic;
60787
60796
  }
60788
60797
  // cannot eject self
60789
60798
  if (serviceId === this.currentServiceId) {
60790
60799
  regs.set(eject_IN_OUT_REG, HostCallResult.WHO);
60791
- logger_logger.trace(`EJECT(${serviceId}, ${previousCodeHash}) <- WHO`);
60800
+ logger_logger.trace `EJECT(${serviceId}, ${previousCodeHash}) <- WHO`;
60792
60801
  return;
60793
60802
  }
60794
60803
  const result = this.partialState.eject(serviceId, previousCodeHash);
60795
- logger_logger.trace(`EJECT(${serviceId}, ${previousCodeHash}) <- ${resultToString(result)}`);
60804
+ logger_logger.trace `EJECT(${serviceId}, ${previousCodeHash}) <- ${resultToString(result)}`;
60796
60805
  // All good!
60797
60806
  if (result.isOk) {
60798
60807
  regs.set(eject_IN_OUT_REG, HostCallResult.OK);
@@ -60844,11 +60853,11 @@ class Forget {
60844
60853
  const memoryReadResult = memory.loadInto(hash.raw, hashStart);
60845
60854
  // error while reading the memory.
60846
60855
  if (memoryReadResult.isError) {
60847
- logger_logger.trace(`FORGET(${hash}, ${length}) <- PANIC`);
60856
+ logger_logger.trace `FORGET(${hash}, ${length}) <- PANIC`;
60848
60857
  return PvmExecution.Panic;
60849
60858
  }
60850
60859
  const result = this.partialState.forgetPreimage(hash.asOpaque(), length);
60851
- logger_logger.trace(`FORGET(${hash}, ${length}) <- ${resultToString(result)}`);
60860
+ logger_logger.trace `FORGET(${hash}, ${length}) <- ${resultToString(result)}`;
60852
60861
  if (result.isOk) {
60853
60862
  regs.set(forget_IN_OUT_REG, HostCallResult.OK);
60854
60863
  }
@@ -60901,11 +60910,11 @@ class New {
60901
60910
  const memoryReadResult = memory.loadInto(codeHash.raw, codeHashStart);
60902
60911
  // error while reading the memory.
60903
60912
  if (memoryReadResult.isError) {
60904
- logger_logger.trace(`NEW(${codeHash}, ${codeLength}, ${gas}, ${allowance}, ${gratisStorage}) <- PANIC`);
60913
+ logger_logger.trace `NEW(${codeHash}, ${codeLength}, ${gas}, ${allowance}, ${gratisStorage}) <- PANIC`;
60905
60914
  return PvmExecution.Panic;
60906
60915
  }
60907
60916
  const assignedId = this.partialState.newService(codeHash.asOpaque(), codeLength, gas, allowance, gratisStorage);
60908
- logger_logger.trace(`NEW(${codeHash}, ${codeLength}, ${gas}, ${allowance}, ${gratisStorage}) <- ${resultToString(assignedId)}`);
60917
+ logger_logger.trace `NEW(${codeHash}, ${codeLength}, ${gas}, ${allowance}, ${gratisStorage}) <- ${resultToString(assignedId)}`;
60909
60918
  if (assignedId.isOk) {
60910
60919
  regs.set(new_IN_OUT_REG, numbers_tryAsU64(assignedId.ok));
60911
60920
  return;
@@ -60960,11 +60969,11 @@ class Provide {
60960
60969
  const preimage = bytes_BytesBlob.blobFrom(new Uint8Array(length));
60961
60970
  const memoryReadResult = memory.loadInto(preimage.raw, preimageStart);
60962
60971
  if (memoryReadResult.isError) {
60963
- logger_logger.trace(`PROVIDE(${serviceId}, ${preimage.toStringTruncated()}) <- PANIC`);
60972
+ logger_logger.trace `PROVIDE(${serviceId}, ${preimage.toStringTruncated()}) <- PANIC`;
60964
60973
  return PvmExecution.Panic;
60965
60974
  }
60966
60975
  const result = this.partialState.providePreimage(serviceId, preimage);
60967
- logger_logger.trace(`PROVIDE(${serviceId}, ${preimage.toStringTruncated()}) <- ${resultToString(result)}`);
60976
+ logger_logger.trace `PROVIDE(${serviceId}, ${preimage.toStringTruncated()}) <- ${resultToString(result)}`;
60968
60977
  if (result.isOk) {
60969
60978
  regs.set(provide_IN_OUT_REG, HostCallResult.OK);
60970
60979
  return;
@@ -61018,11 +61027,11 @@ class Query {
61018
61027
  const memoryReadResult = memory.loadInto(hash.raw, hashStart);
61019
61028
  // error while reading the memory.
61020
61029
  if (memoryReadResult.isError) {
61021
- logger_logger.trace(`QUERY(${hash}, ${length}) <- PANIC`);
61030
+ logger_logger.trace `QUERY(${hash}, ${length}) <- PANIC`;
61022
61031
  return PvmExecution.Panic;
61023
61032
  }
61024
61033
  const result = this.partialState.checkPreimageStatus(hash.asOpaque(), length);
61025
- logger_logger.trace(`QUERY(${hash}, ${length}) <- ${result}`);
61034
+ logger_logger.trace `QUERY(${hash}, ${length}) <- ${result}`;
61026
61035
  const zero = numbers_tryAsU64(0n);
61027
61036
  if (result === null) {
61028
61037
  regs.set(IN_OUT_REG_1, HostCallResult.NONE);
@@ -61083,11 +61092,11 @@ class Solicit {
61083
61092
  const hash = bytes_Bytes.zero(hash_HASH_SIZE);
61084
61093
  const memoryReadResult = memory.loadInto(hash.raw, hashStart);
61085
61094
  if (memoryReadResult.isError) {
61086
- logger_logger.trace(`SOLICIT(${hash}, ${length}) <- PANIC`);
61095
+ logger_logger.trace `SOLICIT(${hash}, ${length}) <- PANIC`;
61087
61096
  return PvmExecution.Panic;
61088
61097
  }
61089
61098
  const result = this.partialState.requestPreimage(hash.asOpaque(), length);
61090
- logger_logger.trace(`SOLICIT(${hash}, ${length}) <- ${resultToString(result)}`);
61099
+ logger_logger.trace `SOLICIT(${hash}, ${length}) <- ${resultToString(result)}`;
61091
61100
  if (result.isOk) {
61092
61101
  regs.set(solicit_IN_OUT_REG, HostCallResult.OK);
61093
61102
  return;
@@ -61159,11 +61168,11 @@ class Transfer {
61159
61168
  const memoryReadResult = memory.loadInto(memo.raw, memoStart);
61160
61169
  // page fault while reading the memory.
61161
61170
  if (memoryReadResult.isError) {
61162
- logger_logger.trace(`TRANSFER(${destination}, ${amount}, ${onTransferGas}, ${memo}) <- PANIC`);
61171
+ logger_logger.trace `TRANSFER(${destination}, ${amount}, ${onTransferGas}, ${memo}) <- PANIC`;
61163
61172
  return PvmExecution.Panic;
61164
61173
  }
61165
61174
  const transferResult = this.partialState.transfer(destination, amount, onTransferGas, memo);
61166
- logger_logger.trace(`TRANSFER(${destination}, ${amount}, ${onTransferGas}, ${memo}) <- ${resultToString(transferResult)}`);
61175
+ logger_logger.trace `TRANSFER(${destination}, ${amount}, ${onTransferGas}, ${memo}) <- ${resultToString(transferResult)}`;
61167
61176
  // All good!
61168
61177
  if (transferResult.isOk) {
61169
61178
  regs.set(transfer_IN_OUT_REG, HostCallResult.OK);
@@ -61222,11 +61231,11 @@ class Upgrade {
61222
61231
  const codeHash = bytes_Bytes.zero(hash_HASH_SIZE);
61223
61232
  const memoryReadResult = memory.loadInto(codeHash.raw, codeHashStart);
61224
61233
  if (memoryReadResult.isError) {
61225
- logger_logger.trace(`UPGRADE(${codeHash}, ${gas}, ${allowance}) <- PANIC`);
61234
+ logger_logger.trace `UPGRADE(${codeHash}, ${gas}, ${allowance}) <- PANIC`;
61226
61235
  return PvmExecution.Panic;
61227
61236
  }
61228
61237
  this.partialState.upgradeService(codeHash.asOpaque(), gas, allowance);
61229
- logger_logger.trace(`UPGRADE(${codeHash}, ${gas}, ${allowance})`);
61238
+ logger_logger.trace `UPGRADE(${codeHash}, ${gas}, ${allowance})`;
61230
61239
  regs.set(upgrade_IN_OUT_REG, HostCallResult.OK);
61231
61240
  }
61232
61241
  }
@@ -61260,11 +61269,11 @@ class Yield {
61260
61269
  const hash = bytes_Bytes.zero(hash_HASH_SIZE);
61261
61270
  const memoryReadResult = memory.loadInto(hash.raw, hashStart);
61262
61271
  if (memoryReadResult.isError) {
61263
- logger_logger.trace("YIELD() <- PANIC");
61272
+ logger_logger.trace `YIELD() <- PANIC`;
61264
61273
  return PvmExecution.Panic;
61265
61274
  }
61266
61275
  this.partialState.yield(hash);
61267
- logger_logger.trace(`YIELD(${hash})`);
61276
+ logger_logger.trace `YIELD(${hash})`;
61268
61277
  regs.set(yield_IN_OUT_REG, HostCallResult.OK);
61269
61278
  }
61270
61279
  }
@@ -61306,10 +61315,10 @@ class Fetch {
61306
61315
  const chunk = value === null ? new Uint8Array() : value.raw.subarray(Number(offset), Number(offset + length));
61307
61316
  const storeResult = memory.storeFrom(output, chunk);
61308
61317
  if (storeResult.isError) {
61309
- logger_logger.trace(`FETCH(${kind}) <- PANIC`);
61318
+ logger_logger.trace `FETCH(${kind}) <- PANIC`;
61310
61319
  return PvmExecution.Panic;
61311
61320
  }
61312
- logger_logger.trace(`FETCH(${kind}) <- ${value?.toStringTruncated()}`);
61321
+ logger_logger.trace `FETCH(${kind}) <- ${value?.toStringTruncated()}`;
61313
61322
  // write result
61314
61323
  regs.set(fetch_IN_OUT_REG, value === null ? HostCallResult.NONE : valueLength);
61315
61324
  }
@@ -61468,10 +61477,10 @@ class Info {
61468
61477
  const chunk = encodedInfo.raw.subarray(Number(offset), Number(offset + length));
61469
61478
  const writeResult = memory.storeFrom(outputStart, chunk);
61470
61479
  if (writeResult.isError) {
61471
- logger_logger.trace(`INFO(${serviceId}) <- PANIC`);
61480
+ logger_logger.trace `INFO(${serviceId}) <- PANIC`;
61472
61481
  return PvmExecution.Panic;
61473
61482
  }
61474
- logger_logger.trace(`INFO(${serviceId}) <- ${bytes_BytesBlob.blobFrom(chunk)}`);
61483
+ logger_logger.trace `INFO(${serviceId}) <- ${bytes_BytesBlob.blobFrom(chunk)}`;
61475
61484
  if (accountInfo === null) {
61476
61485
  regs.set(info_IN_OUT_REG, HostCallResult.NONE);
61477
61486
  return;
@@ -61532,7 +61541,7 @@ class LogHostCall {
61532
61541
  memory.loadInto(target, targetStart);
61533
61542
  }
61534
61543
  memory.loadInto(message, msgStart);
61535
- 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)}`;
61536
61545
  return Promise.resolve(undefined);
61537
61546
  }
61538
61547
  }
@@ -61572,12 +61581,12 @@ class Lookup {
61572
61581
  const preImageHash = bytes_Bytes.zero(hash_HASH_SIZE);
61573
61582
  const memoryReadResult = memory.loadInto(preImageHash.raw, hashAddress);
61574
61583
  if (memoryReadResult.isError) {
61575
- logger_logger.trace(`LOOKUP(${serviceId}, ${preImageHash}) <- PANIC`);
61584
+ logger_logger.trace `LOOKUP(${serviceId}, ${preImageHash}) <- PANIC`;
61576
61585
  return PvmExecution.Panic;
61577
61586
  }
61578
61587
  // v
61579
61588
  const preImage = this.account.lookup(serviceId, preImageHash);
61580
- logger_logger.trace(`LOOKUP(${serviceId}, ${preImageHash}) <- ${preImage?.toStringTruncated()}...`);
61589
+ logger_logger.trace `LOOKUP(${serviceId}, ${preImageHash}) <- ${preImage?.toStringTruncated()}...`;
61581
61590
  const preImageLength = preImage === null ? numbers_tryAsU64(0) : numbers_tryAsU64(preImage.raw.length);
61582
61591
  const preimageBlobOffset = regs.get(10);
61583
61592
  const lengthToWrite = regs.get(11);
@@ -61639,7 +61648,7 @@ class Read {
61639
61648
  const rawKey = bytes_BytesBlob.blobFrom(new Uint8Array(storageKeyLengthClamped));
61640
61649
  const memoryReadResult = memory.loadInto(rawKey.raw, storageKeyStartAddress);
61641
61650
  if (memoryReadResult.isError) {
61642
- logger_logger.trace(`READ(${serviceId}, ${rawKey}) <- PANIC`);
61651
+ logger_logger.trace `READ(${serviceId}, ${rawKey}) <- PANIC`;
61643
61652
  return PvmExecution.Panic;
61644
61653
  }
61645
61654
  // v
@@ -61657,15 +61666,15 @@ class Read {
61657
61666
  const chunk = value === null ? new Uint8Array(0) : value.raw.subarray(Number(offset), Number(offset + blobLength));
61658
61667
  const memoryWriteResult = memory.storeFrom(destinationAddress, chunk);
61659
61668
  if (memoryWriteResult.isError) {
61660
- logger_logger.trace(`READ(${serviceId}, ${rawKey}) <- PANIC`);
61669
+ logger_logger.trace `READ(${serviceId}, ${rawKey}) <- PANIC`;
61661
61670
  return PvmExecution.Panic;
61662
61671
  }
61663
61672
  if (value === null) {
61664
- logger_logger.trace(`READ(${serviceId}, ${rawKey}) <- NONE`);
61673
+ logger_logger.trace `READ(${serviceId}, ${rawKey}) <- NONE`;
61665
61674
  regs.set(read_IN_OUT_REG, HostCallResult.NONE);
61666
61675
  return;
61667
61676
  }
61668
- logger_logger.trace(`READ(${serviceId}, ${rawKey}) <- ${bytes_BytesBlob.blobFrom(chunk).toStringTruncated()}`);
61677
+ logger_logger.trace `READ(${serviceId}, ${rawKey}) <- ${bytes_BytesBlob.blobFrom(chunk).toStringTruncated()}`;
61669
61678
  regs.set(read_IN_OUT_REG, valueLength);
61670
61679
  }
61671
61680
  }
@@ -61708,7 +61717,7 @@ class Write {
61708
61717
  const rawStorageKey = new Uint8Array(storageKeyLengthClamped);
61709
61718
  const keyLoadingResult = memory.loadInto(rawStorageKey, storageKeyStartAddress);
61710
61719
  if (keyLoadingResult.isError) {
61711
- logger_logger.trace("WRITE() <- PANIC");
61720
+ logger_logger.trace `WRITE() <- PANIC`;
61712
61721
  return PvmExecution.Panic;
61713
61722
  }
61714
61723
  // k
@@ -61718,14 +61727,14 @@ class Write {
61718
61727
  const valueLoadingResult = memory.loadInto(value, valueStart);
61719
61728
  // Note [MaSo] this is ok to return bcs if valueLength is 0, then this panic won't happen
61720
61729
  if (valueLoadingResult.isError) {
61721
- logger_logger.trace(`WRITE(${storageKey})}) <- PANIC`);
61730
+ logger_logger.trace `WRITE(${storageKey}) <- PANIC`;
61722
61731
  return PvmExecution.Panic;
61723
61732
  }
61724
61733
  /** https://graypaper.fluffylabs.dev/#/9a08063/33af0133b201?v=0.6.6 */
61725
61734
  const maybeValue = valueLength === 0n ? null : bytes_BytesBlob.blobFrom(value);
61726
61735
  // a
61727
61736
  const result = this.account.write(storageKey, maybeValue);
61728
- logger_logger.trace(`WRITE(${storageKey}, ${maybeValue?.toStringTruncated()}) <- ${resultToString(result)}`);
61737
+ logger_logger.trace `WRITE(${storageKey}, ${maybeValue?.toStringTruncated()}) <- ${resultToString(result)}`;
61729
61738
  if (result.isError) {
61730
61739
  regs.set(write_IN_OUT_REG, HostCallResult.FULL);
61731
61740
  return;
@@ -61917,18 +61926,18 @@ class Accumulate {
61917
61926
  async pvmAccumulateInvocation(slot, serviceId, operands, gas, entropy, inputStateUpdate) {
61918
61927
  const service = this.state.getService(serviceId);
61919
61928
  if (service === null) {
61920
- accumulate_logger.log(`Service with id ${serviceId} not found.`);
61929
+ accumulate_logger.log `Service with id ${serviceId} not found.`;
61921
61930
  return result_Result.error(PvmInvocationError.NoService);
61922
61931
  }
61923
61932
  const codeHash = service.getInfo().codeHash;
61924
61933
  // TODO [ToDr] Should we check that the preimage is still available?
61925
61934
  const code = service.getPreimage(codeHash.asOpaque());
61926
61935
  if (code === null) {
61927
- 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}.`;
61928
61937
  return result_Result.error(PvmInvocationError.NoPreimage);
61929
61938
  }
61930
61939
  if (code.length > W_C) {
61931
- 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}.`;
61932
61941
  return result_Result.error(PvmInvocationError.PreimageTooLong);
61933
61942
  }
61934
61943
  const nextServiceId = generateNextServiceId({ serviceId, entropy, timeslot: slot }, this.chainSpec);
@@ -61950,10 +61959,10 @@ class Accumulate {
61950
61959
  if (result.hasStatus()) {
61951
61960
  const status = result.status;
61952
61961
  if (status === status_Status.OOG || status === status_Status.PANIC) {
61953
- 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.`;
61954
61963
  return result_Result.ok({ stateUpdate: checkpoint, consumedGas: common_tryAsServiceGas(result.consumedGas) });
61955
61964
  }
61956
- accumulate_logger.trace(`[${serviceId}] accumulate finished with ${status_Status[status]}`);
61965
+ accumulate_logger.trace `[${serviceId}] accumulate finished with ${status_Status[status]}`;
61957
61966
  }
61958
61967
  /**
61959
61968
  * PVM invocation returned a hash so we override whatever `yield` host call
@@ -61978,14 +61987,14 @@ class Accumulate {
61978
61987
  * https://graypaper.fluffylabs.dev/#/7e6ff6a/18d70118d701?v=0.6.7
61979
61988
  */
61980
61989
  async accumulateSingleService(serviceId, operands, gasCost, slot, entropy, inputStateUpdate) {
61981
- 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}.`;
61982
61991
  const result = await this.pvmAccumulateInvocation(slot, serviceId, operands, gasCost, entropy, inputStateUpdate);
61983
61992
  if (result.isError) {
61984
61993
  // https://graypaper.fluffylabs.dev/#/7e6ff6a/2fb6012fb601?v=0.6.7
61985
- accumulate_logger.log(`Accumulation failed for ${serviceId}.`);
61994
+ accumulate_logger.log `Accumulation failed for ${serviceId}.`;
61986
61995
  return { stateUpdate: null, consumedGas: 0n };
61987
61996
  }
61988
- accumulate_logger.log(`Accumulation successful for ${serviceId}. Consumed: ${result.ok.consumedGas}`);
61997
+ accumulate_logger.log `Accumulation successful for ${serviceId}. Consumed: ${result.ok.consumedGas}`;
61989
61998
  return result.ok;
61990
61999
  }
61991
62000
  /**
@@ -62047,7 +62056,7 @@ class Accumulate {
62047
62056
  if (Compatibility.is(GpVersion.V0_7_0) && serviceId === currentManager) {
62048
62057
  const newV = currentState.privilegedServices?.validatorsManager;
62049
62058
  if (currentState.privilegedServices !== null && newV !== undefined && serviceIds.includes(newV)) {
62050
- 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+`;
62051
62060
  // Since serviceIds already contains newV, this service gets accumulated twice.
62052
62061
  // To avoid double-counting, we skip stats and gas cost tracking here.
62053
62062
  // We need this accumulation to get the correct `validatorsManager`
@@ -62230,13 +62239,13 @@ class DeferredTransfers {
62230
62239
  const isCodeCorrect = code !== null && code.length <= W_C;
62231
62240
  if (!hasTransfers || !isCodeCorrect) {
62232
62241
  if (code === null) {
62233
- 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`;
62234
62243
  }
62235
62244
  else if (!hasTransfers) {
62236
- 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`;
62237
62246
  }
62238
62247
  else {
62239
- 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`;
62240
62249
  }
62241
62250
  }
62242
62251
  else {
@@ -62864,7 +62873,7 @@ function verifyRefineContexts(minLookupSlot, contexts, recentBlocksPartialUpdate
62864
62873
  headerChain.isAncestor(context.lookupAnchorSlot, context.lookupAnchor, context.anchor);
62865
62874
  if (!isInChain) {
62866
62875
  if (process.env.SKIP_LOOKUP_ANCHOR_CHECK !== undefined) {
62867
- 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.`;
62868
62877
  }
62869
62878
  else {
62870
62879
  return result_Result.error(ReportsError.SegmentRootLookupInvalid, `Lookup anchor is not found in chain. Hash: ${context.lookupAnchor} (slot: ${context.lookupAnchorSlot})`);
@@ -63751,7 +63760,7 @@ class OnChain {
63751
63760
  reports: availableReports,
63752
63761
  entropy: entropy[0],
63753
63762
  });
63754
- chain_stf_logger.log(timerAccumulate());
63763
+ chain_stf_logger.log `${timerAccumulate()}`;
63755
63764
  if (accumulateResult.isError) {
63756
63765
  return stfError(StfErrorKind.Accumulate, accumulateResult);
63757
63766
  }
@@ -63882,7 +63891,7 @@ class Importer {
63882
63891
  this.stf = new OnChain(spec, state, blocks, hasher);
63883
63892
  this.state = state;
63884
63893
  this.currentHash = currentBestHeaderHash;
63885
- logger.info(`😎 Best time slot: ${state.timeslot} (header hash: ${currentBestHeaderHash})`);
63894
+ logger.info `😎 Best time slot: ${state.timeslot} (header hash: ${currentBestHeaderHash})`;
63886
63895
  }
63887
63896
  async importBlock(block, omitSealVerification) {
63888
63897
  const timer = measure("importBlock");
@@ -63890,20 +63899,20 @@ class Importer {
63890
63899
  const maybeBestHeader = await this.importBlockInternal(block, omitSealVerification);
63891
63900
  if (maybeBestHeader.isOk) {
63892
63901
  const bestHeader = maybeBestHeader.ok;
63893
- this.logger.info(`🧊 Best block: #${timeSlot} (${bestHeader.hash})`);
63894
- this.logger.log(timer());
63902
+ this.logger.info `🧊 Best block: #${timeSlot} (${bestHeader.hash})`;
63903
+ this.logger.log `${timer()}`;
63895
63904
  return maybeBestHeader;
63896
63905
  }
63897
- this.logger.log(`❌ Rejected block #${timeSlot}: ${resultToString(maybeBestHeader)}`);
63898
- this.logger.log(timer());
63906
+ this.logger.log `❌ Rejected block #${timeSlot}: ${resultToString(maybeBestHeader)}`;
63907
+ this.logger.log `${timer()}`;
63899
63908
  return maybeBestHeader;
63900
63909
  }
63901
63910
  async importBlockInternal(block, omitSealVerification = false) {
63902
63911
  const logger = this.logger;
63903
- logger.log("🧱 Attempting to import a new block");
63912
+ logger.log `🧱 Attempting to import a new block`;
63904
63913
  const timerVerify = measure("import:verify");
63905
63914
  const hash = await this.verifier.verifyBlock(block);
63906
- logger.log(timerVerify());
63915
+ logger.log `${timerVerify()}`;
63907
63916
  if (hash.isError) {
63908
63917
  return importerError(ImporterErrorKind.Verifier, hash);
63909
63918
  }
@@ -63923,10 +63932,10 @@ class Importer {
63923
63932
  }
63924
63933
  const timeSlot = block.header.view().timeSlotIndex.materialize();
63925
63934
  const headerHash = hash.ok;
63926
- 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}.`;
63927
63936
  const timerStf = measure("import:stf");
63928
63937
  const res = await this.stf.transition(block, headerHash, omitSealVerification);
63929
- logger.log(timerStf());
63938
+ logger.log `${timerStf()}`;
63930
63939
  if (res.isError) {
63931
63940
  return importerError(ImporterErrorKind.Stf, res);
63932
63941
  }
@@ -63935,7 +63944,7 @@ class Importer {
63935
63944
  const timerState = measure("import:state");
63936
63945
  const updateResult = await this.states.updateAndSetState(headerHash, this.state, update);
63937
63946
  if (updateResult.isError) {
63938
- logger.error(`🧱 Unable to update state: ${resultToString(updateResult)}`);
63947
+ logger.error `🧱 Unable to update state: ${resultToString(updateResult)}`;
63939
63948
  return importerError(ImporterErrorKind.Update, updateResult);
63940
63949
  }
63941
63950
  const newState = this.states.getState(headerHash);
@@ -63946,17 +63955,17 @@ class Importer {
63946
63955
  // the state of a parent block to support forks and create a fresh STF.
63947
63956
  this.state.updateBackend(newState.backend);
63948
63957
  this.currentHash = headerHash;
63949
- logger.log(timerState());
63958
+ logger.log `${timerState()}`;
63950
63959
  // insert new state and the block to DB.
63951
63960
  const timerDb = measure("import:db");
63952
63961
  const writeBlocks = this.blocks.insertBlock(new WithHash(headerHash, block));
63953
63962
  // Computation of the state root may happen asynchronously,
63954
63963
  // but we still need to wait for it before next block can be imported
63955
63964
  const stateRoot = await this.states.getStateRoot(newState);
63956
- logger.log(`🧱 Storing post-state-root for ${headerHash}: ${stateRoot}.`);
63965
+ logger.log `🧱 Storing post-state-root for ${headerHash}: ${stateRoot}.`;
63957
63966
  const writeStateRoot = this.blocks.setPostStateRoot(headerHash, stateRoot);
63958
63967
  await Promise.all([writeBlocks, writeStateRoot]);
63959
- logger.log(timerDb());
63968
+ logger.log `${timerDb()}`;
63960
63969
  // finally update the best block
63961
63970
  await this.blocks.setBestHeaderHash(headerHash);
63962
63971
  return result_Result.ok(new WithHash(headerHash, block.header.view()));
@@ -64004,7 +64013,7 @@ if (!external_node_worker_threads_namespaceObject.isMainThread) {
64004
64013
  Logger.configureAll(process.env.JAM_LOG ?? "", Level.LOG);
64005
64014
  const machine = importerStateMachine();
64006
64015
  const channel = MessageChannelStateMachine.receiveChannel(machine, external_node_worker_threads_namespaceObject.parentPort);
64007
- 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}`);
64008
64017
  }
64009
64018
  const keccakHasher = KeccakHasher.create();
64010
64019
  async function createImporter(config) {
@@ -64026,7 +64035,7 @@ async function createImporter(config) {
64026
64035
  */
64027
64036
  async function importer_main(channel) {
64028
64037
  const wasmPromise = initAll();
64029
- importer_logger.info(`📥 Importer starting ${channel.currentState()}`);
64038
+ importer_logger.info `📥 Importer starting ${channel.currentState()}`;
64030
64039
  // Await the configuration object
64031
64040
  const ready = await channel.waitForState("ready(importer)");
64032
64041
  let closeDb = async () => { };
@@ -64038,7 +64047,7 @@ async function importer_main(channel) {
64038
64047
  };
64039
64048
  // TODO [ToDr] this is shit, since we have circular dependency.
64040
64049
  worker.setImporter(importer);
64041
- importer_logger.info("📥 Importer waiting for blocks.");
64050
+ importer_logger.info `📥 Importer waiting for blocks.`;
64042
64051
  worker.onBlock.on(async (block) => {
64043
64052
  const res = await importer.importBlock(block, config.omitSealVerification);
64044
64053
  if (res.isOk) {
@@ -64047,7 +64056,7 @@ async function importer_main(channel) {
64047
64056
  });
64048
64057
  await wasmPromise;
64049
64058
  });
64050
- importer_logger.info("📥 Importer finished. Closing channel.");
64059
+ importer_logger.info `📥 Importer finished. Closing channel.`;
64051
64060
  // close the database
64052
64061
  await closeDb();
64053
64062
  // Close the comms to gracefuly close the app.
@@ -64068,8 +64077,8 @@ async function importer_main(channel) {
64068
64077
  const zeroHash = bytes_Bytes.zero(hash_HASH_SIZE).asOpaque();
64069
64078
  async function mainImporter(config, withRelPath) {
64070
64079
  await initAll();
64071
- common_logger.info(`🫐 Typeberry ${package_namespaceObject.rE}. GP: ${CURRENT_VERSION} (${CURRENT_SUITE})`);
64072
- 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}.`;
64073
64082
  const chainSpec = getChainSpec(config.node.flavor);
64074
64083
  const { rootDb, dbPath, genesisHeaderHash } = openDatabase(config.nodeName, config.node.chainSpec.genesisHeader, withRelPath(config.node.databaseBasePath));
64075
64084
  // Initialize the database with genesis state and block if there isn't one.
@@ -64096,9 +64105,9 @@ async function mainImporter(config, withRelPath) {
64096
64105
  return importer.getBestStateRootHash() ?? zeroHash;
64097
64106
  },
64098
64107
  async close() {
64099
- common_logger.log("[main] 🛢️ Closing the database");
64108
+ common_logger.log `[main] 🛢️ Closing the database`;
64100
64109
  await lmdb.close();
64101
- common_logger.info("[main] ✅ Done.");
64110
+ common_logger.info `[main] ✅ Done.`;
64102
64111
  },
64103
64112
  };
64104
64113
  return api;
@@ -64125,7 +64134,7 @@ function getFuzzDetails() {
64125
64134
  };
64126
64135
  }
64127
64136
  async function mainFuzz(fuzzConfig, withRelPath) {
64128
- main_fuzz_logger.info(`💨 Fuzzer V${fuzzConfig.version} starting up.`);
64137
+ main_fuzz_logger.info `💨 Fuzzer V${fuzzConfig.version} starting up.`;
64129
64138
  const { jamNodeConfig: config } = fuzzConfig;
64130
64139
  let runningNode = null;
64131
64140
  const fuzzSeed = BigInt(Date.now());
@@ -64195,20 +64204,20 @@ async function mainFuzz(fuzzConfig, withRelPath) {
64195
64204
 
64196
64205
  const importBlocks = async (node, blocksToImport) => {
64197
64206
  const logger = Logger.new(import.meta.filename, "jam");
64198
- logger.info(`📖 Reading ${blocksToImport.length} blocks`);
64207
+ logger.info `📖 Reading ${blocksToImport.length} blocks`;
64199
64208
  const reader = startBlocksReader({
64200
64209
  files: blocksToImport,
64201
64210
  chainSpec: node.chainSpec,
64202
64211
  });
64203
64212
  for (const block of reader) {
64204
- logger.log(`📖 Importing block: #${block.header.view().timeSlotIndex.materialize()}`);
64213
+ logger.log `📖 Importing block: #${block.header.view().timeSlotIndex.materialize()}`;
64205
64214
  const res = await node.importBlock(block);
64206
64215
  if (res.isError) {
64207
- logger.error(`📖 ${resultToString(res)}`);
64216
+ logger.error `📖 ${resultToString(res)}`;
64208
64217
  }
64209
64218
  }
64210
64219
  // close the importer.
64211
- logger.info("All blocks scheduled to be imported.");
64220
+ logger.info `All blocks scheduled to be imported.`;
64212
64221
  return await node.close();
64213
64222
  };
64214
64223
  function* startBlocksReader(options) {