@atcute/xrpc-server 0.1.11 → 1.0.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 (63) hide show
  1. package/README.md +81 -20
  2. package/dist/auth/jwt-creator.d.ts +4 -2
  3. package/dist/auth/jwt-creator.d.ts.map +1 -1
  4. package/dist/auth/jwt-creator.js +1 -1
  5. package/dist/auth/jwt-creator.js.map +1 -1
  6. package/dist/auth/jwt-verifier.d.ts +69 -8
  7. package/dist/auth/jwt-verifier.d.ts.map +1 -1
  8. package/dist/auth/jwt-verifier.js +131 -20
  9. package/dist/auth/jwt-verifier.js.map +1 -1
  10. package/dist/auth/jwt.d.ts +7 -2
  11. package/dist/auth/jwt.d.ts.map +1 -1
  12. package/dist/auth/jwt.js +14 -7
  13. package/dist/auth/jwt.js.map +1 -1
  14. package/dist/main/response.js.map +1 -1
  15. package/dist/main/router.d.ts +32 -4
  16. package/dist/main/router.d.ts.map +1 -1
  17. package/dist/main/router.js +66 -11
  18. package/dist/main/router.js.map +1 -1
  19. package/dist/main/types/operation.d.ts +8 -0
  20. package/dist/main/types/operation.d.ts.map +1 -1
  21. package/dist/main/types/websocket.d.ts +8 -0
  22. package/dist/main/types/websocket.d.ts.map +1 -1
  23. package/dist/main/utils/frames.d.ts +2 -2
  24. package/dist/main/utils/frames.d.ts.map +1 -1
  25. package/dist/main/utils/frames.js.map +1 -1
  26. package/dist/main/utils/middlewares.d.ts.map +1 -1
  27. package/dist/main/utils/middlewares.js.map +1 -1
  28. package/dist/main/utils/namespaced.d.ts.map +1 -1
  29. package/dist/main/utils/namespaced.js.map +1 -1
  30. package/dist/main/utils/request-input.d.ts +1 -1
  31. package/dist/main/utils/request-input.d.ts.map +1 -1
  32. package/dist/main/utils/request-input.js.map +1 -1
  33. package/dist/main/utils/request-params.d.ts +1 -1
  34. package/dist/main/utils/request-params.d.ts.map +1 -1
  35. package/dist/main/utils/request-params.js.map +1 -1
  36. package/dist/main/utils/response.d.ts +1 -1
  37. package/dist/main/utils/response.d.ts.map +1 -1
  38. package/dist/main/utils/response.js.map +1 -1
  39. package/dist/main/utils/websocket-mock.d.ts +8 -9
  40. package/dist/main/utils/websocket-mock.d.ts.map +1 -1
  41. package/dist/main/utils/websocket-mock.js +11 -6
  42. package/dist/main/utils/websocket-mock.js.map +1 -1
  43. package/dist/main/xrpc-error.d.ts +55 -15
  44. package/dist/main/xrpc-error.d.ts.map +1 -1
  45. package/dist/main/xrpc-error.js +66 -26
  46. package/dist/main/xrpc-error.js.map +1 -1
  47. package/dist/main/xrpc-handler.js.map +1 -1
  48. package/dist/middlewares/cors.d.ts.map +1 -1
  49. package/dist/middlewares/cors.js.map +1 -1
  50. package/lib/auth/jwt-creator.ts +5 -3
  51. package/lib/auth/jwt-verifier.ts +206 -26
  52. package/lib/auth/jwt.ts +21 -10
  53. package/lib/main/router.ts +98 -15
  54. package/lib/main/types/operation.ts +8 -0
  55. package/lib/main/types/websocket.ts +8 -0
  56. package/lib/main/utils/websocket-mock.ts +20 -14
  57. package/lib/main/xrpc-error.ts +107 -44
  58. package/package.json +20 -15
  59. package/dist/main/utils/event-emitter.d.ts +0 -37
  60. package/dist/main/utils/event-emitter.d.ts.map +0 -1
  61. package/dist/main/utils/event-emitter.js +0 -96
  62. package/dist/main/utils/event-emitter.js.map +0 -1
  63. package/lib/main/utils/event-emitter.ts +0 -116
@@ -1 +1 @@
1
- {"version":3,"file":"websocket-mock.js","sourceRoot":"","sources":["../../../lib/main/utils/websocket-mock.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"websocket-mock.js","sourceRoot":"","sources":["../../../lib/main/utils/websocket-mock.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AA0BpE,MAAM,OAAO,oBAAoB;IAChC,QAAQ,GAAG,IAAI,iBAAiB,EAA2B,CAAC;IAE5D,OAAO,CACN,QAAiB,EACjB,OAAsD;QAEtD,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACrC,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,GAAG,CAAC,OAAO,GAAG,OAAO,CAAC;QAEtB,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,MAAkB;QACxB,OAAO;YACN,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBACxB,MAAM,GAAG,GAA4B;oBACpC,OAAO,EAAE,IAAI;iBACb,CAAC;gBAEF,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,IAAI,EAAE;oBACvC,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;oBAC9C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE;wBACjC,OAAO,EAAE;4BACR,OAAO,EAAE,WAAW;4BACpB,UAAU,EAAE,SAAS;yBACrB;qBACD,CAAC,CAAC;oBAEH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBAE7C,OAAO,QAAQ,CAAC;gBACjB,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;oBAClB,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBACvE,CAAC;gBAED,MAAM,SAAS,GAAG,IAAI,kBAAkB,EAAsB,CAAC;gBAC/D,MAAM,OAAO,GAAG,IAAI,kBAAkB,EAAuB,CAAC;gBAE9D,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;gBACzC,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;gBAEjC,MAAM,UAAU,GAAwB;oBACvC,MAAM,EAAE,MAAM;oBACd,IAAI,CAAC,IAAI;wBACR,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACtB,CAAC;oBACD,KAAK;wBACJ,2CAA2C;oBAC5C,CAAC;oBACD,KAAK,CAAC,IAAI,GAAG,IAAI,EAAE,MAAM,GAAG,EAAE;wBAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;4BACrB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;4BAC/C,UAAU,CAAC,KAAK,EAAE,CAAC;wBACpB,CAAC;oBACF,CAAC;iBACD,CAAC;gBAEF,CAAC;oBACA,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;oBAC5B,UAAU,CAAC,GAAG,EAAE;wBACf,OAAO,CAAC,UAAU,CAAC,CAAC;oBACrB,CAAC,EAAE,CAAC,CAAC,CAAC;gBACP,CAAC;gBAED,MAAM,MAAM,GAAuB;oBAClC,SAAS;oBACT,OAAO;oBACP,OAAO;wBACN,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;4BACrB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;4BACzD,UAAU,CAAC,KAAK,EAAE,CAAC;wBACpB,CAAC;oBACF,CAAC;oBACD,CAAC,MAAM,CAAC,OAAO,CAAC;wBACf,IAAI,CAAC,OAAO,EAAE,CAAC;oBAChB,CAAC;iBACD,CAAC;gBAEF,OAAO,MAAM,CAAC;YACf,CAAC;SACD,CAAC;IACH,CAAC;CACD"}
@@ -1,7 +1,42 @@
1
+ /**
2
+ * a single WWW-Authenticate challenge. exactly one of `params` or `token68` may
3
+ * be provided. a bare scheme (no params, no token) is valid and renders as just
4
+ * the scheme name.
5
+ *
6
+ * @see {@link https://datatracker.ietf.org/doc/html/rfc7235#section-4.1 | RFC 7235 §4.1}
7
+ */
8
+ export interface WWWAuthenticateChallenge {
9
+ /** authentication scheme, e.g. `Bearer`, `DPoP`, `Basic`. */
10
+ scheme: string;
11
+ /** auth-param pairs. entries whose value is `undefined` are omitted. */
12
+ params?: Record<string, string | undefined>;
13
+ /**
14
+ * token68 value for schemes that carry one instead of auth-params (e.g.
15
+ * `Basic`). mutually exclusive with `params`.
16
+ */
17
+ token68?: string;
18
+ }
19
+ /**
20
+ * formats one or more WWW-Authenticate challenges into a single header value.
21
+ *
22
+ * each challenge is emitted as `<scheme>` followed by its params or token68.
23
+ * multiple challenges are joined with `, `. auth-param values are quoted using
24
+ * `JSON.stringify` (RFC 7230 quoted-string semantics for ASCII content).
25
+ *
26
+ * @param challenges one challenge, or an ordered array of challenges
27
+ * @returns the formatted header value
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * formatWWWAuthenticate({ scheme: 'Bearer', params: { error: 'BadJwtSignature' } })
32
+ * // => `Bearer error="BadJwtSignature"`
33
+ * ```
34
+ */
35
+ export declare const formatWWWAuthenticate: (challenges: WWWAuthenticateChallenge | WWWAuthenticateChallenge[]) => string;
1
36
  export interface XRPCErrorOptions {
2
37
  status: number;
3
38
  error: string;
4
- description?: string;
39
+ message?: string;
5
40
  headers?: HeadersInit;
6
41
  }
7
42
  export declare class XRPCError extends Error {
@@ -9,46 +44,51 @@ export declare class XRPCError extends Error {
9
44
  readonly status: number;
10
45
  /** error name */
11
46
  readonly error: string;
12
- /** error message */
13
- readonly description?: string;
14
47
  /** response headers */
15
48
  readonly headers?: HeadersInit;
16
- constructor({ status, error, description, headers }: XRPCErrorOptions);
49
+ constructor({ status, error, message, headers }: XRPCErrorOptions);
17
50
  toResponse(): Response;
18
51
  }
19
52
  export declare class InvalidRequestError extends XRPCError {
20
- constructor({ status, error, description, headers }?: Partial<XRPCErrorOptions>);
53
+ constructor({ status, error, message, headers }?: Partial<XRPCErrorOptions>);
54
+ }
55
+ export interface AuthRequiredErrorOptions extends Partial<XRPCErrorOptions> {
56
+ /**
57
+ * WWW-Authenticate challenge(s) to attach to the response. the formatted
58
+ * header is set on `headers` automatically, and `access-control-expose-headers`
59
+ * is appended so browsers can read it from CORS responses.
60
+ */
61
+ wwwAuthenticate?: WWWAuthenticateChallenge | WWWAuthenticateChallenge[];
21
62
  }
22
63
  export declare class AuthRequiredError extends XRPCError {
23
- constructor({ status, error, description, headers }?: Partial<XRPCErrorOptions>);
64
+ constructor({ status, error, message, headers, wwwAuthenticate, }?: AuthRequiredErrorOptions);
24
65
  }
25
66
  export declare class ForbiddenError extends XRPCError {
26
- constructor({ status, error, description, headers }?: Partial<XRPCErrorOptions>);
67
+ constructor({ status, error, message, headers }?: Partial<XRPCErrorOptions>);
27
68
  }
28
69
  export declare class RateLimitExceededError extends XRPCError {
29
- constructor({ status, error, description, headers }?: Partial<XRPCErrorOptions>);
70
+ constructor({ status, error, message, headers, }?: Partial<XRPCErrorOptions>);
30
71
  }
31
72
  export declare class InternalServerError extends XRPCError {
32
- constructor({ status, error, description, headers }?: Partial<XRPCErrorOptions>);
73
+ constructor({ status, error, message, headers, }?: Partial<XRPCErrorOptions>);
33
74
  }
34
75
  export declare class UpstreamFailureError extends XRPCError {
35
- constructor({ status, error, description, headers }?: Partial<XRPCErrorOptions>);
76
+ constructor({ status, error, message, headers }?: Partial<XRPCErrorOptions>);
36
77
  }
37
78
  export declare class NotEnoughResourcesError extends XRPCError {
38
- constructor({ status, error, description, headers }?: Partial<XRPCErrorOptions>);
79
+ constructor({ status, error, message, headers, }?: Partial<XRPCErrorOptions>);
39
80
  }
40
81
  export declare class UpstreamTimeoutError extends XRPCError {
41
- constructor({ status, error, description, headers }?: Partial<XRPCErrorOptions>);
82
+ constructor({ status, error, message, headers }?: Partial<XRPCErrorOptions>);
42
83
  }
43
84
  export interface XRPCSubscriptionErrorOptions {
44
85
  closeCode?: number;
45
86
  error: string;
46
- description?: string;
87
+ message?: string;
47
88
  }
48
89
  export declare class XRPCSubscriptionError extends Error {
49
90
  readonly closeCode: number;
50
91
  readonly error: string;
51
- readonly description?: string;
52
- constructor({ closeCode, error, description }: XRPCSubscriptionErrorOptions);
92
+ constructor({ closeCode, error, message }: XRPCSubscriptionErrorOptions);
53
93
  }
54
94
  //# sourceMappingURL=xrpc-error.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"xrpc-error.d.ts","sourceRoot":"","sources":["../../lib/main/xrpc-error.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,gBAAgB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,qBAAa,SAAU,SAAQ,KAAK;IACnC,sBAAsB;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,iBAAiB;IACjB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,oBAAoB;IACpB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,uBAAuB;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAE/B,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE,gBAAgB,EAQpE;IAED,UAAU,IAAI,QAAQ,CAKrB;CACD;AAED,qBAAa,mBAAoB,SAAQ,SAAS;IACjD,YAAY,EACX,MAAY,EACZ,KAAwB,EACxB,WAAW,EACX,OAAO,EACP,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAEhC;CACD;AAED,qBAAa,iBAAkB,SAAQ,SAAS;IAC/C,YAAY,EACX,MAAY,EACZ,KAAgC,EAChC,WAAW,EACX,OAAO,EACP,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAEhC;CACD;AAED,qBAAa,cAAe,SAAQ,SAAS;IAC5C,YAAY,EAAE,MAAY,EAAE,KAAmB,EAAE,WAAW,EAAE,OAAO,EAAE,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAEtG;CACD;AAED,qBAAa,sBAAuB,SAAQ,SAAS;IACpD,YAAY,EACX,MAAY,EACZ,KAA2B,EAC3B,WAAW,EACX,OAAO,EACP,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAEhC;CACD;AAED,qBAAa,mBAAoB,SAAQ,SAAS;IACjD,YAAY,EACX,MAAY,EACZ,KAA6B,EAC7B,WAAW,EACX,OAAO,EACP,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAEhC;CACD;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAClD,YAAY,EACX,MAAY,EACZ,KAAyB,EACzB,WAAW,EACX,OAAO,EACP,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAEhC;CACD;AAED,qBAAa,uBAAwB,SAAQ,SAAS;IACrD,YAAY,EACX,MAAY,EACZ,KAA4B,EAC5B,WAAW,EACX,OAAO,EACP,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAEhC;CACD;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAClD,YAAY,EACX,MAAY,EACZ,KAAyB,EACzB,WAAW,EACX,OAAO,EACP,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAEhC;CACD;AAED,MAAM,WAAW,4BAA4B;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAE9B,YAAY,EAAE,SAAgB,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,4BAA4B,EAMjF;CACD"}
1
+ {"version":3,"file":"xrpc-error.d.ts","sourceRoot":"","sources":["../../lib/main/xrpc-error.ts"],"names":[],"mappings":"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"}
@@ -1,72 +1,112 @@
1
+ /**
2
+ * formats one or more WWW-Authenticate challenges into a single header value.
3
+ *
4
+ * each challenge is emitted as `<scheme>` followed by its params or token68.
5
+ * multiple challenges are joined with `, `. auth-param values are quoted using
6
+ * `JSON.stringify` (RFC 7230 quoted-string semantics for ASCII content).
7
+ *
8
+ * @param challenges one challenge, or an ordered array of challenges
9
+ * @returns the formatted header value
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * formatWWWAuthenticate({ scheme: 'Bearer', params: { error: 'BadJwtSignature' } })
14
+ * // => `Bearer error="BadJwtSignature"`
15
+ * ```
16
+ */
17
+ export const formatWWWAuthenticate = (challenges) => {
18
+ const list = Array.isArray(challenges) ? challenges : [challenges];
19
+ return list.map(formatChallenge).join(', ');
20
+ };
21
+ const formatChallenge = (challenge) => {
22
+ if (challenge.token68 !== undefined) {
23
+ return `${challenge.scheme} ${challenge.token68}`;
24
+ }
25
+ if (challenge.params !== undefined) {
26
+ const parts = [];
27
+ for (const name in challenge.params) {
28
+ const value = challenge.params[name];
29
+ if (value !== undefined) {
30
+ parts.push(`${name}=${JSON.stringify(value)}`);
31
+ }
32
+ }
33
+ if (parts.length > 0) {
34
+ return `${challenge.scheme} ${parts.join(', ')}`;
35
+ }
36
+ }
37
+ return challenge.scheme;
38
+ };
1
39
  export class XRPCError extends Error {
2
40
  /** response status */
3
41
  status;
4
42
  /** error name */
5
43
  error;
6
- /** error message */
7
- description;
8
44
  /** response headers */
9
45
  headers;
10
- constructor({ status, error, description, headers }) {
11
- super(`${error} > ${description ?? '(unspecified description)'}`);
46
+ constructor({ status, error, message, headers }) {
47
+ super(message);
12
48
  this.status = status;
13
49
  this.error = error;
14
- this.description = description;
15
50
  this.headers = headers;
16
51
  }
17
52
  toResponse() {
18
- return Response.json({ error: this.error, message: this.description }, { status: this.status, headers: this.headers });
53
+ return Response.json({ error: this.error, message: this.message || undefined }, { status: this.status, headers: this.headers });
19
54
  }
20
55
  }
21
56
  export class InvalidRequestError extends XRPCError {
22
- constructor({ status = 400, error = 'InvalidRequest', description, headers, } = {}) {
23
- super({ status, error, description, headers });
57
+ constructor({ status = 400, error = 'InvalidRequest', message, headers } = {}) {
58
+ super({ status, error, message, headers });
24
59
  }
25
60
  }
26
61
  export class AuthRequiredError extends XRPCError {
27
- constructor({ status = 401, error = 'AuthenticationRequired', description, headers, } = {}) {
28
- super({ status, error, description, headers });
62
+ constructor({ status = 401, error = 'AuthenticationRequired', message, headers, wwwAuthenticate, } = {}) {
63
+ let mergedHeaders = headers;
64
+ if (wwwAuthenticate !== undefined) {
65
+ const target = new Headers(headers);
66
+ target.set('www-authenticate', formatWWWAuthenticate(wwwAuthenticate));
67
+ target.append('access-control-expose-headers', 'www-authenticate');
68
+ mergedHeaders = target;
69
+ }
70
+ super({ status, error, message, headers: mergedHeaders });
29
71
  }
30
72
  }
31
73
  export class ForbiddenError extends XRPCError {
32
- constructor({ status = 403, error = 'Forbidden', description, headers } = {}) {
33
- super({ status, error, description, headers });
74
+ constructor({ status = 403, error = 'Forbidden', message, headers } = {}) {
75
+ super({ status, error, message, headers });
34
76
  }
35
77
  }
36
78
  export class RateLimitExceededError extends XRPCError {
37
- constructor({ status = 429, error = 'RateLimitExceeded', description, headers, } = {}) {
38
- super({ status, error, description, headers });
79
+ constructor({ status = 429, error = 'RateLimitExceeded', message, headers, } = {}) {
80
+ super({ status, error, message, headers });
39
81
  }
40
82
  }
41
83
  export class InternalServerError extends XRPCError {
42
- constructor({ status = 500, error = 'InternalServerError', description, headers, } = {}) {
43
- super({ status, error, description, headers });
84
+ constructor({ status = 500, error = 'InternalServerError', message, headers, } = {}) {
85
+ super({ status, error, message, headers });
44
86
  }
45
87
  }
46
88
  export class UpstreamFailureError extends XRPCError {
47
- constructor({ status = 502, error = 'UpstreamFailure', description, headers, } = {}) {
48
- super({ status, error, description, headers });
89
+ constructor({ status = 502, error = 'UpstreamFailure', message, headers } = {}) {
90
+ super({ status, error, message, headers });
49
91
  }
50
92
  }
51
93
  export class NotEnoughResourcesError extends XRPCError {
52
- constructor({ status = 503, error = 'NotEnoughResources', description, headers, } = {}) {
53
- super({ status, error, description, headers });
94
+ constructor({ status = 503, error = 'NotEnoughResources', message, headers, } = {}) {
95
+ super({ status, error, message, headers });
54
96
  }
55
97
  }
56
98
  export class UpstreamTimeoutError extends XRPCError {
57
- constructor({ status = 504, error = 'UpstreamTimeout', description, headers, } = {}) {
58
- super({ status, error, description, headers });
99
+ constructor({ status = 504, error = 'UpstreamTimeout', message, headers } = {}) {
100
+ super({ status, error, message, headers });
59
101
  }
60
102
  }
61
103
  export class XRPCSubscriptionError extends Error {
62
104
  closeCode;
63
105
  error;
64
- description;
65
- constructor({ closeCode = 1008, error, description }) {
66
- super(`Subscription error: ${error}${description ? ` - ${description}` : ''}`);
106
+ constructor({ closeCode = 1008, error, message }) {
107
+ super(message);
67
108
  this.closeCode = closeCode;
68
109
  this.error = error;
69
- this.description = description;
70
110
  }
71
111
  }
72
112
  //# sourceMappingURL=xrpc-error.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"xrpc-error.js","sourceRoot":"","sources":["../../lib/main/xrpc-error.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"xrpc-error.js","sourceRoot":"","sources":["../../lib/main/xrpc-error.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"xrpc-handler.js","sourceRoot":"","sources":["../../lib/main/xrpc-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAA0B,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAmB,MAAM,uBAAuB,CAAC;AA6BnE,MAAM,UAAU,iBAAiB,CAAC,OAA2B,EAA2C;IACvG,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAEhD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAE9B,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,YAAY,EAAE,CAAC;YACnB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAoD,EAAE,CAAC,CAAC;YAC3F,MAAM;QACP,CAAC;QACD,KAAK,gBAAgB,EAAE,CAAC;YACvB,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,OAA4D,EAAE,CAAC,CAAC;YACvG,MAAM;QACP,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC;AAAA,CACpB"}
1
+ {"version":3,"file":"xrpc-handler.js","sourceRoot":"","sources":["../../lib/main/xrpc-handler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAA0B,MAAM,aAAa,CAAC;AAEjE,OAAO,EAAE,SAAS,EAAmB,MAAM,uBAAuB,CAAC;AA6BnE,MAAM,UAAU,iBAAiB,CAAC,OAA2B;IAC5D,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAEhD,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,aAAa,CAAC,CAAC;IAE7C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAE9B,QAAQ,MAAM,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,YAAY,EAAE,CAAC;YACnB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,OAAoD,EAAE,CAAC,CAAC;YAC3F,MAAM;QACP,CAAC;QACD,KAAK,gBAAgB,EAAE,CAAC;YACvB,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,OAA4D,EAAE,CAAC,CAAC;YACvG,MAAM;QACP,CAAC;IACF,CAAC;IAED,OAAO,MAAM,CAAC,KAAK,CAAC;AACrB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../lib/middlewares/cors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC3B,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kCAAkC;IAClC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,+EAA+E;IAC/E,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAwBD,eAAO,MAAM,IAAI,4CAoEhB,CAAC"}
1
+ {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../lib/middlewares/cors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,MAAM,WAAW,WAAW;IAC3B,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kCAAkC;IAClC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,+EAA+E;IAC/E,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC9B;AAwBD,eAAO,MAAM,IAAI,aAAa,WAAW,KAAQ,eAoEhD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../lib/middlewares/cors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../lib/middlewares/cors.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { PrivateKey } from '@atcute/crypto';
2
2
  import type { Did, Nsid } from '@atcute/lexicons';
3
+ import type { AtprotoAudience } from '@atcute/lexicons/syntax';
3
4
  import { toBase64Url } from '@atcute/multibase';
4
5
  import { encodeUtf8 } from '@atcute/uint8array';
5
6
 
@@ -10,8 +11,9 @@ import type { JwtHeader, JwtPayload } from './jwt.ts';
10
11
  export interface CreateServiceJwtOptions {
11
12
  keypair: PrivateKey;
12
13
  issuer: Did;
13
- audience: Did;
14
- lxm: Nsid | null;
14
+ /** audience is either a bare DID or a DID with service fragment (e.g. `did:web:x.example#svc`) */
15
+ audience: Did | AtprotoAudience;
16
+ lxm: Nsid;
15
17
  issuedAt?: number;
16
18
  expiresIn?: number;
17
19
  }
@@ -33,7 +35,7 @@ export const createServiceJwt = async (options: CreateServiceJwtOptions): Promis
33
35
  iat: issuedAt,
34
36
  iss: options.issuer,
35
37
  jti: nanoid(24),
36
- lxm: options.lxm ?? undefined,
38
+ lxm: options.lxm,
37
39
  };
38
40
 
39
41
  const headerB64 = encodeJwtPortion(header);