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