@atcute/xrpc-server 0.1.2 → 0.1.3

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 (43) hide show
  1. package/dist/auth/jwt.d.ts +10 -15
  2. package/dist/auth/jwt.d.ts.map +1 -1
  3. package/dist/auth/jwt.js.map +1 -1
  4. package/dist/main/index.d.ts +1 -0
  5. package/dist/main/index.d.ts.map +1 -1
  6. package/dist/main/index.js +1 -0
  7. package/dist/main/index.js.map +1 -1
  8. package/dist/main/router.d.ts +12 -3
  9. package/dist/main/router.d.ts.map +1 -1
  10. package/dist/main/router.js +87 -7
  11. package/dist/main/router.js.map +1 -1
  12. package/dist/main/types/operation.d.ts +16 -1
  13. package/dist/main/types/operation.d.ts.map +1 -1
  14. package/dist/main/types/websocket.d.ts +10 -0
  15. package/dist/main/types/websocket.d.ts.map +1 -0
  16. package/dist/main/types/websocket.js +2 -0
  17. package/dist/main/types/websocket.js.map +1 -0
  18. package/dist/main/utils/event-emitter.d.ts +37 -0
  19. package/dist/main/utils/event-emitter.d.ts.map +1 -0
  20. package/dist/main/utils/event-emitter.js +96 -0
  21. package/dist/main/utils/event-emitter.js.map +1 -0
  22. package/dist/main/utils/frames.d.ts +5 -0
  23. package/dist/main/utils/frames.d.ts.map +1 -0
  24. package/dist/main/utils/frames.js +45 -0
  25. package/dist/main/utils/frames.js.map +1 -0
  26. package/dist/main/utils/websocket-mock.d.ts +24 -0
  27. package/dist/main/utils/websocket-mock.d.ts.map +1 -0
  28. package/dist/main/utils/websocket-mock.js +71 -0
  29. package/dist/main/utils/websocket-mock.js.map +1 -0
  30. package/dist/main/xrpc-error.d.ts +11 -0
  31. package/dist/main/xrpc-error.d.ts.map +1 -1
  32. package/dist/main/xrpc-error.js +11 -0
  33. package/dist/main/xrpc-error.js.map +1 -1
  34. package/lib/auth/jwt.ts +16 -5
  35. package/lib/main/index.ts +2 -0
  36. package/lib/main/router.ts +131 -10
  37. package/lib/main/types/operation.ts +33 -0
  38. package/lib/main/types/websocket.ts +14 -0
  39. package/lib/main/utils/event-emitter.ts +116 -0
  40. package/lib/main/utils/frames.ts +71 -0
  41. package/lib/main/utils/websocket-mock.ts +111 -0
  42. package/lib/main/xrpc-error.ts +20 -0
  43. package/package.json +6 -4
@@ -1,21 +1,17 @@
1
- import * as v from '@badrap/valita';
1
+ import type { Did, Nsid } from '@atcute/lexicons';
2
2
  import type { Result } from '../types/misc.js';
3
3
  import type { AuthError } from './types.js';
4
- declare const jwtHeader: v.ObjectType<{
5
- typ: v.Optional<string>;
6
- alg: v.Type<string>;
7
- }, undefined>;
8
- export interface JwtHeader extends v.Infer<typeof jwtHeader> {
4
+ export interface JwtHeader {
5
+ typ?: string;
6
+ alg: string;
9
7
  }
10
- declare const jwtPayload: v.Type<{
11
- iss: `did:${string}:${string}`;
12
- aud: `did:${string}:${string}`;
8
+ export interface JwtPayload {
9
+ iss: Did;
10
+ aud: Did;
13
11
  exp: number;
14
- iat?: number | undefined;
15
- lxm?: `${string}.${string}.${string}` | undefined;
16
- jti?: string | undefined;
17
- }>;
18
- export interface JwtPayload extends v.Infer<typeof jwtPayload> {
12
+ iat?: number;
13
+ lxm?: Nsid;
14
+ jti?: string;
19
15
  }
20
16
  export interface ParsedJwt {
21
17
  header: JwtHeader;
@@ -24,5 +20,4 @@ export interface ParsedJwt {
24
20
  signature: Uint8Array<ArrayBuffer>;
25
21
  }
26
22
  export declare const parseJwt: (jwtString: string) => Result<ParsedJwt, AuthError>;
27
- export {};
28
23
  //# sourceMappingURL=jwt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../lib/auth/jwt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAC;AAMpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAO5C,QAAA,MAAM,SAAS;;;aAGb,CAAC;AAEH,MAAM,WAAW,SAAU,SAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,SAAS,CAAC;CAAG;AAE/D,QAAA,MAAM,UAAU;;;;;;;EAkBb,CAAC;AAEJ,MAAM,WAAW,UAAW,SAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,UAAU,CAAC;CAAG;AAEjE,MAAM,WAAW,SAAS;IACzB,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IACjC,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CACnC;AAoCD,eAAO,MAAM,QAAQ,GAAI,WAAW,MAAM,KAAG,MAAM,CAAC,SAAS,EAAE,SAAS,CAsCvE,CAAC"}
1
+ {"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../lib/auth/jwt.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAKlD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAO5C,MAAM,WAAW,SAAS;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACZ;AAOD,MAAM,WAAW,UAAU;IAC1B,GAAG,EAAE,GAAG,CAAC;IACT,GAAG,EAAE,GAAG,CAAC;IACT,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,IAAI,CAAC;IACX,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAsBD,MAAM,WAAW,SAAS;IACzB,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,UAAU,CAAC;IACpB,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IACjC,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;CACnC;AAoCD,eAAO,MAAM,QAAQ,GAAI,WAAW,MAAM,KAAG,MAAM,CAAC,SAAS,EAAE,SAAS,CAsCvE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../lib/auth/jwt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"jwt.js","sourceRoot":"","sources":["../../lib/auth/jwt.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export * from './response.js';
2
2
  export * from './router.js';
3
3
  export * from './xrpc-error.js';
4
+ export * from './types/websocket.js';
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/main/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../lib/main/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAEhC,cAAc,sBAAsB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export * from './response.js';
2
2
  export * from './router.js';
3
3
  export * from './xrpc-error.js';
4
+ export * from './types/websocket.js';
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/main/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../lib/main/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAEhC,cAAc,sBAAsB,CAAC"}
@@ -1,22 +1,31 @@
1
- import { type XRPCProcedureMetadata, type XRPCQueryMetadata } from '@atcute/lexicons/validations';
1
+ import { type XRPCProcedureMetadata, type XRPCQueryMetadata, type XRPCSubscriptionMetadata } from '@atcute/lexicons/validations';
2
2
  import type { Promisable } from '../types/misc.js';
3
- import type { ProcedureConfig, QueryConfig } from './types/operation.js';
3
+ import type { ProcedureConfig, QueryConfig, SubscriptionConfig } from './types/operation.js';
4
+ import type { WebSocketAdapter } from './types/websocket.js';
4
5
  import { type Middleware } from './utils/middlewares.js';
5
6
  export type FetchMiddleware = Middleware<[request: Request], Promise<Response>>;
6
7
  export type NotFoundHandler = (request: Request) => Promisable<Response>;
7
8
  export type ExceptionHandler = (error: unknown, request: Request) => Promisable<Response>;
9
+ export type SubscriptionExceptionHandler = (error: unknown, request: Request) => void;
8
10
  export declare const defaultExceptionHandler: ExceptionHandler;
9
11
  export declare const defaultNotFoundHandler: NotFoundHandler;
12
+ export declare const defaultSubscriptionExceptionHandler: SubscriptionExceptionHandler;
10
13
  export interface XRPCRouterOptions {
11
14
  middlewares?: FetchMiddleware[];
12
15
  handleNotFound?: NotFoundHandler;
13
16
  handleException?: ExceptionHandler;
17
+ handleSubscriptionException?: SubscriptionExceptionHandler;
18
+ websocket?: WebSocketAdapter;
14
19
  }
15
20
  export declare class XRPCRouter {
16
21
  #private;
17
22
  fetch: (request: Request) => Promise<Response>;
18
- constructor({ middlewares, handleException, handleNotFound, }?: XRPCRouterOptions);
23
+ constructor({ middlewares, handleException, handleNotFound, handleSubscriptionException, websocket, }?: XRPCRouterOptions);
24
+ /** @deprecated use `addQuery` and `addProcedure` instead */
19
25
  add<TQuery extends XRPCQueryMetadata>(query: TQuery, config: QueryConfig<TQuery>): void;
20
26
  add<TProcedure extends XRPCProcedureMetadata>(procedure: TProcedure, config: ProcedureConfig<TProcedure>): void;
27
+ addQuery<TQuery extends XRPCQueryMetadata, TConfig extends QueryConfig<TQuery>>(query: TQuery, config: TConfig): void;
28
+ addProcedure<TProcedure extends XRPCProcedureMetadata, TConfig extends ProcedureConfig<TProcedure>>(procedure: TProcedure, config: TConfig): void;
29
+ addSubscription<TSubscription extends XRPCSubscriptionMetadata, TConfig extends SubscriptionConfig<TSubscription>>(subscription: TSubscription, config: TConfig): void;
21
30
  }
22
31
  //# sourceMappingURL=router.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../lib/main/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,qBAAqB,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAE7G,OAAO,KAAK,EAAW,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAA2B,MAAM,sBAAsB,CAAC;AAClG,OAAO,EAA+B,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAmBtF,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEhF,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;AACzE,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;AAE1F,eAAO,MAAM,uBAAuB,EAAE,gBAarC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,eAEpC,CAAC;AAEF,MAAM,WAAW,iBAAiB;IACjC,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,eAAe,CAAC,EAAE,gBAAgB,CAAC;CACnC;AAED,qBAAa,UAAU;;IAKtB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAEnC,EACX,WAAgB,EAChB,eAAyC,EACzC,cAAuC,GACvC,GAAE,iBAAsB;IA0CzB,GAAG,CAAC,MAAM,SAAS,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI;IACvF,GAAG,CAAC,UAAU,SAAS,qBAAqB,EAC3C,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,eAAe,CAAC,UAAU,CAAC,GACjC,IAAI;CA+HP"}
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../lib/main/router.ts"],"names":[],"mappings":"AAAA,OAAO,EAEN,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAW,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,KAAK,EACX,eAAe,EACf,WAAW,EACX,kBAAkB,EAGlB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAA+B,KAAK,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAkBtF,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;AAEhF,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;AACzE,MAAM,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC1F,MAAM,MAAM,4BAA4B,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;AAEtF,eAAO,MAAM,uBAAuB,EAAE,gBAarC,CAAC;AAEF,eAAO,MAAM,sBAAsB,EAAE,eAEpC,CAAC;AAEF,eAAO,MAAM,mCAAmC,EAAE,4BAEjD,CAAC;AAEF,MAAM,WAAW,iBAAiB;IACjC,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;IAChC,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,2BAA2B,CAAC,EAAE,4BAA4B,CAAC;IAC3D,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAC7B;AAED,qBAAa,UAAU;;IAOtB,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAEnC,EACX,WAAgB,EAChB,eAAyC,EACzC,cAAuC,EACvC,2BAAiE,EACjE,SAAS,GACT,GAAE,iBAAsB;IA4CzB,4DAA4D;IAC5D,GAAG,CAAC,MAAM,SAAS,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,IAAI;IACvF,GAAG,CAAC,UAAU,SAAS,qBAAqB,EAC3C,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,eAAe,CAAC,UAAU,CAAC,GACjC,IAAI;IAYP,QAAQ,CAAC,MAAM,SAAS,iBAAiB,EAAE,OAAO,SAAS,WAAW,CAAC,MAAM,CAAC,EAC7E,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,OAAO,GACb,IAAI;IAqCP,YAAY,CAAC,UAAU,SAAS,qBAAqB,EAAE,OAAO,SAAS,eAAe,CAAC,UAAU,CAAC,EACjG,SAAS,EAAE,UAAU,EACrB,MAAM,EAAE,OAAO,GACb,IAAI;IA4EP,eAAe,CACd,aAAa,SAAS,wBAAwB,EAC9C,OAAO,SAAS,kBAAkB,CAAC,aAAa,CAAC,EAChD,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;CAwFrD"}
@@ -1,9 +1,10 @@
1
- import { safeParse } from '@atcute/lexicons/validations';
1
+ import { safeParse, } from '@atcute/lexicons/validations';
2
+ import { encodeErrorFrame, encodeMessageFrame, extractMessageType, omitMessageType } from './utils/frames.js';
2
3
  import { createAsyncMiddlewareRunner } from './utils/middlewares.js';
3
4
  import { constructMimeValidator } from './utils/request-input.js';
4
5
  import { constructParamsHandler } from './utils/request-params.js';
5
6
  import { invalidRequest, validationError } from './utils/response.js';
6
- import { XRPCError } from './xrpc-error.js';
7
+ import { XRPCError, XRPCSubscriptionError } from './xrpc-error.js';
7
8
  export const defaultExceptionHandler = (error) => {
8
9
  if (error instanceof XRPCError) {
9
10
  return error.toResponse();
@@ -16,16 +17,23 @@ export const defaultExceptionHandler = (error) => {
16
17
  export const defaultNotFoundHandler = () => {
17
18
  return new Response('Not Found', { status: 404 });
18
19
  };
20
+ export const defaultSubscriptionExceptionHandler = (error) => {
21
+ throw error;
22
+ };
19
23
  export class XRPCRouter {
20
24
  #handlers = {};
21
25
  #handleNotFound;
22
26
  #handleException;
27
+ #handleSubscriptionException;
28
+ #websocket;
23
29
  fetch;
24
- constructor({ middlewares = [], handleException = defaultExceptionHandler, handleNotFound = defaultNotFoundHandler, } = {}) {
30
+ constructor({ middlewares = [], handleException = defaultExceptionHandler, handleNotFound = defaultNotFoundHandler, handleSubscriptionException = defaultSubscriptionExceptionHandler, websocket, } = {}) {
25
31
  const runner = createAsyncMiddlewareRunner([...middlewares, (request) => this.#dispatch(request)]);
26
32
  this.fetch = (request) => runner(request);
27
33
  this.#handleException = handleException;
28
34
  this.#handleNotFound = handleNotFound;
35
+ this.#handleSubscriptionException = handleSubscriptionException;
36
+ this.#websocket = websocket;
29
37
  }
30
38
  async #dispatch(request) {
31
39
  const url = new URL(request.url);
@@ -55,14 +63,14 @@ export class XRPCRouter {
55
63
  add(operation, config) {
56
64
  switch (operation.type) {
57
65
  case 'xrpc_query': {
58
- return this.#addQuery(operation, config);
66
+ return this.addQuery(operation, config);
59
67
  }
60
68
  case 'xrpc_procedure': {
61
- return this.#addProcedure(operation, config);
69
+ return this.addProcedure(operation, config);
62
70
  }
63
71
  }
64
72
  }
65
- #addQuery(query, config) {
73
+ addQuery(query, config) {
66
74
  const handleParams = query.params ? constructParamsHandler(query.params) : null;
67
75
  const handler = config.handler;
68
76
  this.#handlers[query.nsid] = {
@@ -91,7 +99,7 @@ export class XRPCRouter {
91
99
  },
92
100
  };
93
101
  }
94
- #addProcedure(procedure, config) {
102
+ addProcedure(procedure, config) {
95
103
  const handleParams = procedure.params ? constructParamsHandler(procedure.params) : null;
96
104
  const validateInputType = procedure.input ? constructMimeValidator(procedure.input) : null;
97
105
  const requiresInput = procedure.input !== null;
@@ -155,5 +163,77 @@ export class XRPCRouter {
155
163
  },
156
164
  };
157
165
  }
166
+ addSubscription(subscription, config) {
167
+ const websocket = this.#websocket;
168
+ if (websocket === undefined) {
169
+ throw new Error(`WebSocket adapter not configured`);
170
+ }
171
+ const nsid = subscription.nsid;
172
+ const handleParams = subscription.params ? constructParamsHandler(subscription.params) : null;
173
+ const handler = config.handler;
174
+ this.#handlers[nsid] = {
175
+ method: 'GET',
176
+ handler: async ({ request, url }) => {
177
+ {
178
+ const con = request.headers.get('connection');
179
+ const req = request.headers.get('upgrade');
180
+ if (con === null ||
181
+ req === null ||
182
+ con.toLowerCase() !== 'upgrade' ||
183
+ req.toLowerCase() !== 'websocket') {
184
+ return invalidRequest(`invalid WebSocket upgrade`);
185
+ }
186
+ }
187
+ let params;
188
+ if (handleParams !== null) {
189
+ const result = handleParams(url.searchParams);
190
+ if (!result.ok) {
191
+ return validationError('params', result);
192
+ }
193
+ params = result.value;
194
+ }
195
+ else {
196
+ params = {};
197
+ }
198
+ const upgrade = await websocket.upgrade(request, async (ws) => {
199
+ const signal = ws.signal;
200
+ const context = {
201
+ request: request,
202
+ params: params,
203
+ signal: signal,
204
+ };
205
+ try {
206
+ for await (const message of handler(context)) {
207
+ if (signal.aborted) {
208
+ break;
209
+ }
210
+ const type = extractMessageType(message, nsid);
211
+ const body = omitMessageType(message);
212
+ const frame = encodeMessageFrame(body, type);
213
+ await ws.send(frame);
214
+ }
215
+ ws.close(1000);
216
+ }
217
+ catch (err) {
218
+ if (err instanceof XRPCSubscriptionError) {
219
+ const frame = encodeErrorFrame(err.error, err.description);
220
+ try {
221
+ await ws.send(frame);
222
+ }
223
+ catch { }
224
+ ws.close(err.closeCode, err.error);
225
+ return;
226
+ }
227
+ ws.close(1011, `internal server error`);
228
+ this.#handleSubscriptionException(err, request);
229
+ }
230
+ });
231
+ if (upgrade !== undefined) {
232
+ return upgrade;
233
+ }
234
+ return invalidRequest(`WebSocket upgrade failed`);
235
+ },
236
+ };
237
+ }
158
238
  }
159
239
  //# sourceMappingURL=router.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../lib/main/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../lib/main/router.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { InferOutput, ObjectSchema, XRPCBlobBodyParam, XRPCLexBodyParam, XRPCProcedureMetadata, XRPCQueryMetadata } from '@atcute/lexicons/validations';
1
+ import type { InferOutput, ObjectSchema, VariantSchema, XRPCBlobBodyParam, XRPCLexBodyParam, XRPCProcedureMetadata, XRPCQueryMetadata, XRPCSubscriptionMetadata } from '@atcute/lexicons/validations';
2
2
  import type { Literal, Promisable } from '../../types/misc.js';
3
3
  import type { JSONResponse } from '../response.js';
4
4
  export type UnknownOperationContext = {
@@ -34,4 +34,19 @@ export type ProcedureHandler<TProcedure extends XRPCProcedureMetadata> = (contex
34
34
  export type ProcedureConfig<TProcedure extends XRPCProcedureMetadata = XRPCProcedureMetadata> = {
35
35
  handler: ProcedureHandler<TProcedure>;
36
36
  };
37
+ export interface UnknownSubscriptionContext {
38
+ request: Request;
39
+ signal: AbortSignal;
40
+ params: Record<string, Literal | Literal[]>;
41
+ }
42
+ export type SubscriptionContext<TSubscription extends XRPCSubscriptionMetadata> = {
43
+ request: Request;
44
+ signal: AbortSignal;
45
+ } & (TSubscription['params'] extends ObjectSchema ? {
46
+ params: InferOutput<TSubscription['params']>;
47
+ } : {});
48
+ export type SubscriptionHandler<TSubscription extends XRPCSubscriptionMetadata> = (context: SubscriptionContext<TSubscription>) => AsyncIterable<TSubscription['message'] extends ObjectSchema | VariantSchema<any> ? InferOutput<TSubscription['message']> : never>;
49
+ export type SubscriptionConfig<TSubscription extends XRPCSubscriptionMetadata = XRPCSubscriptionMetadata> = {
50
+ handler: SubscriptionHandler<TSubscription>;
51
+ };
37
52
  //# sourceMappingURL=operation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../lib/main/types/operation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../../lib/main/types/operation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { Promisable } from '../../types/misc.js';
2
+ export interface WebSocketConnection {
3
+ signal: AbortSignal;
4
+ send(data: Uint8Array): void | Promise<void>;
5
+ close(code?: number, reason?: string): void;
6
+ }
7
+ export interface WebSocketAdapter {
8
+ upgrade(request: Request, handler: (ws: WebSocketConnection) => Promisable<void>): Promisable<Response | undefined>;
9
+ }
10
+ //# sourceMappingURL=websocket.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../lib/main/types/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,WAAW,mBAAmB;IACnC,MAAM,EAAE,WAAW,CAAC;IACpB,IAAI,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,gBAAgB;IAChC,OAAO,CACN,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,CAAC,EAAE,EAAE,mBAAmB,KAAK,UAAU,CAAC,IAAI,CAAC,GACpD,UAAU,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;CACpC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=websocket.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../lib/main/types/websocket.ts"],"names":[],"mappings":""}
@@ -0,0 +1,37 @@
1
+ /** Converts a tuple into a listener function */
2
+ export type ListenerFor<T extends any[]> = (...args: T) => void;
3
+ /** Generic record of the event name and its argument tuple */
4
+ export type EventMap = {
5
+ [key: string | symbol]: any[];
6
+ };
7
+ /** Event emitter */
8
+ export declare class EventEmitter<Events extends EventMap> {
9
+ #private;
10
+ /**
11
+ * Appends a listener for the specified event name
12
+ * @param name Name of the event
13
+ * @param listener Callback that should be invoked when an event is dispatched
14
+ * @returns Cleanup function that can be called to remove it
15
+ */
16
+ on<E extends keyof Events>(name: E, listener: ListenerFor<Events[E]>): () => void;
17
+ /**
18
+ * Remove listener from the specified event name
19
+ * @param name Name of the event
20
+ * @param listener Callback to remove
21
+ */
22
+ off<E extends keyof Events>(name: E, listener: ListenerFor<Events[E]>): void;
23
+ /**
24
+ * Emit an event with the specified name and its payload
25
+ * @param name Name of the event
26
+ * @param args Payload for the event
27
+ * @returns Whether a listener has been called
28
+ */
29
+ emit<E extends keyof Events>(name: E, ...args: Events[E]): boolean;
30
+ /**
31
+ * Determines if there is a listener on a specified event name
32
+ * @param name Name of the event
33
+ * @returns Whether there is a listener registered
34
+ */
35
+ has(name: keyof Events): boolean;
36
+ }
37
+ //# sourceMappingURL=event-emitter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../../../lib/main/utils/event-emitter.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,GAAG,EAAE,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;AAEhE,8DAA8D;AAC9D,MAAM,MAAM,QAAQ,GAAG;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,EAAE,CAAC;CAC9B,CAAC;AAIF,oBAAoB;AACpB,qBAAa,YAAY,CAAC,MAAM,SAAS,QAAQ;;IAGhD;;;;;OAKG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI;IAsBjF;;;;OAIG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI;IA6B5E;;;;;OAKG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,OAAO;IAwBlE;;;;OAIG;IACH,GAAG,CAAC,IAAI,EAAE,MAAM,MAAM,GAAG,OAAO;CAIhC"}
@@ -0,0 +1,96 @@
1
+ /** Event emitter */
2
+ export class EventEmitter {
3
+ #events;
4
+ /**
5
+ * Appends a listener for the specified event name
6
+ * @param name Name of the event
7
+ * @param listener Callback that should be invoked when an event is dispatched
8
+ * @returns Cleanup function that can be called to remove it
9
+ */
10
+ on(name, listener) {
11
+ let events = this.#events;
12
+ let existing;
13
+ if (events === undefined) {
14
+ events = this.#events = Object.create(null);
15
+ }
16
+ else {
17
+ existing = events[name];
18
+ }
19
+ if (existing === undefined) {
20
+ events[name] = listener;
21
+ }
22
+ else if (typeof existing === 'function') {
23
+ events[name] = [existing, listener];
24
+ }
25
+ else {
26
+ events[name] = existing.concat(listener);
27
+ }
28
+ // @ts-expect-error: complains about `listener`
29
+ return this.off.bind(this, name, listener);
30
+ }
31
+ /**
32
+ * Remove listener from the specified event name
33
+ * @param name Name of the event
34
+ * @param listener Callback to remove
35
+ */
36
+ off(name, listener) {
37
+ const events = this.#events;
38
+ if (events === undefined) {
39
+ return;
40
+ }
41
+ const list = events[name];
42
+ if (list == undefined) {
43
+ return;
44
+ }
45
+ if (list === listener) {
46
+ delete events[name];
47
+ }
48
+ else if (typeof list !== 'function') {
49
+ const index = list.indexOf(listener);
50
+ if (index !== -1) {
51
+ if (list.length === 2) {
52
+ // ^ flips the bit, it's either 0 or 1 here.
53
+ events[name] = list[index ^ 1];
54
+ }
55
+ else {
56
+ events[name] = list.toSpliced(index, 1);
57
+ }
58
+ }
59
+ }
60
+ }
61
+ /**
62
+ * Emit an event with the specified name and its payload
63
+ * @param name Name of the event
64
+ * @param args Payload for the event
65
+ * @returns Whether a listener has been called
66
+ */
67
+ emit(name, ...args) {
68
+ const events = this.#events;
69
+ if (events === undefined) {
70
+ return false;
71
+ }
72
+ const handler = events[name];
73
+ if (handler === undefined) {
74
+ return false;
75
+ }
76
+ if (typeof handler === 'function') {
77
+ handler.apply(this, args);
78
+ }
79
+ else {
80
+ for (let idx = 0, len = handler.length; idx < len; idx++) {
81
+ handler[idx].apply(this, args);
82
+ }
83
+ }
84
+ return true;
85
+ }
86
+ /**
87
+ * Determines if there is a listener on a specified event name
88
+ * @param name Name of the event
89
+ * @returns Whether there is a listener registered
90
+ */
91
+ has(name) {
92
+ const events = this.#events;
93
+ return events !== undefined && name in events;
94
+ }
95
+ }
96
+ //# sourceMappingURL=event-emitter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../../../lib/main/utils/event-emitter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare const encodeMessageFrame: (body: unknown, type?: string) => Uint8Array;
2
+ export declare const encodeErrorFrame: (error: string, message?: string) => Uint8Array;
3
+ export declare const extractMessageType: (message: unknown, nsid: string) => string | undefined;
4
+ export declare const omitMessageType: (message: unknown) => unknown;
5
+ //# sourceMappingURL=frames.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frames.d.ts","sourceRoot":"","sources":["../../../lib/main/utils/frames.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,kBAAkB,GAAI,MAAM,OAAO,EAAE,OAAO,MAAM,KAAG,UAOjE,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,UAWlE,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,SAAS,OAAO,EAAE,MAAM,MAAM,KAAG,MAAM,GAAG,SAoB5E,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,SAAS,OAAO,KAAG,OASlD,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { encode } from '@atcute/cbor';
2
+ import { concat } from '@atcute/uint8array';
3
+ export const encodeMessageFrame = (body, type) => {
4
+ const header = {
5
+ op: 1,
6
+ t: type,
7
+ };
8
+ return concat([encode(header), encode(body)]);
9
+ };
10
+ export const encodeErrorFrame = (error, message) => {
11
+ const header = {
12
+ op: -1,
13
+ };
14
+ const body = {
15
+ error: error,
16
+ message: message,
17
+ };
18
+ return concat([encode(header), encode(body)]);
19
+ };
20
+ export const extractMessageType = (message, nsid) => {
21
+ if (typeof message !== 'object' || message === null) {
22
+ return undefined;
23
+ }
24
+ const obj = message;
25
+ const type = obj.$type;
26
+ if (typeof type !== 'string') {
27
+ return undefined;
28
+ }
29
+ // If type starts with the subscription NSID, make it relative
30
+ // e.g., "com.atproto.sync.subscribeRepos#commit" → "#commit"
31
+ if (type.startsWith(nsid + '#')) {
32
+ return type.slice(nsid.length);
33
+ }
34
+ // Otherwise return the full type
35
+ return type;
36
+ };
37
+ export const omitMessageType = (message) => {
38
+ if (typeof message !== 'object' || message === null) {
39
+ return message;
40
+ }
41
+ const obj = message;
42
+ const { $type, ...rest } = obj;
43
+ return rest;
44
+ };
45
+ //# sourceMappingURL=frames.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"frames.js","sourceRoot":"","sources":["../../../lib/main/utils/frames.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAgB5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAa,EAAE,IAAa,EAAc,EAAE;IAC9E,MAAM,MAAM,GAAuB;QAClC,EAAE,EAAE,CAAC;QACL,CAAC,EAAE,IAAI;KACP,CAAC;IAEF,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAE,OAAgB,EAAc,EAAE;IAC/E,MAAM,MAAM,GAAqB;QAChC,EAAE,EAAE,CAAC,CAAC;KACN,CAAC;IAEF,MAAM,IAAI,GAAmB;QAC5B,KAAK,EAAE,KAAK;QACZ,OAAO,EAAE,OAAO;KAChB,CAAC;IAEF,OAAO,MAAM,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,OAAgB,EAAE,IAAY,EAAsB,EAAE;IACxF,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrD,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,GAAG,GAAG,OAAkC,CAAC;IAC/C,MAAM,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;IAEvB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,8DAA8D;IAC9D,6DAA6D;IAC7D,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,iCAAiC;IACjC,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,OAAgB,EAAW,EAAE;IAC5D,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrD,OAAO,OAAO,CAAC;IAChB,CAAC;IAED,MAAM,GAAG,GAAG,OAAkC,CAAC;IAC/C,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;IAE/B,OAAO,IAAI,CAAC;AACb,CAAC,CAAC"}
@@ -0,0 +1,24 @@
1
+ import type { Promisable } from '../../types/misc.js';
2
+ import type { XRPCRouter } from '../router.js';
3
+ import type { WebSocketAdapter, WebSocketConnection } from '../types/websocket.js';
4
+ import { EventEmitter } from './event-emitter.js';
5
+ export interface SubscriptionClient extends Disposable {
6
+ events: EventEmitter<{
7
+ message: [data: Uint8Array];
8
+ close: [event: {
9
+ code: number;
10
+ reason: string;
11
+ wasClean: boolean;
12
+ }];
13
+ }>;
14
+ dispose(): void;
15
+ }
16
+ export interface SubscriptionMock {
17
+ subscribe(url: string): Promise<SubscriptionClient>;
18
+ }
19
+ export declare class MockWebSocketAdapter implements WebSocketAdapter {
20
+ #private;
21
+ upgrade(_request: Request, handler: (ws: WebSocketConnection) => Promisable<void>): Promisable<Response | undefined>;
22
+ attach(router: XRPCRouter): SubscriptionMock;
23
+ }
24
+ //# sourceMappingURL=websocket-mock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"websocket-mock.d.ts","sourceRoot":"","sources":["../../../lib/main/utils/websocket-mock.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAMlD,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACrD,MAAM,EAAE,YAAY,CAAC;QACpB,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAC5B,KAAK,EAAE,CAAC,KAAK,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;KACpE,CAAC,CAAC;IACH,OAAO,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAChC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACpD;AAED,qBAAa,oBAAqB,YAAW,gBAAgB;;IAG5D,OAAO,CACN,QAAQ,EAAE,OAAO,EACjB,OAAO,EAAE,CAAC,EAAE,EAAE,mBAAmB,KAAK,UAAU,CAAC,IAAI,CAAC,GACpD,UAAU,CAAC,QAAQ,GAAG,SAAS,CAAC;IAWnC,MAAM,CAAC,MAAM,EAAE,UAAU,GAAG,gBAAgB;CAsE5C"}