@xyo-network/chain-api 1.19.6 → 1.19.7
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/ApiActor.d.ts +13 -5
- package/dist/node/ApiActor.d.ts.map +1 -1
- package/dist/node/ApiContext.d.ts +1 -4
- package/dist/node/ApiContext.d.ts.map +1 -1
- package/dist/node/helpers/index.d.ts +0 -1
- package/dist/node/helpers/index.d.ts.map +1 -1
- package/dist/node/index.mjs +55 -101
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/runApi.d.ts +2 -3
- package/dist/node/runApi.d.ts.map +1 -1
- package/dist/node/server/index.d.ts +1 -0
- package/dist/node/server/index.d.ts.map +1 -1
- package/dist/node/server/initApiParams.d.ts +12 -0
- package/dist/node/server/initApiParams.d.ts.map +1 -0
- package/dist/node/server/server.d.ts +2 -10
- package/dist/node/server/server.d.ts.map +1 -1
- package/package.json +11 -14
- package/src/ApiActor.ts +32 -10
- package/src/ApiContext.ts +1 -7
- package/src/helpers/index.ts +0 -1
- package/src/runApi.ts +8 -13
- package/src/server/index.ts +1 -0
- package/src/server/initApiParams.ts +194 -0
- package/src/server/server.ts +4 -258
- package/dist/node/helpers/initEvmProvider.d.ts +0 -11
- package/dist/node/helpers/initEvmProvider.d.ts.map +0 -1
- package/src/helpers/initEvmProvider.ts +0 -23
package/dist/node/ApiActor.d.ts
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { WithStorageMeta } from '@xyo-network/payload-model';
|
|
2
|
+
import { Actor, ActorParams, BalancesStepSummary, CreatableProviderFactory, MapType, TransfersStepSummary } from '@xyo-network/xl1-sdk';
|
|
3
|
+
import { ApiContext } from './ApiContext.ts';
|
|
4
|
+
export type ApiActorParams = ActorParams<{
|
|
5
|
+
balancesSummaryMap: MapType<string, WithStorageMeta<BalancesStepSummary>>;
|
|
6
|
+
context: ApiContext;
|
|
7
|
+
transfersSummaryMap: MapType<string, WithStorageMeta<TransfersStepSummary>>;
|
|
8
|
+
}>;
|
|
3
9
|
export declare class ApiActor extends Actor<ApiActorParams> {
|
|
4
10
|
private server?;
|
|
5
|
-
|
|
11
|
+
protected get context(): import("@xyo-network/xl1-sdk").ActorContext & ApiContext;
|
|
12
|
+
static defaultFactories(): CreatableProviderFactory[];
|
|
13
|
+
static paramsHandler<T extends ApiActor>(params: T['params']): Promise<{
|
|
14
|
+
context: import("@xyo-network/xl1-sdk").ActorContext & ApiContext;
|
|
15
|
+
account: import("@xyo-network/account-model").AccountInstance;
|
|
6
16
|
name?: import("@xylabs/sdk-js").CreatableName;
|
|
7
17
|
statusReporter?: import("@xylabs/sdk-js").CreatableStatusReporter<void> | undefined;
|
|
8
18
|
logger: import("@xylabs/sdk-js").Logger;
|
|
9
19
|
meterProvider?: import("@opentelemetry/api").MeterProvider;
|
|
10
20
|
traceProvider?: import("@opentelemetry/api").TracerProvider;
|
|
11
|
-
account: import("@xyo-network/account-model").AccountInstance;
|
|
12
|
-
context: import("@xyo-network/xl1-sdk").ActorContext;
|
|
13
21
|
displayName: string | (string & {
|
|
14
22
|
__baseClassName: true;
|
|
15
23
|
}) | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiActor.d.ts","sourceRoot":"","sources":["../../src/ApiActor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"ApiActor.d.ts","sourceRoot":"","sources":["../../src/ApiActor.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EACL,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,wBAAwB,EACjE,OAAO,EACP,oBAAoB,EACrB,MAAM,sBAAsB,CAAA;AAE7B,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAG5C,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC;IACvC,kBAAkB,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,mBAAmB,CAAC,CAAC,CAAA;IACzE,OAAO,EAAE,UAAU,CAAA;IACnB,mBAAmB,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,oBAAoB,CAAC,CAAC,CAAA;CAC5E,CAAC,CAAA;AAEF,qBACa,QAAS,SAAQ,KAAK,CAAC,cAAc,CAAC;IACjD,OAAO,CAAC,MAAM,CAAC,CAAQ;IAEvB,cAAuB,OAAO,6DAE7B;WAEe,gBAAgB,IAAI,wBAAwB,EAAE;WAMxC,aAAa,CAAC,CAAC,SAAS,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;IAkB5D,aAAa;IAIb,YAAY;IAMZ,WAAW;YAKZ,WAAW;IAIzB,OAAO,CAAC,UAAU;CAInB"}
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
import type { NodeInstance } from '@xyo-network/node-model';
|
|
2
|
-
import type {
|
|
3
|
-
import type { BalancesStepSummary, CreatableProviderContext, MapType, TransfersStepSummary } from '@xyo-network/xl1-sdk';
|
|
2
|
+
import type { CreatableProviderContext } from '@xyo-network/xl1-sdk';
|
|
4
3
|
export interface ApiContext extends CreatableProviderContext {
|
|
5
|
-
balancesSummaryMap: MapType<string, WithStorageMeta<BalancesStepSummary>>;
|
|
6
4
|
node: NodeInstance;
|
|
7
|
-
transfersSummaryMap: MapType<string, WithStorageMeta<TransfersStepSummary>>;
|
|
8
5
|
}
|
|
9
6
|
//# sourceMappingURL=ApiContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiContext.d.ts","sourceRoot":"","sources":["../../src/ApiContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"ApiContext.d.ts","sourceRoot":"","sources":["../../src/ApiContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAA;AAEpE,MAAM,WAAW,UAAW,SAAQ,wBAAwB;IAC1D,IAAI,EAAE,YAAY,CAAA;CACnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,0BAA0B,CAAA"}
|
package/dist/node/index.mjs
CHANGED
|
@@ -2,7 +2,7 @@ var __defProp = Object.defineProperty;
|
|
|
2
2
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
3
3
|
|
|
4
4
|
// src/ApiActor.ts
|
|
5
|
-
import { creatable } from "@xylabs/sdk-js";
|
|
5
|
+
import { assertEx as assertEx3, creatable } from "@xylabs/sdk-js";
|
|
6
6
|
import { Account as Account2 } from "@xyo-network/account";
|
|
7
7
|
import { Actor } from "@xyo-network/xl1-sdk";
|
|
8
8
|
|
|
@@ -304,22 +304,17 @@ var getApp = /* @__PURE__ */ __name(async (context) => {
|
|
|
304
304
|
return app;
|
|
305
305
|
}, "getApp");
|
|
306
306
|
|
|
307
|
-
// src/server/
|
|
308
|
-
import {
|
|
307
|
+
// src/server/initApiParams.ts
|
|
308
|
+
import { assertEx as assertEx2 } from "@xylabs/sdk-js";
|
|
309
309
|
import { Account } from "@xyo-network/account";
|
|
310
|
-
import {
|
|
311
|
-
import { buildTelemetryConfig, canUseEvmProvider, initApiWallet, initBalanceSummaryMap, initEvmProvider, initHealthEndpoints, initServerNode, initStatusReporter, initTransferSummaryMap, MempoolActor, ValidatorActor } from "@xyo-network/chain-orchestration";
|
|
310
|
+
import { buildTelemetryConfig, initApiWallet, initBalanceSummaryMap, initEvmProvidersIfAvailable, initHealthEndpoints, initServerNode, initStatusReporter, initTransferSummaryMap, MempoolActor, ValidatorActor } from "@xyo-network/chain-orchestration";
|
|
312
311
|
import { createBootstrapHead } from "@xyo-network/chain-services";
|
|
313
312
|
import { initTelemetry } from "@xyo-network/chain-telemetry";
|
|
314
313
|
import { startupSpanAsync } from "@xyo-network/chain-utils";
|
|
315
314
|
import { validateHydratedBlock, validateHydratedBlockState } from "@xyo-network/chain-validation";
|
|
316
|
-
import {
|
|
317
|
-
|
|
318
|
-
import { Semaphore } from "async-mutex";
|
|
319
|
-
var hostname = "::";
|
|
320
|
-
async function getServer(params) {
|
|
315
|
+
import { AccountBalanceViewerMoniker, asAttoXL1, BlockViewerMoniker, buildLocalProviderLocator, DefaultMetricsScrapePorts, findMostRecentBlock, flattenHydratedBlock, MempoolRunnerMoniker, MempoolViewerMoniker, SimpleBlockValidationViewer, SimpleXyoConnection, XyoViewerMoniker } from "@xyo-network/xl1-sdk";
|
|
316
|
+
async function initApiParams(params) {
|
|
321
317
|
const { config, node: providedNode } = params;
|
|
322
|
-
const { port } = params.config.api;
|
|
323
318
|
const { id: configuredChainId } = config.chain;
|
|
324
319
|
const logger = assertEx2(params.logger, () => "Logger is required to init server");
|
|
325
320
|
const statusReporter = initStatusReporter({
|
|
@@ -370,93 +365,32 @@ async function getServer(params) {
|
|
|
370
365
|
}
|
|
371
366
|
const head = possibleHead ?? assertEx2(await findMostRecentBlock(readonlyChainArchivist), () => "No blocks found in chain archivist");
|
|
372
367
|
const chainId = assertEx2(possibleChainId, () => "Chain ID could not be determined");
|
|
373
|
-
assertEx2(head.chain === chainId, () =>
|
|
368
|
+
assertEx2(head.chain === chainId, () => `Chain ID does not match head block chain ID [init] [${head.chain} !== ${chainId}]`);
|
|
374
369
|
const mods = await node.resolve("*");
|
|
375
370
|
await Promise.all(mods.map((mod) => {
|
|
376
371
|
return mod.start?.() ?? (() => true);
|
|
377
372
|
}));
|
|
378
|
-
const chainMap = payloadMapFromStore(writableChainArchivist);
|
|
379
|
-
const balanceSummaryContext = {
|
|
380
|
-
...initContext,
|
|
381
|
-
stepSemaphores: StepSizes.map(() => new Semaphore(20)),
|
|
382
|
-
summaryMap: balancesSummaryMap,
|
|
383
|
-
head: /* @__PURE__ */ __name(async function() {
|
|
384
|
-
const head2 = assertEx2(await findMostRecentBlock(writableChainArchivist));
|
|
385
|
-
assertEx2(head2.chain === chainId, () => "Chain ID does not match head block chain ID [balanceSummaryContext]");
|
|
386
|
-
return [
|
|
387
|
-
head2._hash,
|
|
388
|
-
head2.block
|
|
389
|
-
];
|
|
390
|
-
}, "head"),
|
|
391
|
-
store: {
|
|
392
|
-
chainMap
|
|
393
|
-
},
|
|
394
|
-
chainId
|
|
395
|
-
};
|
|
396
|
-
const transfersSummaryContext = {
|
|
397
|
-
...initContext,
|
|
398
|
-
stepSemaphores: StepSizes.map(() => new Semaphore(20)),
|
|
399
|
-
summaryMap: transfersSummaryMap,
|
|
400
|
-
head: /* @__PURE__ */ __name(async function() {
|
|
401
|
-
const head2 = assertEx2(await findMostRecentBlock(writableChainArchivist));
|
|
402
|
-
assertEx2(head2.chain === chainId, () => "Chain ID does not match head block chain ID [transfersSummaryContext]");
|
|
403
|
-
return [
|
|
404
|
-
head2._hash,
|
|
405
|
-
head2.block
|
|
406
|
-
];
|
|
407
|
-
}, "head"),
|
|
408
|
-
store: {
|
|
409
|
-
chainMap
|
|
410
|
-
},
|
|
411
|
-
chainId
|
|
412
|
-
};
|
|
413
373
|
const locator = buildLocalProviderLocator({
|
|
414
374
|
context: initContext,
|
|
415
375
|
finalizedArchivist: writableChainArchivist,
|
|
416
376
|
pendingTransactionsArchivist,
|
|
417
377
|
pendingBlocksArchivist,
|
|
418
|
-
|
|
419
|
-
|
|
378
|
+
balancesSummaryMap,
|
|
379
|
+
transfersSummaryMap,
|
|
420
380
|
node,
|
|
421
381
|
chainId
|
|
422
382
|
});
|
|
383
|
+
await initEvmProvidersIfAvailable(locator);
|
|
423
384
|
locator.register(SimpleBlockValidationViewer.factory(SimpleBlockValidationViewer.dependencies, {
|
|
424
385
|
state: validateHydratedBlockState,
|
|
425
386
|
protocol: validateHydratedBlock
|
|
426
387
|
}));
|
|
427
|
-
|
|
428
|
-
config
|
|
429
|
-
})) {
|
|
430
|
-
const provider = await initEvmProvider({
|
|
431
|
-
config,
|
|
432
|
-
logger
|
|
433
|
-
});
|
|
434
|
-
const contractAddress = assertEx2(config.chain.id, () => "Missing config.chain.chainId");
|
|
435
|
-
const contract = IStakedXyoChain__factory.connect(toEthAddress(contractAddress), provider);
|
|
436
|
-
locator.register(EvmStakeEventsViewer.factory(EvmStakeEventsViewer.dependencies, {
|
|
437
|
-
contract
|
|
438
|
-
}));
|
|
439
|
-
const stakeEventsViewer = await locator.getInstance(EvmStakeEventsViewer.defaultMoniker);
|
|
440
|
-
assertEx2(await stakeEventsViewer.start(), () => "Failed to start EvmStakeEventsViewer");
|
|
441
|
-
locator.register(EvmStakeViewer.factory(EvmStakeViewer.dependencies, {
|
|
442
|
-
contract,
|
|
443
|
-
stakeEventsViewer
|
|
444
|
-
}));
|
|
445
|
-
locator.register(EvmChainContractViewer.factory(EvmChainContractViewer.dependencies, {
|
|
446
|
-
address: asAddress3(contractAddress, true),
|
|
447
|
-
runner: provider
|
|
448
|
-
}));
|
|
449
|
-
locator.register(SimpleTimeSyncViewer.factory(SimpleTimeSyncViewer.dependencies, {
|
|
450
|
-
ethProvider: provider
|
|
451
|
-
}));
|
|
452
|
-
}
|
|
388
|
+
locator.register(SimpleXyoConnection.factory(SimpleXyoConnection.dependencies, {}));
|
|
453
389
|
const apiContext = {
|
|
454
390
|
...initContext,
|
|
455
|
-
node,
|
|
456
|
-
transfersSummaryMap,
|
|
457
|
-
balancesSummaryMap,
|
|
458
391
|
...locator.context,
|
|
459
|
-
_id: "api-context"
|
|
392
|
+
_id: "api-context",
|
|
393
|
+
node
|
|
460
394
|
};
|
|
461
395
|
const blockViewer = await locator.getInstance(BlockViewerMoniker);
|
|
462
396
|
assertEx2(await blockViewer.start(), () => "Failed to start BlockViewer");
|
|
@@ -489,7 +423,22 @@ async function getServer(params) {
|
|
|
489
423
|
pendingTransactionsArchivist
|
|
490
424
|
});
|
|
491
425
|
await mempoolActor?.start();
|
|
492
|
-
|
|
426
|
+
return {
|
|
427
|
+
id: "api-actor",
|
|
428
|
+
account: wallet,
|
|
429
|
+
context: apiContext,
|
|
430
|
+
transfersSummaryMap,
|
|
431
|
+
balancesSummaryMap
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
__name(initApiParams, "initApiParams");
|
|
435
|
+
|
|
436
|
+
// src/server/server.ts
|
|
437
|
+
var hostname = "::";
|
|
438
|
+
async function getServer(context) {
|
|
439
|
+
const { logger } = context;
|
|
440
|
+
const { port } = context.config.api;
|
|
441
|
+
const app = await getApp(context);
|
|
493
442
|
const server = app.listen(port, hostname, () => logger?.log(`[API] Server listening at http://${hostname}:${port}`));
|
|
494
443
|
server.setTimeout(2e4);
|
|
495
444
|
return server;
|
|
@@ -509,15 +458,27 @@ var ApiActor = class extends Actor {
|
|
|
509
458
|
__name(this, "ApiActor");
|
|
510
459
|
}
|
|
511
460
|
server;
|
|
461
|
+
get context() {
|
|
462
|
+
return this.params.context;
|
|
463
|
+
}
|
|
464
|
+
static defaultFactories() {
|
|
465
|
+
return [
|
|
466
|
+
...super.defaultFactories()
|
|
467
|
+
];
|
|
468
|
+
}
|
|
512
469
|
static async paramsHandler(params) {
|
|
513
470
|
const logger = params?.context?.logger;
|
|
514
|
-
|
|
471
|
+
let account = params?.account;
|
|
472
|
+
if (account === void 0) {
|
|
473
|
+
const newAccount = await Account2.random();
|
|
474
|
+
logger?.warn(`No account provided to ApiActor, generating random account ${newAccount.address}`);
|
|
475
|
+
account = newAccount;
|
|
476
|
+
}
|
|
515
477
|
logger?.info(`Running api for account ${account.address}`);
|
|
516
478
|
return {
|
|
517
|
-
...await super.paramsHandler(
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
})
|
|
479
|
+
...await super.paramsHandler(params),
|
|
480
|
+
context: params.context,
|
|
481
|
+
account: assertEx3(account, () => "ApiActor requires an account to run")
|
|
521
482
|
};
|
|
522
483
|
}
|
|
523
484
|
async createHandler() {
|
|
@@ -533,10 +494,7 @@ var ApiActor = class extends Actor {
|
|
|
533
494
|
this.stopServer();
|
|
534
495
|
}
|
|
535
496
|
async startServer() {
|
|
536
|
-
this.server = await getServer(
|
|
537
|
-
config: this.config,
|
|
538
|
-
logger: this.logger
|
|
539
|
-
});
|
|
497
|
+
this.server = await getServer(this.context);
|
|
540
498
|
}
|
|
541
499
|
stopServer() {
|
|
542
500
|
this.server?.close();
|
|
@@ -550,20 +508,15 @@ ApiActor = _ts_decorate([
|
|
|
550
508
|
// src/runApi.ts
|
|
551
509
|
import { exists, IdLogger } from "@xylabs/sdk-js";
|
|
552
510
|
import { Account as Account3 } from "@xyo-network/account";
|
|
553
|
-
var runApi = /* @__PURE__ */ __name(async ({ config,
|
|
554
|
-
const
|
|
511
|
+
var runApi = /* @__PURE__ */ __name(async ({ config, orchestrator, ...params }) => {
|
|
512
|
+
const logger = new IdLogger(params.logger ?? console, () => "API");
|
|
555
513
|
const account = await Account3.random();
|
|
556
|
-
|
|
557
|
-
const
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
config,
|
|
561
|
-
locator,
|
|
562
|
-
singletons: {},
|
|
563
|
-
logger,
|
|
564
|
-
caches: {}
|
|
565
|
-
}
|
|
514
|
+
logger.info(`Running api for account ${account.address} [random]`);
|
|
515
|
+
const actorParams = await initApiParams({
|
|
516
|
+
config,
|
|
517
|
+
logger
|
|
566
518
|
});
|
|
519
|
+
const api = await ApiActor.create(actorParams);
|
|
567
520
|
const actors = [
|
|
568
521
|
api
|
|
569
522
|
].filter(exists);
|
|
@@ -576,6 +529,7 @@ export {
|
|
|
576
529
|
ApiActor,
|
|
577
530
|
getApp,
|
|
578
531
|
getServer,
|
|
532
|
+
initApiParams,
|
|
579
533
|
runApi
|
|
580
534
|
};
|
|
581
535
|
//# sourceMappingURL=index.mjs.map
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ApiActor.ts","../../src/server/app.ts","../../src/server/instrumentation.ts","../../src/server/routes/address/addNodeRoutes.ts","../../src/server/routes/address/get/get.ts","../../src/server/routes/address/post/post.ts","../../src/server/routes/address/post/getQueryConfig.ts","../../src/server/routes/dataLake/archivistMiddleware.ts","../../src/server/routes/dataLake/addDataLakeRoutes.ts","../../src/server/routes/rpc/routes/addRpcRoutes.ts","../../src/server/routes/addRoutes.ts","../../src/server/server.ts","../../src/runApi.ts"],"sourcesContent":["import { Server } from 'node:http'\n\nimport { creatable } from '@xylabs/sdk-js'\nimport { Account } from '@xyo-network/account'\nimport { Actor, ActorParams } from '@xyo-network/xl1-sdk'\n\nimport { getServer } from './server/index.ts'\n\nexport type ApiActorParams = ActorParams<{\n\n}>\n\n@creatable()\nexport class ApiActor extends Actor<ApiActorParams> {\n private server?: Server\n\n static override async paramsHandler<T extends ApiActor>(params?: Partial<T['params']>) {\n const logger = params?.context?.logger\n\n const account = params?.account ?? await Account.random()\n logger?.info(`Running api for account ${account.address}`)\n\n return {\n ...await super.paramsHandler({\n ...params,\n account,\n }),\n }\n }\n\n override async createHandler() {\n await super.createHandler()\n }\n\n override async startHandler() {\n await super.startHandler()\n this.stopServer()\n await this.startServer()\n }\n\n override async stopHandler() {\n await super.stopHandler()\n this.stopServer()\n }\n\n private async startServer() {\n this.server = await getServer({ config: this.config, logger: this.logger })\n }\n\n private stopServer() {\n this.server?.close()\n this.server = undefined\n }\n}\n","import {\n customPoweredByHeader,\n disableCaseSensitiveRouting,\n disableExpressDefaultPoweredByHeader,\n getJsonBodyParser,\n getJsonBodyParserOptions,\n responseProfiler,\n standardErrors,\n standardResponses,\n} from '@xylabs/express'\nimport compression from 'compression'\nimport cors from 'cors'\nimport type { Express } from 'express'\nimport express from 'express'\n\nimport type { ApiContext } from '../ApiContext.ts'\nimport { addInstrumentation } from './instrumentation.ts'\nimport { addRoutes } from './routes/index.ts'\n\nexport const getApp = async (context: ApiContext): Promise<Express> => {\n addInstrumentation()\n const app = express()\n app.set('etag', false)\n\n app.use(cors())\n app.use(compression())\n app.use(responseProfiler)\n app.use(getJsonBodyParser(getJsonBodyParserOptions({ limit: '1mb' })))\n app.use(standardResponses)\n disableExpressDefaultPoweredByHeader(app)\n app.use(customPoweredByHeader)\n disableCaseSensitiveRouting(app)\n app.context = context\n await addRoutes(app)\n app.use(standardErrors)\n return app\n}\n","import { registerInstrumentations } from '@opentelemetry/instrumentation'\nimport { ExpressInstrumentation } from '@opentelemetry/instrumentation-express'\nimport { HttpInstrumentation } from '@opentelemetry/instrumentation-http'\n\n/**\n * Registers OpenTelemetry instrumentations for HTTP and Express.\n * This function is used to set up the necessary instrumentations for monitoring\n * HTTP requests and Express applications. Since it monkey patches the Express\n * router & middleware system, it should be called before any Express applications\n * are defined.\n */\nexport const addInstrumentation = () => {\n const instrumentations = [new HttpInstrumentation(), new ExpressInstrumentation()]\n registerInstrumentations({ instrumentations })\n}\n","import type { Express } from 'express'\nimport { StatusCodes } from 'http-status-codes'\n\nimport { getAddress } from './get/index.ts'\nimport { postAddress } from './post/index.ts'\n\nexport const addNodeRoutes = (app: Express) => {\n const defaultModule = app.context.node\n const address = defaultModule.address\n const defaultModuleEndpoint = `/${address}`\n app.get('/', (_req, res) => res.redirect(StatusCodes.MOVED_TEMPORARILY, defaultModuleEndpoint))\n app.post('/', (_req, res) => res.redirect(StatusCodes.TEMPORARY_REDIRECT, defaultModuleEndpoint))\n app.get('/:address', getAddress)\n app.post('/:address', postAddress)\n app.get('/:hash', (_req, res) => {\n res.sendStatus(StatusCodes.NOT_FOUND)\n })\n app.post('/:hash', (_req, res) => {\n res.sendStatus(StatusCodes.NOT_FOUND)\n })\n}\n","import { asyncHandler } from '@xylabs/express'\nimport { asAddress, isDefined } from '@xylabs/sdk-js'\nimport { isModuleName } from '@xyo-network/module-model'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { RequestHandler } from 'express'\nimport { StatusCodes } from 'http-status-codes'\n\nimport type { AddressPathParams } from '../AddressPathParams.ts'\n\nconst handler: RequestHandler<AddressPathParams, Payload[]> = async (req, res, next) => {\n const { address: moduleIdentifier } = req.params\n const { node } = req.app.context\n const address = asAddress(moduleIdentifier)\n if (isDefined(address)) {\n let mod = node.address === address ? node : (await node.resolve(address, { direction: 'down' }))\n if (mod) {\n res.json(await mod.state())\n return\n }\n }\n if (isModuleName(moduleIdentifier)) {\n const mod = await node.resolve(moduleIdentifier, { direction: 'down' })\n if (mod) {\n res.redirect(StatusCodes.MOVED_TEMPORARILY, `/${mod.address}`)\n return\n }\n }\n next('route')\n}\nexport const getAddress = asyncHandler(handler)\n","import { asyncHandler } from '@xylabs/express'\nimport type { JsonObject } from '@xylabs/sdk-js'\nimport {\n asAddress, assertEx,\n isAddress,\n toAddress,\n} from '@xylabs/sdk-js'\nimport { isQueryBoundWitness, type QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleErrorBuilder } from '@xyo-network/module-abstract'\nimport type { ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport type { ModuleError, Payload } from '@xyo-network/payload-model'\nimport type { RequestHandler } from 'express'\nimport { StatusCodes } from 'http-status-codes'\n\nimport type { AddressPathParams } from '../AddressPathParams.ts'\nimport { getQueryConfig } from './getQueryConfig.ts'\n\ntype PostAddressRequestBody = [QueryBoundWitness, undefined | Payload[]]\n\nconst handler: RequestHandler<AddressPathParams, ModuleQueryResult | ModuleError, PostAddressRequestBody> = async (req, res, next) => {\n const returnError = (code: number, message = 'An error occurred', details?: JsonObject) => {\n const error = new ModuleErrorBuilder().message(message).details(details).build()\n res.locals.rawResponse = false\n res.status(code).json(error)\n next()\n }\n\n const { address } = req.params\n const { node } = req.app.context\n const [bw, payloads] = Array.isArray(req.body) ? req.body : []\n if (!isAddress(address)) {\n return returnError(StatusCodes.BAD_REQUEST, 'Missing address')\n }\n\n if (!bw) {\n return returnError(StatusCodes.BAD_REQUEST, 'Missing boundwitness')\n }\n\n if (!isQueryBoundWitness(bw)) {\n return returnError(StatusCodes.BAD_REQUEST, 'Invalid query boundwitness')\n }\n\n let modules: ModuleInstance[] = []\n const normalizedAddress = toAddress(address)\n if (node.address === normalizedAddress) modules = [node]\n else {\n const typedAddress = asAddress(address)\n const byAddress = (typedAddress === undefined) ? undefined : await node.resolve(typedAddress, { maxDepth: 10 })\n\n if (byAddress) modules = [byAddress]\n else {\n const byName = await node.resolve(address, { direction: 'down' })\n if (byName) {\n const moduleAddress = assertEx(byName?.address, () => 'Error redirecting to module by address')\n res.redirect(StatusCodes.TEMPORARY_REDIRECT, `/${moduleAddress}`)\n return\n } else {\n return returnError(StatusCodes.NOT_FOUND, 'Module not found', { address })\n }\n }\n }\n\n if (modules.length > 0) {\n const mod = modules[0]\n const queryConfig = getQueryConfig(mod, req, bw, payloads)\n try {\n const queryResult = await mod.query(bw, payloads, queryConfig)\n res.json(queryResult)\n } catch (ex) {\n return returnError(StatusCodes.INTERNAL_SERVER_ERROR, 'Query Failed', { message: (ex as Error)?.message ?? 'Unknown Error' })\n }\n } else {\n return returnError(StatusCodes.NOT_FOUND, 'Module not found', { address })\n }\n}\n\nexport const postAddress = asyncHandler(handler)\n","import type { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { ModuleConfig, ModuleInstance } from '@xyo-network/module-model'\nimport { ModuleConfigSchema } from '@xyo-network/module-model'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { Request } from 'express'\n\nconst DEFAULT_DEPTH = 5 as const\n\nexport const getQueryConfig = (mod: ModuleInstance, req: Request, bw: QueryBoundWitness, payloads?: Payload[]): ModuleConfig | undefined => {\n // TODO: Filter based on query addresses?\n // Recurse through payloads for nested BWs\n const nestedBwAddresses\n = payloads\n ?.flat(DEFAULT_DEPTH)\n .filter<BoundWitness>((payload): payload is BoundWitness => payload?.schema === BoundWitnessSchema)\n .map(bw => bw.addresses) ?? []\n // TODO: Do we want to end up with a list of addresses or a list of address lists?\n const addresses = [bw.addresses, ...nestedBwAddresses].filter(address => address.length > 0)\n const allowed = addresses.length > 0 ? Object.fromEntries(mod.queries.map(schema => [schema, addresses])) : {}\n const security = { allowed }\n return { schema: ModuleConfigSchema, security }\n}\n","import { setRawResponseFormat } from '@xylabs/express'\nimport { asHash, isDefined } from '@xylabs/sdk-js'\nimport type {\n ArchivistInstance,\n ArchivistNextOptions, NextOptions,\n} from '@xyo-network/archivist-model'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport type { ModuleIdentifier } from '@xyo-network/module-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isAnyPayload, isSequence } from '@xyo-network/payload-model'\nimport type { Router } from 'express'\nimport express from 'express'\nimport type { Request } from 'express-serve-static-core'\n\nconst resolveArchivist = async (node: NodeInstance, archivistModuleIdentifier: ModuleIdentifier): Promise<ArchivistInstance> => {\n const mod = await node.resolve(archivistModuleIdentifier)\n return asArchivistInstance(mod, { required: true })\n}\n\nlet archivistInstance: ArchivistInstance | undefined\n\nconst getArchivist = async (node: NodeInstance, archivistModuleIdentifier: ModuleIdentifier): Promise<ArchivistInstance> => {\n if (isDefined(archivistInstance)) return archivistInstance\n archivistInstance = await resolveArchivist(node, archivistModuleIdentifier)\n return archivistInstance\n}\n\ntype ArchivistMiddlewareOptions = {\n archivistModuleIdentifier: ModuleIdentifier\n node: NodeInstance\n}\n\nexport const archivistMiddleware = (options: ArchivistMiddlewareOptions): Router => {\n const { node, archivistModuleIdentifier } = options\n const router = express.Router({ mergeParams: true })\n\n router.post('/insert', async (req, res) => {\n setRawResponseFormat(res)\n const body = Array.isArray(req.body) ? req.body : [req.body]\n const payloads = (await PayloadBuilder.hashPairs<Payload>(body)).map(p => p[0])\n const archivist = await getArchivist(node, archivistModuleIdentifier)\n const result = await archivist.insert(payloads)\n res.status(200).json(result)\n })\n\n router.get('/next', async (req: Request<Partial<NextOptions>>, res) => {\n setRawResponseFormat(res)\n const cursor = isSequence(req.query.cursor) ? req.query.cursor : undefined\n const limit = isDefined(req.query.limit) ? Number(req.query.limit) : undefined\n const open = isDefined(req.query.open) ? Boolean(req.query.open) : undefined\n const order = req.query.order === 'asc' ? 'asc' : 'desc'\n const options: ArchivistNextOptions = {\n limit, open, order, cursor,\n }\n const archivist = await getArchivist(node, archivistModuleIdentifier)\n const result = await archivist.next(options)\n res.status(200).json(result)\n })\n router.post('/next', async (req: Request<{}, {}, ArchivistNextOptions | undefined>, res) => {\n setRawResponseFormat(res)\n const options = req.body\n const archivist = await getArchivist(node, archivistModuleIdentifier)\n const result = await (isDefined(options) ? archivist.next(options) : archivist.next())\n res.status(200).json(result)\n })\n\n router.get('/get/:hash', async (req, res) => {\n setRawResponseFormat(res)\n const { hash: rawHash } = req.params\n const hash = asHash(rawHash)\n if (isDefined(hash)) {\n const archivist = await getArchivist(node, archivistModuleIdentifier)\n const [payload] = await archivist.get([hash])\n if (isAnyPayload(payload)) {\n res.json(payload)\n return\n }\n }\n res.status(400).send()\n })\n\n return router\n}\n","import type { Express } from 'express'\n\nimport { archivistMiddleware } from './archivistMiddleware.ts'\n\nexport const addDataLakeRoutes = (app: Express) => {\n const { node } = app.context\n const archivistModuleIdentifier = 'Chain:Finalized'\n app.use('/chain', archivistMiddleware({ node, archivistModuleIdentifier }))\n}\n","import { setRawResponseFormat } from '@xylabs/express'\nimport type { XyoConnection } from '@xyo-network/xl1-sdk'\nimport { rpcEngineFromConnection, XyoConnectionMoniker } from '@xyo-network/xl1-sdk'\nimport type { Express } from 'express'\n\nexport const addRpcRoutes = async (\n app: Express,\n) => {\n const { context } = app\n const { locator } = context\n\n const connection = await locator.getInstance<XyoConnection>(XyoConnectionMoniker)\n const engine = rpcEngineFromConnection(connection)\n\n app.post('/rpc', (req, res) => {\n setRawResponseFormat(res)\n engine.handle(req.body, (_, rpcResponse) => {\n res.json(rpcResponse)\n })\n })\n}\n","import type { Express } from 'express'\n\nimport { addNodeRoutes } from './address/index.ts'\nimport { addDataLakeRoutes } from './dataLake/index.ts'\nimport { addRpcRoutes } from './rpc/index.ts'\n\nexport const addRoutes = async (\n app: Express,\n) => {\n await addRpcRoutes(app)\n addDataLakeRoutes(app)\n addNodeRoutes(app)\n}\n","/* eslint-disable max-statements */\nimport type { Hash, Logger } from '@xylabs/sdk-js'\nimport {\n asAddress,\n assertEx, toEthAddress,\n} from '@xylabs/sdk-js'\nimport { Account } from '@xyo-network/account'\nimport {\n EvmChainContractViewer,\n EvmStakeEventsViewer, EvmStakeViewer,\n} from '@xyo-network/chain-ethereum'\nimport type { MempoolActorParams, ValidatorActorParams } from '@xyo-network/chain-orchestration'\nimport {\n buildTelemetryConfig, canUseEvmProvider, initApiWallet, initBalanceSummaryMap, initEvmProvider, initHealthEndpoints, initServerNode,\n initStatusReporter, initTransferSummaryMap, MempoolActor, ValidatorActor,\n} from '@xyo-network/chain-orchestration'\nimport { createBootstrapHead } from '@xyo-network/chain-services'\nimport { initTelemetry } from '@xyo-network/chain-telemetry'\nimport { startupSpanAsync } from '@xyo-network/chain-utils'\nimport { validateHydratedBlock, validateHydratedBlockState } from '@xyo-network/chain-validation'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport { IStakedXyoChain__factory } from '@xyo-network/typechain'\nimport type {\n AccountBalanceViewer, BalanceStepSummaryContext, BlockViewer, ChainId, Config,\n MempoolRunner,\n MempoolViewer,\n TransfersStepSummaryContext,\n XyoViewer,\n} from '@xyo-network/xl1-sdk'\nimport {\n AccountBalanceViewerMoniker, asAttoXL1, BlockViewerMoniker, buildLocalProviderLocator, DefaultMetricsScrapePorts, findMostRecentBlock, flattenHydratedBlock,\n MempoolRunnerMoniker, MempoolViewerMoniker, payloadMapFromStore, SimpleBlockValidationViewer, SimpleTimeSyncViewer, StepSizes,\n XyoViewerMoniker,\n} from '@xyo-network/xl1-sdk'\nimport { Semaphore } from 'async-mutex'\n\nimport type { ApiContext } from '../ApiContext.ts'\nimport { getApp } from './app.ts'\n\nconst hostname = '::'\n// const hostname = '0.0.0.0'\n\ninterface GetServerContext {\n config: Config\n logger?: Logger\n node?: NodeInstance\n}\n\nexport async function getServer(params: GetServerContext) {\n const { config, node: providedNode } = params\n const { port } = params.config.api\n const { id: configuredChainId } = config.chain\n\n const logger = assertEx(params.logger, () => 'Logger is required to init server')\n\n const statusReporter = initStatusReporter({ logger })\n\n await startupSpanAsync('initHealthEndpoints', () => initHealthEndpoints({\n config, logger, statusReporter,\n }))\n\n const telemetryConfig = buildTelemetryConfig(config, 'xl1-api', '1.0.0', DefaultMetricsScrapePorts.api)\n\n const { traceProvider, meterProvider } = await startupSpanAsync('initTelemetry', () => initTelemetry(telemetryConfig))\n\n const initContext = {\n _id: 'init-context',\n config,\n logger,\n statusReporter,\n timeBudgetLimit: 1000,\n meterProvider,\n traceProvider,\n singletons: {},\n caches: {},\n }\n\n const wallet = await initApiWallet(initContext)\n\n const balancesSummaryMap = assertEx(await initBalanceSummaryMap(initContext), () => 'Balance Summary Map not initialized')\n const transfersSummaryMap = assertEx(await initTransferSummaryMap(initContext), () => 'Transfer Summary Map not initialized')\n\n const {\n node, writableChainArchivist, readonlyChainArchivist, pendingTransactionsArchivist, pendingBlocksArchivist,\n } = await initServerNode({\n ...initContext,\n wallet,\n node: providedNode,\n transfersSummaryMap,\n balancesSummaryMap,\n })\n\n await writableChainArchivist.start()\n await readonlyChainArchivist.start()\n await pendingTransactionsArchivist.start()\n await pendingBlocksArchivist.start()\n\n const possibleHead = await findMostRecentBlock(readonlyChainArchivist)\n if (configuredChainId && possibleHead && possibleHead.chain !== configuredChainId) {\n throw new Error(`Configured chain ID (${configuredChainId}) does not match the existing chain ID (${possibleHead.chain})`)\n }\n\n let possibleChainId: ChainId | undefined = configuredChainId\n\n // if there is no configured chain ID and no head, create a new chain\n if (!possibleHead) {\n possibleChainId = possibleChainId ?? (await Account.random()).address\n // If there is no head, create one\n const chain = await createBootstrapHead(\n wallet,\n possibleChainId,\n asAttoXL1(20_000_000_000_000_000_000_000n),\n config.chain.genesisRewardAddress ?? wallet.address,\n )\n const payloads = chain.flatMap(block => flattenHydratedBlock(block))\n await writableChainArchivist.insert(payloads)\n }\n\n const head = possibleHead ?? assertEx(await findMostRecentBlock(readonlyChainArchivist), () => 'No blocks found in chain archivist')\n const chainId = assertEx(possibleChainId, () => 'Chain ID could not be determined')\n assertEx(head.chain === chainId, () => 'Chain ID does not match head block chain ID [init]')\n\n const mods = await node.resolve('*')\n await Promise.all(mods.map((mod) => {\n return mod.start?.() ?? (() => true)\n }))\n\n const chainMap = payloadMapFromStore<WithStorageMeta<Payload>>(writableChainArchivist)\n\n const balanceSummaryContext = {\n ...initContext,\n stepSemaphores: StepSizes.map(() => new Semaphore(20)),\n summaryMap: balancesSummaryMap,\n head: async function (): Promise<[Hash, number]> {\n const head = assertEx(await findMostRecentBlock(writableChainArchivist))\n assertEx(head.chain === chainId, () => 'Chain ID does not match head block chain ID [balanceSummaryContext]')\n return [head._hash, head.block]\n },\n store: { chainMap },\n chainId,\n } satisfies BalanceStepSummaryContext\n\n const transfersSummaryContext = {\n ...initContext,\n stepSemaphores: StepSizes.map(() => new Semaphore(20)),\n summaryMap: transfersSummaryMap,\n head: async function (): Promise<[Hash, number]> {\n const head = assertEx(await findMostRecentBlock(writableChainArchivist))\n assertEx(head.chain === chainId, () => 'Chain ID does not match head block chain ID [transfersSummaryContext]')\n return [head._hash, head.block]\n },\n store: { chainMap },\n chainId,\n } satisfies TransfersStepSummaryContext\n\n const locator = buildLocalProviderLocator({\n context: initContext,\n finalizedArchivist: writableChainArchivist,\n pendingTransactionsArchivist,\n pendingBlocksArchivist,\n balanceSummaryContext,\n transfersSummaryContext,\n node,\n chainId,\n })\n\n locator.register(SimpleBlockValidationViewer.factory<SimpleBlockValidationViewer>(\n SimpleBlockValidationViewer.dependencies,\n { state: validateHydratedBlockState, protocol: validateHydratedBlock },\n ))\n\n // Conditionally register ETH viewers if enabled in config\n if (canUseEvmProvider({ config })) {\n const provider = await initEvmProvider({ config, logger })\n const contractAddress = assertEx(config.chain.id, () => 'Missing config.chain.chainId') as string\n // Connect to the contract\n const contract = IStakedXyoChain__factory.connect(toEthAddress(contractAddress), provider)\n\n // Register the contract events viewer\n locator.register(EvmStakeEventsViewer.factory<EvmStakeEventsViewer>(\n EvmStakeEventsViewer.dependencies,\n { contract },\n ))\n\n // Get an instance of the events viewer to pass to the stake viewer\n const stakeEventsViewer = (await locator.getInstance<EvmStakeEventsViewer>(EvmStakeEventsViewer.defaultMoniker))\n assertEx(await stakeEventsViewer.start(), () => 'Failed to start EvmStakeEventsViewer')\n\n // Register the stake viewer\n locator.register(EvmStakeViewer.factory<EvmStakeViewer>(\n EvmStakeViewer.dependencies,\n { contract, stakeEventsViewer },\n ))\n\n // Register the contract viewer\n locator.register(EvmChainContractViewer.factory<EvmChainContractViewer>(\n EvmChainContractViewer.dependencies,\n { address: asAddress(contractAddress, true), runner: provider },\n ))\n\n // Register the contract viewer\n locator.register(SimpleTimeSyncViewer.factory<SimpleTimeSyncViewer>(\n SimpleTimeSyncViewer.dependencies,\n { ethProvider: provider },\n ))\n }\n\n const apiContext = {\n ...initContext,\n node,\n transfersSummaryMap,\n balancesSummaryMap,\n ...locator.context,\n _id: 'api-context',\n } satisfies ApiContext\n\n const blockViewer = (await locator.getInstance<BlockViewer>(BlockViewerMoniker))\n assertEx(await blockViewer.start(), () => 'Failed to start BlockViewer')\n\n const blk = await blockViewer.currentBlock()\n assertEx(blk, () => 'No blocks found after initialization')\n\n const accountBalanceViewer = (await locator.getInstance<AccountBalanceViewer>(AccountBalanceViewerMoniker))\n assertEx(await accountBalanceViewer.start(), () => 'Failed to start AccountBalanceViewer')\n\n const xyoViewer = (await locator.getInstance<XyoViewer>(XyoViewerMoniker))\n assertEx(await xyoViewer.start(), () => 'Failed to start XyoViewer')\n\n const mempoolViewer = (await locator.getInstance<MempoolViewer>(MempoolViewerMoniker))\n assertEx(await mempoolViewer.start(), () => 'Failed to start MempoolViewer')\n\n const mempoolRunner = (await locator.getInstance<MempoolRunner>(MempoolRunnerMoniker))\n assertEx(await mempoolRunner.start(), () => 'Failed to start MempoolRunner')\n\n console.info(`[API] Current block after initialization: #${blk[0].block} (${blk[0]._hash})`)\n\n const validatorActor = config.mempool.enabled\n ? undefined\n : await ValidatorActor.create({\n id: 'validator-mempool-server',\n account: wallet,\n context: locator.context,\n finalizedArchivist: writableChainArchivist,\n mempoolViewer,\n blockViewer,\n } satisfies ValidatorActorParams)\n\n await validatorActor?.start()\n\n const mempoolActor = config.mempool.enabled\n ? undefined\n : await MempoolActor.create({\n id: 'mempool-mempool-server',\n account: wallet,\n context: locator.context,\n mempoolRunner,\n pendingBlocksArchivist,\n pendingTransactionsArchivist,\n } satisfies MempoolActorParams)\n\n await mempoolActor?.start()\n\n const app = await getApp(apiContext)\n const server = app.listen(port, hostname, () => logger?.log(`[API] Server listening at http://${hostname}:${port}`))\n server.setTimeout(20_000)\n return server\n}\n","import { exists, IdLogger } from '@xylabs/sdk-js'\nimport { Account } from '@xyo-network/account'\nimport { type OrchestratorInstance } from '@xyo-network/chain-orchestration'\nimport type {\n BaseContext, Config, ProviderFactoryLocatorInstance,\n} from '@xyo-network/xl1-sdk'\n\nimport { ApiActor } from './ApiActor.ts'\n\nexport interface RunApiContext extends BaseContext {\n config: Config\n locator?: ProviderFactoryLocatorInstance\n orchestrator: OrchestratorInstance\n}\n\nexport const runApi = async ({\n config, logger, orchestrator, locator,\n}: RunApiContext) => {\n const localLogger = logger ?? new IdLogger(logger ?? console, () => 'ResolveHelper [runApi]')\n const account = await Account.random()\n localLogger.info(`Running api for account ${account.address} [random]`)\n\n // Create actors\n const api = await ApiActor.create({\n logger,\n context: {\n config, locator, singletons: {}, logger, caches: {},\n },\n })\n const actors = [api].filter(exists)\n\n for (const actor of actors) {\n // Register the actor with the orchestrator\n await orchestrator.registerActor(actor)\n }\n // Start the orchestrator => automatically activates the actor\n await orchestrator.start()\n}\n"],"mappings":"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","names":["creatable","Account","Actor","customPoweredByHeader","disableCaseSensitiveRouting","disableExpressDefaultPoweredByHeader","getJsonBodyParser","getJsonBodyParserOptions","responseProfiler","standardErrors","standardResponses","compression","cors","express","registerInstrumentations","ExpressInstrumentation","HttpInstrumentation","addInstrumentation","instrumentations","HttpInstrumentation","ExpressInstrumentation","registerInstrumentations","StatusCodes","asyncHandler","asAddress","isDefined","isModuleName","StatusCodes","handler","req","res","next","address","moduleIdentifier","params","node","app","context","asAddress","isDefined","mod","resolve","direction","json","state","isModuleName","redirect","StatusCodes","MOVED_TEMPORARILY","getAddress","asyncHandler","asyncHandler","asAddress","assertEx","isAddress","toAddress","isQueryBoundWitness","ModuleErrorBuilder","StatusCodes","BoundWitnessSchema","ModuleConfigSchema","DEFAULT_DEPTH","getQueryConfig","mod","req","bw","payloads","nestedBwAddresses","flat","filter","payload","schema","BoundWitnessSchema","map","addresses","address","length","allowed","Object","fromEntries","queries","security","ModuleConfigSchema","handler","req","res","next","returnError","code","message","details","error","ModuleErrorBuilder","build","locals","rawResponse","status","json","address","params","node","app","context","bw","payloads","Array","isArray","body","isAddress","StatusCodes","BAD_REQUEST","isQueryBoundWitness","modules","normalizedAddress","toAddress","typedAddress","asAddress","byAddress","undefined","resolve","maxDepth","byName","direction","moduleAddress","assertEx","redirect","TEMPORARY_REDIRECT","NOT_FOUND","length","mod","queryConfig","getQueryConfig","queryResult","query","ex","INTERNAL_SERVER_ERROR","postAddress","asyncHandler","addNodeRoutes","app","defaultModule","context","node","address","defaultModuleEndpoint","get","_req","res","redirect","StatusCodes","MOVED_TEMPORARILY","post","TEMPORARY_REDIRECT","getAddress","postAddress","sendStatus","NOT_FOUND","setRawResponseFormat","asHash","isDefined","asArchivistInstance","PayloadBuilder","isAnyPayload","isSequence","express","resolveArchivist","node","archivistModuleIdentifier","mod","resolve","asArchivistInstance","required","archivistInstance","getArchivist","isDefined","archivistMiddleware","options","router","express","Router","mergeParams","post","req","res","setRawResponseFormat","body","Array","isArray","payloads","PayloadBuilder","hashPairs","map","p","archivist","result","insert","status","json","get","cursor","isSequence","query","undefined","limit","Number","open","Boolean","order","next","hash","rawHash","params","asHash","payload","isAnyPayload","send","addDataLakeRoutes","app","node","context","archivistModuleIdentifier","use","archivistMiddleware","setRawResponseFormat","rpcEngineFromConnection","XyoConnectionMoniker","addRpcRoutes","app","context","locator","connection","getInstance","XyoConnectionMoniker","engine","rpcEngineFromConnection","post","req","res","setRawResponseFormat","handle","body","_","rpcResponse","json","addRoutes","app","addRpcRoutes","addDataLakeRoutes","addNodeRoutes","getApp","context","addInstrumentation","app","express","set","use","cors","compression","responseProfiler","getJsonBodyParser","getJsonBodyParserOptions","limit","standardResponses","disableExpressDefaultPoweredByHeader","customPoweredByHeader","disableCaseSensitiveRouting","addRoutes","standardErrors","asAddress","assertEx","toEthAddress","Account","EvmChainContractViewer","EvmStakeEventsViewer","EvmStakeViewer","buildTelemetryConfig","canUseEvmProvider","initApiWallet","initBalanceSummaryMap","initEvmProvider","initHealthEndpoints","initServerNode","initStatusReporter","initTransferSummaryMap","MempoolActor","ValidatorActor","createBootstrapHead","initTelemetry","startupSpanAsync","validateHydratedBlock","validateHydratedBlockState","IStakedXyoChain__factory","AccountBalanceViewerMoniker","asAttoXL1","BlockViewerMoniker","buildLocalProviderLocator","DefaultMetricsScrapePorts","findMostRecentBlock","flattenHydratedBlock","MempoolRunnerMoniker","MempoolViewerMoniker","payloadMapFromStore","SimpleBlockValidationViewer","SimpleTimeSyncViewer","StepSizes","XyoViewerMoniker","Semaphore","hostname","getServer","params","config","node","providedNode","port","api","id","configuredChainId","chain","logger","assertEx","statusReporter","initStatusReporter","startupSpanAsync","initHealthEndpoints","telemetryConfig","buildTelemetryConfig","DefaultMetricsScrapePorts","traceProvider","meterProvider","initTelemetry","initContext","_id","timeBudgetLimit","singletons","caches","wallet","initApiWallet","balancesSummaryMap","initBalanceSummaryMap","transfersSummaryMap","initTransferSummaryMap","writableChainArchivist","readonlyChainArchivist","pendingTransactionsArchivist","pendingBlocksArchivist","initServerNode","start","possibleHead","findMostRecentBlock","Error","possibleChainId","Account","random","address","createBootstrapHead","asAttoXL1","genesisRewardAddress","payloads","flatMap","block","flattenHydratedBlock","insert","head","chainId","mods","resolve","Promise","all","map","mod","chainMap","payloadMapFromStore","balanceSummaryContext","stepSemaphores","StepSizes","Semaphore","summaryMap","_hash","store","transfersSummaryContext","locator","buildLocalProviderLocator","context","finalizedArchivist","register","SimpleBlockValidationViewer","factory","dependencies","state","validateHydratedBlockState","protocol","validateHydratedBlock","canUseEvmProvider","provider","initEvmProvider","contractAddress","contract","IStakedXyoChain__factory","connect","toEthAddress","EvmStakeEventsViewer","stakeEventsViewer","getInstance","defaultMoniker","EvmStakeViewer","EvmChainContractViewer","asAddress","runner","SimpleTimeSyncViewer","ethProvider","apiContext","blockViewer","BlockViewerMoniker","blk","currentBlock","accountBalanceViewer","AccountBalanceViewerMoniker","xyoViewer","XyoViewerMoniker","mempoolViewer","MempoolViewerMoniker","mempoolRunner","MempoolRunnerMoniker","console","info","validatorActor","mempool","enabled","undefined","ValidatorActor","create","account","mempoolActor","MempoolActor","app","getApp","server","listen","log","setTimeout","ApiActor","Actor","server","paramsHandler","params","logger","context","account","Account","random","info","address","createHandler","startHandler","stopServer","startServer","stopHandler","getServer","config","close","undefined","exists","IdLogger","Account","runApi","config","logger","orchestrator","locator","localLogger","IdLogger","console","account","Account","random","info","address","api","ApiActor","create","context","singletons","caches","actors","filter","exists","actor","registerActor","start"]}
|
|
1
|
+
{"version":3,"sources":["../../src/ApiActor.ts","../../src/server/app.ts","../../src/server/instrumentation.ts","../../src/server/routes/address/addNodeRoutes.ts","../../src/server/routes/address/get/get.ts","../../src/server/routes/address/post/post.ts","../../src/server/routes/address/post/getQueryConfig.ts","../../src/server/routes/dataLake/archivistMiddleware.ts","../../src/server/routes/dataLake/addDataLakeRoutes.ts","../../src/server/routes/rpc/routes/addRpcRoutes.ts","../../src/server/routes/addRoutes.ts","../../src/server/initApiParams.ts","../../src/server/server.ts","../../src/runApi.ts"],"sourcesContent":["import { Server } from 'node:http'\n\nimport { assertEx, creatable } from '@xylabs/sdk-js'\nimport { Account } from '@xyo-network/account'\nimport { WithStorageMeta } from '@xyo-network/payload-model'\nimport {\n Actor, ActorParams, BalancesStepSummary, CreatableProviderFactory,\n MapType,\n TransfersStepSummary,\n} from '@xyo-network/xl1-sdk'\n\nimport { ApiContext } from './ApiContext.ts'\nimport { getServer } from './server/index.ts'\n\nexport type ApiActorParams = ActorParams<{\n balancesSummaryMap: MapType<string, WithStorageMeta<BalancesStepSummary>>\n context: ApiContext\n transfersSummaryMap: MapType<string, WithStorageMeta<TransfersStepSummary>>\n}>\n\n@creatable()\nexport class ApiActor extends Actor<ApiActorParams> {\n private server?: Server\n\n protected override get context() {\n return this.params.context!\n }\n\n static override defaultFactories(): CreatableProviderFactory[] {\n return [\n ...super.defaultFactories(),\n ]\n }\n\n static override async paramsHandler<T extends ApiActor>(params: T['params']) {\n const logger = params?.context?.logger\n\n let account = params?.account\n if (account === undefined) {\n const newAccount = await Account.random()\n logger?.warn(`No account provided to ApiActor, generating random account ${newAccount.address}`)\n account = newAccount\n }\n logger?.info(`Running api for account ${account.address}`)\n\n return {\n ...await super.paramsHandler(params),\n context: params.context,\n account: assertEx(account, () => 'ApiActor requires an account to run'),\n }\n }\n\n override async createHandler() {\n await super.createHandler()\n }\n\n override async startHandler() {\n await super.startHandler()\n this.stopServer()\n await this.startServer()\n }\n\n override async stopHandler() {\n await super.stopHandler()\n this.stopServer()\n }\n\n private async startServer() {\n this.server = await getServer(this.context)\n }\n\n private stopServer() {\n this.server?.close()\n this.server = undefined\n }\n}\n","import {\n customPoweredByHeader,\n disableCaseSensitiveRouting,\n disableExpressDefaultPoweredByHeader,\n getJsonBodyParser,\n getJsonBodyParserOptions,\n responseProfiler,\n standardErrors,\n standardResponses,\n} from '@xylabs/express'\nimport compression from 'compression'\nimport cors from 'cors'\nimport type { Express } from 'express'\nimport express from 'express'\n\nimport type { ApiContext } from '../ApiContext.ts'\nimport { addInstrumentation } from './instrumentation.ts'\nimport { addRoutes } from './routes/index.ts'\n\nexport const getApp = async (context: ApiContext): Promise<Express> => {\n addInstrumentation()\n const app = express()\n app.set('etag', false)\n\n app.use(cors())\n app.use(compression())\n app.use(responseProfiler)\n app.use(getJsonBodyParser(getJsonBodyParserOptions({ limit: '1mb' })))\n app.use(standardResponses)\n disableExpressDefaultPoweredByHeader(app)\n app.use(customPoweredByHeader)\n disableCaseSensitiveRouting(app)\n app.context = context\n await addRoutes(app)\n app.use(standardErrors)\n return app\n}\n","import { registerInstrumentations } from '@opentelemetry/instrumentation'\nimport { ExpressInstrumentation } from '@opentelemetry/instrumentation-express'\nimport { HttpInstrumentation } from '@opentelemetry/instrumentation-http'\n\n/**\n * Registers OpenTelemetry instrumentations for HTTP and Express.\n * This function is used to set up the necessary instrumentations for monitoring\n * HTTP requests and Express applications. Since it monkey patches the Express\n * router & middleware system, it should be called before any Express applications\n * are defined.\n */\nexport const addInstrumentation = () => {\n const instrumentations = [new HttpInstrumentation(), new ExpressInstrumentation()]\n registerInstrumentations({ instrumentations })\n}\n","import type { Express } from 'express'\nimport { StatusCodes } from 'http-status-codes'\n\nimport { getAddress } from './get/index.ts'\nimport { postAddress } from './post/index.ts'\n\nexport const addNodeRoutes = (app: Express) => {\n const defaultModule = app.context.node\n const address = defaultModule.address\n const defaultModuleEndpoint = `/${address}`\n app.get('/', (_req, res) => res.redirect(StatusCodes.MOVED_TEMPORARILY, defaultModuleEndpoint))\n app.post('/', (_req, res) => res.redirect(StatusCodes.TEMPORARY_REDIRECT, defaultModuleEndpoint))\n app.get('/:address', getAddress)\n app.post('/:address', postAddress)\n app.get('/:hash', (_req, res) => {\n res.sendStatus(StatusCodes.NOT_FOUND)\n })\n app.post('/:hash', (_req, res) => {\n res.sendStatus(StatusCodes.NOT_FOUND)\n })\n}\n","import { asyncHandler } from '@xylabs/express'\nimport { asAddress, isDefined } from '@xylabs/sdk-js'\nimport { isModuleName } from '@xyo-network/module-model'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { RequestHandler } from 'express'\nimport { StatusCodes } from 'http-status-codes'\n\nimport type { AddressPathParams } from '../AddressPathParams.ts'\n\nconst handler: RequestHandler<AddressPathParams, Payload[]> = async (req, res, next) => {\n const { address: moduleIdentifier } = req.params\n const { node } = req.app.context\n const address = asAddress(moduleIdentifier)\n if (isDefined(address)) {\n let mod = node.address === address ? node : (await node.resolve(address, { direction: 'down' }))\n if (mod) {\n res.json(await mod.state())\n return\n }\n }\n if (isModuleName(moduleIdentifier)) {\n const mod = await node.resolve(moduleIdentifier, { direction: 'down' })\n if (mod) {\n res.redirect(StatusCodes.MOVED_TEMPORARILY, `/${mod.address}`)\n return\n }\n }\n next('route')\n}\nexport const getAddress = asyncHandler(handler)\n","import { asyncHandler } from '@xylabs/express'\nimport type { JsonObject } from '@xylabs/sdk-js'\nimport {\n asAddress, assertEx,\n isAddress,\n toAddress,\n} from '@xylabs/sdk-js'\nimport { isQueryBoundWitness, type QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { ModuleErrorBuilder } from '@xyo-network/module-abstract'\nimport type { ModuleInstance, ModuleQueryResult } from '@xyo-network/module-model'\nimport type { ModuleError, Payload } from '@xyo-network/payload-model'\nimport type { RequestHandler } from 'express'\nimport { StatusCodes } from 'http-status-codes'\n\nimport type { AddressPathParams } from '../AddressPathParams.ts'\nimport { getQueryConfig } from './getQueryConfig.ts'\n\ntype PostAddressRequestBody = [QueryBoundWitness, undefined | Payload[]]\n\nconst handler: RequestHandler<AddressPathParams, ModuleQueryResult | ModuleError, PostAddressRequestBody> = async (req, res, next) => {\n const returnError = (code: number, message = 'An error occurred', details?: JsonObject) => {\n const error = new ModuleErrorBuilder().message(message).details(details).build()\n res.locals.rawResponse = false\n res.status(code).json(error)\n next()\n }\n\n const { address } = req.params\n const { node } = req.app.context\n const [bw, payloads] = Array.isArray(req.body) ? req.body : []\n if (!isAddress(address)) {\n return returnError(StatusCodes.BAD_REQUEST, 'Missing address')\n }\n\n if (!bw) {\n return returnError(StatusCodes.BAD_REQUEST, 'Missing boundwitness')\n }\n\n if (!isQueryBoundWitness(bw)) {\n return returnError(StatusCodes.BAD_REQUEST, 'Invalid query boundwitness')\n }\n\n let modules: ModuleInstance[] = []\n const normalizedAddress = toAddress(address)\n if (node.address === normalizedAddress) modules = [node]\n else {\n const typedAddress = asAddress(address)\n const byAddress = (typedAddress === undefined) ? undefined : await node.resolve(typedAddress, { maxDepth: 10 })\n\n if (byAddress) modules = [byAddress]\n else {\n const byName = await node.resolve(address, { direction: 'down' })\n if (byName) {\n const moduleAddress = assertEx(byName?.address, () => 'Error redirecting to module by address')\n res.redirect(StatusCodes.TEMPORARY_REDIRECT, `/${moduleAddress}`)\n return\n } else {\n return returnError(StatusCodes.NOT_FOUND, 'Module not found', { address })\n }\n }\n }\n\n if (modules.length > 0) {\n const mod = modules[0]\n const queryConfig = getQueryConfig(mod, req, bw, payloads)\n try {\n const queryResult = await mod.query(bw, payloads, queryConfig)\n res.json(queryResult)\n } catch (ex) {\n return returnError(StatusCodes.INTERNAL_SERVER_ERROR, 'Query Failed', { message: (ex as Error)?.message ?? 'Unknown Error' })\n }\n } else {\n return returnError(StatusCodes.NOT_FOUND, 'Module not found', { address })\n }\n}\n\nexport const postAddress = asyncHandler(handler)\n","import type { BoundWitness, QueryBoundWitness } from '@xyo-network/boundwitness-model'\nimport { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { ModuleConfig, ModuleInstance } from '@xyo-network/module-model'\nimport { ModuleConfigSchema } from '@xyo-network/module-model'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { Request } from 'express'\n\nconst DEFAULT_DEPTH = 5 as const\n\nexport const getQueryConfig = (mod: ModuleInstance, req: Request, bw: QueryBoundWitness, payloads?: Payload[]): ModuleConfig | undefined => {\n // TODO: Filter based on query addresses?\n // Recurse through payloads for nested BWs\n const nestedBwAddresses\n = payloads\n ?.flat(DEFAULT_DEPTH)\n .filter<BoundWitness>((payload): payload is BoundWitness => payload?.schema === BoundWitnessSchema)\n .map(bw => bw.addresses) ?? []\n // TODO: Do we want to end up with a list of addresses or a list of address lists?\n const addresses = [bw.addresses, ...nestedBwAddresses].filter(address => address.length > 0)\n const allowed = addresses.length > 0 ? Object.fromEntries(mod.queries.map(schema => [schema, addresses])) : {}\n const security = { allowed }\n return { schema: ModuleConfigSchema, security }\n}\n","import { setRawResponseFormat } from '@xylabs/express'\nimport { asHash, isDefined } from '@xylabs/sdk-js'\nimport type {\n ArchivistInstance,\n ArchivistNextOptions, NextOptions,\n} from '@xyo-network/archivist-model'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport type { ModuleIdentifier } from '@xyo-network/module-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { isAnyPayload, isSequence } from '@xyo-network/payload-model'\nimport type { Router } from 'express'\nimport express from 'express'\nimport type { Request } from 'express-serve-static-core'\n\nconst resolveArchivist = async (node: NodeInstance, archivistModuleIdentifier: ModuleIdentifier): Promise<ArchivistInstance> => {\n const mod = await node.resolve(archivistModuleIdentifier)\n return asArchivistInstance(mod, { required: true })\n}\n\nlet archivistInstance: ArchivistInstance | undefined\n\nconst getArchivist = async (node: NodeInstance, archivistModuleIdentifier: ModuleIdentifier): Promise<ArchivistInstance> => {\n if (isDefined(archivistInstance)) return archivistInstance\n archivistInstance = await resolveArchivist(node, archivistModuleIdentifier)\n return archivistInstance\n}\n\ntype ArchivistMiddlewareOptions = {\n archivistModuleIdentifier: ModuleIdentifier\n node: NodeInstance\n}\n\nexport const archivistMiddleware = (options: ArchivistMiddlewareOptions): Router => {\n const { node, archivistModuleIdentifier } = options\n const router = express.Router({ mergeParams: true })\n\n router.post('/insert', async (req, res) => {\n setRawResponseFormat(res)\n const body = Array.isArray(req.body) ? req.body : [req.body]\n const payloads = (await PayloadBuilder.hashPairs<Payload>(body)).map(p => p[0])\n const archivist = await getArchivist(node, archivistModuleIdentifier)\n const result = await archivist.insert(payloads)\n res.status(200).json(result)\n })\n\n router.get('/next', async (req: Request<Partial<NextOptions>>, res) => {\n setRawResponseFormat(res)\n const cursor = isSequence(req.query.cursor) ? req.query.cursor : undefined\n const limit = isDefined(req.query.limit) ? Number(req.query.limit) : undefined\n const open = isDefined(req.query.open) ? Boolean(req.query.open) : undefined\n const order = req.query.order === 'asc' ? 'asc' : 'desc'\n const options: ArchivistNextOptions = {\n limit, open, order, cursor,\n }\n const archivist = await getArchivist(node, archivistModuleIdentifier)\n const result = await archivist.next(options)\n res.status(200).json(result)\n })\n router.post('/next', async (req: Request<{}, {}, ArchivistNextOptions | undefined>, res) => {\n setRawResponseFormat(res)\n const options = req.body\n const archivist = await getArchivist(node, archivistModuleIdentifier)\n const result = await (isDefined(options) ? archivist.next(options) : archivist.next())\n res.status(200).json(result)\n })\n\n router.get('/get/:hash', async (req, res) => {\n setRawResponseFormat(res)\n const { hash: rawHash } = req.params\n const hash = asHash(rawHash)\n if (isDefined(hash)) {\n const archivist = await getArchivist(node, archivistModuleIdentifier)\n const [payload] = await archivist.get([hash])\n if (isAnyPayload(payload)) {\n res.json(payload)\n return\n }\n }\n res.status(400).send()\n })\n\n return router\n}\n","import type { Express } from 'express'\n\nimport { archivistMiddleware } from './archivistMiddleware.ts'\n\nexport const addDataLakeRoutes = (app: Express) => {\n const { node } = app.context\n const archivistModuleIdentifier = 'Chain:Finalized'\n app.use('/chain', archivistMiddleware({ node, archivistModuleIdentifier }))\n}\n","import { setRawResponseFormat } from '@xylabs/express'\nimport type { XyoConnection } from '@xyo-network/xl1-sdk'\nimport { rpcEngineFromConnection, XyoConnectionMoniker } from '@xyo-network/xl1-sdk'\nimport type { Express } from 'express'\n\nexport const addRpcRoutes = async (\n app: Express,\n) => {\n const { context } = app\n const { locator } = context\n\n const connection = await locator.getInstance<XyoConnection>(XyoConnectionMoniker)\n const engine = rpcEngineFromConnection(connection)\n\n app.post('/rpc', (req, res) => {\n setRawResponseFormat(res)\n engine.handle(req.body, (_, rpcResponse) => {\n res.json(rpcResponse)\n })\n })\n}\n","import type { Express } from 'express'\n\nimport { addNodeRoutes } from './address/index.ts'\nimport { addDataLakeRoutes } from './dataLake/index.ts'\nimport { addRpcRoutes } from './rpc/index.ts'\n\nexport const addRoutes = async (\n app: Express,\n) => {\n await addRpcRoutes(app)\n addDataLakeRoutes(app)\n addNodeRoutes(app)\n}\n","/* eslint-disable max-statements */\nimport type { Logger } from '@xylabs/sdk-js'\nimport { assertEx } from '@xylabs/sdk-js'\nimport { Account } from '@xyo-network/account'\nimport type { MempoolActorParams, ValidatorActorParams } from '@xyo-network/chain-orchestration'\nimport {\n buildTelemetryConfig, initApiWallet, initBalanceSummaryMap, initEvmProvidersIfAvailable, initHealthEndpoints, initServerNode,\n initStatusReporter, initTransferSummaryMap, MempoolActor, ValidatorActor,\n} from '@xyo-network/chain-orchestration'\nimport { createBootstrapHead } from '@xyo-network/chain-services'\nimport { initTelemetry } from '@xyo-network/chain-telemetry'\nimport { startupSpanAsync } from '@xyo-network/chain-utils'\nimport { validateHydratedBlock, validateHydratedBlockState } from '@xyo-network/chain-validation'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport type {\n AccountBalanceViewer, BlockViewer, ChainId, Config,\n MempoolRunner,\n MempoolViewer,\n XyoViewer,\n} from '@xyo-network/xl1-sdk'\nimport {\n AccountBalanceViewerMoniker, asAttoXL1, BlockViewerMoniker, buildLocalProviderLocator, DefaultMetricsScrapePorts, findMostRecentBlock, flattenHydratedBlock,\n MempoolRunnerMoniker, MempoolViewerMoniker, SimpleBlockValidationViewer, SimpleXyoConnection,\n XyoViewerMoniker,\n} from '@xyo-network/xl1-sdk'\n\nimport type { ApiActorParams } from '../ApiActor.ts'\nimport type { ApiContext } from '../ApiContext.ts'\n\ninterface InitServerContext {\n config: Config\n logger?: Logger\n node?: NodeInstance\n}\n\nexport async function initApiParams(params: InitServerContext): Promise<ApiActorParams> {\n const { config, node: providedNode } = params\n const { id: configuredChainId } = config.chain\n\n const logger = assertEx(params.logger, () => 'Logger is required to init server')\n\n const statusReporter = initStatusReporter({ logger })\n\n await startupSpanAsync('initHealthEndpoints', () => initHealthEndpoints({\n config, logger, statusReporter,\n }))\n\n const telemetryConfig = buildTelemetryConfig(config, 'xl1-api', '1.0.0', DefaultMetricsScrapePorts.api)\n\n const { traceProvider, meterProvider } = await startupSpanAsync('initTelemetry', () => initTelemetry(telemetryConfig))\n\n const initContext = {\n _id: 'init-context',\n config,\n logger,\n statusReporter,\n timeBudgetLimit: 1000,\n meterProvider,\n traceProvider,\n singletons: {},\n caches: {},\n }\n\n const wallet = await initApiWallet(initContext)\n\n const balancesSummaryMap = assertEx(await initBalanceSummaryMap(initContext), () => 'Balance Summary Map not initialized')\n const transfersSummaryMap = assertEx(await initTransferSummaryMap(initContext), () => 'Transfer Summary Map not initialized')\n\n const {\n node, writableChainArchivist, readonlyChainArchivist, pendingTransactionsArchivist, pendingBlocksArchivist,\n } = await initServerNode({\n ...initContext,\n wallet,\n node: providedNode,\n transfersSummaryMap,\n balancesSummaryMap,\n })\n\n await writableChainArchivist.start()\n await readonlyChainArchivist.start()\n await pendingTransactionsArchivist.start()\n await pendingBlocksArchivist.start()\n\n const possibleHead = await findMostRecentBlock(readonlyChainArchivist)\n if (configuredChainId && possibleHead && possibleHead.chain !== configuredChainId) {\n throw new Error(`Configured chain ID (${configuredChainId}) does not match the existing chain ID (${possibleHead.chain})`)\n }\n\n let possibleChainId: ChainId | undefined = configuredChainId\n\n // if there is no configured chain ID and no head, create a new chain\n if (!possibleHead) {\n possibleChainId = possibleChainId ?? (await Account.random()).address\n // If there is no head, create one\n const chain = await createBootstrapHead(\n wallet,\n possibleChainId,\n asAttoXL1(20_000_000_000_000_000_000_000n),\n config.chain.genesisRewardAddress ?? wallet.address,\n )\n const payloads = chain.flatMap(block => flattenHydratedBlock(block))\n await writableChainArchivist.insert(payloads)\n }\n\n const head = possibleHead ?? assertEx(await findMostRecentBlock(readonlyChainArchivist), () => 'No blocks found in chain archivist')\n const chainId = assertEx(possibleChainId, () => 'Chain ID could not be determined')\n assertEx(head.chain === chainId, () => `Chain ID does not match head block chain ID [init] [${head.chain} !== ${chainId}]`)\n\n const mods = await node.resolve('*')\n await Promise.all(mods.map((mod) => {\n return mod.start?.() ?? (() => true)\n }))\n\n const locator = buildLocalProviderLocator({\n context: initContext,\n finalizedArchivist: writableChainArchivist,\n pendingTransactionsArchivist,\n pendingBlocksArchivist,\n balancesSummaryMap,\n transfersSummaryMap,\n node,\n chainId,\n })\n\n await initEvmProvidersIfAvailable(locator)\n\n locator.register(SimpleBlockValidationViewer.factory<SimpleBlockValidationViewer>(\n SimpleBlockValidationViewer.dependencies,\n { state: validateHydratedBlockState, protocol: validateHydratedBlock },\n ))\n\n locator.register(SimpleXyoConnection.factory<SimpleXyoConnection>(SimpleXyoConnection.dependencies, {}))\n\n const apiContext = {\n ...initContext,\n ...locator.context,\n _id: 'api-context',\n node,\n } satisfies ApiContext\n\n const blockViewer = (await locator.getInstance<BlockViewer>(BlockViewerMoniker))\n assertEx(await blockViewer.start(), () => 'Failed to start BlockViewer')\n\n const blk = await blockViewer.currentBlock()\n assertEx(blk, () => 'No blocks found after initialization')\n\n const accountBalanceViewer = (await locator.getInstance<AccountBalanceViewer>(AccountBalanceViewerMoniker))\n assertEx(await accountBalanceViewer.start(), () => 'Failed to start AccountBalanceViewer')\n\n const xyoViewer = (await locator.getInstance<XyoViewer>(XyoViewerMoniker))\n assertEx(await xyoViewer.start(), () => 'Failed to start XyoViewer')\n\n const mempoolViewer = (await locator.getInstance<MempoolViewer>(MempoolViewerMoniker))\n assertEx(await mempoolViewer.start(), () => 'Failed to start MempoolViewer')\n\n const mempoolRunner = (await locator.getInstance<MempoolRunner>(MempoolRunnerMoniker))\n assertEx(await mempoolRunner.start(), () => 'Failed to start MempoolRunner')\n\n console.info(`[API] Current block after initialization: #${blk[0].block} (${blk[0]._hash})`)\n\n const validatorActor = config.mempool.enabled\n ? undefined\n : await ValidatorActor.create({\n id: 'validator-mempool-server',\n account: wallet,\n context: locator.context,\n finalizedArchivist: writableChainArchivist,\n mempoolViewer,\n blockViewer,\n } satisfies ValidatorActorParams)\n\n await validatorActor?.start()\n\n const mempoolActor = config.mempool.enabled\n ? undefined\n : await MempoolActor.create({\n id: 'mempool-mempool-server',\n account: wallet,\n context: locator.context,\n mempoolRunner,\n pendingBlocksArchivist,\n pendingTransactionsArchivist,\n } satisfies MempoolActorParams)\n\n await mempoolActor?.start()\n\n return {\n id: 'api-actor',\n account: wallet,\n context: apiContext,\n transfersSummaryMap,\n balancesSummaryMap,\n }\n}\n","import type { ApiContext } from '../ApiContext.ts'\nimport { getApp } from './app.ts'\n\nconst hostname = '::'\n\nexport async function getServer(context: ApiContext) {\n const { logger } = context\n const { port } = context.config.api\n\n const app = await getApp(context)\n const server = app.listen(port, hostname, () => logger?.log(`[API] Server listening at http://${hostname}:${port}`))\n server.setTimeout(20_000)\n return server\n}\n","import { exists, IdLogger } from '@xylabs/sdk-js'\nimport { Account } from '@xyo-network/account'\nimport { type OrchestratorInstance } from '@xyo-network/chain-orchestration'\nimport { type BaseContext, type Config } from '@xyo-network/xl1-sdk'\n\nimport { ApiActor } from './ApiActor.ts'\nimport { initApiParams } from './server/index.ts'\n\nexport interface RunApiContext extends BaseContext {\n config: Config\n orchestrator: OrchestratorInstance\n}\n\nexport const runApi = async ({\n config, orchestrator, ...params\n}: RunApiContext) => {\n const logger = new IdLogger(params.logger ?? console, () => 'API')\n const account = await Account.random()\n logger.info(`Running api for account ${account.address} [random]`)\n\n const actorParams = await initApiParams({ config, logger })\n\n // Create actors\n const api = await ApiActor.create(actorParams)\n const actors = [api].filter(exists)\n\n for (const actor of actors) {\n // Register the actor with the orchestrator\n await orchestrator.registerActor(actor)\n }\n // Start the orchestrator => automatically activates the actor\n await orchestrator.start()\n}\n"],"mappings":"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","names":["assertEx","creatable","Account","Actor","customPoweredByHeader","disableCaseSensitiveRouting","disableExpressDefaultPoweredByHeader","getJsonBodyParser","getJsonBodyParserOptions","responseProfiler","standardErrors","standardResponses","compression","cors","express","registerInstrumentations","ExpressInstrumentation","HttpInstrumentation","addInstrumentation","instrumentations","HttpInstrumentation","ExpressInstrumentation","registerInstrumentations","StatusCodes","asyncHandler","asAddress","isDefined","isModuleName","StatusCodes","handler","req","res","next","address","moduleIdentifier","params","node","app","context","asAddress","isDefined","mod","resolve","direction","json","state","isModuleName","redirect","StatusCodes","MOVED_TEMPORARILY","getAddress","asyncHandler","asyncHandler","asAddress","assertEx","isAddress","toAddress","isQueryBoundWitness","ModuleErrorBuilder","StatusCodes","BoundWitnessSchema","ModuleConfigSchema","DEFAULT_DEPTH","getQueryConfig","mod","req","bw","payloads","nestedBwAddresses","flat","filter","payload","schema","BoundWitnessSchema","map","addresses","address","length","allowed","Object","fromEntries","queries","security","ModuleConfigSchema","handler","req","res","next","returnError","code","message","details","error","ModuleErrorBuilder","build","locals","rawResponse","status","json","address","params","node","app","context","bw","payloads","Array","isArray","body","isAddress","StatusCodes","BAD_REQUEST","isQueryBoundWitness","modules","normalizedAddress","toAddress","typedAddress","asAddress","byAddress","undefined","resolve","maxDepth","byName","direction","moduleAddress","assertEx","redirect","TEMPORARY_REDIRECT","NOT_FOUND","length","mod","queryConfig","getQueryConfig","queryResult","query","ex","INTERNAL_SERVER_ERROR","postAddress","asyncHandler","addNodeRoutes","app","defaultModule","context","node","address","defaultModuleEndpoint","get","_req","res","redirect","StatusCodes","MOVED_TEMPORARILY","post","TEMPORARY_REDIRECT","getAddress","postAddress","sendStatus","NOT_FOUND","setRawResponseFormat","asHash","isDefined","asArchivistInstance","PayloadBuilder","isAnyPayload","isSequence","express","resolveArchivist","node","archivistModuleIdentifier","mod","resolve","asArchivistInstance","required","archivistInstance","getArchivist","isDefined","archivistMiddleware","options","router","express","Router","mergeParams","post","req","res","setRawResponseFormat","body","Array","isArray","payloads","PayloadBuilder","hashPairs","map","p","archivist","result","insert","status","json","get","cursor","isSequence","query","undefined","limit","Number","open","Boolean","order","next","hash","rawHash","params","asHash","payload","isAnyPayload","send","addDataLakeRoutes","app","node","context","archivistModuleIdentifier","use","archivistMiddleware","setRawResponseFormat","rpcEngineFromConnection","XyoConnectionMoniker","addRpcRoutes","app","context","locator","connection","getInstance","XyoConnectionMoniker","engine","rpcEngineFromConnection","post","req","res","setRawResponseFormat","handle","body","_","rpcResponse","json","addRoutes","app","addRpcRoutes","addDataLakeRoutes","addNodeRoutes","getApp","context","addInstrumentation","app","express","set","use","cors","compression","responseProfiler","getJsonBodyParser","getJsonBodyParserOptions","limit","standardResponses","disableExpressDefaultPoweredByHeader","customPoweredByHeader","disableCaseSensitiveRouting","addRoutes","standardErrors","assertEx","Account","buildTelemetryConfig","initApiWallet","initBalanceSummaryMap","initEvmProvidersIfAvailable","initHealthEndpoints","initServerNode","initStatusReporter","initTransferSummaryMap","MempoolActor","ValidatorActor","createBootstrapHead","initTelemetry","startupSpanAsync","validateHydratedBlock","validateHydratedBlockState","AccountBalanceViewerMoniker","asAttoXL1","BlockViewerMoniker","buildLocalProviderLocator","DefaultMetricsScrapePorts","findMostRecentBlock","flattenHydratedBlock","MempoolRunnerMoniker","MempoolViewerMoniker","SimpleBlockValidationViewer","SimpleXyoConnection","XyoViewerMoniker","initApiParams","params","config","node","providedNode","id","configuredChainId","chain","logger","assertEx","statusReporter","initStatusReporter","startupSpanAsync","initHealthEndpoints","telemetryConfig","buildTelemetryConfig","DefaultMetricsScrapePorts","api","traceProvider","meterProvider","initTelemetry","initContext","_id","timeBudgetLimit","singletons","caches","wallet","initApiWallet","balancesSummaryMap","initBalanceSummaryMap","transfersSummaryMap","initTransferSummaryMap","writableChainArchivist","readonlyChainArchivist","pendingTransactionsArchivist","pendingBlocksArchivist","initServerNode","start","possibleHead","findMostRecentBlock","Error","possibleChainId","Account","random","address","createBootstrapHead","asAttoXL1","genesisRewardAddress","payloads","flatMap","block","flattenHydratedBlock","insert","head","chainId","mods","resolve","Promise","all","map","mod","locator","buildLocalProviderLocator","context","finalizedArchivist","initEvmProvidersIfAvailable","register","SimpleBlockValidationViewer","factory","dependencies","state","validateHydratedBlockState","protocol","validateHydratedBlock","SimpleXyoConnection","apiContext","blockViewer","getInstance","BlockViewerMoniker","blk","currentBlock","accountBalanceViewer","AccountBalanceViewerMoniker","xyoViewer","XyoViewerMoniker","mempoolViewer","MempoolViewerMoniker","mempoolRunner","MempoolRunnerMoniker","console","info","_hash","validatorActor","mempool","enabled","undefined","ValidatorActor","create","account","mempoolActor","MempoolActor","hostname","getServer","context","logger","port","config","api","app","getApp","server","listen","log","setTimeout","ApiActor","Actor","server","context","params","defaultFactories","paramsHandler","logger","account","undefined","newAccount","Account","random","warn","address","info","assertEx","createHandler","startHandler","stopServer","startServer","stopHandler","getServer","close","exists","IdLogger","Account","runApi","config","orchestrator","params","logger","IdLogger","console","account","Account","random","info","address","actorParams","initApiParams","api","ApiActor","create","actors","filter","exists","actor","registerActor","start"]}
|
package/dist/node/runApi.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import { type OrchestratorInstance } from '@xyo-network/chain-orchestration';
|
|
2
|
-
import type
|
|
2
|
+
import { type BaseContext, type Config } from '@xyo-network/xl1-sdk';
|
|
3
3
|
export interface RunApiContext extends BaseContext {
|
|
4
4
|
config: Config;
|
|
5
|
-
locator?: ProviderFactoryLocatorInstance;
|
|
6
5
|
orchestrator: OrchestratorInstance;
|
|
7
6
|
}
|
|
8
|
-
export declare const runApi: ({ config,
|
|
7
|
+
export declare const runApi: ({ config, orchestrator, ...params }: RunApiContext) => Promise<void>;
|
|
9
8
|
//# sourceMappingURL=runApi.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runApi.d.ts","sourceRoot":"","sources":["../../src/runApi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAC5E,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"runApi.d.ts","sourceRoot":"","sources":["../../src/runApi.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAC5E,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,MAAM,sBAAsB,CAAA;AAKpE,MAAM,WAAW,aAAc,SAAQ,WAAW;IAChD,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,oBAAoB,CAAA;CACnC;AAED,eAAO,MAAM,MAAM,GAAU,qCAE1B,aAAa,kBAiBf,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA;AACxB,cAAc,oBAAoB,CAAA;AAClC,cAAc,aAAa,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Logger } from '@xylabs/sdk-js';
|
|
2
|
+
import type { NodeInstance } from '@xyo-network/node-model';
|
|
3
|
+
import type { Config } from '@xyo-network/xl1-sdk';
|
|
4
|
+
import type { ApiActorParams } from '../ApiActor.ts';
|
|
5
|
+
interface InitServerContext {
|
|
6
|
+
config: Config;
|
|
7
|
+
logger?: Logger;
|
|
8
|
+
node?: NodeInstance;
|
|
9
|
+
}
|
|
10
|
+
export declare function initApiParams(params: InitServerContext): Promise<ApiActorParams>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=initApiParams.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initApiParams.d.ts","sourceRoot":"","sources":["../../../src/server/initApiParams.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAY5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,KAAK,EACkC,MAAM,EAInD,MAAM,sBAAsB,CAAA;AAO7B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAGpD,UAAU,iBAAiB;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,YAAY,CAAA;CACpB;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,CAAC,CA8JtF"}
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
import type { Config } from '@xyo-network/xl1-sdk';
|
|
4
|
-
interface GetServerContext {
|
|
5
|
-
config: Config;
|
|
6
|
-
logger?: Logger;
|
|
7
|
-
node?: NodeInstance;
|
|
8
|
-
}
|
|
9
|
-
export declare function getServer(params: GetServerContext): Promise<import("node:http").Server<typeof import("node:http").IncomingMessage, typeof import("node:http").ServerResponse>>;
|
|
10
|
-
export {};
|
|
1
|
+
import type { ApiContext } from '../ApiContext.ts';
|
|
2
|
+
export declare function getServer(context: ApiContext): Promise<import("node:http").Server<typeof import("node:http").IncomingMessage, typeof import("node:http").ServerResponse>>;
|
|
11
3
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/server/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../src/server/server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAKlD,wBAAsB,SAAS,CAAC,OAAO,EAAE,UAAU,8HAQlD"}
|