@xyo-network/chain-api 1.11.0 → 1.12.1
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 +152 -116
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/server/routes/address/get/get.d.ts +1 -1
- package/dist/node/server/routes/address/get/get.d.ts.map +1 -1
- package/dist/node/server/routes/address/post/post.d.ts +1 -1
- package/dist/node/server/routes/address/post/post.d.ts.map +1 -1
- package/dist/node/server/routes/healthz/get.d.ts +1 -1
- package/dist/node/server/routes/healthz/get.d.ts.map +1 -1
- package/package.json +42 -43
package/dist/node/index.mjs
CHANGED
|
@@ -1,25 +1,8 @@
|
|
|
1
1
|
var __defProp = Object.defineProperty;
|
|
2
|
-
var
|
|
3
|
-
var __decorateClass = (decorators, target, key, kind) => {
|
|
4
|
-
var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
|
|
5
|
-
for (var i = decorators.length - 1, decorator; i >= 0; i--)
|
|
6
|
-
if (decorator = decorators[i])
|
|
7
|
-
result = (kind ? decorator(target, key, result) : decorator(result)) || result;
|
|
8
|
-
if (kind && result) __defProp(target, key, result);
|
|
9
|
-
return result;
|
|
10
|
-
};
|
|
2
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
11
3
|
|
|
12
4
|
// src/server/app.ts
|
|
13
|
-
import {
|
|
14
|
-
customPoweredByHeader,
|
|
15
|
-
disableCaseSensitiveRouting,
|
|
16
|
-
disableExpressDefaultPoweredByHeader,
|
|
17
|
-
getJsonBodyParser,
|
|
18
|
-
getJsonBodyParserOptions,
|
|
19
|
-
responseProfiler,
|
|
20
|
-
standardErrors,
|
|
21
|
-
standardResponses
|
|
22
|
-
} from "@xylabs/express";
|
|
5
|
+
import { customPoweredByHeader, disableCaseSensitiveRouting, disableExpressDefaultPoweredByHeader, getJsonBodyParser, getJsonBodyParserOptions, responseProfiler, standardErrors, standardResponses } from "@xylabs/express";
|
|
23
6
|
import compression from "compression";
|
|
24
7
|
import cors from "cors";
|
|
25
8
|
import express2 from "express";
|
|
@@ -28,10 +11,15 @@ import express2 from "express";
|
|
|
28
11
|
import { registerInstrumentations } from "@opentelemetry/instrumentation";
|
|
29
12
|
import { ExpressInstrumentation } from "@opentelemetry/instrumentation-express";
|
|
30
13
|
import { HttpInstrumentation } from "@opentelemetry/instrumentation-http";
|
|
31
|
-
var addInstrumentation = () => {
|
|
32
|
-
const instrumentations = [
|
|
33
|
-
|
|
34
|
-
|
|
14
|
+
var addInstrumentation = /* @__PURE__ */ __name(() => {
|
|
15
|
+
const instrumentations = [
|
|
16
|
+
new HttpInstrumentation(),
|
|
17
|
+
new ExpressInstrumentation()
|
|
18
|
+
];
|
|
19
|
+
registerInstrumentations({
|
|
20
|
+
instrumentations
|
|
21
|
+
});
|
|
22
|
+
}, "addInstrumentation");
|
|
35
23
|
|
|
36
24
|
// src/server/routes/address/addNodeRoutes.ts
|
|
37
25
|
import { StatusCodes as StatusCodes3 } from "http-status-codes";
|
|
@@ -42,12 +30,14 @@ import { asyncHandler } from "@xylabs/express";
|
|
|
42
30
|
import { asAddress, toAddress } from "@xylabs/hex";
|
|
43
31
|
import { isModuleIdentifierPart } from "@xyo-network/module-model";
|
|
44
32
|
import { StatusCodes } from "http-status-codes";
|
|
45
|
-
var handler = async (req, res, next) => {
|
|
33
|
+
var handler = /* @__PURE__ */ __name(async (req, res, next) => {
|
|
46
34
|
const { address: rawAddress } = req.params;
|
|
47
35
|
const { node } = req.app;
|
|
48
36
|
const address = asAddress(rawAddress);
|
|
49
37
|
if (address !== void 0) {
|
|
50
|
-
let mod = node.address === address ? node : await node.resolve(address, {
|
|
38
|
+
let mod = node.address === address ? node : await node.resolve(address, {
|
|
39
|
+
direction: "down"
|
|
40
|
+
});
|
|
51
41
|
if (mod) {
|
|
52
42
|
res.json(await mod.state());
|
|
53
43
|
return;
|
|
@@ -55,7 +45,9 @@ var handler = async (req, res, next) => {
|
|
|
55
45
|
}
|
|
56
46
|
if (isModuleIdentifierPart(rawAddress)) {
|
|
57
47
|
const moduleIdentifier = toAddress(rawAddress);
|
|
58
|
-
const mod = await node.resolve(moduleIdentifier, {
|
|
48
|
+
const mod = await node.resolve(moduleIdentifier, {
|
|
49
|
+
direction: "down"
|
|
50
|
+
});
|
|
59
51
|
if (mod) {
|
|
60
52
|
const moduleAddress = assertEx(mod?.address, () => "Error redirecting to module by address");
|
|
61
53
|
res.redirect(StatusCodes.MOVED_TEMPORARILY, `/${moduleAddress}`);
|
|
@@ -63,17 +55,13 @@ var handler = async (req, res, next) => {
|
|
|
63
55
|
}
|
|
64
56
|
}
|
|
65
57
|
next("route");
|
|
66
|
-
};
|
|
58
|
+
}, "handler");
|
|
67
59
|
var getAddress = asyncHandler(handler);
|
|
68
60
|
|
|
69
61
|
// src/server/routes/address/post/post.ts
|
|
70
62
|
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
71
63
|
import { asyncHandler as asyncHandler2 } from "@xylabs/express";
|
|
72
|
-
import {
|
|
73
|
-
asAddress as asAddress2,
|
|
74
|
-
isAddress,
|
|
75
|
-
toAddress as toAddress2
|
|
76
|
-
} from "@xylabs/hex";
|
|
64
|
+
import { asAddress as asAddress2, isAddress, toAddress as toAddress2 } from "@xylabs/hex";
|
|
77
65
|
import { isQueryBoundWitness } from "@xyo-network/boundwitness-model";
|
|
78
66
|
import { ModuleErrorBuilder } from "@xyo-network/module-abstract";
|
|
79
67
|
import { StatusCodes as StatusCodes2 } from "http-status-codes";
|
|
@@ -82,22 +70,33 @@ import { StatusCodes as StatusCodes2 } from "http-status-codes";
|
|
|
82
70
|
import { BoundWitnessSchema } from "@xyo-network/boundwitness-model";
|
|
83
71
|
import { ModuleConfigSchema } from "@xyo-network/module-model";
|
|
84
72
|
var DEFAULT_DEPTH = 5;
|
|
85
|
-
var getQueryConfig = (mod, req, bw, payloads) => {
|
|
73
|
+
var getQueryConfig = /* @__PURE__ */ __name((mod, req, bw, payloads) => {
|
|
86
74
|
const nestedBwAddresses = payloads?.flat(DEFAULT_DEPTH).filter((payload) => payload?.schema === BoundWitnessSchema).map((bw2) => bw2.addresses) || [];
|
|
87
|
-
const addresses = [
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
75
|
+
const addresses = [
|
|
76
|
+
bw.addresses,
|
|
77
|
+
...nestedBwAddresses
|
|
78
|
+
].filter((address) => address.length > 0);
|
|
79
|
+
const allowed = addresses.length > 0 ? Object.fromEntries(mod.queries.map((schema) => [
|
|
80
|
+
schema,
|
|
81
|
+
addresses
|
|
82
|
+
])) : {};
|
|
83
|
+
const security = {
|
|
84
|
+
allowed
|
|
85
|
+
};
|
|
86
|
+
return {
|
|
87
|
+
schema: ModuleConfigSchema,
|
|
88
|
+
security
|
|
89
|
+
};
|
|
90
|
+
}, "getQueryConfig");
|
|
92
91
|
|
|
93
92
|
// src/server/routes/address/post/post.ts
|
|
94
|
-
var handler2 = async (req, res, next) => {
|
|
95
|
-
const returnError = (code, message = "An error occurred", details) => {
|
|
93
|
+
var handler2 = /* @__PURE__ */ __name(async (req, res, next) => {
|
|
94
|
+
const returnError = /* @__PURE__ */ __name((code, message = "An error occurred", details) => {
|
|
96
95
|
const error = new ModuleErrorBuilder().message(message).details(details).build();
|
|
97
96
|
res.locals.rawResponse = false;
|
|
98
97
|
res.status(code).json(error);
|
|
99
98
|
next();
|
|
100
|
-
};
|
|
99
|
+
}, "returnError");
|
|
101
100
|
const { address } = req.params;
|
|
102
101
|
const { node } = req.app;
|
|
103
102
|
const [bw, payloads] = Array.isArray(req.body) ? req.body : [];
|
|
@@ -112,19 +111,29 @@ var handler2 = async (req, res, next) => {
|
|
|
112
111
|
}
|
|
113
112
|
let modules = [];
|
|
114
113
|
const normalizedAddress = toAddress2(address);
|
|
115
|
-
if (node.address === normalizedAddress) modules = [
|
|
114
|
+
if (node.address === normalizedAddress) modules = [
|
|
115
|
+
node
|
|
116
|
+
];
|
|
116
117
|
else {
|
|
117
118
|
const typedAddress = asAddress2(address);
|
|
118
|
-
const byAddress = typedAddress === void 0 ? void 0 : await node.resolve(typedAddress, {
|
|
119
|
-
|
|
119
|
+
const byAddress = typedAddress === void 0 ? void 0 : await node.resolve(typedAddress, {
|
|
120
|
+
maxDepth: 10
|
|
121
|
+
});
|
|
122
|
+
if (byAddress) modules = [
|
|
123
|
+
byAddress
|
|
124
|
+
];
|
|
120
125
|
else {
|
|
121
|
-
const byName = await node.resolve(address, {
|
|
126
|
+
const byName = await node.resolve(address, {
|
|
127
|
+
direction: "down"
|
|
128
|
+
});
|
|
122
129
|
if (byName) {
|
|
123
130
|
const moduleAddress = assertEx2(byName?.address, () => "Error redirecting to module by address");
|
|
124
131
|
res.redirect(StatusCodes2.TEMPORARY_REDIRECT, `/${moduleAddress}`);
|
|
125
132
|
return;
|
|
126
133
|
} else {
|
|
127
|
-
return returnError(StatusCodes2.NOT_FOUND, "Module not found", {
|
|
134
|
+
return returnError(StatusCodes2.NOT_FOUND, "Module not found", {
|
|
135
|
+
address
|
|
136
|
+
});
|
|
128
137
|
}
|
|
129
138
|
}
|
|
130
139
|
}
|
|
@@ -135,16 +144,20 @@ var handler2 = async (req, res, next) => {
|
|
|
135
144
|
const queryResult = await mod.query(bw, payloads, queryConfig);
|
|
136
145
|
res.json(queryResult);
|
|
137
146
|
} catch (ex) {
|
|
138
|
-
return returnError(StatusCodes2.INTERNAL_SERVER_ERROR, "Query Failed", {
|
|
147
|
+
return returnError(StatusCodes2.INTERNAL_SERVER_ERROR, "Query Failed", {
|
|
148
|
+
message: ex?.message ?? "Unknown Error"
|
|
149
|
+
});
|
|
139
150
|
}
|
|
140
151
|
} else {
|
|
141
|
-
return returnError(StatusCodes2.NOT_FOUND, "Module not found", {
|
|
152
|
+
return returnError(StatusCodes2.NOT_FOUND, "Module not found", {
|
|
153
|
+
address
|
|
154
|
+
});
|
|
142
155
|
}
|
|
143
|
-
};
|
|
156
|
+
}, "handler");
|
|
144
157
|
var postAddress = asyncHandler2(handler2);
|
|
145
158
|
|
|
146
159
|
// src/server/routes/address/addNodeRoutes.ts
|
|
147
|
-
var addNodeRoutes = (app) => {
|
|
160
|
+
var addNodeRoutes = /* @__PURE__ */ __name((app) => {
|
|
148
161
|
const defaultModule = app.node;
|
|
149
162
|
const address = defaultModule.address;
|
|
150
163
|
const defaultModuleEndpoint = `/${address}`;
|
|
@@ -158,7 +171,7 @@ var addNodeRoutes = (app) => {
|
|
|
158
171
|
app.post("/:hash", (_req, res) => {
|
|
159
172
|
res.sendStatus(StatusCodes3.NOT_FOUND);
|
|
160
173
|
});
|
|
161
|
-
};
|
|
174
|
+
}, "addNodeRoutes");
|
|
162
175
|
|
|
163
176
|
// src/server/routes/dataLake/archivistMiddleware.ts
|
|
164
177
|
import { setRawResponseFormat } from "@xylabs/express";
|
|
@@ -168,22 +181,28 @@ import { asArchivistInstance } from "@xyo-network/archivist-model";
|
|
|
168
181
|
import { PayloadBuilder } from "@xyo-network/payload-builder";
|
|
169
182
|
import { isAnyPayload, isSequence } from "@xyo-network/payload-model";
|
|
170
183
|
import express from "express";
|
|
171
|
-
var resolveArchivist = async (node, archivistModuleIdentifier) => {
|
|
184
|
+
var resolveArchivist = /* @__PURE__ */ __name(async (node, archivistModuleIdentifier) => {
|
|
172
185
|
const mod = await node.resolve(archivistModuleIdentifier);
|
|
173
|
-
return asArchivistInstance(mod, {
|
|
174
|
-
|
|
186
|
+
return asArchivistInstance(mod, {
|
|
187
|
+
required: true
|
|
188
|
+
});
|
|
189
|
+
}, "resolveArchivist");
|
|
175
190
|
var archivistInstance;
|
|
176
|
-
var getArchivist = async (node, archivistModuleIdentifier) => {
|
|
191
|
+
var getArchivist = /* @__PURE__ */ __name(async (node, archivistModuleIdentifier) => {
|
|
177
192
|
if (isDefined(archivistInstance)) return archivistInstance;
|
|
178
193
|
archivistInstance = await resolveArchivist(node, archivistModuleIdentifier);
|
|
179
194
|
return archivistInstance;
|
|
180
|
-
};
|
|
181
|
-
var archivistMiddleware = (options) => {
|
|
195
|
+
}, "getArchivist");
|
|
196
|
+
var archivistMiddleware = /* @__PURE__ */ __name((options) => {
|
|
182
197
|
const { node, archivistModuleIdentifier } = options;
|
|
183
|
-
const router = express.Router({
|
|
198
|
+
const router = express.Router({
|
|
199
|
+
mergeParams: true
|
|
200
|
+
});
|
|
184
201
|
router.post("/insert", async (req, res) => {
|
|
185
202
|
setRawResponseFormat(res);
|
|
186
|
-
const body = Array.isArray(req.body) ? req.body : [
|
|
203
|
+
const body = Array.isArray(req.body) ? req.body : [
|
|
204
|
+
req.body
|
|
205
|
+
];
|
|
187
206
|
const payloads = (await PayloadBuilder.hashPairs(body)).map((p) => p[0]);
|
|
188
207
|
const archivist = await getArchivist(node, archivistModuleIdentifier);
|
|
189
208
|
const result = await archivist.insert(payloads);
|
|
@@ -218,7 +237,9 @@ var archivistMiddleware = (options) => {
|
|
|
218
237
|
const hash = asHash(rawHash);
|
|
219
238
|
if (isDefined(hash)) {
|
|
220
239
|
const archivist = await getArchivist(node, archivistModuleIdentifier);
|
|
221
|
-
const [payload] = await archivist.get([
|
|
240
|
+
const [payload] = await archivist.get([
|
|
241
|
+
hash
|
|
242
|
+
]);
|
|
222
243
|
if (isAnyPayload(payload)) {
|
|
223
244
|
res.json(payload);
|
|
224
245
|
return;
|
|
@@ -227,28 +248,30 @@ var archivistMiddleware = (options) => {
|
|
|
227
248
|
res.status(400).send();
|
|
228
249
|
});
|
|
229
250
|
return router;
|
|
230
|
-
};
|
|
251
|
+
}, "archivistMiddleware");
|
|
231
252
|
|
|
232
253
|
// src/server/routes/dataLake/addDataLakeRoutes.ts
|
|
233
|
-
var addDataLakeRoutes = (app) => {
|
|
254
|
+
var addDataLakeRoutes = /* @__PURE__ */ __name((app) => {
|
|
234
255
|
const { node } = app;
|
|
235
256
|
const archivistModuleIdentifier = "Chain:Finalized";
|
|
236
|
-
app.use("/chain", archivistMiddleware({
|
|
237
|
-
|
|
257
|
+
app.use("/chain", archivistMiddleware({
|
|
258
|
+
node,
|
|
259
|
+
archivistModuleIdentifier
|
|
260
|
+
}));
|
|
261
|
+
}, "addDataLakeRoutes");
|
|
238
262
|
|
|
239
263
|
// src/server/routes/rpc/routes/addRpcRoutes.ts
|
|
240
264
|
import { setRawResponseFormat as setRawResponseFormat2 } from "@xylabs/express";
|
|
241
265
|
import { NodeXyoViewer } from "@xyo-network/chain-rpc";
|
|
242
|
-
import {
|
|
243
|
-
|
|
244
|
-
rpcEngineFromProvider,
|
|
245
|
-
XyoConnection
|
|
246
|
-
} from "@xyo-network/xl1-rpc";
|
|
247
|
-
var addRpcRoutes = (app) => {
|
|
266
|
+
import { NodeXyoRunner, rpcEngineFromProvider, XyoConnection } from "@xyo-network/xl1-rpc";
|
|
267
|
+
var addRpcRoutes = /* @__PURE__ */ __name((app) => {
|
|
248
268
|
const { node } = app;
|
|
249
269
|
const runner = new NodeXyoRunner(node);
|
|
250
270
|
const viewer = new NodeXyoViewer(node);
|
|
251
|
-
const provider = new XyoConnection({
|
|
271
|
+
const provider = new XyoConnection({
|
|
272
|
+
runner,
|
|
273
|
+
viewer
|
|
274
|
+
});
|
|
252
275
|
const engine = rpcEngineFromProvider(provider);
|
|
253
276
|
app.post("/rpc", (req, res) => {
|
|
254
277
|
setRawResponseFormat2(res);
|
|
@@ -256,24 +279,26 @@ var addRpcRoutes = (app) => {
|
|
|
256
279
|
res.json(rpcResponse);
|
|
257
280
|
});
|
|
258
281
|
});
|
|
259
|
-
};
|
|
282
|
+
}, "addRpcRoutes");
|
|
260
283
|
|
|
261
284
|
// src/server/routes/addRoutes.ts
|
|
262
|
-
var addRoutes = (app) => {
|
|
285
|
+
var addRoutes = /* @__PURE__ */ __name((app) => {
|
|
263
286
|
addRpcRoutes(app);
|
|
264
287
|
addDataLakeRoutes(app);
|
|
265
288
|
addNodeRoutes(app);
|
|
266
|
-
};
|
|
289
|
+
}, "addRoutes");
|
|
267
290
|
|
|
268
291
|
// src/server/app.ts
|
|
269
|
-
var getApp = (node) => {
|
|
292
|
+
var getApp = /* @__PURE__ */ __name((node) => {
|
|
270
293
|
addInstrumentation();
|
|
271
294
|
const app = express2();
|
|
272
295
|
app.set("etag", false);
|
|
273
296
|
app.use(cors());
|
|
274
297
|
app.use(compression());
|
|
275
298
|
app.use(responseProfiler);
|
|
276
|
-
app.use(getJsonBodyParser(getJsonBodyParserOptions({
|
|
299
|
+
app.use(getJsonBodyParser(getJsonBodyParserOptions({
|
|
300
|
+
limit: "1mb"
|
|
301
|
+
})));
|
|
277
302
|
app.use(standardResponses);
|
|
278
303
|
disableExpressDefaultPoweredByHeader(app);
|
|
279
304
|
app.use(customPoweredByHeader);
|
|
@@ -282,7 +307,7 @@ var getApp = (node) => {
|
|
|
282
307
|
addRoutes(app);
|
|
283
308
|
app.use(standardErrors);
|
|
284
309
|
return app;
|
|
285
|
-
};
|
|
310
|
+
}, "getApp");
|
|
286
311
|
|
|
287
312
|
// src/server/server.ts
|
|
288
313
|
import { assertEx as assertEx5 } from "@xylabs/assert";
|
|
@@ -298,12 +323,7 @@ import { isDefined as isDefined2 } from "@xylabs/typeof";
|
|
|
298
323
|
import { MemoryArchivist } from "@xyo-network/archivist-memory";
|
|
299
324
|
import { MongoDBArchivistV2 } from "@xyo-network/archivist-mongodb";
|
|
300
325
|
import { ViewArchivist } from "@xyo-network/archivist-view";
|
|
301
|
-
import {
|
|
302
|
-
AddressBalanceDivinerV2,
|
|
303
|
-
ArchivistSyncDiviner,
|
|
304
|
-
balanceSummaryRepositoryFromMap,
|
|
305
|
-
HeadValidationDiviner
|
|
306
|
-
} from "@xyo-network/chain-modules";
|
|
326
|
+
import { AddressBalanceDivinerV2, ArchivistSyncDiviner, balanceSummaryRepositoryFromMap, HeadValidationDiviner } from "@xyo-network/chain-modules";
|
|
307
327
|
import { initTelemetry } from "@xyo-network/chain-telemetry";
|
|
308
328
|
import { AbstractModule, LoggerModuleStatusReporter } from "@xyo-network/module-abstract";
|
|
309
329
|
import { ModuleFactoryLocator } from "@xyo-network/module-factory-locator";
|
|
@@ -312,16 +332,24 @@ import { hasMongoConfig } from "@xyo-network/xl1-protocol-sdk";
|
|
|
312
332
|
|
|
313
333
|
// src/driver/mongo/MongoMap.ts
|
|
314
334
|
import { assertEx as assertEx3 } from "@xylabs/assert";
|
|
315
|
-
import {
|
|
316
|
-
AbstractCreatable,
|
|
317
|
-
creatable
|
|
318
|
-
} from "@xylabs/creatable";
|
|
335
|
+
import { AbstractCreatable, creatable } from "@xylabs/creatable";
|
|
319
336
|
import { isNull } from "@xylabs/typeof";
|
|
337
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
338
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
339
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
340
|
+
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;
|
|
341
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
342
|
+
}
|
|
343
|
+
__name(_ts_decorate, "_ts_decorate");
|
|
320
344
|
function stripMongoId(doc) {
|
|
321
345
|
const { _id, ...rest } = doc;
|
|
322
346
|
return rest;
|
|
323
347
|
}
|
|
348
|
+
__name(stripMongoId, "stripMongoId");
|
|
324
349
|
var MongoMap = class extends AbstractCreatable {
|
|
350
|
+
static {
|
|
351
|
+
__name(this, "MongoMap");
|
|
352
|
+
}
|
|
325
353
|
get sdk() {
|
|
326
354
|
return assertEx3(this.params.sdk, () => "No sdk specified");
|
|
327
355
|
}
|
|
@@ -329,36 +357,49 @@ var MongoMap = class extends AbstractCreatable {
|
|
|
329
357
|
await this.sdk.deleteMany({});
|
|
330
358
|
}
|
|
331
359
|
async delete(id) {
|
|
332
|
-
const filter = {
|
|
360
|
+
const filter = {
|
|
361
|
+
_id: id
|
|
362
|
+
};
|
|
333
363
|
const result = await this.sdk.deleteOne(filter);
|
|
334
364
|
return result.deletedCount > 0;
|
|
335
365
|
}
|
|
336
366
|
async get(id) {
|
|
337
|
-
const filter = {
|
|
367
|
+
const filter = {
|
|
368
|
+
_id: id
|
|
369
|
+
};
|
|
338
370
|
const doc = await this.sdk.findOne(filter);
|
|
339
371
|
return isNull(doc) ? void 0 : stripMongoId(doc);
|
|
340
372
|
}
|
|
341
373
|
async has(id) {
|
|
342
|
-
const filter = {
|
|
374
|
+
const filter = {
|
|
375
|
+
_id: id
|
|
376
|
+
};
|
|
343
377
|
const exists = await this.sdk.findOne(filter);
|
|
344
378
|
return isNull(exists) ? false : true;
|
|
345
379
|
}
|
|
346
380
|
async set(id, data) {
|
|
347
|
-
const filter = {
|
|
348
|
-
|
|
349
|
-
|
|
381
|
+
const filter = {
|
|
382
|
+
_id: id
|
|
383
|
+
};
|
|
384
|
+
const value = {
|
|
385
|
+
...data,
|
|
386
|
+
_id: id
|
|
387
|
+
};
|
|
388
|
+
await this.sdk.replaceOne(filter, value, {
|
|
389
|
+
upsert: true
|
|
390
|
+
});
|
|
350
391
|
return this;
|
|
351
392
|
}
|
|
352
393
|
async startHandler() {
|
|
353
394
|
await super.startHandler();
|
|
354
395
|
}
|
|
355
396
|
};
|
|
356
|
-
MongoMap =
|
|
397
|
+
MongoMap = _ts_decorate([
|
|
357
398
|
creatable()
|
|
358
399
|
], MongoMap);
|
|
359
400
|
|
|
360
401
|
// src/manifest/getLocator.ts
|
|
361
|
-
var getLocator = async (context) => {
|
|
402
|
+
var getLocator = /* @__PURE__ */ __name(async (context) => {
|
|
362
403
|
const { config, logger } = context;
|
|
363
404
|
const { otlpEndpoint } = config.telemetry?.otel ?? {};
|
|
364
405
|
const { traceProvider, meterProvider } = await initTelemetry({
|
|
@@ -378,13 +419,7 @@ var getLocator = async (context) => {
|
|
|
378
419
|
let summaryMap = /* @__PURE__ */ new Map();
|
|
379
420
|
const mongoConfig = config.storage?.mongo;
|
|
380
421
|
if (hasMongoConfig(mongoConfig)) {
|
|
381
|
-
const {
|
|
382
|
-
connectionString: dbConnectionString,
|
|
383
|
-
database: dbName,
|
|
384
|
-
domain: dbDomain,
|
|
385
|
-
password: dbPassword,
|
|
386
|
-
username: dbUserName
|
|
387
|
-
} = mongoConfig;
|
|
422
|
+
const { connectionString: dbConnectionString, database: dbName, domain: dbDomain, password: dbPassword, username: dbUserName } = mongoConfig;
|
|
388
423
|
const payloadSdkConfig = {
|
|
389
424
|
dbConnectionString,
|
|
390
425
|
dbDomain,
|
|
@@ -399,8 +434,13 @@ var getLocator = async (context) => {
|
|
|
399
434
|
traceProvider
|
|
400
435
|
};
|
|
401
436
|
locator.register(MongoDBArchivistV2.factory(params), void 0, true);
|
|
402
|
-
const sdk = new BaseMongoSdk({
|
|
403
|
-
|
|
437
|
+
const sdk = new BaseMongoSdk({
|
|
438
|
+
...payloadSdkConfig,
|
|
439
|
+
collection: "balance_summary_map"
|
|
440
|
+
});
|
|
441
|
+
summaryMap = await MongoMap.create({
|
|
442
|
+
sdk
|
|
443
|
+
});
|
|
404
444
|
}
|
|
405
445
|
const summaryRepository = balanceSummaryRepositoryFromMap(summaryMap);
|
|
406
446
|
locator.register(AddressBalanceDivinerV2.factory({
|
|
@@ -437,7 +477,7 @@ var getLocator = async (context) => {
|
|
|
437
477
|
statusReporter
|
|
438
478
|
}));
|
|
439
479
|
return locator;
|
|
440
|
-
};
|
|
480
|
+
}, "getLocator");
|
|
441
481
|
|
|
442
482
|
// src/manifest/getNode.ts
|
|
443
483
|
import { ManifestWrapper } from "@xyo-network/manifest-wrapper";
|
|
@@ -653,7 +693,7 @@ var PublicChildManifests = [
|
|
|
653
693
|
];
|
|
654
694
|
|
|
655
695
|
// src/manifest/getNode.ts
|
|
656
|
-
var getNode = async (context) => {
|
|
696
|
+
var getNode = /* @__PURE__ */ __name(async (context) => {
|
|
657
697
|
const { wallet } = context;
|
|
658
698
|
const locator = await getLocator(context);
|
|
659
699
|
const wrapper = new ManifestWrapper(NodeManifest, wallet, locator, PublicChildManifests, PrivateChildManifests);
|
|
@@ -663,11 +703,11 @@ var getNode = async (context) => {
|
|
|
663
703
|
await Promise.all(childNodes.map((childNode) => node.attach(childNode.address, true)));
|
|
664
704
|
}
|
|
665
705
|
return node;
|
|
666
|
-
};
|
|
706
|
+
}, "getNode");
|
|
667
707
|
|
|
668
708
|
// src/server/server.ts
|
|
669
709
|
var hostname = "::";
|
|
670
|
-
var getSeedPhrase = async (bios, config, logger) => {
|
|
710
|
+
var getSeedPhrase = /* @__PURE__ */ __name(async (bios, config, logger) => {
|
|
671
711
|
const storedSeedPhrase = await bios.seedPhraseStore.get("os");
|
|
672
712
|
logger?.debug(`[API] Stored mnemonic: ${storedSeedPhrase}`);
|
|
673
713
|
const { mnemonic } = config.api;
|
|
@@ -686,13 +726,9 @@ var getSeedPhrase = async (bios, config, logger) => {
|
|
|
686
726
|
await bios.seedPhraseStore.set("os", seedPhrase);
|
|
687
727
|
}
|
|
688
728
|
return assertEx5(await bios.seedPhraseStore.get("os"), () => "Unable to acquire mnemonic from bios");
|
|
689
|
-
};
|
|
690
|
-
var getServer = async (context) => {
|
|
691
|
-
const {
|
|
692
|
-
config,
|
|
693
|
-
logger,
|
|
694
|
-
node
|
|
695
|
-
} = context;
|
|
729
|
+
}, "getSeedPhrase");
|
|
730
|
+
var getServer = /* @__PURE__ */ __name(async (context) => {
|
|
731
|
+
const { config, logger, node } = context;
|
|
696
732
|
const { mnemonic, port } = context.config.api;
|
|
697
733
|
const bios = await boot();
|
|
698
734
|
const seedPhrase = isDefined3(mnemonic) ? mnemonic : await getSeedPhrase(bios, config, logger);
|
|
@@ -706,7 +742,7 @@ var getServer = async (context) => {
|
|
|
706
742
|
const server = app.listen(port, hostname, () => logger?.log(`[API] Server listening at http://${hostname}:${port}`));
|
|
707
743
|
server.setTimeout(2e4);
|
|
708
744
|
return server;
|
|
709
|
-
};
|
|
745
|
+
}, "getServer");
|
|
710
746
|
export {
|
|
711
747
|
getApp,
|
|
712
748
|
getServer
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../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/manifest/getLocator.ts","../../src/driver/mongo/MongoMap.ts","../../src/manifest/getNode.ts","../../src/manifest/node.json","../../src/manifest/nodeManifest.ts","../../src/manifest/private/index.ts","../../src/manifest/public/Chain.json","../../src/manifest/public/Pending.json","../../src/manifest/public/index.ts"],"sourcesContent":["import {\n customPoweredByHeader,\n disableCaseSensitiveRouting,\n disableExpressDefaultPoweredByHeader,\n getJsonBodyParser,\n getJsonBodyParserOptions,\n responseProfiler,\n standardErrors,\n standardResponses,\n} from '@xylabs/express'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport compression from 'compression'\nimport cors from 'cors'\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 = (node: NodeInstance): 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.node = node\n 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.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 { assertEx } from '@xylabs/assert'\nimport { asyncHandler } from '@xylabs/express'\nimport { asAddress, toAddress } from '@xylabs/hex'\nimport { isModuleIdentifierPart } 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: rawAddress } = req.params\n const { node } = req.app\n const address = asAddress(rawAddress)\n if (address !== undefined) {\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 (isModuleIdentifierPart(rawAddress)) {\n const moduleIdentifier = toAddress(rawAddress)\n const mod = await node.resolve(moduleIdentifier, { direction: 'down' })\n if (mod) {\n const moduleAddress = assertEx(mod?.address, () => 'Error redirecting to module by address')\n res.redirect(StatusCodes.MOVED_TEMPORARILY, `/${moduleAddress}`)\n return\n }\n }\n next('route')\n}\nexport const getAddress = asyncHandler(handler)\n","import { assertEx } from '@xylabs/assert'\nimport { asyncHandler } from '@xylabs/express'\nimport {\n asAddress, isAddress,\n toAddress,\n} from '@xylabs/hex'\nimport type { JsonObject } from '@xylabs/object'\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\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 } from '@xylabs/hex'\nimport { isDefined } from '@xylabs/typeof'\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\n const archivistModuleIdentifier = 'Chain:Finalized'\n app.use('/chain', archivistMiddleware({ node, archivistModuleIdentifier }))\n}\n","import { setRawResponseFormat } from '@xylabs/express'\nimport { NodeXyoViewer } from '@xyo-network/chain-rpc'\nimport {\n NodeXyoRunner, rpcEngineFromProvider,\n XyoConnection,\n} from '@xyo-network/xl1-rpc'\nimport type { Express } from 'express'\n\nexport const addRpcRoutes = (app: Express) => {\n const { node } = app\n const runner = new NodeXyoRunner(node)\n const viewer = new NodeXyoViewer(node)\n const provider = new XyoConnection({ runner, viewer })\n const engine = rpcEngineFromProvider(provider)\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 = (app: Express) => {\n addRpcRoutes(app)\n addDataLakeRoutes(app)\n addNodeRoutes(app)\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Logger } from '@xylabs/logger'\nimport { isDefined, isString } from '@xylabs/typeof'\nimport { boot } from '@xyo-network/bios'\nimport type { BiosExternalInterface } from '@xyo-network/bios-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { HDWallet } from '@xyo-network/wallet'\nimport { type Config } from '@xyo-network/xl1-protocol-sdk'\n\nimport { getNode } from '../manifest/index.ts'\nimport { getApp } from './app.ts'\n\nconst hostname = '::'\n// const hostname = '0.0.0.0'\n\n// TODO: Make nodejs version of bios support round tripping mnemonic between boots\nconst getSeedPhrase = async (bios: BiosExternalInterface, config: Config, logger?: Logger): Promise<string> => {\n const storedSeedPhrase = await bios.seedPhraseStore.get('os')\n logger?.debug(`[API] Stored mnemonic: ${storedSeedPhrase}`)\n const { mnemonic } = config.api\n if (isString(storedSeedPhrase) && isString(mnemonic)) {\n logger?.warn('[API] Stored mnemonic does not match supplied. Updating stored mnemonic to supplied.')\n await bios.seedPhraseStore.set('os', mnemonic)\n } else {\n let seedPhrase: string\n if (isString(mnemonic)) {\n seedPhrase = mnemonic\n } else {\n seedPhrase = HDWallet.generateMnemonic()\n logger?.log('[API] No mnemonic provided, using random mnemonic. This is not recommended for production use.')\n logger?.log(`[API] Mnemonic: ${seedPhrase}`)\n }\n await bios.seedPhraseStore.set('os', seedPhrase)\n }\n return assertEx(await bios.seedPhraseStore.get('os'), () => 'Unable to acquire mnemonic from bios')\n}\n\ninterface GetServerContext {\n config: Config\n logger?: Logger\n node?: NodeInstance\n}\n\nexport const getServer = async (context: GetServerContext) => {\n const {\n config, logger, node,\n } = context\n const { mnemonic, port } = context.config.api\n const bios = await boot()\n const seedPhrase = isDefined(mnemonic) ? mnemonic : await getSeedPhrase(bios, config, logger)\n const wallet = await HDWallet.fromPhrase(seedPhrase)\n const nodeContext = {\n wallet, logger, config,\n }\n const app = getApp(node ?? await getNode(nodeContext))\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 { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport { asAddress, ZERO_ADDRESS } from '@xylabs/hex'\nimport type { Logger } from '@xylabs/logger'\nimport { BaseMongoSdk, type BaseMongoSdkPrivateConfig } from '@xylabs/mongo'\nimport { isDefined } from '@xylabs/typeof'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { MongoDBArchivistV2 } from '@xyo-network/archivist-mongodb'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport {\n AddressBalanceDivinerV2, ArchivistSyncDiviner, balanceSummaryRepositoryFromMap, HeadValidationDiviner,\n} from '@xyo-network/chain-modules'\nimport type { MapType } from '@xyo-network/chain-protocol'\nimport { initTelemetry } from '@xyo-network/chain-telemetry'\nimport { AbstractModule, LoggerModuleStatusReporter } from '@xyo-network/module-abstract'\nimport { ModuleFactoryLocator } from '@xyo-network/module-factory-locator'\nimport type { MongoDBModuleParamsV2 } from '@xyo-network/module-model-mongodb'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport type { BalancesStepSummary, Config } from '@xyo-network/xl1-protocol-sdk'\nimport { hasMongoConfig } from '@xyo-network/xl1-protocol-sdk'\n\nimport { MongoMap } from '../driver/index.ts'\n\nexport interface GetLocatorContext {\n config: Config\n logger?: Logger\n}\n\n/**\n * Used for retrieving a locator with the necessary modules registered for testing\n * operation of the node (entirely in memory)\n * @returns A locator with the necessary modules registered\n */\nexport const getLocator = async (context: GetLocatorContext) => {\n const { config, logger } = context\n const { otlpEndpoint } = config.telemetry?.otel ?? {}\n const { traceProvider, meterProvider } = await initTelemetry({\n attributes: {\n serviceName: 'xl1-api',\n serviceVersion: '1.0.0',\n },\n otlpEndpoint,\n metricsConfig: {\n endpoint: '/metrics',\n port: 9465,\n },\n })\n\n if (isDefined(logger)) AbstractModule.defaultLogger = logger\n const statusReporter = logger ? new LoggerModuleStatusReporter(logger) : undefined\n\n const locator = new ModuleFactoryLocator()\n // Initialize with an in-memory map for backing the summary repository\n let summaryMap: MapType<Hash, WithStorageMeta<BalancesStepSummary>> = new Map<Hash, WithStorageMeta<BalancesStepSummary>>()\n // If there's a MongoDB configuration\n const mongoConfig = config.storage?.mongo\n if (hasMongoConfig(mongoConfig)) {\n // Create the MongoDB SDK from the configuration\n const {\n connectionString: dbConnectionString, database: dbName, domain: dbDomain, password: dbPassword, username: dbUserName,\n } = mongoConfig\n const payloadSdkConfig: BaseMongoSdkPrivateConfig = {\n dbConnectionString, dbDomain, dbName, dbPassword, dbUserName,\n }\n const params: Partial<MongoDBModuleParamsV2> = {\n meterProvider, payloadSdkConfig, statusReporter, traceProvider,\n }\n // Register the MongoDB Archivist as the default\n locator.register(MongoDBArchivistV2.factory(params), undefined, true)\n\n // Use a persistent MongoMap for the summary repository if MongoDB is configured\n const sdk = new BaseMongoSdk<WithStorageMeta<BalancesStepSummary>>({ ...payloadSdkConfig, collection: 'balance_summary_map' })\n summaryMap = await MongoMap.create<MongoMap<Hash, WithStorageMeta<BalancesStepSummary>>>({ sdk })\n }\n\n const summaryRepository = balanceSummaryRepositoryFromMap(summaryMap)\n locator.register(AddressBalanceDivinerV2.factory<AddressBalanceDivinerV2>({\n traceProvider, meterProvider, statusReporter, summaryRepository,\n }))\n\n const chainId = isDefined(config.chain.id)\n ? assertEx(asAddress(config.chain.id), () => 'chain.id must be an Address')\n : ZERO_ADDRESS\n locator.register(HeadValidationDiviner.factory<HeadValidationDiviner>({\n traceProvider,\n meterProvider,\n statusReporter,\n chainId,\n }))\n locator.register(MemoryArchivist.factory({\n traceProvider, meterProvider, statusReporter,\n }))\n locator.register(MemorySentinel.factory({\n traceProvider, meterProvider, statusReporter,\n }))\n locator.register(ViewArchivist.factory({\n traceProvider, meterProvider, statusReporter,\n }))\n locator.register(ArchivistSyncDiviner.factory({\n traceProvider, meterProvider, statusReporter,\n }))\n return locator\n}\n","import { assertEx } from '@xylabs/assert'\nimport {\n AbstractCreatable, creatable, CreatableParams,\n} from '@xylabs/creatable'\nimport { BaseMongoSdk } from '@xylabs/mongo'\nimport { isNull } from '@xylabs/typeof'\nimport { AsynchronousMap } from '@xyo-network/chain-protocol'\nimport {\n Document, Filter, OptionalUnlessRequiredId, WithId,\n} from 'mongodb'\n\nexport interface MongoMapParams<TData extends Document = Document> extends CreatableParams {\n sdk: BaseMongoSdk<TData>\n}\n\nfunction stripMongoId<V extends Document>(doc: WithId<V>): V {\n const { _id, ...rest } = doc\n return rest as unknown as V\n}\n\n@creatable()\nexport class MongoMap<K = string, V extends Document = Document>\n extends AbstractCreatable<MongoMapParams<V>>\n implements AsynchronousMap<K, V> {\n get sdk(): BaseMongoSdk<V> {\n return assertEx(this.params.sdk, () => 'No sdk specified')\n }\n\n async clear(): Promise<void> {\n await this.sdk.deleteMany({})\n }\n\n async delete(id: K): Promise<boolean> {\n const filter = { _id: id } as Filter<V>\n const result = await this.sdk.deleteOne(filter)\n return result.deletedCount > 0\n }\n\n async get(id: K): Promise<V | undefined> {\n const filter = { _id: id } as Filter<V>\n const doc = await this.sdk.findOne(filter)\n return isNull(doc) ? undefined : stripMongoId(doc)\n }\n\n async has(id: K): Promise<boolean> {\n const filter = { _id: id } as Filter<V>\n const exists = await this.sdk.findOne(filter)\n return isNull(exists) ? false : true\n }\n\n async set(id: K, data: V): Promise<this> {\n const filter = { _id: id } as Filter<V>\n const value = { ...data, _id: id } as OptionalUnlessRequiredId<V>\n await this.sdk.replaceOne(filter, value, { upsert: true })\n return this\n }\n\n override async startHandler(): Promise<void> {\n await super.startHandler()\n // TODO: Ensure index\n }\n}\n","import type { Logger } from '@xylabs/logger'\nimport { ManifestWrapper } from '@xyo-network/manifest-wrapper'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\nimport { getLocator } from './getLocator.ts'\nimport { NodeManifest } from './nodeManifest.ts'\nimport { PrivateChildManifests } from './private/index.ts'\nimport { PublicChildManifests } from './public/index.ts'\n\nexport interface GetNodeContext {\n config: Config\n logger?: Logger\n wallet: WalletInstance\n}\n\n/**\n * Creates a node with the xyo-chain modules registered\n * @param context The context to use for the node\n * @returns A node with the xyo-chain modules registered\n */\nexport const getNode = async (context: GetNodeContext) => {\n const { wallet } = context\n const locator = await getLocator(context)\n const wrapper = new ManifestWrapper(NodeManifest, wallet, locator, PublicChildManifests, PrivateChildManifests)\n const [node, ...childNodes] = await wrapper.loadNodes()\n if (childNodes?.length > 0) {\n await Promise.all(childNodes.map(childNode => node.register(childNode)))\n await Promise.all(childNodes.map(childNode => node.attach(childNode.address, true)))\n }\n return node\n}\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"44'/60'/1\",\n \"name\": \"XYOChain\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": []\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}\n","import type { PackageManifestPayload } from '@xyo-network/manifest-model'\n\nimport node from './node.json' with { type: 'json' }\n\n/**\n * Root Node Manifest\n */\nexport const NodeManifest = node as PackageManifestPayload\n","/**\n * Private Child Manifests\n */\nexport const PrivateChildManifests = []\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"1\",\n \"name\": \"Chain\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [\n {\n \"config\": {\n \"accountPath\": \"1/1'/1'\",\n \"name\": \"Validated\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"payloadSdkConfig\": {\n \"collection\": \"chain_validated\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1'/2'\",\n \"schema\": \"network.xyo.diviner.chain.head.validation.config\",\n \"eventSubscriptions\": [\n {\n \"sourceEvent\": \"inserted\",\n \"sourceModule\": \"Chain:Submissions\",\n \"targetModuleFunction\": \"divine\"\n }\n ],\n \"inArchivist\": \"Chain:Submissions\",\n \"outArchivist\": \"Chain:Validated\",\n \"name\": \"HeadValidationDiviner\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1'/3'\",\n \"automations\": [\n {\n \"frequency\": 10000,\n \"frequencyUnits\": \"millis\",\n \"schema\": \"network.xyo.automation.interval\",\n \"type\": \"interval\"\n }\n ],\n \"name\": \"ChainValidationSentinel\",\n \"schema\": \"network.xyo.sentinel.config\",\n \"synchronous\": true,\n \"tasks\": [\n {\n \"mod\": \"HeadValidationDiviner\",\n \"endPoint\": \"divine\"\n }\n ]\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1'/4'\",\n \"automations\": [\n {\n \"frequency\": 60000,\n \"frequencyUnits\": \"millis\",\n \"schema\": \"network.xyo.automation.interval\",\n \"type\": \"interval\"\n }\n ],\n \"name\": \"AddressBalancePollingSentinel\",\n \"schema\": \"network.xyo.sentinel.config\",\n \"synchronous\": true,\n \"tasks\": [\n {\n \"mod\": \"AddressBalanceDiviner\",\n \"endPoint\": \"divine\"\n }\n ]\n }\n }\n ],\n \"public\": [\n {\n \"config\": {\n \"accountPath\": \"1/1/1\",\n \"name\": \"Submissions\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"payloadSdkConfig\": {\n \"collection\": \"chain_submissions\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1/2\",\n \"name\": \"Finalized\",\n \"allowedQueries\": [\n \"network.xyo.query.archivist.get\",\n \"network.xyo.query.archivist.next\"\n ],\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"originArchivist\": \"Chain:Validated\",\n \"schema\": \"network.xyo.archivist.view.config\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1/3\",\n \"schema\": \"network.xyo.diviner.chain.address.balance.config\",\n \"archivist\": \"Chain:Validated\",\n \"name\": \"AddressBalanceDiviner\",\n \"eventSubscriptions\": [\n {\n \"sourceEvent\": \"inserted\",\n \"sourceModule\": \"Chain:Validated\",\n \"targetModuleFunction\": \"divine\"\n }\n ]\n }\n }\n ]\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"2\",\n \"name\": \"Pending\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": [\n {\n \"config\": {\n \"accountPath\": \"2/1/2\",\n \"name\": \"PendingTransactions\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"labels\": {\n \"network.xyo.storage.class\": \"mongodb\"\n },\n \"payloadSdkConfig\": {\n \"collection\": \"pending_bundles\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n }\n ]\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}\n","import type { ModuleManifest, PackageManifestPayload } from '@xyo-network/manifest-model'\n\nimport Chain from './Chain.json' with { type: 'json' }\nimport Pending from './Pending.json' with { type: 'json' }\n\n/**\n * Chain Node Manifest\n */\nexport const ChainNodeManifest = Chain as PackageManifestPayload\n/**\n * Pending Node Manifest\n */\nexport const PendingNodeManifest = Pending as PackageManifestPayload\n/**\n * Public Child Manifests\n */\nexport const PublicChildManifests: ModuleManifest[] = [\n ...ChainNodeManifest.nodes,\n ...PendingNodeManifest.nodes,\n]\n"],"mappings":"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","names":["express","StatusCodes","assertEx","asyncHandler","asAddress","toAddress","StatusCodes","bw","handler","StatusCodes","toAddress","asAddress","assertEx","asyncHandler","StatusCodes","options","setRawResponseFormat","express","assertEx","isDefined","assertEx","asAddress","isDefined","assertEx","assertEx","isDefined","assertEx","asAddress","assertEx","isDefined"]}
|
|
1
|
+
{"version":3,"sources":["../../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/manifest/getLocator.ts","../../src/driver/mongo/MongoMap.ts","../../src/manifest/getNode.ts","../../src/manifest/node.json","../../src/manifest/nodeManifest.ts","../../src/manifest/private/index.ts","../../src/manifest/public/Chain.json","../../src/manifest/public/Pending.json","../../src/manifest/public/index.ts"],"sourcesContent":["import {\n customPoweredByHeader,\n disableCaseSensitiveRouting,\n disableExpressDefaultPoweredByHeader,\n getJsonBodyParser,\n getJsonBodyParserOptions,\n responseProfiler,\n standardErrors,\n standardResponses,\n} from '@xylabs/express'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport compression from 'compression'\nimport cors from 'cors'\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 = (node: NodeInstance): 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.node = node\n 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.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 { assertEx } from '@xylabs/assert'\nimport { asyncHandler } from '@xylabs/express'\nimport { asAddress, toAddress } from '@xylabs/hex'\nimport { isModuleIdentifierPart } 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: rawAddress } = req.params\n const { node } = req.app\n const address = asAddress(rawAddress)\n if (address !== undefined) {\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 (isModuleIdentifierPart(rawAddress)) {\n const moduleIdentifier = toAddress(rawAddress)\n const mod = await node.resolve(moduleIdentifier, { direction: 'down' })\n if (mod) {\n const moduleAddress = assertEx(mod?.address, () => 'Error redirecting to module by address')\n res.redirect(StatusCodes.MOVED_TEMPORARILY, `/${moduleAddress}`)\n return\n }\n }\n next('route')\n}\nexport const getAddress = asyncHandler(handler)\n","import { assertEx } from '@xylabs/assert'\nimport { asyncHandler } from '@xylabs/express'\nimport {\n asAddress, isAddress,\n toAddress,\n} from '@xylabs/hex'\nimport type { JsonObject } from '@xylabs/object'\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\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 } from '@xylabs/hex'\nimport { isDefined } from '@xylabs/typeof'\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\n const archivistModuleIdentifier = 'Chain:Finalized'\n app.use('/chain', archivistMiddleware({ node, archivistModuleIdentifier }))\n}\n","import { setRawResponseFormat } from '@xylabs/express'\nimport { NodeXyoViewer } from '@xyo-network/chain-rpc'\nimport {\n NodeXyoRunner, rpcEngineFromProvider,\n XyoConnection,\n} from '@xyo-network/xl1-rpc'\nimport type { Express } from 'express'\n\nexport const addRpcRoutes = (app: Express) => {\n const { node } = app\n const runner = new NodeXyoRunner(node)\n const viewer = new NodeXyoViewer(node)\n const provider = new XyoConnection({ runner, viewer })\n const engine = rpcEngineFromProvider(provider)\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 = (app: Express) => {\n addRpcRoutes(app)\n addDataLakeRoutes(app)\n addNodeRoutes(app)\n}\n","import { assertEx } from '@xylabs/assert'\nimport type { Logger } from '@xylabs/logger'\nimport { isDefined, isString } from '@xylabs/typeof'\nimport { boot } from '@xyo-network/bios'\nimport type { BiosExternalInterface } from '@xyo-network/bios-model'\nimport type { NodeInstance } from '@xyo-network/node-model'\nimport { HDWallet } from '@xyo-network/wallet'\nimport { type Config } from '@xyo-network/xl1-protocol-sdk'\n\nimport { getNode } from '../manifest/index.ts'\nimport { getApp } from './app.ts'\n\nconst hostname = '::'\n// const hostname = '0.0.0.0'\n\n// TODO: Make nodejs version of bios support round tripping mnemonic between boots\nconst getSeedPhrase = async (bios: BiosExternalInterface, config: Config, logger?: Logger): Promise<string> => {\n const storedSeedPhrase = await bios.seedPhraseStore.get('os')\n logger?.debug(`[API] Stored mnemonic: ${storedSeedPhrase}`)\n const { mnemonic } = config.api\n if (isString(storedSeedPhrase) && isString(mnemonic)) {\n logger?.warn('[API] Stored mnemonic does not match supplied. Updating stored mnemonic to supplied.')\n await bios.seedPhraseStore.set('os', mnemonic)\n } else {\n let seedPhrase: string\n if (isString(mnemonic)) {\n seedPhrase = mnemonic\n } else {\n seedPhrase = HDWallet.generateMnemonic()\n logger?.log('[API] No mnemonic provided, using random mnemonic. This is not recommended for production use.')\n logger?.log(`[API] Mnemonic: ${seedPhrase}`)\n }\n await bios.seedPhraseStore.set('os', seedPhrase)\n }\n return assertEx(await bios.seedPhraseStore.get('os'), () => 'Unable to acquire mnemonic from bios')\n}\n\ninterface GetServerContext {\n config: Config\n logger?: Logger\n node?: NodeInstance\n}\n\nexport const getServer = async (context: GetServerContext) => {\n const {\n config, logger, node,\n } = context\n const { mnemonic, port } = context.config.api\n const bios = await boot()\n const seedPhrase = isDefined(mnemonic) ? mnemonic : await getSeedPhrase(bios, config, logger)\n const wallet = await HDWallet.fromPhrase(seedPhrase)\n const nodeContext = {\n wallet, logger, config,\n }\n const app = getApp(node ?? await getNode(nodeContext))\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 { assertEx } from '@xylabs/assert'\nimport type { Hash } from '@xylabs/hex'\nimport { asAddress, ZERO_ADDRESS } from '@xylabs/hex'\nimport type { Logger } from '@xylabs/logger'\nimport { BaseMongoSdk, type BaseMongoSdkPrivateConfig } from '@xylabs/mongo'\nimport { isDefined } from '@xylabs/typeof'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { MongoDBArchivistV2 } from '@xyo-network/archivist-mongodb'\nimport { ViewArchivist } from '@xyo-network/archivist-view'\nimport {\n AddressBalanceDivinerV2, ArchivistSyncDiviner, balanceSummaryRepositoryFromMap, HeadValidationDiviner,\n} from '@xyo-network/chain-modules'\nimport type { MapType } from '@xyo-network/chain-protocol'\nimport { initTelemetry } from '@xyo-network/chain-telemetry'\nimport { AbstractModule, LoggerModuleStatusReporter } from '@xyo-network/module-abstract'\nimport { ModuleFactoryLocator } from '@xyo-network/module-factory-locator'\nimport type { MongoDBModuleParamsV2 } from '@xyo-network/module-model-mongodb'\nimport type { WithStorageMeta } from '@xyo-network/payload-model'\nimport { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport type { BalancesStepSummary, Config } from '@xyo-network/xl1-protocol-sdk'\nimport { hasMongoConfig } from '@xyo-network/xl1-protocol-sdk'\n\nimport { MongoMap } from '../driver/index.ts'\n\nexport interface GetLocatorContext {\n config: Config\n logger?: Logger\n}\n\n/**\n * Used for retrieving a locator with the necessary modules registered for testing\n * operation of the node (entirely in memory)\n * @returns A locator with the necessary modules registered\n */\nexport const getLocator = async (context: GetLocatorContext) => {\n const { config, logger } = context\n const { otlpEndpoint } = config.telemetry?.otel ?? {}\n const { traceProvider, meterProvider } = await initTelemetry({\n attributes: {\n serviceName: 'xl1-api',\n serviceVersion: '1.0.0',\n },\n otlpEndpoint,\n metricsConfig: {\n endpoint: '/metrics',\n port: 9465,\n },\n })\n\n if (isDefined(logger)) AbstractModule.defaultLogger = logger\n const statusReporter = logger ? new LoggerModuleStatusReporter(logger) : undefined\n\n const locator = new ModuleFactoryLocator()\n // Initialize with an in-memory map for backing the summary repository\n let summaryMap: MapType<Hash, WithStorageMeta<BalancesStepSummary>> = new Map<Hash, WithStorageMeta<BalancesStepSummary>>()\n // If there's a MongoDB configuration\n const mongoConfig = config.storage?.mongo\n if (hasMongoConfig(mongoConfig)) {\n // Create the MongoDB SDK from the configuration\n const {\n connectionString: dbConnectionString, database: dbName, domain: dbDomain, password: dbPassword, username: dbUserName,\n } = mongoConfig\n const payloadSdkConfig: BaseMongoSdkPrivateConfig = {\n dbConnectionString, dbDomain, dbName, dbPassword, dbUserName,\n }\n const params: Partial<MongoDBModuleParamsV2> = {\n meterProvider, payloadSdkConfig, statusReporter, traceProvider,\n }\n // Register the MongoDB Archivist as the default\n locator.register(MongoDBArchivistV2.factory(params), undefined, true)\n\n // Use a persistent MongoMap for the summary repository if MongoDB is configured\n const sdk = new BaseMongoSdk<WithStorageMeta<BalancesStepSummary>>({ ...payloadSdkConfig, collection: 'balance_summary_map' })\n summaryMap = await MongoMap.create<MongoMap<Hash, WithStorageMeta<BalancesStepSummary>>>({ sdk })\n }\n\n const summaryRepository = balanceSummaryRepositoryFromMap(summaryMap)\n locator.register(AddressBalanceDivinerV2.factory<AddressBalanceDivinerV2>({\n traceProvider, meterProvider, statusReporter, summaryRepository,\n }))\n\n const chainId = isDefined(config.chain.id)\n ? assertEx(asAddress(config.chain.id), () => 'chain.id must be an Address')\n : ZERO_ADDRESS\n locator.register(HeadValidationDiviner.factory<HeadValidationDiviner>({\n traceProvider,\n meterProvider,\n statusReporter,\n chainId,\n }))\n locator.register(MemoryArchivist.factory({\n traceProvider, meterProvider, statusReporter,\n }))\n locator.register(MemorySentinel.factory({\n traceProvider, meterProvider, statusReporter,\n }))\n locator.register(ViewArchivist.factory({\n traceProvider, meterProvider, statusReporter,\n }))\n locator.register(ArchivistSyncDiviner.factory({\n traceProvider, meterProvider, statusReporter,\n }))\n return locator\n}\n","import { assertEx } from '@xylabs/assert'\nimport {\n AbstractCreatable, creatable, CreatableParams,\n} from '@xylabs/creatable'\nimport { BaseMongoSdk } from '@xylabs/mongo'\nimport { isNull } from '@xylabs/typeof'\nimport { AsynchronousMap } from '@xyo-network/chain-protocol'\nimport {\n Document, Filter, OptionalUnlessRequiredId, WithId,\n} from 'mongodb'\n\nexport interface MongoMapParams<TData extends Document = Document> extends CreatableParams {\n sdk: BaseMongoSdk<TData>\n}\n\nfunction stripMongoId<V extends Document>(doc: WithId<V>): V {\n const { _id, ...rest } = doc\n return rest as unknown as V\n}\n\n@creatable()\nexport class MongoMap<K = string, V extends Document = Document>\n extends AbstractCreatable<MongoMapParams<V>>\n implements AsynchronousMap<K, V> {\n get sdk(): BaseMongoSdk<V> {\n return assertEx(this.params.sdk, () => 'No sdk specified')\n }\n\n async clear(): Promise<void> {\n await this.sdk.deleteMany({})\n }\n\n async delete(id: K): Promise<boolean> {\n const filter = { _id: id } as Filter<V>\n const result = await this.sdk.deleteOne(filter)\n return result.deletedCount > 0\n }\n\n async get(id: K): Promise<V | undefined> {\n const filter = { _id: id } as Filter<V>\n const doc = await this.sdk.findOne(filter)\n return isNull(doc) ? undefined : stripMongoId(doc)\n }\n\n async has(id: K): Promise<boolean> {\n const filter = { _id: id } as Filter<V>\n const exists = await this.sdk.findOne(filter)\n return isNull(exists) ? false : true\n }\n\n async set(id: K, data: V): Promise<this> {\n const filter = { _id: id } as Filter<V>\n const value = { ...data, _id: id } as OptionalUnlessRequiredId<V>\n await this.sdk.replaceOne(filter, value, { upsert: true })\n return this\n }\n\n override async startHandler(): Promise<void> {\n await super.startHandler()\n // TODO: Ensure index\n }\n}\n","import type { Logger } from '@xylabs/logger'\nimport { ManifestWrapper } from '@xyo-network/manifest-wrapper'\nimport type { WalletInstance } from '@xyo-network/wallet-model'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\n\nimport { getLocator } from './getLocator.ts'\nimport { NodeManifest } from './nodeManifest.ts'\nimport { PrivateChildManifests } from './private/index.ts'\nimport { PublicChildManifests } from './public/index.ts'\n\nexport interface GetNodeContext {\n config: Config\n logger?: Logger\n wallet: WalletInstance\n}\n\n/**\n * Creates a node with the xyo-chain modules registered\n * @param context The context to use for the node\n * @returns A node with the xyo-chain modules registered\n */\nexport const getNode = async (context: GetNodeContext) => {\n const { wallet } = context\n const locator = await getLocator(context)\n const wrapper = new ManifestWrapper(NodeManifest, wallet, locator, PublicChildManifests, PrivateChildManifests)\n const [node, ...childNodes] = await wrapper.loadNodes()\n if (childNodes?.length > 0) {\n await Promise.all(childNodes.map(childNode => node.register(childNode)))\n await Promise.all(childNodes.map(childNode => node.attach(childNode.address, true)))\n }\n return node\n}\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"44'/60'/1\",\n \"name\": \"XYOChain\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": []\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}\n","import type { PackageManifestPayload } from '@xyo-network/manifest-model'\n\nimport node from './node.json' with { type: 'json' }\n\n/**\n * Root Node Manifest\n */\nexport const NodeManifest = node as PackageManifestPayload\n","/**\n * Private Child Manifests\n */\nexport const PrivateChildManifests = []\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"1\",\n \"name\": \"Chain\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [\n {\n \"config\": {\n \"accountPath\": \"1/1'/1'\",\n \"name\": \"Validated\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"payloadSdkConfig\": {\n \"collection\": \"chain_validated\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1'/2'\",\n \"schema\": \"network.xyo.diviner.chain.head.validation.config\",\n \"eventSubscriptions\": [\n {\n \"sourceEvent\": \"inserted\",\n \"sourceModule\": \"Chain:Submissions\",\n \"targetModuleFunction\": \"divine\"\n }\n ],\n \"inArchivist\": \"Chain:Submissions\",\n \"outArchivist\": \"Chain:Validated\",\n \"name\": \"HeadValidationDiviner\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1'/3'\",\n \"automations\": [\n {\n \"frequency\": 10000,\n \"frequencyUnits\": \"millis\",\n \"schema\": \"network.xyo.automation.interval\",\n \"type\": \"interval\"\n }\n ],\n \"name\": \"ChainValidationSentinel\",\n \"schema\": \"network.xyo.sentinel.config\",\n \"synchronous\": true,\n \"tasks\": [\n {\n \"mod\": \"HeadValidationDiviner\",\n \"endPoint\": \"divine\"\n }\n ]\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1'/4'\",\n \"automations\": [\n {\n \"frequency\": 60000,\n \"frequencyUnits\": \"millis\",\n \"schema\": \"network.xyo.automation.interval\",\n \"type\": \"interval\"\n }\n ],\n \"name\": \"AddressBalancePollingSentinel\",\n \"schema\": \"network.xyo.sentinel.config\",\n \"synchronous\": true,\n \"tasks\": [\n {\n \"mod\": \"AddressBalanceDiviner\",\n \"endPoint\": \"divine\"\n }\n ]\n }\n }\n ],\n \"public\": [\n {\n \"config\": {\n \"accountPath\": \"1/1/1\",\n \"name\": \"Submissions\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"payloadSdkConfig\": {\n \"collection\": \"chain_submissions\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1/2\",\n \"name\": \"Finalized\",\n \"allowedQueries\": [\n \"network.xyo.query.archivist.get\",\n \"network.xyo.query.archivist.next\"\n ],\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"originArchivist\": \"Chain:Validated\",\n \"schema\": \"network.xyo.archivist.view.config\"\n }\n },\n {\n \"config\": {\n \"accountPath\": \"1/1/3\",\n \"schema\": \"network.xyo.diviner.chain.address.balance.config\",\n \"archivist\": \"Chain:Validated\",\n \"name\": \"AddressBalanceDiviner\",\n \"eventSubscriptions\": [\n {\n \"sourceEvent\": \"inserted\",\n \"sourceModule\": \"Chain:Validated\",\n \"targetModuleFunction\": \"divine\"\n }\n ]\n }\n }\n ]\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}\n","{\n \"$schema\": \"https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json\",\n \"nodes\": [\n {\n \"config\": {\n \"accountPath\": \"2\",\n \"name\": \"Pending\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": [\n {\n \"config\": {\n \"accountPath\": \"2/1/2\",\n \"name\": \"PendingTransactions\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"labels\": {\n \"network.xyo.storage.class\": \"mongodb\"\n },\n \"payloadSdkConfig\": {\n \"collection\": \"pending_bundles\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n }\n ]\n }\n }\n ],\n \"schema\": \"network.xyo.manifest\"\n}\n","import type { ModuleManifest, PackageManifestPayload } from '@xyo-network/manifest-model'\n\nimport Chain from './Chain.json' with { type: 'json' }\nimport Pending from './Pending.json' with { type: 'json' }\n\n/**\n * Chain Node Manifest\n */\nexport const ChainNodeManifest = Chain as PackageManifestPayload\n/**\n * Pending Node Manifest\n */\nexport const PendingNodeManifest = Pending as PackageManifestPayload\n/**\n * Public Child Manifests\n */\nexport const PublicChildManifests: ModuleManifest[] = [\n ...ChainNodeManifest.nodes,\n ...PendingNodeManifest.nodes,\n]\n"],"mappings":"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","names":["customPoweredByHeader","disableCaseSensitiveRouting","disableExpressDefaultPoweredByHeader","getJsonBodyParser","getJsonBodyParserOptions","responseProfiler","standardErrors","standardResponses","compression","cors","express","registerInstrumentations","ExpressInstrumentation","HttpInstrumentation","addInstrumentation","instrumentations","HttpInstrumentation","ExpressInstrumentation","registerInstrumentations","StatusCodes","assertEx","asyncHandler","asAddress","toAddress","isModuleIdentifierPart","StatusCodes","handler","req","res","next","address","rawAddress","params","node","app","asAddress","undefined","mod","resolve","direction","json","state","isModuleIdentifierPart","moduleIdentifier","toAddress","moduleAddress","assertEx","redirect","StatusCodes","MOVED_TEMPORARILY","getAddress","asyncHandler","assertEx","asyncHandler","asAddress","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","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","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","archivistModuleIdentifier","use","archivistMiddleware","setRawResponseFormat","NodeXyoViewer","NodeXyoRunner","rpcEngineFromProvider","XyoConnection","addRpcRoutes","app","node","runner","NodeXyoRunner","viewer","NodeXyoViewer","provider","XyoConnection","engine","rpcEngineFromProvider","post","req","res","setRawResponseFormat","handle","body","_","rpcResponse","json","addRoutes","app","addRpcRoutes","addDataLakeRoutes","addNodeRoutes","getApp","node","addInstrumentation","app","express","set","use","cors","compression","responseProfiler","getJsonBodyParser","getJsonBodyParserOptions","limit","standardResponses","disableExpressDefaultPoweredByHeader","customPoweredByHeader","disableCaseSensitiveRouting","addRoutes","standardErrors","assertEx","isDefined","isString","boot","HDWallet","assertEx","asAddress","ZERO_ADDRESS","BaseMongoSdk","isDefined","MemoryArchivist","MongoDBArchivistV2","ViewArchivist","AddressBalanceDivinerV2","ArchivistSyncDiviner","balanceSummaryRepositoryFromMap","HeadValidationDiviner","initTelemetry","AbstractModule","LoggerModuleStatusReporter","ModuleFactoryLocator","MemorySentinel","hasMongoConfig","assertEx","AbstractCreatable","creatable","isNull","stripMongoId","doc","_id","rest","MongoMap","AbstractCreatable","sdk","assertEx","params","clear","deleteMany","delete","id","filter","result","deleteOne","deletedCount","get","findOne","isNull","undefined","has","exists","set","data","value","replaceOne","upsert","startHandler","getLocator","context","config","logger","otlpEndpoint","telemetry","otel","traceProvider","meterProvider","initTelemetry","attributes","serviceName","serviceVersion","metricsConfig","endpoint","port","isDefined","AbstractModule","defaultLogger","statusReporter","LoggerModuleStatusReporter","undefined","locator","ModuleFactoryLocator","summaryMap","Map","mongoConfig","storage","mongo","hasMongoConfig","connectionString","dbConnectionString","database","dbName","domain","dbDomain","password","dbPassword","username","dbUserName","payloadSdkConfig","params","register","MongoDBArchivistV2","factory","sdk","BaseMongoSdk","collection","MongoMap","create","summaryRepository","balanceSummaryRepositoryFromMap","AddressBalanceDivinerV2","chainId","chain","id","assertEx","asAddress","ZERO_ADDRESS","HeadValidationDiviner","MemoryArchivist","MemorySentinel","ViewArchivist","ArchivistSyncDiviner","ManifestWrapper","NodeManifest","node","PrivateChildManifests","ChainNodeManifest","Chain","PendingNodeManifest","Pending","PublicChildManifests","nodes","getNode","context","wallet","locator","getLocator","wrapper","ManifestWrapper","NodeManifest","PublicChildManifests","PrivateChildManifests","node","childNodes","loadNodes","length","Promise","all","map","childNode","register","attach","address","hostname","getSeedPhrase","bios","config","logger","storedSeedPhrase","seedPhraseStore","get","debug","mnemonic","api","isString","warn","set","seedPhrase","HDWallet","generateMnemonic","log","assertEx","getServer","context","node","port","boot","isDefined","wallet","fromPhrase","nodeContext","app","getApp","getNode","server","listen","setTimeout"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Payload } from '@xyo-network/payload-model';
|
|
2
2
|
import type { AddressPathParams } from '../AddressPathParams.ts';
|
|
3
|
-
export declare const getAddress: (req: import("express").Request<AddressPathParams, Payload[], any, import("
|
|
3
|
+
export declare const getAddress: (req: import("express").Request<AddressPathParams, Payload[], any, import("qs").ParsedQs, Record<string, any>>, res: import("express").Response<Payload[], Record<string, any>>, next: import("express").NextFunction) => Promise<unknown>;
|
|
4
4
|
//# sourceMappingURL=get.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../../src/server/routes/address/get/get.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAIzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAwBhE,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../../src/server/routes/address/get/get.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAIzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAwBhE,eAAO,MAAM,UAAU,4OAAwB,CAAA"}
|
|
@@ -3,6 +3,6 @@ import type { ModuleQueryResult } from '@xyo-network/module-model';
|
|
|
3
3
|
import type { ModuleError, Payload } from '@xyo-network/payload-model';
|
|
4
4
|
import type { AddressPathParams } from '../AddressPathParams.ts';
|
|
5
5
|
type PostAddressRequestBody = [QueryBoundWitness, undefined | Payload[]];
|
|
6
|
-
export declare const postAddress: (req: import("express").Request<AddressPathParams, ModuleError | ModuleQueryResult, PostAddressRequestBody, import("
|
|
6
|
+
export declare const postAddress: (req: import("express").Request<AddressPathParams, ModuleError | ModuleQueryResult, PostAddressRequestBody, import("qs").ParsedQs, Record<string, any>>, res: import("express").Response<ModuleError | ModuleQueryResult, Record<string, any>>, next: import("express").NextFunction) => Promise<unknown>;
|
|
7
7
|
export {};
|
|
8
8
|
//# sourceMappingURL=post.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../../../../src/server/routes/address/post/post.ts"],"names":[],"mappings":"AAOA,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAE7F,OAAO,KAAK,EAAkB,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAItE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAGhE,KAAK,sBAAsB,GAAG,CAAC,iBAAiB,EAAE,SAAS,GAAG,OAAO,EAAE,CAAC,CAAA;AA2DxE,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../../../../../src/server/routes/address/post/post.ts"],"names":[],"mappings":"AAOA,OAAO,EAAuB,KAAK,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAE7F,OAAO,KAAK,EAAkB,iBAAiB,EAAE,MAAM,2BAA2B,CAAA;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAItE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAA;AAGhE,KAAK,sBAAsB,GAAG,CAAC,iBAAiB,EAAE,SAAS,GAAG,OAAO,EAAE,CAAC,CAAA;AA2DxE,eAAO,MAAM,WAAW,2SAAwB,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { RequestHandler } from 'express';
|
|
2
|
-
export declare const getHealthz: RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("
|
|
2
|
+
export declare const getHealthz: RequestHandler<import("express-serve-static-core").ParamsDictionary, any, any, import("qs").ParsedQs, Record<string, any>>;
|
|
3
3
|
//# sourceMappingURL=get.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/healthz/get.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAiB7C,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/healthz/get.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAiB7C,eAAO,MAAM,UAAU,4HAAU,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/chain-api",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.12.1",
|
|
4
4
|
"description": "XYO Layer One API",
|
|
5
5
|
"homepage": "https://xylabs.com",
|
|
6
6
|
"bugs": {
|
|
@@ -49,36 +49,36 @@
|
|
|
49
49
|
"@opentelemetry/instrumentation": "~0.203.0",
|
|
50
50
|
"@opentelemetry/instrumentation-express": "~0.52.0",
|
|
51
51
|
"@opentelemetry/instrumentation-http": "~0.203.0",
|
|
52
|
-
"@xylabs/assert": "~5.0.
|
|
53
|
-
"@xylabs/creatable": "~5.0.
|
|
54
|
-
"@xylabs/express": "~5.0.
|
|
55
|
-
"@xylabs/hex": "~5.0.
|
|
56
|
-
"@xylabs/logger": "~5.0.
|
|
57
|
-
"@xylabs/mongo": "~5.0.
|
|
58
|
-
"@xylabs/typeof": "~5.0.
|
|
59
|
-
"@xyo-network/archivist-memory": "~5.0.
|
|
60
|
-
"@xyo-network/archivist-model": "~5.0.
|
|
61
|
-
"@xyo-network/archivist-mongodb": "~5.0.
|
|
62
|
-
"@xyo-network/archivist-view": "~5.0.
|
|
52
|
+
"@xylabs/assert": "~5.0.8",
|
|
53
|
+
"@xylabs/creatable": "~5.0.8",
|
|
54
|
+
"@xylabs/express": "~5.0.8",
|
|
55
|
+
"@xylabs/hex": "~5.0.8",
|
|
56
|
+
"@xylabs/logger": "~5.0.8",
|
|
57
|
+
"@xylabs/mongo": "~5.0.8",
|
|
58
|
+
"@xylabs/typeof": "~5.0.8",
|
|
59
|
+
"@xyo-network/archivist-memory": "~5.0.5",
|
|
60
|
+
"@xyo-network/archivist-model": "~5.0.5",
|
|
61
|
+
"@xyo-network/archivist-mongodb": "~5.0.5",
|
|
62
|
+
"@xyo-network/archivist-view": "~5.0.5",
|
|
63
63
|
"@xyo-network/bios": "~7.0.1",
|
|
64
|
-
"@xyo-network/boundwitness-model": "~5.0.
|
|
65
|
-
"@xyo-network/chain-modules": "~1.
|
|
66
|
-
"@xyo-network/chain-protocol": "~1.
|
|
67
|
-
"@xyo-network/chain-rpc": "~1.
|
|
68
|
-
"@xyo-network/chain-telemetry": "~1.
|
|
69
|
-
"@xyo-network/manifest-model": "~5.0.
|
|
70
|
-
"@xyo-network/manifest-wrapper": "~5.0.
|
|
71
|
-
"@xyo-network/module-abstract": "~5.0.
|
|
72
|
-
"@xyo-network/module-factory-locator": "~5.0.
|
|
73
|
-
"@xyo-network/module-model": "~5.0.
|
|
74
|
-
"@xyo-network/node-model": "~5.0.
|
|
75
|
-
"@xyo-network/payload-builder": "~5.0.
|
|
76
|
-
"@xyo-network/payload-model": "~5.0.
|
|
77
|
-
"@xyo-network/sentinel-memory": "~5.0.
|
|
78
|
-
"@xyo-network/wallet": "~5.0.
|
|
79
|
-
"@xyo-network/wallet-model": "~5.0.
|
|
80
|
-
"@xyo-network/xl1-protocol-sdk": "~1.
|
|
81
|
-
"@xyo-network/xl1-rpc": "~1.
|
|
64
|
+
"@xyo-network/boundwitness-model": "~5.0.5",
|
|
65
|
+
"@xyo-network/chain-modules": "~1.12.1",
|
|
66
|
+
"@xyo-network/chain-protocol": "~1.12.1",
|
|
67
|
+
"@xyo-network/chain-rpc": "~1.12.1",
|
|
68
|
+
"@xyo-network/chain-telemetry": "~1.12.1",
|
|
69
|
+
"@xyo-network/manifest-model": "~5.0.5",
|
|
70
|
+
"@xyo-network/manifest-wrapper": "~5.0.5",
|
|
71
|
+
"@xyo-network/module-abstract": "~5.0.5",
|
|
72
|
+
"@xyo-network/module-factory-locator": "~5.0.5",
|
|
73
|
+
"@xyo-network/module-model": "~5.0.5",
|
|
74
|
+
"@xyo-network/node-model": "~5.0.5",
|
|
75
|
+
"@xyo-network/payload-builder": "~5.0.5",
|
|
76
|
+
"@xyo-network/payload-model": "~5.0.5",
|
|
77
|
+
"@xyo-network/sentinel-memory": "~5.0.5",
|
|
78
|
+
"@xyo-network/wallet": "~5.0.5",
|
|
79
|
+
"@xyo-network/wallet-model": "~5.0.5",
|
|
80
|
+
"@xyo-network/xl1-protocol-sdk": "~1.12.1",
|
|
81
|
+
"@xyo-network/xl1-rpc": "~1.12.1",
|
|
82
82
|
"compression": "~1.8.1",
|
|
83
83
|
"cors": "~2.8.5",
|
|
84
84
|
"express": "~5.1.0",
|
|
@@ -90,20 +90,19 @@
|
|
|
90
90
|
"@types/cors": "~2.8.19",
|
|
91
91
|
"@types/express": "5.0.3",
|
|
92
92
|
"@types/express-serve-static-core": "~5.0.7",
|
|
93
|
-
"@types/node": "~24.2.
|
|
94
|
-
"@xylabs/base": "~5.0.
|
|
95
|
-
"@xylabs/object": "~5.0.
|
|
96
|
-
"@xylabs/ts-scripts-yarn3": "~7.1.
|
|
97
|
-
"@xylabs/tsconfig": "~7.1.
|
|
98
|
-
"@xyo-network/account": "~5.0.
|
|
99
|
-
"@xyo-network/account-model": "~5.0.
|
|
100
|
-
"@xyo-network/archivist-abstract": "~5.0.
|
|
93
|
+
"@types/node": "~24.2.1",
|
|
94
|
+
"@xylabs/base": "~5.0.8",
|
|
95
|
+
"@xylabs/object": "~5.0.8",
|
|
96
|
+
"@xylabs/ts-scripts-yarn3": "~7.1.2",
|
|
97
|
+
"@xylabs/tsconfig": "~7.1.2",
|
|
98
|
+
"@xyo-network/account": "~5.0.5",
|
|
99
|
+
"@xyo-network/account-model": "~5.0.5",
|
|
100
|
+
"@xyo-network/archivist-abstract": "~5.0.5",
|
|
101
101
|
"@xyo-network/bios-model": "~7.0.1",
|
|
102
|
-
"@xyo-network/boundwitness-builder": "~5.0.
|
|
103
|
-
"@xyo-network/module-abstract-mongodb": "~5.0.
|
|
104
|
-
"@xyo-network/module-model-mongodb": "~5.0.
|
|
105
|
-
"@xyo-network/node-memory": "~5.0.
|
|
106
|
-
"@xyo-network/xl1-protocol-sdk": "~1.11.0",
|
|
102
|
+
"@xyo-network/boundwitness-builder": "~5.0.5",
|
|
103
|
+
"@xyo-network/module-abstract-mongodb": "~5.0.5",
|
|
104
|
+
"@xyo-network/module-model-mongodb": "~5.0.5",
|
|
105
|
+
"@xyo-network/node-memory": "~5.0.5",
|
|
107
106
|
"dotenv": "~17.2.1",
|
|
108
107
|
"nodemon": "~3.1.10",
|
|
109
108
|
"tslib": "~2.8.1",
|