@xyo-network/chain-reward-redemption 1.15.10

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.
Files changed (120) hide show
  1. package/LICENSE +165 -0
  2. package/README.md +96 -0
  3. package/dist/node/index.d.ts +2 -0
  4. package/dist/node/index.d.ts.map +1 -0
  5. package/dist/node/index.mjs +461 -0
  6. package/dist/node/index.mjs.map +1 -0
  7. package/dist/node/manifest/getLocator.d.ts +14 -0
  8. package/dist/node/manifest/getLocator.d.ts.map +1 -0
  9. package/dist/node/manifest/getNode.d.ts +15 -0
  10. package/dist/node/manifest/getNode.d.ts.map +1 -0
  11. package/dist/node/manifest/index.d.ts +6 -0
  12. package/dist/node/manifest/index.d.ts.map +1 -0
  13. package/dist/node/manifest/nodeManifest.d.ts +6 -0
  14. package/dist/node/manifest/nodeManifest.d.ts.map +1 -0
  15. package/dist/node/manifest/private/index.d.ts +5 -0
  16. package/dist/node/manifest/private/index.d.ts.map +1 -0
  17. package/dist/node/manifest/public/index.d.ts +6 -0
  18. package/dist/node/manifest/public/index.d.ts.map +1 -0
  19. package/dist/node/server/app.d.ts +4 -0
  20. package/dist/node/server/app.d.ts.map +1 -0
  21. package/dist/node/server/index.d.ts +11 -0
  22. package/dist/node/server/index.d.ts.map +1 -0
  23. package/dist/node/server/instrumentation.d.ts +9 -0
  24. package/dist/node/server/instrumentation.d.ts.map +1 -0
  25. package/dist/node/server/routes/addRoutes.d.ts +3 -0
  26. package/dist/node/server/routes/addRoutes.d.ts.map +1 -0
  27. package/dist/node/server/routes/address/AddressPathParams.d.ts +4 -0
  28. package/dist/node/server/routes/address/AddressPathParams.d.ts.map +1 -0
  29. package/dist/node/server/routes/address/addNodeRoutes.d.ts +3 -0
  30. package/dist/node/server/routes/address/addNodeRoutes.d.ts.map +1 -0
  31. package/dist/node/server/routes/address/get/get.d.ts +4 -0
  32. package/dist/node/server/routes/address/get/get.d.ts.map +1 -0
  33. package/dist/node/server/routes/address/get/index.d.ts +2 -0
  34. package/dist/node/server/routes/address/get/index.d.ts.map +1 -0
  35. package/dist/node/server/routes/address/index.d.ts +2 -0
  36. package/dist/node/server/routes/address/index.d.ts.map +1 -0
  37. package/dist/node/server/routes/address/post/getQueryConfig.d.ts +6 -0
  38. package/dist/node/server/routes/address/post/getQueryConfig.d.ts.map +1 -0
  39. package/dist/node/server/routes/address/post/index.d.ts +2 -0
  40. package/dist/node/server/routes/address/post/index.d.ts.map +1 -0
  41. package/dist/node/server/routes/address/post/post.d.ts +8 -0
  42. package/dist/node/server/routes/address/post/post.d.ts.map +1 -0
  43. package/dist/node/server/routes/dataLake/addDataLakeRoutes.d.ts +3 -0
  44. package/dist/node/server/routes/dataLake/addDataLakeRoutes.d.ts.map +1 -0
  45. package/dist/node/server/routes/dataLake/archivistMiddleware.d.ts +10 -0
  46. package/dist/node/server/routes/dataLake/archivistMiddleware.d.ts.map +1 -0
  47. package/dist/node/server/routes/dataLake/index.d.ts +2 -0
  48. package/dist/node/server/routes/dataLake/index.d.ts.map +1 -0
  49. package/dist/node/server/routes/healthz/get.d.ts +4 -0
  50. package/dist/node/server/routes/healthz/get.d.ts.map +1 -0
  51. package/dist/node/server/routes/healthz/index.d.ts +2 -0
  52. package/dist/node/server/routes/healthz/index.d.ts.map +1 -0
  53. package/dist/node/server/routes/index.d.ts +4 -0
  54. package/dist/node/server/routes/index.d.ts.map +1 -0
  55. package/dist/node/server/routes/rewardRedemption/addRewardRoutes.d.ts +3 -0
  56. package/dist/node/server/routes/rewardRedemption/addRewardRoutes.d.ts.map +1 -0
  57. package/dist/node/server/routes/rewardRedemption/index.d.ts +2 -0
  58. package/dist/node/server/routes/rewardRedemption/index.d.ts.map +1 -0
  59. package/dist/node/server/routes/rewardRedemption/middleware/index.d.ts +2 -0
  60. package/dist/node/server/routes/rewardRedemption/middleware/index.d.ts.map +1 -0
  61. package/dist/node/server/routes/rewardRedemption/middleware/requestHandlerValidator.d.ts +32 -0
  62. package/dist/node/server/routes/rewardRedemption/middleware/requestHandlerValidator.d.ts.map +1 -0
  63. package/dist/node/server/routes/rewardRedemption/routeDefinitions/getRouteDefinitions.d.ts +3 -0
  64. package/dist/node/server/routes/rewardRedemption/routeDefinitions/getRouteDefinitions.d.ts.map +1 -0
  65. package/dist/node/server/routes/rewardRedemption/routeDefinitions/index.d.ts +2 -0
  66. package/dist/node/server/routes/rewardRedemption/routeDefinitions/index.d.ts.map +1 -0
  67. package/dist/node/server/routes/rewardRedemption/routeDefinitions/pathParams/AddressPathParam.d.ts +2 -0
  68. package/dist/node/server/routes/rewardRedemption/routeDefinitions/pathParams/AddressPathParam.d.ts.map +1 -0
  69. package/dist/node/server/routes/rewardRedemption/routeDefinitions/pathParams/index.d.ts +2 -0
  70. package/dist/node/server/routes/rewardRedemption/routeDefinitions/pathParams/index.d.ts.map +1 -0
  71. package/dist/node/server/routes/rewardRedemption/routeDefinitions/routeDefinition.d.ts +8 -0
  72. package/dist/node/server/routes/rewardRedemption/routeDefinitions/routeDefinition.d.ts.map +1 -0
  73. package/dist/node/server/routes/rewardRedemption/routeDefinitions/routes/claim.d.ts +3 -0
  74. package/dist/node/server/routes/rewardRedemption/routeDefinitions/routes/claim.d.ts.map +1 -0
  75. package/dist/node/server/routes/rewardRedemption/routeDefinitions/routes/index.d.ts +3 -0
  76. package/dist/node/server/routes/rewardRedemption/routeDefinitions/routes/index.d.ts.map +1 -0
  77. package/dist/node/server/routes/rewardRedemption/routeDefinitions/routes/redeem.d.ts +3 -0
  78. package/dist/node/server/routes/rewardRedemption/routeDefinitions/routes/redeem.d.ts.map +1 -0
  79. package/dist/node/server/server.d.ts +11 -0
  80. package/dist/node/server/server.d.ts.map +1 -0
  81. package/package.json +137 -0
  82. package/src/index.ts +1 -0
  83. package/src/manifest/getLocator.ts +75 -0
  84. package/src/manifest/getNode.ts +32 -0
  85. package/src/manifest/index.ts +5 -0
  86. package/src/manifest/node.json +32 -0
  87. package/src/manifest/nodeManifest.ts +8 -0
  88. package/src/manifest/private/index.ts +4 -0
  89. package/src/manifest/public/index.ts +6 -0
  90. package/src/server/app.ts +30 -0
  91. package/src/server/index.ts +13 -0
  92. package/src/server/instrumentation.ts +15 -0
  93. package/src/server/routes/addRoutes.ts +9 -0
  94. package/src/server/routes/address/AddressPathParams.ts +3 -0
  95. package/src/server/routes/address/addNodeRoutes.ts +21 -0
  96. package/src/server/routes/address/get/get.ts +33 -0
  97. package/src/server/routes/address/get/index.ts +1 -0
  98. package/src/server/routes/address/index.ts +1 -0
  99. package/src/server/routes/address/post/getQueryConfig.ts +23 -0
  100. package/src/server/routes/address/post/index.ts +1 -0
  101. package/src/server/routes/address/post/post.ts +77 -0
  102. package/src/server/routes/dataLake/addDataLakeRoutes.ts +9 -0
  103. package/src/server/routes/dataLake/archivistMiddleware.ts +86 -0
  104. package/src/server/routes/dataLake/index.ts +1 -0
  105. package/src/server/routes/healthz/get.ts +20 -0
  106. package/src/server/routes/healthz/index.ts +1 -0
  107. package/src/server/routes/index.ts +3 -0
  108. package/src/server/routes/rewardRedemption/addRewardRoutes.ts +10 -0
  109. package/src/server/routes/rewardRedemption/index.ts +1 -0
  110. package/src/server/routes/rewardRedemption/middleware/index.ts +1 -0
  111. package/src/server/routes/rewardRedemption/middleware/requestHandlerValidator.ts +120 -0
  112. package/src/server/routes/rewardRedemption/routeDefinitions/getRouteDefinitions.ts +9 -0
  113. package/src/server/routes/rewardRedemption/routeDefinitions/index.ts +1 -0
  114. package/src/server/routes/rewardRedemption/routeDefinitions/pathParams/AddressPathParam.ts +1 -0
  115. package/src/server/routes/rewardRedemption/routeDefinitions/pathParams/index.ts +1 -0
  116. package/src/server/routes/rewardRedemption/routeDefinitions/routeDefinition.ts +18 -0
  117. package/src/server/routes/rewardRedemption/routeDefinitions/routes/claim.ts +31 -0
  118. package/src/server/routes/rewardRedemption/routeDefinitions/routes/index.ts +2 -0
  119. package/src/server/routes/rewardRedemption/routeDefinitions/routes/redeem.ts +26 -0
  120. package/src/server/server.ts +58 -0
@@ -0,0 +1,461 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+
4
+ // src/server/app.ts
5
+ import { customPoweredByHeader, disableCaseSensitiveRouting, disableExpressDefaultPoweredByHeader, getJsonBodyParser, getJsonBodyParserOptions, responseProfiler, standardErrors, standardResponses } from "@xylabs/express";
6
+ import compression from "compression";
7
+ import cors from "cors";
8
+ import express2 from "express";
9
+
10
+ // src/server/instrumentation.ts
11
+ import { registerInstrumentations } from "@opentelemetry/instrumentation";
12
+ import { ExpressInstrumentation } from "@opentelemetry/instrumentation-express";
13
+ import { HttpInstrumentation } from "@opentelemetry/instrumentation-http";
14
+ var addInstrumentation = /* @__PURE__ */ __name(() => {
15
+ const instrumentations = [
16
+ new HttpInstrumentation(),
17
+ new ExpressInstrumentation()
18
+ ];
19
+ registerInstrumentations({
20
+ instrumentations
21
+ });
22
+ }, "addInstrumentation");
23
+
24
+ // src/server/routes/dataLake/archivistMiddleware.ts
25
+ import { setRawResponseFormat } from "@xylabs/express";
26
+ import { asHash } from "@xylabs/hex";
27
+ import { isDefined } from "@xylabs/typeof";
28
+ import { asArchivistInstance } from "@xyo-network/archivist-model";
29
+ import { PayloadBuilder } from "@xyo-network/payload-builder";
30
+ import { isAnyPayload, isSequence } from "@xyo-network/payload-model";
31
+ import express from "express";
32
+ var resolveArchivist = /* @__PURE__ */ __name(async (node, archivistModuleIdentifier) => {
33
+ const mod = await node.resolve(archivistModuleIdentifier);
34
+ return asArchivistInstance(mod, {
35
+ required: true
36
+ });
37
+ }, "resolveArchivist");
38
+ var archivistInstance;
39
+ var getArchivist = /* @__PURE__ */ __name(async (node, archivistModuleIdentifier) => {
40
+ if (isDefined(archivistInstance)) return archivistInstance;
41
+ archivistInstance = await resolveArchivist(node, archivistModuleIdentifier);
42
+ return archivistInstance;
43
+ }, "getArchivist");
44
+ var archivistMiddleware = /* @__PURE__ */ __name((options) => {
45
+ const { node, archivistModuleIdentifier } = options;
46
+ const router = express.Router({
47
+ mergeParams: true
48
+ });
49
+ router.post("/insert", async (req, res) => {
50
+ setRawResponseFormat(res);
51
+ const body3 = Array.isArray(req.body) ? req.body : [
52
+ req.body
53
+ ];
54
+ const payloads = (await PayloadBuilder.hashPairs(body3)).map((p) => p[0]);
55
+ const archivist = await getArchivist(node, archivistModuleIdentifier);
56
+ const result = await archivist.insert(payloads);
57
+ res.status(200).json(result);
58
+ });
59
+ router.get("/next", async (req, res) => {
60
+ setRawResponseFormat(res);
61
+ const cursor = isSequence(req.query.cursor) ? req.query.cursor : void 0;
62
+ const limit = isDefined(req.query.limit) ? Number(req.query.limit) : void 0;
63
+ const open = isDefined(req.query.open) ? Boolean(req.query.open) : void 0;
64
+ const order = req.query.order === "asc" ? "asc" : "desc";
65
+ const options2 = {
66
+ limit,
67
+ open,
68
+ order,
69
+ cursor
70
+ };
71
+ const archivist = await getArchivist(node, archivistModuleIdentifier);
72
+ const result = await archivist.next(options2);
73
+ res.status(200).json(result);
74
+ });
75
+ router.post("/next", async (req, res) => {
76
+ setRawResponseFormat(res);
77
+ const options2 = req.body;
78
+ const archivist = await getArchivist(node, archivistModuleIdentifier);
79
+ const result = await (isDefined(options2) ? archivist.next(options2) : archivist.next());
80
+ res.status(200).json(result);
81
+ });
82
+ router.get("/get/:hash", async (req, res) => {
83
+ setRawResponseFormat(res);
84
+ const { hash: rawHash } = req.params;
85
+ const hash = asHash(rawHash);
86
+ if (isDefined(hash)) {
87
+ const archivist = await getArchivist(node, archivistModuleIdentifier);
88
+ const [payload] = await archivist.get([
89
+ hash
90
+ ]);
91
+ if (isAnyPayload(payload)) {
92
+ res.json(payload);
93
+ return;
94
+ }
95
+ }
96
+ res.status(400).send();
97
+ });
98
+ return router;
99
+ }, "archivistMiddleware");
100
+
101
+ // src/server/routes/dataLake/addDataLakeRoutes.ts
102
+ var addDataLakeRoutes = /* @__PURE__ */ __name((app) => {
103
+ const { node } = app;
104
+ const archivistModuleIdentifier = "RewardsArchivist";
105
+ app.use("/data", archivistMiddleware({
106
+ node,
107
+ archivistModuleIdentifier
108
+ }));
109
+ }, "addDataLakeRoutes");
110
+
111
+ // src/server/routes/rewardRedemption/routeDefinitions/routes/claim.ts
112
+ import { PayloadZodLoose } from "@xyo-network/payload-model";
113
+ import { z as z2 } from "zod";
114
+
115
+ // src/server/routes/rewardRedemption/middleware/requestHandlerValidator.ts
116
+ import { isPromise } from "@xylabs/typeof";
117
+ import { ReasonPhrases, StatusCodes } from "http-status-codes";
118
+ import { z } from "zod";
119
+ var EmptyParamsZod = z.object({}).catchall(z.string());
120
+ var EmptyQueryParamsZod = z.object({}).catchall(z.union([
121
+ z.string(),
122
+ z.array(z.string())
123
+ ]));
124
+ var ValidateRequestDefaults = {
125
+ params: EmptyParamsZod,
126
+ query: EmptyQueryParamsZod,
127
+ body: z.json(),
128
+ response: z.json()
129
+ };
130
+ function requestHandlerValidator(schemas) {
131
+ const validators = {
132
+ ...ValidateRequestDefaults,
133
+ ...schemas
134
+ };
135
+ return (handler) => {
136
+ return async (req, res, next) => {
137
+ const originalJson = res.json.bind(res);
138
+ try {
139
+ const errors = [];
140
+ const keys = [
141
+ "params",
142
+ "query",
143
+ "body"
144
+ ];
145
+ for (const key of keys) {
146
+ const validator = validators[key];
147
+ const result2 = validator.safeParse(req[key]);
148
+ if (result2.success) {
149
+ Object.assign(req[key], result2.data);
150
+ } else {
151
+ errors.push(...result2.error.issues.map((issue) => issue.path.length === 0 ? `${key}: ${issue.message}` : `${key}.${issue.path.join(".")}: ${issue.message}`));
152
+ }
153
+ }
154
+ if (errors.length > 0) {
155
+ const message = errors.join("; ");
156
+ const err = new Error(message);
157
+ err.name = ReasonPhrases.BAD_REQUEST;
158
+ err.statusCode = StatusCodes.BAD_REQUEST;
159
+ next(err);
160
+ return false;
161
+ }
162
+ res.json = (data) => {
163
+ const result2 = validators.response.safeParse(data);
164
+ if (result2.success) {
165
+ return originalJson(result2.data);
166
+ } else {
167
+ const message = result2.error.issues.map((issue) => issue.path.length === 0 ? `response: ${issue.message}` : `response.${issue.path.join(".")}: ${issue.message}`).join("; ");
168
+ const err = new Error(message);
169
+ err.name = ReasonPhrases.INTERNAL_SERVER_ERROR;
170
+ err.statusCode = StatusCodes.INTERNAL_SERVER_ERROR;
171
+ res.json = originalJson;
172
+ throw err;
173
+ }
174
+ };
175
+ const result = handler(req, res, next);
176
+ if (result && isPromise(result)) {
177
+ await result;
178
+ }
179
+ } catch (err) {
180
+ res.json = originalJson;
181
+ next(err);
182
+ }
183
+ };
184
+ };
185
+ }
186
+ __name(requestHandlerValidator, "requestHandlerValidator");
187
+
188
+ // src/server/routes/rewardRedemption/routeDefinitions/pathParams/AddressPathParam.ts
189
+ import { EthAddressFromStringZod } from "@xylabs/hex";
190
+
191
+ // src/server/routes/rewardRedemption/routeDefinitions/routes/claim.ts
192
+ var params = z2.object({
193
+ address: EthAddressFromStringZod
194
+ });
195
+ var body = PayloadZodLoose;
196
+ var response = PayloadZodLoose;
197
+ var validateRequest = requestHandlerValidator({
198
+ params,
199
+ body,
200
+ response
201
+ });
202
+ var postClaim = {
203
+ method: "post",
204
+ path: "/rewards/claim/:address",
205
+ handlers: validateRequest(async (req, res) => {
206
+ const { address } = req.params;
207
+ await Promise.resolve();
208
+ const observation = {
209
+ schema: "network.xyo.test"
210
+ };
211
+ res.json(observation);
212
+ })
213
+ };
214
+
215
+ // src/server/routes/rewardRedemption/routeDefinitions/routes/redeem.ts
216
+ import { PayloadZodLoose as PayloadZodLoose2 } from "@xyo-network/payload-model";
217
+ import { z as z3 } from "zod";
218
+ var params2 = z3.object({
219
+ address: EthAddressFromStringZod
220
+ });
221
+ var body2 = PayloadZodLoose2;
222
+ var response2 = PayloadZodLoose2;
223
+ var validateRequest2 = requestHandlerValidator({
224
+ params: params2,
225
+ body: body2,
226
+ response: response2
227
+ });
228
+ var postRedeem = {
229
+ method: "post",
230
+ path: "/rewards/redeem/:address",
231
+ handlers: validateRequest2(async (req, res) => {
232
+ const { body: body3 } = req;
233
+ await Promise.resolve();
234
+ const bridgeObservation = {
235
+ schema: "network.xyo.test"
236
+ };
237
+ res.json(bridgeObservation);
238
+ })
239
+ };
240
+
241
+ // src/server/routes/rewardRedemption/routeDefinitions/getRouteDefinitions.ts
242
+ var getRouteDefinitions = /* @__PURE__ */ __name(() => {
243
+ return [
244
+ postClaim,
245
+ postRedeem
246
+ ];
247
+ }, "getRouteDefinitions");
248
+
249
+ // src/server/routes/rewardRedemption/addRewardRoutes.ts
250
+ var addRewardRedemptionRoutes = /* @__PURE__ */ __name((app) => {
251
+ const routeDefinitions = getRouteDefinitions();
252
+ for (const definition of routeDefinitions) {
253
+ app[definition.method](definition.path, definition.handlers);
254
+ }
255
+ }, "addRewardRedemptionRoutes");
256
+
257
+ // src/server/routes/addRoutes.ts
258
+ var addRoutes = /* @__PURE__ */ __name((app) => {
259
+ addDataLakeRoutes(app);
260
+ addRewardRedemptionRoutes(app);
261
+ }, "addRoutes");
262
+
263
+ // src/server/app.ts
264
+ var getApp = /* @__PURE__ */ __name((node) => {
265
+ addInstrumentation();
266
+ const app = express2();
267
+ app.set("etag", false);
268
+ app.use(cors());
269
+ app.use(compression());
270
+ app.use(responseProfiler);
271
+ app.use(getJsonBodyParser(getJsonBodyParserOptions({
272
+ limit: "1mb"
273
+ })));
274
+ app.use(standardResponses);
275
+ disableExpressDefaultPoweredByHeader(app);
276
+ app.use(customPoweredByHeader);
277
+ disableCaseSensitiveRouting(app);
278
+ app.node = node;
279
+ addRoutes(app);
280
+ app.use(standardErrors);
281
+ return app;
282
+ }, "getApp");
283
+
284
+ // src/server/server.ts
285
+ import { assertEx } from "@xylabs/assert";
286
+ import { isDefined as isDefined3, isString } from "@xylabs/typeof";
287
+ import { boot } from "@xyo-network/bios";
288
+ import { HDWallet } from "@xyo-network/wallet";
289
+
290
+ // src/manifest/getLocator.ts
291
+ import { isDefined as isDefined2 } from "@xylabs/typeof";
292
+ import { MemoryArchivist } from "@xyo-network/archivist-memory";
293
+ import { MongoDBArchivistV2 } from "@xyo-network/archivist-mongodb";
294
+ import { ViewArchivist } from "@xyo-network/archivist-view";
295
+ import { ArchivistSyncDiviner } from "@xyo-network/chain-modules";
296
+ import { initTelemetry } from "@xyo-network/chain-telemetry";
297
+ import { AbstractModule, LoggerModuleStatusReporter } from "@xyo-network/module-abstract";
298
+ import { ModuleFactoryLocator } from "@xyo-network/module-factory-locator";
299
+ import { MemorySentinel } from "@xyo-network/sentinel-memory";
300
+ import { hasMongoConfig } from "@xyo-network/xl1-protocol-sdk";
301
+ var getLocator = /* @__PURE__ */ __name(async (context) => {
302
+ const { config, logger } = context;
303
+ const { otlpEndpoint } = config.telemetry?.otel ?? {};
304
+ const { traceProvider, meterProvider } = await initTelemetry({
305
+ attributes: {
306
+ serviceName: "xl1-rewards",
307
+ serviceVersion: "1.0.0"
308
+ },
309
+ otlpEndpoint,
310
+ metricsConfig: {
311
+ endpoint: "/metrics",
312
+ port: 9465
313
+ }
314
+ });
315
+ if (isDefined2(logger)) AbstractModule.defaultLogger = logger;
316
+ const statusReporter = logger ? new LoggerModuleStatusReporter(logger) : void 0;
317
+ const locator = new ModuleFactoryLocator();
318
+ const mongoConfig = config.storage?.mongo;
319
+ if (hasMongoConfig(mongoConfig)) {
320
+ const { connectionString: dbConnectionString, database: dbName, domain: dbDomain, password: dbPassword, username: dbUserName } = mongoConfig;
321
+ const payloadSdkConfig = {
322
+ dbConnectionString,
323
+ dbDomain,
324
+ dbName,
325
+ dbPassword,
326
+ dbUserName
327
+ };
328
+ const params3 = {
329
+ meterProvider,
330
+ payloadSdkConfig,
331
+ statusReporter,
332
+ traceProvider
333
+ };
334
+ locator.register(MongoDBArchivistV2.factory(params3), void 0, true);
335
+ }
336
+ locator.register(MemoryArchivist.factory({
337
+ traceProvider,
338
+ meterProvider,
339
+ statusReporter
340
+ }));
341
+ locator.register(MemorySentinel.factory({
342
+ traceProvider,
343
+ meterProvider,
344
+ statusReporter
345
+ }));
346
+ locator.register(ViewArchivist.factory({
347
+ traceProvider,
348
+ meterProvider,
349
+ statusReporter
350
+ }));
351
+ locator.register(ArchivistSyncDiviner.factory({
352
+ traceProvider,
353
+ meterProvider,
354
+ statusReporter
355
+ }));
356
+ return locator;
357
+ }, "getLocator");
358
+
359
+ // src/manifest/getNode.ts
360
+ import { ManifestWrapper } from "@xyo-network/manifest-wrapper";
361
+
362
+ // src/manifest/node.json
363
+ var node_default = {
364
+ $schema: "https://raw.githubusercontent.com/XYOracleNetwork/sdk-xyo-client-js/main/packages/manifest/src/schema.json",
365
+ nodes: [
366
+ {
367
+ config: {
368
+ accountPath: "44'/60'/1",
369
+ name: "XYORewardRedemptionNode",
370
+ schema: "network.xyo.node.config"
371
+ },
372
+ modules: {
373
+ private: [],
374
+ public: [
375
+ {
376
+ config: {
377
+ accountPath: "1/1/1",
378
+ name: "Data",
379
+ getCache: {
380
+ enabled: true,
381
+ maxEntries: 5e3
382
+ },
383
+ payloadSdkConfig: {
384
+ collection: "reward_redemption_api_datalake"
385
+ },
386
+ schema: "network.xyo.archivist.config"
387
+ }
388
+ }
389
+ ]
390
+ }
391
+ }
392
+ ],
393
+ schema: "network.xyo.manifest"
394
+ };
395
+
396
+ // src/manifest/nodeManifest.ts
397
+ var NodeManifest = node_default;
398
+
399
+ // src/manifest/private/index.ts
400
+ var PrivateChildManifests = [];
401
+
402
+ // src/manifest/public/index.ts
403
+ var PublicChildManifests = [];
404
+
405
+ // src/manifest/getNode.ts
406
+ var getNode = /* @__PURE__ */ __name(async (context) => {
407
+ const { wallet } = context;
408
+ const locator = await getLocator(context);
409
+ const wrapper = new ManifestWrapper(NodeManifest, wallet, locator, PublicChildManifests, PrivateChildManifests);
410
+ const [node, ...childNodes] = await wrapper.loadNodes();
411
+ if (childNodes?.length > 0) {
412
+ await Promise.all(childNodes.map((childNode) => node.register(childNode)));
413
+ await Promise.all(childNodes.map((childNode) => node.attach(childNode.address, true)));
414
+ }
415
+ return node;
416
+ }, "getNode");
417
+
418
+ // src/server/server.ts
419
+ var hostname = "::";
420
+ var getSeedPhrase = /* @__PURE__ */ __name(async (bios, config, logger) => {
421
+ const storedSeedPhrase = await bios.seedPhraseStore.get("os");
422
+ logger?.debug(`[Bridge] Stored mnemonic: ${storedSeedPhrase}`);
423
+ const { mnemonic } = config.api;
424
+ if (isString(storedSeedPhrase) && isString(mnemonic)) {
425
+ logger?.warn("[Bridge] Stored mnemonic does not match supplied. Updating stored mnemonic to supplied.");
426
+ await bios.seedPhraseStore.set("os", mnemonic);
427
+ } else {
428
+ let seedPhrase;
429
+ if (isString(mnemonic)) {
430
+ seedPhrase = mnemonic;
431
+ } else {
432
+ seedPhrase = HDWallet.generateMnemonic();
433
+ logger?.log("[Bridge] No mnemonic provided, using random mnemonic. This is not recommended for production use.");
434
+ logger?.log(`[Bridge] Mnemonic: ${seedPhrase}`);
435
+ }
436
+ await bios.seedPhraseStore.set("os", seedPhrase);
437
+ }
438
+ return assertEx(await bios.seedPhraseStore.get("os"), () => "Unable to acquire mnemonic from bios");
439
+ }, "getSeedPhrase");
440
+ var getServer = /* @__PURE__ */ __name(async (context) => {
441
+ const { logger, config } = context;
442
+ const { port, mnemonic } = config.rewardRedemptionApi;
443
+ const bios = await boot();
444
+ const seedPhrase = isDefined3(mnemonic) ? mnemonic : await getSeedPhrase(bios, config, logger);
445
+ const wallet = await HDWallet.fromPhrase(seedPhrase);
446
+ const nodeContext = {
447
+ wallet,
448
+ logger,
449
+ config
450
+ };
451
+ const node = context.node ?? await getNode(nodeContext);
452
+ const app = getApp(node);
453
+ const server = app.listen(port, hostname, () => logger?.log(`[Bridge] Server listening at http://${hostname}:${port}`));
454
+ server.setTimeout(2e4);
455
+ return server;
456
+ }, "getServer");
457
+ export {
458
+ getApp,
459
+ getServer
460
+ };
461
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/server/app.ts","../../src/server/instrumentation.ts","../../src/server/routes/dataLake/archivistMiddleware.ts","../../src/server/routes/dataLake/addDataLakeRoutes.ts","../../src/server/routes/rewardRedemption/routeDefinitions/routes/claim.ts","../../src/server/routes/rewardRedemption/middleware/requestHandlerValidator.ts","../../src/server/routes/rewardRedemption/routeDefinitions/pathParams/AddressPathParam.ts","../../src/server/routes/rewardRedemption/routeDefinitions/routes/redeem.ts","../../src/server/routes/rewardRedemption/routeDefinitions/getRouteDefinitions.ts","../../src/server/routes/rewardRedemption/addRewardRoutes.ts","../../src/server/routes/addRoutes.ts","../../src/server/server.ts","../../src/manifest/getLocator.ts","../../src/manifest/getNode.ts","../../src/manifest/node.json","../../src/manifest/nodeManifest.ts","../../src/manifest/private/index.ts","../../src/manifest/public/index.ts"],"sourcesContent":["import {\n customPoweredByHeader, disableCaseSensitiveRouting, disableExpressDefaultPoweredByHeader, getJsonBodyParser, getJsonBodyParserOptions, responseProfiler,\n standardErrors, 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 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 { 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 = 'RewardsArchivist'\n app.use('/data', archivistMiddleware({ node, archivistModuleIdentifier }))\n}\n","import { PayloadZodLoose } from '@xyo-network/payload-model'\nimport { z } from 'zod'\n\nimport { requestHandlerValidator } from '../../middleware/index.ts'\nimport { AddressPathParam } from '../pathParams/index.ts'\nimport type { RouteDefinition } from '../routeDefinition.ts'\n\nconst params = z.object({ address: AddressPathParam })\nconst body = PayloadZodLoose\n\nconst response = PayloadZodLoose\n\nconst validateRequest = requestHandlerValidator({\n params,\n body,\n response,\n})\n\nexport const postClaim: RouteDefinition = {\n method: 'post',\n path: '/rewards/claim/:address',\n handlers: validateRequest(async (req, res) => {\n const { address } = req.params\n // TODO: Validate ETH address\n // TODO: Redeem claim for existing rewards\n // TODO: Return response payload\n await Promise.resolve()\n const observation = { schema: 'network.xyo.test' }\n res.json(observation)\n }),\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { ExpressError } from '@xylabs/express'\nimport { isPromise } from '@xylabs/typeof'\nimport type {\n NextFunction, Request, RequestHandler, Response,\n} from 'express'\nimport { ReasonPhrases, StatusCodes } from 'http-status-codes'\nimport type { ZodType } from 'zod'\nimport { z } from 'zod'\n\n/**\n * Empty Zod schema for requests with no parameters.\n */\nexport const EmptyParamsZod = z.object({}).catchall(z.string())\n\n/**\n * Empty Zod schema for requests with no query parameters.\n */\nexport const EmptyQueryParamsZod = z.object({}).catchall(z.union([z.string(), z.array(z.string())]))\n\n/**\n * Default validation schemas for request handler validator.\n */\nexport const ValidateRequestDefaults = {\n params: EmptyParamsZod,\n query: EmptyQueryParamsZod,\n body: z.json(),\n response: z.json(),\n}\n\ntype ValidatableRequestKey = 'params' | 'query' | 'body'\n\n/**\n * Factory for Express middleware that validates request and response objects using Zod schemas.\n * @param schemas The Zod schemas to use for validation.\n * @returns A middleware function for validating requests and responses.\n */\nexport function requestHandlerValidator<\n TParams extends typeof EmptyQueryParamsZod | ZodType<Record<string, string>> = typeof EmptyQueryParamsZod,\n TQuery extends typeof EmptyQueryParamsZod | ZodType<Record<string, string | string[]>> = typeof EmptyQueryParamsZod,\n TBody extends ZodType<unknown> = ZodType<unknown>,\n TResponse extends ZodType<unknown> = ZodType<unknown>,\n>(schemas?: Partial<{\n body: TBody\n params: TParams\n query: TQuery\n response: TResponse\n}>) {\n type Params = z.infer<TParams>\n type Query = z.infer<TQuery>\n type Body = z.infer<TBody>\n type Res = z.infer<TResponse>\n const validators = { ...ValidateRequestDefaults, ...schemas }\n\n return (handler: (req: Request<Params, Res, Body, Query>, res: Response<Res>, next: NextFunction) => unknown): RequestHandler => {\n return async (req: Request, res: Response, next: NextFunction) => {\n const originalJson = res.json.bind(res)\n try {\n // Validate incoming request\n const errors: string[] = []\n const keys: ValidatableRequestKey[] = ['params', 'query', 'body']\n for (const key of keys) {\n const validator = validators[key]\n const result = validator.safeParse(req[key])\n if (result.success) {\n Object.assign(req[key], result.data)\n } else {\n errors.push(\n ...result.error.issues.map(\n issue => (issue.path.length === 0)\n ? `${key}: ${issue.message}`\n : `${key}.${issue.path.join('.')}: ${issue.message}`,\n ),\n )\n }\n }\n\n // If there were validation errors, short-circuit and return Bad Request\n if (errors.length > 0) {\n const message = errors.join('; ')\n const err: ExpressError = new Error(message)\n err.name = ReasonPhrases.BAD_REQUEST\n err.statusCode = StatusCodes.BAD_REQUEST\n next(err)\n return false\n }\n\n // Wrap res.json to validate outgoing response\n res.json = (data: any) => {\n const result = validators.response.safeParse(data)\n if (result.success) {\n return originalJson(result.data)\n } else {\n const message = result.error.issues.map(\n issue => (issue.path.length === 0)\n ? `response: ${issue.message}`\n : `response.${issue.path.join('.')}: ${issue.message}`,\n ).join('; ')\n const err: ExpressError = new Error(message)\n err.name = ReasonPhrases.INTERNAL_SERVER_ERROR\n err.statusCode = StatusCodes.INTERNAL_SERVER_ERROR\n\n // Restore original json function in case the error handler wants to use it\n res.json = originalJson\n throw err\n }\n }\n\n // Automatically handle async errors\n const result = handler(req as any, res as any, next)\n if (result && isPromise(result)) {\n await result\n }\n } catch (err) {\n res.json = originalJson\n next(err)\n }\n }\n }\n}\n","export { EthAddressFromStringZod as AddressPathParam } from '@xylabs/hex'\n","import { PayloadZodLoose } from '@xyo-network/payload-model'\nimport { z } from 'zod'\n\nimport { requestHandlerValidator } from '../../middleware/index.ts'\nimport { AddressPathParam } from '../pathParams/index.ts'\nimport type { RouteDefinition } from '../routeDefinition.ts'\n\nconst params = z.object({ address: AddressPathParam })\nconst body = PayloadZodLoose\nconst response = PayloadZodLoose\nconst validateRequest = requestHandlerValidator({\n params,\n body,\n response,\n})\n\nexport const postRedeem: RouteDefinition = {\n method: 'post',\n path: '/rewards/redeem/:address',\n handlers: validateRequest(async (req, res) => {\n const { body } = req\n await Promise.resolve()\n const bridgeObservation = { schema: 'network.xyo.test' }\n res.json(bridgeObservation)\n }),\n}\n","import type { RouteDefinition } from './routeDefinition.ts'\nimport { postClaim, postRedeem } from './routes/index.ts'\n\nexport const getRouteDefinitions = (): RouteDefinition[] => {\n return [\n postClaim,\n postRedeem,\n ]\n}\n","import type { Express } from 'express'\n\nimport { getRouteDefinitions } from './routeDefinitions/index.ts'\n\nexport const addRewardRedemptionRoutes = (app: Express) => {\n const routeDefinitions = getRouteDefinitions()\n for (const definition of routeDefinitions) {\n app[definition.method](definition.path, definition.handlers)\n }\n}\n","import type { Express } from 'express'\n\nimport { addDataLakeRoutes } from './dataLake/index.ts'\nimport { addRewardRedemptionRoutes } from './rewardRedemption/index.ts'\n\nexport const addRoutes = (app: Express) => {\n addDataLakeRoutes(app)\n addRewardRedemptionRoutes(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(`[Bridge] Stored mnemonic: ${storedSeedPhrase}`)\n const { mnemonic } = config.api\n if (isString(storedSeedPhrase) && isString(mnemonic)) {\n logger?.warn('[Bridge] 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('[Bridge] No mnemonic provided, using random mnemonic. This is not recommended for production use.')\n logger?.log(`[Bridge] 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 { logger, config } = context\n const { port, mnemonic } = config.rewardRedemptionApi\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 node = context.node ?? await getNode(nodeContext)\n const app = getApp(node)\n const server = app.listen(port, hostname, () => logger?.log(`[Bridge] Server listening at http://${hostname}:${port}`))\n server.setTimeout(20_000)\n return server\n}\n","import type { Logger } from '@xylabs/logger'\nimport { 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 { ArchivistSyncDiviner } from '@xyo-network/chain-modules'\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 { MemorySentinel } from '@xyo-network/sentinel-memory'\nimport type { Config } from '@xyo-network/xl1-protocol-sdk'\nimport { hasMongoConfig } from '@xyo-network/xl1-protocol-sdk'\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-rewards',\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 // 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\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 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\": \"XYORewardRedemptionNode\",\n \"schema\": \"network.xyo.node.config\"\n },\n \"modules\": {\n \"private\": [],\n \"public\": [\n {\n \"config\": {\n \"accountPath\": \"1/1/1\",\n \"name\": \"Data\",\n \"getCache\": {\n \"enabled\": true,\n \"maxEntries\": 5000\n },\n \"payloadSdkConfig\": {\n \"collection\": \"reward_redemption_api_datalake\"\n },\n \"schema\": \"network.xyo.archivist.config\"\n }\n }\n ]\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","import type { ModuleManifest, PackageManifestPayload } from '@xyo-network/manifest-model'\n\n/**\n * Public Child Manifests\n */\nexport const PublicChildManifests: ModuleManifest[] = []\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","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","PayloadZodLoose","z","isPromise","ReasonPhrases","StatusCodes","z","EmptyParamsZod","z","object","catchall","string","EmptyQueryParamsZod","union","array","ValidateRequestDefaults","params","query","body","json","response","requestHandlerValidator","schemas","validators","handler","req","res","next","originalJson","bind","errors","keys","key","validator","result","safeParse","success","Object","assign","data","push","error","issues","map","issue","path","length","message","join","err","Error","name","ReasonPhrases","BAD_REQUEST","statusCode","StatusCodes","INTERNAL_SERVER_ERROR","isPromise","AddressPathParam","params","z","object","address","AddressPathParam","body","PayloadZodLoose","response","validateRequest","requestHandlerValidator","postClaim","method","path","handlers","req","res","Promise","resolve","observation","schema","json","PayloadZodLoose","z","params","z","object","address","AddressPathParam","body","PayloadZodLoose","response","validateRequest","requestHandlerValidator","postRedeem","method","path","handlers","req","res","Promise","resolve","bridgeObservation","schema","json","getRouteDefinitions","postClaim","postRedeem","addRewardRedemptionRoutes","app","routeDefinitions","getRouteDefinitions","definition","method","path","handlers","addRoutes","app","addDataLakeRoutes","addRewardRedemptionRoutes","getApp","node","addInstrumentation","app","express","set","use","cors","compression","responseProfiler","getJsonBodyParser","getJsonBodyParserOptions","limit","standardResponses","disableExpressDefaultPoweredByHeader","customPoweredByHeader","disableCaseSensitiveRouting","addRoutes","standardErrors","assertEx","isDefined","isString","boot","HDWallet","isDefined","MemoryArchivist","MongoDBArchivistV2","ViewArchivist","ArchivistSyncDiviner","initTelemetry","AbstractModule","LoggerModuleStatusReporter","ModuleFactoryLocator","MemorySentinel","hasMongoConfig","getLocator","context","config","logger","otlpEndpoint","telemetry","otel","traceProvider","meterProvider","initTelemetry","attributes","serviceName","serviceVersion","metricsConfig","endpoint","port","isDefined","AbstractModule","defaultLogger","statusReporter","LoggerModuleStatusReporter","undefined","locator","ModuleFactoryLocator","mongoConfig","storage","mongo","hasMongoConfig","connectionString","dbConnectionString","database","dbName","domain","dbDomain","password","dbPassword","username","dbUserName","payloadSdkConfig","params","register","MongoDBArchivistV2","factory","MemoryArchivist","MemorySentinel","ViewArchivist","ArchivistSyncDiviner","ManifestWrapper","NodeManifest","node","PrivateChildManifests","PublicChildManifests","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","port","rewardRedemptionApi","boot","isDefined","wallet","fromPhrase","nodeContext","node","getNode","app","getApp","server","listen","setTimeout"]}
@@ -0,0 +1,14 @@
1
+ import type { Logger } from '@xylabs/logger';
2
+ import { ModuleFactoryLocator } from '@xyo-network/module-factory-locator';
3
+ import type { Config } from '@xyo-network/xl1-protocol-sdk';
4
+ export interface GetLocatorContext {
5
+ config: Config;
6
+ logger?: Logger;
7
+ }
8
+ /**
9
+ * Used for retrieving a locator with the necessary modules registered for testing
10
+ * operation of the node (entirely in memory)
11
+ * @returns A locator with the necessary modules registered
12
+ */
13
+ export declare const getLocator: (context: GetLocatorContext) => Promise<ModuleFactoryLocator>;
14
+ //# sourceMappingURL=getLocator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getLocator.d.ts","sourceRoot":"","sources":["../../../src/manifest/getLocator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAS5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAA;AAG1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAG3D,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAU,SAAS,iBAAiB,kCAiD1D,CAAA"}
@@ -0,0 +1,15 @@
1
+ import type { Logger } from '@xylabs/logger';
2
+ import type { WalletInstance } from '@xyo-network/wallet-model';
3
+ import type { Config } from '@xyo-network/xl1-protocol-sdk';
4
+ export interface GetNodeContext {
5
+ config: Config;
6
+ logger?: Logger;
7
+ wallet: WalletInstance;
8
+ }
9
+ /**
10
+ * Creates a node with the xyo-chain modules registered
11
+ * @param context The context to use for the node
12
+ * @returns A node with the xyo-chain modules registered
13
+ */
14
+ export declare const getNode: (context: GetNodeContext) => Promise<import("@xyo-network/node-memory").MemoryNode<import("@xyo-network/node-memory").MemoryNodeParams, import("@xyo-network/node-model").NodeModuleEventData>>;
15
+ //# sourceMappingURL=getNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getNode.d.ts","sourceRoot":"","sources":["../../../src/manifest/getNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC/D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAA;AAO3D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,cAAc,CAAA;CACvB;AAED;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAU,SAAS,cAAc,uKAUpD,CAAA"}
@@ -0,0 +1,6 @@
1
+ export * from './getLocator.ts';
2
+ export * from './getNode.ts';
3
+ export * from './nodeManifest.ts';
4
+ export * from './private/index.ts';
5
+ export * from './public/index.ts';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/manifest/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,mBAAmB,CAAA;AACjC,cAAc,oBAAoB,CAAA;AAClC,cAAc,mBAAmB,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { PackageManifestPayload } from '@xyo-network/manifest-model';
2
+ /**
3
+ * Root Node Manifest
4
+ */
5
+ export declare const NodeManifest: PackageManifestPayload;
6
+ //# sourceMappingURL=nodeManifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodeManifest.d.ts","sourceRoot":"","sources":["../../../src/manifest/nodeManifest.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAA;AAIzE;;GAEG;AACH,eAAO,MAAM,YAAY,EAAW,sBAAsB,CAAA"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Private Child Manifests
3
+ */
4
+ export declare const PrivateChildManifests: never[];
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/manifest/private/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,qBAAqB,SAAK,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { ModuleManifest } from '@xyo-network/manifest-model';
2
+ /**
3
+ * Public Child Manifests
4
+ */
5
+ export declare const PublicChildManifests: ModuleManifest[];
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/manifest/public/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA0B,MAAM,6BAA6B,CAAA;AAEzF;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAE,cAAc,EAAO,CAAA"}
@@ -0,0 +1,4 @@
1
+ import type { NodeInstance } from '@xyo-network/node-model';
2
+ import type { Express } from 'express';
3
+ export declare const getApp: (node: NodeInstance) => Express;
4
+ //# sourceMappingURL=app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/server/app.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAG3D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAMtC,eAAO,MAAM,MAAM,GAAI,MAAM,YAAY,KAAG,OAgB3C,CAAA"}
@@ -0,0 +1,11 @@
1
+ export * from './app.ts';
2
+ export * from './server.ts';
3
+ import type { NodeInstance } from '@xyo-network/node-model';
4
+ declare global {
5
+ namespace Express {
6
+ interface Application {
7
+ node: NodeInstance;
8
+ }
9
+ }
10
+ }
11
+ //# sourceMappingURL=index.d.ts.map