@covenant-rpc/server 1.0.0 → 2.1.0
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/bin/sidekick.ts +90 -0
- package/dist/bin/sidekick.d.ts +3 -0
- package/dist/bin/sidekick.d.ts.map +1 -0
- package/dist/bin/sidekick.js +79 -0
- package/dist/bin/sidekick.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/direct.d.ts +2 -1
- package/dist/interfaces/direct.d.ts.map +1 -1
- package/dist/interfaces/direct.js +33 -0
- package/dist/interfaces/direct.js.map +1 -1
- package/dist/sidekick/index.d.ts +1 -1
- package/dist/sidekick/index.d.ts.map +1 -1
- package/dist/sidekick/index.js +8 -8
- package/dist/sidekick/index.js.map +1 -1
- package/dist/sidekick/internal.d.ts +14 -0
- package/dist/sidekick/internal.d.ts.map +1 -0
- package/dist/sidekick/internal.js +119 -0
- package/dist/sidekick/internal.js.map +1 -0
- package/dist/sidekick/webserver.d.ts +11 -0
- package/dist/sidekick/webserver.d.ts.map +1 -0
- package/dist/sidekick/webserver.js +197 -0
- package/dist/sidekick/webserver.js.map +1 -0
- package/package.json +14 -5
- package/dist/sidekick/socket.d.ts +0 -4
- package/dist/sidekick/socket.d.ts.map +0 -1
- package/dist/sidekick/socket.js +0 -5
- package/dist/sidekick/socket.js.map +0 -1
package/bin/sidekick.ts
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { startSidekickServer } from "../sidekick/webserver";
|
|
4
|
+
import { httpSidekickToServer } from "../interfaces/http";
|
|
5
|
+
|
|
6
|
+
const program = new Command();
|
|
7
|
+
|
|
8
|
+
program
|
|
9
|
+
.name("covenant-sidekick")
|
|
10
|
+
.description("Standalone WebSocket service for Covenant RPC realtime channels and resource invalidation")
|
|
11
|
+
.version("1.0.0")
|
|
12
|
+
.option("-p, --port <number>", "Port to listen on (env: SIDEKICK_PORT)", process.env.SIDEKICK_PORT || "3000")
|
|
13
|
+
.option("-s, --secret <string>", "Secret key for authentication (env: SIDEKICK_SECRET)", process.env.SIDEKICK_SECRET)
|
|
14
|
+
.option("--auth-delay <milliseconds>", "Delay before responding to failed auth attempts", process.env.SIDEKICK_AUTH_DELAY || "3000")
|
|
15
|
+
.option("--server-url <url>", "URL of the Covenant server to forward channel messages to (env: SIDEKICK_SERVER_URL)", process.env.SIDEKICK_SERVER_URL)
|
|
16
|
+
.option("--server-secret <string>", "Secret key for authenticating with the server (env: SIDEKICK_SERVER_SECRET)", process.env.SIDEKICK_SERVER_SECRET)
|
|
17
|
+
.addHelpText("after", `
|
|
18
|
+
Environment Variables:
|
|
19
|
+
SIDEKICK_PORT Port to listen on
|
|
20
|
+
SIDEKICK_SECRET Secret key for authentication (required)
|
|
21
|
+
SIDEKICK_AUTH_DELAY Auth failure delay in milliseconds
|
|
22
|
+
SIDEKICK_SERVER_URL URL of the Covenant server for channel message forwarding (required for channels)
|
|
23
|
+
SIDEKICK_SERVER_SECRET Secret key for authenticating with the Covenant server
|
|
24
|
+
|
|
25
|
+
Examples:
|
|
26
|
+
$ covenant-sidekick --port 8080 --secret my-secret-key --server-url http://localhost:3000/api/covenant --server-secret my-server-key
|
|
27
|
+
$ SIDEKICK_SECRET=my-key covenant-sidekick --port 3001
|
|
28
|
+
$ bunx @covenant-rpc/server covenant-sidekick --secret my-key
|
|
29
|
+
`)
|
|
30
|
+
.action((options) => {
|
|
31
|
+
const port = parseInt(options.port);
|
|
32
|
+
const secret = options.secret;
|
|
33
|
+
const authFailureDelayMs = parseInt(options.authDelay);
|
|
34
|
+
const serverUrl: string | undefined = options.serverUrl;
|
|
35
|
+
const serverSecret: string | undefined = options.serverSecret;
|
|
36
|
+
|
|
37
|
+
// Validate port
|
|
38
|
+
if (isNaN(port) || port < 1 || port > 65535) {
|
|
39
|
+
console.error("Error: --port must be a valid port number (1-65535)");
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// Validate secret
|
|
44
|
+
if (!secret) {
|
|
45
|
+
console.error("Error: Secret key is required. Provide it via --secret or SIDEKICK_SECRET environment variable.");
|
|
46
|
+
process.exit(1);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// Validate auth delay
|
|
50
|
+
if (isNaN(authFailureDelayMs) || authFailureDelayMs < 0) {
|
|
51
|
+
console.error("Error: --auth-delay must be a non-negative number");
|
|
52
|
+
process.exit(1);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
if (serverUrl && !serverSecret) {
|
|
56
|
+
console.warn("Warning: --server-url provided without --server-secret. Channel message forwarding may fail authentication.");
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
console.log("Starting Covenant Sidekick Server...");
|
|
60
|
+
console.log(` Port: ${port}`);
|
|
61
|
+
console.log(` Auth failure delay: ${authFailureDelayMs}ms`);
|
|
62
|
+
if (serverUrl) {
|
|
63
|
+
console.log(` Server URL: ${serverUrl}`);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
const server = startSidekickServer({
|
|
67
|
+
port,
|
|
68
|
+
secret,
|
|
69
|
+
authFailureDelayMs,
|
|
70
|
+
serverConnection: httpSidekickToServer(serverUrl ?? "", serverSecret ?? ""),
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
console.log(`\nSidekick server listening on http://localhost:${port}`);
|
|
74
|
+
console.log(`WebSocket endpoint: ws://localhost:${port}/socket`);
|
|
75
|
+
console.log("\nPress Ctrl+C to stop");
|
|
76
|
+
|
|
77
|
+
// Graceful shutdown
|
|
78
|
+
const shutdown = () => {
|
|
79
|
+
console.log("\n\nShutting down gracefully...");
|
|
80
|
+
server.close(() => {
|
|
81
|
+
console.log("Server closed");
|
|
82
|
+
process.exit(0);
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
process.on("SIGINT", shutdown);
|
|
87
|
+
process.on("SIGTERM", shutdown);
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
program.parse();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidekick.d.ts","sourceRoot":"","sources":["../../bin/sidekick.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
import { Command } from "commander";
|
|
3
|
+
import { startSidekickServer } from "../sidekick/webserver";
|
|
4
|
+
import { httpSidekickToServer } from "../interfaces/http";
|
|
5
|
+
const program = new Command();
|
|
6
|
+
program
|
|
7
|
+
.name("covenant-sidekick")
|
|
8
|
+
.description("Standalone WebSocket service for Covenant RPC realtime channels and resource invalidation")
|
|
9
|
+
.version("1.0.0")
|
|
10
|
+
.option("-p, --port <number>", "Port to listen on (env: SIDEKICK_PORT)", process.env.SIDEKICK_PORT || "3000")
|
|
11
|
+
.option("-s, --secret <string>", "Secret key for authentication (env: SIDEKICK_SECRET)", process.env.SIDEKICK_SECRET)
|
|
12
|
+
.option("--auth-delay <milliseconds>", "Delay before responding to failed auth attempts", process.env.SIDEKICK_AUTH_DELAY || "3000")
|
|
13
|
+
.option("--server-url <url>", "URL of the Covenant server to forward channel messages to (env: SIDEKICK_SERVER_URL)", process.env.SIDEKICK_SERVER_URL)
|
|
14
|
+
.option("--server-secret <string>", "Secret key for authenticating with the server (env: SIDEKICK_SERVER_SECRET)", process.env.SIDEKICK_SERVER_SECRET)
|
|
15
|
+
.addHelpText("after", `
|
|
16
|
+
Environment Variables:
|
|
17
|
+
SIDEKICK_PORT Port to listen on
|
|
18
|
+
SIDEKICK_SECRET Secret key for authentication (required)
|
|
19
|
+
SIDEKICK_AUTH_DELAY Auth failure delay in milliseconds
|
|
20
|
+
SIDEKICK_SERVER_URL URL of the Covenant server for channel message forwarding (required for channels)
|
|
21
|
+
SIDEKICK_SERVER_SECRET Secret key for authenticating with the Covenant server
|
|
22
|
+
|
|
23
|
+
Examples:
|
|
24
|
+
$ covenant-sidekick --port 8080 --secret my-secret-key --server-url http://localhost:3000/api/covenant --server-secret my-server-key
|
|
25
|
+
$ SIDEKICK_SECRET=my-key covenant-sidekick --port 3001
|
|
26
|
+
$ bunx @covenant-rpc/server covenant-sidekick --secret my-key
|
|
27
|
+
`)
|
|
28
|
+
.action((options) => {
|
|
29
|
+
const port = parseInt(options.port);
|
|
30
|
+
const secret = options.secret;
|
|
31
|
+
const authFailureDelayMs = parseInt(options.authDelay);
|
|
32
|
+
const serverUrl = options.serverUrl;
|
|
33
|
+
const serverSecret = options.serverSecret;
|
|
34
|
+
// Validate port
|
|
35
|
+
if (isNaN(port) || port < 1 || port > 65535) {
|
|
36
|
+
console.error("Error: --port must be a valid port number (1-65535)");
|
|
37
|
+
process.exit(1);
|
|
38
|
+
}
|
|
39
|
+
// Validate secret
|
|
40
|
+
if (!secret) {
|
|
41
|
+
console.error("Error: Secret key is required. Provide it via --secret or SIDEKICK_SECRET environment variable.");
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
// Validate auth delay
|
|
45
|
+
if (isNaN(authFailureDelayMs) || authFailureDelayMs < 0) {
|
|
46
|
+
console.error("Error: --auth-delay must be a non-negative number");
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
if (serverUrl && !serverSecret) {
|
|
50
|
+
console.warn("Warning: --server-url provided without --server-secret. Channel message forwarding may fail authentication.");
|
|
51
|
+
}
|
|
52
|
+
console.log("Starting Covenant Sidekick Server...");
|
|
53
|
+
console.log(` Port: ${port}`);
|
|
54
|
+
console.log(` Auth failure delay: ${authFailureDelayMs}ms`);
|
|
55
|
+
if (serverUrl) {
|
|
56
|
+
console.log(` Server URL: ${serverUrl}`);
|
|
57
|
+
}
|
|
58
|
+
const server = startSidekickServer({
|
|
59
|
+
port,
|
|
60
|
+
secret,
|
|
61
|
+
authFailureDelayMs,
|
|
62
|
+
serverConnection: httpSidekickToServer(serverUrl ?? "", serverSecret ?? ""),
|
|
63
|
+
});
|
|
64
|
+
console.log(`\nSidekick server listening on http://localhost:${port}`);
|
|
65
|
+
console.log(`WebSocket endpoint: ws://localhost:${port}/socket`);
|
|
66
|
+
console.log("\nPress Ctrl+C to stop");
|
|
67
|
+
// Graceful shutdown
|
|
68
|
+
const shutdown = () => {
|
|
69
|
+
console.log("\n\nShutting down gracefully...");
|
|
70
|
+
server.close(() => {
|
|
71
|
+
console.log("Server closed");
|
|
72
|
+
process.exit(0);
|
|
73
|
+
});
|
|
74
|
+
};
|
|
75
|
+
process.on("SIGINT", shutdown);
|
|
76
|
+
process.on("SIGTERM", shutdown);
|
|
77
|
+
});
|
|
78
|
+
program.parse();
|
|
79
|
+
//# sourceMappingURL=sidekick.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidekick.js","sourceRoot":"","sources":["../../bin/sidekick.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,6 @@ export { vanillaAdapter } from "./adapters/vanilla";
|
|
|
4
4
|
export { Sidekick, type SidekickClient } from "./sidekick";
|
|
5
5
|
export { httpServerToSidekick, httpSidekickToServer } from "./interfaces/http";
|
|
6
6
|
export { emptyServerToSidekick } from "./interfaces/empty";
|
|
7
|
-
export { directClientToServer } from "./interfaces/direct";
|
|
7
|
+
export { directClientToServer, directSidekickToServer } from "./interfaces/direct";
|
|
8
8
|
export type { LoggerLevel, Prefix } from "@covenant-rpc/core/logger";
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAGnF,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,5 +4,5 @@ export { vanillaAdapter } from "./adapters/vanilla";
|
|
|
4
4
|
export { Sidekick } from "./sidekick";
|
|
5
5
|
export { httpServerToSidekick, httpSidekickToServer } from "./interfaces/http";
|
|
6
6
|
export { emptyServerToSidekick } from "./interfaces/empty";
|
|
7
|
-
export { directClientToServer } from "./interfaces/direct";
|
|
7
|
+
export { directClientToServer, directSidekickToServer } from "./interfaces/direct";
|
|
8
8
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAuB,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAuB,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type { ClientToServerConnection } from "@covenant-rpc/core/interfaces";
|
|
1
|
+
import type { ClientToServerConnection, SidekickToServerConnection } from "@covenant-rpc/core/interfaces";
|
|
2
2
|
import type { CovenantServer } from "../server";
|
|
3
3
|
export declare function directClientToServer(server: CovenantServer<any, any, any, any>, extraHeaders: Record<string, string>): ClientToServerConnection;
|
|
4
|
+
export declare function directSidekickToServer(server: CovenantServer<any, any, any, any>): SidekickToServerConnection;
|
|
4
5
|
//# sourceMappingURL=direct.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"direct.d.ts","sourceRoot":"","sources":["../../interfaces/direct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,
|
|
1
|
+
{"version":3,"file":"direct.d.ts","sourceRoot":"","sources":["../../interfaces/direct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAE1G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAOhD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAC1C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GACnC,wBAAwB,CAqG1B;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,GACzC,0BAA0B,CAmC5B"}
|
|
@@ -95,4 +95,37 @@ export function directClientToServer(server, extraHeaders) {
|
|
|
95
95
|
}
|
|
96
96
|
};
|
|
97
97
|
}
|
|
98
|
+
export function directSidekickToServer(server) {
|
|
99
|
+
return {
|
|
100
|
+
async sendMessage(message) {
|
|
101
|
+
try {
|
|
102
|
+
const url = new URL("http://localhost");
|
|
103
|
+
url.searchParams.set("type", "channel");
|
|
104
|
+
const request = new Request(url.toString(), {
|
|
105
|
+
method: "POST",
|
|
106
|
+
body: ION.stringify(message),
|
|
107
|
+
headers: { "Content-Type": "application/json" },
|
|
108
|
+
});
|
|
109
|
+
const response = await server.handle(request);
|
|
110
|
+
if (response.ok) {
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
return {
|
|
114
|
+
channel: message.channel,
|
|
115
|
+
params: message.params,
|
|
116
|
+
fault: "server",
|
|
117
|
+
message: `Failed to send message to server. Received: ${response.status} - ${response.statusText}`,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
catch (e) {
|
|
121
|
+
return {
|
|
122
|
+
channel: message.channel,
|
|
123
|
+
params: message.params,
|
|
124
|
+
fault: "server",
|
|
125
|
+
message: `Unknown error sending message to server: ${e}`,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
}
|
|
98
131
|
//# sourceMappingURL=direct.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"direct.js","sourceRoot":"","sources":["../../interfaces/direct.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"direct.js","sourceRoot":"","sources":["../../interfaces/direct.ts"],"names":[],"mappings":"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"}
|
package/dist/sidekick/index.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export declare class Sidekick {
|
|
|
23
23
|
private publish;
|
|
24
24
|
private state;
|
|
25
25
|
private logger;
|
|
26
|
-
constructor(publishFunction: PublishFunction, logLevel?: LoggerLevel);
|
|
26
|
+
constructor(publishFunction: PublishFunction, serverConnection: SidekickToServerConnection, logLevel?: LoggerLevel);
|
|
27
27
|
updateResources(resources: string[]): Promise<void>;
|
|
28
28
|
postServerMessage(message: ServerMessage): Promise<void>;
|
|
29
29
|
addConnection(payload: ChannelConnectionPayload): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../sidekick/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../sidekick/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC1F,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAG7D,OAAO,EAA6C,KAAK,uBAAuB,EAAE,KAAK,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE7J,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,KAAK,IAAI,MAAM,CAAC;IAChB,aAAa,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;CACvD;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;IAChD,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE;QACxB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QAC9B,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC,CAAA;IACF,gBAAgB,EAAE,0BAA0B,CAAC;CAC9C;AAED,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAGjG,qBAAa,QAAQ;IACnB,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,KAAK,CAAgB;IAC7B,OAAO,CAAC,MAAM,CAAS;gBAEX,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,0BAA0B,EAAE,QAAQ,CAAC,EAAE,WAAW;IAa5G,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE;IAiBnC,iBAAiB,CAAC,OAAO,EAAE,aAAa;IAQ9C,aAAa,CAAC,OAAO,EAAE,wBAAwB;IAIzC,mBAAmB,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,uBAAuB;CA8BnF;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC"}
|
package/dist/sidekick/index.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
import { httpSidekickToServer } from "../interfaces/http";
|
|
2
1
|
import { Logger } from "../logger";
|
|
3
2
|
import { handleListenMessage, handleSendMessage, handleSubscribeMessage, handleUnlistenMessage, handleUnsubscribeMessage } from "./handlers";
|
|
4
3
|
import { getChannelTopicName, getResourceTopicName } from "@covenant-rpc/core/sidekick/protocol";
|
|
5
4
|
export class Sidekick {
|
|
6
5
|
publish;
|
|
7
|
-
state
|
|
8
|
-
contextMap: new Map(),
|
|
9
|
-
tokenMap: new Map(),
|
|
10
|
-
usedTokenMap: new Map(),
|
|
11
|
-
serverConnection: httpSidekickToServer("", ""),
|
|
12
|
-
};
|
|
6
|
+
state;
|
|
13
7
|
logger;
|
|
14
|
-
constructor(publishFunction, logLevel) {
|
|
8
|
+
constructor(publishFunction, serverConnection, logLevel) {
|
|
15
9
|
this.publish = publishFunction;
|
|
16
10
|
this.logger = new Logger(logLevel ?? "info", [
|
|
17
11
|
() => new Date().toUTCString(),
|
|
18
12
|
]);
|
|
13
|
+
this.state = {
|
|
14
|
+
contextMap: new Map(),
|
|
15
|
+
tokenMap: new Map(),
|
|
16
|
+
usedTokenMap: new Map(),
|
|
17
|
+
serverConnection,
|
|
18
|
+
};
|
|
19
19
|
}
|
|
20
20
|
async updateResources(resources) {
|
|
21
21
|
const promises = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../sidekick/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../sidekick/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ClientToSidekickConnection, ServerToSidekickConnection } from "@covenant-rpc/core/interfaces";
|
|
2
|
+
export declare class InternalSidekick {
|
|
3
|
+
private sidekick;
|
|
4
|
+
private clients;
|
|
5
|
+
private serverCallback;
|
|
6
|
+
constructor();
|
|
7
|
+
setServerCallback(callback: (channelName: string, params: Record<string, string>, data: any, context: any) => Promise<{
|
|
8
|
+
fault: "client" | "server";
|
|
9
|
+
message: string;
|
|
10
|
+
} | null>): void;
|
|
11
|
+
getConnectionFromServer(): ServerToSidekickConnection;
|
|
12
|
+
getConnectionFromClient(): ClientToSidekickConnection;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=internal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../sidekick/internal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,0BAA0B,EAA8B,MAAM,+BAA+B,CAAC;AASxI,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAU;IAC1B,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,cAAc,CAAoK;;IAsC1L,iBAAiB,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC;QAAE,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAI7K,uBAAuB,IAAI,0BAA0B;IAsBrD,uBAAuB,IAAI,0BAA0B;CActD"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { Sidekick } from "../";
|
|
2
|
+
// internal sidekick is good when you want you have a single server that can act as a sidekick and the core api (for example,
|
|
3
|
+
// when you are not on the edge)
|
|
4
|
+
export class InternalSidekick {
|
|
5
|
+
sidekick;
|
|
6
|
+
clients = [];
|
|
7
|
+
serverCallback = null;
|
|
8
|
+
constructor() {
|
|
9
|
+
const clients = this.clients;
|
|
10
|
+
const getServerCallback = () => this.serverCallback;
|
|
11
|
+
const serverConnection = {
|
|
12
|
+
async sendMessage(message) {
|
|
13
|
+
const callback = getServerCallback();
|
|
14
|
+
if (!callback) {
|
|
15
|
+
return {
|
|
16
|
+
fault: "server",
|
|
17
|
+
message: "Server connection not initialized",
|
|
18
|
+
channel: message.channel,
|
|
19
|
+
params: message.params,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const result = await callback(message.channel, message.params, message.data, message.context);
|
|
23
|
+
if (result) {
|
|
24
|
+
return {
|
|
25
|
+
...result,
|
|
26
|
+
channel: message.channel,
|
|
27
|
+
params: message.params,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
this.sidekick = new Sidekick(async (topic, message) => {
|
|
34
|
+
const subscribed = clients.filter(c => c.isSubscribed(topic));
|
|
35
|
+
for (const s of subscribed) {
|
|
36
|
+
s.directMessage(message);
|
|
37
|
+
}
|
|
38
|
+
}, serverConnection);
|
|
39
|
+
}
|
|
40
|
+
setServerCallback(callback) {
|
|
41
|
+
this.serverCallback = callback;
|
|
42
|
+
}
|
|
43
|
+
getConnectionFromServer() {
|
|
44
|
+
// we have to do this because of the way the this
|
|
45
|
+
// keyword works in javascript
|
|
46
|
+
const sidekick = this.sidekick;
|
|
47
|
+
return {
|
|
48
|
+
// these will never fail - no network layer
|
|
49
|
+
addConnection(payload) {
|
|
50
|
+
sidekick.addConnection(payload);
|
|
51
|
+
return Promise.resolve(null);
|
|
52
|
+
},
|
|
53
|
+
async update(resources) {
|
|
54
|
+
await sidekick.updateResources(resources);
|
|
55
|
+
return null;
|
|
56
|
+
},
|
|
57
|
+
async postMessage(message) {
|
|
58
|
+
await sidekick.postServerMessage(message);
|
|
59
|
+
return null;
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
getConnectionFromClient() {
|
|
64
|
+
const client = new InternalSidekickClient();
|
|
65
|
+
const sidekick = this.sidekick;
|
|
66
|
+
this.clients.push(client);
|
|
67
|
+
return {
|
|
68
|
+
sendMessage(message) {
|
|
69
|
+
sidekick.handleClientMessage(client, message);
|
|
70
|
+
},
|
|
71
|
+
onMessage(handler) {
|
|
72
|
+
return client.addHandler(handler);
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
class InternalSidekickClient {
|
|
78
|
+
id;
|
|
79
|
+
subscribedTopics;
|
|
80
|
+
handlers;
|
|
81
|
+
constructor() {
|
|
82
|
+
this.id = crypto.randomUUID();
|
|
83
|
+
this.subscribedTopics = new Set();
|
|
84
|
+
this.handlers = [];
|
|
85
|
+
}
|
|
86
|
+
subscribe(topic) {
|
|
87
|
+
this.subscribedTopics.add(topic);
|
|
88
|
+
}
|
|
89
|
+
directMessage(message) {
|
|
90
|
+
for (const h of this.handlers) {
|
|
91
|
+
const p = h(message);
|
|
92
|
+
if (p instanceof Promise) {
|
|
93
|
+
p.catch((e) => {
|
|
94
|
+
throw new Error(`Unhandlable error in message handler: ${e}`);
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
getHandlers() {
|
|
100
|
+
return this.handlers;
|
|
101
|
+
}
|
|
102
|
+
unsubscribe(topic) {
|
|
103
|
+
this.subscribedTopics.delete(topic);
|
|
104
|
+
}
|
|
105
|
+
getId() {
|
|
106
|
+
return this.id;
|
|
107
|
+
}
|
|
108
|
+
isSubscribed(topic) {
|
|
109
|
+
return this.subscribedTopics.has(topic);
|
|
110
|
+
}
|
|
111
|
+
addHandler(handler) {
|
|
112
|
+
this.handlers.push(handler);
|
|
113
|
+
return () => this.removeHandler(handler);
|
|
114
|
+
}
|
|
115
|
+
removeHandler(handler) {
|
|
116
|
+
this.handlers = this.handlers.filter(h => h !== handler);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=internal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal.js","sourceRoot":"","sources":["../../sidekick/internal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type Server } from "node:http";
|
|
2
|
+
import type { SidekickToServerConnection } from "@covenant-rpc/core/interfaces";
|
|
3
|
+
export interface SidekickWebserverOptions {
|
|
4
|
+
secret: string;
|
|
5
|
+
port: number;
|
|
6
|
+
serverConnection: SidekickToServerConnection;
|
|
7
|
+
/** Delay in milliseconds before responding to failed auth attempts (default: 3000) */
|
|
8
|
+
authFailureDelayMs?: number;
|
|
9
|
+
}
|
|
10
|
+
export declare function startSidekickServer({ port, secret, serverConnection, authFailureDelayMs }: SidekickWebserverOptions): Server;
|
|
11
|
+
//# sourceMappingURL=webserver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webserver.d.ts","sourceRoot":"","sources":["../../sidekick/webserver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsC,KAAK,MAAM,EAAuB,MAAM,WAAW,CAAC;AAGjG,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAYhF,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,EAAE,0BAA0B,CAAC;IAC7C,sFAAsF;IACtF,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAmID,wBAAgB,mBAAmB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,kBAAyB,EAAE,EAAE,wBAAwB,GAAG,MAAM,CA0FnI"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
import { createServer } from "node:http";
|
|
2
|
+
import { WebSocketServer } from "ws";
|
|
3
|
+
import { Sidekick } from "../";
|
|
4
|
+
import { v } from "@covenant-rpc/core/validation";
|
|
5
|
+
import { channelConnectionPayload, serverMessageSchema } from "@covenant-rpc/core/channel";
|
|
6
|
+
import { sidekickIncomingMessageSchema } from "@covenant-rpc/core/sidekick/protocol";
|
|
7
|
+
import ION from "@covenant-rpc/ion";
|
|
8
|
+
async function handleResourcesRoute(req, res, ctx) {
|
|
9
|
+
if (!await ctx.validateKey(req)) {
|
|
10
|
+
res.writeHead(401).end("Key didn't match");
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
let body;
|
|
14
|
+
try {
|
|
15
|
+
body = JSON.parse(await ctx.readBody(req));
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
res.writeHead(400).end("Invalid JSON");
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const parsed = v.parseSafe(body, v.obj({ resources: v.array(v.string()) }));
|
|
22
|
+
if (!parsed) {
|
|
23
|
+
res.writeHead(400).end("Invalid body schema");
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
await ctx.sidekick.updateResources(parsed.resources);
|
|
27
|
+
res.writeHead(200).end("OK");
|
|
28
|
+
}
|
|
29
|
+
async function handleConnectionRoute(req, res, ctx) {
|
|
30
|
+
if (!await ctx.validateKey(req)) {
|
|
31
|
+
res.writeHead(401).end("Key didn't match");
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
let body;
|
|
35
|
+
try {
|
|
36
|
+
body = ION.parse(await ctx.readBody(req));
|
|
37
|
+
}
|
|
38
|
+
catch (e) {
|
|
39
|
+
res.writeHead(400).end(`Error parsing ION: ${e}`);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const payload = v.parseSafe(body, channelConnectionPayload);
|
|
43
|
+
if (!payload) {
|
|
44
|
+
res.writeHead(400).end("Did not recieve payload in correct schema");
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
ctx.sidekick.addConnection(payload);
|
|
48
|
+
res.writeHead(200).end("OK");
|
|
49
|
+
}
|
|
50
|
+
async function handleMessageRoute(req, res, ctx) {
|
|
51
|
+
if (!await ctx.validateKey(req)) {
|
|
52
|
+
res.writeHead(401).end("Key didn't match");
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
let body;
|
|
56
|
+
try {
|
|
57
|
+
body = ION.parse(await ctx.readBody(req));
|
|
58
|
+
}
|
|
59
|
+
catch (e) {
|
|
60
|
+
res.writeHead(400).end(`Error parsing ION: ${e}`);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
const message = v.parseSafe(body, serverMessageSchema);
|
|
64
|
+
if (!message) {
|
|
65
|
+
res.writeHead(400).end("Did not recieve message in correct schema");
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
await ctx.sidekick.postServerMessage(message);
|
|
69
|
+
res.writeHead(200).end("OK");
|
|
70
|
+
}
|
|
71
|
+
async function handleWebSocketMessage(ws, raw, tracked, sidekick) {
|
|
72
|
+
let parsed;
|
|
73
|
+
try {
|
|
74
|
+
parsed = ION.parse(raw.toString());
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
const err = {
|
|
78
|
+
type: "error",
|
|
79
|
+
error: {
|
|
80
|
+
fault: "client",
|
|
81
|
+
message: "Failed to parse last message as an incoming message. This is a bug in covenant's client code.",
|
|
82
|
+
params: {},
|
|
83
|
+
channel: "unknown",
|
|
84
|
+
},
|
|
85
|
+
};
|
|
86
|
+
ws.send(ION.stringify(err));
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
const message = v.parseSafe(parsed, sidekickIncomingMessageSchema);
|
|
90
|
+
if (message === null) {
|
|
91
|
+
const err = {
|
|
92
|
+
type: "error",
|
|
93
|
+
error: {
|
|
94
|
+
fault: "client",
|
|
95
|
+
message: "Failed to parse last message as an incoming message. This is a bug in covenant's client code.",
|
|
96
|
+
params: {},
|
|
97
|
+
channel: "unknown",
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
ws.send(ION.stringify(err));
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
const client = {
|
|
104
|
+
subscribe(topic) {
|
|
105
|
+
tracked.topics.add(topic);
|
|
106
|
+
},
|
|
107
|
+
unsubscribe(topic) {
|
|
108
|
+
tracked.topics.delete(topic);
|
|
109
|
+
},
|
|
110
|
+
getId() {
|
|
111
|
+
return tracked.id;
|
|
112
|
+
},
|
|
113
|
+
directMessage(message) {
|
|
114
|
+
ws.send(ION.stringify(message));
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
await sidekick.handleClientMessage(client, message);
|
|
118
|
+
}
|
|
119
|
+
export function startSidekickServer({ port, secret, serverConnection, authFailureDelayMs = 3000 }) {
|
|
120
|
+
const connections = new Set();
|
|
121
|
+
const sidekick = new Sidekick(async (topic, message) => {
|
|
122
|
+
const data = ION.stringify(message);
|
|
123
|
+
for (const conn of connections) {
|
|
124
|
+
if (conn.topics.has(topic)) {
|
|
125
|
+
conn.ws.send(data);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}, serverConnection);
|
|
129
|
+
async function validateKey(req) {
|
|
130
|
+
const authorization = req.headers["authorization"];
|
|
131
|
+
if (authorization !== `Bearer ${secret}`) {
|
|
132
|
+
if (authFailureDelayMs > 0) {
|
|
133
|
+
await new Promise((resolve) => setTimeout(resolve, authFailureDelayMs));
|
|
134
|
+
}
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
function readBody(req) {
|
|
140
|
+
return new Promise((resolve, reject) => {
|
|
141
|
+
let body = "";
|
|
142
|
+
req.on("data", (chunk) => { body += chunk.toString(); });
|
|
143
|
+
req.on("end", () => resolve(body));
|
|
144
|
+
req.on("error", reject);
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
const routeContext = {
|
|
148
|
+
sidekick,
|
|
149
|
+
validateKey,
|
|
150
|
+
readBody,
|
|
151
|
+
};
|
|
152
|
+
const httpServer = createServer(async (req, res) => {
|
|
153
|
+
const url = new URL(req.url ?? "/", `http://${req.headers.host}`);
|
|
154
|
+
if (req.method !== "POST") {
|
|
155
|
+
res.writeHead(404).end("Not Found");
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
switch (url.pathname) {
|
|
159
|
+
case "/resources":
|
|
160
|
+
await handleResourcesRoute(req, res, routeContext);
|
|
161
|
+
return;
|
|
162
|
+
case "/connection":
|
|
163
|
+
await handleConnectionRoute(req, res, routeContext);
|
|
164
|
+
return;
|
|
165
|
+
case "/message":
|
|
166
|
+
await handleMessageRoute(req, res, routeContext);
|
|
167
|
+
return;
|
|
168
|
+
default:
|
|
169
|
+
res.writeHead(404).end("Not Found");
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
const wss = new WebSocketServer({ noServer: true });
|
|
173
|
+
httpServer.on("upgrade", (req, socket, head) => {
|
|
174
|
+
const url = new URL(req.url ?? "/", `http://${req.headers.host}`);
|
|
175
|
+
if (url.pathname !== "/socket") {
|
|
176
|
+
socket.destroy();
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
wss.handleUpgrade(req, socket, head, (ws) => {
|
|
180
|
+
const tracked = {
|
|
181
|
+
ws,
|
|
182
|
+
id: crypto.randomUUID(),
|
|
183
|
+
topics: new Set(),
|
|
184
|
+
};
|
|
185
|
+
connections.add(tracked);
|
|
186
|
+
ws.on("close", () => {
|
|
187
|
+
connections.delete(tracked);
|
|
188
|
+
});
|
|
189
|
+
ws.on("message", async (raw) => {
|
|
190
|
+
await handleWebSocketMessage(ws, raw, tracked, sidekick);
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
});
|
|
194
|
+
httpServer.listen(port);
|
|
195
|
+
return httpServer;
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=webserver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webserver.js","sourceRoot":"","sources":["../../sidekick/webserver.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@covenant-rpc/server",
|
|
3
3
|
"module": "./dist/index.js",
|
|
4
|
-
"version": "1.0
|
|
4
|
+
"version": "2.1.0",
|
|
5
5
|
"type": "module",
|
|
6
|
+
"bin": {
|
|
7
|
+
"covenant-sidekick": "./bin/sidekick.ts"
|
|
8
|
+
},
|
|
6
9
|
"exports": {
|
|
7
10
|
".": {
|
|
8
11
|
"types": "./dist/index.d.ts",
|
|
@@ -14,7 +17,8 @@
|
|
|
14
17
|
}
|
|
15
18
|
},
|
|
16
19
|
"scripts": {
|
|
17
|
-
"build": "bun ../../scripts/build-package.ts ."
|
|
20
|
+
"build": "bun ../../scripts/build-package.ts .",
|
|
21
|
+
"sidekick": "bun ./bin/sidekick.ts"
|
|
18
22
|
},
|
|
19
23
|
"publishConfig": {
|
|
20
24
|
"access": "public"
|
|
@@ -23,9 +27,14 @@
|
|
|
23
27
|
"typescript": "^5"
|
|
24
28
|
},
|
|
25
29
|
"dependencies": {
|
|
26
|
-
"@covenant-rpc/core": "^
|
|
27
|
-
"@covenant-rpc/ion": "^2.
|
|
28
|
-
"@covenant-rpc/request-serializer": "^2.
|
|
30
|
+
"@covenant-rpc/core": "^2.0.0",
|
|
31
|
+
"@covenant-rpc/ion": "^2.1.0",
|
|
32
|
+
"@covenant-rpc/request-serializer": "^2.1.0",
|
|
33
|
+
"commander": "^12.1.0",
|
|
34
|
+
"ws": "^8.19.0"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@types/ws": "^8.18.1"
|
|
29
38
|
},
|
|
30
39
|
"types": "./dist/index.d.ts",
|
|
31
40
|
"files": [
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"socket.d.ts","sourceRoot":"","sources":["../../sidekick/socket.ts"],"names":[],"mappings":"AACA,qBAAa,cAAc;gBACb,EAAE,EAAE,SAAS;CAE1B"}
|
package/dist/sidekick/socket.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"socket.js","sourceRoot":"","sources":["../../sidekick/socket.ts"],"names":[],"mappings":"AACA,MAAM,OAAO,cAAc;IACzB,YAAY,EAAa;IACzB,CAAC;CACF"}
|