@xyo-network/xl1-cli-lib 1.8.4 → 1.10.0

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.
@@ -1,5 +1,13 @@
1
1
  var __defProp = Object.defineProperty;
2
- var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __decorateClass = (decorators, target, key, kind) => {
4
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
5
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
6
+ if (decorator = decorators[i])
7
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
8
+ if (kind && result) __defProp(target, key, result);
9
+ return result;
10
+ };
3
11
 
4
12
  // src/orchestration/actor/implementation/BalanceActor.ts
5
13
  import { assertEx } from "@xylabs/assert";
@@ -12,19 +20,13 @@ import { forget } from "@xylabs/forget";
12
20
  import { IdLogger } from "@xylabs/logger";
13
21
  import { span, spanAsync } from "@xylabs/telemetry";
14
22
  var Actor = class extends Base {
15
- static {
16
- __name(this, "Actor");
17
- }
18
23
  _timers = /* @__PURE__ */ new Map();
19
24
  _active = false;
20
25
  _displayName;
21
26
  _id;
22
27
  constructor(id, displayName = "Actor", params) {
23
28
  const logger = params.logger ?? new IdLogger(Base.defaultLogger ?? console, () => `[${displayName} (${id})] `);
24
- super({
25
- ...params,
26
- logger
27
- });
29
+ super({ ...params, logger });
28
30
  this._displayName = displayName;
29
31
  this._id = id;
30
32
  }
@@ -41,29 +43,29 @@ var Actor = class extends Base {
41
43
  return `[${this.displayName} (${this.id})] `;
42
44
  }
43
45
  /**
44
- * The timer runs until the actor is deactivated (or you manually stop it).
45
- */
46
+ * The timer runs until the actor is deactivated (or you manually stop it).
47
+ */
46
48
  registerTimer(timerName, callback, dueTimeMs, periodMs) {
47
49
  if (!this._active) {
48
- this.logger?.warn(`Cannot register timer '${timerName}' because actor is not active.`);
50
+ this.logger?.warn(
51
+ `Cannot register timer '${timerName}' because actor is not active.`
52
+ );
49
53
  return;
50
54
  }
51
- const schedulePeriodicRun = /* @__PURE__ */ __name(async () => {
55
+ const schedulePeriodicRun = async () => {
52
56
  if (!this._active || !this._timers.has(timerName)) return;
53
57
  try {
54
58
  await callback();
55
59
  } catch (error) {
56
60
  this.logger?.error(`Error in timer '${this.name}:${timerName}': ${error}`);
57
61
  } finally {
58
- this._timers.set(timerName, setTimeout(() => forget(schedulePeriodicRun(), {
59
- name: `schedulePeriodicRun:${this.name}:${timerName}`
60
- }), periodMs));
62
+ this._timers.set(timerName, setTimeout(() => forget(schedulePeriodicRun(), { name: `schedulePeriodicRun:${this.name}:${timerName}` }), periodMs));
61
63
  }
62
- }, "schedulePeriodicRun");
63
- this._timers.set(timerName, setTimeout(() => forget(schedulePeriodicRun(), {
64
- name: `schedulePeriodicRun(initial):${this.name}:${timerName}`
65
- }), dueTimeMs));
66
- this.logger?.log(`Timer '${this.name}:${timerName}' registered: first call after ${dueTimeMs}ms, recurring every ${periodMs}ms.`);
64
+ };
65
+ this._timers.set(timerName, setTimeout(() => forget(schedulePeriodicRun(), { name: `schedulePeriodicRun(initial):${this.name}:${timerName}` }), dueTimeMs));
66
+ this.logger?.log(
67
+ `Timer '${this.name}:${timerName}' registered: first call after ${dueTimeMs}ms, recurring every ${periodMs}ms.`
68
+ );
67
69
  }
68
70
  span(name, fn) {
69
71
  return span(`${this.name}:${name}`, fn, this.tracer);
@@ -72,17 +74,17 @@ var Actor = class extends Base {
72
74
  return await spanAsync(`${this.name}:${name}`, fn, this.tracer);
73
75
  }
74
76
  /**
75
- * Called by the Orchestrator when the actor is activated.
76
- */
77
+ * Called by the Orchestrator when the actor is activated.
78
+ */
77
79
  async start() {
78
80
  await Promise.resolve();
79
81
  this._active = true;
80
82
  this.logger?.log("Started.");
81
83
  }
82
84
  /**
83
- * Called by the Orchestrator when the actor is deactivated.
84
- * Stop all running timers.
85
- */
85
+ * Called by the Orchestrator when the actor is deactivated.
86
+ * Stop all running timers.
87
+ */
86
88
  async stop() {
87
89
  await Promise.resolve();
88
90
  this._active = false;
@@ -97,9 +99,6 @@ var Actor = class extends Base {
97
99
 
98
100
  // src/orchestration/actor/model/Orchestrator.ts
99
101
  var Orchestrator = class {
100
- static {
101
- __name(this, "Orchestrator");
102
- }
103
102
  actors = [];
104
103
  keepAliveHandle = null;
105
104
  logger;
@@ -108,9 +107,9 @@ var Orchestrator = class {
108
107
  this.logger = logger;
109
108
  }
110
109
  /**
111
- * Registers an actor.
112
- * (We won't activate the actor until `start()` is called.)
113
- */
110
+ * Registers an actor.
111
+ * (We won't activate the actor until `start()` is called.)
112
+ */
114
113
  async registerActor(actor) {
115
114
  if (this.running) {
116
115
  await actor.start();
@@ -118,8 +117,8 @@ var Orchestrator = class {
118
117
  this.actors.push(actor);
119
118
  }
120
119
  /**
121
- * Starts the orchestrator: activates all actors.
122
- */
120
+ * Starts the orchestrator: activates all actors.
121
+ */
123
122
  async start() {
124
123
  await Promise.resolve();
125
124
  if (this.running) {
@@ -135,8 +134,8 @@ var Orchestrator = class {
135
134
  }, 2147483647);
136
135
  }
137
136
  /**
138
- * Stops the orchestrator: deactivates all actors.
139
- */
137
+ * Stops the orchestrator: deactivates all actors.
138
+ */
140
139
  async stop() {
141
140
  await Promise.resolve();
142
141
  if (!this.running) {
@@ -155,9 +154,6 @@ var Orchestrator = class {
155
154
 
156
155
  // src/orchestration/actor/implementation/BalanceActor.ts
157
156
  var BalanceActor = class _BalanceActor extends Actor {
158
- static {
159
- __name(this, "BalanceActor");
160
- }
161
157
  _updateMutex = new Mutex();
162
158
  constructor(params) {
163
159
  super("BalanceActor", "Balance", params);
@@ -196,9 +192,6 @@ import { toHex } from "@xylabs/hex";
196
192
  import { findMostRecentBlock, sortBlocks } from "@xyo-network/chain-protocol";
197
193
  import { asBlockBoundWitness } from "@xyo-network/xl1-protocol";
198
194
  var ChainHeadUpdateActor = class _ChainHeadUpdateActor extends Actor {
199
- static {
200
- __name(this, "ChainHeadUpdateActor");
201
- }
202
195
  constructor(params) {
203
196
  super("ChainHeadUpdate", "ChainHeadUpdate", params);
204
197
  }
@@ -248,13 +241,14 @@ import { createDeclarationIntent } from "@xyo-network/chain-protocol";
248
241
  import { BaseBlockProducerService } from "@xyo-network/chain-services";
249
242
  import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
250
243
  import { PayloadBundleSchema } from "@xyo-network/payload-model";
251
- import { buildTransaction, flattenHydratedBlock, flattenHydratedTransaction } from "@xyo-network/xl1-protocol-sdk";
244
+ import {
245
+ buildTransaction,
246
+ flattenHydratedBlock,
247
+ flattenHydratedTransaction
248
+ } from "@xyo-network/xl1-protocol-sdk";
252
249
  var SHOULD_REGISTER_REDECLARATION_INTENT_TIMER = true;
253
250
  var TEN_MINUTES = 10 * 60 * 1e3;
254
251
  var ProducerActor = class _ProducerActor extends Actor {
255
- static {
256
- __name(this, "ProducerActor");
257
- }
258
252
  _lastProducedBlock;
259
253
  _lastRedeclarationIntent;
260
254
  constructor(params) {
@@ -324,15 +318,24 @@ var ProducerActor = class _ProducerActor extends Actor {
324
318
  this._lastRedeclarationIntent = void 0;
325
319
  }
326
320
  if (!await this.validateCurrentBalance()) {
327
- this.logger?.error(`Add balance to address ${this.account.address} for the producer to declare it's intent.`);
321
+ this.logger?.error(
322
+ `Add balance to address ${this.account.address} for the producer to declare it's intent.`
323
+ );
328
324
  return;
329
325
  }
330
326
  if (!await this.validateCurrentStake()) {
331
- this.logger?.error(`Add stake to contract address ${this.params.config.chain.id} for the producer to declare it's intent.`);
327
+ this.logger?.error(
328
+ `Add stake to contract address ${this.params.config.chain.id} for the producer to declare it's intent.`
329
+ );
332
330
  return;
333
331
  }
334
332
  this.logger?.log("Creating redeclaration intent for producer:", this.account.address);
335
- const redeclarationIntent = createDeclarationIntent(this.account.address, "producer", currentBlock, currentBlock + BaseBlockProducerService.RedeclarationDuration);
333
+ const redeclarationIntent = createDeclarationIntent(
334
+ this.account.address,
335
+ "producer",
336
+ currentBlock,
337
+ currentBlock + BaseBlockProducerService.RedeclarationDuration
338
+ );
336
339
  await this.submitRedeclarationIntent(currentBlock, redeclarationIntent);
337
340
  this._lastRedeclarationIntent = redeclarationIntent;
338
341
  });
@@ -342,37 +345,30 @@ var ProducerActor = class _ProducerActor extends Actor {
342
345
  async calculateBlocksUntilProducerDeclarationExpiration(currentBlock) {
343
346
  const ranges = await this.stakeIntentService.getDeclaredCandidateRanges(this.account.address, "producer");
344
347
  const lastRange = ranges.toSorted((a, b) => a[1] > b[1] ? 1 : -1).at(-1);
345
- const [, currentDeclarationEnd] = lastRange || [
346
- void 0,
347
- currentBlock
348
- ];
348
+ const [, currentDeclarationEnd] = lastRange || [void 0, currentBlock];
349
349
  const timeToProducerExpiration = currentDeclarationEnd - currentBlock;
350
350
  return timeToProducerExpiration;
351
351
  }
352
352
  async submitRedeclarationIntent(currentBlock, redeclarationIntent) {
353
353
  this.logger?.log("Submitting redeclaration intent for producer:", this.account.address);
354
- const tx = await buildTransaction(this.chainIterator.chainId, [
355
- redeclarationIntent
356
- ], [], this.account, currentBlock, currentBlock + 1e3);
354
+ const tx = await buildTransaction(
355
+ this.chainIterator.chainId,
356
+ [redeclarationIntent],
357
+ [],
358
+ this.account,
359
+ currentBlock,
360
+ currentBlock + 1e3
361
+ );
357
362
  const payloads = flattenHydratedTransaction(tx);
358
363
  const root = tx[0]._hash;
359
- const payloadBundle = new PayloadBuilder2({
360
- schema: PayloadBundleSchema
361
- }).fields({
362
- payloads,
363
- root
364
- }).build();
365
- await this.pendingBundledTransactionsArchivistWrite.insert([
366
- payloadBundle
367
- ]);
364
+ const payloadBundle = new PayloadBuilder2({ schema: PayloadBundleSchema }).fields({ payloads, root }).build();
365
+ await this.pendingBundledTransactionsArchivistWrite.insert([payloadBundle]);
368
366
  this.logger?.log("Submitted redeclaration intent for producer:", this.account.address);
369
367
  }
370
368
  async validateCurrentBalance() {
371
369
  const head = this._lastProducedBlock?.[0]._hash;
372
370
  if (isDefined(head)) {
373
- const balances = await this.balanceService.balances(head, [
374
- this.account.address
375
- ]);
371
+ const balances = await this.balanceService.balances(head, [this.account.address]);
376
372
  const currentBalance = balances[this.account.address] ?? 0n;
377
373
  if (currentBalance <= 0n) {
378
374
  this.logger?.error(`Producer ${this.account.address} has no balance.`);
@@ -399,9 +395,6 @@ import { toHex as toHex3 } from "@xylabs/hex";
399
395
  import { isDefined as isDefined2, isUndefined as isUndefined2 } from "@xylabs/typeof";
400
396
  import { PayloadBuilder as PayloadBuilder3 } from "@xyo-network/payload-builder";
401
397
  var ValidatorActor = class _ValidatorActor extends Actor {
402
- static {
403
- __name(this, "ValidatorActor");
404
- }
405
398
  _lastValidatedBlock;
406
399
  _lastValidatedBlockHash;
407
400
  constructor(params) {
@@ -471,24 +464,16 @@ var ValidatorActor = class _ValidatorActor extends Actor {
471
464
  // src/orchestration/health/initHealthEndpoints.ts
472
465
  import http from "http";
473
466
  import { isDefined as isDefined3 } from "@xylabs/typeof";
474
- var sendStatus = /* @__PURE__ */ __name((res, status, errorCode) => {
467
+ var sendStatus = (res, status, errorCode) => {
475
468
  const statusCode = status === "started" ? 200 : errorCode;
476
- res.writeHead(statusCode, {
477
- "Content-Type": "application/json"
478
- });
479
- res.end(JSON.stringify({
480
- status
481
- }));
482
- }, "sendStatus");
483
- var notFound = /* @__PURE__ */ __name((res) => {
484
- res.writeHead(404, {
485
- "Content-Type": "application/json"
486
- });
487
- res.end(JSON.stringify({
488
- status: "not found"
489
- }));
490
- }, "notFound");
491
- var createHealthServer = /* @__PURE__ */ __name((port, statusMonitor, logger) => {
469
+ res.writeHead(statusCode, { "Content-Type": "application/json" });
470
+ res.end(JSON.stringify({ status }));
471
+ };
472
+ var notFound = (res) => {
473
+ res.writeHead(404, { "Content-Type": "application/json" });
474
+ res.end(JSON.stringify({ status: "not found" }));
475
+ };
476
+ var createHealthServer = (port, statusMonitor, logger) => {
492
477
  const server = http.createServer((req, res) => {
493
478
  const url = req.url ?? "";
494
479
  const status = statusMonitor.getGlobalStatus();
@@ -517,12 +502,16 @@ var createHealthServer = /* @__PURE__ */ __name((port, statusMonitor, logger) =>
517
502
  logger.log(" - /readyz");
518
503
  });
519
504
  return server;
520
- }, "createHealthServer");
521
- var initHealthEndpoints = /* @__PURE__ */ __name((params) => {
522
- const { config: config3, logger, statusReporter } = params;
505
+ };
506
+ var initHealthEndpoints = (params) => {
507
+ const {
508
+ config: config3,
509
+ logger,
510
+ statusReporter
511
+ } = params;
523
512
  const { healthCheckPort } = config3.producer;
524
513
  return isDefined3(healthCheckPort) ? createHealthServer(healthCheckPort, statusReporter, logger) : void 0;
525
- }, "initHealthEndpoints");
514
+ };
526
515
 
527
516
  // src/orchestration/initServices.ts
528
517
  import { assertEx as assertEx17 } from "@xylabs/assert";
@@ -548,13 +537,13 @@ import { LmdbArchivist, LmdbArchivistConfigSchema } from "@xyo-network/archivist
548
537
 
549
538
  // src/orchestration/store/getStoreDirectory.ts
550
539
  import Path from "path";
551
- var getStoreDirectory = /* @__PURE__ */ __name((name, storageRoot, kind) => {
540
+ var getStoreDirectory = (name, storageRoot, kind) => {
552
541
  return kind === void 0 ? Path.join(storageRoot, name) : Path.join(storageRoot, kind, name);
553
- }, "getStoreDirectory");
542
+ };
554
543
 
555
544
  // src/orchestration/archivists/lib/localPersistentArchivist.ts
556
545
  var DEFAULT_STORAGE_ROOT = Path2.join(process.cwd(), ".store");
557
- var getLocalPersistentArchivist = /* @__PURE__ */ __name((dbName, storeName, storageRoot, kind = "lmdb") => {
546
+ var getLocalPersistentArchivist = (dbName, storeName, storageRoot, kind = "lmdb") => {
558
547
  switch (kind) {
559
548
  case "lmdb": {
560
549
  const root = storageRoot ?? DEFAULT_STORAGE_ROOT;
@@ -570,19 +559,19 @@ var getLocalPersistentArchivist = /* @__PURE__ */ __name((dbName, storeName, sto
570
559
  });
571
560
  }
572
561
  }
573
- }, "getLocalPersistentArchivist");
562
+ };
574
563
 
575
564
  // src/orchestration/archivists/ChainFinalized/local.ts
576
565
  var mutex = new Mutex2();
577
566
  var singleton;
578
- var initLocalChainFinalizedArchivist = /* @__PURE__ */ __name(async ({ config: config3 }) => {
567
+ var initLocalChainFinalizedArchivist = async ({ config: config3 }) => {
579
568
  return await mutex.runExclusive(async () => {
580
569
  if (singleton) return singleton;
581
570
  const { root } = config3.storage;
582
571
  singleton = await getLocalPersistentArchivist("chain", "finalized", root);
583
572
  return singleton;
584
573
  });
585
- }, "initLocalChainFinalizedArchivist");
574
+ };
586
575
 
587
576
  // src/orchestration/archivists/ChainFinalized/remote.ts
588
577
  import { assertEx as assertEx5 } from "@xylabs/assert";
@@ -591,42 +580,39 @@ import { getUrl } from "@xyo-network/xl1-protocol-sdk";
591
580
  import { Mutex as Mutex3 } from "async-mutex";
592
581
  var mutex2 = new Mutex3();
593
582
  var singleton2;
594
- var initRemoteChainFinalizedArchivist = /* @__PURE__ */ __name(async ({ config: config3 }) => {
583
+ var initRemoteChainFinalizedArchivist = async ({ config: config3 }) => {
595
584
  return await mutex2.runExclusive(async () => {
596
585
  if (singleton2) return singleton2;
597
586
  const { host, port } = config3.api;
598
587
  const nodeUrl = getUrl(host, port);
599
588
  const bridge = await initBridge(nodeUrl);
600
- singleton2 = await initBridgedArchivistModule({
601
- bridge,
602
- moduleName: "XYOChain:Chain:Finalized"
603
- });
589
+ singleton2 = await initBridgedArchivistModule({ bridge, moduleName: "XYOChain:Chain:Finalized" });
604
590
  return assertEx5(singleton2, () => "Error: RemoteChainFinalizedArchivist failed to initialize");
605
591
  });
606
- }, "initRemoteChainFinalizedArchivist");
592
+ };
607
593
 
608
594
  // src/orchestration/archivists/ChainFinalized/archivist.ts
609
595
  var mutex3 = new Mutex4();
610
596
  var singleton3;
611
- async function initChainFinalizedArchivist({ config: config3, logger, traceProvider }) {
597
+ async function initChainFinalizedArchivist({
598
+ config: config3,
599
+ logger,
600
+ traceProvider
601
+ }) {
612
602
  return await mutex3.runExclusive(async () => {
613
603
  if (singleton3) return singleton3;
614
604
  const [remote, local] = await Promise.all([
615
- startupSpanAsync("ChainFinalizedArchivist:initRemote", () => initRemoteChainFinalizedArchivist({
616
- config: config3,
617
- logger
618
- })),
619
- startupSpanAsync("ChainFinalizedArchivist:initLocal", () => initLocalChainFinalizedArchivist({
620
- config: config3,
621
- logger
622
- }))
605
+ startupSpanAsync("ChainFinalizedArchivist:initRemote", () => initRemoteChainFinalizedArchivist({ config: config3, logger })),
606
+ startupSpanAsync("ChainFinalizedArchivist:initLocal", () => initLocalChainFinalizedArchivist({ config: config3, logger }))
623
607
  ]);
624
- await startupSpanAsync("ChainFinalizedArchivist:initArchivistSync", () => initArchivistSync("ChainFinalizedArchivist", remote, local, 200, Number.MAX_SAFE_INTEGER, traceProvider));
608
+ await startupSpanAsync(
609
+ "ChainFinalizedArchivist:initArchivistSync",
610
+ () => initArchivistSync("ChainFinalizedArchivist", remote, local, 200, Number.MAX_SAFE_INTEGER, traceProvider)
611
+ );
625
612
  singleton3 = local;
626
613
  return singleton3;
627
614
  });
628
615
  }
629
- __name(initChainFinalizedArchivist, "initChainFinalizedArchivist");
630
616
 
631
617
  // src/orchestration/archivists/ChainSubmissions/archivist.ts
632
618
  import { assertEx as assertEx7 } from "@xylabs/assert";
@@ -640,31 +626,28 @@ import { getUrl as getUrl2 } from "@xyo-network/xl1-protocol-sdk";
640
626
  import { Mutex as Mutex5 } from "async-mutex";
641
627
  var mutex4 = new Mutex5();
642
628
  var singleton4;
643
- var initRemoteChainSubmissionsArchivist = /* @__PURE__ */ __name(async ({ config: config3 }) => {
629
+ var initRemoteChainSubmissionsArchivist = async ({ config: config3 }) => {
644
630
  return await mutex4.runExclusive(async () => {
645
631
  if (singleton4) return singleton4;
646
632
  const { host, port } = config3.api;
647
633
  const nodeUrl = getUrl2(host, port);
648
634
  const bridge = await initBridge2(nodeUrl);
649
- singleton4 = await initBridgedArchivistModule2({
650
- bridge,
651
- moduleName: "XYOChain:Chain:Submissions"
652
- });
635
+ singleton4 = await initBridgedArchivistModule2({ bridge, moduleName: "XYOChain:Chain:Submissions" });
653
636
  return assertEx6(singleton4, () => new Error("Failed to initialize RemoteChainSubmissionsArchivist"));
654
637
  });
655
- }, "initRemoteChainSubmissionsArchivist");
638
+ };
656
639
 
657
640
  // src/orchestration/archivists/ChainSubmissions/archivist.ts
658
641
  var mutex5 = new Mutex6();
659
642
  var singleton5;
660
- var initChainSubmissionsArchivist = /* @__PURE__ */ __name(async (params) => {
643
+ var initChainSubmissionsArchivist = async (params) => {
661
644
  return await mutex5.runExclusive(async () => {
662
645
  if (singleton5) return singleton5;
663
646
  const remote = await startupSpanAsync2("ChainSubmissionsArchivist:initRemote", () => initRemoteChainSubmissionsArchivist(params));
664
647
  singleton5 = remote;
665
648
  return assertEx7(singleton5, () => new Error("Failed to initialize ChainSubmissionsArchivist"));
666
649
  });
667
- }, "initChainSubmissionsArchivist");
650
+ };
668
651
 
669
652
  // src/orchestration/archivists/PendingTransactions/archivist.ts
670
653
  import { initArchivistSync as initArchivistSync2 } from "@xyo-network/chain-orchestration";
@@ -676,7 +659,7 @@ import { MemoryArchivist, MemoryArchivistConfigSchema } from "@xyo-network/archi
676
659
  import { Mutex as Mutex7 } from "async-mutex";
677
660
  var mutex6 = new Mutex7();
678
661
  var singleton6;
679
- var initLocalPendingTransactionsArchivist = /* @__PURE__ */ __name(async () => {
662
+ var initLocalPendingTransactionsArchivist = async () => {
680
663
  return await mutex6.runExclusive(async () => {
681
664
  if (singleton6) return singleton6;
682
665
  singleton6 = await MemoryArchivist.create({
@@ -689,7 +672,7 @@ var initLocalPendingTransactionsArchivist = /* @__PURE__ */ __name(async () => {
689
672
  });
690
673
  return singleton6;
691
674
  });
692
- }, "initLocalPendingTransactionsArchivist");
675
+ };
693
676
 
694
677
  // src/orchestration/archivists/PendingTransactions/remote.ts
695
678
  import { assertEx as assertEx8 } from "@xylabs/assert";
@@ -698,41 +681,35 @@ import { getUrl as getUrl3 } from "@xyo-network/xl1-protocol-sdk";
698
681
  import { Mutex as Mutex8 } from "async-mutex";
699
682
  var mutex7 = new Mutex8();
700
683
  var singleton7;
701
- var initRemotePendingTransactionsArchivist = /* @__PURE__ */ __name(async ({ config: config3 }) => {
684
+ var initRemotePendingTransactionsArchivist = async ({ config: config3 }) => {
702
685
  return await mutex7.runExclusive(async () => {
703
686
  if (singleton7) return singleton7;
704
687
  const { host, port } = config3.api;
705
688
  const nodeUrl = getUrl3(host, port);
706
689
  const bridge = await initBridge3(nodeUrl);
707
- singleton7 = await initBridgedArchivistModule3({
708
- bridge,
709
- moduleName: "XYOChain:Pending:PendingTransactions"
710
- });
690
+ singleton7 = await initBridgedArchivistModule3({ bridge, moduleName: "XYOChain:Pending:PendingTransactions" });
711
691
  return assertEx8(singleton7, () => "Error: RemotePendingBundledTransactionsArchivist is undefined");
712
692
  });
713
- }, "initRemotePendingTransactionsArchivist");
693
+ };
714
694
 
715
695
  // src/orchestration/archivists/PendingTransactions/archivist.ts
716
696
  var mutex8 = new Mutex9();
717
697
  var singleton8;
718
- var initPendingBundledTransactionsArchivist = /* @__PURE__ */ __name(async (params) => {
698
+ var initPendingBundledTransactionsArchivist = async (params) => {
719
699
  return await mutex8.runExclusive(async () => {
720
700
  if (singleton8) return singleton8;
721
701
  const remote = await startupSpanAsync3("PendingBundledTransactionsArchivist:initRemote", () => initRemotePendingTransactionsArchivist(params));
722
702
  const local = await startupSpanAsync3("PendingBundledTransactionsArchivist:initLocal", () => initLocalPendingTransactionsArchivist(params));
723
- const start2 = await remote.next({
724
- limit: 1,
725
- order: "desc"
726
- });
703
+ const start2 = await remote.next({ limit: 1, order: "desc" });
727
704
  await local.insert(start2);
728
- await startupSpanAsync3("PendingBundledTransactionsArchivist:initArchivistSync", () => initArchivistSync2("PendingBundledTransactionsArchivist", remote, local));
729
- singleton8 = [
730
- local,
731
- remote
732
- ];
705
+ await startupSpanAsync3(
706
+ "PendingBundledTransactionsArchivist:initArchivistSync",
707
+ () => initArchivistSync2("PendingBundledTransactionsArchivist", remote, local)
708
+ );
709
+ singleton8 = [local, remote];
733
710
  return singleton8;
734
711
  });
735
- }, "initPendingBundledTransactionsArchivist");
712
+ };
736
713
 
737
714
  // src/orchestration/archivists/RejectedTransactions/archivist.ts
738
715
  import { startupSpanAsync as startupSpanAsync4 } from "@xyo-network/chain-utils";
@@ -743,7 +720,7 @@ import { MemoryArchivist as MemoryArchivist2, MemoryArchivistConfigSchema as Mem
743
720
  import { Mutex as Mutex10 } from "async-mutex";
744
721
  var mutex9 = new Mutex10();
745
722
  var singleton9;
746
- var initLocalRejectedTransactionsArchivist = /* @__PURE__ */ __name(async () => {
723
+ var initLocalRejectedTransactionsArchivist = async () => {
747
724
  return await mutex9.runExclusive(async () => {
748
725
  if (singleton9) return singleton9;
749
726
  singleton9 = await MemoryArchivist2.create({
@@ -756,7 +733,7 @@ var initLocalRejectedTransactionsArchivist = /* @__PURE__ */ __name(async () =>
756
733
  });
757
734
  return singleton9;
758
735
  });
759
- }, "initLocalRejectedTransactionsArchivist");
736
+ };
760
737
 
761
738
  // src/orchestration/archivists/RejectedTransactions/archivist.ts
762
739
  var mutex10 = new Mutex11();
@@ -769,7 +746,6 @@ async function initRejectedTransactionsArchivist(params) {
769
746
  return singleton10;
770
747
  });
771
748
  }
772
- __name(initRejectedTransactionsArchivist, "initRejectedTransactionsArchivist");
773
749
 
774
750
  // src/orchestration/archivists/StakeIntentState/archivist.ts
775
751
  import { assertEx as assertEx10 } from "@xylabs/assert";
@@ -781,26 +757,26 @@ import { assertEx as assertEx9 } from "@xylabs/assert";
781
757
  import { Mutex as Mutex12 } from "async-mutex";
782
758
  var mutex11 = new Mutex12();
783
759
  var singleton11;
784
- var initLocalStakeIntentStateArchivist = /* @__PURE__ */ __name(async ({ config: config3 }) => {
760
+ var initLocalStakeIntentStateArchivist = async ({ config: config3 }) => {
785
761
  return await mutex11.runExclusive(async () => {
786
762
  if (singleton11) return singleton11;
787
763
  const { root } = config3.storage;
788
764
  singleton11 = await getLocalPersistentArchivist("stakeIntent", "state", root);
789
765
  return assertEx9(singleton11, () => new Error("Failed to initialize stake intent state archivist"));
790
766
  });
791
- }, "initLocalStakeIntentStateArchivist");
767
+ };
792
768
 
793
769
  // src/orchestration/archivists/StakeIntentState/archivist.ts
794
770
  var mutex12 = new Mutex13();
795
771
  var singleton12;
796
- var initStakeIntentStateArchivist = /* @__PURE__ */ __name(async (params) => {
772
+ var initStakeIntentStateArchivist = async (params) => {
797
773
  return await mutex12.runExclusive(async () => {
798
774
  if (singleton12) return singleton12;
799
775
  const local = await startupSpanAsync5("StakeIntentStateArchivist:initLocal", () => initLocalStakeIntentStateArchivist(params));
800
776
  singleton12 = local;
801
777
  return assertEx10(singleton12, () => "Error: StakeIntentStateArchivist is undefined");
802
778
  });
803
- }, "initStakeIntentStateArchivist");
779
+ };
804
780
 
805
781
  // src/orchestration/map/BalanceSummary/initBalanceSummaryMap.ts
806
782
  import { isDefined as isDefined5 } from "@xylabs/typeof";
@@ -817,34 +793,24 @@ import Path3 from "path";
817
793
 
818
794
  // src/orchestration/map/driver/lmdb/SynchronousLmdbMap.ts
819
795
  import { AbstractCreatable, creatable } from "@xylabs/creatable";
820
- import { open } from "lmdb";
821
- function _ts_decorate(decorators, target, key, desc) {
822
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
823
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
824
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
825
- return c > 3 && r && Object.defineProperty(target, key, r), r;
826
- }
827
- __name(_ts_decorate, "_ts_decorate");
796
+ import {
797
+ open
798
+ } from "lmdb";
828
799
  var SynchronousLmdbMap = class extends AbstractCreatable {
829
- static {
830
- __name(this, "SynchronousLmdbMap");
831
- }
832
800
  db;
833
801
  rootDatabase;
834
802
  /**
835
- * The path to the LMDB folder where the database is stored.
836
- * This is constructed from the location and dbName parameters
837
- * allowing for multiple DBs within the root (by specifying a
838
- * different storeName).
839
- * @returns The folder path for the LMDB database.
840
- */
803
+ * The path to the LMDB folder where the database is stored.
804
+ * This is constructed from the location and dbName parameters
805
+ * allowing for multiple DBs within the root (by specifying a
806
+ * different storeName).
807
+ * @returns The folder path for the LMDB database.
808
+ */
841
809
  get folderPath() {
842
810
  return `${this.params.location}/${this.params.dbName}`;
843
811
  }
844
812
  all() {
845
- return [
846
- ...this.db.getRange({})
847
- ].map((entry) => entry.value);
813
+ return [...this.db.getRange({})].map((entry) => entry.value);
848
814
  }
849
815
  clear() {
850
816
  this.db.clearSync();
@@ -864,21 +830,17 @@ var SynchronousLmdbMap = class extends AbstractCreatable {
864
830
  }
865
831
  async startHandler() {
866
832
  await super.startHandler();
867
- this.rootDatabase = open({
868
- path: this.folderPath
869
- });
870
- this.db = this.rootDatabase.openDB({
871
- name: this.params.storeName
872
- });
833
+ this.rootDatabase = open({ path: this.folderPath });
834
+ this.db = this.rootDatabase.openDB({ name: this.params.storeName });
873
835
  }
874
836
  };
875
- SynchronousLmdbMap = _ts_decorate([
837
+ SynchronousLmdbMap = __decorateClass([
876
838
  creatable()
877
839
  ], SynchronousLmdbMap);
878
840
 
879
841
  // src/orchestration/map/localPersistentMap.ts
880
842
  var DEFAULT_STORAGE_ROOT2 = Path3.join(process.cwd(), ".store");
881
- var getLocalPersistentMap = /* @__PURE__ */ __name(async (dbName, storeName, storageRoot, kind = "lmdb") => {
843
+ var getLocalPersistentMap = async (dbName, storeName, storageRoot, kind = "lmdb") => {
882
844
  switch (kind) {
883
845
  case "lmdb": {
884
846
  const root = storageRoot ?? DEFAULT_STORAGE_ROOT2;
@@ -891,19 +853,19 @@ var getLocalPersistentMap = /* @__PURE__ */ __name(async (dbName, storeName, sto
891
853
  return store;
892
854
  }
893
855
  }
894
- }, "getLocalPersistentMap");
856
+ };
895
857
 
896
858
  // src/orchestration/map/BalanceSummary/local.ts
897
859
  var mutex13 = new Mutex14();
898
860
  var singleton13;
899
- var initLocalBalanceSummaryMap = /* @__PURE__ */ __name(async (params) => {
861
+ var initLocalBalanceSummaryMap = async (params) => {
900
862
  return await mutex13.runExclusive(async () => {
901
863
  if (isDefined4(singleton13)) return singleton13;
902
864
  const { root } = params.config.storage;
903
865
  singleton13 = await getLocalPersistentMap("balance", "summary", root);
904
866
  return singleton13;
905
867
  });
906
- }, "initLocalBalanceSummaryMap");
868
+ };
907
869
 
908
870
  // src/orchestration/map/BalanceSummary/initBalanceSummaryMap.ts
909
871
  var mutex14 = new Mutex15();
@@ -916,14 +878,13 @@ async function initBalanceSummaryMap(params) {
916
878
  return singleton14;
917
879
  });
918
880
  }
919
- __name(initBalanceSummaryMap, "initBalanceSummaryMap");
920
881
 
921
882
  // src/orchestration/services/implementation/account.ts
922
883
  import { isUndefined as isUndefined3 } from "@xylabs/typeof";
923
884
  import { HDWallet } from "@xyo-network/wallet";
924
885
  import { ADDRESS_INDEX, generateXyoBaseWalletFromPhrase } from "@xyo-network/xl1-protocol-sdk";
925
886
  var accountServiceSingleton;
926
- var initAccount = /* @__PURE__ */ __name(async ({ config: config3, logger }) => {
887
+ var initAccount = async ({ config: config3, logger }) => {
927
888
  if (accountServiceSingleton) return accountServiceSingleton;
928
889
  let walletPhrase = config3.producer.mnemonic;
929
890
  if (isUndefined3(walletPhrase)) {
@@ -940,16 +901,16 @@ ${randomMnemonic}
940
901
  const account = await wallet.derivePath(ADDRESS_INDEX.XYO);
941
902
  accountServiceSingleton = account;
942
903
  return accountServiceSingleton;
943
- }, "initAccount");
904
+ };
944
905
 
945
906
  // src/orchestration/services/implementation/balance.ts
946
907
  import { BaseAccountBalanceService } from "@xyo-network/chain-services";
947
908
  var balanceServiceSingleton;
948
- var initBalanceService = /* @__PURE__ */ __name(async (params) => {
909
+ var initBalanceService = async (params) => {
949
910
  if (balanceServiceSingleton) return balanceServiceSingleton;
950
911
  balanceServiceSingleton = await BaseAccountBalanceService.create(params);
951
912
  return balanceServiceSingleton;
952
- }, "initBalanceService");
913
+ };
953
914
 
954
915
  // src/orchestration/services/implementation/chain/index.ts
955
916
  import { MemoryChainService } from "@xyo-network/chain-services";
@@ -973,14 +934,12 @@ import { InfuraProvider } from "ethers/providers";
973
934
  import { assertEx as assertEx11 } from "@xylabs/assert";
974
935
  import { hexFrom, isHex } from "@xylabs/hex";
975
936
  import { isDefined as isDefined6 } from "@xylabs/typeof";
976
- var canUseChainId = /* @__PURE__ */ __name((config3) => {
937
+ var canUseChainId = (config3) => {
977
938
  return isDefined6(config3.evm.chainId);
978
- }, "canUseChainId");
979
- var getChainId = /* @__PURE__ */ __name((config3) => {
939
+ };
940
+ var getChainId = (config3) => {
980
941
  const chainId = assertEx11(config3.evm.chainId, () => "Missing config.evm.chainId");
981
- if (isHex(chainId, {
982
- prefix: true
983
- })) {
942
+ if (isHex(chainId, { prefix: true })) {
984
943
  const hex = hexFrom(chainId);
985
944
  const parsed = Number.parseInt(hex, 16);
986
945
  return parsed;
@@ -988,51 +947,44 @@ var getChainId = /* @__PURE__ */ __name((config3) => {
988
947
  const parsed = Number.parseInt(chainId, 10);
989
948
  return parsed;
990
949
  }
991
- }, "getChainId");
950
+ };
992
951
 
993
952
  // src/orchestration/services/implementation/evm/initInfuraProvider.ts
994
953
  var instance;
995
- var initInfuraProvider = /* @__PURE__ */ __name((config3) => {
954
+ var initInfuraProvider = (config3) => {
996
955
  if (instance) return instance;
997
956
  const providerConfig = getInfuraProviderConfig(config3);
998
957
  instance = Promise.resolve(new InfuraProvider(...providerConfig));
999
958
  return instance;
1000
- }, "initInfuraProvider");
1001
- var canUseInfuraProvider = /* @__PURE__ */ __name((config3) => {
959
+ };
960
+ var canUseInfuraProvider = (config3) => {
1002
961
  return canUseChainId(config3) && isDefined7(config3.evm?.infura?.projectId) && isDefined7(config3.evm?.infura?.projectSecret);
1003
- }, "canUseInfuraProvider");
1004
- var getInfuraProviderConfig = /* @__PURE__ */ __name((config3) => {
962
+ };
963
+ var getInfuraProviderConfig = (config3) => {
1005
964
  const projectId = assertEx12(config3.evm?.infura?.projectId, () => "Missing config.evm.infura.projectId");
1006
965
  const projectSecret = assertEx12(config3.evm?.infura?.projectSecret, () => "Missing config.evm.infura.projectSecret");
1007
- return [
1008
- getChainId(config3),
1009
- projectId,
1010
- projectSecret
1011
- ];
1012
- }, "getInfuraProviderConfig");
966
+ return [getChainId(config3), projectId, projectSecret];
967
+ };
1013
968
 
1014
969
  // src/orchestration/services/implementation/evm/initJsonRpcProvider.ts
1015
970
  import { assertEx as assertEx13 } from "@xylabs/assert";
1016
971
  import { isDefined as isDefined8 } from "@xylabs/typeof";
1017
972
  import { JsonRpcProvider } from "ethers/providers";
1018
- var initJsonRpcProvider = /* @__PURE__ */ __name((config3) => {
973
+ var initJsonRpcProvider = (config3) => {
1019
974
  const providerConfig = getJsonRpcProviderConfig(config3);
1020
975
  return Promise.resolve(new JsonRpcProvider(...providerConfig));
1021
- }, "initJsonRpcProvider");
1022
- var canUseJsonRpcProvider = /* @__PURE__ */ __name((config3) => {
976
+ };
977
+ var canUseJsonRpcProvider = (config3) => {
1023
978
  return canUseChainId(config3) && isDefined8(config3.evm.jsonRpc?.url);
1024
- }, "canUseJsonRpcProvider");
1025
- var getJsonRpcProviderConfig = /* @__PURE__ */ __name((config3) => {
979
+ };
980
+ var getJsonRpcProviderConfig = (config3) => {
1026
981
  const jsonRpcUrl = assertEx13(config3.evm.jsonRpc?.url, () => "Missing config.evm.jsonRpc.url");
1027
- return [
1028
- jsonRpcUrl,
1029
- getChainId(config3)
1030
- ];
1031
- }, "getJsonRpcProviderConfig");
982
+ return [jsonRpcUrl, getChainId(config3)];
983
+ };
1032
984
 
1033
985
  // src/orchestration/services/implementation/evm/initEvmProvider.ts
1034
986
  var provider;
1035
- var initEvmProvider = /* @__PURE__ */ __name(async ({ config: config3 }) => {
987
+ var initEvmProvider = async ({ config: config3 }) => {
1036
988
  if (provider) return provider;
1037
989
  if (canUseInfuraProvider(config3)) {
1038
990
  provider = initInfuraProvider(config3);
@@ -1040,26 +992,28 @@ var initEvmProvider = /* @__PURE__ */ __name(async ({ config: config3 }) => {
1040
992
  provider = initJsonRpcProvider(config3);
1041
993
  }
1042
994
  return assertEx14(await provider, () => "Error: No provider available");
1043
- }, "initEvmProvider");
1044
- var canUseEvmProvider = /* @__PURE__ */ __name(({ config: config3 }) => {
995
+ };
996
+ var canUseEvmProvider = ({ config: config3 }) => {
1045
997
  return canUseInfuraProvider(config3) || canUseJsonRpcProvider(config3);
1046
- }, "canUseEvmProvider");
998
+ };
1047
999
 
1048
1000
  // src/orchestration/services/implementation/chain/evm.ts
1049
1001
  var chainStakeServiceSingleton;
1050
- var canUseEvmContractChainService = /* @__PURE__ */ __name((config3) => {
1002
+ var canUseEvmContractChainService = (config3) => {
1051
1003
  const { id } = config3.chain;
1052
- return isDefined9(id) && id !== ZERO_ADDRESS && canUseEvmProvider({
1053
- config: config3
1054
- });
1055
- }, "canUseEvmContractChainService");
1056
- var initEvmContractChainService = /* @__PURE__ */ __name(async ({ account, config: config3, traceProvider, meterProvider, logger }) => {
1004
+ return isDefined9(id) && id !== ZERO_ADDRESS && canUseEvmProvider({ config: config3 });
1005
+ };
1006
+ var initEvmContractChainService = async ({
1007
+ account,
1008
+ config: config3,
1009
+ traceProvider,
1010
+ meterProvider,
1011
+ logger
1012
+ }) => {
1057
1013
  if (chainStakeServiceSingleton) return chainStakeServiceSingleton;
1058
1014
  const emvStakingContractAddress = assertEx15(config3.chain.id, () => "Error: config.chain.id is required");
1059
1015
  const id = assertEx15(asAddress(emvStakingContractAddress), () => "Error: config.chain.id is not a valid address");
1060
- const provider2 = assertEx15(await initEvmProvider({
1061
- config: config3
1062
- }));
1016
+ const provider2 = assertEx15(await initEvmProvider({ config: config3 }));
1063
1017
  const privateKey = assertEx15(account.private?.hex, () => "Error: Account does not have a private key");
1064
1018
  const runner = new Wallet(privateKey, provider2);
1065
1019
  chainStakeServiceSingleton = EvmChainService.create({
@@ -1070,27 +1024,21 @@ var initEvmContractChainService = /* @__PURE__ */ __name(async ({ account, confi
1070
1024
  logger
1071
1025
  });
1072
1026
  return await chainStakeServiceSingleton;
1073
- }, "initEvmContractChainService");
1027
+ };
1074
1028
 
1075
1029
  // src/orchestration/services/implementation/chain/index.ts
1076
1030
  var chainStakeServiceSingleton2;
1077
- var initChainService = /* @__PURE__ */ __name(({ account, config: config3 }) => init({
1031
+ var initChainService = ({ account, config: config3 }) => init({
1078
1032
  config: config3,
1079
1033
  name: "ChainService",
1080
1034
  account
1081
- }), "initChainService");
1082
- var init = /* @__PURE__ */ __name((params) => {
1035
+ });
1036
+ var init = (params) => {
1083
1037
  if (chainStakeServiceSingleton2) return chainStakeServiceSingleton2;
1084
1038
  const { config: config3 } = params;
1085
- chainStakeServiceSingleton2 = canUseEvmContractChainService(config3) ? initEvmContractChainService({
1086
- ...params,
1087
- name: "ChainStakeService"
1088
- }) : MemoryChainService.create({
1089
- ...params,
1090
- name: "ChainStakeService"
1091
- });
1039
+ chainStakeServiceSingleton2 = canUseEvmContractChainService(config3) ? initEvmContractChainService({ ...params, name: "ChainStakeService" }) : MemoryChainService.create({ ...params, name: "ChainStakeService" });
1092
1040
  return chainStakeServiceSingleton2;
1093
- }, "init");
1041
+ };
1094
1042
 
1095
1043
  // src/orchestration/services/implementation/head.ts
1096
1044
  import { delay } from "@xylabs/delay";
@@ -1098,88 +1046,90 @@ import { ZERO_ADDRESS as ZERO_ADDRESS2 } from "@xylabs/hex";
1098
1046
  import { createGenesisBlock, findMostRecentBlock as findMostRecentBlock2 } from "@xyo-network/chain-protocol";
1099
1047
  import { flattenHydratedBlock as flattenHydratedBlock2 } from "@xyo-network/xl1-protocol-sdk";
1100
1048
  var headSingleton;
1101
- var createBootstrapHead = /* @__PURE__ */ __name(async (chainSubmissionsArchivistWrite, chainArchivist, account) => {
1049
+ var createBootstrapHead = async (chainSubmissionsArchivistWrite, chainArchivist, account) => {
1102
1050
  const block = await createGenesisBlock(account, ZERO_ADDRESS2, 10000000n, account.address);
1103
1051
  const [bw] = block;
1104
1052
  await chainSubmissionsArchivistWrite.insert(flattenHydratedBlock2(block));
1105
1053
  while (true) {
1106
- const result = await chainArchivist.get([
1107
- bw._hash
1108
- ]);
1054
+ const result = await chainArchivist.get([bw._hash]);
1109
1055
  if (result.length > 0) break;
1110
1056
  await delay(1e3);
1111
1057
  }
1112
1058
  return bw;
1113
- }, "createBootstrapHead");
1114
- var initHead = /* @__PURE__ */ __name(async (params) => {
1115
- const { account, chainArchivist, chainSubmissionsArchivistWrite } = params;
1059
+ };
1060
+ var initHead = async (params) => {
1061
+ const {
1062
+ account,
1063
+ chainArchivist,
1064
+ chainSubmissionsArchivistWrite
1065
+ } = params;
1116
1066
  if (headSingleton) return headSingleton;
1117
1067
  let head = await findMostRecentBlock2(chainArchivist);
1118
1068
  if (!head) head = await createBootstrapHead(chainSubmissionsArchivistWrite, chainArchivist, account);
1119
1069
  headSingleton = head;
1120
1070
  return headSingleton;
1121
- }, "initHead");
1071
+ };
1122
1072
 
1123
1073
  // src/orchestration/services/implementation/iterator.ts
1124
- import { BaseElectionService, ChainBlockNumberIterationService, XyoStakeIntentService } from "@xyo-network/chain-services";
1074
+ import {
1075
+ BaseElectionService,
1076
+ ChainBlockNumberIterationService,
1077
+ XyoStakeIntentService
1078
+ } from "@xyo-network/chain-services";
1125
1079
  var chainIteratorServiceSingleton;
1126
1080
  var stakeIntentServiceSingleton;
1127
1081
  var electionServiceSingleton;
1128
- var initChainIterator = /* @__PURE__ */ __name((params) => {
1082
+ var initChainIterator = (params) => {
1129
1083
  if (chainIteratorServiceSingleton) return chainIteratorServiceSingleton;
1130
1084
  chainIteratorServiceSingleton = ChainBlockNumberIterationService.create(params);
1131
1085
  return chainIteratorServiceSingleton;
1132
- }, "initChainIterator");
1133
- var initStakeIntentService = /* @__PURE__ */ __name((params) => {
1086
+ };
1087
+ var initStakeIntentService = (params) => {
1134
1088
  if (stakeIntentServiceSingleton) return stakeIntentServiceSingleton;
1135
1089
  stakeIntentServiceSingleton = XyoStakeIntentService.create(params);
1136
1090
  return stakeIntentServiceSingleton;
1137
- }, "initStakeIntentService");
1138
- var initElectionService = /* @__PURE__ */ __name((params) => {
1091
+ };
1092
+ var initElectionService = (params) => {
1139
1093
  if (electionServiceSingleton) return electionServiceSingleton;
1140
1094
  electionServiceSingleton = BaseElectionService.create(params);
1141
1095
  return electionServiceSingleton;
1142
- }, "initElectionService");
1096
+ };
1143
1097
 
1144
1098
  // src/orchestration/services/implementation/pendingTransactions.ts
1145
1099
  import { BasePendingTransactionsService } from "@xyo-network/chain-services";
1146
1100
  var serviceSingleton;
1147
- var initPendingTransactions = /* @__PURE__ */ __name(async (params) => {
1101
+ var initPendingTransactions = async (params) => {
1148
1102
  if (serviceSingleton) return serviceSingleton;
1149
1103
  serviceSingleton = await BasePendingTransactionsService.create(params);
1150
1104
  return serviceSingleton;
1151
- }, "initPendingTransactions");
1105
+ };
1152
1106
 
1153
1107
  // src/orchestration/services/implementation/producer.ts
1154
1108
  import { BaseBlockProducerService as BaseBlockProducerService2 } from "@xyo-network/chain-services";
1155
1109
  var serviceSingleton2;
1156
- var initBlockProducer = /* @__PURE__ */ __name(async (params) => {
1110
+ var initBlockProducer = async (params) => {
1157
1111
  if (serviceSingleton2) return serviceSingleton2;
1158
1112
  serviceSingleton2 = await BaseBlockProducerService2.create(params);
1159
1113
  return serviceSingleton2;
1160
- }, "initBlockProducer");
1114
+ };
1161
1115
 
1162
1116
  // src/orchestration/services/implementation/reward.ts
1163
1117
  import { assertEx as assertEx16 } from "@xylabs/assert";
1164
1118
  import { EvmBlockRewardService, MemoryBlockRewardService } from "@xyo-network/chain-services";
1165
1119
  var rewardServiceSingleton;
1166
- var initBlockRewardService = /* @__PURE__ */ __name((params) => {
1120
+ var initBlockRewardService = (params) => {
1167
1121
  if (rewardServiceSingleton) return rewardServiceSingleton;
1168
1122
  const { config: config3 } = params;
1169
- rewardServiceSingleton = canUseEvmBlockRewardService({
1170
- config: config3
1171
- }) ? initEvmBlockRewardService(params) : initXyoBlockRewardService(params);
1123
+ rewardServiceSingleton = canUseEvmBlockRewardService({ config: config3 }) ? initEvmBlockRewardService(params) : initXyoBlockRewardService(params);
1172
1124
  return rewardServiceSingleton;
1173
- }, "initBlockRewardService");
1174
- var initXyoBlockRewardService = /* @__PURE__ */ __name((params) => {
1125
+ };
1126
+ var initXyoBlockRewardService = (params) => {
1175
1127
  if (rewardServiceSingleton) return rewardServiceSingleton;
1176
1128
  rewardServiceSingleton = MemoryBlockRewardService.create(params);
1177
1129
  return rewardServiceSingleton;
1178
- }, "initXyoBlockRewardService");
1179
- var canUseEvmBlockRewardService = /* @__PURE__ */ __name((params) => canUseEvmProvider({
1180
- config: params.config
1181
- }), "canUseEvmBlockRewardService");
1182
- var initEvmBlockRewardService = /* @__PURE__ */ __name(async (params) => {
1130
+ };
1131
+ var canUseEvmBlockRewardService = (params) => canUseEvmProvider({ config: params.config });
1132
+ var initEvmBlockRewardService = async (params) => {
1183
1133
  if (rewardServiceSingleton) return rewardServiceSingleton;
1184
1134
  const { account: paramsAccount } = params;
1185
1135
  const account = assertEx16(paramsAccount, () => "Error: Account is required");
@@ -1191,21 +1141,18 @@ var initEvmBlockRewardService = /* @__PURE__ */ __name(async (params) => {
1191
1141
  };
1192
1142
  rewardServiceSingleton = EvmBlockRewardService.create(evmBlockRewardServiceParams);
1193
1143
  return rewardServiceSingleton;
1194
- }, "initEvmBlockRewardService");
1144
+ };
1195
1145
 
1196
1146
  // src/orchestration/services/implementation/validator.ts
1197
1147
  var serviceSingleton3;
1198
- var initValidator = /* @__PURE__ */ __name((params) => {
1148
+ var initValidator = (params) => {
1199
1149
  if (serviceSingleton3) return serviceSingleton3;
1200
1150
  serviceSingleton3 = initBlockProducer(params);
1201
1151
  return serviceSingleton3;
1202
- }, "initValidator");
1152
+ };
1203
1153
 
1204
1154
  // src/orchestration/status/ServiceStatus.ts
1205
1155
  var LoggerStatusReporter = class {
1206
- static {
1207
- __name(this, "LoggerStatusReporter");
1208
- }
1209
1156
  logger;
1210
1157
  statusMap = {};
1211
1158
  constructor(logger) {
@@ -1215,9 +1162,7 @@ var LoggerStatusReporter = class {
1215
1162
  this.statusMap[name] = status;
1216
1163
  const starting = Object.entries(this.statusMap).map(([, value]) => value === "starting" ? 1 : 0).reduce((a, b) => a + b, 0);
1217
1164
  const started = Object.entries(this.statusMap).map(([, value]) => value === "started" ? 1 : 0).reduce((a, b) => a + b, 0);
1218
- this.logger.info(`${started}/${starting + started} ${name} status: ${status}`, {
1219
- progress
1220
- });
1165
+ this.logger.info(`${started}/${starting + started} ${name} status: ${status}`, { progress });
1221
1166
  }
1222
1167
  };
1223
1168
 
@@ -1232,7 +1177,7 @@ var statusPriority = {
1232
1177
  started: 6
1233
1178
  };
1234
1179
  var SENTINEL_STATUS = "starting";
1235
- var reduceToMinimumStatus = /* @__PURE__ */ __name((statuses) => {
1180
+ var reduceToMinimumStatus = (statuses) => {
1236
1181
  let minStatus = SENTINEL_STATUS;
1237
1182
  let minPriority = Infinity;
1238
1183
  for (const status of statuses) {
@@ -1243,11 +1188,8 @@ var reduceToMinimumStatus = /* @__PURE__ */ __name((statuses) => {
1243
1188
  }
1244
1189
  }
1245
1190
  return minStatus;
1246
- }, "reduceToMinimumStatus");
1191
+ };
1247
1192
  var RuntimeStatusMonitor = class extends LoggerStatusReporter {
1248
- static {
1249
- __name(this, "RuntimeStatusMonitor");
1250
- }
1251
1193
  globalTransitions = [];
1252
1194
  transitions = [];
1253
1195
  getGlobalStatus() {
@@ -1258,19 +1200,13 @@ var RuntimeStatusMonitor = class extends LoggerStatusReporter {
1258
1200
  return this.statusMap[name];
1259
1201
  }
1260
1202
  onGlobalTransition(match, handler) {
1261
- this.globalTransitions.push({
1262
- ...match,
1263
- handler
1264
- });
1203
+ this.globalTransitions.push({ ...match, handler });
1265
1204
  }
1266
1205
  /**
1267
- * Register a callback to be called on a specific transition.
1268
- */
1206
+ * Register a callback to be called on a specific transition.
1207
+ */
1269
1208
  onTransition(match, handler) {
1270
- this.transitions.push({
1271
- ...match,
1272
- handler
1273
- });
1209
+ this.transitions.push({ ...match, handler });
1274
1210
  }
1275
1211
  report(name, status, progress) {
1276
1212
  const previous = this.statusMap[name];
@@ -1283,7 +1219,12 @@ var RuntimeStatusMonitor = class extends LoggerStatusReporter {
1283
1219
  this.runTransitions(this.globalTransitions, previousGlobal, globalStatus);
1284
1220
  }
1285
1221
  runTransitions(transitions, prev, next, name) {
1286
- for (const { from, to, name: matchName, handler } of transitions) {
1222
+ for (const {
1223
+ from,
1224
+ to,
1225
+ name: matchName,
1226
+ handler
1227
+ } of transitions) {
1287
1228
  if ((matchName === void 0 || matchName === name) && (from === void 0 || from === prev) && (to === void 0 || to === next)) {
1288
1229
  handler(prev, next);
1289
1230
  }
@@ -1302,28 +1243,24 @@ var telemetryConfig = {
1302
1243
  port: 9464
1303
1244
  }
1304
1245
  };
1305
- var isStartable = /* @__PURE__ */ __name((value) => {
1246
+ var isStartable = (value) => {
1306
1247
  return isDefined10(value.start) && typeof value.start === "function";
1307
- }, "isStartable");
1308
- var initServices = /* @__PURE__ */ __name(async (context) => {
1248
+ };
1249
+ var initServices = async (context) => {
1309
1250
  const { config: config3, logger } = context;
1310
1251
  const statusReporter = new RuntimeStatusMonitor(logger);
1311
- statusReporter.onGlobalTransition({
1312
- to: "started"
1313
- }, () => {
1252
+ statusReporter.onGlobalTransition({ to: "started" }, () => {
1314
1253
  logger.log("All services started.");
1315
1254
  });
1316
- statusReporter.onGlobalTransition({
1317
- to: "error"
1318
- }, () => {
1255
+ statusReporter.onGlobalTransition({ to: "error" }, () => {
1319
1256
  logger.error("Producer encountered an unhandled error!");
1320
1257
  process.exit(1);
1321
1258
  });
1322
- await startupSpanAsync7("initHealthEndpoints", () => initHealthEndpoints({
1323
- ...context,
1324
- statusReporter
1325
- }));
1326
- const [{ traceProvider, meterProvider }, account] = await Promise.all([
1259
+ await startupSpanAsync7("initHealthEndpoints", () => initHealthEndpoints({ ...context, statusReporter }));
1260
+ const [
1261
+ { traceProvider, meterProvider },
1262
+ account
1263
+ ] = await Promise.all([
1327
1264
  startupSpanAsync7("initTelemetry", () => initTelemetry(telemetryConfig)),
1328
1265
  startupSpanAsync7("initAccount", () => initAccount(context))
1329
1266
  ]);
@@ -1334,18 +1271,47 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1334
1271
  statusReporter,
1335
1272
  traceProvider
1336
1273
  };
1337
- const [chainArchivist, [pendingBundledTransactionsArchivist, pendingBundledTransactionsArchivistWrite], rejectedTransactionsArchivist, chainSubmissionsArchivistWrite, stakeIntentStateArchivist, chainService, balanceSummaryMap] = await Promise.all([
1338
- startupSpanAsync7("ChainFinalizedArchivist", () => initChainFinalizedArchivist(initParams)),
1339
- startupSpanAsync7("PendingBundledTransactionsArchivist", () => initPendingBundledTransactionsArchivist(initParams)),
1340
- startupSpanAsync7("RejectedTransactionsArchivist", () => initRejectedTransactionsArchivist(initParams)),
1341
- startupSpanAsync7("ChainSubmissionsArchivist", () => initChainSubmissionsArchivist(initParams)),
1342
- startupSpanAsync7("StakeIntentStateArchivist", () => initStakeIntentStateArchivist(initParams)),
1343
- startupSpanAsync7("ChainService", () => initChainService({
1344
- ...initParams,
1345
- account,
1346
- name: "ChainService"
1347
- })),
1348
- startupSpanAsync7("BalanceSummaryMap", () => initBalanceSummaryMap(initParams))
1274
+ const [
1275
+ chainArchivist,
1276
+ [pendingBundledTransactionsArchivist, pendingBundledTransactionsArchivistWrite],
1277
+ rejectedTransactionsArchivist,
1278
+ chainSubmissionsArchivistWrite,
1279
+ stakeIntentStateArchivist,
1280
+ chainService,
1281
+ balanceSummaryMap
1282
+ ] = await Promise.all([
1283
+ startupSpanAsync7(
1284
+ "ChainFinalizedArchivist",
1285
+ () => initChainFinalizedArchivist(initParams)
1286
+ ),
1287
+ startupSpanAsync7(
1288
+ "PendingBundledTransactionsArchivist",
1289
+ () => initPendingBundledTransactionsArchivist(initParams)
1290
+ ),
1291
+ startupSpanAsync7(
1292
+ "RejectedTransactionsArchivist",
1293
+ () => initRejectedTransactionsArchivist(initParams)
1294
+ ),
1295
+ startupSpanAsync7(
1296
+ "ChainSubmissionsArchivist",
1297
+ () => initChainSubmissionsArchivist(initParams)
1298
+ ),
1299
+ startupSpanAsync7(
1300
+ "StakeIntentStateArchivist",
1301
+ () => initStakeIntentStateArchivist(initParams)
1302
+ ),
1303
+ startupSpanAsync7(
1304
+ "ChainService",
1305
+ () => initChainService({
1306
+ ...initParams,
1307
+ account,
1308
+ name: "ChainService"
1309
+ })
1310
+ ),
1311
+ startupSpanAsync7(
1312
+ "BalanceSummaryMap",
1313
+ () => initBalanceSummaryMap(initParams)
1314
+ )
1349
1315
  ]);
1350
1316
  const chainId = chainService.chainId;
1351
1317
  const chainContractViewer = chainService;
@@ -1357,7 +1323,12 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1357
1323
  chainArchivist,
1358
1324
  chainSubmissionsArchivistWrite
1359
1325
  }));
1360
- const [pendingTransactionsService, rewardService, chainIterator, balanceService] = await Promise.all([
1326
+ const [
1327
+ pendingTransactionsService,
1328
+ rewardService,
1329
+ chainIterator,
1330
+ balanceService
1331
+ ] = await Promise.all([
1361
1332
  startupSpanAsync7("PendingTransactions", () => initPendingTransactions({
1362
1333
  name: "PendingTransactionsService",
1363
1334
  chainArchivist,
@@ -1366,40 +1337,55 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1366
1337
  rejectedTransactionsArchivist,
1367
1338
  ...initParams
1368
1339
  })),
1369
- startupSpanAsync7("RewardService", () => initBlockRewardService({
1370
- name: "RewardService",
1371
- account,
1372
- chainService,
1373
- ...initParams
1374
- })),
1375
- startupSpanAsync7("ChainIterator", () => initChainIterator({
1376
- name: "ChainIterator",
1340
+ startupSpanAsync7(
1341
+ "RewardService",
1342
+ () => initBlockRewardService({
1343
+ name: "RewardService",
1344
+ account,
1345
+ chainService,
1346
+ ...initParams
1347
+ })
1348
+ ),
1349
+ startupSpanAsync7(
1350
+ "ChainIterator",
1351
+ () => initChainIterator({
1352
+ name: "ChainIterator",
1353
+ chainArchivist,
1354
+ head,
1355
+ ...initParams
1356
+ })
1357
+ ),
1358
+ startupSpanAsync7(
1359
+ "BalanceService",
1360
+ () => initBalanceService({
1361
+ name: "BalanceService",
1362
+ chainArchivist,
1363
+ summaryRepository: balanceSummaryRepositoryFromMap(balanceSummaryMap),
1364
+ ...initParams
1365
+ })
1366
+ )
1367
+ ]);
1368
+ const stakeIntentService = await startupSpanAsync7(
1369
+ "StakeIntentService",
1370
+ () => initStakeIntentService({
1371
+ name: "StakeIntentService",
1377
1372
  chainArchivist,
1378
- head,
1373
+ chainIterator,
1374
+ chainStakeViewer,
1375
+ stakeIntentStateArchivist,
1379
1376
  ...initParams
1380
- })),
1381
- startupSpanAsync7("BalanceService", () => initBalanceService({
1382
- name: "BalanceService",
1383
- chainArchivist,
1384
- summaryRepository: balanceSummaryRepositoryFromMap(balanceSummaryMap),
1377
+ })
1378
+ );
1379
+ const electionService = await startupSpanAsync7(
1380
+ "ElectionService",
1381
+ () => initElectionService({
1382
+ name: "ElectionService",
1383
+ chainIterator,
1384
+ chainStakeViewer,
1385
+ stakeIntentService,
1385
1386
  ...initParams
1386
- }))
1387
- ]);
1388
- const stakeIntentService = await startupSpanAsync7("StakeIntentService", () => initStakeIntentService({
1389
- name: "StakeIntentService",
1390
- chainArchivist,
1391
- chainIterator,
1392
- chainStakeViewer,
1393
- stakeIntentStateArchivist,
1394
- ...initParams
1395
- }));
1396
- const electionService = await startupSpanAsync7("ElectionService", () => initElectionService({
1397
- name: "ElectionService",
1398
- chainIterator,
1399
- chainStakeViewer,
1400
- stakeIntentService,
1401
- ...initParams
1402
- }));
1387
+ })
1388
+ );
1403
1389
  const validatorParams = {
1404
1390
  name: "Validator",
1405
1391
  account,
@@ -1442,13 +1428,10 @@ var initServices = /* @__PURE__ */ __name(async (context) => {
1442
1428
  stakeIntentService
1443
1429
  };
1444
1430
  logger?.log("All services created. Starting...");
1445
- const startableServices = [
1446
- balanceSummaryMap,
1447
- ...Object.values(result)
1448
- ].filter(isStartable);
1431
+ const startableServices = [balanceSummaryMap, ...Object.values(result)].filter(isStartable);
1449
1432
  await Promise.all(startableServices.map((service) => service.start()));
1450
1433
  return result;
1451
- }, "initServices");
1434
+ };
1452
1435
 
1453
1436
  // src/runCLI.ts
1454
1437
  import { deepMerge } from "@xylabs/object";
@@ -1463,31 +1446,27 @@ import { getServer } from "@xyo-network/chain-api";
1463
1446
  function runApi(context) {
1464
1447
  void getServer(context);
1465
1448
  }
1466
- __name(runApi, "runApi");
1467
1449
 
1468
1450
  // src/commands/producer/runProducer.ts
1469
- var runProducer = /* @__PURE__ */ __name(async (context) => {
1470
- const { config: config3, logger, orchestrator } = context;
1451
+ var runProducer = async (context) => {
1452
+ const {
1453
+ config: config3,
1454
+ logger,
1455
+ orchestrator
1456
+ } = context;
1471
1457
  logger?.log("Services: Initializing...");
1472
1458
  const services = await initServices(context);
1473
1459
  logger?.log("Services: Initialized");
1474
- const params = {
1475
- ...services,
1476
- config: config3
1477
- };
1460
+ const params = { ...services, config: config3 };
1478
1461
  const chainHeadUpdate = await ChainHeadUpdateActor.create(params);
1479
1462
  const balances = await BalanceActor.create(params);
1480
1463
  const producer = await ProducerActor.create(params);
1481
- const actors = [
1482
- chainHeadUpdate,
1483
- balances,
1484
- producer
1485
- ];
1464
+ const actors = [chainHeadUpdate, balances, producer];
1486
1465
  for (const actor of actors) {
1487
1466
  await orchestrator.registerActor(actor);
1488
1467
  }
1489
1468
  await orchestrator.start();
1490
- }, "runProducer");
1469
+ };
1491
1470
 
1492
1471
  // src/images.ts
1493
1472
  var XL1LogoColorizedAscii = `\x1B[38;2;128;128;128m\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\xA0\x1B[0m\x1B[38;2;118;111;144m_\x1B[0m
@@ -1511,9 +1490,13 @@ var XL1LogoColorizedAscii = `\x1B[38;2;128;128;128m\xA0\xA0\xA0\xA0\xA0\xA0\xA0\
1511
1490
 
1512
1491
  // src/initLogger.ts
1513
1492
  import { Base as Base2 } from "@xylabs/base";
1514
- import { ConsoleLogger, LogLevel, SilentLogger } from "@xylabs/logger";
1493
+ import {
1494
+ ConsoleLogger,
1495
+ LogLevel,
1496
+ SilentLogger
1497
+ } from "@xylabs/logger";
1515
1498
  import { isDefined as isDefined11 } from "@xylabs/typeof";
1516
- var initLogger = /* @__PURE__ */ __name((config3) => {
1499
+ var initLogger = (config3) => {
1517
1500
  let logger;
1518
1501
  if (config3.silent) {
1519
1502
  logger = new SilentLogger();
@@ -1527,18 +1510,22 @@ var initLogger = /* @__PURE__ */ __name((config3) => {
1527
1510
  }
1528
1511
  Base2.defaultLogger = logger;
1529
1512
  return logger;
1530
- }, "initLogger");
1513
+ };
1531
1514
 
1532
1515
  // src/optionsFromZodSchema.ts
1533
- import { ZodBoolean, ZodDefault, ZodEnum, ZodNumber, ZodObject, ZodOptional } from "zod";
1534
- var collectOptions = /* @__PURE__ */ __name((zodType, path = [], out = {}) => {
1516
+ import {
1517
+ ZodBoolean,
1518
+ ZodDefault,
1519
+ ZodEnum,
1520
+ ZodNumber,
1521
+ ZodObject,
1522
+ ZodOptional
1523
+ } from "zod";
1524
+ var collectOptions = (zodType, path = [], out = {}) => {
1535
1525
  if (zodType instanceof ZodObject) {
1536
1526
  const shape = zodType.shape;
1537
1527
  for (const [k, v] of Object.entries(shape)) {
1538
- collectOptions(v, [
1539
- ...path,
1540
- k
1541
- ], out);
1528
+ collectOptions(v, [...path, k], out);
1542
1529
  }
1543
1530
  return out;
1544
1531
  }
@@ -1546,10 +1533,7 @@ var collectOptions = /* @__PURE__ */ __name((zodType, path = [], out = {}) => {
1546
1533
  if (def?.innerType instanceof ZodObject) {
1547
1534
  const shape = def.innerType.shape;
1548
1535
  for (const [k, v] of Object.entries(shape)) {
1549
- collectOptions(v, [
1550
- ...path,
1551
- k
1552
- ], out);
1536
+ collectOptions(v, [...path, k], out);
1553
1537
  }
1554
1538
  return out;
1555
1539
  }
@@ -1567,24 +1551,35 @@ var collectOptions = /* @__PURE__ */ __name((zodType, path = [], out = {}) => {
1567
1551
  const key = path.join(".");
1568
1552
  out[key] = options;
1569
1553
  return out;
1570
- }, "collectOptions");
1571
- var optionsFromZodSchema = /* @__PURE__ */ __name((schema) => {
1554
+ };
1555
+ var optionsFromZodSchema = (schema) => {
1572
1556
  const opts = {};
1573
1557
  for (const [rootKey, zodType] of Object.entries(schema)) {
1574
- collectOptions(zodType, [
1575
- rootKey
1576
- ], opts);
1558
+ collectOptions(zodType, [rootKey], opts);
1577
1559
  }
1578
1560
  return opts;
1579
- }, "optionsFromZodSchema");
1561
+ };
1580
1562
 
1581
1563
  // src/tryParseConfig.ts
1582
1564
  import { isDefined as isDefined12, isNull } from "@xylabs/typeof";
1583
1565
  import { cosmiconfigSync } from "cosmiconfig";
1584
1566
  var configName = "xyo";
1585
1567
  var configSection = "xl1";
1586
- var tryParseConfig = /* @__PURE__ */ __name(() => {
1587
- const explorer = cosmiconfigSync(configName);
1568
+ var tryParseConfig = () => {
1569
+ const explorer = cosmiconfigSync(
1570
+ configName
1571
+ /* {
1572
+ searchPlaces: [
1573
+ 'package.json', // Looks under `xyo` key in package.json
1574
+ '.xyorc.json', // Supports common dotfile format
1575
+ 'xyo.config.json', // Supports custom-named config file
1576
+ ],
1577
+ loaders: {
1578
+ '.json': defaultLoaders['.json'],
1579
+ 'noExt': defaultLoaders['.json'],
1580
+ },
1581
+ }, */
1582
+ );
1588
1583
  const result = explorer.search();
1589
1584
  if (!isNull(result)) {
1590
1585
  const section = result?.config?.[configSection];
@@ -1593,13 +1588,13 @@ var tryParseConfig = /* @__PURE__ */ __name(() => {
1593
1588
  }
1594
1589
  }
1595
1590
  return {};
1596
- }, "tryParseConfig");
1591
+ };
1597
1592
 
1598
1593
  // src/waitForHostPort.ts
1599
1594
  import net from "net";
1600
- var waitForHostPort = /* @__PURE__ */ __name((host, port) => {
1595
+ var waitForHostPort = (host, port) => {
1601
1596
  return new Promise((resolve) => {
1602
- const tryConnect = /* @__PURE__ */ __name(() => {
1597
+ const tryConnect = () => {
1603
1598
  const socket = new net.Socket();
1604
1599
  socket.setTimeout(1e3).once("error", () => {
1605
1600
  socket.destroy();
@@ -1611,15 +1606,15 @@ var waitForHostPort = /* @__PURE__ */ __name((host, port) => {
1611
1606
  socket.end();
1612
1607
  resolve();
1613
1608
  });
1614
- }, "tryConnect");
1609
+ };
1615
1610
  tryConnect();
1616
1611
  });
1617
- }, "waitForHostPort");
1612
+ };
1618
1613
 
1619
1614
  // src/runCLI.ts
1620
1615
  var config;
1621
- var version = isDefined13("1.8.3") ? "1.8.3" : "unknown";
1622
- var getContextFromConfig = /* @__PURE__ */ __name((config3) => {
1616
+ var version = isDefined13("1.9.0") ? "1.9.0" : "unknown";
1617
+ var getContextFromConfig = (config3) => {
1623
1618
  const logger = initLogger(config3);
1624
1619
  const orchestrator = new Orchestrator(logger);
1625
1620
  process.on("SIGINT", () => {
@@ -1635,11 +1630,8 @@ var getContextFromConfig = /* @__PURE__ */ __name((config3) => {
1635
1630
  }
1636
1631
  })();
1637
1632
  });
1638
- return {
1639
- logger,
1640
- orchestrator
1641
- };
1642
- }, "getContextFromConfig");
1633
+ return { logger, orchestrator };
1634
+ };
1643
1635
  async function runCLI() {
1644
1636
  const y = yargs(hideBin(process.argv));
1645
1637
  const argv = y.usage(`
@@ -1650,7 +1642,9 @@ Run various components of the XL1 ecosystem.
1650
1642
  Usage:
1651
1643
  $0 <command> [options]`).parserConfiguration({
1652
1644
  "dot-notation": true,
1645
+ // foo.bar → { foo: { bar } }
1653
1646
  "populate--": true
1647
+ // Populate -- with all options so we can detected user-supplied vs defaults
1654
1648
  }).env("XL1").scriptName("xl1").version(version).middleware((argv2) => {
1655
1649
  try {
1656
1650
  const parsedConfigFile = tryParseConfig();
@@ -1669,45 +1663,30 @@ $0 <command> [options]`).parserConfiguration({
1669
1663
  return yargs2.command("$0", "Run a XL1 API Node", () => {
1670
1664
  }, () => {
1671
1665
  const context = getContextFromConfig(config);
1672
- runApi({
1673
- ...context,
1674
- config
1675
- });
1666
+ runApi({ ...context, config });
1676
1667
  });
1677
1668
  }).command("producer", "Run a XL1 Producer Node", (yargs2) => {
1678
1669
  return yargs2.command("$0", "Run a XL1 Producer Node", () => {
1679
1670
  }, async () => {
1680
1671
  const context = getContextFromConfig(config);
1681
- await runProducer({
1682
- ...context,
1683
- config
1684
- });
1672
+ await runProducer({ ...context, config });
1685
1673
  });
1686
1674
  }).command("$0", "Run a full XL1 Node", () => {
1687
1675
  }, async () => {
1688
1676
  const context = getContextFromConfig(config);
1689
- runApi({
1690
- ...context,
1691
- config
1692
- });
1677
+ runApi({ ...context, config });
1693
1678
  await waitForHostPort("localhost", config.api.port);
1694
- await runProducer({
1695
- ...context,
1696
- config
1697
- });
1679
+ await runProducer({ ...context, config });
1698
1680
  }).help().alias("help", "h").argv;
1699
1681
  await argv;
1700
1682
  }
1701
- __name(runCLI, "runCLI");
1702
1683
 
1703
1684
  // src/start.ts
1704
1685
  import { config as config2 } from "dotenv";
1705
- var start = /* @__PURE__ */ __name(async () => {
1706
- config2({
1707
- quiet: true
1708
- });
1686
+ var start = async () => {
1687
+ config2({ quiet: true });
1709
1688
  await runCLI();
1710
- }, "start");
1689
+ };
1711
1690
  export {
1712
1691
  Actor,
1713
1692
  BalanceActor,