@covenant-rpc/core 0.3.0 → 0.4.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 (46) hide show
  1. package/dist/channel.d.ts +75 -0
  2. package/dist/channel.d.ts.map +1 -0
  3. package/dist/channel.js +44 -0
  4. package/dist/channel.js.map +1 -0
  5. package/dist/errors.d.ts +31 -0
  6. package/dist/errors.d.ts.map +1 -0
  7. package/dist/errors.js +61 -0
  8. package/dist/errors.js.map +1 -0
  9. package/dist/index.d.ts +50 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +22 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/interfaces.d.ts +21 -0
  14. package/dist/interfaces.d.ts.map +1 -0
  15. package/dist/interfaces.js +2 -0
  16. package/dist/interfaces.js.map +1 -0
  17. package/dist/logger.d.ts +15 -0
  18. package/dist/logger.d.ts.map +1 -0
  19. package/dist/logger.js +4 -0
  20. package/dist/logger.js.map +1 -0
  21. package/dist/procedure.d.ts +69 -0
  22. package/dist/procedure.d.ts.map +1 -0
  23. package/dist/procedure.js +18 -0
  24. package/dist/procedure.js.map +1 -0
  25. package/dist/sidekick/protocol.d.ts +89 -0
  26. package/dist/sidekick/protocol.d.ts.map +1 -0
  27. package/dist/sidekick/protocol.js +68 -0
  28. package/dist/sidekick/protocol.js.map +1 -0
  29. package/dist/utils.d.ts +30 -0
  30. package/dist/utils.d.ts.map +1 -0
  31. package/dist/utils.js +50 -0
  32. package/dist/utils.js.map +1 -0
  33. package/dist/validation.d.ts +20 -0
  34. package/dist/validation.d.ts.map +1 -0
  35. package/dist/validation.js +85 -0
  36. package/dist/validation.js.map +1 -0
  37. package/package.json +10 -3
  38. package/channel.ts +0 -139
  39. package/errors.ts +0 -80
  40. package/index.ts +0 -112
  41. package/interfaces.ts +0 -28
  42. package/logger.ts +0 -18
  43. package/procedure.ts +0 -105
  44. package/sidekick/protocol.ts +0 -104
  45. package/utils.ts +0 -87
  46. package/validation.ts +0 -99
@@ -0,0 +1,75 @@
1
+ import { v } from "./validation";
2
+ import type { ChannelDeclaration } from ".";
3
+ import type { MaybePromise, ArrayToMap } from "./utils";
4
+ import type { StandardSchemaV1 } from "@standard-schema/spec";
5
+ export declare const channelErrorSchema: v.Validator<{
6
+ channel: string;
7
+ params: Record<string, string>;
8
+ fault: "server" | "client" | "sidekick";
9
+ message: string;
10
+ }>;
11
+ export type ChannelError = v.Infer<typeof channelErrorSchema>;
12
+ export declare const channelConnectionRequestSchema: v.Validator<{
13
+ channel: string;
14
+ params: Record<string, string>;
15
+ data: unknown;
16
+ }>;
17
+ export type ChannelConnectionRequest = v.Infer<typeof channelConnectionRequestSchema>;
18
+ export declare const channelConnectionResponseSchema: v.Validator<{
19
+ channel: string;
20
+ params: Record<string, string>;
21
+ result: {
22
+ type: "OK";
23
+ token: string;
24
+ } | {
25
+ type: "ERROR";
26
+ error: {
27
+ channel: string;
28
+ params: Record<string, string>;
29
+ fault: "server" | "client" | "sidekick";
30
+ message: string;
31
+ };
32
+ };
33
+ }>;
34
+ export type ChannelConnectionResponse = v.Infer<typeof channelConnectionResponseSchema>;
35
+ export declare const channelConnectionPayload: v.Validator<{
36
+ token: string;
37
+ channel: string;
38
+ params: Record<string, string>;
39
+ context: unknown;
40
+ }>;
41
+ export type ChannelConnectionPayload = v.Infer<typeof channelConnectionPayload>;
42
+ export declare const serverMessageSchema: v.Validator<{
43
+ channel: string;
44
+ params: Record<string, string>;
45
+ data: unknown;
46
+ }>;
47
+ export type ServerMessage = v.Infer<typeof serverMessageSchema>;
48
+ export declare const serverMessageWithContext: v.Validator<{
49
+ channel: string;
50
+ params: Record<string, string>;
51
+ data: unknown;
52
+ context: unknown;
53
+ }>;
54
+ export type ServerMessageWithContext = v.Infer<typeof serverMessageWithContext>;
55
+ export interface ConnectionHandlerInputs<T, Params> {
56
+ inputs: T;
57
+ params: Params;
58
+ reject(reason: string, cause: "client" | "server"): never;
59
+ }
60
+ export interface MessageHandlerInputs<T, Params, Context> {
61
+ inputs: T;
62
+ params: Params;
63
+ context: Context;
64
+ error(reason: string, cause: "client" | "server"): never;
65
+ }
66
+ export type ChannelDefinition<T> = T extends ChannelDeclaration<infer ClientMessage, any, infer ConnectionRequest, infer ConnectionContext, infer Params> ? {
67
+ onConnect: (i: ConnectionHandlerInputs<StandardSchemaV1.InferOutput<ConnectionRequest>, ArrayToMap<Params>>) => MaybePromise<StandardSchemaV1.InferOutput<ConnectionContext>>;
68
+ onMessage: (i: MessageHandlerInputs<StandardSchemaV1.InferOutput<ClientMessage>, ArrayToMap<Params>, StandardSchemaV1.InferOutput<ConnectionContext>>) => MaybePromise<void>;
69
+ } : never;
70
+ export type InferChannelClientMessage<C> = C extends ChannelDeclaration<infer ClientMessage, any, any, any, any> ? StandardSchemaV1.InferOutput<ClientMessage> : never;
71
+ export type InferChannelServerMessage<C> = C extends ChannelDeclaration<any, infer ServerMessage, any, any, any> ? StandardSchemaV1.InferOutput<ServerMessage> : never;
72
+ export type InferChannelConnectionRequest<C> = C extends ChannelDeclaration<any, any, infer ConnectionRequest, any, any> ? StandardSchemaV1.InferOutput<ConnectionRequest> : never;
73
+ export type InferChannelConnectionContext<C> = C extends ChannelDeclaration<any, any, any, infer ChannelContext, any> ? StandardSchemaV1.InferOutput<ChannelContext> : never;
74
+ export type InferChannelParams<C> = C extends ChannelDeclaration<any, any, any, any, infer Params> ? ArrayToMap<Params> : never;
75
+ //# sourceMappingURL=channel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../channel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import { v } from "./validation";
2
+ export const channelErrorSchema = v.obj({
3
+ channel: v.string(),
4
+ params: v.record(v.string(), v.string()),
5
+ fault: v.union(v.literal("server"), v.literal("client"), v.literal("sidekick")),
6
+ message: v.string(),
7
+ });
8
+ // sent from the client to the server
9
+ export const channelConnectionRequestSchema = v.obj({
10
+ channel: v.string(),
11
+ params: v.record(v.string(), v.string()),
12
+ data: v.unknown(),
13
+ });
14
+ // sent from the server back to the client to inform of a connection
15
+ export const channelConnectionResponseSchema = v.obj({
16
+ channel: v.string(),
17
+ params: v.record(v.string(), v.string()),
18
+ result: v.union(v.obj({
19
+ type: v.literal("OK"),
20
+ token: v.string(),
21
+ }), v.obj({
22
+ type: v.literal("ERROR"),
23
+ error: channelErrorSchema,
24
+ }))
25
+ });
26
+ // sent from the server to the sidekick to inform of a new connection
27
+ export const channelConnectionPayload = v.obj({
28
+ token: v.string(),
29
+ channel: v.string(),
30
+ params: v.record(v.string(), v.string()),
31
+ context: v.unknown(),
32
+ });
33
+ export const serverMessageSchema = v.obj({
34
+ channel: v.string(),
35
+ params: v.record(v.string(), v.string()),
36
+ data: v.unknown(),
37
+ });
38
+ export const serverMessageWithContext = v.obj({
39
+ channel: v.string(),
40
+ params: v.record(v.string(), v.string()),
41
+ data: v.unknown(),
42
+ context: v.unknown(),
43
+ });
44
+ //# sourceMappingURL=channel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"channel.js","sourceRoot":"","sources":["../channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAMjC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,GAAG,CAAC;IACtC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC/E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;CACpB,CAAC,CAAC;AAIH,qCAAqC;AACrC,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,CAAC,GAAG,CAAC;IAClD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;CAClB,CAAC,CAAC;AAGH,oEAAoE;AACpE,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAAC,CAAC,GAAG,CAAC;IACnD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACxC,MAAM,EAAE,CAAC,CAAC,KAAK,CACb,CAAC,CAAC,GAAG,CAAC;QACJ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;QACrB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;KAClB,CAAC,EACF,CAAC,CAAC,GAAG,CAAC;QACJ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;QACxB,KAAK,EAAE,kBAAkB;KAC1B,CAAC,CACH;CACF,CAAC,CAAC;AAGH,qEAAqE;AACrE,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,GAAG,CAAC;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;CACrB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,GAAG,CAAC;IACvC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;CAClB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,GAAG,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;CACrB,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { ChannelError } from "./channel";
2
+ import type { ProcedureError } from "./procedure";
3
+ export declare class ThrowableProcedureError {
4
+ message: string;
5
+ httpCode: number;
6
+ constructor(message: string, httpCode: number);
7
+ static fromError(error: Error): ThrowableProcedureError;
8
+ static fromUnknown(k: unknown): ThrowableProcedureError;
9
+ toProcedureError(): ProcedureError;
10
+ }
11
+ export declare function procedureErrorFromUnknown(e: unknown): {
12
+ message: string;
13
+ code: number;
14
+ };
15
+ export declare class ThrowableChannelError {
16
+ message: string;
17
+ cause: "client" | "server" | "sidekick";
18
+ channel: string;
19
+ params: Record<string, string>;
20
+ constructor(message: string, channel: string, params: Record<string, string>, cause: "client" | "server" | "sidekick");
21
+ static fromError(error: Error, channel: string, params: Record<string, string>): ThrowableChannelError;
22
+ static fromUnknown(error: unknown, channel: string, params: Record<string, string>): ThrowableChannelError;
23
+ toChannelError(): ChannelError;
24
+ }
25
+ export declare function channelErrorFromUnknown(e: unknown, channel: string, params: Record<string, string>): {
26
+ channel: string;
27
+ params: Record<string, string>;
28
+ fault: "server" | "client" | "sidekick";
29
+ message: string;
30
+ };
31
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAElD,qBAAa,uBAAuB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;gBAEL,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;IAK7C,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,uBAAuB;IAIvD,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,GAAG,uBAAuB;IAIvD,gBAAgB,IAAI,cAAc;CAMnC;AAGD,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,OAAO;;;EAOnD;AAGD,qBAAa,qBAAqB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBAEnB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU;IAOrH,MAAM,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,qBAAqB;IAItG,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,qBAAqB;IAK1G,cAAc,IAAI,YAAY;CAQ/B;AAGD,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;EAOlG"}
package/dist/errors.js ADDED
@@ -0,0 +1,61 @@
1
+ export class ThrowableProcedureError {
2
+ message;
3
+ httpCode;
4
+ constructor(message, httpCode) {
5
+ this.message = message;
6
+ this.httpCode = httpCode;
7
+ }
8
+ static fromError(error) {
9
+ return new ThrowableProcedureError(error.message, 500);
10
+ }
11
+ static fromUnknown(k) {
12
+ return new ThrowableProcedureError(`Unknown error: ${k}`, 500);
13
+ }
14
+ toProcedureError() {
15
+ return {
16
+ message: this.message,
17
+ code: this.httpCode,
18
+ };
19
+ }
20
+ }
21
+ export function procedureErrorFromUnknown(e) {
22
+ const err = e instanceof ThrowableProcedureError
23
+ ? e : e instanceof Error
24
+ ? ThrowableProcedureError.fromError(e)
25
+ : ThrowableProcedureError.fromUnknown(e);
26
+ return err.toProcedureError();
27
+ }
28
+ export class ThrowableChannelError {
29
+ message;
30
+ cause;
31
+ channel;
32
+ params;
33
+ constructor(message, channel, params, cause) {
34
+ this.message = message;
35
+ this.channel = channel;
36
+ this.params = params;
37
+ this.cause = cause;
38
+ }
39
+ static fromError(error, channel, params) {
40
+ return new ThrowableChannelError(error.message, channel, params, "server");
41
+ }
42
+ static fromUnknown(error, channel, params) {
43
+ return new ThrowableChannelError(`Unknown error: ${error}`, channel, params, "server");
44
+ }
45
+ toChannelError() {
46
+ return {
47
+ channel: this.channel,
48
+ params: this.params,
49
+ message: this.message,
50
+ fault: this.cause,
51
+ };
52
+ }
53
+ }
54
+ export function channelErrorFromUnknown(e, channel, params) {
55
+ const err = e instanceof ThrowableChannelError
56
+ ? e : e instanceof Error
57
+ ? ThrowableChannelError.fromError(e, channel, params)
58
+ : ThrowableChannelError.fromUnknown(e, channel, params);
59
+ return err.toChannelError();
60
+ }
61
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../errors.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,uBAAuB;IAClC,OAAO,CAAS;IAChB,QAAQ,CAAS;IAEjB,YAAY,OAAe,EAAE,QAAgB;QAC3C,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAY;QAC3B,OAAO,IAAI,uBAAuB,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,CAAU;QAC3B,OAAO,IAAI,uBAAuB,CAAC,kBAAkB,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,gBAAgB;QACd,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,QAAQ;SACpB,CAAA;IACH,CAAC;CACF;AAGD,MAAM,UAAU,yBAAyB,CAAC,CAAU;IAClD,MAAM,GAAG,GAAG,CAAC,YAAY,uBAAuB;QAC9C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK;QACxB,CAAC,CAAC,uBAAuB,CAAC,SAAS,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAE3C,OAAO,GAAG,CAAC,gBAAgB,EAAE,CAAC;AAChC,CAAC;AAGD,MAAM,OAAO,qBAAqB;IAChC,OAAO,CAAS;IAChB,KAAK,CAAmC;IACxC,OAAO,CAAS;IAChB,MAAM,CAAyB;IAE/B,YAAY,OAAe,EAAE,OAAe,EAAE,MAA8B,EAAE,KAAuC;QACnH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,KAAY,EAAE,OAAe,EAAE,MAA8B;QAC5E,OAAO,IAAI,qBAAqB,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,KAAc,EAAE,OAAe,EAAE,MAA8B;QAChF,OAAO,IAAI,qBAAqB,CAAC,kBAAkB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzF,CAAC;IAGD,cAAc;QACZ,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAA;IACH,CAAC;CACF;AAGD,MAAM,UAAU,uBAAuB,CAAC,CAAU,EAAE,OAAe,EAAE,MAA8B;IACjG,MAAM,GAAG,GAAG,CAAC,YAAY,qBAAqB;QAC5C,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK;QACxB,CAAC,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC;QACrD,CAAC,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAE1D,OAAO,GAAG,CAAC,cAAc,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { StandardSchemaV1 } from "@standard-schema/spec";
2
+ import type { MaybePromise } from "./utils";
3
+ import type { ProcedureInputs } from "./procedure";
4
+ export type ProcedureType = "mutation" | "query";
5
+ export interface ProcedureDeclaration<InputSchema extends StandardSchemaV1, OutputSchema extends StandardSchemaV1, T> {
6
+ input: InputSchema;
7
+ output: OutputSchema;
8
+ type: T;
9
+ }
10
+ export type ProcedureMap = {
11
+ [p: string]: ProcedureDeclaration<StandardSchemaV1, StandardSchemaV1, ProcedureType>;
12
+ };
13
+ export interface ChannelDeclaration<ClientMessageSchema extends StandardSchemaV1, ServerMessageSchema extends StandardSchemaV1, ConnectionRequestSchema extends StandardSchemaV1, ConnectionContextSchema extends StandardSchemaV1, Params extends string[]> {
14
+ clientMessage: ClientMessageSchema;
15
+ serverMessage: ServerMessageSchema;
16
+ connectionRequest: ConnectionRequestSchema;
17
+ connectionContext: ConnectionContextSchema;
18
+ params: Params;
19
+ }
20
+ export type ChannelMap = {
21
+ [channel: string]: ChannelDeclaration<StandardSchemaV1, StandardSchemaV1, StandardSchemaV1, StandardSchemaV1, string[]>;
22
+ };
23
+ export interface Covenant<P extends ProcedureMap, C extends ChannelMap> {
24
+ procedures: P;
25
+ channels: C;
26
+ }
27
+ export declare function declareCovenant<P extends ProcedureMap, C extends ChannelMap>(covenant: Covenant<P, C>): Covenant<P, C>;
28
+ export declare function mutation<Inputs extends StandardSchemaV1, Outputs extends StandardSchemaV1>({ input, output }: {
29
+ input: Inputs;
30
+ output: Outputs;
31
+ }): ProcedureDeclaration<Inputs, Outputs, "mutation">;
32
+ export declare function query<Inputs extends StandardSchemaV1, Outputs extends StandardSchemaV1>({ input, output }: {
33
+ input: Inputs;
34
+ output: Outputs;
35
+ }): ProcedureDeclaration<Inputs, Outputs, "query">;
36
+ export declare function channel<ClientMessageSchema extends StandardSchemaV1, ServerMessageSchema extends StandardSchemaV1, ConnectionRequestSchema extends StandardSchemaV1, ConnectionContextSchema extends StandardSchemaV1, Params extends string[]>(c: {
37
+ clientMessage: ClientMessageSchema;
38
+ serverMessage: ServerMessageSchema;
39
+ connectionRequest: ConnectionRequestSchema;
40
+ connectionContext: ConnectionContextSchema;
41
+ params: Params;
42
+ }): {
43
+ clientMessage: ClientMessageSchema;
44
+ serverMessage: ServerMessageSchema;
45
+ connectionRequest: ConnectionRequestSchema;
46
+ connectionContext: ConnectionContextSchema;
47
+ params: Params;
48
+ };
49
+ export type ContextGenerator<Context extends StandardSchemaV1> = (i: ProcedureInputs<unknown, undefined, undefined>) => MaybePromise<StandardSchemaV1.InferOutput<Context>>;
50
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,22 @@
1
+ export function declareCovenant(covenant) {
2
+ return covenant;
3
+ }
4
+ export function mutation({ input, output }) {
5
+ return {
6
+ type: "mutation",
7
+ input,
8
+ output,
9
+ };
10
+ }
11
+ export function query({ input, output }) {
12
+ return {
13
+ type: "query",
14
+ input,
15
+ output,
16
+ };
17
+ }
18
+ // helper function to get better autocomplete
19
+ export function channel(c) {
20
+ return c;
21
+ }
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAwDA,MAAM,UAAU,eAAe,CAG7B,QAAwB;IACxB,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,QAAQ,CAGtB,EAAE,KAAK,EAAE,MAAM,EAGhB;IACC,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,KAAK;QACL,MAAM;KACP,CAAA;AACH,CAAC;AAED,MAAM,UAAU,KAAK,CAGnB,EAAE,KAAK,EAAE,MAAM,EAGhB;IACC,OAAO;QACL,IAAI,EAAE,OAAO;QACb,KAAK;QACL,MAAM;KACP,CAAA;AACH,CAAC;AAGD,6CAA6C;AAC7C,MAAM,UAAU,OAAO,CAMrB,CAMD;IACC,OAAO,CAAC,CAAC;AACX,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { MaybePromise } from "./utils";
2
+ import type { ChannelConnectionPayload, ChannelConnectionRequest, ChannelConnectionResponse, ChannelError, ServerMessage, ServerMessageWithContext } from "./channel";
3
+ import type { ProcedureRequestBody, ProcedureResponse } from "./procedure";
4
+ import type { SidekickIncomingMessage, SidekickOutgoingMessage } from "./sidekick/protocol";
5
+ export interface ClientToServerConnection {
6
+ sendConnectionRequest(request: ChannelConnectionRequest): Promise<ChannelConnectionResponse>;
7
+ runProcedure(request: ProcedureRequestBody): Promise<ProcedureResponse>;
8
+ }
9
+ export interface ClientToSidekickConnection {
10
+ sendMessage(message: SidekickIncomingMessage): void;
11
+ onMessage(handler: (m: SidekickOutgoingMessage) => MaybePromise<void>): () => void;
12
+ }
13
+ export interface ServerToSidekickConnection {
14
+ addConnection(payload: ChannelConnectionPayload): Promise<Error | null>;
15
+ update(resources: string[]): Promise<Error | null>;
16
+ postMessage(message: ServerMessage): Promise<Error | null>;
17
+ }
18
+ export interface SidekickToServerConnection {
19
+ sendMessage(message: ServerMessageWithContext): Promise<ChannelError | null>;
20
+ }
21
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,wBAAwB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,YAAY,EAAE,aAAa,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACtK,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,KAAK,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAG5F,MAAM,WAAW,wBAAwB;IACvC,qBAAqB,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC7F,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;CACzE;AAGD,MAAM,WAAW,0BAA0B;IACzC,WAAW,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACpD,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,EAAE,uBAAuB,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,IAAI,CAAC;CACpF;AAGD,MAAM,WAAW,0BAA0B;IACzC,aAAa,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACxE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;IACnD,WAAW,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;CAC5D;AAGD,MAAM,WAAW,0BAA0B;IACzC,WAAW,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;CAC9E"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../interfaces.ts"],"names":[],"mappings":""}
@@ -0,0 +1,15 @@
1
+ export type LoggerLevel = "info" | "error" | "warn" | "slient" | "debug";
2
+ export type Prefix = string | (() => string);
3
+ export interface Logger {
4
+ prefixes: Prefix[];
5
+ level: LoggerLevel;
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
+ }
15
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../logger.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;AACzE,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;AAE7C,MAAM,WAAW,MAAM;IACrB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACnC,KAAK,IAAI,MAAM,CAAC;IAChB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,KAAK,CAAC;CAC5B"}
package/dist/logger.js ADDED
@@ -0,0 +1,4 @@
1
+ // Logger interface for type safety in core
2
+ // Implementation lives in @covenant-rpc/server
3
+ export {};
4
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../logger.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,+CAA+C"}
@@ -0,0 +1,69 @@
1
+ import type { StandardSchemaV1 } from "@standard-schema/spec";
2
+ import type { ProcedureDeclaration, ProcedureType } from ".";
3
+ import type { MaybePromise } from "./utils";
4
+ import { v } from "./validation";
5
+ import type { Logger } from "./logger";
6
+ export interface ProcedureRequest {
7
+ headers: Headers;
8
+ input: unknown;
9
+ url: string;
10
+ procedure: string;
11
+ path: string;
12
+ req: Request;
13
+ }
14
+ export interface ProcedureInputs<Inputs, Context, Derivation> {
15
+ inputs: Inputs;
16
+ ctx: Context;
17
+ derived: Derivation;
18
+ request: ProcedureRequest;
19
+ logger: Logger;
20
+ setHeader: (name: string, value: string) => void;
21
+ deleteHeader: (name: string) => void;
22
+ error: (message: string, code: number) => never;
23
+ }
24
+ export interface ResourceInputs<Inputs, Context, Outputs> {
25
+ inputs: Inputs;
26
+ logger: Logger;
27
+ ctx: Context;
28
+ outputs: Outputs;
29
+ }
30
+ export type ProcedureDefinition<T, Context, Derivation> = T extends ProcedureDeclaration<infer InputSchema, infer OutputSchema, ProcedureType> ? {
31
+ procedure: (i: ProcedureInputs<StandardSchemaV1.InferOutput<InputSchema>, Context, Derivation>) => MaybePromise<StandardSchemaV1.InferOutput<OutputSchema>>;
32
+ resources: (i: ResourceInputs<StandardSchemaV1.InferOutput<InputSchema>, Context, StandardSchemaV1.InferOutput<OutputSchema>>) => MaybePromise<string[]>;
33
+ } : never;
34
+ export declare const procedureErrorSchema: v.Validator<{
35
+ message: string;
36
+ code: number;
37
+ }>;
38
+ export type ProcedureError = v.Infer<typeof procedureErrorSchema>;
39
+ export declare const procedureResponseSchema: v.Validator<{
40
+ status: "OK";
41
+ data: unknown;
42
+ resources: string[];
43
+ } | {
44
+ status: "ERR";
45
+ error: {
46
+ message: string;
47
+ code: number;
48
+ };
49
+ }>;
50
+ export type ProcedureResponse = v.Infer<typeof procedureResponseSchema>;
51
+ export declare const procedureRequestBodySchema: v.Validator<{
52
+ procedure: string;
53
+ inputs: unknown;
54
+ }>;
55
+ export type ProcedureRequestBody = v.Infer<typeof procedureRequestBodySchema>;
56
+ export type InferProcedureInputs<P> = P extends ProcedureDeclaration<infer InputSchema, any, any> ? StandardSchemaV1.InferInput<InputSchema> : never;
57
+ export type InferProcedureOutputs<P> = P extends ProcedureDeclaration<any, infer OutputSchema, any> ? StandardSchemaV1.InferOutput<OutputSchema> : never;
58
+ export type InferProcedureResult<P> = {
59
+ success: true;
60
+ data: InferProcedureOutputs<P>;
61
+ resources: string[];
62
+ error: null;
63
+ } | {
64
+ success: false;
65
+ error: ProcedureError;
66
+ data: null;
67
+ resources: null;
68
+ };
69
+ //# sourceMappingURL=procedure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedure.d.ts","sourceRoot":"","sources":["../procedure.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import { v } from "./validation";
2
+ export const procedureErrorSchema = v.obj({
3
+ message: v.string(),
4
+ code: v.number(),
5
+ });
6
+ export const procedureResponseSchema = v.union(v.obj({
7
+ status: v.literal("OK"),
8
+ data: v.unknown(),
9
+ resources: v.array(v.string()),
10
+ }), v.obj({
11
+ status: v.literal("ERR"),
12
+ error: procedureErrorSchema,
13
+ }));
14
+ export const procedureRequestBodySchema = v.obj({
15
+ procedure: v.string(),
16
+ inputs: v.unknown(),
17
+ });
18
+ //# sourceMappingURL=procedure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"procedure.js","sourceRoot":"","sources":["../procedure.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AA+CjC,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,GAAG,CAAC;IACxC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC;AAKH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAC5C,CAAC,CAAC,GAAG,CAAC;IACJ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IACvB,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;IACjB,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAC/B,CAAC,EACF,CAAC,CAAC,GAAG,CAAC;IACJ,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IACxB,KAAK,EAAE,oBAAoB;CAC5B,CAAC,CACH,CAAC;AAIF,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,GAAG,CAAC;IAC9C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE;CACpB,CAAC,CAAC"}
@@ -0,0 +1,89 @@
1
+ import { v } from "../validation";
2
+ export declare const subscribeMessageSchema: v.Validator<{
3
+ type: "subscribe";
4
+ token: string;
5
+ }>;
6
+ export type SubscribeMessage = v.Infer<typeof subscribeMessageSchema>;
7
+ export declare const unsubscribeMessageSchema: v.Validator<{
8
+ type: "unsubscribe";
9
+ token: string;
10
+ }>;
11
+ export type UnsubscribeMessage = v.Infer<typeof unsubscribeMessageSchema>;
12
+ export declare const sendMessageSchema: v.Validator<{
13
+ type: "send";
14
+ token: string;
15
+ channel: string;
16
+ params: Record<string, string>;
17
+ data: unknown;
18
+ }>;
19
+ export type SendMessage = v.Infer<typeof sendMessageSchema>;
20
+ export declare const listenMessageSchema: v.Validator<{
21
+ type: "listen";
22
+ resources: string[];
23
+ }>;
24
+ export type ListenMessage = v.Infer<typeof listenMessageSchema>;
25
+ export declare const unlistenMessageSchema: v.Validator<{
26
+ type: "unlisten";
27
+ resources: string[];
28
+ }>;
29
+ export type UnlistenMessage = v.Infer<typeof unlistenMessageSchema>;
30
+ export declare const sidekickIncomingMessageSchema: v.Validator<{
31
+ type: "subscribe";
32
+ token: string;
33
+ } | {
34
+ type: "unsubscribe";
35
+ token: string;
36
+ } | {
37
+ type: "send";
38
+ token: string;
39
+ channel: string;
40
+ params: Record<string, string>;
41
+ data: unknown;
42
+ } | {
43
+ type: "listen";
44
+ resources: string[];
45
+ } | {
46
+ type: "unlisten";
47
+ resources: string[];
48
+ }>;
49
+ export type SidekickIncomingMessage = v.Infer<typeof sidekickIncomingMessageSchema>;
50
+ export declare const sidekickOutgoingMessageSchema: v.Validator<{
51
+ type: "error";
52
+ error: {
53
+ channel: string;
54
+ params: Record<string, string>;
55
+ fault: "server" | "client" | "sidekick";
56
+ message: string;
57
+ };
58
+ } | {
59
+ type: "message";
60
+ channel: string;
61
+ params: Record<string, string>;
62
+ data: unknown;
63
+ } | {
64
+ type: "updated";
65
+ resource: string;
66
+ } | {
67
+ type: "listening";
68
+ resources: string[];
69
+ } | {
70
+ type: "unlistening";
71
+ resources: string[];
72
+ } | {
73
+ type: "subscribed";
74
+ channel: string;
75
+ params: Record<string, string>;
76
+ } | {
77
+ type: "unsubscribed";
78
+ channel: string;
79
+ params: Record<string, string>;
80
+ } | {
81
+ type: "listening";
82
+ channel: string;
83
+ params: Record<string, string>;
84
+ }>;
85
+ export type SidekickOutgoingMessage = v.Infer<typeof sidekickOutgoingMessageSchema>;
86
+ export declare function getChannelTopicName(channel: string, params: Record<string, string>): string;
87
+ export declare function getResourceTopicName(resource: string): string;
88
+ export declare function getMapId(wsId: string, topic: string): string;
89
+ //# sourceMappingURL=protocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../sidekick/protocol.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,eAAe,CAAC;AAKlC,eAAO,MAAM,sBAAsB;;;EAGjC,CAAC;AACH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAEtE,eAAO,MAAM,wBAAwB;;;EAGnC,CAAC;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E,eAAO,MAAM,iBAAiB;;;;;;EAM5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,mBAAmB;;;EAG9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,qBAAqB;;;EAGhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;EAMzC,CAAC;AACF,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAGpF,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsCzC,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,6BAA6B,CAAC,CAAC;AAGpF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAGlF;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,UAEpD;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAEnD"}
@@ -0,0 +1,68 @@
1
+ import { channelErrorSchema } from "../channel";
2
+ import { v } from "../validation";
3
+ // tokens are given to the server and the sidekick at the same time
4
+ export const subscribeMessageSchema = v.obj({
5
+ type: v.literal("subscribe"),
6
+ token: v.string(),
7
+ });
8
+ export const unsubscribeMessageSchema = v.obj({
9
+ type: v.literal("unsubscribe"),
10
+ token: v.string(),
11
+ });
12
+ export const sendMessageSchema = v.obj({
13
+ type: v.literal("send"),
14
+ token: v.string(),
15
+ channel: v.string(),
16
+ params: v.record(v.string(), v.string()),
17
+ data: v.unknown(),
18
+ });
19
+ export const listenMessageSchema = v.obj({
20
+ type: v.literal("listen"),
21
+ resources: v.array(v.string()),
22
+ });
23
+ export const unlistenMessageSchema = v.obj({
24
+ type: v.literal("unlisten"),
25
+ resources: v.array(v.string()),
26
+ });
27
+ export const sidekickIncomingMessageSchema = v.union(subscribeMessageSchema, unsubscribeMessageSchema, sendMessageSchema, listenMessageSchema, unlistenMessageSchema);
28
+ export const sidekickOutgoingMessageSchema = v.union(v.obj({
29
+ type: v.literal("error"),
30
+ error: channelErrorSchema,
31
+ }), v.obj({
32
+ type: v.literal("message"),
33
+ channel: v.string(),
34
+ params: v.record(v.string(), v.string()),
35
+ data: v.unknown(),
36
+ }), v.obj({
37
+ type: v.literal("updated"),
38
+ resource: v.string(),
39
+ }), v.obj({
40
+ type: v.literal("listening"),
41
+ resources: v.array(v.string()),
42
+ }), v.obj({
43
+ type: v.literal("unlistening"),
44
+ resources: v.array(v.string()),
45
+ }), v.obj({
46
+ type: v.literal("subscribed"),
47
+ channel: v.string(),
48
+ params: v.record(v.string(), v.string()),
49
+ }), v.obj({
50
+ type: v.literal("unsubscribed"),
51
+ channel: v.string(),
52
+ params: v.record(v.string(), v.string()),
53
+ }), v.obj({
54
+ type: v.literal("listening"),
55
+ channel: v.string(),
56
+ params: v.record(v.string(), v.string()),
57
+ }));
58
+ export function getChannelTopicName(channel, params) {
59
+ const map = Object.keys(params).map(k => `${k}:${params[k]}`).join(",");
60
+ return `channel:${channel}/${map}`;
61
+ }
62
+ export function getResourceTopicName(resource) {
63
+ return `resource:${resource}`;
64
+ }
65
+ export function getMapId(wsId, topic) {
66
+ return `${wsId}@${topic}`;
67
+ }
68
+ //# sourceMappingURL=protocol.js.map