@covenant-rpc/server 0.3.0 → 0.5.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.
Files changed (61) hide show
  1. package/dist/adapters/vanilla.d.ts +3 -0
  2. package/dist/adapters/vanilla.d.ts.map +1 -0
  3. package/dist/adapters/vanilla.js +7 -0
  4. package/dist/adapters/vanilla.js.map +1 -0
  5. package/{index.ts → dist/index.d.ts} +1 -2
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +8 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/interfaces/direct.d.ts +4 -0
  10. package/dist/interfaces/direct.d.ts.map +1 -0
  11. package/dist/interfaces/direct.js +98 -0
  12. package/dist/interfaces/direct.js.map +1 -0
  13. package/dist/interfaces/empty.d.ts +3 -0
  14. package/dist/interfaces/empty.d.ts.map +1 -0
  15. package/dist/interfaces/empty.js +8 -0
  16. package/dist/interfaces/empty.js.map +1 -0
  17. package/dist/interfaces/http.d.ts +4 -0
  18. package/dist/interfaces/http.d.ts.map +1 -0
  19. package/dist/interfaces/http.js +92 -0
  20. package/dist/interfaces/http.js.map +1 -0
  21. package/dist/interfaces/mock.d.ts +4 -0
  22. package/dist/interfaces/mock.d.ts.map +1 -0
  23. package/dist/interfaces/mock.js +28 -0
  24. package/dist/interfaces/mock.js.map +1 -0
  25. package/dist/logger.d.ts +16 -0
  26. package/dist/logger.d.ts.map +1 -0
  27. package/dist/logger.js +60 -0
  28. package/dist/logger.js.map +1 -0
  29. package/dist/server.d.ts +46 -0
  30. package/dist/server.d.ts.map +1 -0
  31. package/dist/server.js +342 -0
  32. package/dist/server.js.map +1 -0
  33. package/dist/sidekick/handlers.d.ts +15 -0
  34. package/dist/sidekick/handlers.d.ts.map +1 -0
  35. package/dist/sidekick/handlers.js +143 -0
  36. package/dist/sidekick/handlers.js.map +1 -0
  37. package/dist/sidekick/index.d.ts +33 -0
  38. package/dist/sidekick/index.d.ts.map +1 -0
  39. package/dist/sidekick/index.js +72 -0
  40. package/dist/sidekick/index.js.map +1 -0
  41. package/dist/sidekick/socket.d.ts +4 -0
  42. package/dist/sidekick/socket.d.ts.map +1 -0
  43. package/dist/sidekick/socket.js +5 -0
  44. package/dist/sidekick/socket.js.map +1 -0
  45. package/package.json +23 -6
  46. package/adapters/vanilla.ts +0 -9
  47. package/interfaces/direct.ts +0 -116
  48. package/interfaces/empty.ts +0 -9
  49. package/interfaces/http.ts +0 -111
  50. package/interfaces/mock.ts +0 -33
  51. package/logger.ts +0 -79
  52. package/server.ts +0 -454
  53. package/sidekick/handlers.ts +0 -173
  54. package/sidekick/index.ts +0 -109
  55. package/sidekick/socket.ts +0 -5
  56. package/tests/channel-http.test.ts +0 -483
  57. package/tests/channel.test.ts +0 -689
  58. package/tests/procedure.test.ts +0 -238
  59. package/tests/sidekick.test.ts +0 -23
  60. package/tests/validation-types.test.ts +0 -122
  61. package/tests/validation.test.ts +0 -144
@@ -0,0 +1,3 @@
1
+ import type { CovenantServer } from "../server";
2
+ export declare function vanillaAdapter(server: CovenantServer<any, any, any, any>): (request: Request) => Promise<Response>;
3
+ //# sourceMappingURL=vanilla.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vanilla.d.ts","sourceRoot":"","sources":["../../adapters/vanilla.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEhD,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IACzD,SAAS,OAAO,uBAI/B"}
@@ -0,0 +1,7 @@
1
+ export function vanillaAdapter(server) {
2
+ return async (request) => {
3
+ const res = await server.handle(request);
4
+ return res;
5
+ };
6
+ }
7
+ //# sourceMappingURL=vanilla.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vanilla.js","sourceRoot":"","sources":["../../adapters/vanilla.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,MAA0C;IACvE,OAAO,KAAK,EAAE,OAAgB,EAAE,EAAE;QAChC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,GAAG,CAAC;IACb,CAAC,CAAA;AACH,CAAC"}
@@ -5,6 +5,5 @@ export { Sidekick, type SidekickClient } from "./sidekick";
5
5
  export { httpServerToSidekick, httpSidekickToServer } from "./interfaces/http";
6
6
  export { emptyServerToSidekick } from "./interfaces/empty";
7
7
  export { directClientToServer } from "./interfaces/direct";
8
-
9
- // Re-export types from core for convenience
10
8
  export type { LoggerLevel, Prefix } from "@covenant-rpc/core/logger";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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;AAG3D,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ export { CovenantServer } from "./server";
2
+ export { Logger } from "./logger";
3
+ export { vanillaAdapter } from "./adapters/vanilla";
4
+ export { Sidekick } from "./sidekick";
5
+ export { httpServerToSidekick, httpSidekickToServer } from "./interfaces/http";
6
+ export { emptyServerToSidekick } from "./interfaces/empty";
7
+ export { directClientToServer } from "./interfaces/direct";
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,4 @@
1
+ import type { ClientToServerConnection } from "@covenant-rpc/core/interfaces";
2
+ import type { CovenantServer } from "../server";
3
+ export declare function directClientToServer(server: CovenantServer<any, any, any, any>, extraHeaders: Record<string, string>): ClientToServerConnection;
4
+ //# sourceMappingURL=direct.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct.d.ts","sourceRoot":"","sources":["../../interfaces/direct.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAA0D,MAAM,+BAA+B,CAAC;AAEtI,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"}
@@ -0,0 +1,98 @@
1
+ import { v } from "@covenant-rpc/core/validation";
2
+ import { procedureResponseSchema } from "@covenant-rpc/core/procedure";
3
+ import { channelConnectionResponseSchema } from "@covenant-rpc/core/channel";
4
+ import ION from "@covenant-rpc/ion";
5
+ export function directClientToServer(server, extraHeaders) {
6
+ const getHeaders = () => {
7
+ const h = new Headers();
8
+ h.set("Content-Type", "application/json");
9
+ for (const k in extraHeaders) {
10
+ h.set(k, extraHeaders[k]);
11
+ }
12
+ return h;
13
+ };
14
+ const getUrl = (type) => {
15
+ const url = new URL("localhost:3000");
16
+ url.searchParams.set("type", type);
17
+ return url.toString();
18
+ };
19
+ return {
20
+ async sendConnectionRequest(body) {
21
+ try {
22
+ const request = new Request(getUrl("connect"), {
23
+ body: ION.stringify(body),
24
+ method: "POST",
25
+ headers: getHeaders(),
26
+ });
27
+ const response = await server.handle(request);
28
+ const responseText = await response.text();
29
+ const responseBody = ION.parse(responseText);
30
+ const connectionResponse = v.parseSafe(responseBody, channelConnectionResponseSchema);
31
+ if (connectionResponse === null) {
32
+ return {
33
+ channel: body.channel,
34
+ params: body.params,
35
+ result: {
36
+ type: "ERROR",
37
+ error: {
38
+ channel: body.channel,
39
+ params: body.params,
40
+ fault: "server",
41
+ message: `Bad response from server: ${JSON.stringify(responseBody)}`,
42
+ },
43
+ },
44
+ };
45
+ }
46
+ return connectionResponse;
47
+ }
48
+ catch (e) {
49
+ return {
50
+ channel: body.channel,
51
+ params: body.params,
52
+ result: {
53
+ type: "ERROR",
54
+ error: {
55
+ channel: body.channel,
56
+ params: body.params,
57
+ fault: "server",
58
+ message: `Unknown error connecting to channel: ${e}`,
59
+ },
60
+ },
61
+ };
62
+ }
63
+ },
64
+ async runProcedure(body) {
65
+ try {
66
+ const request = new Request(getUrl("procedure"), {
67
+ body: ION.stringify(body),
68
+ method: "POST",
69
+ headers: getHeaders(),
70
+ });
71
+ const response = await server.handle(request);
72
+ const responseText = await response.text();
73
+ const responseBody = ION.parse(responseText);
74
+ const procedureResponse = v.parseSafe(responseBody, procedureResponseSchema);
75
+ if (procedureResponse === null) {
76
+ return {
77
+ status: "ERR",
78
+ error: {
79
+ code: 500,
80
+ message: `Bad response from server: ${responseBody}`,
81
+ }
82
+ };
83
+ }
84
+ return procedureResponse;
85
+ }
86
+ catch (e) {
87
+ return {
88
+ status: "ERR",
89
+ error: {
90
+ code: 400,
91
+ message: `Unknown error fetching from the server: ${e}`,
92
+ }
93
+ };
94
+ }
95
+ }
96
+ };
97
+ }
98
+ //# sourceMappingURL=direct.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"direct.js","sourceRoot":"","sources":["../../interfaces/direct.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { ServerToSidekickConnection } from "@covenant-rpc/core/interfaces";
2
+ export declare function emptyServerToSidekick(): ServerToSidekickConnection;
3
+ //# sourceMappingURL=empty.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty.d.ts","sourceRoot":"","sources":["../../interfaces/empty.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAEhF,wBAAgB,qBAAqB,IAAI,0BAA0B,CAMlE"}
@@ -0,0 +1,8 @@
1
+ export function emptyServerToSidekick() {
2
+ return {
3
+ addConnection: async () => null,
4
+ update: async () => null,
5
+ postMessage: async () => null,
6
+ };
7
+ }
8
+ //# sourceMappingURL=empty.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty.js","sourceRoot":"","sources":["../../interfaces/empty.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;QAC/B,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;QACxB,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;KAC9B,CAAA;AACH,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { ServerToSidekickConnection, SidekickToServerConnection } from "@covenant-rpc/core/interfaces";
2
+ export declare function httpSidekickToServer(baseUrl: string, key: string): SidekickToServerConnection;
3
+ export declare function httpServerToSidekick(url: string, key: string): ServerToSidekickConnection;
4
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../interfaces/http.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAI5G,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,0BAA0B,CAgC7F;AAwED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,0BAA0B,CAEzF"}
@@ -0,0 +1,92 @@
1
+ import ION from "@covenant-rpc/ion";
2
+ export function httpSidekickToServer(baseUrl, key) {
3
+ const getUrl = (type) => {
4
+ const url = new URL(baseUrl);
5
+ url.searchParams.set("type", type);
6
+ return url.toString();
7
+ };
8
+ return {
9
+ async sendMessage(message) {
10
+ const json = ION.stringify(message);
11
+ const res = await fetch(getUrl("channel"), {
12
+ headers: {
13
+ "Authorization": `Bearer ${key}`,
14
+ "Content-Type": "application/json",
15
+ },
16
+ method: "POST",
17
+ body: json,
18
+ });
19
+ if (res.ok) {
20
+ return null;
21
+ }
22
+ return {
23
+ channel: message.channel,
24
+ params: message.params,
25
+ fault: "server",
26
+ message: `Failed to send message to server. Received: ${res.status} - ${res.statusText}`,
27
+ };
28
+ },
29
+ };
30
+ }
31
+ class HttpServerToSidekick {
32
+ url;
33
+ key;
34
+ constructor(url, key) {
35
+ this.url = new URL(url);
36
+ this.key = key;
37
+ }
38
+ async addConnection(payload) {
39
+ const url = new URL(this.url.toString());
40
+ url.pathname = "/connection";
41
+ const res = await fetch(url.toString(), {
42
+ body: ION.stringify(payload),
43
+ headers: {
44
+ "Content-Type": "application/json",
45
+ "Authorization": `Bearer ${this.key}`,
46
+ },
47
+ method: "POST",
48
+ });
49
+ if (!res.ok) {
50
+ return new Error(`Error posting connection from sidekick: ${res.status} - ${res.statusText}`);
51
+ }
52
+ return null;
53
+ }
54
+ async update(resources) {
55
+ const url = new URL(this.url.toString());
56
+ url.pathname = "/resources";
57
+ const res = await fetch(url.toString(), {
58
+ body: ION.stringify({
59
+ resources: resources,
60
+ }),
61
+ headers: {
62
+ "Content-Type": "application/json",
63
+ "Authorization": `Bearer ${this.key}`,
64
+ },
65
+ method: "POST",
66
+ });
67
+ if (!res.ok) {
68
+ return new Error(`Error posting resources from sidekick: ${res.status} - ${res.statusText}`);
69
+ }
70
+ return null;
71
+ }
72
+ async postMessage(message) {
73
+ const url = new URL(this.url.toString());
74
+ url.pathname = "/message";
75
+ const res = await fetch(url.toString(), {
76
+ body: ION.stringify(message),
77
+ headers: {
78
+ "Content-Type": "application/json",
79
+ "Authorization": `Bearer ${this.key}`,
80
+ },
81
+ method: "POST",
82
+ });
83
+ if (!res.ok) {
84
+ return new Error(`Error posting message from sidekick: ${res.status} - ${res.statusText}`);
85
+ }
86
+ return null;
87
+ }
88
+ }
89
+ export function httpServerToSidekick(url, key) {
90
+ return new HttpServerToSidekick(url, key);
91
+ }
92
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../interfaces/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ServerToSidekickConnection } from "@covenant-rpc/core/interfaces";
2
+ import type { Sidekick } from "../sidekick";
3
+ export declare function mockServerToSidekick(sidekick: Sidekick): ServerToSidekickConnection;
4
+ //# sourceMappingURL=mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../interfaces/mock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA8B,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC5G,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,aAAa,CAAC;AAI5D,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,GAAG,0BAA0B,CAenF"}
@@ -0,0 +1,28 @@
1
+ export function mockServerToSidekick(sidekick) {
2
+ return {
3
+ async addConnection(p) {
4
+ sidekick.addConnection(p);
5
+ return null;
6
+ },
7
+ async update(resources) {
8
+ await sidekick.updateResources(resources);
9
+ return null;
10
+ },
11
+ async postMessage(m) {
12
+ await sidekick.postServerMessage(m);
13
+ return null;
14
+ }
15
+ };
16
+ }
17
+ // TODO - I never finished this
18
+ // export function mockClientToSidekick(sidekick: Sidekick, client: SidekickClient): ClientToSidekickConnection {
19
+ // return {
20
+ // sendMessage(message: SidekickIncomingMessage) {
21
+ // sidekick.handleClientMessage(client, message);
22
+ // },
23
+ // onMessage(v) {
24
+ //
25
+ // }
26
+ // }
27
+ // }
28
+ //# sourceMappingURL=mock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock.js","sourceRoot":"","sources":["../../interfaces/mock.ts"],"names":[],"mappings":"AAKA,MAAM,UAAU,oBAAoB,CAAC,QAAkB;IACrD,OAAO;QACL,KAAK,CAAC,aAAa,CAAC,CAAC;YACnB,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAC1B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,SAAmB;YAC9B,MAAM,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;YAC1C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,CAAC;YACjB,MAAM,QAAQ,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACpC,OAAO,IAAI,CAAC;QACd,CAAC;KACF,CAAA;AACH,CAAC;AAED,+BAA+B;AAC/B,iHAAiH;AACjH,aAAa;AACb,sDAAsD;AACtD,uDAAuD;AACvD,SAAS;AACT,qBAAqB;AACrB,EAAE;AACF,QAAQ;AACR,MAAM;AACN,IAAI"}
@@ -0,0 +1,16 @@
1
+ import type { Logger as ILogger, LoggerLevel, Prefix } from "@covenant-rpc/core/logger";
2
+ export declare class Logger implements ILogger {
3
+ prefixes: Prefix[];
4
+ level: LoggerLevel;
5
+ constructor(level: LoggerLevel, prefixes?: Prefix[]);
6
+ sublogger(prefix: Prefix): Logger;
7
+ pushPrefix(prefix: Prefix): Logger;
8
+ clone(): Logger;
9
+ debug(text: string): void;
10
+ info(text: string): void;
11
+ error(text: string): void;
12
+ warn(text: string): void;
13
+ fatal(text: string): never;
14
+ private getPrefix;
15
+ }
16
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC;AAQxF,qBAAa,MAAO,YAAW,OAAO;IACpC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,WAAW,CAAA;gBAEN,KAAK,EAAE,WAAW,EAAE,QAAQ,GAAE,MAAM,EAAO;IAKvD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIjC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAKlC,KAAK,IAAI,MAAM;IAIf,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQzB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQxB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQzB,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQxB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK;IAO1B,OAAO,CAAC,SAAS;CAQlB"}
package/dist/logger.js ADDED
@@ -0,0 +1,60 @@
1
+ const loggerLevels = { "slient": 0, "error": 1, "warn": 2, "info": 3, "debug": 4 };
2
+ function levelSatisfies(currentLevel, maxLevel) {
3
+ return loggerLevels[currentLevel] <= loggerLevels[maxLevel];
4
+ }
5
+ export class Logger {
6
+ prefixes;
7
+ level;
8
+ constructor(level, prefixes = []) {
9
+ this.prefixes = prefixes;
10
+ this.level = level;
11
+ }
12
+ sublogger(prefix) {
13
+ return new Logger(this.level, [...this.prefixes, prefix]);
14
+ }
15
+ pushPrefix(prefix) {
16
+ this.prefixes.push(prefix);
17
+ return this;
18
+ }
19
+ clone() {
20
+ return new Logger(this.level, [...this.prefixes]);
21
+ }
22
+ debug(text) {
23
+ if (!levelSatisfies("debug", this.level)) {
24
+ return;
25
+ }
26
+ console.log(`${this.getPrefix()}DEBUG: ${text}`);
27
+ }
28
+ info(text) {
29
+ if (!levelSatisfies("info", this.level)) {
30
+ return;
31
+ }
32
+ console.log(`${this.getPrefix()}INFO: ${text}`);
33
+ }
34
+ error(text) {
35
+ if (!levelSatisfies("error", this.level)) {
36
+ return;
37
+ }
38
+ console.log(`${this.getPrefix()}ERROR: ${text}`);
39
+ }
40
+ warn(text) {
41
+ if (!levelSatisfies("error", this.level)) {
42
+ return;
43
+ }
44
+ console.log(`${this.getPrefix()}WARNING: ${text}`);
45
+ }
46
+ fatal(text) {
47
+ console.log("---------------------------------");
48
+ console.log(`${this.getPrefix()}FATAL: ${text}`);
49
+ console.log("---------------------------------");
50
+ throw new Error(`FATAL: ${text}`);
51
+ }
52
+ getPrefix() {
53
+ if (this.prefixes.length === 0) {
54
+ return "";
55
+ }
56
+ const strs = this.prefixes.map(p => typeof p === "string" ? p : p());
57
+ return `[${strs.join(" |> ")}] `;
58
+ }
59
+ }
60
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import type { ChannelMap, Covenant, ProcedureMap } from "@covenant-rpc/core";
2
+ import { type ProcedureDefinition, type ProcedureInputs, type ProcedureRequest } from "@covenant-rpc/core/procedure";
3
+ import type { StandardSchemaV1 } from "@standard-schema/spec";
4
+ import { type ArrayToMap, type AsyncResult, type MaybePromise } from "@covenant-rpc/core/utils";
5
+ import type { ServerToSidekickConnection } from "@covenant-rpc/core/interfaces";
6
+ import { type ChannelDefinition } from "@covenant-rpc/core/channel";
7
+ import type { LoggerLevel } from "@covenant-rpc/core/logger";
8
+ export type ProcedureDefinitionMap<T extends ProcedureMap, Context, Derivation> = {
9
+ [key in keyof T]: ProcedureDefinition<T[key], Context, Derivation> | undefined;
10
+ };
11
+ export type ChannelDefinitionMap<T extends ChannelMap> = {
12
+ [key in keyof T]: ChannelDefinition<T[key]>;
13
+ };
14
+ export type ContextGenerator<Context> = (i: ProcedureInputs<unknown, undefined, undefined>) => MaybePromise<Context>;
15
+ export type Derivation<Context, Derived> = (i: ProcedureInputs<undefined, Context, undefined>) => MaybePromise<Derived>;
16
+ export declare class CovenantServer<P extends ProcedureMap, C extends ChannelMap, Context, Derived> {
17
+ private covenant;
18
+ private contextGenerator;
19
+ private derivation;
20
+ private sidekickConnection;
21
+ private procedureDefinitions;
22
+ private channelDefinitions;
23
+ private logger;
24
+ constructor(covenant: Covenant<P, C>, { contextGenerator, derivation, sidekickConnection, logLevel, }: {
25
+ contextGenerator: ContextGenerator<Context>;
26
+ derivation: Derivation<Context, Derived>;
27
+ sidekickConnection: ServerToSidekickConnection;
28
+ logLevel?: LoggerLevel;
29
+ });
30
+ defineProcedure<N extends keyof P>(name: N, definition: ProcedureDefinition<P[N], Context, Derived>): void;
31
+ defineChannel<N extends keyof C>(name: N, definition: ChannelDefinition<C[N]>): void;
32
+ sendMessage<N extends keyof C>(name: N, params: ArrayToMap<C[N]["params"]>, message: StandardSchemaV1.InferOutput<C[N]["serverMessage"]>): Promise<Error | null>;
33
+ postChannelMessage<N extends keyof C>(name: N, params: ArrayToMap<C[N]["params"]>, message: StandardSchemaV1.InferOutput<C[N]["serverMessage"]>): Promise<Error | null>;
34
+ processChannelMessage(channelName: string, params: Record<string, string>, data: any, context: any): Promise<{
35
+ fault: "client" | "server";
36
+ message: string;
37
+ } | null>;
38
+ assertAllDefined(): void;
39
+ private processProcedure;
40
+ private handleProcedure;
41
+ private handleChannelMessage;
42
+ private handleConnectionRequest;
43
+ handle(request: Request): Promise<Response>;
44
+ }
45
+ export declare function parseRequest(request: Request): AsyncResult<ProcedureRequest>;
46
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../server.ts"],"names":[],"mappings":"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"}