@xyo-network/chain-api 1.20.15 → 1.20.16
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/README.md +9 -97
- package/dist/node/index.mjs +51 -7
- package/dist/node/index.mjs.map +1 -1
- package/dist/node/server/routes/addProbeRoutes.d.ts +3 -0
- package/dist/node/server/routes/addProbeRoutes.d.ts.map +1 -0
- package/dist/node/server/routes/addRoutes.d.ts.map +1 -1
- package/dist/node/server/routes/dataLake/archivistMiddleware.d.ts.map +1 -1
- package/dist/node/server/routes/index.d.ts +0 -1
- package/dist/node/server/routes/index.d.ts.map +1 -1
- package/dist/node/server/routes/{healthz → livez}/get.d.ts +1 -1
- package/dist/node/server/routes/livez/get.d.ts.map +1 -0
- package/dist/node/server/routes/livez/index.d.ts.map +1 -0
- package/dist/node/server/routes/readyz/get.d.ts +4 -0
- package/dist/node/server/routes/readyz/get.d.ts.map +1 -0
- package/dist/node/server/routes/readyz/index.d.ts +2 -0
- package/dist/node/server/routes/readyz/index.d.ts.map +1 -0
- package/dist/node/server/routes/startupz/get.d.ts +4 -0
- package/dist/node/server/routes/startupz/get.d.ts.map +1 -0
- package/dist/node/server/routes/startupz/index.d.ts +2 -0
- package/dist/node/server/routes/startupz/index.d.ts.map +1 -0
- package/package.json +137 -46
- package/dist/node/server/routes/healthz/get.d.ts.map +0 -1
- package/dist/node/server/routes/healthz/index.d.ts.map +0 -1
- package/src/ApiActor.ts +0 -42
- package/src/global.d.ts +0 -13
- package/src/helpers/index.ts +0 -3
- package/src/helpers/initChainId.ts +0 -20
- package/src/helpers/initInfuraProvider.ts +0 -27
- package/src/helpers/initJsonRpcProvider.ts +0 -20
- package/src/index.ts +0 -4
- package/src/model.ts +0 -5
- package/src/runApi.ts +0 -35
- package/src/server/app.ts +0 -18
- package/src/server/index.ts +0 -2
- package/src/server/instrumentation.ts +0 -15
- package/src/server/routes/addRoutes.ts +0 -11
- package/src/server/routes/dataLake/addDataLakeRoutes.ts +0 -9
- package/src/server/routes/dataLake/archivistMiddleware.ts +0 -83
- package/src/server/routes/dataLake/index.ts +0 -1
- package/src/server/routes/healthz/get.ts +0 -20
- package/src/server/routes/healthz/index.ts +0 -1
- package/src/server/routes/index.ts +0 -3
- package/src/server/routes/rpc/index.ts +0 -1
- package/src/server/routes/rpc/routes/addRpcRoutes.ts +0 -20
- package/src/server/routes/rpc/routes/index.ts +0 -1
- package/src/server/server.ts +0 -21
- /package/dist/node/server/routes/{healthz → livez}/index.d.ts +0 -0
package/README.md
CHANGED
|
@@ -1,112 +1,24 @@
|
|
|
1
1
|
# @xyo-network/chain-api
|
|
2
2
|
|
|
3
|
-
[![
|
|
3
|
+
[![npm][npm-badge]][npm-link]
|
|
4
|
+
[![license][license-badge]][license-link]
|
|
4
5
|
|
|
5
|
-
|
|
6
|
-
[![npm-downloads-badge][]][npm-link]
|
|
7
|
-
[![jsdelivr-badge][]][jsdelivr-link]
|
|
8
|
-
[![npm-license-badge][]](LICENSE)
|
|
9
|
-
[![socket-badge][]][socket-link]
|
|
6
|
+
> XYO Layer One API
|
|
10
7
|
|
|
11
|
-
|
|
8
|
+
## Install
|
|
12
9
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
## Reference
|
|
16
|
-
|
|
17
|
-
**@xyo-network/chain-api**
|
|
18
|
-
|
|
19
|
-
***
|
|
20
|
-
|
|
21
|
-
## Functions
|
|
22
|
-
|
|
23
|
-
- [getApp](#functions/getApp)
|
|
24
|
-
- [getServer](#functions/getServer)
|
|
25
|
-
|
|
26
|
-
### functions
|
|
27
|
-
|
|
28
|
-
### <a id="getApp"></a>getApp
|
|
29
|
-
|
|
30
|
-
[**@xyo-network/chain-api**](#../README)
|
|
31
|
-
|
|
32
|
-
***
|
|
33
|
-
|
|
34
|
-
```ts
|
|
35
|
-
function getApp(
|
|
36
|
-
node,
|
|
37
|
-
transferSummaryMap,
|
|
38
|
-
stakedChainContext,
|
|
39
|
-
initRewardsCache?): Promise<Express>;
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
## Parameters
|
|
43
|
-
|
|
44
|
-
### node
|
|
45
|
-
|
|
46
|
-
`NodeInstance`
|
|
47
|
-
|
|
48
|
-
### transferSummaryMap
|
|
49
|
-
|
|
50
|
-
`MapType`\<`string`, `WithStorageMeta`\<`TransfersStepSummary`\>\>
|
|
51
|
-
|
|
52
|
-
### stakedChainContext
|
|
53
|
-
|
|
54
|
-
`StakedChainContextRead`
|
|
55
|
-
|
|
56
|
-
### initRewardsCache?
|
|
57
|
-
|
|
58
|
-
`boolean`
|
|
59
|
-
|
|
60
|
-
## Returns
|
|
61
|
-
|
|
62
|
-
`Promise`\<`Express`\>
|
|
63
|
-
|
|
64
|
-
### <a id="getServer"></a>getServer
|
|
65
|
-
|
|
66
|
-
[**@xyo-network/chain-api**](#../README)
|
|
67
|
-
|
|
68
|
-
***
|
|
69
|
-
|
|
70
|
-
```ts
|
|
71
|
-
function getServer(context): Promise<Server<typeof IncomingMessage, typeof ServerResponse>>;
|
|
10
|
+
```sh
|
|
11
|
+
{{pm}} add {{name}}
|
|
72
12
|
```
|
|
73
13
|
|
|
74
|
-
## Parameters
|
|
75
|
-
|
|
76
|
-
### context
|
|
77
|
-
|
|
78
|
-
`GetServerContext`
|
|
79
|
-
|
|
80
|
-
## Returns
|
|
81
|
-
|
|
82
|
-
`Promise`\<`Server`\<*typeof* `IncomingMessage`, *typeof* `ServerResponse`\>\>
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
## Maintainers
|
|
86
|
-
|
|
87
|
-
- [Arie Trouw](https://github.com/arietrouw) ([arietrouw.com](https://arietrouw.com))
|
|
88
|
-
- [Matt Jones](https://github.com/jonesmac)
|
|
89
|
-
- [Joel Carter](https://github.com/JoelBCarter)
|
|
90
|
-
- [Jordan Trouw](https://github.com/jordantrouw)
|
|
91
14
|
|
|
92
15
|
## License
|
|
93
16
|
|
|
94
|
-
|
|
17
|
+
See the [LICENSE](LICENSE) file for license rights and limitations (LGPL-3.0-only).
|
|
95
18
|
|
|
96
|
-
## Credits
|
|
97
19
|
|
|
98
|
-
[Made with 🔥 and ❄️ by XYO](https://xyo.network)
|
|
99
|
-
|
|
100
|
-
[logo]: https://cdn.xy.company/img/brand/XYO_full_colored.png
|
|
101
20
|
|
|
102
21
|
[npm-badge]: https://img.shields.io/npm/v/@xyo-network/chain-api.svg
|
|
103
22
|
[npm-link]: https://www.npmjs.com/package/@xyo-network/chain-api
|
|
104
|
-
|
|
105
|
-
[
|
|
106
|
-
[npm-license-badge]: https://img.shields.io/npm/l/@xyo-network/chain-api
|
|
107
|
-
|
|
108
|
-
[jsdelivr-badge]: https://data.jsdelivr.com/v1/package/npm/@xyo-network/chain-api/badge
|
|
109
|
-
[jsdelivr-link]: https://www.jsdelivr.com/package/npm/@xyo-network/chain-api
|
|
110
|
-
|
|
111
|
-
[socket-badge]: https://socket.dev/api/badge/npm/package/@xyo-network/chain-api
|
|
112
|
-
[socket-link]: https://socket.dev/npm/package/@xyo-network/chain-api
|
|
23
|
+
[license-badge]: https://img.shields.io/npm/l/@xyo-network/chain-api.svg
|
|
24
|
+
[license-link]: https://github.com/xylabs/sdk-js/blob/main/LICENSE
|
package/dist/node/index.mjs
CHANGED
|
@@ -24,8 +24,51 @@ var addInstrumentation = /* @__PURE__ */ __name(() => {
|
|
|
24
24
|
});
|
|
25
25
|
}, "addInstrumentation");
|
|
26
26
|
|
|
27
|
-
// src/server/routes/
|
|
27
|
+
// src/server/routes/livez/get.ts
|
|
28
28
|
import { setRawResponseFormat } from "@xylabs/express";
|
|
29
|
+
import { ReasonPhrases } from "http-status-codes";
|
|
30
|
+
var message = ReasonPhrases.OK;
|
|
31
|
+
var handler = /* @__PURE__ */ __name((_req, res) => {
|
|
32
|
+
setRawResponseFormat(res);
|
|
33
|
+
res.status(200).send({
|
|
34
|
+
message
|
|
35
|
+
});
|
|
36
|
+
}, "handler");
|
|
37
|
+
var getLivez = handler;
|
|
38
|
+
|
|
39
|
+
// src/server/routes/readyz/get.ts
|
|
40
|
+
import { setRawResponseFormat as setRawResponseFormat2 } from "@xylabs/express";
|
|
41
|
+
import { ReasonPhrases as ReasonPhrases2 } from "http-status-codes";
|
|
42
|
+
var message2 = ReasonPhrases2.OK;
|
|
43
|
+
var handler2 = /* @__PURE__ */ __name((_req, res) => {
|
|
44
|
+
setRawResponseFormat2(res);
|
|
45
|
+
res.status(200).send({
|
|
46
|
+
message: message2
|
|
47
|
+
});
|
|
48
|
+
}, "handler");
|
|
49
|
+
var getReadyz = handler2;
|
|
50
|
+
|
|
51
|
+
// src/server/routes/startupz/get.ts
|
|
52
|
+
import { setRawResponseFormat as setRawResponseFormat3 } from "@xylabs/express";
|
|
53
|
+
import { ReasonPhrases as ReasonPhrases3 } from "http-status-codes";
|
|
54
|
+
var message3 = ReasonPhrases3.OK;
|
|
55
|
+
var handler3 = /* @__PURE__ */ __name((_req, res) => {
|
|
56
|
+
setRawResponseFormat3(res);
|
|
57
|
+
res.status(200).send({
|
|
58
|
+
message: message3
|
|
59
|
+
});
|
|
60
|
+
}, "handler");
|
|
61
|
+
var getStartupz = handler3;
|
|
62
|
+
|
|
63
|
+
// src/server/routes/addProbeRoutes.ts
|
|
64
|
+
var addProbeRoutes = /* @__PURE__ */ __name((app) => {
|
|
65
|
+
app.get("/livez", getLivez);
|
|
66
|
+
app.get("/readyz", getReadyz);
|
|
67
|
+
app.get("/startupz", getStartupz);
|
|
68
|
+
}, "addProbeRoutes");
|
|
69
|
+
|
|
70
|
+
// src/server/routes/dataLake/archivistMiddleware.ts
|
|
71
|
+
import { setRawResponseFormat as setRawResponseFormat4 } from "@xylabs/express";
|
|
29
72
|
import { asHash, isDefined } from "@xylabs/sdk-js";
|
|
30
73
|
import { asArchivistInstance, isAnyPayload, isSequence, PayloadBuilder } from "@xyo-network/sdk-js";
|
|
31
74
|
import express from "express";
|
|
@@ -47,7 +90,7 @@ var archivistMiddleware = /* @__PURE__ */ __name((options) => {
|
|
|
47
90
|
mergeParams: true
|
|
48
91
|
});
|
|
49
92
|
router.post("/insert", async (req, res) => {
|
|
50
|
-
|
|
93
|
+
setRawResponseFormat4(res);
|
|
51
94
|
const body = Array.isArray(req.body) ? req.body : [
|
|
52
95
|
req.body
|
|
53
96
|
];
|
|
@@ -57,7 +100,7 @@ var archivistMiddleware = /* @__PURE__ */ __name((options) => {
|
|
|
57
100
|
res.status(200).json(result);
|
|
58
101
|
});
|
|
59
102
|
router.get("/next", async (req, res) => {
|
|
60
|
-
|
|
103
|
+
setRawResponseFormat4(res);
|
|
61
104
|
const cursor = isSequence(req.query.cursor) ? req.query.cursor : void 0;
|
|
62
105
|
const limit = isDefined(req.query.limit) ? Number(req.query.limit) : void 0;
|
|
63
106
|
const open = isDefined(req.query.open) ? Boolean(req.query.open) : void 0;
|
|
@@ -73,14 +116,14 @@ var archivistMiddleware = /* @__PURE__ */ __name((options) => {
|
|
|
73
116
|
res.status(200).json(result);
|
|
74
117
|
});
|
|
75
118
|
router.post("/next", async (req, res) => {
|
|
76
|
-
|
|
119
|
+
setRawResponseFormat4(res);
|
|
77
120
|
const options2 = req.body;
|
|
78
121
|
const archivist = await getArchivist(node, archivistModuleIdentifier);
|
|
79
122
|
const result = await (isDefined(options2) ? archivist.next(options2) : archivist.next());
|
|
80
123
|
res.status(200).json(result);
|
|
81
124
|
});
|
|
82
125
|
router.get("/get/:hash", async (req, res) => {
|
|
83
|
-
|
|
126
|
+
setRawResponseFormat4(res);
|
|
84
127
|
const { hash: rawHash } = req.params;
|
|
85
128
|
const hash = asHash(rawHash);
|
|
86
129
|
if (isDefined(hash)) {
|
|
@@ -109,7 +152,7 @@ var addDataLakeRoutes = /* @__PURE__ */ __name((app) => {
|
|
|
109
152
|
}, "addDataLakeRoutes");
|
|
110
153
|
|
|
111
154
|
// src/server/routes/rpc/routes/addRpcRoutes.ts
|
|
112
|
-
import { setRawResponseFormat as
|
|
155
|
+
import { setRawResponseFormat as setRawResponseFormat5 } from "@xylabs/express";
|
|
113
156
|
import { rpcServerFromConnection, XyoConnectionMoniker } from "@xyo-network/xl1-sdk";
|
|
114
157
|
var addRpcRoutes = /* @__PURE__ */ __name(async (app) => {
|
|
115
158
|
const { context } = app;
|
|
@@ -117,7 +160,7 @@ var addRpcRoutes = /* @__PURE__ */ __name(async (app) => {
|
|
|
117
160
|
const connection = await locator.getInstance(XyoConnectionMoniker);
|
|
118
161
|
const rpcServer = rpcServerFromConnection(connection);
|
|
119
162
|
app.post("/rpc", async (req, res) => {
|
|
120
|
-
|
|
163
|
+
setRawResponseFormat5(res);
|
|
121
164
|
const rpcResponse = await rpcServer.handle(req.body);
|
|
122
165
|
res.json(rpcResponse);
|
|
123
166
|
});
|
|
@@ -125,6 +168,7 @@ var addRpcRoutes = /* @__PURE__ */ __name(async (app) => {
|
|
|
125
168
|
|
|
126
169
|
// src/server/routes/addRoutes.ts
|
|
127
170
|
var addRoutes = /* @__PURE__ */ __name(async (app) => {
|
|
171
|
+
addProbeRoutes(app);
|
|
128
172
|
await addRpcRoutes(app);
|
|
129
173
|
addDataLakeRoutes(app);
|
|
130
174
|
}, "addRoutes");
|
package/dist/node/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/ApiActor.ts","../../src/server/app.ts","../../src/server/instrumentation.ts","../../src/server/routes/dataLake/archivistMiddleware.ts","../../src/server/routes/dataLake/addDataLakeRoutes.ts","../../src/server/routes/rpc/routes/addRpcRoutes.ts","../../src/server/routes/addRoutes.ts","../../src/server/server.ts","../../src/runApi.ts"],"sourcesContent":["import { Server } from 'node:http'\n\nimport { creatable } from '@xylabs/sdk-js'\nimport { ApiConfig } from '@xyo-network/chain-orchestration'\nimport {\n ActorParamsV3, ActorV3, asHostActorConfigContext,\n} from '@xyo-network/xl1-sdk'\n\nimport { getServer } from './server/index.ts'\n\nexport type ApiActorParams = ActorParamsV3<{\n config: ApiConfig\n}>\n\n@creatable()\nexport class ApiActor extends ActorV3<ApiActorParams> {\n private server?: Server\n\n override async createHandler() {\n await super.createHandler()\n }\n\n override async startHandler() {\n await super.startHandler()\n this.stopServer()\n await this.startServer()\n }\n\n override async stopHandler() {\n await super.stopHandler()\n this.stopServer()\n }\n\n private async startServer() {\n this.server = await getServer(asHostActorConfigContext(this.context, true))\n }\n\n private stopServer() {\n this.server?.close()\n this.server = undefined\n }\n}\n","import { standardErrors } from '@xylabs/express'\nimport { sharedMiddleware } from '@xyo-network/chain-orchestration'\nimport type { HostActorConfigContext } from '@xyo-network/xl1-sdk'\nimport type { Express } from 'express'\nimport express from 'express'\n\nimport { addInstrumentation } from './instrumentation.ts'\nimport { addRoutes } from './routes/index.ts'\n\nexport const getApp = async (context: HostActorConfigContext): Promise<Express> => {\n addInstrumentation()\n const app = express()\n sharedMiddleware(app)\n app.context = context\n await addRoutes(app)\n app.use(standardErrors)\n return app\n}\n","import { registerInstrumentations } from '@opentelemetry/instrumentation'\nimport { ExpressInstrumentation } from '@opentelemetry/instrumentation-express'\nimport { HttpInstrumentation } from '@opentelemetry/instrumentation-http'\n\n/**\n * Registers OpenTelemetry instrumentations for HTTP and Express.\n * This function is used to set up the necessary instrumentations for monitoring\n * HTTP requests and Express applications. Since it monkey patches the Express\n * router & middleware system, it should be called before any Express applications\n * are defined.\n */\nexport const addInstrumentation = () => {\n const instrumentations = [new HttpInstrumentation(), new ExpressInstrumentation()]\n registerInstrumentations({ instrumentations })\n}\n","import { setRawResponseFormat } from '@xylabs/express'\nimport { asHash, isDefined } from '@xylabs/sdk-js'\nimport type {\n ArchivistInstance,\n ArchivistNextOptions, ModuleIdentifier,\n NextOptions, NodeInstance, Payload,\n} from '@xyo-network/sdk-js'\nimport {\n asArchivistInstance, isAnyPayload, isSequence, PayloadBuilder,\n} from '@xyo-network/sdk-js'\nimport type { Router } from 'express'\nimport express from 'express'\nimport type { Request } from 'express-serve-static-core'\n\nconst resolveArchivist = async (node: NodeInstance, archivistModuleIdentifier: ModuleIdentifier): Promise<ArchivistInstance> => {\n const mod = await node.resolve(archivistModuleIdentifier)\n return asArchivistInstance(mod, { required: true })\n}\n\nlet archivistInstance: ArchivistInstance | undefined\n\nconst getArchivist = async (node: NodeInstance, archivistModuleIdentifier: ModuleIdentifier): Promise<ArchivistInstance> => {\n if (isDefined(archivistInstance)) return archivistInstance\n archivistInstance = await resolveArchivist(node, archivistModuleIdentifier)\n return archivistInstance\n}\n\ntype ArchivistMiddlewareOptions = {\n archivistModuleIdentifier: ModuleIdentifier\n node: NodeInstance\n}\n\nexport const archivistMiddleware = (options: ArchivistMiddlewareOptions): Router => {\n const { node, archivistModuleIdentifier } = options\n const router = express.Router({ mergeParams: true })\n\n router.post('/insert', async (req, res) => {\n setRawResponseFormat(res)\n const body = Array.isArray(req.body) ? req.body : [req.body]\n const payloads = (await PayloadBuilder.hashPairs<Payload>(body)).map(p => p[0])\n const archivist = await getArchivist(node, archivistModuleIdentifier)\n const result = await archivist.insert(payloads)\n res.status(200).json(result)\n })\n\n router.get('/next', async (req: Request<Partial<NextOptions>>, res) => {\n setRawResponseFormat(res)\n const cursor = isSequence(req.query.cursor) ? req.query.cursor : undefined\n const limit = isDefined(req.query.limit) ? Number(req.query.limit) : undefined\n const open = isDefined(req.query.open) ? Boolean(req.query.open) : undefined\n const order = req.query.order === 'asc' ? 'asc' : 'desc'\n const options: ArchivistNextOptions = {\n limit, open, order, cursor,\n }\n const archivist = await getArchivist(node, archivistModuleIdentifier)\n const result = await archivist.next(options)\n res.status(200).json(result)\n })\n router.post('/next', async (req: Request<{}, {}, ArchivistNextOptions | undefined>, res) => {\n setRawResponseFormat(res)\n const options = req.body\n const archivist = await getArchivist(node, archivistModuleIdentifier)\n const result = await (isDefined(options) ? archivist.next(options) : archivist.next())\n res.status(200).json(result)\n })\n\n router.get('/get/:hash', async (req, res) => {\n setRawResponseFormat(res)\n const { hash: rawHash } = req.params\n const hash = asHash(rawHash)\n if (isDefined(hash)) {\n const archivist = await getArchivist(node, archivistModuleIdentifier)\n const [payload] = await archivist.get([hash])\n if (isAnyPayload(payload)) {\n res.json(payload)\n return\n }\n }\n res.status(400).send()\n })\n\n return router\n}\n","import type { Express } from 'express'\n\nimport { archivistMiddleware } from './archivistMiddleware.ts'\n\nexport const addDataLakeRoutes = (app: Express) => {\n const { node } = app.context\n const archivistModuleIdentifier = 'Chain:Finalized'\n app.use('/chain', archivistMiddleware({ node, archivistModuleIdentifier }))\n}\n","import { setRawResponseFormat } from '@xylabs/express'\nimport type { XyoConnection } from '@xyo-network/xl1-sdk'\nimport { rpcServerFromConnection, XyoConnectionMoniker } from '@xyo-network/xl1-sdk'\nimport type { Express } from 'express'\n\nexport const addRpcRoutes = async (\n app: Express,\n) => {\n const { context } = app\n const { locator } = context\n\n const connection = await locator.getInstance<XyoConnection>(XyoConnectionMoniker)\n const rpcServer = rpcServerFromConnection(connection)\n\n app.post('/rpc', async (req, res) => {\n setRawResponseFormat(res)\n const rpcResponse = await rpcServer.handle(req.body)\n res.json(rpcResponse)\n })\n}\n","import type { Express } from 'express'\n\nimport { addDataLakeRoutes } from './dataLake/index.ts'\nimport { addRpcRoutes } from './rpc/index.ts'\n\nexport const addRoutes = async (\n app: Express,\n) => {\n await addRpcRoutes(app)\n addDataLakeRoutes(app)\n}\n","import type { HostActorConfigContext } from '@xyo-network/xl1-sdk'\n\nimport { getApp } from './app.ts'\n\nconst hostname = '::'\n\nexport async function getServer(context: HostActorConfigContext) {\n const { logger, config } = context\n const { port } = config\n\n const app = await getApp(context)\n const server = await new Promise<ReturnType<typeof app.listen>>((resolve, reject) => {\n const srv = app.listen(port, hostname, () => {\n logger?.info(`[API] Server listening at http://${hostname}:${port}`)\n resolve(srv)\n })\n srv.once('error', reject)\n })\n server.setTimeout(20_000)\n return server\n}\n","import type { ApiConfig, OrchestratorInstance } from '@xyo-network/chain-orchestration'\nimport { initActorWallet } from '@xyo-network/chain-orchestration'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\n\nimport { ApiActor } from './ApiActor.ts'\n\nexport const getApiActor = async (\n config: ApiConfig,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const account = await initActorWallet({\n config, singletons: {}, caches: {},\n })\n const params = {\n account, config, locator,\n }\n // Create actors\n return await ApiActor.create(params)\n}\n\nexport const runApi = async (\n config: ApiConfig,\n orchestrator: OrchestratorInstance,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const actors = [await getApiActor(config, locator)]\n\n // Register the actors with the orchestrator\n for (const actor of actors) {\n await orchestrator.registerActor(actor)\n }\n\n // Start the orchestrator => automatically activates the actors\n await orchestrator.start()\n}\n"],"mappings":"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","names":["creatable","ActorV3","asHostActorConfigContext","standardErrors","sharedMiddleware","express","registerInstrumentations","ExpressInstrumentation","HttpInstrumentation","addInstrumentation","instrumentations","HttpInstrumentation","ExpressInstrumentation","registerInstrumentations","setRawResponseFormat","asHash","isDefined","asArchivistInstance","isAnyPayload","isSequence","PayloadBuilder","express","resolveArchivist","node","archivistModuleIdentifier","mod","resolve","asArchivistInstance","required","archivistInstance","getArchivist","isDefined","archivistMiddleware","options","router","express","Router","mergeParams","post","req","res","setRawResponseFormat","body","Array","isArray","payloads","PayloadBuilder","hashPairs","map","p","archivist","result","insert","status","json","get","cursor","isSequence","query","undefined","limit","Number","open","Boolean","order","next","hash","rawHash","params","asHash","payload","isAnyPayload","send","addDataLakeRoutes","app","node","context","archivistModuleIdentifier","use","archivistMiddleware","setRawResponseFormat","rpcServerFromConnection","XyoConnectionMoniker","addRpcRoutes","app","context","locator","connection","getInstance","XyoConnectionMoniker","rpcServer","rpcServerFromConnection","post","req","res","setRawResponseFormat","rpcResponse","handle","body","json","addRoutes","app","addRpcRoutes","addDataLakeRoutes","getApp","context","addInstrumentation","app","express","sharedMiddleware","addRoutes","use","standardErrors","hostname","getServer","context","logger","config","port","app","getApp","server","Promise","resolve","reject","srv","listen","info","once","setTimeout","ApiActor","ActorV3","server","createHandler","startHandler","stopServer","startServer","stopHandler","getServer","asHostActorConfigContext","context","close","undefined","initActorWallet","getApiActor","config","locator","account","initActorWallet","singletons","caches","params","ApiActor","create","runApi","orchestrator","actors","actor","registerActor","start"]}
|
|
1
|
+
{"version":3,"sources":["../../src/ApiActor.ts","../../src/server/app.ts","../../src/server/instrumentation.ts","../../src/server/routes/livez/get.ts","../../src/server/routes/readyz/get.ts","../../src/server/routes/startupz/get.ts","../../src/server/routes/addProbeRoutes.ts","../../src/server/routes/dataLake/archivistMiddleware.ts","../../src/server/routes/dataLake/addDataLakeRoutes.ts","../../src/server/routes/rpc/routes/addRpcRoutes.ts","../../src/server/routes/addRoutes.ts","../../src/server/server.ts","../../src/runApi.ts"],"sourcesContent":["import { Server } from 'node:http'\n\nimport { creatable } from '@xylabs/sdk-js'\nimport { ApiConfig } from '@xyo-network/chain-orchestration'\nimport {\n ActorParamsV3, ActorV3, asHostActorConfigContext,\n} from '@xyo-network/xl1-sdk'\n\nimport { getServer } from './server/index.ts'\n\nexport type ApiActorParams = ActorParamsV3<{\n config: ApiConfig\n}>\n\n@creatable()\nexport class ApiActor extends ActorV3<ApiActorParams> {\n private server?: Server\n\n override async createHandler() {\n await super.createHandler()\n }\n\n override async startHandler() {\n await super.startHandler()\n this.stopServer()\n await this.startServer()\n }\n\n override async stopHandler() {\n await super.stopHandler()\n this.stopServer()\n }\n\n private async startServer() {\n this.server = await getServer(asHostActorConfigContext(this.context, true))\n }\n\n private stopServer() {\n this.server?.close()\n this.server = undefined\n }\n}\n","import { standardErrors } from '@xylabs/express'\nimport { sharedMiddleware } from '@xyo-network/chain-orchestration'\nimport type { HostActorConfigContext } from '@xyo-network/xl1-sdk'\nimport type { Express } from 'express'\nimport express from 'express'\n\nimport { addInstrumentation } from './instrumentation.ts'\nimport { addRoutes } from './routes/index.ts'\n\nexport const getApp = async (context: HostActorConfigContext): Promise<Express> => {\n addInstrumentation()\n const app = express()\n sharedMiddleware(app)\n app.context = context\n await addRoutes(app)\n app.use(standardErrors)\n return app\n}\n","import { registerInstrumentations } from '@opentelemetry/instrumentation'\nimport { ExpressInstrumentation } from '@opentelemetry/instrumentation-express'\nimport { HttpInstrumentation } from '@opentelemetry/instrumentation-http'\n\n/**\n * Registers OpenTelemetry instrumentations for HTTP and Express.\n * This function is used to set up the necessary instrumentations for monitoring\n * HTTP requests and Express applications. Since it monkey patches the Express\n * router & middleware system, it should be called before any Express applications\n * are defined.\n */\nexport const addInstrumentation = () => {\n const instrumentations = [new HttpInstrumentation(), new ExpressInstrumentation()]\n registerInstrumentations({ instrumentations })\n}\n","import type { NoReqParams } from '@xylabs/express'\nimport { setRawResponseFormat } from '@xylabs/express'\nimport type { RequestHandler } from 'express'\nimport { ReasonPhrases } from 'http-status-codes'\n\nconst message = ReasonPhrases.OK\n\nconst handler: RequestHandler<NoReqParams> = (_req, res) => {\n setRawResponseFormat(res)\n res.status(200).send({ message })\n}\n\nexport const getLivez: RequestHandler<NoReqParams> = handler\n","import type { NoReqParams } from '@xylabs/express'\nimport { setRawResponseFormat } from '@xylabs/express'\nimport type { RequestHandler } from 'express'\nimport { ReasonPhrases } from 'http-status-codes'\n\nconst message = ReasonPhrases.OK\n\nconst handler: RequestHandler<NoReqParams> = (_req, res) => {\n setRawResponseFormat(res)\n res.status(200).send({ message })\n}\n\nexport const getReadyz: RequestHandler<NoReqParams> = handler\n","import type { NoReqParams } from '@xylabs/express'\nimport { setRawResponseFormat } from '@xylabs/express'\nimport type { RequestHandler } from 'express'\nimport { ReasonPhrases } from 'http-status-codes'\n\nconst message = ReasonPhrases.OK\n\nconst handler: RequestHandler<NoReqParams> = (_req, res) => {\n setRawResponseFormat(res)\n res.status(200).send({ message })\n}\n\nexport const getStartupz: RequestHandler<NoReqParams> = handler\n","import type { Express } from 'express'\n\nimport { getLivez } from './livez/index.ts'\nimport { getReadyz } from './readyz/index.ts'\nimport { getStartupz } from './startupz/index.ts'\n\nexport const addProbeRoutes = (app: Express) => {\n app.get('/livez', getLivez)\n app.get('/readyz', getReadyz)\n app.get('/startupz', getStartupz)\n}\n","import { setRawResponseFormat } from '@xylabs/express'\nimport { asHash, isDefined } from '@xylabs/sdk-js'\nimport type {\n ArchivistInstance,\n ArchivistNextOptions, ModuleIdentifier,\n NextOptions, NodeInstance, Payload,\n} from '@xyo-network/sdk-js'\nimport {\n asArchivistInstance, isAnyPayload, isSequence, PayloadBuilder,\n} from '@xyo-network/sdk-js'\nimport type { Request, Router } from 'express'\nimport express from 'express'\n\nconst resolveArchivist = async (node: NodeInstance, archivistModuleIdentifier: ModuleIdentifier): Promise<ArchivistInstance> => {\n const mod = await node.resolve(archivistModuleIdentifier)\n return asArchivistInstance(mod, { required: true })\n}\n\nlet archivistInstance: ArchivistInstance | undefined\n\nconst getArchivist = async (node: NodeInstance, archivistModuleIdentifier: ModuleIdentifier): Promise<ArchivistInstance> => {\n if (isDefined(archivistInstance)) return archivistInstance\n archivistInstance = await resolveArchivist(node, archivistModuleIdentifier)\n return archivistInstance\n}\n\ntype ArchivistMiddlewareOptions = {\n archivistModuleIdentifier: ModuleIdentifier\n node: NodeInstance\n}\n\nexport const archivistMiddleware = (options: ArchivistMiddlewareOptions): Router => {\n const { node, archivistModuleIdentifier } = options\n const router = express.Router({ mergeParams: true })\n\n router.post('/insert', async (req, res) => {\n setRawResponseFormat(res)\n const body = Array.isArray(req.body) ? req.body : [req.body]\n const payloads = (await PayloadBuilder.hashPairs<Payload>(body)).map(p => p[0])\n const archivist = await getArchivist(node, archivistModuleIdentifier)\n const result = await archivist.insert(payloads)\n res.status(200).json(result)\n })\n\n router.get('/next', async (req: Request<Partial<NextOptions>>, res) => {\n setRawResponseFormat(res)\n const cursor = isSequence(req.query.cursor) ? req.query.cursor : undefined\n const limit = isDefined(req.query.limit) ? Number(req.query.limit) : undefined\n const open = isDefined(req.query.open) ? Boolean(req.query.open) : undefined\n const order = req.query.order === 'asc' ? 'asc' : 'desc'\n const options: ArchivistNextOptions = {\n limit, open, order, cursor,\n }\n const archivist = await getArchivist(node, archivistModuleIdentifier)\n const result = await archivist.next(options)\n res.status(200).json(result)\n })\n router.post('/next', async (req: Request<{}, {}, ArchivistNextOptions | undefined>, res) => {\n setRawResponseFormat(res)\n const options = req.body\n const archivist = await getArchivist(node, archivistModuleIdentifier)\n const result = await (isDefined(options) ? archivist.next(options) : archivist.next())\n res.status(200).json(result)\n })\n\n router.get('/get/:hash', async (req, res) => {\n setRawResponseFormat(res)\n const { hash: rawHash } = req.params\n const hash = asHash(rawHash)\n if (isDefined(hash)) {\n const archivist = await getArchivist(node, archivistModuleIdentifier)\n const [payload] = await archivist.get([hash])\n if (isAnyPayload(payload)) {\n res.json(payload)\n return\n }\n }\n res.status(400).send()\n })\n\n return router\n}\n","import type { Express } from 'express'\n\nimport { archivistMiddleware } from './archivistMiddleware.ts'\n\nexport const addDataLakeRoutes = (app: Express) => {\n const { node } = app.context\n const archivistModuleIdentifier = 'Chain:Finalized'\n app.use('/chain', archivistMiddleware({ node, archivistModuleIdentifier }))\n}\n","import { setRawResponseFormat } from '@xylabs/express'\nimport type { XyoConnection } from '@xyo-network/xl1-sdk'\nimport { rpcServerFromConnection, XyoConnectionMoniker } from '@xyo-network/xl1-sdk'\nimport type { Express } from 'express'\n\nexport const addRpcRoutes = async (\n app: Express,\n) => {\n const { context } = app\n const { locator } = context\n\n const connection = await locator.getInstance<XyoConnection>(XyoConnectionMoniker)\n const rpcServer = rpcServerFromConnection(connection)\n\n app.post('/rpc', async (req, res) => {\n setRawResponseFormat(res)\n const rpcResponse = await rpcServer.handle(req.body)\n res.json(rpcResponse)\n })\n}\n","import type { Express } from 'express'\n\nimport { addProbeRoutes } from './addProbeRoutes.ts'\nimport { addDataLakeRoutes } from './dataLake/index.ts'\nimport { addRpcRoutes } from './rpc/index.ts'\n\nexport const addRoutes = async (\n app: Express,\n) => {\n addProbeRoutes(app)\n await addRpcRoutes(app)\n addDataLakeRoutes(app)\n}\n","import type { HostActorConfigContext } from '@xyo-network/xl1-sdk'\n\nimport { getApp } from './app.ts'\n\nconst hostname = '::'\n\nexport async function getServer(context: HostActorConfigContext) {\n const { logger, config } = context\n const { port } = config\n\n const app = await getApp(context)\n const server = await new Promise<ReturnType<typeof app.listen>>((resolve, reject) => {\n const srv = app.listen(port, hostname, () => {\n logger?.info(`[API] Server listening at http://${hostname}:${port}`)\n resolve(srv)\n })\n srv.once('error', reject)\n })\n server.setTimeout(20_000)\n return server\n}\n","import type { ApiConfig, OrchestratorInstance } from '@xyo-network/chain-orchestration'\nimport { initActorWallet } from '@xyo-network/chain-orchestration'\nimport type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'\n\nimport { ApiActor } from './ApiActor.ts'\n\nexport const getApiActor = async (\n config: ApiConfig,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const account = await initActorWallet({\n config, singletons: {}, caches: {},\n })\n const params = {\n account, config, locator,\n }\n // Create actors\n return await ApiActor.create(params)\n}\n\nexport const runApi = async (\n config: ApiConfig,\n orchestrator: OrchestratorInstance,\n locator: ProviderFactoryLocatorInstance,\n) => {\n const actors = [await getApiActor(config, locator)]\n\n // Register the actors with the orchestrator\n for (const actor of actors) {\n await orchestrator.registerActor(actor)\n }\n\n // Start the orchestrator => automatically activates the actors\n await orchestrator.start()\n}\n"],"mappings":"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","names":["creatable","ActorV3","asHostActorConfigContext","standardErrors","sharedMiddleware","express","registerInstrumentations","ExpressInstrumentation","HttpInstrumentation","addInstrumentation","instrumentations","HttpInstrumentation","ExpressInstrumentation","registerInstrumentations","setRawResponseFormat","ReasonPhrases","message","ReasonPhrases","OK","handler","_req","res","setRawResponseFormat","status","send","getLivez","setRawResponseFormat","ReasonPhrases","message","ReasonPhrases","OK","handler","_req","res","setRawResponseFormat","status","send","getReadyz","setRawResponseFormat","ReasonPhrases","message","ReasonPhrases","OK","handler","_req","res","setRawResponseFormat","status","send","getStartupz","addProbeRoutes","app","get","getLivez","getReadyz","getStartupz","setRawResponseFormat","asHash","isDefined","asArchivistInstance","isAnyPayload","isSequence","PayloadBuilder","express","resolveArchivist","node","archivistModuleIdentifier","mod","resolve","asArchivistInstance","required","archivistInstance","getArchivist","isDefined","archivistMiddleware","options","router","express","Router","mergeParams","post","req","res","setRawResponseFormat","body","Array","isArray","payloads","PayloadBuilder","hashPairs","map","p","archivist","result","insert","status","json","get","cursor","isSequence","query","undefined","limit","Number","open","Boolean","order","next","hash","rawHash","params","asHash","payload","isAnyPayload","send","addDataLakeRoutes","app","node","context","archivistModuleIdentifier","use","archivistMiddleware","setRawResponseFormat","rpcServerFromConnection","XyoConnectionMoniker","addRpcRoutes","app","context","locator","connection","getInstance","XyoConnectionMoniker","rpcServer","rpcServerFromConnection","post","req","res","setRawResponseFormat","rpcResponse","handle","body","json","addRoutes","app","addProbeRoutes","addRpcRoutes","addDataLakeRoutes","getApp","context","addInstrumentation","app","express","sharedMiddleware","addRoutes","use","standardErrors","hostname","getServer","context","logger","config","port","app","getApp","server","Promise","resolve","reject","srv","listen","info","once","setTimeout","ApiActor","ActorV3","server","createHandler","startHandler","stopServer","startServer","stopHandler","getServer","asHostActorConfigContext","context","close","undefined","initActorWallet","getApiActor","config","locator","account","initActorWallet","singletons","caches","params","ApiActor","create","runApi","orchestrator","actors","actor","registerActor","start"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addProbeRoutes.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/addProbeRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAMtC,eAAO,MAAM,cAAc,GAAI,KAAK,OAAO,SAI1C,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addRoutes.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/addRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"addRoutes.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/addRoutes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAMtC,eAAO,MAAM,SAAS,GACpB,KAAK,OAAO,kBAKb,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"archivistMiddleware.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/dataLake/archivistMiddleware.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEY,gBAAgB,EACzB,YAAY,EAC1B,MAAM,qBAAqB,CAAA;AAI5B,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"archivistMiddleware.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/dataLake/archivistMiddleware.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAEY,gBAAgB,EACzB,YAAY,EAC1B,MAAM,qBAAqB,CAAA;AAI5B,OAAO,KAAK,EAAW,MAAM,EAAE,MAAM,SAAS,CAAA;AAgB9C,KAAK,0BAA0B,GAAG;IAChC,yBAAyB,EAAE,gBAAgB,CAAA;IAC3C,IAAI,EAAE,YAAY,CAAA;CACnB,CAAA;AAED,eAAO,MAAM,mBAAmB,GAAI,SAAS,0BAA0B,KAAG,MAkDzE,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/routes/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/livez/get.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAU7C,eAAO,MAAM,QAAQ,EAAE,cAAc,CAAC,WAAW,CAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/livez/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/readyz/get.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAU7C,eAAO,MAAM,SAAS,EAAE,cAAc,CAAC,WAAW,CAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/readyz/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/startupz/get.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAU7C,eAAO,MAAM,WAAW,EAAE,cAAc,CAAC,WAAW,CAAW,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/startupz/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xyo-network/chain-api",
|
|
3
|
-
"version": "1.20.
|
|
3
|
+
"version": "1.20.16",
|
|
4
4
|
"description": "XYO Layer One API",
|
|
5
5
|
"homepage": "https://xylabs.com",
|
|
6
6
|
"bugs": {
|
|
@@ -22,81 +22,172 @@
|
|
|
22
22
|
"exports": {
|
|
23
23
|
".": {
|
|
24
24
|
"types": "./dist/node/index.d.ts",
|
|
25
|
-
"source": "./src/index.ts",
|
|
26
25
|
"default": "./dist/node/index.mjs"
|
|
27
26
|
},
|
|
28
27
|
"./package.json": "./package.json",
|
|
29
28
|
"./README.md": "./README.md"
|
|
30
29
|
},
|
|
31
30
|
"module": "./dist/node/index.mjs",
|
|
32
|
-
"source": "./src/index.ts",
|
|
33
31
|
"types": "./dist/node/index.d.ts",
|
|
34
32
|
"files": [
|
|
35
33
|
"dist",
|
|
36
|
-
"src",
|
|
37
34
|
"!**/*.bench.*",
|
|
38
35
|
"!**/*.spec.*",
|
|
39
|
-
"!**/*.test.*"
|
|
36
|
+
"!**/*.test.*",
|
|
37
|
+
"README.md"
|
|
40
38
|
],
|
|
41
|
-
"scripts": {
|
|
42
|
-
"build-tests": "tsc --noEmit --lib dom,esnext",
|
|
43
|
-
"deploy": "echo Deploy not allowed!",
|
|
44
|
-
"deploy3": "echo Deploy3 not allowed!",
|
|
45
|
-
"start": "nodemon",
|
|
46
|
-
"start-esm": "node ./dist/node/index.mjs",
|
|
47
|
-
"test": "vitest run",
|
|
48
|
-
"test:ci": "vitest run",
|
|
49
|
-
"types": "tsc --noEmit -p tsconfig.test.json"
|
|
50
|
-
},
|
|
51
39
|
"dependencies": {
|
|
52
40
|
"@opentelemetry/instrumentation": "~0.214.0",
|
|
53
41
|
"@opentelemetry/instrumentation-express": "~0.62.0",
|
|
54
42
|
"@opentelemetry/instrumentation-http": "~0.214.0",
|
|
55
|
-
"@
|
|
56
|
-
"@xyo-network/sdk-js": "~5.3.
|
|
57
|
-
"@xyo-network/xl1-sdk": "~1.26.
|
|
43
|
+
"@xylabs/express": "~5.0.95",
|
|
44
|
+
"@xyo-network/sdk-js": "~5.3.30",
|
|
45
|
+
"@xyo-network/xl1-sdk": "~1.26.19",
|
|
46
|
+
"express": "^5.2.1",
|
|
47
|
+
"http-status-codes": "~2.3.0",
|
|
48
|
+
"@xyo-network/chain-orchestration": "~1.20.16"
|
|
58
49
|
},
|
|
59
50
|
"devDependencies": {
|
|
60
51
|
"@opentelemetry/api": "^1.9.1",
|
|
61
|
-
"@types/express
|
|
62
|
-
"@types/node": "~25.5.
|
|
63
|
-
"@xylabs/
|
|
64
|
-
"@xylabs/
|
|
65
|
-
"@xylabs/
|
|
66
|
-
"@xylabs/ts-scripts-
|
|
67
|
-
"@xylabs/
|
|
68
|
-
"@
|
|
69
|
-
"@xyo-network/
|
|
70
|
-
"@xyo-network/
|
|
71
|
-
"
|
|
72
|
-
"
|
|
52
|
+
"@types/express": "^5.0.6",
|
|
53
|
+
"@types/node": "~25.5.2",
|
|
54
|
+
"@xylabs/mongo": "~5.0.95",
|
|
55
|
+
"@xylabs/sdk-js": "~5.0.95",
|
|
56
|
+
"@xylabs/ts-scripts-common": "~7.9.3",
|
|
57
|
+
"@xylabs/ts-scripts-pnpm": "~7.9.3",
|
|
58
|
+
"@xylabs/tsconfig": "~7.9.3",
|
|
59
|
+
"@xyo-network/account": "~5.3.30",
|
|
60
|
+
"@xyo-network/account-model": "~5.3",
|
|
61
|
+
"@xyo-network/api-models": "~5.3.30",
|
|
62
|
+
"@xyo-network/archivist-abstract": "~5.3",
|
|
63
|
+
"@xyo-network/archivist-generic": "~5.3.30",
|
|
64
|
+
"@xyo-network/archivist-memory": "~5.3.30",
|
|
65
|
+
"@xyo-network/archivist-model": "~5.3",
|
|
66
|
+
"@xyo-network/archivist-view": "~5.3.30",
|
|
67
|
+
"@xyo-network/archivist-wrapper": "~5.3",
|
|
68
|
+
"@xyo-network/boundwitness-builder": "~5.3.30",
|
|
69
|
+
"@xyo-network/boundwitness-validator": "~5.3",
|
|
70
|
+
"@xyo-network/bridge-abstract": "~5.3.30",
|
|
71
|
+
"@xyo-network/bridge-model": "~5.3.30",
|
|
72
|
+
"@xyo-network/config-payload-plugin": "~5.3.30",
|
|
73
|
+
"@xyo-network/data": "~5.3.30",
|
|
74
|
+
"@xyo-network/diviner-abstract": "~5.3",
|
|
75
|
+
"@xyo-network/diviner-boundwitness-memory": "~5.3.30",
|
|
76
|
+
"@xyo-network/diviner-identity": "~5.3.30",
|
|
77
|
+
"@xyo-network/diviner-model": "~5.3.30",
|
|
78
|
+
"@xyo-network/diviner-payload-generic": "~5.3.30",
|
|
79
|
+
"@xyo-network/diviner-payload-model": "~5.3.30",
|
|
80
|
+
"@xyo-network/diviner-wrapper": "~5.3",
|
|
81
|
+
"@xyo-network/dns": "~5.3.30",
|
|
82
|
+
"@xyo-network/domain-payload-plugin": "~5.3.30",
|
|
83
|
+
"@xyo-network/elliptic": "~5.3.30",
|
|
84
|
+
"@xyo-network/hash": "~5.3",
|
|
85
|
+
"@xyo-network/huri": "~5.3.30",
|
|
86
|
+
"@xyo-network/manifest-model": "~5.3",
|
|
87
|
+
"@xyo-network/module-abstract": "~5.3",
|
|
88
|
+
"@xyo-network/module-model": "~5.3",
|
|
89
|
+
"@xyo-network/module-model-mongodb": "~5.3",
|
|
90
|
+
"@xyo-network/module-resolver": "~5.3.30",
|
|
91
|
+
"@xyo-network/module-wrapper": "~5.3",
|
|
92
|
+
"@xyo-network/network": "~5.3.30",
|
|
93
|
+
"@xyo-network/node-abstract": "~5.3.30",
|
|
94
|
+
"@xyo-network/node-memory": "~5.3.30",
|
|
95
|
+
"@xyo-network/node-model": "~5.3.30",
|
|
96
|
+
"@xyo-network/node-view": "~5.3.30",
|
|
97
|
+
"@xyo-network/node-wrapper": "~5.3",
|
|
98
|
+
"@xyo-network/payload-builder": "~5.3",
|
|
99
|
+
"@xyo-network/payload-model": "~5.3.30",
|
|
100
|
+
"@xyo-network/payload-validator": "~5.3",
|
|
101
|
+
"@xyo-network/previous-hash-store-model": "~5.3.30",
|
|
102
|
+
"@xyo-network/sentinel-abstract": "~5.3.30",
|
|
103
|
+
"@xyo-network/sentinel-memory": "~5.3.30",
|
|
104
|
+
"@xyo-network/sentinel-model": "~5.3.30",
|
|
105
|
+
"@xyo-network/wallet-model": "~5.3.30",
|
|
106
|
+
"@xyo-network/wasm": "~5.3.30",
|
|
107
|
+
"@xyo-network/witness-adhoc": "~5.3.30",
|
|
108
|
+
"@xyo-network/witness-model": "~5.3.30",
|
|
109
|
+
"ajv": "^8",
|
|
110
|
+
"axios": "^1.14.0",
|
|
111
|
+
"dotenv": "~17.4.1",
|
|
112
|
+
"esbuild": ">=0.18",
|
|
73
113
|
"ethers": "^6.16.0",
|
|
74
|
-
"
|
|
75
|
-
"http-status-codes": "~2.3.0",
|
|
114
|
+
"lmdb": "^3",
|
|
76
115
|
"mongodb": "~7.1.1",
|
|
77
116
|
"nodemon": "~3.1.14",
|
|
117
|
+
"pako": "~2.1.0",
|
|
78
118
|
"tslib": "~2.8.1",
|
|
79
119
|
"typescript": "~5.9.3",
|
|
80
|
-
"
|
|
81
|
-
"
|
|
120
|
+
"vite": "^8.0.7",
|
|
121
|
+
"vitest": "^4.1.3",
|
|
122
|
+
"zod": "^4.3.6",
|
|
123
|
+
"@xyo-network/chain-services": "~1.20.16",
|
|
124
|
+
"@xyo-network/chain-telemetry": "~1.20.16"
|
|
82
125
|
},
|
|
83
126
|
"peerDependencies": {
|
|
84
|
-
"@
|
|
85
|
-
"@
|
|
86
|
-
"@
|
|
87
|
-
"@
|
|
88
|
-
"@xyo-network/
|
|
89
|
-
"
|
|
90
|
-
"
|
|
91
|
-
"
|
|
92
|
-
"
|
|
93
|
-
"
|
|
127
|
+
"@xylabs/sdk-js": "~5.0.93",
|
|
128
|
+
"@xyo-network/account": "~5.3.30",
|
|
129
|
+
"@xyo-network/account-model": "~5.3",
|
|
130
|
+
"@xyo-network/api-models": "~5.3.30",
|
|
131
|
+
"@xyo-network/archivist-abstract": "~5.3",
|
|
132
|
+
"@xyo-network/archivist-generic": "~5.3.30",
|
|
133
|
+
"@xyo-network/archivist-memory": "~5.3.30",
|
|
134
|
+
"@xyo-network/archivist-model": "~5.3",
|
|
135
|
+
"@xyo-network/archivist-view": "~5.3.30",
|
|
136
|
+
"@xyo-network/boundwitness-builder": "~5.3.30",
|
|
137
|
+
"@xyo-network/boundwitness-validator": "~5.3",
|
|
138
|
+
"@xyo-network/bridge-abstract": "~5.3.30",
|
|
139
|
+
"@xyo-network/bridge-model": "~5.3.30",
|
|
140
|
+
"@xyo-network/config-payload-plugin": "~5.3.30",
|
|
141
|
+
"@xyo-network/data": "~5.3.30",
|
|
142
|
+
"@xyo-network/diviner-boundwitness-memory": "~5.3.30",
|
|
143
|
+
"@xyo-network/diviner-identity": "~5.3.30",
|
|
144
|
+
"@xyo-network/diviner-model": "~5.3.30",
|
|
145
|
+
"@xyo-network/diviner-payload-generic": "~5.3.30",
|
|
146
|
+
"@xyo-network/diviner-payload-model": "~5.3.30",
|
|
147
|
+
"@xyo-network/dns": "~5.3.30",
|
|
148
|
+
"@xyo-network/domain-payload-plugin": "~5.3.30",
|
|
149
|
+
"@xyo-network/elliptic": "~5.3.30",
|
|
150
|
+
"@xyo-network/hash": "~5.3",
|
|
151
|
+
"@xyo-network/huri": "~5.3.30",
|
|
152
|
+
"@xyo-network/manifest-model": "~5.3",
|
|
153
|
+
"@xyo-network/module-abstract": "~5.3",
|
|
154
|
+
"@xyo-network/module-model": "~5.3",
|
|
155
|
+
"@xyo-network/module-model-mongodb": "~5.3",
|
|
156
|
+
"@xyo-network/module-resolver": "~5.3.30",
|
|
157
|
+
"@xyo-network/network": "~5.3.30",
|
|
158
|
+
"@xyo-network/node-abstract": "~5.3.30",
|
|
159
|
+
"@xyo-network/node-memory": "~5.3.30",
|
|
160
|
+
"@xyo-network/node-model": "~5.3.30",
|
|
161
|
+
"@xyo-network/node-view": "~5.3.30",
|
|
162
|
+
"@xyo-network/payload-builder": "~5.3",
|
|
163
|
+
"@xyo-network/payload-model": "~5.3.30",
|
|
164
|
+
"@xyo-network/payload-validator": "~5.3",
|
|
165
|
+
"@xyo-network/previous-hash-store-model": "~5.3.30",
|
|
166
|
+
"@xyo-network/sentinel-abstract": "~5.3.30",
|
|
167
|
+
"@xyo-network/sentinel-memory": "~5.3.30",
|
|
168
|
+
"@xyo-network/sentinel-model": "~5.3.30",
|
|
169
|
+
"@xyo-network/wallet-model": "~5.3.30",
|
|
170
|
+
"@xyo-network/wasm": "~5.3.30",
|
|
171
|
+
"@xyo-network/witness-adhoc": "~5.3.30",
|
|
172
|
+
"@xyo-network/witness-model": "~5.3.30",
|
|
173
|
+
"ethers": "^6.16.0",
|
|
174
|
+
"pako": "~2.1.0",
|
|
175
|
+
"@xyo-network/chain-telemetry": "~1.20.16",
|
|
176
|
+
"@xyo-network/chain-services": "~1.20.16"
|
|
94
177
|
},
|
|
95
178
|
"engines": {
|
|
96
|
-
"node": ">=
|
|
179
|
+
"node": ">=24"
|
|
97
180
|
},
|
|
98
181
|
"engineStrict": true,
|
|
99
182
|
"publishConfig": {
|
|
100
183
|
"access": "restricted"
|
|
184
|
+
},
|
|
185
|
+
"scripts": {
|
|
186
|
+
"build-tests": "tsc --noEmit --lib dom,esnext",
|
|
187
|
+
"deploy": "echo Deploy not allowed!",
|
|
188
|
+
"deploy3": "echo Deploy3 not allowed!",
|
|
189
|
+
"start": "nodemon",
|
|
190
|
+
"start-esm": "node ./dist/node/index.mjs",
|
|
191
|
+
"types": "tsc --noEmit -p tsconfig.test.json"
|
|
101
192
|
}
|
|
102
|
-
}
|
|
193
|
+
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/healthz/get.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAElD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAiB7C,eAAO,MAAM,UAAU,EAAE,cAAc,CAAC,WAAW,CAAW,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/server/routes/healthz/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAA"}
|
package/src/ApiActor.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { Server } from 'node:http'
|
|
2
|
-
|
|
3
|
-
import { creatable } from '@xylabs/sdk-js'
|
|
4
|
-
import { ApiConfig } from '@xyo-network/chain-orchestration'
|
|
5
|
-
import {
|
|
6
|
-
ActorParamsV3, ActorV3, asHostActorConfigContext,
|
|
7
|
-
} from '@xyo-network/xl1-sdk'
|
|
8
|
-
|
|
9
|
-
import { getServer } from './server/index.ts'
|
|
10
|
-
|
|
11
|
-
export type ApiActorParams = ActorParamsV3<{
|
|
12
|
-
config: ApiConfig
|
|
13
|
-
}>
|
|
14
|
-
|
|
15
|
-
@creatable()
|
|
16
|
-
export class ApiActor extends ActorV3<ApiActorParams> {
|
|
17
|
-
private server?: Server
|
|
18
|
-
|
|
19
|
-
override async createHandler() {
|
|
20
|
-
await super.createHandler()
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
override async startHandler() {
|
|
24
|
-
await super.startHandler()
|
|
25
|
-
this.stopServer()
|
|
26
|
-
await this.startServer()
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
override async stopHandler() {
|
|
30
|
-
await super.stopHandler()
|
|
31
|
-
this.stopServer()
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
private async startServer() {
|
|
35
|
-
this.server = await getServer(asHostActorConfigContext(this.context, true))
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
private stopServer() {
|
|
39
|
-
this.server?.close()
|
|
40
|
-
this.server = undefined
|
|
41
|
-
}
|
|
42
|
-
}
|
package/src/global.d.ts
DELETED
package/src/helpers/index.ts
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
assertEx, hexFrom, isDefined, isHex,
|
|
3
|
-
} from '@xylabs/sdk-js'
|
|
4
|
-
import type { Config } from '@xyo-network/xl1-sdk'
|
|
5
|
-
|
|
6
|
-
export const canUseChainId = (config: Config): boolean => {
|
|
7
|
-
return isDefined(config.evm.chainId)
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
export const getChainId = (config: Config) => {
|
|
11
|
-
const chainId = assertEx(config.evm.chainId, () => 'Missing config.evm.chainId')
|
|
12
|
-
if (isHex(chainId, { prefix: true })) {
|
|
13
|
-
const hex = hexFrom(chainId)
|
|
14
|
-
const parsed = Number.parseInt(hex, 16)
|
|
15
|
-
return parsed
|
|
16
|
-
} else {
|
|
17
|
-
const parsed = Number.parseInt(chainId, 10)
|
|
18
|
-
return parsed
|
|
19
|
-
}
|
|
20
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { assertEx, isDefined } from '@xylabs/sdk-js'
|
|
2
|
-
import type { Config } from '@xyo-network/xl1-sdk'
|
|
3
|
-
import type { Provider } from 'ethers'
|
|
4
|
-
import { InfuraProvider } from 'ethers/providers'
|
|
5
|
-
|
|
6
|
-
import { canUseChainId, getChainId } from './initChainId.ts'
|
|
7
|
-
|
|
8
|
-
let instance: Promise<InfuraProvider> | undefined
|
|
9
|
-
|
|
10
|
-
export const initInfuraProvider = (config: Config): Promise<Provider> => {
|
|
11
|
-
if (instance) return instance
|
|
12
|
-
const providerConfig = getInfuraProviderConfig(config)
|
|
13
|
-
instance = Promise.resolve(new InfuraProvider(providerConfig[0], providerConfig[1]))
|
|
14
|
-
return instance
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export const canUseInfuraProvider = (config: Config): boolean => {
|
|
18
|
-
return canUseChainId(config)
|
|
19
|
-
&& isDefined(config.evm?.infura?.projectId)
|
|
20
|
-
&& isDefined(config.evm?.infura?.projectSecret)
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export const getInfuraProviderConfig = (config: Config) => {
|
|
24
|
-
const projectId = assertEx(config.evm?.infura?.projectId, () => 'Missing config.evm.infura.projectId')
|
|
25
|
-
const projectSecret = assertEx(config.evm?.infura?.projectSecret, () => 'Missing config.evm.infura.projectSecret')
|
|
26
|
-
return [getChainId(config), projectId, projectSecret] as const
|
|
27
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { assertEx, isDefined } from '@xylabs/sdk-js'
|
|
2
|
-
import type { Config } from '@xyo-network/xl1-sdk'
|
|
3
|
-
import { JsonRpcProvider } from 'ethers/providers'
|
|
4
|
-
|
|
5
|
-
import { canUseChainId, getChainId } from './initChainId.ts'
|
|
6
|
-
|
|
7
|
-
export const initJsonRpcProvider = (config: Config) => {
|
|
8
|
-
const providerConfig = getJsonRpcProviderConfig(config)
|
|
9
|
-
return Promise.resolve(new JsonRpcProvider(...providerConfig))
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
export const canUseJsonRpcProvider = (config: Config) => {
|
|
13
|
-
return canUseChainId(config)
|
|
14
|
-
&& isDefined(config.evm.jsonRpc?.url)
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
export const getJsonRpcProviderConfig = (config: Config) => {
|
|
18
|
-
const jsonRpcUrl = assertEx(config.evm.jsonRpc?.url, () => 'Missing config.evm.jsonRpc.url')
|
|
19
|
-
return [jsonRpcUrl, getChainId(config)] as const
|
|
20
|
-
}
|
package/src/index.ts
DELETED
package/src/model.ts
DELETED
package/src/runApi.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { ApiConfig, OrchestratorInstance } from '@xyo-network/chain-orchestration'
|
|
2
|
-
import { initActorWallet } from '@xyo-network/chain-orchestration'
|
|
3
|
-
import type { ProviderFactoryLocatorInstance } from '@xyo-network/xl1-sdk'
|
|
4
|
-
|
|
5
|
-
import { ApiActor } from './ApiActor.ts'
|
|
6
|
-
|
|
7
|
-
export const getApiActor = async (
|
|
8
|
-
config: ApiConfig,
|
|
9
|
-
locator: ProviderFactoryLocatorInstance,
|
|
10
|
-
) => {
|
|
11
|
-
const account = await initActorWallet({
|
|
12
|
-
config, singletons: {}, caches: {},
|
|
13
|
-
})
|
|
14
|
-
const params = {
|
|
15
|
-
account, config, locator,
|
|
16
|
-
}
|
|
17
|
-
// Create actors
|
|
18
|
-
return await ApiActor.create(params)
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export const runApi = async (
|
|
22
|
-
config: ApiConfig,
|
|
23
|
-
orchestrator: OrchestratorInstance,
|
|
24
|
-
locator: ProviderFactoryLocatorInstance,
|
|
25
|
-
) => {
|
|
26
|
-
const actors = [await getApiActor(config, locator)]
|
|
27
|
-
|
|
28
|
-
// Register the actors with the orchestrator
|
|
29
|
-
for (const actor of actors) {
|
|
30
|
-
await orchestrator.registerActor(actor)
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
// Start the orchestrator => automatically activates the actors
|
|
34
|
-
await orchestrator.start()
|
|
35
|
-
}
|
package/src/server/app.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { standardErrors } from '@xylabs/express'
|
|
2
|
-
import { sharedMiddleware } from '@xyo-network/chain-orchestration'
|
|
3
|
-
import type { HostActorConfigContext } from '@xyo-network/xl1-sdk'
|
|
4
|
-
import type { Express } from 'express'
|
|
5
|
-
import express from 'express'
|
|
6
|
-
|
|
7
|
-
import { addInstrumentation } from './instrumentation.ts'
|
|
8
|
-
import { addRoutes } from './routes/index.ts'
|
|
9
|
-
|
|
10
|
-
export const getApp = async (context: HostActorConfigContext): Promise<Express> => {
|
|
11
|
-
addInstrumentation()
|
|
12
|
-
const app = express()
|
|
13
|
-
sharedMiddleware(app)
|
|
14
|
-
app.context = context
|
|
15
|
-
await addRoutes(app)
|
|
16
|
-
app.use(standardErrors)
|
|
17
|
-
return app
|
|
18
|
-
}
|
package/src/server/index.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { registerInstrumentations } from '@opentelemetry/instrumentation'
|
|
2
|
-
import { ExpressInstrumentation } from '@opentelemetry/instrumentation-express'
|
|
3
|
-
import { HttpInstrumentation } from '@opentelemetry/instrumentation-http'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Registers OpenTelemetry instrumentations for HTTP and Express.
|
|
7
|
-
* This function is used to set up the necessary instrumentations for monitoring
|
|
8
|
-
* HTTP requests and Express applications. Since it monkey patches the Express
|
|
9
|
-
* router & middleware system, it should be called before any Express applications
|
|
10
|
-
* are defined.
|
|
11
|
-
*/
|
|
12
|
-
export const addInstrumentation = () => {
|
|
13
|
-
const instrumentations = [new HttpInstrumentation(), new ExpressInstrumentation()]
|
|
14
|
-
registerInstrumentations({ instrumentations })
|
|
15
|
-
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Express } from 'express'
|
|
2
|
-
|
|
3
|
-
import { addDataLakeRoutes } from './dataLake/index.ts'
|
|
4
|
-
import { addRpcRoutes } from './rpc/index.ts'
|
|
5
|
-
|
|
6
|
-
export const addRoutes = async (
|
|
7
|
-
app: Express,
|
|
8
|
-
) => {
|
|
9
|
-
await addRpcRoutes(app)
|
|
10
|
-
addDataLakeRoutes(app)
|
|
11
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type { Express } from 'express'
|
|
2
|
-
|
|
3
|
-
import { archivistMiddleware } from './archivistMiddleware.ts'
|
|
4
|
-
|
|
5
|
-
export const addDataLakeRoutes = (app: Express) => {
|
|
6
|
-
const { node } = app.context
|
|
7
|
-
const archivistModuleIdentifier = 'Chain:Finalized'
|
|
8
|
-
app.use('/chain', archivistMiddleware({ node, archivistModuleIdentifier }))
|
|
9
|
-
}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { setRawResponseFormat } from '@xylabs/express'
|
|
2
|
-
import { asHash, isDefined } from '@xylabs/sdk-js'
|
|
3
|
-
import type {
|
|
4
|
-
ArchivistInstance,
|
|
5
|
-
ArchivistNextOptions, ModuleIdentifier,
|
|
6
|
-
NextOptions, NodeInstance, Payload,
|
|
7
|
-
} from '@xyo-network/sdk-js'
|
|
8
|
-
import {
|
|
9
|
-
asArchivistInstance, isAnyPayload, isSequence, PayloadBuilder,
|
|
10
|
-
} from '@xyo-network/sdk-js'
|
|
11
|
-
import type { Router } from 'express'
|
|
12
|
-
import express from 'express'
|
|
13
|
-
import type { Request } from 'express-serve-static-core'
|
|
14
|
-
|
|
15
|
-
const resolveArchivist = async (node: NodeInstance, archivistModuleIdentifier: ModuleIdentifier): Promise<ArchivistInstance> => {
|
|
16
|
-
const mod = await node.resolve(archivistModuleIdentifier)
|
|
17
|
-
return asArchivistInstance(mod, { required: true })
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
let archivistInstance: ArchivistInstance | undefined
|
|
21
|
-
|
|
22
|
-
const getArchivist = async (node: NodeInstance, archivistModuleIdentifier: ModuleIdentifier): Promise<ArchivistInstance> => {
|
|
23
|
-
if (isDefined(archivistInstance)) return archivistInstance
|
|
24
|
-
archivistInstance = await resolveArchivist(node, archivistModuleIdentifier)
|
|
25
|
-
return archivistInstance
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
type ArchivistMiddlewareOptions = {
|
|
29
|
-
archivistModuleIdentifier: ModuleIdentifier
|
|
30
|
-
node: NodeInstance
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export const archivistMiddleware = (options: ArchivistMiddlewareOptions): Router => {
|
|
34
|
-
const { node, archivistModuleIdentifier } = options
|
|
35
|
-
const router = express.Router({ mergeParams: true })
|
|
36
|
-
|
|
37
|
-
router.post('/insert', async (req, res) => {
|
|
38
|
-
setRawResponseFormat(res)
|
|
39
|
-
const body = Array.isArray(req.body) ? req.body : [req.body]
|
|
40
|
-
const payloads = (await PayloadBuilder.hashPairs<Payload>(body)).map(p => p[0])
|
|
41
|
-
const archivist = await getArchivist(node, archivistModuleIdentifier)
|
|
42
|
-
const result = await archivist.insert(payloads)
|
|
43
|
-
res.status(200).json(result)
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
router.get('/next', async (req: Request<Partial<NextOptions>>, res) => {
|
|
47
|
-
setRawResponseFormat(res)
|
|
48
|
-
const cursor = isSequence(req.query.cursor) ? req.query.cursor : undefined
|
|
49
|
-
const limit = isDefined(req.query.limit) ? Number(req.query.limit) : undefined
|
|
50
|
-
const open = isDefined(req.query.open) ? Boolean(req.query.open) : undefined
|
|
51
|
-
const order = req.query.order === 'asc' ? 'asc' : 'desc'
|
|
52
|
-
const options: ArchivistNextOptions = {
|
|
53
|
-
limit, open, order, cursor,
|
|
54
|
-
}
|
|
55
|
-
const archivist = await getArchivist(node, archivistModuleIdentifier)
|
|
56
|
-
const result = await archivist.next(options)
|
|
57
|
-
res.status(200).json(result)
|
|
58
|
-
})
|
|
59
|
-
router.post('/next', async (req: Request<{}, {}, ArchivistNextOptions | undefined>, res) => {
|
|
60
|
-
setRawResponseFormat(res)
|
|
61
|
-
const options = req.body
|
|
62
|
-
const archivist = await getArchivist(node, archivistModuleIdentifier)
|
|
63
|
-
const result = await (isDefined(options) ? archivist.next(options) : archivist.next())
|
|
64
|
-
res.status(200).json(result)
|
|
65
|
-
})
|
|
66
|
-
|
|
67
|
-
router.get('/get/:hash', async (req, res) => {
|
|
68
|
-
setRawResponseFormat(res)
|
|
69
|
-
const { hash: rawHash } = req.params
|
|
70
|
-
const hash = asHash(rawHash)
|
|
71
|
-
if (isDefined(hash)) {
|
|
72
|
-
const archivist = await getArchivist(node, archivistModuleIdentifier)
|
|
73
|
-
const [payload] = await archivist.get([hash])
|
|
74
|
-
if (isAnyPayload(payload)) {
|
|
75
|
-
res.json(payload)
|
|
76
|
-
return
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
res.status(400).send()
|
|
80
|
-
})
|
|
81
|
-
|
|
82
|
-
return router
|
|
83
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './addDataLakeRoutes.ts'
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { NoReqParams } from '@xylabs/express'
|
|
2
|
-
import { setRawResponseFormat } from '@xylabs/express'
|
|
3
|
-
import type { RequestHandler } from 'express'
|
|
4
|
-
import { ReasonPhrases } from 'http-status-codes'
|
|
5
|
-
|
|
6
|
-
const message = ReasonPhrases.OK
|
|
7
|
-
|
|
8
|
-
const handler: RequestHandler<NoReqParams> = (_req, res) => {
|
|
9
|
-
setRawResponseFormat(res)
|
|
10
|
-
const date = new Date()
|
|
11
|
-
const {
|
|
12
|
-
cpuUsage, memoryUsage, uptime,
|
|
13
|
-
} = process
|
|
14
|
-
const data = {
|
|
15
|
-
cpuUsage: cpuUsage(), date, memoryUsage: memoryUsage(), message, uptime: uptime(),
|
|
16
|
-
}
|
|
17
|
-
res.status(200).send(data)
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export const getHealthz: RequestHandler<NoReqParams> = handler
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './get.ts'
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './routes/index.ts'
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { setRawResponseFormat } from '@xylabs/express'
|
|
2
|
-
import type { XyoConnection } from '@xyo-network/xl1-sdk'
|
|
3
|
-
import { rpcServerFromConnection, XyoConnectionMoniker } from '@xyo-network/xl1-sdk'
|
|
4
|
-
import type { Express } from 'express'
|
|
5
|
-
|
|
6
|
-
export const addRpcRoutes = async (
|
|
7
|
-
app: Express,
|
|
8
|
-
) => {
|
|
9
|
-
const { context } = app
|
|
10
|
-
const { locator } = context
|
|
11
|
-
|
|
12
|
-
const connection = await locator.getInstance<XyoConnection>(XyoConnectionMoniker)
|
|
13
|
-
const rpcServer = rpcServerFromConnection(connection)
|
|
14
|
-
|
|
15
|
-
app.post('/rpc', async (req, res) => {
|
|
16
|
-
setRawResponseFormat(res)
|
|
17
|
-
const rpcResponse = await rpcServer.handle(req.body)
|
|
18
|
-
res.json(rpcResponse)
|
|
19
|
-
})
|
|
20
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export * from './addRpcRoutes.ts'
|
package/src/server/server.ts
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import type { HostActorConfigContext } from '@xyo-network/xl1-sdk'
|
|
2
|
-
|
|
3
|
-
import { getApp } from './app.ts'
|
|
4
|
-
|
|
5
|
-
const hostname = '::'
|
|
6
|
-
|
|
7
|
-
export async function getServer(context: HostActorConfigContext) {
|
|
8
|
-
const { logger, config } = context
|
|
9
|
-
const { port } = config
|
|
10
|
-
|
|
11
|
-
const app = await getApp(context)
|
|
12
|
-
const server = await new Promise<ReturnType<typeof app.listen>>((resolve, reject) => {
|
|
13
|
-
const srv = app.listen(port, hostname, () => {
|
|
14
|
-
logger?.info(`[API] Server listening at http://${hostname}:${port}`)
|
|
15
|
-
resolve(srv)
|
|
16
|
-
})
|
|
17
|
-
srv.once('error', reject)
|
|
18
|
-
})
|
|
19
|
-
server.setTimeout(20_000)
|
|
20
|
-
return server
|
|
21
|
-
}
|
|
File without changes
|