@xyo-network/xl1-rpc-server 2.0.9 → 2.0.11
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 +3 -6
- package/package.json +6 -6
- package/dist/browser/createRpcHttpServer.d.ts +0 -14
- package/dist/browser/createRpcHttpServer.d.ts.map +0 -1
- package/dist/browser/createRpcRequestHandler.d.ts +0 -4
- package/dist/browser/createRpcRequestHandler.d.ts.map +0 -1
- package/dist/browser/index.d.ts +0 -3
- package/dist/browser/index.d.ts.map +0 -1
- package/dist/browser/index.mjs +0 -80
- package/dist/browser/index.mjs.map +0 -7
- package/dist/neutral/createRpcHttpServer.d.ts +0 -14
- package/dist/neutral/createRpcHttpServer.d.ts.map +0 -1
- package/dist/neutral/createRpcRequestHandler.d.ts +0 -4
- package/dist/neutral/createRpcRequestHandler.d.ts.map +0 -1
- package/dist/neutral/index.d.ts +0 -3
- package/dist/neutral/index.d.ts.map +0 -1
- package/dist/neutral/index.mjs +0 -80
- package/dist/neutral/index.mjs.map +0 -7
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[![logo][]]
|
|
1
|
+
[![logo][]](https://xyo.network)
|
|
2
2
|
|
|
3
3
|
# @xyo-network/xl1-rpc-server
|
|
4
4
|
|
|
@@ -98,13 +98,10 @@ See the [LICENSE](./LICENSE) file (LGPL-3.0-only).
|
|
|
98
98
|
|
|
99
99
|
## Credits
|
|
100
100
|
|
|
101
|
-
[Made with 🔥 and ❄️ by XYO](https://xyo.network)
|
|
102
|
-
|
|
103
|
-
[logo]: https://cdn.xy.company/img/brand/XYO_full_colored.png
|
|
104
|
-
[logo-link]: https://xyo.network
|
|
101
|
+
[Made with 🔥 and ❄️ by XYO Foundation](https://xyo.network)
|
|
105
102
|
|
|
106
103
|
[npm-badge]: https://img.shields.io/npm/v/@xyo-network/xl1-rpc-server.svg
|
|
107
104
|
[npm-link]: https://www.npmjs.com/package/@xyo-network/xl1-rpc-server
|
|
108
|
-
|
|
109
105
|
[license-badge]: https://img.shields.io/npm/l/@xyo-network/xl1-rpc-server.svg
|
|
110
106
|
[license-link]: ./LICENSE
|
|
107
|
+
[logo]: https://cdn.xy.company/img/brand/XYO_full_colored.png
|
package/package.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@xyo-network/xl1-rpc-server",
|
|
4
|
-
"version": "2.0.
|
|
4
|
+
"version": "2.0.11",
|
|
5
5
|
"description": "XYO Layer One RPC HTTP Server",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
8
|
-
"url": "
|
|
8
|
+
"url": "https://github.com/XYOracleNetwork/xl1-protocol/issues",
|
|
9
9
|
"email": "support@xylabs.com"
|
|
10
10
|
},
|
|
11
11
|
"repository": {
|
|
12
12
|
"type": "git",
|
|
13
|
-
"url": "git+https://github.com/
|
|
13
|
+
"url": "git+https://github.com/XYOracleNetwork/xl1-protocol.git"
|
|
14
14
|
},
|
|
15
15
|
"license": "LGPL-3.0-only",
|
|
16
16
|
"author": {
|
|
@@ -36,9 +36,9 @@
|
|
|
36
36
|
],
|
|
37
37
|
"devDependencies": {
|
|
38
38
|
"@metamask/json-rpc-engine": "^10.5.0",
|
|
39
|
-
"@types/node": "~25.9.
|
|
40
|
-
"@xylabs/toolchain": "~8.1.
|
|
41
|
-
"@xylabs/tsconfig": "~8.1.
|
|
39
|
+
"@types/node": "~25.9.2",
|
|
40
|
+
"@xylabs/toolchain": "~8.1.19",
|
|
41
|
+
"@xylabs/tsconfig": "~8.1.19",
|
|
42
42
|
"eslint": "^10.4.1",
|
|
43
43
|
"typescript": "~6.0.3",
|
|
44
44
|
"vite": "^8.0.16",
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import HTTP from 'node:http';
|
|
2
|
-
import { type JsonRpcEngineV2 } from '@metamask/json-rpc-engine/v2';
|
|
3
|
-
/** Result returned by createRpcHttpServer. */
|
|
4
|
-
export interface RpcHttpServer {
|
|
5
|
-
close: () => Promise<void>;
|
|
6
|
-
port: number;
|
|
7
|
-
server: HTTP.Server;
|
|
8
|
-
}
|
|
9
|
-
/** Creates a standalone Node.js HTTP server that handles JSON-RPC requests at POST /rpc. */
|
|
10
|
-
export declare function createRpcHttpServer(options: {
|
|
11
|
-
engine: JsonRpcEngineV2;
|
|
12
|
-
port: number;
|
|
13
|
-
}): Promise<RpcHttpServer>;
|
|
14
|
-
//# sourceMappingURL=createRpcHttpServer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createRpcHttpServer.d.ts","sourceRoot":"","sources":["../../src/createRpcHttpServer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,8BAA8B,CAAA;AAElF,8CAA8C;AAC9C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CACpB;AAED,4FAA4F;AAC5F,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CA2D9G"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { JsonRpcEngineV2 } from '@metamask/json-rpc-engine/v2';
|
|
2
|
-
/** Creates a framework-agnostic RPC request handler from a JSON-RPC engine. */
|
|
3
|
-
export declare function createRpcRequestHandler(engine: JsonRpcEngineV2): (body: unknown) => Promise<unknown>;
|
|
4
|
-
//# sourceMappingURL=createRpcRequestHandler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createRpcRequestHandler.d.ts","sourceRoot":"","sources":["../../src/createRpcRequestHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,8BAA8B,CAAA;AAEnF,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAgBpG"}
|
package/dist/browser/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA"}
|
package/dist/browser/index.mjs
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
// src/createRpcHttpServer.ts
|
|
2
|
-
import HTTP from "node:http";
|
|
3
|
-
import { JsonRpcServer } from "@metamask/json-rpc-engine/v2";
|
|
4
|
-
function createRpcHttpServer(options) {
|
|
5
|
-
const { engine, port } = options;
|
|
6
|
-
const rpcServer = new JsonRpcServer({ engine });
|
|
7
|
-
return new Promise((resolve, reject) => {
|
|
8
|
-
const server = HTTP.createServer((req, res) => {
|
|
9
|
-
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
10
|
-
res.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS");
|
|
11
|
-
res.setHeader("Access-Control-Allow-Headers", "Content-Type");
|
|
12
|
-
if (req.method === "OPTIONS") {
|
|
13
|
-
res.writeHead(204);
|
|
14
|
-
res.end();
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
if (req.method !== "POST" || req.url !== "/rpc") {
|
|
18
|
-
res.writeHead(404, { "Content-Type": "application/json" });
|
|
19
|
-
res.end(JSON.stringify({ error: "Not found" }));
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
let body = "";
|
|
23
|
-
req.on("data", (chunk) => {
|
|
24
|
-
body += chunk.toString();
|
|
25
|
-
});
|
|
26
|
-
req.on("end", () => {
|
|
27
|
-
const parsed = JSON.parse(body);
|
|
28
|
-
rpcServer.handle(parsed).then((response) => {
|
|
29
|
-
res.writeHead(200, { "Content-Type": "application/json" });
|
|
30
|
-
res.end(JSON.stringify(response));
|
|
31
|
-
}).catch((error) => {
|
|
32
|
-
res.writeHead(500, { "Content-Type": "application/json" });
|
|
33
|
-
res.end(JSON.stringify({ error: error.message }));
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
server.on("error", reject);
|
|
38
|
-
server.listen(port, () => {
|
|
39
|
-
resolve({
|
|
40
|
-
server,
|
|
41
|
-
port,
|
|
42
|
-
close: () => new Promise((resolveClose, rejectClose) => {
|
|
43
|
-
server.close((err) => {
|
|
44
|
-
if (err) {
|
|
45
|
-
rejectClose(err);
|
|
46
|
-
} else {
|
|
47
|
-
resolveClose();
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
})
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// src/createRpcRequestHandler.ts
|
|
57
|
-
function createRpcRequestHandler(engine) {
|
|
58
|
-
return async (body) => {
|
|
59
|
-
const request = body;
|
|
60
|
-
try {
|
|
61
|
-
const result = await engine.handle(request);
|
|
62
|
-
return {
|
|
63
|
-
jsonrpc: "2.0",
|
|
64
|
-
id: request.id,
|
|
65
|
-
result
|
|
66
|
-
};
|
|
67
|
-
} catch (error) {
|
|
68
|
-
return {
|
|
69
|
-
jsonrpc: "2.0",
|
|
70
|
-
id: request.id,
|
|
71
|
-
error: { code: -32603, message: error.message }
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
export {
|
|
77
|
-
createRpcHttpServer,
|
|
78
|
-
createRpcRequestHandler
|
|
79
|
-
};
|
|
80
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/createRpcHttpServer.ts", "../../src/createRpcRequestHandler.ts"],
|
|
4
|
-
"sourcesContent": ["import HTTP from 'node:http'\n\nimport { type JsonRpcEngineV2, JsonRpcServer } from '@metamask/json-rpc-engine/v2'\n\n/** Result returned by createRpcHttpServer. */\nexport interface RpcHttpServer {\n close: () => Promise<void>\n port: number\n server: HTTP.Server\n}\n\n/** Creates a standalone Node.js HTTP server that handles JSON-RPC requests at POST /rpc. */\nexport function createRpcHttpServer(options: { engine: JsonRpcEngineV2; port: number }): Promise<RpcHttpServer> {\n const { engine, port } = options\n const rpcServer = new JsonRpcServer({ engine })\n\n return new Promise((resolve, reject) => {\n const server = HTTP.createServer((req, res) => {\n res.setHeader('Access-Control-Allow-Origin', '*')\n res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS')\n res.setHeader('Access-Control-Allow-Headers', 'Content-Type')\n\n if (req.method === 'OPTIONS') {\n res.writeHead(204)\n res.end()\n return\n }\n\n if (req.method !== 'POST' || req.url !== '/rpc') {\n res.writeHead(404, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify({ error: 'Not found' }))\n return\n }\n\n let body = ''\n req.on('data', (chunk: Buffer) => {\n body += chunk.toString()\n })\n\n req.on('end', () => {\n const parsed: unknown = JSON.parse(body)\n rpcServer.handle(parsed)\n .then((response) => {\n res.writeHead(200, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify(response))\n })\n .catch((error: unknown) => {\n res.writeHead(500, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify({ error: (error as Error).message }))\n })\n })\n })\n\n server.on('error', reject)\n\n server.listen(port, () => {\n resolve({\n server,\n port,\n close: () => new Promise<void>((resolveClose, rejectClose) => {\n server.close((err) => {\n if (err) {\n rejectClose(err)\n } else {\n resolveClose()\n }\n })\n }),\n })\n })\n })\n}\n", "import type { JsonRpcEngineV2, JsonRpcRequest } from '@metamask/json-rpc-engine/v2'\n\n/** Creates a framework-agnostic RPC request handler from a JSON-RPC engine. */\nexport function createRpcRequestHandler(engine: JsonRpcEngineV2): (body: unknown) => Promise<unknown> {\n return async (body: unknown) => {\n const request = body as JsonRpcRequest\n try {\n const result = await engine.handle(request)\n return {\n jsonrpc: '2.0', id: request.id, result,\n }\n } catch (error) {\n return {\n jsonrpc: '2.0',\n id: request.id,\n error: { code: -32_603, message: (error as Error).message },\n }\n }\n }\n}\n"],
|
|
5
|
-
"mappings": ";AAAA,OAAO,UAAU;AAEjB,SAA+B,qBAAqB;AAU7C,SAAS,oBAAoB,SAA4E;AAC9G,QAAM,EAAE,QAAQ,KAAK,IAAI;AACzB,QAAM,YAAY,IAAI,cAAc,EAAE,OAAO,CAAC;AAE9C,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,SAAS,KAAK,aAAa,CAAC,KAAK,QAAQ;AAC7C,UAAI,UAAU,+BAA+B,GAAG;AAChD,UAAI,UAAU,gCAAgC,eAAe;AAC7D,UAAI,UAAU,gCAAgC,cAAc;AAE5D,UAAI,IAAI,WAAW,WAAW;AAC5B,YAAI,UAAU,GAAG;AACjB,YAAI,IAAI;AACR;AAAA,MACF;AAEA,UAAI,IAAI,WAAW,UAAU,IAAI,QAAQ,QAAQ;AAC/C,YAAI,UAAU,KAAK,EAAE,gBAAgB,mBAAmB,CAAC;AACzD,YAAI,IAAI,KAAK,UAAU,EAAE,OAAO,YAAY,CAAC,CAAC;AAC9C;AAAA,MACF;AAEA,UAAI,OAAO;AACX,UAAI,GAAG,QAAQ,CAAC,UAAkB;AAChC,gBAAQ,MAAM,SAAS;AAAA,MACzB,CAAC;AAED,UAAI,GAAG,OAAO,MAAM;AAClB,cAAM,SAAkB,KAAK,MAAM,IAAI;AACvC,kBAAU,OAAO,MAAM,EACpB,KAAK,CAAC,aAAa;AAClB,cAAI,UAAU,KAAK,EAAE,gBAAgB,mBAAmB,CAAC;AACzD,cAAI,IAAI,KAAK,UAAU,QAAQ,CAAC;AAAA,QAClC,CAAC,EACA,MAAM,CAAC,UAAmB;AACzB,cAAI,UAAU,KAAK,EAAE,gBAAgB,mBAAmB,CAAC;AACzD,cAAI,IAAI,KAAK,UAAU,EAAE,OAAQ,MAAgB,QAAQ,CAAC,CAAC;AAAA,QAC7D,CAAC;AAAA,MACL,CAAC;AAAA,IACH,CAAC;AAED,WAAO,GAAG,SAAS,MAAM;AAEzB,WAAO,OAAO,MAAM,MAAM;AACxB,cAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA,OAAO,MAAM,IAAI,QAAc,CAAC,cAAc,gBAAgB;AAC5D,iBAAO,MAAM,CAAC,QAAQ;AACpB,gBAAI,KAAK;AACP,0BAAY,GAAG;AAAA,YACjB,OAAO;AACL,2BAAa;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACH;;;ACpEO,SAAS,wBAAwB,QAA8D;AACpG,SAAO,OAAO,SAAkB;AAC9B,UAAM,UAAU;AAChB,QAAI;AACF,YAAM,SAAS,MAAM,OAAO,OAAO,OAAO;AAC1C,aAAO;AAAA,QACL,SAAS;AAAA,QAAO,IAAI,QAAQ;AAAA,QAAI;AAAA,MAClC;AAAA,IACF,SAAS,OAAO;AACd,aAAO;AAAA,QACL,SAAS;AAAA,QACT,IAAI,QAAQ;AAAA,QACZ,OAAO,EAAE,MAAM,QAAS,SAAU,MAAgB,QAAQ;AAAA,MAC5D;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import HTTP from 'node:http';
|
|
2
|
-
import { type JsonRpcEngineV2 } from '@metamask/json-rpc-engine/v2';
|
|
3
|
-
/** Result returned by createRpcHttpServer. */
|
|
4
|
-
export interface RpcHttpServer {
|
|
5
|
-
close: () => Promise<void>;
|
|
6
|
-
port: number;
|
|
7
|
-
server: HTTP.Server;
|
|
8
|
-
}
|
|
9
|
-
/** Creates a standalone Node.js HTTP server that handles JSON-RPC requests at POST /rpc. */
|
|
10
|
-
export declare function createRpcHttpServer(options: {
|
|
11
|
-
engine: JsonRpcEngineV2;
|
|
12
|
-
port: number;
|
|
13
|
-
}): Promise<RpcHttpServer>;
|
|
14
|
-
//# sourceMappingURL=createRpcHttpServer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createRpcHttpServer.d.ts","sourceRoot":"","sources":["../../src/createRpcHttpServer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,KAAK,eAAe,EAAiB,MAAM,8BAA8B,CAAA;AAElF,8CAA8C;AAC9C,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,IAAI,CAAC,MAAM,CAAA;CACpB;AAED,4FAA4F;AAC5F,wBAAgB,mBAAmB,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CA2D9G"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import type { JsonRpcEngineV2 } from '@metamask/json-rpc-engine/v2';
|
|
2
|
-
/** Creates a framework-agnostic RPC request handler from a JSON-RPC engine. */
|
|
3
|
-
export declare function createRpcRequestHandler(engine: JsonRpcEngineV2): (body: unknown) => Promise<unknown>;
|
|
4
|
-
//# sourceMappingURL=createRpcRequestHandler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"createRpcRequestHandler.d.ts","sourceRoot":"","sources":["../../src/createRpcRequestHandler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAkB,MAAM,8BAA8B,CAAA;AAEnF,+EAA+E;AAC/E,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAgBpG"}
|
package/dist/neutral/index.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,0BAA0B,CAAA;AACxC,cAAc,8BAA8B,CAAA"}
|
package/dist/neutral/index.mjs
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
// src/createRpcHttpServer.ts
|
|
2
|
-
import HTTP from "node:http";
|
|
3
|
-
import { JsonRpcServer } from "@metamask/json-rpc-engine/v2";
|
|
4
|
-
function createRpcHttpServer(options) {
|
|
5
|
-
const { engine, port } = options;
|
|
6
|
-
const rpcServer = new JsonRpcServer({ engine });
|
|
7
|
-
return new Promise((resolve, reject) => {
|
|
8
|
-
const server = HTTP.createServer((req, res) => {
|
|
9
|
-
res.setHeader("Access-Control-Allow-Origin", "*");
|
|
10
|
-
res.setHeader("Access-Control-Allow-Methods", "POST, OPTIONS");
|
|
11
|
-
res.setHeader("Access-Control-Allow-Headers", "Content-Type");
|
|
12
|
-
if (req.method === "OPTIONS") {
|
|
13
|
-
res.writeHead(204);
|
|
14
|
-
res.end();
|
|
15
|
-
return;
|
|
16
|
-
}
|
|
17
|
-
if (req.method !== "POST" || req.url !== "/rpc") {
|
|
18
|
-
res.writeHead(404, { "Content-Type": "application/json" });
|
|
19
|
-
res.end(JSON.stringify({ error: "Not found" }));
|
|
20
|
-
return;
|
|
21
|
-
}
|
|
22
|
-
let body = "";
|
|
23
|
-
req.on("data", (chunk) => {
|
|
24
|
-
body += chunk.toString();
|
|
25
|
-
});
|
|
26
|
-
req.on("end", () => {
|
|
27
|
-
const parsed = JSON.parse(body);
|
|
28
|
-
rpcServer.handle(parsed).then((response) => {
|
|
29
|
-
res.writeHead(200, { "Content-Type": "application/json" });
|
|
30
|
-
res.end(JSON.stringify(response));
|
|
31
|
-
}).catch((error) => {
|
|
32
|
-
res.writeHead(500, { "Content-Type": "application/json" });
|
|
33
|
-
res.end(JSON.stringify({ error: error.message }));
|
|
34
|
-
});
|
|
35
|
-
});
|
|
36
|
-
});
|
|
37
|
-
server.on("error", reject);
|
|
38
|
-
server.listen(port, () => {
|
|
39
|
-
resolve({
|
|
40
|
-
server,
|
|
41
|
-
port,
|
|
42
|
-
close: () => new Promise((resolveClose, rejectClose) => {
|
|
43
|
-
server.close((err) => {
|
|
44
|
-
if (err) {
|
|
45
|
-
rejectClose(err);
|
|
46
|
-
} else {
|
|
47
|
-
resolveClose();
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
})
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
});
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
// src/createRpcRequestHandler.ts
|
|
57
|
-
function createRpcRequestHandler(engine) {
|
|
58
|
-
return async (body) => {
|
|
59
|
-
const request = body;
|
|
60
|
-
try {
|
|
61
|
-
const result = await engine.handle(request);
|
|
62
|
-
return {
|
|
63
|
-
jsonrpc: "2.0",
|
|
64
|
-
id: request.id,
|
|
65
|
-
result
|
|
66
|
-
};
|
|
67
|
-
} catch (error) {
|
|
68
|
-
return {
|
|
69
|
-
jsonrpc: "2.0",
|
|
70
|
-
id: request.id,
|
|
71
|
-
error: { code: -32603, message: error.message }
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
}
|
|
76
|
-
export {
|
|
77
|
-
createRpcHttpServer,
|
|
78
|
-
createRpcRequestHandler
|
|
79
|
-
};
|
|
80
|
-
//# sourceMappingURL=index.mjs.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/createRpcHttpServer.ts", "../../src/createRpcRequestHandler.ts"],
|
|
4
|
-
"sourcesContent": ["import HTTP from 'node:http'\n\nimport { type JsonRpcEngineV2, JsonRpcServer } from '@metamask/json-rpc-engine/v2'\n\n/** Result returned by createRpcHttpServer. */\nexport interface RpcHttpServer {\n close: () => Promise<void>\n port: number\n server: HTTP.Server\n}\n\n/** Creates a standalone Node.js HTTP server that handles JSON-RPC requests at POST /rpc. */\nexport function createRpcHttpServer(options: { engine: JsonRpcEngineV2; port: number }): Promise<RpcHttpServer> {\n const { engine, port } = options\n const rpcServer = new JsonRpcServer({ engine })\n\n return new Promise((resolve, reject) => {\n const server = HTTP.createServer((req, res) => {\n res.setHeader('Access-Control-Allow-Origin', '*')\n res.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS')\n res.setHeader('Access-Control-Allow-Headers', 'Content-Type')\n\n if (req.method === 'OPTIONS') {\n res.writeHead(204)\n res.end()\n return\n }\n\n if (req.method !== 'POST' || req.url !== '/rpc') {\n res.writeHead(404, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify({ error: 'Not found' }))\n return\n }\n\n let body = ''\n req.on('data', (chunk: Buffer) => {\n body += chunk.toString()\n })\n\n req.on('end', () => {\n const parsed: unknown = JSON.parse(body)\n rpcServer.handle(parsed)\n .then((response) => {\n res.writeHead(200, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify(response))\n })\n .catch((error: unknown) => {\n res.writeHead(500, { 'Content-Type': 'application/json' })\n res.end(JSON.stringify({ error: (error as Error).message }))\n })\n })\n })\n\n server.on('error', reject)\n\n server.listen(port, () => {\n resolve({\n server,\n port,\n close: () => new Promise<void>((resolveClose, rejectClose) => {\n server.close((err) => {\n if (err) {\n rejectClose(err)\n } else {\n resolveClose()\n }\n })\n }),\n })\n })\n })\n}\n", "import type { JsonRpcEngineV2, JsonRpcRequest } from '@metamask/json-rpc-engine/v2'\n\n/** Creates a framework-agnostic RPC request handler from a JSON-RPC engine. */\nexport function createRpcRequestHandler(engine: JsonRpcEngineV2): (body: unknown) => Promise<unknown> {\n return async (body: unknown) => {\n const request = body as JsonRpcRequest\n try {\n const result = await engine.handle(request)\n return {\n jsonrpc: '2.0', id: request.id, result,\n }\n } catch (error) {\n return {\n jsonrpc: '2.0',\n id: request.id,\n error: { code: -32_603, message: (error as Error).message },\n }\n }\n }\n}\n"],
|
|
5
|
-
"mappings": ";AAAA,OAAO,UAAU;AAEjB,SAA+B,qBAAqB;AAU7C,SAAS,oBAAoB,SAA4E;AAC9G,QAAM,EAAE,QAAQ,KAAK,IAAI;AACzB,QAAM,YAAY,IAAI,cAAc,EAAE,OAAO,CAAC;AAE9C,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,SAAS,KAAK,aAAa,CAAC,KAAK,QAAQ;AAC7C,UAAI,UAAU,+BAA+B,GAAG;AAChD,UAAI,UAAU,gCAAgC,eAAe;AAC7D,UAAI,UAAU,gCAAgC,cAAc;AAE5D,UAAI,IAAI,WAAW,WAAW;AAC5B,YAAI,UAAU,GAAG;AACjB,YAAI,IAAI;AACR;AAAA,MACF;AAEA,UAAI,IAAI,WAAW,UAAU,IAAI,QAAQ,QAAQ;AAC/C,YAAI,UAAU,KAAK,EAAE,gBAAgB,mBAAmB,CAAC;AACzD,YAAI,IAAI,KAAK,UAAU,EAAE,OAAO,YAAY,CAAC,CAAC;AAC9C;AAAA,MACF;AAEA,UAAI,OAAO;AACX,UAAI,GAAG,QAAQ,CAAC,UAAkB;AAChC,gBAAQ,MAAM,SAAS;AAAA,MACzB,CAAC;AAED,UAAI,GAAG,OAAO,MAAM;AAClB,cAAM,SAAkB,KAAK,MAAM,IAAI;AACvC,kBAAU,OAAO,MAAM,EACpB,KAAK,CAAC,aAAa;AAClB,cAAI,UAAU,KAAK,EAAE,gBAAgB,mBAAmB,CAAC;AACzD,cAAI,IAAI,KAAK,UAAU,QAAQ,CAAC;AAAA,QAClC,CAAC,EACA,MAAM,CAAC,UAAmB;AACzB,cAAI,UAAU,KAAK,EAAE,gBAAgB,mBAAmB,CAAC;AACzD,cAAI,IAAI,KAAK,UAAU,EAAE,OAAQ,MAAgB,QAAQ,CAAC,CAAC;AAAA,QAC7D,CAAC;AAAA,MACL,CAAC;AAAA,IACH,CAAC;AAED,WAAO,GAAG,SAAS,MAAM;AAEzB,WAAO,OAAO,MAAM,MAAM;AACxB,cAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA,OAAO,MAAM,IAAI,QAAc,CAAC,cAAc,gBAAgB;AAC5D,iBAAO,MAAM,CAAC,QAAQ;AACpB,gBAAI,KAAK;AACP,0BAAY,GAAG;AAAA,YACjB,OAAO;AACL,2BAAa;AAAA,YACf;AAAA,UACF,CAAC;AAAA,QACH,CAAC;AAAA,MACH,CAAC;AAAA,IACH,CAAC;AAAA,EACH,CAAC;AACH;;;ACpEO,SAAS,wBAAwB,QAA8D;AACpG,SAAO,OAAO,SAAkB;AAC9B,UAAM,UAAU;AAChB,QAAI;AACF,YAAM,SAAS,MAAM,OAAO,OAAO,OAAO;AAC1C,aAAO;AAAA,QACL,SAAS;AAAA,QAAO,IAAI,QAAQ;AAAA,QAAI;AAAA,MAClC;AAAA,IACF,SAAS,OAAO;AACd,aAAO;AAAA,QACL,SAAS;AAAA,QACT,IAAI,QAAQ;AAAA,QACZ,OAAO,EAAE,MAAM,QAAS,SAAU,MAAgB,QAAQ;AAAA,MAC5D;AAAA,IACF;AAAA,EACF;AACF;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|