@xyo-network/xl1-cli 1.6.4 → 1.6.6
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/build/commands/api/runApi.d.ts +6 -1
- package/build/commands/api/runApi.d.ts.map +1 -1
- package/build/commands/producer/runProducer.d.ts +7 -1
- package/build/commands/producer/runProducer.d.ts.map +1 -1
- package/build/commands/validator/runValidator.d.ts +7 -1
- package/build/commands/validator/runValidator.d.ts.map +1 -1
- package/build/initLogger.d.ts +3 -0
- package/build/initLogger.d.ts.map +1 -0
- package/build/node/index.mjs +70 -54
- package/build/node/index.mjs.map +1 -1
- package/build/node/xl1.mjs +82 -66
- package/build/node/xl1.mjs.map +1 -1
- package/build/orchestration/actor/implementation/ChainHeadUpdateActor.d.ts +2 -1
- package/build/orchestration/actor/implementation/ChainHeadUpdateActor.d.ts.map +1 -1
- package/build/orchestration/actor/implementation/ProducerActor.d.ts +2 -1
- package/build/orchestration/actor/implementation/ProducerActor.d.ts.map +1 -1
- package/build/orchestration/actor/model/Actor.d.ts +2 -3
- package/build/orchestration/actor/model/Actor.d.ts.map +1 -1
- package/build/orchestration/actor/model/Orchestrator.d.ts +7 -4
- package/build/orchestration/actor/model/Orchestrator.d.ts.map +1 -1
- package/build/orchestration/archivists/StakeIntentState/local.d.ts.map +1 -1
- package/build/orchestration/initServices.d.ts +1 -1
- package/build/orchestration/initServices.d.ts.map +1 -1
- package/build/runCLI.d.ts +7 -1
- package/build/runCLI.d.ts.map +1 -1
- package/build/start.d.ts.map +1 -1
- package/dist/cli-min.mjs +9 -9
- package/package.json +32 -32
- package/src/commands/api/runApi.ts +8 -4
- package/src/commands/producer/runProducer.ts +13 -5
- package/src/commands/validator/runValidator.ts +10 -1
- package/src/initEnv.ts +1 -1
- package/src/initLogger.ts +15 -0
- package/src/orchestration/actor/implementation/ChainHeadUpdateActor.ts +2 -2
- package/src/orchestration/actor/implementation/ProducerActor.ts +3 -3
- package/src/orchestration/actor/model/Actor.ts +3 -4
- package/src/orchestration/actor/model/Orchestrator.ts +17 -11
- package/src/orchestration/archivists/StakeIntentState/local.ts +0 -2
- package/src/orchestration/initServices.ts +6 -12
- package/src/runCLI.ts +16 -13
- package/src/start.ts +7 -5
package/build/node/xl1.mjs
CHANGED
|
@@ -4,7 +4,9 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
4
4
|
// src/initEnv.ts
|
|
5
5
|
import dotenv from "dotenv";
|
|
6
6
|
var initEnv = /* @__PURE__ */ __name(() => {
|
|
7
|
-
dotenv.config(
|
|
7
|
+
dotenv.config({
|
|
8
|
+
quiet: true
|
|
9
|
+
});
|
|
8
10
|
if (process.env.ENV_FILE !== void 0) {
|
|
9
11
|
dotenv.config({
|
|
10
12
|
path: process.env.ENV_FILE,
|
|
@@ -13,17 +15,32 @@ var initEnv = /* @__PURE__ */ __name(() => {
|
|
|
13
15
|
}
|
|
14
16
|
}, "initEnv");
|
|
15
17
|
|
|
18
|
+
// src/initLogger.ts
|
|
19
|
+
import { Base } from "@xylabs/base";
|
|
20
|
+
import { ConsoleLogger, LogLevel } from "@xylabs/logger";
|
|
21
|
+
import { isDefined } from "@xylabs/typeof";
|
|
22
|
+
var initLogger = /* @__PURE__ */ __name(() => {
|
|
23
|
+
let level = LogLevel.info;
|
|
24
|
+
if (isDefined(process.env.LOG_LEVEL)) {
|
|
25
|
+
const parsed = LogLevel[process.env.LOG_LEVEL.toLowerCase()];
|
|
26
|
+
if (isDefined(parsed)) level = parsed;
|
|
27
|
+
}
|
|
28
|
+
const logger = new ConsoleLogger(level);
|
|
29
|
+
Base.defaultLogger = logger;
|
|
30
|
+
return logger;
|
|
31
|
+
}, "initLogger");
|
|
32
|
+
|
|
16
33
|
// src/orchestration/actor/implementation/BalanceActor.ts
|
|
17
34
|
import { assertEx } from "@xylabs/assert";
|
|
18
35
|
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
19
36
|
import { Mutex } from "async-mutex";
|
|
20
37
|
|
|
21
38
|
// src/orchestration/actor/model/Actor.ts
|
|
22
|
-
import {
|
|
39
|
+
import { Base as Base2 } from "@xylabs/base";
|
|
23
40
|
import { forget } from "@xylabs/forget";
|
|
24
41
|
import { IdLogger } from "@xylabs/logger";
|
|
25
42
|
import { span, spanAsync } from "@xylabs/telemetry";
|
|
26
|
-
var Actor = class extends
|
|
43
|
+
var Actor = class extends Base2 {
|
|
27
44
|
static {
|
|
28
45
|
__name(this, "Actor");
|
|
29
46
|
}
|
|
@@ -32,7 +49,7 @@ var Actor = class extends BaseEmitter {
|
|
|
32
49
|
_displayName;
|
|
33
50
|
_id;
|
|
34
51
|
constructor(id, displayName = "Actor", params) {
|
|
35
|
-
const logger = params.logger ?? new IdLogger(console, () => `[${displayName} (${id})] `);
|
|
52
|
+
const logger = params.logger ?? new IdLogger(Base2.defaultLogger ?? console, () => `[${displayName} (${id})] `);
|
|
36
53
|
super({
|
|
37
54
|
...params,
|
|
38
55
|
logger
|
|
@@ -114,7 +131,11 @@ var Orchestrator = class {
|
|
|
114
131
|
}
|
|
115
132
|
actors = [];
|
|
116
133
|
keepAliveHandle = null;
|
|
134
|
+
logger;
|
|
117
135
|
running = false;
|
|
136
|
+
constructor(logger) {
|
|
137
|
+
this.logger = logger;
|
|
138
|
+
}
|
|
118
139
|
/**
|
|
119
140
|
* Registers an actor.
|
|
120
141
|
* (We won't activate the actor until `start()` is called.)
|
|
@@ -131,10 +152,10 @@ var Orchestrator = class {
|
|
|
131
152
|
async start() {
|
|
132
153
|
await Promise.resolve();
|
|
133
154
|
if (this.running) {
|
|
134
|
-
|
|
155
|
+
this.logger?.warn("[Orchestrator] Already started.");
|
|
135
156
|
return;
|
|
136
157
|
}
|
|
137
|
-
|
|
158
|
+
this.logger?.log("[Orchestrator] Starting...");
|
|
138
159
|
this.running = true;
|
|
139
160
|
for (const actor of this.actors) {
|
|
140
161
|
await actor.start();
|
|
@@ -148,16 +169,16 @@ var Orchestrator = class {
|
|
|
148
169
|
async stop() {
|
|
149
170
|
await Promise.resolve();
|
|
150
171
|
if (!this.running) {
|
|
151
|
-
|
|
172
|
+
this.logger?.log("[Orchestrator] Already stopped.");
|
|
152
173
|
return;
|
|
153
174
|
}
|
|
154
|
-
|
|
175
|
+
this.logger?.log("[Orchestrator] Stopping...");
|
|
155
176
|
for (const actor of this.actors) {
|
|
156
177
|
await actor.stop();
|
|
157
178
|
}
|
|
158
179
|
this.running = false;
|
|
159
180
|
if (this.keepAliveHandle) clearInterval(this.keepAliveHandle);
|
|
160
|
-
|
|
181
|
+
this.logger?.log("[Orchestrator] Stopped...");
|
|
161
182
|
}
|
|
162
183
|
};
|
|
163
184
|
|
|
@@ -216,8 +237,7 @@ var ChainHeadUpdateActor = class _ChainHeadUpdateActor extends Actor {
|
|
|
216
237
|
get chainIterator() {
|
|
217
238
|
return assertEx2(this.params.chainIterator, () => "chainIterator not set");
|
|
218
239
|
}
|
|
219
|
-
static
|
|
220
|
-
await Promise.resolve();
|
|
240
|
+
static create(params) {
|
|
221
241
|
return new _ChainHeadUpdateActor(params);
|
|
222
242
|
}
|
|
223
243
|
async start() {
|
|
@@ -252,7 +272,7 @@ var ChainHeadUpdateActor = class _ChainHeadUpdateActor extends Actor {
|
|
|
252
272
|
// src/orchestration/actor/implementation/ProducerActor.ts
|
|
253
273
|
import { assertEx as assertEx3 } from "@xylabs/assert";
|
|
254
274
|
import { toHex as toHex2 } from "@xylabs/hex";
|
|
255
|
-
import { isDefined, isUndefined } from "@xylabs/typeof";
|
|
275
|
+
import { isDefined as isDefined2, isUndefined } from "@xylabs/typeof";
|
|
256
276
|
import { createDeclarationIntent } from "@xyo-network/chain-protocol";
|
|
257
277
|
import { BaseBlockProducerService } from "@xyo-network/chain-services";
|
|
258
278
|
import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
|
|
@@ -267,7 +287,7 @@ var ProducerActor = class _ProducerActor extends Actor {
|
|
|
267
287
|
_lastProducedBlock;
|
|
268
288
|
_lastRedeclarationIntent;
|
|
269
289
|
constructor(params) {
|
|
270
|
-
super(
|
|
290
|
+
super(params.producer.address, "Producer", params);
|
|
271
291
|
}
|
|
272
292
|
get account() {
|
|
273
293
|
return assertEx3(this.params.account, () => "account not set");
|
|
@@ -293,8 +313,7 @@ var ProducerActor = class _ProducerActor extends Actor {
|
|
|
293
313
|
get stakeIntentService() {
|
|
294
314
|
return assertEx3(this.params.stakeIntentService, () => "stakeIntentService not set");
|
|
295
315
|
}
|
|
296
|
-
static
|
|
297
|
-
await Promise.resolve();
|
|
316
|
+
static create(params) {
|
|
298
317
|
return new _ProducerActor(params);
|
|
299
318
|
}
|
|
300
319
|
async start() {
|
|
@@ -379,7 +398,7 @@ var ProducerActor = class _ProducerActor extends Actor {
|
|
|
379
398
|
}
|
|
380
399
|
async validateCurrentBalance() {
|
|
381
400
|
const head = this._lastProducedBlock?.[0]._hash;
|
|
382
|
-
if (
|
|
401
|
+
if (isDefined2(head)) {
|
|
383
402
|
const balances = await this.balanceService.balances(head, [
|
|
384
403
|
this.account.address
|
|
385
404
|
]);
|
|
@@ -393,7 +412,7 @@ var ProducerActor = class _ProducerActor extends Actor {
|
|
|
393
412
|
return true;
|
|
394
413
|
}
|
|
395
414
|
async validateCurrentStake() {
|
|
396
|
-
const requiredMinimumStake =
|
|
415
|
+
const requiredMinimumStake = isDefined2(process.env.XYO_PRODUCER_MIN_STAKE) ? BigInt(process.env.XYO_PRODUCER_MIN_STAKE) : 1n;
|
|
397
416
|
const currentStake = await this.chainStakeViewer.activeByAddressStaked(this.account.address);
|
|
398
417
|
if (currentStake < requiredMinimumStake) {
|
|
399
418
|
this.logger?.error(`Producer ${this.account.address} has insufficient stake.`);
|
|
@@ -405,7 +424,7 @@ var ProducerActor = class _ProducerActor extends Actor {
|
|
|
405
424
|
|
|
406
425
|
// src/orchestration/health/initHealthEndpoints.ts
|
|
407
426
|
import http from "http";
|
|
408
|
-
import { isDefined as
|
|
427
|
+
import { isDefined as isDefined3, isEmptyString } from "@xylabs/typeof";
|
|
409
428
|
var sendStatus = /* @__PURE__ */ __name((res, status, errorCode) => {
|
|
410
429
|
const statusCode = status === "started" ? 200 : errorCode;
|
|
411
430
|
res.writeHead(statusCode, {
|
|
@@ -455,7 +474,7 @@ var createHealthServer = /* @__PURE__ */ __name((port = 8080, statusMonitor) =>
|
|
|
455
474
|
}, "createHealthServer");
|
|
456
475
|
var initHealthEndpoints = /* @__PURE__ */ __name((params) => {
|
|
457
476
|
const healthCheckEnvVarPort = process.env.XYO_PRODUCER_HEALTH_CHECK_PORT;
|
|
458
|
-
if (
|
|
477
|
+
if (isDefined3(healthCheckEnvVarPort) && !isEmptyString(healthCheckEnvVarPort)) {
|
|
459
478
|
const healthCheckPort = Number.parseInt(healthCheckEnvVarPort, 10);
|
|
460
479
|
return createHealthServer(healthCheckPort, params.statusReporter);
|
|
461
480
|
}
|
|
@@ -463,9 +482,8 @@ var initHealthEndpoints = /* @__PURE__ */ __name((params) => {
|
|
|
463
482
|
|
|
464
483
|
// src/orchestration/initServices.ts
|
|
465
484
|
import { assertEx as assertEx16 } from "@xylabs/assert";
|
|
466
|
-
import { Base } from "@xylabs/base";
|
|
467
485
|
import { asAddress as asAddress2 } from "@xylabs/hex";
|
|
468
|
-
import { isDefined as
|
|
486
|
+
import { isDefined as isDefined6 } from "@xylabs/typeof";
|
|
469
487
|
import { balanceSummaryRepositoryFromMap } from "@xyo-network/chain-modules";
|
|
470
488
|
import { initTelemetry } from "@xyo-network/chain-telemetry";
|
|
471
489
|
import { startupSpanAsync as startupSpanAsync7 } from "@xyo-network/chain-utils";
|
|
@@ -708,9 +726,7 @@ var singleton11;
|
|
|
708
726
|
var initLocalStakeIntentStateArchivist = /* @__PURE__ */ __name(async () => {
|
|
709
727
|
return await mutex11.runExclusive(async () => {
|
|
710
728
|
if (singleton11) return singleton11;
|
|
711
|
-
console.log("[InitServices:LocalStakeIntentStateArchivist:Initializing]");
|
|
712
729
|
singleton11 = await getLocalPersistentArchivist("stakeIntent", "state");
|
|
713
|
-
console.log("[InitServices:LocalStakeIntentStateArchivist:Initialized]");
|
|
714
730
|
return assertEx8(singleton11, () => new Error("Failed to initialize stake intent state archivist"));
|
|
715
731
|
});
|
|
716
732
|
}, "initLocalStakeIntentStateArchivist");
|
|
@@ -728,12 +744,12 @@ var initStakeIntentStateArchivist = /* @__PURE__ */ __name(async () => {
|
|
|
728
744
|
}, "initStakeIntentStateArchivist");
|
|
729
745
|
|
|
730
746
|
// src/orchestration/map/BalanceSummary/initBalanceSummaryMap.ts
|
|
731
|
-
import { isDefined as
|
|
747
|
+
import { isDefined as isDefined5 } from "@xylabs/typeof";
|
|
732
748
|
import { startupSpanAsync as startupSpanAsync6 } from "@xyo-network/chain-utils";
|
|
733
749
|
import { Mutex as Mutex15 } from "async-mutex";
|
|
734
750
|
|
|
735
751
|
// src/orchestration/map/BalanceSummary/local.ts
|
|
736
|
-
import { isDefined as
|
|
752
|
+
import { isDefined as isDefined4 } from "@xylabs/typeof";
|
|
737
753
|
import { Mutex as Mutex14 } from "async-mutex";
|
|
738
754
|
|
|
739
755
|
// src/orchestration/map/localPersistentMap.ts
|
|
@@ -821,7 +837,7 @@ var mutex13 = new Mutex14();
|
|
|
821
837
|
var singleton13;
|
|
822
838
|
var initLocalBalanceSummaryMap = /* @__PURE__ */ __name(async () => {
|
|
823
839
|
return await mutex13.runExclusive(async () => {
|
|
824
|
-
if (
|
|
840
|
+
if (isDefined4(singleton13)) return singleton13;
|
|
825
841
|
singleton13 = await getLocalPersistentMap("balance", "summary");
|
|
826
842
|
return singleton13;
|
|
827
843
|
});
|
|
@@ -832,7 +848,7 @@ var mutex14 = new Mutex15();
|
|
|
832
848
|
var singleton14;
|
|
833
849
|
async function initBalanceSummaryMap(_traceProvider) {
|
|
834
850
|
return await mutex14.runExclusive(async () => {
|
|
835
|
-
if (
|
|
851
|
+
if (isDefined5(singleton14)) return singleton14;
|
|
836
852
|
const local = await startupSpanAsync6("BalanceSummaryMap:initLocal", () => initLocalBalanceSummaryMap());
|
|
837
853
|
singleton14 = local;
|
|
838
854
|
return singleton14;
|
|
@@ -907,8 +923,8 @@ var getChainId = /* @__PURE__ */ __name(() => {
|
|
|
907
923
|
|
|
908
924
|
// src/orchestration/services/implementation/evm/initGanacheProvider.ts
|
|
909
925
|
var initJsonRpcProvider = /* @__PURE__ */ __name(() => {
|
|
910
|
-
const
|
|
911
|
-
return Promise.resolve(new JsonRpcProvider(...
|
|
926
|
+
const config = getJsonRpcProviderConfig();
|
|
927
|
+
return Promise.resolve(new JsonRpcProvider(...config));
|
|
912
928
|
}, "initJsonRpcProvider");
|
|
913
929
|
var canUseJsonRpcProvider = /* @__PURE__ */ __name(() => {
|
|
914
930
|
return canUseChainId() && process.env.XYO_JSON_RPC_URL !== void 0;
|
|
@@ -927,8 +943,8 @@ import { InfuraProvider } from "ethers/providers";
|
|
|
927
943
|
var instance;
|
|
928
944
|
var initInfuraProvider = /* @__PURE__ */ __name(() => {
|
|
929
945
|
if (instance) return instance;
|
|
930
|
-
const
|
|
931
|
-
instance = Promise.resolve(new InfuraProvider(...
|
|
946
|
+
const config = getInfuraProviderConfig();
|
|
947
|
+
instance = Promise.resolve(new InfuraProvider(...config));
|
|
932
948
|
return instance;
|
|
933
949
|
}, "initInfuraProvider");
|
|
934
950
|
var canUseInfuraProvider = /* @__PURE__ */ __name(() => {
|
|
@@ -1197,20 +1213,19 @@ var telemetryConfig = {
|
|
|
1197
1213
|
}
|
|
1198
1214
|
};
|
|
1199
1215
|
var isStartable = /* @__PURE__ */ __name((value) => {
|
|
1200
|
-
return
|
|
1216
|
+
return isDefined6(value.start) && typeof value.start === "function";
|
|
1201
1217
|
}, "isStartable");
|
|
1202
1218
|
var initServices = /* @__PURE__ */ __name(async (logger) => {
|
|
1203
|
-
|
|
1204
|
-
const statusReporter = new RuntimeStatusMonitor(logger ?? console);
|
|
1219
|
+
const statusReporter = new RuntimeStatusMonitor(logger);
|
|
1205
1220
|
statusReporter.onGlobalTransition({
|
|
1206
1221
|
to: "started"
|
|
1207
1222
|
}, () => {
|
|
1208
|
-
|
|
1223
|
+
logger.log("All services started.");
|
|
1209
1224
|
});
|
|
1210
1225
|
statusReporter.onGlobalTransition({
|
|
1211
1226
|
to: "error"
|
|
1212
1227
|
}, () => {
|
|
1213
|
-
|
|
1228
|
+
logger.error("Producer encountered an unhandled error!");
|
|
1214
1229
|
process.exit(1);
|
|
1215
1230
|
});
|
|
1216
1231
|
await startupSpanAsync7("initHealthEndpoints", () => initHealthEndpoints({
|
|
@@ -1277,7 +1292,6 @@ var initServices = /* @__PURE__ */ __name(async (logger) => {
|
|
|
1277
1292
|
chainArchivist,
|
|
1278
1293
|
chainIterator,
|
|
1279
1294
|
chainStakeViewer,
|
|
1280
|
-
logger: console,
|
|
1281
1295
|
stakeIntentStateArchivist,
|
|
1282
1296
|
traceProvider,
|
|
1283
1297
|
statusReporter
|
|
@@ -1302,7 +1316,7 @@ var initServices = /* @__PURE__ */ __name(async (logger) => {
|
|
|
1302
1316
|
traceProvider,
|
|
1303
1317
|
validateHydratedBlockState
|
|
1304
1318
|
};
|
|
1305
|
-
const rewardAddress =
|
|
1319
|
+
const rewardAddress = isDefined6(process.env.XYO_BLOCK_REWARD_ADDRESS) ? assertEx16(asAddress2(process.env.XYO_BLOCK_REWARD_ADDRESS), () => "Invalid block reward address provided") : account.address;
|
|
1306
1320
|
const producerParams = {
|
|
1307
1321
|
...validatorParams,
|
|
1308
1322
|
name: "Producer",
|
|
@@ -1330,7 +1344,7 @@ var initServices = /* @__PURE__ */ __name(async (logger) => {
|
|
|
1330
1344
|
rewardService,
|
|
1331
1345
|
stakeIntentService
|
|
1332
1346
|
};
|
|
1333
|
-
|
|
1347
|
+
logger?.log("All services created. Starting...");
|
|
1334
1348
|
const startableServices = [
|
|
1335
1349
|
balanceSummaryMap,
|
|
1336
1350
|
...Object.values(result)
|
|
@@ -1346,18 +1360,18 @@ import { hideBin } from "yargs/helpers";
|
|
|
1346
1360
|
|
|
1347
1361
|
// src/commands/api/runApi.ts
|
|
1348
1362
|
import { getServer } from "@xyo-network/chain-api";
|
|
1349
|
-
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
void getServer();
|
|
1363
|
+
function runApi(context) {
|
|
1364
|
+
const { logger } = context;
|
|
1365
|
+
void getServer(void 0, void 0, logger);
|
|
1353
1366
|
}
|
|
1354
1367
|
__name(runApi, "runApi");
|
|
1355
1368
|
|
|
1356
1369
|
// src/commands/producer/runProducer.ts
|
|
1357
|
-
var runProducer = /* @__PURE__ */ __name(async (
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
|
|
1370
|
+
var runProducer = /* @__PURE__ */ __name(async (context) => {
|
|
1371
|
+
const { logger, orchestrator } = context;
|
|
1372
|
+
logger?.log("Services: Initializing...");
|
|
1373
|
+
const services = await initServices(logger);
|
|
1374
|
+
logger?.log("Services: Initialized");
|
|
1361
1375
|
const chainHeadUpdate = await ChainHeadUpdateActor.create(services);
|
|
1362
1376
|
const producer = await ProducerActor.create(services);
|
|
1363
1377
|
const balances = await BalanceActor.create(services);
|
|
@@ -1373,7 +1387,8 @@ var runProducer = /* @__PURE__ */ __name(async (orchestrator) => {
|
|
|
1373
1387
|
}, "runProducer");
|
|
1374
1388
|
|
|
1375
1389
|
// src/commands/validator/runValidator.ts
|
|
1376
|
-
var runValidator = /* @__PURE__ */ __name(async (
|
|
1390
|
+
var runValidator = /* @__PURE__ */ __name(async (context) => {
|
|
1391
|
+
const { orchestrator } = context;
|
|
1377
1392
|
const myActor = new Actor("Validator", "Validator", {});
|
|
1378
1393
|
await orchestrator.registerActor(myActor);
|
|
1379
1394
|
await orchestrator.start();
|
|
@@ -1399,28 +1414,25 @@ function waitForPort(host, port) {
|
|
|
1399
1414
|
});
|
|
1400
1415
|
}
|
|
1401
1416
|
__name(waitForPort, "waitForPort");
|
|
1402
|
-
async function runCLI(
|
|
1417
|
+
async function runCLI(context) {
|
|
1403
1418
|
async function validateTransaction() {
|
|
1404
|
-
|
|
1405
|
-
await Promise.resolve();
|
|
1419
|
+
await Promise.reject("Not implemented yet");
|
|
1406
1420
|
}
|
|
1407
1421
|
__name(validateTransaction, "validateTransaction");
|
|
1408
1422
|
async function submitTransaction() {
|
|
1409
|
-
|
|
1410
|
-
await Promise.resolve();
|
|
1423
|
+
await Promise.reject("Not implemented yet");
|
|
1411
1424
|
}
|
|
1412
1425
|
__name(submitTransaction, "submitTransaction");
|
|
1413
1426
|
async function checkBalance() {
|
|
1414
|
-
|
|
1415
|
-
await Promise.resolve();
|
|
1427
|
+
await Promise.reject("Not implemented yet");
|
|
1416
1428
|
}
|
|
1417
1429
|
__name(checkBalance, "checkBalance");
|
|
1418
1430
|
const argv = yargs(hideBin(process.argv)).command("validator", "Run the XL1 validator", (yargs2) => {
|
|
1419
1431
|
return yargs2.command("$0", "Run as a XL1 validator node", () => {
|
|
1420
|
-
}, () => runValidator(
|
|
1432
|
+
}, () => runValidator(context));
|
|
1421
1433
|
}).command("producer", "Run the XL1 producer", (yargs2) => {
|
|
1422
1434
|
return yargs2.command("$0", "Run as a XL1 producer node", () => {
|
|
1423
|
-
}, () => runProducer(
|
|
1435
|
+
}, () => runProducer(context));
|
|
1424
1436
|
}).command("client", "Client-related operations", (yargs2) => {
|
|
1425
1437
|
return yargs2.command("transaction", "Transaction-related operations", (yargs3) => {
|
|
1426
1438
|
return yargs3.command("validate", "Validate a transaction", () => {
|
|
@@ -1429,14 +1441,14 @@ async function runCLI(orchestrator) {
|
|
|
1429
1441
|
});
|
|
1430
1442
|
}).command("api", "Run as a api node", (yargs2) => {
|
|
1431
1443
|
return yargs2.command("$0", "Run as a api node", () => {
|
|
1432
|
-
}, () => runApi()).command("run", "Run as a api node", () => {
|
|
1433
|
-
}, () => runApi());
|
|
1444
|
+
}, () => runApi(context)).command("run", "Run as a api node", () => {
|
|
1445
|
+
}, () => runApi(context));
|
|
1434
1446
|
}).command("$0", "Run a full XL1 deployment", (yargs2) => {
|
|
1435
1447
|
return yargs2.command("$0", "Start the API and a producer", () => {
|
|
1436
1448
|
}, async () => {
|
|
1437
|
-
runApi();
|
|
1449
|
+
runApi(context);
|
|
1438
1450
|
await waitForPort("localhost", 8080);
|
|
1439
|
-
await runProducer(
|
|
1451
|
+
await runProducer(context);
|
|
1440
1452
|
});
|
|
1441
1453
|
}).command("account", "Account-related operations", (yargs2) => {
|
|
1442
1454
|
return yargs2.command("balance", "Check account balance", () => {
|
|
@@ -1449,21 +1461,25 @@ __name(runCLI, "runCLI");
|
|
|
1449
1461
|
// src/start.ts
|
|
1450
1462
|
var start = /* @__PURE__ */ __name(async () => {
|
|
1451
1463
|
initEnv();
|
|
1452
|
-
const
|
|
1464
|
+
const logger = initLogger();
|
|
1465
|
+
const orchestrator = new Orchestrator(logger);
|
|
1453
1466
|
process.on("SIGINT", () => {
|
|
1454
1467
|
void (async () => {
|
|
1455
1468
|
try {
|
|
1456
|
-
|
|
1469
|
+
logger.log("\nSIGINT received. Attempting graceful shutdown...");
|
|
1457
1470
|
await orchestrator?.stop();
|
|
1458
|
-
|
|
1471
|
+
logger.log("Orchestrator stopped, exiting now.");
|
|
1459
1472
|
process.exit(0);
|
|
1460
1473
|
} catch (err) {
|
|
1461
|
-
|
|
1474
|
+
logger.error("Error stopping orchestrator:", err);
|
|
1462
1475
|
process.exit(1);
|
|
1463
1476
|
}
|
|
1464
1477
|
})();
|
|
1465
1478
|
});
|
|
1466
|
-
await runCLI(
|
|
1479
|
+
await runCLI({
|
|
1480
|
+
logger,
|
|
1481
|
+
orchestrator
|
|
1482
|
+
});
|
|
1467
1483
|
}, "start");
|
|
1468
1484
|
|
|
1469
1485
|
// src/xl1.ts
|