@xyo-network/chain-api 1.22.0 → 1.23.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 +100 -106
- package/dist/node/index.mjs.map +7 -1
- package/package.json +32 -41
package/dist/node/index.mjs
CHANGED
|
@@ -1,10 +1,29 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
|
-
var
|
|
2
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
3
|
+
var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
|
|
4
|
+
var __decorateClass = (decorators, target, key, kind) => {
|
|
5
|
+
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
6
|
+
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
7
|
+
if (decorator = decorators[i])
|
|
8
|
+
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
9
|
+
if (kind && result) __defProp(target, key, result);
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
12
|
+
var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
|
|
3
13
|
|
|
4
14
|
// src/ApiActor.ts
|
|
5
15
|
import { creatable } from "@xylabs/sdk-js";
|
|
6
16
|
import { ActorV3 } from "@xyo-network/chain-orchestration";
|
|
7
|
-
import {
|
|
17
|
+
import {
|
|
18
|
+
AccountBalanceViewerMoniker,
|
|
19
|
+
asHostActorConfigContext,
|
|
20
|
+
BlockViewerMoniker,
|
|
21
|
+
FinalizationViewerMoniker,
|
|
22
|
+
MempoolViewerMoniker,
|
|
23
|
+
TransactionViewerMoniker,
|
|
24
|
+
XyoConnectionMoniker as XyoConnectionMoniker2,
|
|
25
|
+
XyoViewerMoniker
|
|
26
|
+
} from "@xyo-network/xl1-sdk";
|
|
8
27
|
|
|
9
28
|
// src/server/app.ts
|
|
10
29
|
import { standardErrors } from "@xylabs/express";
|
|
@@ -15,86 +34,74 @@ import express2 from "express";
|
|
|
15
34
|
import { registerInstrumentations } from "@opentelemetry/instrumentation";
|
|
16
35
|
import { ExpressInstrumentation } from "@opentelemetry/instrumentation-express";
|
|
17
36
|
import { HttpInstrumentation } from "@opentelemetry/instrumentation-http";
|
|
18
|
-
var addInstrumentation =
|
|
19
|
-
const instrumentations = [
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
];
|
|
23
|
-
registerInstrumentations({
|
|
24
|
-
instrumentations
|
|
25
|
-
});
|
|
26
|
-
}, "addInstrumentation");
|
|
37
|
+
var addInstrumentation = () => {
|
|
38
|
+
const instrumentations = [new HttpInstrumentation(), new ExpressInstrumentation()];
|
|
39
|
+
registerInstrumentations({ instrumentations });
|
|
40
|
+
};
|
|
27
41
|
|
|
28
42
|
// src/server/routes/livez/get.ts
|
|
29
43
|
import { setRawResponseFormat } from "@xylabs/express";
|
|
30
44
|
import { ReasonPhrases } from "http-status-codes";
|
|
31
45
|
var message = ReasonPhrases.OK;
|
|
32
|
-
var handler =
|
|
46
|
+
var handler = (_req, res) => {
|
|
33
47
|
setRawResponseFormat(res);
|
|
34
|
-
res.status(200).send({
|
|
35
|
-
|
|
36
|
-
});
|
|
37
|
-
}, "handler");
|
|
48
|
+
res.status(200).send({ message });
|
|
49
|
+
};
|
|
38
50
|
var getLivez = handler;
|
|
39
51
|
|
|
40
52
|
// src/server/routes/readyz/get.ts
|
|
41
53
|
import { setRawResponseFormat as setRawResponseFormat2 } from "@xylabs/express";
|
|
42
54
|
import { ReasonPhrases as ReasonPhrases2 } from "http-status-codes";
|
|
43
55
|
var message2 = ReasonPhrases2.OK;
|
|
44
|
-
var handler2 =
|
|
56
|
+
var handler2 = (_req, res) => {
|
|
45
57
|
setRawResponseFormat2(res);
|
|
46
|
-
res.status(200).send({
|
|
47
|
-
|
|
48
|
-
});
|
|
49
|
-
}, "handler");
|
|
58
|
+
res.status(200).send({ message: message2 });
|
|
59
|
+
};
|
|
50
60
|
var getReadyz = handler2;
|
|
51
61
|
|
|
52
62
|
// src/server/routes/startupz/get.ts
|
|
53
63
|
import { setRawResponseFormat as setRawResponseFormat3 } from "@xylabs/express";
|
|
54
64
|
import { ReasonPhrases as ReasonPhrases3 } from "http-status-codes";
|
|
55
65
|
var message3 = ReasonPhrases3.OK;
|
|
56
|
-
var handler3 =
|
|
66
|
+
var handler3 = (_req, res) => {
|
|
57
67
|
setRawResponseFormat3(res);
|
|
58
|
-
res.status(200).send({
|
|
59
|
-
|
|
60
|
-
});
|
|
61
|
-
}, "handler");
|
|
68
|
+
res.status(200).send({ message: message3 });
|
|
69
|
+
};
|
|
62
70
|
var getStartupz = handler3;
|
|
63
71
|
|
|
64
72
|
// src/server/routes/addProbeRoutes.ts
|
|
65
|
-
var addProbeRoutes =
|
|
73
|
+
var addProbeRoutes = (app) => {
|
|
66
74
|
app.get("/livez", getLivez);
|
|
67
75
|
app.get("/readyz", getReadyz);
|
|
68
76
|
app.get("/startupz", getStartupz);
|
|
69
|
-
}
|
|
77
|
+
};
|
|
70
78
|
|
|
71
79
|
// src/server/routes/dataLake/archivistMiddleware.ts
|
|
72
80
|
import { setRawResponseFormat as setRawResponseFormat4 } from "@xylabs/express";
|
|
73
81
|
import { asHash, isDefined } from "@xylabs/sdk-js";
|
|
74
|
-
import {
|
|
82
|
+
import {
|
|
83
|
+
asArchivistInstance,
|
|
84
|
+
isAnyPayload,
|
|
85
|
+
isSequence,
|
|
86
|
+
PayloadBuilder
|
|
87
|
+
} from "@xyo-network/sdk-js";
|
|
75
88
|
import express from "express";
|
|
76
|
-
var resolveArchivist =
|
|
89
|
+
var resolveArchivist = async (node, archivistModuleIdentifier) => {
|
|
77
90
|
const mod = await node.resolve(archivistModuleIdentifier);
|
|
78
|
-
return asArchivistInstance(mod, {
|
|
79
|
-
|
|
80
|
-
});
|
|
81
|
-
}, "resolveArchivist");
|
|
91
|
+
return asArchivistInstance(mod, { required: true });
|
|
92
|
+
};
|
|
82
93
|
var archivistInstance;
|
|
83
|
-
var getArchivist =
|
|
94
|
+
var getArchivist = async (node, archivistModuleIdentifier) => {
|
|
84
95
|
if (isDefined(archivistInstance)) return archivistInstance;
|
|
85
96
|
archivistInstance = await resolveArchivist(node, archivistModuleIdentifier);
|
|
86
97
|
return archivistInstance;
|
|
87
|
-
}
|
|
88
|
-
var archivistMiddleware =
|
|
98
|
+
};
|
|
99
|
+
var archivistMiddleware = (options) => {
|
|
89
100
|
const { node, archivistModuleIdentifier } = options;
|
|
90
|
-
const router = express.Router({
|
|
91
|
-
mergeParams: true
|
|
92
|
-
});
|
|
101
|
+
const router = express.Router({ mergeParams: true });
|
|
93
102
|
router.post("/insert", async (req, res) => {
|
|
94
103
|
setRawResponseFormat4(res);
|
|
95
|
-
const body = Array.isArray(req.body) ? req.body : [
|
|
96
|
-
req.body
|
|
97
|
-
];
|
|
104
|
+
const body = Array.isArray(req.body) ? req.body : [req.body];
|
|
98
105
|
const payloads = (await PayloadBuilder.hashPairs(body)).map((p) => p[0]);
|
|
99
106
|
const archivist = await getArchivist(node, archivistModuleIdentifier);
|
|
100
107
|
const result = await archivist.insert(payloads);
|
|
@@ -129,9 +136,7 @@ var archivistMiddleware = /* @__PURE__ */ __name((options) => {
|
|
|
129
136
|
const hash = asHash(rawHash);
|
|
130
137
|
if (isDefined(hash)) {
|
|
131
138
|
const archivist = await getArchivist(node, archivistModuleIdentifier);
|
|
132
|
-
const [payload] = await archivist.get([
|
|
133
|
-
hash
|
|
134
|
-
]);
|
|
139
|
+
const [payload] = await archivist.get([hash]);
|
|
135
140
|
if (isAnyPayload(payload)) {
|
|
136
141
|
res.json(payload);
|
|
137
142
|
return;
|
|
@@ -140,17 +145,14 @@ var archivistMiddleware = /* @__PURE__ */ __name((options) => {
|
|
|
140
145
|
res.status(400).send();
|
|
141
146
|
});
|
|
142
147
|
return router;
|
|
143
|
-
}
|
|
148
|
+
};
|
|
144
149
|
|
|
145
150
|
// src/server/routes/dataLake/addDataLakeRoutes.ts
|
|
146
|
-
var addDataLakeRoutes =
|
|
151
|
+
var addDataLakeRoutes = (app) => {
|
|
147
152
|
const { node } = app.context;
|
|
148
153
|
const archivistModuleIdentifier = "Chain:Finalized";
|
|
149
|
-
app.use("/chain", archivistMiddleware({
|
|
150
|
-
|
|
151
|
-
archivistModuleIdentifier
|
|
152
|
-
}));
|
|
153
|
-
}, "addDataLakeRoutes");
|
|
154
|
+
app.use("/chain", archivistMiddleware({ node, archivistModuleIdentifier }));
|
|
155
|
+
};
|
|
154
156
|
|
|
155
157
|
// src/server/routes/rpc/routes/addRpcRoutes.ts
|
|
156
158
|
import { setRawResponseFormat as setRawResponseFormat5 } from "@xylabs/express";
|
|
@@ -160,7 +162,7 @@ import { rpcServerFromConnection, XyoConnectionMoniker } from "@xyo-network/xl1-
|
|
|
160
162
|
import { connectionSubsetBySurface } from "@xyo-network/xl1-sdk";
|
|
161
163
|
|
|
162
164
|
// src/server/routes/rpc/routes/addRpcRoutes.ts
|
|
163
|
-
var addRpcRoutes =
|
|
165
|
+
var addRpcRoutes = async (app) => {
|
|
164
166
|
const { context } = app;
|
|
165
167
|
const { locator } = context;
|
|
166
168
|
const apiConfig = context.config;
|
|
@@ -168,7 +170,9 @@ var addRpcRoutes = /* @__PURE__ */ __name(async (app) => {
|
|
|
168
170
|
const connection = await locator.getInstance(XyoConnectionMoniker);
|
|
169
171
|
const indexedPresent = hasAnyIndexedBranch(connection);
|
|
170
172
|
if (useLegacyMixed && indexedPresent) {
|
|
171
|
-
context.logger?.warn(
|
|
173
|
+
context.logger?.warn(
|
|
174
|
+
"[api] /rpc is serving indexed methods (LEGACY_MIXED_RPC=true). Indexed clients should migrate to /rpc/indexed; flip XL1_ACTORS__API__LEGACY_MIXED_RPC=false to enforce strict node-surface-only at /rpc."
|
|
175
|
+
);
|
|
172
176
|
}
|
|
173
177
|
const rpcConnection = useLegacyMixed ? connection : connectionSubsetBySurface(connection, "node");
|
|
174
178
|
const rpcServer = rpcServerFromConnection(rpcConnection);
|
|
@@ -186,7 +190,7 @@ var addRpcRoutes = /* @__PURE__ */ __name(async (app) => {
|
|
|
186
190
|
res.json(rpcResponse);
|
|
187
191
|
});
|
|
188
192
|
}
|
|
189
|
-
}
|
|
193
|
+
};
|
|
190
194
|
function hasAnyIndexedBranch(connection) {
|
|
191
195
|
if (connection.networkStake) return true;
|
|
192
196
|
if (connection.storage) return true;
|
|
@@ -196,17 +200,16 @@ function hasAnyIndexedBranch(connection) {
|
|
|
196
200
|
}
|
|
197
201
|
return false;
|
|
198
202
|
}
|
|
199
|
-
__name(hasAnyIndexedBranch, "hasAnyIndexedBranch");
|
|
200
203
|
|
|
201
204
|
// src/server/routes/addRoutes.ts
|
|
202
|
-
var addRoutes =
|
|
205
|
+
var addRoutes = async (app) => {
|
|
203
206
|
addProbeRoutes(app);
|
|
204
207
|
await addRpcRoutes(app);
|
|
205
208
|
addDataLakeRoutes(app);
|
|
206
|
-
}
|
|
209
|
+
};
|
|
207
210
|
|
|
208
211
|
// src/server/app.ts
|
|
209
|
-
var getApp =
|
|
212
|
+
var getApp = async (context) => {
|
|
210
213
|
addInstrumentation();
|
|
211
214
|
const app = express2();
|
|
212
215
|
sharedMiddleware(app);
|
|
@@ -214,7 +217,7 @@ var getApp = /* @__PURE__ */ __name(async (context) => {
|
|
|
214
217
|
await addRoutes(app);
|
|
215
218
|
app.use(standardErrors);
|
|
216
219
|
return app;
|
|
217
|
-
}
|
|
220
|
+
};
|
|
218
221
|
|
|
219
222
|
// src/server/server.ts
|
|
220
223
|
var hostname = "::";
|
|
@@ -232,31 +235,9 @@ async function getServer(context) {
|
|
|
232
235
|
server.setTimeout(2e4);
|
|
233
236
|
return server;
|
|
234
237
|
}
|
|
235
|
-
__name(getServer, "getServer");
|
|
236
238
|
|
|
237
239
|
// src/ApiActor.ts
|
|
238
|
-
function _ts_decorate(decorators, target, key, desc) {
|
|
239
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
240
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
241
|
-
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;
|
|
242
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
243
|
-
}
|
|
244
|
-
__name(_ts_decorate, "_ts_decorate");
|
|
245
240
|
var ApiActor = class extends ActorV3 {
|
|
246
|
-
static {
|
|
247
|
-
__name(this, "ApiActor");
|
|
248
|
-
}
|
|
249
|
-
static needs = {
|
|
250
|
-
required: [
|
|
251
|
-
AccountBalanceViewerMoniker,
|
|
252
|
-
BlockViewerMoniker,
|
|
253
|
-
FinalizationViewerMoniker,
|
|
254
|
-
MempoolViewerMoniker,
|
|
255
|
-
TransactionViewerMoniker,
|
|
256
|
-
XyoConnectionMoniker2,
|
|
257
|
-
XyoViewerMoniker
|
|
258
|
-
]
|
|
259
|
-
};
|
|
260
241
|
server;
|
|
261
242
|
async createHandler() {
|
|
262
243
|
await super.createHandler();
|
|
@@ -278,18 +259,33 @@ var ApiActor = class extends ActorV3 {
|
|
|
278
259
|
this.server = void 0;
|
|
279
260
|
}
|
|
280
261
|
};
|
|
281
|
-
ApiActor
|
|
262
|
+
__publicField(ApiActor, "needs", {
|
|
263
|
+
required: [
|
|
264
|
+
AccountBalanceViewerMoniker,
|
|
265
|
+
BlockViewerMoniker,
|
|
266
|
+
FinalizationViewerMoniker,
|
|
267
|
+
MempoolViewerMoniker,
|
|
268
|
+
TransactionViewerMoniker,
|
|
269
|
+
XyoConnectionMoniker2,
|
|
270
|
+
XyoViewerMoniker
|
|
271
|
+
]
|
|
272
|
+
});
|
|
273
|
+
ApiActor = __decorateClass([
|
|
282
274
|
creatable()
|
|
283
275
|
], ApiActor);
|
|
284
276
|
|
|
285
277
|
// src/command.ts
|
|
286
278
|
import { getFinalizerActor } from "@xyo-network/chain-finalizer";
|
|
287
279
|
import { getMempoolActor } from "@xyo-network/chain-mempool";
|
|
288
|
-
import {
|
|
280
|
+
import {
|
|
281
|
+
ApiConfigZod,
|
|
282
|
+
FinalizerConfigZod,
|
|
283
|
+
MempoolConfigZod
|
|
284
|
+
} from "@xyo-network/chain-orchestration";
|
|
289
285
|
|
|
290
286
|
// src/run.ts
|
|
291
287
|
import { initActorWallet } from "@xyo-network/chain-orchestration";
|
|
292
|
-
var getApiActor =
|
|
288
|
+
var getApiActor = async (config, locator) => {
|
|
293
289
|
const account = await initActorWallet({
|
|
294
290
|
config,
|
|
295
291
|
singletons: {},
|
|
@@ -301,16 +297,14 @@ var getApiActor = /* @__PURE__ */ __name(async (config, locator) => {
|
|
|
301
297
|
locator
|
|
302
298
|
};
|
|
303
299
|
return await ApiActor.create(params);
|
|
304
|
-
}
|
|
305
|
-
var runApi =
|
|
306
|
-
const actors = [
|
|
307
|
-
await getApiActor(config, locator)
|
|
308
|
-
];
|
|
300
|
+
};
|
|
301
|
+
var runApi = async (config, orchestrator, locator) => {
|
|
302
|
+
const actors = [await getApiActor(config, locator)];
|
|
309
303
|
for (const actor of actors) {
|
|
310
304
|
await orchestrator.registerActor(actor);
|
|
311
305
|
}
|
|
312
306
|
await orchestrator.start();
|
|
313
|
-
}
|
|
307
|
+
};
|
|
314
308
|
|
|
315
309
|
// src/command.ts
|
|
316
310
|
function apiCommand(getConfiguration, getLocatorsFromConfig) {
|
|
@@ -318,26 +312,26 @@ function apiCommand(getConfiguration, getLocatorsFromConfig) {
|
|
|
318
312
|
command: "api",
|
|
319
313
|
deprecated: 'Use "start api" instead',
|
|
320
314
|
describe: "Run a XL1 API Node",
|
|
321
|
-
handler:
|
|
315
|
+
handler: async () => {
|
|
322
316
|
const configuration = getConfiguration();
|
|
323
|
-
const { locators, orchestrator } = await getLocatorsFromConfig([
|
|
324
|
-
|
|
325
|
-
"
|
|
326
|
-
"
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
317
|
+
const { locators, orchestrator } = await getLocatorsFromConfig(["api", "mempool", "finalizer"], configuration);
|
|
318
|
+
const actors = await Promise.all([getApiActor(
|
|
319
|
+
ApiConfigZod.parse(locators["api"].context.config),
|
|
320
|
+
locators["api"]
|
|
321
|
+
), getMempoolActor(
|
|
322
|
+
MempoolConfigZod.parse(locators["mempool"].context.config),
|
|
323
|
+
locators["mempool"]
|
|
324
|
+
), getFinalizerActor(
|
|
325
|
+
FinalizerConfigZod.parse(locators["finalizer"].context.config),
|
|
326
|
+
locators["finalizer"]
|
|
327
|
+
)]);
|
|
333
328
|
for (const actor of actors) {
|
|
334
329
|
await orchestrator.registerActor(actor);
|
|
335
330
|
}
|
|
336
331
|
await orchestrator.start();
|
|
337
|
-
}
|
|
332
|
+
}
|
|
338
333
|
};
|
|
339
334
|
}
|
|
340
|
-
__name(apiCommand, "apiCommand");
|
|
341
335
|
export {
|
|
342
336
|
ApiActor,
|
|
343
337
|
apiCommand,
|
|
@@ -346,4 +340,4 @@ export {
|
|
|
346
340
|
getServer,
|
|
347
341
|
runApi
|
|
348
342
|
};
|
|
349
|
-
//# sourceMappingURL=index.mjs.map
|
|
343
|
+
//# sourceMappingURL=index.mjs.map
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1 +1,7 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ApiActor.ts","../../src/server/app.ts","../../src/server/instrumentation.ts","../../src/server/routes/livez/get.ts","../../src/server/routes/readyz/get.ts","../../src/server/routes/startupz/get.ts","../../src/server/routes/addProbeRoutes.ts","../../src/server/routes/dataLake/archivistMiddleware.ts","../../src/server/routes/dataLake/addDataLakeRoutes.ts","../../src/server/routes/rpc/routes/addRpcRoutes.ts","../../src/server/routes/rpc/connectionSubsetBySurface.ts","../../src/server/routes/addRoutes.ts","../../src/server/server.ts","../../src/command.ts","../../src/run.ts"],"sourcesContent":["import type { Server } from 'node:http'\n\nimport { creatable } from '@xylabs/sdk-js'\nimport type {\n ActorCapabilityNeeds, ActorParamsV3, ApiConfig,\n} from '@xyo-network/chain-orchestration'\nimport { ActorV3 } from '@xyo-network/chain-orchestration'\nimport {\n AccountBalanceViewerMoniker,\n asHostActorConfigContext,\n BlockViewerMoniker,\n FinalizationViewerMoniker,\n MempoolViewerMoniker,\n TransactionViewerMoniker,\n XyoConnectionMoniker,\n XyoViewerMoniker,\n} from '@xyo-network/xl1-sdk'\n\nimport { getServer } from './server/index.ts'\n\nexport type ApiActorParams = ActorParamsV3<{\n config: ApiConfig\n}>\n\n@creatable()\nexport class ApiActor extends ActorV3<ApiActorParams> {\n static readonly needs: ActorCapabilityNeeds = {\n required: [\n AccountBalanceViewerMoniker,\n BlockViewerMoniker,\n FinalizationViewerMoniker,\n MempoolViewerMoniker,\n TransactionViewerMoniker,\n XyoConnectionMoniker,\n XyoViewerMoniker,\n ],\n }\n\n private server?: Server\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(asHostActorConfigContext(this.context, true))\n }\n\n private stopServer() {\n this.server?.close()\n this.server = undefined\n }\n}\n","import { standardErrors } from '@xylabs/express'\nimport { sharedMiddleware } from '@xyo-network/chain-orchestration'\nimport type { HostActorConfigContext } from '@xyo-network/xl1-sdk'\nimport type { Express } from 'express'\nimport express from 'express'\n\nimport { addInstrumentation } from './instrumentation.ts'\nimport { addRoutes } from './routes/index.ts'\n\nexport const getApp = async (context: HostActorConfigContext): Promise<Express> => {\n addInstrumentation()\n const app = express()\n sharedMiddleware(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 { NoReqParams } from '@xylabs/express'\nimport { setRawResponseFormat } from '@xylabs/express'\nimport type { RequestHandler } from 'express'\nimport { ReasonPhrases } from 'http-status-codes'\n\nconst message = ReasonPhrases.OK\n\nconst handler: RequestHandler<NoReqParams> = (_req, res) => {\n setRawResponseFormat(res)\n res.status(200).send({ message })\n}\n\nexport const getLivez: RequestHandler<NoReqParams> = handler\n","import type { NoReqParams } from '@xylabs/express'\nimport { setRawResponseFormat } from '@xylabs/express'\nimport type { RequestHandler } from 'express'\nimport { ReasonPhrases } from 'http-status-codes'\n\nconst message = ReasonPhrases.OK\n\nconst handler: RequestHandler<NoReqParams> = (_req, res) => {\n setRawResponseFormat(res)\n res.status(200).send({ message })\n}\n\nexport const getReadyz: RequestHandler<NoReqParams> = handler\n","import type { NoReqParams } from '@xylabs/express'\nimport { setRawResponseFormat } from '@xylabs/express'\nimport type { RequestHandler } from 'express'\nimport { ReasonPhrases } from 'http-status-codes'\n\nconst message = ReasonPhrases.OK\n\nconst handler: RequestHandler<NoReqParams> = (_req, res) => {\n setRawResponseFormat(res)\n res.status(200).send({ message })\n}\n\nexport const getStartupz: RequestHandler<NoReqParams> = handler\n","import type { Express } from 'express'\n\nimport { getLivez } from './livez/index.ts'\nimport { getReadyz } from './readyz/index.ts'\nimport { getStartupz } from './startupz/index.ts'\n\nexport const addProbeRoutes = (app: Express) => {\n app.get('/livez', getLivez)\n app.get('/readyz', getReadyz)\n app.get('/startupz', getStartupz)\n}\n","import { setRawResponseFormat } from '@xylabs/express'\nimport { asHash, isDefined } from '@xylabs/sdk-js'\nimport type {\n ArchivistInstance,\n ArchivistNextOptions, ModuleIdentifier,\n NextOptions, NodeInstance, Payload,\n} from '@xyo-network/sdk-js'\nimport {\n asArchivistInstance, isAnyPayload, isSequence, PayloadBuilder,\n} from '@xyo-network/sdk-js'\nimport type { Request, Router } from 'express'\nimport express from 'express'\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\ninterface 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 { ApiConfigContext } from '@xyo-network/chain-orchestration'\nimport type { XyoConnection } from '@xyo-network/xl1-sdk'\nimport { rpcServerFromConnection, XyoConnectionMoniker } from '@xyo-network/xl1-sdk'\nimport type { Express } from 'express'\n\nimport { connectionSubsetBySurface } from '../connectionSubsetBySurface.ts'\n\n/**\n * Mounts the JSON-RPC route(s) on the Express app.\n *\n * Two endpoints are exposed:\n * - `POST /rpc` — gated by `ApiConfig.legacyMixedRpc`:\n * - `legacyMixedRpc=true` (default): serves the full `XyoConnection`\n * including indexed-surface methods (stake/networkStake/step). Preserves\n * pre-Phase-7 behavior for clients that haven't migrated to `/rpc/indexed`.\n * - `legacyMixedRpc=false`: serves only node-surface methods\n * (block, transaction, mempool, finality, account-balance, time-sync).\n * - `POST /rpc/indexed` — indexed-surface methods only (cross-key/aggregate\n * queries). Mounted independently of `legacyMixedRpc` whenever the locator's\n * connection has indexed branches; omitted otherwise to keep the advertised\n * surface honest.\n *\n * Both endpoints share the same underlying `XyoConnection`; surface filters\n * are applied via `connectionSubsetBySurface` immediately before constructing\n * each endpoint's RPC server. The downstream `rpcMethodHandlersFromConnection`\n * walker doesn't need to know about surfaces — it naturally produces a smaller\n * method set when handed a smaller connection.\n */\nexport const addRpcRoutes = async (\n app: Express,\n) => {\n const { context } = app\n const { locator } = context\n const apiConfig = (context as unknown as ApiConfigContext).config\n const useLegacyMixed = apiConfig.legacyMixedRpc !== false\n\n const connection = await locator.getInstance<XyoConnection>(XyoConnectionMoniker)\n const indexedPresent = hasAnyIndexedBranch(connection)\n\n if (useLegacyMixed && indexedPresent) {\n context.logger?.warn(\n '[api] /rpc is serving indexed methods (LEGACY_MIXED_RPC=true). '\n + 'Indexed clients should migrate to /rpc/indexed; flip XL1_ACTORS__API__LEGACY_MIXED_RPC=false to enforce strict node-surface-only at /rpc.',\n )\n }\n\n const rpcConnection = useLegacyMixed ? connection : connectionSubsetBySurface(connection, 'node')\n const rpcServer = rpcServerFromConnection(rpcConnection)\n app.post('/rpc', async (req, res) => {\n setRawResponseFormat(res)\n const rpcResponse = await rpcServer.handle(req.body)\n res.json(rpcResponse)\n })\n\n if (indexedPresent) {\n const indexedConnection = connectionSubsetBySurface(connection, 'indexed')\n const indexedRpcServer = rpcServerFromConnection(indexedConnection)\n app.post('/rpc/indexed', async (req, res) => {\n setRawResponseFormat(res)\n const rpcResponse = await indexedRpcServer.handle(req.body)\n res.json(rpcResponse)\n })\n }\n}\n\nfunction hasAnyIndexedBranch(connection: XyoConnection): boolean {\n if (connection.networkStake) return true\n if (connection.storage) return true\n if (connection.viewer) {\n const v = connection.viewer\n if (v.networkStake || v.stake || v.step) return true\n }\n return false\n}\n","/**\n * The canonical implementation of `connectionSubsetBySurface` lives in\n * `@xyo-network/xl1-protocol-sdk` (re-exported via `@xyo-network/xl1-sdk`).\n * This file re-exports it so existing imports inside this package keep\n * working without churn.\n */\nexport { connectionSubsetBySurface } from '@xyo-network/xl1-sdk'\n","import type { Express } from 'express'\n\nimport { addProbeRoutes } from './addProbeRoutes.ts'\nimport { addDataLakeRoutes } from './dataLake/index.ts'\nimport { addRpcRoutes } from './rpc/index.ts'\n\nexport const addRoutes = async (\n app: Express,\n) => {\n addProbeRoutes(app)\n await addRpcRoutes(app)\n addDataLakeRoutes(app)\n}\n","import type { HostActorConfigContext } from '@xyo-network/xl1-sdk'\n\nimport { getApp } from './app.ts'\n\nconst hostname = '::'\n\nexport async function getServer(context: HostActorConfigContext) {\n const { logger, config } = context\n const { port } = config\n\n const app = await getApp(context)\n const server = await new Promise<ReturnType<typeof app.listen>>((resolve, reject) => {\n const srv = app.listen(port, hostname, () => {\n logger?.info(`[API] Server listening at http://${hostname}:${port}`)\n resolve(srv)\n })\n srv.once('error', reject)\n })\n server.setTimeout(20_000)\n return server\n}\n","import { getFinalizerActor } from '@xyo-network/chain-finalizer'\nimport { getMempoolActor } from '@xyo-network/chain-mempool'\nimport type { GetLocatorsFromConfig } from '@xyo-network/chain-orchestration'\nimport {\n ApiConfigZod, FinalizerConfigZod,\n MempoolConfigZod,\n} from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport type { CommandModule } from 'yargs'\n\nimport { getApiActor } from './run.ts'\n\nexport function apiCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: 'api',\n deprecated: 'Use \"start api\" instead',\n describe: 'Run a XL1 API Node',\n handler: async () => {\n const configuration = getConfiguration()\n const { locators, orchestrator } = await getLocatorsFromConfig(['api', 'mempool', 'finalizer'], configuration)\n const actors = await Promise.all([getApiActor(\n ApiConfigZod.parse(locators['api'].context.config),\n locators['api'],\n ), getMempoolActor(\n MempoolConfigZod.parse(locators['mempool'].context.config),\n locators['mempool'],\n ), getFinalizerActor(\n FinalizerConfigZod.parse(locators['finalizer'].context.config),\n locators['finalizer'],\n )])\n\n for (const actor of actors) {\n await orchestrator.registerActor(actor)\n }\n\n await orchestrator.start()\n },\n }\n}\n","import type { ApiConfig, OrchestratorInstance } from '@xyo-network/chain-orchestration'\nimport { initActorWallet } from '@xyo-network/chain-orchestration'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\n\nimport { ApiActor } from './ApiActor.ts'\n\nexport const getApiActor = async (\n config: ApiConfig,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const account = await initActorWallet({\n config, singletons: {}, caches: {},\n })\n const params = {\n account, config, locator,\n }\n // Create actors\n return await ApiActor.create(params)\n}\n\nexport const runApi = async (\n config: ApiConfig,\n orchestrator: OrchestratorInstance,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const actors = [await getApiActor(config, locator)]\n\n // Register the actors with the orchestrator\n for (const actor of actors) {\n await orchestrator.registerActor(actor)\n }\n\n // Start the orchestrator => automatically activates the actors\n await orchestrator.start()\n}\n"],"mappings":"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","names":["creatable","ActorV3","AccountBalanceViewerMoniker","asHostActorConfigContext","BlockViewerMoniker","FinalizationViewerMoniker","MempoolViewerMoniker","TransactionViewerMoniker","XyoConnectionMoniker","XyoViewerMoniker","standardErrors","sharedMiddleware","express","registerInstrumentations","ExpressInstrumentation","HttpInstrumentation","addInstrumentation","instrumentations","HttpInstrumentation","ExpressInstrumentation","registerInstrumentations","setRawResponseFormat","ReasonPhrases","message","ReasonPhrases","OK","handler","_req","res","setRawResponseFormat","status","send","getLivez","setRawResponseFormat","ReasonPhrases","message","ReasonPhrases","OK","handler","_req","res","setRawResponseFormat","status","send","getReadyz","setRawResponseFormat","ReasonPhrases","message","ReasonPhrases","OK","handler","_req","res","setRawResponseFormat","status","send","getStartupz","addProbeRoutes","app","get","getLivez","getReadyz","getStartupz","setRawResponseFormat","asHash","isDefined","asArchivistInstance","isAnyPayload","isSequence","PayloadBuilder","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","rpcServerFromConnection","XyoConnectionMoniker","connectionSubsetBySurface","addRpcRoutes","app","context","locator","apiConfig","config","useLegacyMixed","legacyMixedRpc","connection","getInstance","XyoConnectionMoniker","indexedPresent","hasAnyIndexedBranch","logger","warn","rpcConnection","connectionSubsetBySurface","rpcServer","rpcServerFromConnection","post","req","res","setRawResponseFormat","rpcResponse","handle","body","json","indexedConnection","indexedRpcServer","networkStake","storage","viewer","v","stake","step","addRoutes","app","addProbeRoutes","addRpcRoutes","addDataLakeRoutes","getApp","context","addInstrumentation","app","express","sharedMiddleware","addRoutes","use","standardErrors","hostname","getServer","context","logger","config","port","app","getApp","server","Promise","resolve","reject","srv","listen","info","once","setTimeout","ApiActor","ActorV3","needs","required","AccountBalanceViewerMoniker","BlockViewerMoniker","FinalizationViewerMoniker","MempoolViewerMoniker","TransactionViewerMoniker","XyoConnectionMoniker","XyoViewerMoniker","server","createHandler","startHandler","stopServer","startServer","stopHandler","getServer","asHostActorConfigContext","context","close","undefined","getFinalizerActor","getMempoolActor","ApiConfigZod","FinalizerConfigZod","MempoolConfigZod","initActorWallet","getApiActor","config","locator","account","initActorWallet","singletons","caches","params","ApiActor","create","runApi","orchestrator","actors","actor","registerActor","start","apiCommand","getConfiguration","getLocatorsFromConfig","command","deprecated","describe","handler","configuration","locators","orchestrator","actors","Promise","all","getApiActor","ApiConfigZod","parse","context","config","getMempoolActor","MempoolConfigZod","getFinalizerActor","FinalizerConfigZod","actor","registerActor","start"]}
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/ApiActor.ts", "../../src/server/app.ts", "../../src/server/instrumentation.ts", "../../src/server/routes/livez/get.ts", "../../src/server/routes/readyz/get.ts", "../../src/server/routes/startupz/get.ts", "../../src/server/routes/addProbeRoutes.ts", "../../src/server/routes/dataLake/archivistMiddleware.ts", "../../src/server/routes/dataLake/addDataLakeRoutes.ts", "../../src/server/routes/rpc/routes/addRpcRoutes.ts", "../../src/server/routes/rpc/connectionSubsetBySurface.ts", "../../src/server/routes/addRoutes.ts", "../../src/server/server.ts", "../../src/command.ts", "../../src/run.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Server } from 'node:http'\n\nimport { creatable } from '@xylabs/sdk-js'\nimport type {\n ActorCapabilityNeeds, ActorParamsV3, ApiConfig,\n} from '@xyo-network/chain-orchestration'\nimport { ActorV3 } from '@xyo-network/chain-orchestration'\nimport {\n AccountBalanceViewerMoniker,\n asHostActorConfigContext,\n BlockViewerMoniker,\n FinalizationViewerMoniker,\n MempoolViewerMoniker,\n TransactionViewerMoniker,\n XyoConnectionMoniker,\n XyoViewerMoniker,\n} from '@xyo-network/xl1-sdk'\n\nimport { getServer } from './server/index.ts'\n\nexport type ApiActorParams = ActorParamsV3<{\n config: ApiConfig\n}>\n\n@creatable()\nexport class ApiActor extends ActorV3<ApiActorParams> {\n static readonly needs: ActorCapabilityNeeds = {\n required: [\n AccountBalanceViewerMoniker,\n BlockViewerMoniker,\n FinalizationViewerMoniker,\n MempoolViewerMoniker,\n TransactionViewerMoniker,\n XyoConnectionMoniker,\n XyoViewerMoniker,\n ],\n }\n\n private server?: Server\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(asHostActorConfigContext(this.context, true))\n }\n\n private stopServer() {\n this.server?.close()\n this.server = undefined\n }\n}\n", "import { standardErrors } from '@xylabs/express'\nimport { sharedMiddleware } from '@xyo-network/chain-orchestration'\nimport type { HostActorConfigContext } from '@xyo-network/xl1-sdk'\nimport type { Express } from 'express'\nimport express from 'express'\n\nimport { addInstrumentation } from './instrumentation.ts'\nimport { addRoutes } from './routes/index.ts'\n\nexport const getApp = async (context: HostActorConfigContext): Promise<Express> => {\n addInstrumentation()\n const app = express()\n sharedMiddleware(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 { NoReqParams } from '@xylabs/express'\nimport { setRawResponseFormat } from '@xylabs/express'\nimport type { RequestHandler } from 'express'\nimport { ReasonPhrases } from 'http-status-codes'\n\nconst message = ReasonPhrases.OK\n\nconst handler: RequestHandler<NoReqParams> = (_req, res) => {\n setRawResponseFormat(res)\n res.status(200).send({ message })\n}\n\nexport const getLivez: RequestHandler<NoReqParams> = handler\n", "import type { NoReqParams } from '@xylabs/express'\nimport { setRawResponseFormat } from '@xylabs/express'\nimport type { RequestHandler } from 'express'\nimport { ReasonPhrases } from 'http-status-codes'\n\nconst message = ReasonPhrases.OK\n\nconst handler: RequestHandler<NoReqParams> = (_req, res) => {\n setRawResponseFormat(res)\n res.status(200).send({ message })\n}\n\nexport const getReadyz: RequestHandler<NoReqParams> = handler\n", "import type { NoReqParams } from '@xylabs/express'\nimport { setRawResponseFormat } from '@xylabs/express'\nimport type { RequestHandler } from 'express'\nimport { ReasonPhrases } from 'http-status-codes'\n\nconst message = ReasonPhrases.OK\n\nconst handler: RequestHandler<NoReqParams> = (_req, res) => {\n setRawResponseFormat(res)\n res.status(200).send({ message })\n}\n\nexport const getStartupz: RequestHandler<NoReqParams> = handler\n", "import type { Express } from 'express'\n\nimport { getLivez } from './livez/index.ts'\nimport { getReadyz } from './readyz/index.ts'\nimport { getStartupz } from './startupz/index.ts'\n\nexport const addProbeRoutes = (app: Express) => {\n app.get('/livez', getLivez)\n app.get('/readyz', getReadyz)\n app.get('/startupz', getStartupz)\n}\n", "import { setRawResponseFormat } from '@xylabs/express'\nimport { asHash, isDefined } from '@xylabs/sdk-js'\nimport type {\n ArchivistInstance,\n ArchivistNextOptions, ModuleIdentifier,\n NextOptions, NodeInstance, Payload,\n} from '@xyo-network/sdk-js'\nimport {\n asArchivistInstance, isAnyPayload, isSequence, PayloadBuilder,\n} from '@xyo-network/sdk-js'\nimport type { Request, Router } from 'express'\nimport express from 'express'\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\ninterface 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 { ApiConfigContext } from '@xyo-network/chain-orchestration'\nimport type { XyoConnection } from '@xyo-network/xl1-sdk'\nimport { rpcServerFromConnection, XyoConnectionMoniker } from '@xyo-network/xl1-sdk'\nimport type { Express } from 'express'\n\nimport { connectionSubsetBySurface } from '../connectionSubsetBySurface.ts'\n\n/**\n * Mounts the JSON-RPC route(s) on the Express app.\n *\n * Two endpoints are exposed:\n * - `POST /rpc` \u2014 gated by `ApiConfig.legacyMixedRpc`:\n * - `legacyMixedRpc=true` (default): serves the full `XyoConnection`\n * including indexed-surface methods (stake/networkStake/step). Preserves\n * pre-Phase-7 behavior for clients that haven't migrated to `/rpc/indexed`.\n * - `legacyMixedRpc=false`: serves only node-surface methods\n * (block, transaction, mempool, finality, account-balance, time-sync).\n * - `POST /rpc/indexed` \u2014 indexed-surface methods only (cross-key/aggregate\n * queries). Mounted independently of `legacyMixedRpc` whenever the locator's\n * connection has indexed branches; omitted otherwise to keep the advertised\n * surface honest.\n *\n * Both endpoints share the same underlying `XyoConnection`; surface filters\n * are applied via `connectionSubsetBySurface` immediately before constructing\n * each endpoint's RPC server. The downstream `rpcMethodHandlersFromConnection`\n * walker doesn't need to know about surfaces \u2014 it naturally produces a smaller\n * method set when handed a smaller connection.\n */\nexport const addRpcRoutes = async (\n app: Express,\n) => {\n const { context } = app\n const { locator } = context\n const apiConfig = (context as unknown as ApiConfigContext).config\n const useLegacyMixed = apiConfig.legacyMixedRpc !== false\n\n const connection = await locator.getInstance<XyoConnection>(XyoConnectionMoniker)\n const indexedPresent = hasAnyIndexedBranch(connection)\n\n if (useLegacyMixed && indexedPresent) {\n context.logger?.warn(\n '[api] /rpc is serving indexed methods (LEGACY_MIXED_RPC=true). '\n + 'Indexed clients should migrate to /rpc/indexed; flip XL1_ACTORS__API__LEGACY_MIXED_RPC=false to enforce strict node-surface-only at /rpc.',\n )\n }\n\n const rpcConnection = useLegacyMixed ? connection : connectionSubsetBySurface(connection, 'node')\n const rpcServer = rpcServerFromConnection(rpcConnection)\n app.post('/rpc', async (req, res) => {\n setRawResponseFormat(res)\n const rpcResponse = await rpcServer.handle(req.body)\n res.json(rpcResponse)\n })\n\n if (indexedPresent) {\n const indexedConnection = connectionSubsetBySurface(connection, 'indexed')\n const indexedRpcServer = rpcServerFromConnection(indexedConnection)\n app.post('/rpc/indexed', async (req, res) => {\n setRawResponseFormat(res)\n const rpcResponse = await indexedRpcServer.handle(req.body)\n res.json(rpcResponse)\n })\n }\n}\n\nfunction hasAnyIndexedBranch(connection: XyoConnection): boolean {\n if (connection.networkStake) return true\n if (connection.storage) return true\n if (connection.viewer) {\n const v = connection.viewer\n if (v.networkStake || v.stake || v.step) return true\n }\n return false\n}\n", "/**\n * The canonical implementation of `connectionSubsetBySurface` lives in\n * `@xyo-network/xl1-protocol-sdk` (re-exported via `@xyo-network/xl1-sdk`).\n * This file re-exports it so existing imports inside this package keep\n * working without churn.\n */\nexport { connectionSubsetBySurface } from '@xyo-network/xl1-sdk'\n", "import type { Express } from 'express'\n\nimport { addProbeRoutes } from './addProbeRoutes.ts'\nimport { addDataLakeRoutes } from './dataLake/index.ts'\nimport { addRpcRoutes } from './rpc/index.ts'\n\nexport const addRoutes = async (\n app: Express,\n) => {\n addProbeRoutes(app)\n await addRpcRoutes(app)\n addDataLakeRoutes(app)\n}\n", "import type { HostActorConfigContext } from '@xyo-network/xl1-sdk'\n\nimport { getApp } from './app.ts'\n\nconst hostname = '::'\n\nexport async function getServer(context: HostActorConfigContext) {\n const { logger, config } = context\n const { port } = config\n\n const app = await getApp(context)\n const server = await new Promise<ReturnType<typeof app.listen>>((resolve, reject) => {\n const srv = app.listen(port, hostname, () => {\n logger?.info(`[API] Server listening at http://${hostname}:${port}`)\n resolve(srv)\n })\n srv.once('error', reject)\n })\n server.setTimeout(20_000)\n return server\n}\n", "import { getFinalizerActor } from '@xyo-network/chain-finalizer'\nimport { getMempoolActor } from '@xyo-network/chain-mempool'\nimport type { GetLocatorsFromConfig } from '@xyo-network/chain-orchestration'\nimport {\n ApiConfigZod, FinalizerConfigZod,\n MempoolConfigZod,\n} from '@xyo-network/chain-orchestration'\nimport type { Config } from '@xyo-network/xl1-sdk'\nimport type { CommandModule } from 'yargs'\n\nimport { getApiActor } from './run.ts'\n\nexport function apiCommand(getConfiguration: () => Config, getLocatorsFromConfig: GetLocatorsFromConfig): CommandModule {\n return {\n command: 'api',\n deprecated: 'Use \"start api\" instead',\n describe: 'Run a XL1 API Node',\n handler: async () => {\n const configuration = getConfiguration()\n const { locators, orchestrator } = await getLocatorsFromConfig(['api', 'mempool', 'finalizer'], configuration)\n const actors = await Promise.all([getApiActor(\n ApiConfigZod.parse(locators['api'].context.config),\n locators['api'],\n ), getMempoolActor(\n MempoolConfigZod.parse(locators['mempool'].context.config),\n locators['mempool'],\n ), getFinalizerActor(\n FinalizerConfigZod.parse(locators['finalizer'].context.config),\n locators['finalizer'],\n )])\n\n for (const actor of actors) {\n await orchestrator.registerActor(actor)\n }\n\n await orchestrator.start()\n },\n }\n}\n", "import type { ApiConfig, OrchestratorInstance } from '@xyo-network/chain-orchestration'\nimport { initActorWallet } from '@xyo-network/chain-orchestration'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\n\nimport { ApiActor } from './ApiActor.ts'\n\nexport const getApiActor = async (\n config: ApiConfig,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const account = await initActorWallet({\n config, singletons: {}, caches: {},\n })\n const params = {\n account, config, locator,\n }\n // Create actors\n return await ApiActor.create(params)\n}\n\nexport const runApi = async (\n config: ApiConfig,\n orchestrator: OrchestratorInstance,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const actors = [await getApiActor(config, locator)]\n\n // Register the actors with the orchestrator\n for (const actor of actors) {\n await orchestrator.registerActor(actor)\n }\n\n // Start the orchestrator => automatically activates the actors\n await orchestrator.start()\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["XyoConnectionMoniker", "express", "setRawResponseFormat", "ReasonPhrases", "message", "handler", "setRawResponseFormat", "ReasonPhrases", "message", "handler", "setRawResponseFormat", "options", "setRawResponseFormat", "setRawResponseFormat", "express", "XyoConnectionMoniker"]
|
|
7
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/chain-api",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.23.2",
|
|
4
4
|
"description": "XYO Layer One API",
|
|
5
5
|
"homepage": "https://xylabs.com",
|
|
6
6
|
"bugs": {
|
|
@@ -35,35 +35,35 @@
|
|
|
35
35
|
"README.md"
|
|
36
36
|
],
|
|
37
37
|
"dependencies": {
|
|
38
|
-
"@xyo-network/chain-finalizer": "~1.
|
|
39
|
-
"@xyo-network/chain-
|
|
40
|
-
"@xyo-network/chain-
|
|
38
|
+
"@xyo-network/chain-finalizer": "~1.23.2",
|
|
39
|
+
"@xyo-network/chain-orchestration": "~1.23.2",
|
|
40
|
+
"@xyo-network/chain-mempool": "~1.23.2"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
43
|
"@bitauth/libauth": "~3.0.0",
|
|
44
|
-
"@metamask/json-rpc-engine": "^10.
|
|
44
|
+
"@metamask/json-rpc-engine": "^10.5.0",
|
|
45
45
|
"@metamask/providers": "^22.1.1",
|
|
46
46
|
"@metamask/utils": "~11.11.0",
|
|
47
47
|
"@opentelemetry/api": "^1.9.1",
|
|
48
48
|
"@opentelemetry/context-async-hooks": "~2.7.1",
|
|
49
49
|
"@opentelemetry/context-zone": "~2.7.1",
|
|
50
50
|
"@opentelemetry/core": "~2.7.1",
|
|
51
|
-
"@opentelemetry/exporter-prometheus": "~0.
|
|
52
|
-
"@opentelemetry/exporter-trace-otlp-grpc": "~0.
|
|
53
|
-
"@opentelemetry/exporter-trace-otlp-http": "~0.
|
|
51
|
+
"@opentelemetry/exporter-prometheus": "~0.218",
|
|
52
|
+
"@opentelemetry/exporter-trace-otlp-grpc": "~0.218",
|
|
53
|
+
"@opentelemetry/exporter-trace-otlp-http": "~0.218",
|
|
54
54
|
"@opentelemetry/host-metrics": "~0.38.3",
|
|
55
|
-
"@opentelemetry/instrumentation": "~0.
|
|
56
|
-
"@opentelemetry/instrumentation-express": "~0.
|
|
57
|
-
"@opentelemetry/instrumentation-http": "~0.
|
|
58
|
-
"@opentelemetry/instrumentation-runtime-node": "~0.
|
|
55
|
+
"@opentelemetry/instrumentation": "~0.218",
|
|
56
|
+
"@opentelemetry/instrumentation-express": "~0.66",
|
|
57
|
+
"@opentelemetry/instrumentation-http": "~0.218",
|
|
58
|
+
"@opentelemetry/instrumentation-runtime-node": "~0.31",
|
|
59
59
|
"@opentelemetry/resources": "~2.7.1",
|
|
60
60
|
"@opentelemetry/sdk-metrics": "~2.7.1",
|
|
61
61
|
"@opentelemetry/sdk-trace-base": "^2.7.1",
|
|
62
|
-
"@opentelemetry/semantic-conventions": "~1.
|
|
62
|
+
"@opentelemetry/semantic-conventions": "~1.41.1",
|
|
63
63
|
"@scure/base": "~2.2.0",
|
|
64
64
|
"@scure/bip39": "~2.2.0",
|
|
65
65
|
"@types/express": "^5.0.6",
|
|
66
|
-
"@types/node": "^25.
|
|
66
|
+
"@types/node": "^25.7.0",
|
|
67
67
|
"@types/yargs": "^17.0.35",
|
|
68
68
|
"@xylabs/express": "^5.1.2",
|
|
69
69
|
"@xylabs/fetch": "~5.1.2",
|
|
@@ -71,8 +71,8 @@
|
|
|
71
71
|
"@xylabs/mongo": "^5.1.2",
|
|
72
72
|
"@xylabs/sdk-js": "^5.1.2",
|
|
73
73
|
"@xylabs/threads": "~5.1.2",
|
|
74
|
-
"@xylabs/toolchain": "~
|
|
75
|
-
"@xylabs/tsconfig": "~
|
|
74
|
+
"@xylabs/toolchain": "~8.0.4",
|
|
75
|
+
"@xylabs/tsconfig": "~8.0.4",
|
|
76
76
|
"@xyo-network/account": "~5.6.2",
|
|
77
77
|
"@xyo-network/account-model": "~5.6.3",
|
|
78
78
|
"@xyo-network/api": "~5.6.2",
|
|
@@ -97,12 +97,10 @@
|
|
|
97
97
|
"@xyo-network/typechain": "^4.1.3",
|
|
98
98
|
"@xyo-network/wallet": "~5.6.2",
|
|
99
99
|
"@xyo-network/wallet-model": "^5.6.3",
|
|
100
|
-
"@xyo-network/xl1-protocol-sdk": "~1.
|
|
101
|
-
"@xyo-network/xl1-sdk": "^1.
|
|
102
|
-
"acorn": "^8",
|
|
100
|
+
"@xyo-network/xl1-protocol-sdk": "~1.30.2",
|
|
101
|
+
"@xyo-network/xl1-sdk": "^1.30.2",
|
|
103
102
|
"ajv": "^8.20.0",
|
|
104
103
|
"async-mutex": "^0.5.0",
|
|
105
|
-
"axios": "^1",
|
|
106
104
|
"bn.js": "^5.2.3",
|
|
107
105
|
"body-parser": "~2.2.2",
|
|
108
106
|
"buffer": "^6.0.3",
|
|
@@ -117,7 +115,6 @@
|
|
|
117
115
|
"ethers": "^6.16.0",
|
|
118
116
|
"express": "^5.2.1",
|
|
119
117
|
"express-mung": "~0.5.1",
|
|
120
|
-
"firebase": "^12",
|
|
121
118
|
"hash-wasm": "~4.12.0",
|
|
122
119
|
"http-status-codes": "~2.3.0",
|
|
123
120
|
"idb": "^8.0.3",
|
|
@@ -129,22 +126,20 @@
|
|
|
129
126
|
"observable-fns": "~0.6.1",
|
|
130
127
|
"pako": "^2.1.0",
|
|
131
128
|
"rollbar": "^3.1.0",
|
|
132
|
-
"rollup": "^3.29.4 || ^4",
|
|
133
129
|
"shallowequal": "~1.1.0",
|
|
134
130
|
"store2": "~2.14.4",
|
|
135
131
|
"tslib": "^2.8.1",
|
|
136
|
-
"typescript": "~
|
|
132
|
+
"typescript": "~6.0.3",
|
|
137
133
|
"uuid": "~14.0.0",
|
|
138
|
-
"vite": "^8.0.
|
|
139
|
-
"vitest": "^4.1.
|
|
134
|
+
"vite": "^8.0.13",
|
|
135
|
+
"vitest": "^4.1.6",
|
|
140
136
|
"wasm-feature-detect": "~1.8.0",
|
|
141
137
|
"web3-types": "~1.10.0",
|
|
142
138
|
"webextension-polyfill": "^0.12.0",
|
|
143
139
|
"winston": "~3.19.0",
|
|
144
140
|
"winston-transport": "~4.9.0",
|
|
145
141
|
"yargs": "~18.0.0",
|
|
146
|
-
"zod": "~4.4.3"
|
|
147
|
-
"zone.js": "^0.10.2 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0 || ^0.15.0 || ^0.16.0"
|
|
142
|
+
"zod": "~4.4.3"
|
|
148
143
|
},
|
|
149
144
|
"peerDependencies": {
|
|
150
145
|
"@bitauth/libauth": "~3.0",
|
|
@@ -155,18 +150,18 @@
|
|
|
155
150
|
"@opentelemetry/context-async-hooks": "~2.7",
|
|
156
151
|
"@opentelemetry/context-zone": "~2.7",
|
|
157
152
|
"@opentelemetry/core": "~2.7",
|
|
158
|
-
"@opentelemetry/exporter-prometheus": "~0.
|
|
159
|
-
"@opentelemetry/exporter-trace-otlp-grpc": "~0.
|
|
160
|
-
"@opentelemetry/exporter-trace-otlp-http": "~0.
|
|
153
|
+
"@opentelemetry/exporter-prometheus": "~0.218",
|
|
154
|
+
"@opentelemetry/exporter-trace-otlp-grpc": "~0.218",
|
|
155
|
+
"@opentelemetry/exporter-trace-otlp-http": "~0.218",
|
|
161
156
|
"@opentelemetry/host-metrics": "~0.38",
|
|
162
|
-
"@opentelemetry/instrumentation": "~0.
|
|
163
|
-
"@opentelemetry/instrumentation-express": "~0.
|
|
164
|
-
"@opentelemetry/instrumentation-http": "~0.
|
|
165
|
-
"@opentelemetry/instrumentation-runtime-node": "~0.
|
|
157
|
+
"@opentelemetry/instrumentation": "~0.218",
|
|
158
|
+
"@opentelemetry/instrumentation-express": "~0.66",
|
|
159
|
+
"@opentelemetry/instrumentation-http": "~0.218",
|
|
160
|
+
"@opentelemetry/instrumentation-runtime-node": "~0.31",
|
|
166
161
|
"@opentelemetry/resources": "~2.7",
|
|
167
162
|
"@opentelemetry/sdk-metrics": "~2.7",
|
|
168
163
|
"@opentelemetry/sdk-trace-base": "^2.7",
|
|
169
|
-
"@opentelemetry/semantic-conventions": "~1.
|
|
164
|
+
"@opentelemetry/semantic-conventions": "~1.41",
|
|
170
165
|
"@scure/base": "~2.2",
|
|
171
166
|
"@scure/bip39": "~2.2",
|
|
172
167
|
"@xylabs/express": "^5.1",
|
|
@@ -199,12 +194,10 @@
|
|
|
199
194
|
"@xyo-network/typechain": "^4.1",
|
|
200
195
|
"@xyo-network/wallet": "~5.6",
|
|
201
196
|
"@xyo-network/wallet-model": "^5.6",
|
|
202
|
-
"@xyo-network/xl1-protocol-sdk": "~1.
|
|
197
|
+
"@xyo-network/xl1-protocol-sdk": "~1.30.1",
|
|
203
198
|
"@xyo-network/xl1-sdk": "^1.28",
|
|
204
|
-
"acorn": "^8",
|
|
205
199
|
"ajv": "^8.20",
|
|
206
200
|
"async-mutex": "^0.5",
|
|
207
|
-
"axios": "^1",
|
|
208
201
|
"bn.js": "^5.2",
|
|
209
202
|
"body-parser": "~2.2",
|
|
210
203
|
"buffer": "^6.0",
|
|
@@ -217,7 +210,6 @@
|
|
|
217
210
|
"ethers": "^6.16",
|
|
218
211
|
"express": "^5.2",
|
|
219
212
|
"express-mung": "~0.5",
|
|
220
|
-
"firebase": "^12",
|
|
221
213
|
"hash-wasm": "~4.12",
|
|
222
214
|
"http-status-codes": "~2.3",
|
|
223
215
|
"idb": "^8.0",
|
|
@@ -237,8 +229,7 @@
|
|
|
237
229
|
"winston": "~3.19",
|
|
238
230
|
"winston-transport": "~4.9",
|
|
239
231
|
"yargs": "~18.0",
|
|
240
|
-
"zod": "~4.4"
|
|
241
|
-
"zone.js": "^0.10.2 || ^0.11.0 || ^0.12.0 || ^0.13.0 || ^0.14.0 || ^0.15.0 || ^0.16.0"
|
|
232
|
+
"zod": "~4.4"
|
|
242
233
|
},
|
|
243
234
|
"engines": {
|
|
244
235
|
"node": ">=24"
|