@atcute/xrpc-server 0.1.5 → 0.1.6

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.
@@ -2,6 +2,7 @@ export interface XRPCErrorOptions {
2
2
  status: number;
3
3
  error: string;
4
4
  description?: string;
5
+ headers?: HeadersInit;
5
6
  }
6
7
  export declare class XRPCError extends Error {
7
8
  /** response status */
@@ -10,32 +11,34 @@ export declare class XRPCError extends Error {
10
11
  readonly error: string;
11
12
  /** error message */
12
13
  readonly description?: string;
13
- constructor({ status, error, description }: XRPCErrorOptions);
14
+ /** response headers */
15
+ readonly headers?: HeadersInit;
16
+ constructor({ status, error, description, headers }: XRPCErrorOptions);
14
17
  toResponse(): Response;
15
18
  }
16
19
  export declare class InvalidRequestError extends XRPCError {
17
- constructor({ status, error, description }?: Partial<XRPCErrorOptions>);
20
+ constructor({ status, error, description, headers }?: Partial<XRPCErrorOptions>);
18
21
  }
19
22
  export declare class AuthRequiredError extends XRPCError {
20
- constructor({ status, error, description }?: Partial<XRPCErrorOptions>);
23
+ constructor({ status, error, description, headers }?: Partial<XRPCErrorOptions>);
21
24
  }
22
25
  export declare class ForbiddenError extends XRPCError {
23
- constructor({ status, error, description }?: Partial<XRPCErrorOptions>);
26
+ constructor({ status, error, description, headers }?: Partial<XRPCErrorOptions>);
24
27
  }
25
28
  export declare class RateLimitExceededError extends XRPCError {
26
- constructor({ status, error, description }?: Partial<XRPCErrorOptions>);
29
+ constructor({ status, error, description, headers }?: Partial<XRPCErrorOptions>);
27
30
  }
28
31
  export declare class InternalServerError extends XRPCError {
29
- constructor({ status, error, description }?: Partial<XRPCErrorOptions>);
32
+ constructor({ status, error, description, headers }?: Partial<XRPCErrorOptions>);
30
33
  }
31
34
  export declare class UpstreamFailureError extends XRPCError {
32
- constructor({ status, error, description }?: Partial<XRPCErrorOptions>);
35
+ constructor({ status, error, description, headers }?: Partial<XRPCErrorOptions>);
33
36
  }
34
37
  export declare class NotEnoughResourcesError extends XRPCError {
35
- constructor({ status, error, description }?: Partial<XRPCErrorOptions>);
38
+ constructor({ status, error, description, headers }?: Partial<XRPCErrorOptions>);
36
39
  }
37
40
  export declare class UpstreamTimeoutError extends XRPCError {
38
- constructor({ status, error, description }?: Partial<XRPCErrorOptions>);
41
+ constructor({ status, error, description, headers }?: Partial<XRPCErrorOptions>);
39
42
  }
40
43
  export interface XRPCSubscriptionErrorOptions {
41
44
  closeCode?: number;
@@ -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;CACrB;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;IAE9B,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,gBAAgB,EAO3D;IAED,UAAU,IAAI,QAAQ,CAErB;CACD;AAED,qBAAa,mBAAoB,SAAQ,SAAS;IACjD,YAAY,EAAE,MAAY,EAAE,KAAwB,EAAE,WAAW,EAAE,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAElG;CACD;AAED,qBAAa,iBAAkB,SAAQ,SAAS;IAC/C,YAAY,EACX,MAAY,EACZ,KAAgC,EAChC,WAAW,EACX,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAEhC;CACD;AAED,qBAAa,cAAe,SAAQ,SAAS;IAC5C,YAAY,EAAE,MAAY,EAAE,KAAmB,EAAE,WAAW,EAAE,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAE7F;CACD;AAED,qBAAa,sBAAuB,SAAQ,SAAS;IACpD,YAAY,EAAE,MAAY,EAAE,KAA2B,EAAE,WAAW,EAAE,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAErG;CACD;AAED,qBAAa,mBAAoB,SAAQ,SAAS;IACjD,YAAY,EAAE,MAAY,EAAE,KAA6B,EAAE,WAAW,EAAE,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAEvG;CACD;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAClD,YAAY,EAAE,MAAY,EAAE,KAAyB,EAAE,WAAW,EAAE,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAEnG;CACD;AAED,qBAAa,uBAAwB,SAAQ,SAAS;IACrD,YAAY,EAAE,MAAY,EAAE,KAA4B,EAAE,WAAW,EAAE,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAEtG;CACD;AAED,qBAAa,oBAAqB,SAAQ,SAAS;IAClD,YAAY,EAAE,MAAY,EAAE,KAAyB,EAAE,WAAW,EAAE,GAAE,OAAO,CAAC,gBAAgB,CAAM,EAEnG;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":"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"}
@@ -5,54 +5,57 @@ export class XRPCError extends Error {
5
5
  error;
6
6
  /** error message */
7
7
  description;
8
- constructor({ status, error, description }) {
8
+ /** response headers */
9
+ headers;
10
+ constructor({ status, error, description, headers }) {
9
11
  super(`${error} > ${description ?? '(unspecified description)'}`);
10
12
  this.status = status;
11
13
  this.error = error;
12
14
  this.description = description;
15
+ this.headers = headers;
13
16
  }
14
17
  toResponse() {
15
- return Response.json({ error: this.error, message: this.description }, { status: this.status });
18
+ return Response.json({ error: this.error, message: this.description }, { status: this.status, headers: this.headers });
16
19
  }
17
20
  }
18
21
  export class InvalidRequestError extends XRPCError {
19
- constructor({ status = 400, error = 'InvalidRequest', description } = {}) {
20
- super({ status, error, description });
22
+ constructor({ status = 400, error = 'InvalidRequest', description, headers, } = {}) {
23
+ super({ status, error, description, headers });
21
24
  }
22
25
  }
23
26
  export class AuthRequiredError extends XRPCError {
24
- constructor({ status = 401, error = 'AuthenticationRequired', description, } = {}) {
25
- super({ status, error, description });
27
+ constructor({ status = 401, error = 'AuthenticationRequired', description, headers, } = {}) {
28
+ super({ status, error, description, headers });
26
29
  }
27
30
  }
28
31
  export class ForbiddenError extends XRPCError {
29
- constructor({ status = 403, error = 'Forbidden', description } = {}) {
30
- super({ status, error, description });
32
+ constructor({ status = 403, error = 'Forbidden', description, headers } = {}) {
33
+ super({ status, error, description, headers });
31
34
  }
32
35
  }
33
36
  export class RateLimitExceededError extends XRPCError {
34
- constructor({ status = 429, error = 'RateLimitExceeded', description } = {}) {
35
- super({ status, error, description });
37
+ constructor({ status = 429, error = 'RateLimitExceeded', description, headers, } = {}) {
38
+ super({ status, error, description, headers });
36
39
  }
37
40
  }
38
41
  export class InternalServerError extends XRPCError {
39
- constructor({ status = 500, error = 'InternalServerError', description } = {}) {
40
- super({ status, error, description });
42
+ constructor({ status = 500, error = 'InternalServerError', description, headers, } = {}) {
43
+ super({ status, error, description, headers });
41
44
  }
42
45
  }
43
46
  export class UpstreamFailureError extends XRPCError {
44
- constructor({ status = 502, error = 'UpstreamFailure', description } = {}) {
45
- super({ status, error, description });
47
+ constructor({ status = 502, error = 'UpstreamFailure', description, headers, } = {}) {
48
+ super({ status, error, description, headers });
46
49
  }
47
50
  }
48
51
  export class NotEnoughResourcesError extends XRPCError {
49
- constructor({ status = 503, error = 'NotEnoughResources', description } = {}) {
50
- super({ status, error, description });
52
+ constructor({ status = 503, error = 'NotEnoughResources', description, headers, } = {}) {
53
+ super({ status, error, description, headers });
51
54
  }
52
55
  }
53
56
  export class UpstreamTimeoutError extends XRPCError {
54
- constructor({ status = 504, error = 'UpstreamTimeout', description } = {}) {
55
- super({ status, error, description });
57
+ constructor({ status = 504, error = 'UpstreamTimeout', description, headers, } = {}) {
58
+ super({ status, error, description, headers });
56
59
  }
57
60
  }
58
61
  export class XRPCSubscriptionError extends Error {
@@ -1 +1 @@
1
- {"version":3,"file":"xrpc-error.js","sourceRoot":"","sources":["../../lib/main/xrpc-error.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,SAAU,SAAQ,KAAK;IACnC,sBAAsB;IACb,MAAM,CAAS;IAExB,iBAAiB;IACR,KAAK,CAAS;IACvB,oBAAoB;IACX,WAAW,CAAU;IAE9B,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAoB,EAAE;QAC7D,KAAK,CAAC,GAAG,KAAK,MAAM,WAAW,IAAI,2BAA2B,EAAE,CAAC,CAAC;QAElE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAAA,CAC/B;IAED,UAAU,GAAa;QACtB,OAAO,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAAA,CAChG;CACD;AAED,MAAM,OAAO,mBAAoB,SAAQ,SAAS;IACjD,YAAY,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,GAAG,gBAAgB,EAAE,WAAW,EAAE,GAA8B,EAAE,EAAE;QACpG,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAAA,CACtC;CACD;AAED,MAAM,OAAO,iBAAkB,SAAQ,SAAS;IAC/C,YAAY,EACX,MAAM,GAAG,GAAG,EACZ,KAAK,GAAG,wBAAwB,EAChC,WAAW,GACX,GAA8B,EAAE,EAAE;QAClC,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAAA,CACtC;CACD;AAED,MAAM,OAAO,cAAe,SAAQ,SAAS;IAC5C,YAAY,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,GAAG,WAAW,EAAE,WAAW,EAAE,GAA8B,EAAE,EAAE;QAC/F,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAAA,CACtC;CACD;AAED,MAAM,OAAO,sBAAuB,SAAQ,SAAS;IACpD,YAAY,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,GAAG,mBAAmB,EAAE,WAAW,EAAE,GAA8B,EAAE,EAAE;QACvG,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAAA,CACtC;CACD;AAED,MAAM,OAAO,mBAAoB,SAAQ,SAAS;IACjD,YAAY,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,GAAG,qBAAqB,EAAE,WAAW,EAAE,GAA8B,EAAE,EAAE;QACzG,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAAA,CACtC;CACD;AAED,MAAM,OAAO,oBAAqB,SAAQ,SAAS;IAClD,YAAY,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,GAAG,iBAAiB,EAAE,WAAW,EAAE,GAA8B,EAAE,EAAE;QACrG,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAAA,CACtC;CACD;AAED,MAAM,OAAO,uBAAwB,SAAQ,SAAS;IACrD,YAAY,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,GAAG,oBAAoB,EAAE,WAAW,EAAE,GAA8B,EAAE,EAAE;QACxG,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAAA,CACtC;CACD;AAED,MAAM,OAAO,oBAAqB,SAAQ,SAAS;IAClD,YAAY,EAAE,MAAM,GAAG,GAAG,EAAE,KAAK,GAAG,iBAAiB,EAAE,WAAW,EAAE,GAA8B,EAAE,EAAE;QACrG,KAAK,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IAAA,CACtC;CACD;AAQD,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IACtC,SAAS,CAAS;IAClB,KAAK,CAAS;IACd,WAAW,CAAU;IAE9B,YAAY,EAAE,SAAS,GAAG,IAAI,EAAE,KAAK,EAAE,WAAW,EAAgC,EAAE;QACnF,KAAK,CAAC,uBAAuB,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,MAAM,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE/E,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IAAA,CAC/B;CACD"}
1
+ {"version":3,"file":"xrpc-error.js","sourceRoot":"","sources":["../../lib/main/xrpc-error.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,7 @@ export interface XRPCErrorOptions {
2
2
  status: number;
3
3
  error: string;
4
4
  description?: string;
5
+ headers?: HeadersInit;
5
6
  }
6
7
 
7
8
  export class XRPCError extends Error {
@@ -12,24 +13,35 @@ export class XRPCError extends Error {
12
13
  readonly error: string;
13
14
  /** error message */
14
15
  readonly description?: string;
16
+ /** response headers */
17
+ readonly headers?: HeadersInit;
15
18
 
16
- constructor({ status, error, description }: XRPCErrorOptions) {
19
+ constructor({ status, error, description, headers }: XRPCErrorOptions) {
17
20
  super(`${error} > ${description ?? '(unspecified description)'}`);
18
21
 
19
22
  this.status = status;
20
23
 
21
24
  this.error = error;
22
25
  this.description = description;
26
+ this.headers = headers;
23
27
  }
24
28
 
25
29
  toResponse(): Response {
26
- return Response.json({ error: this.error, message: this.description }, { status: this.status });
30
+ return Response.json(
31
+ { error: this.error, message: this.description },
32
+ { status: this.status, headers: this.headers },
33
+ );
27
34
  }
28
35
  }
29
36
 
30
37
  export class InvalidRequestError extends XRPCError {
31
- constructor({ status = 400, error = 'InvalidRequest', description }: Partial<XRPCErrorOptions> = {}) {
32
- super({ status, error, description });
38
+ constructor({
39
+ status = 400,
40
+ error = 'InvalidRequest',
41
+ description,
42
+ headers,
43
+ }: Partial<XRPCErrorOptions> = {}) {
44
+ super({ status, error, description, headers });
33
45
  }
34
46
  }
35
47
 
@@ -38,44 +50,70 @@ export class AuthRequiredError extends XRPCError {
38
50
  status = 401,
39
51
  error = 'AuthenticationRequired',
40
52
  description,
53
+ headers,
41
54
  }: Partial<XRPCErrorOptions> = {}) {
42
- super({ status, error, description });
55
+ super({ status, error, description, headers });
43
56
  }
44
57
  }
45
58
 
46
59
  export class ForbiddenError extends XRPCError {
47
- constructor({ status = 403, error = 'Forbidden', description }: Partial<XRPCErrorOptions> = {}) {
48
- super({ status, error, description });
60
+ constructor({ status = 403, error = 'Forbidden', description, headers }: Partial<XRPCErrorOptions> = {}) {
61
+ super({ status, error, description, headers });
49
62
  }
50
63
  }
51
64
 
52
65
  export class RateLimitExceededError extends XRPCError {
53
- constructor({ status = 429, error = 'RateLimitExceeded', description }: Partial<XRPCErrorOptions> = {}) {
54
- super({ status, error, description });
66
+ constructor({
67
+ status = 429,
68
+ error = 'RateLimitExceeded',
69
+ description,
70
+ headers,
71
+ }: Partial<XRPCErrorOptions> = {}) {
72
+ super({ status, error, description, headers });
55
73
  }
56
74
  }
57
75
 
58
76
  export class InternalServerError extends XRPCError {
59
- constructor({ status = 500, error = 'InternalServerError', description }: Partial<XRPCErrorOptions> = {}) {
60
- super({ status, error, description });
77
+ constructor({
78
+ status = 500,
79
+ error = 'InternalServerError',
80
+ description,
81
+ headers,
82
+ }: Partial<XRPCErrorOptions> = {}) {
83
+ super({ status, error, description, headers });
61
84
  }
62
85
  }
63
86
 
64
87
  export class UpstreamFailureError extends XRPCError {
65
- constructor({ status = 502, error = 'UpstreamFailure', description }: Partial<XRPCErrorOptions> = {}) {
66
- super({ status, error, description });
88
+ constructor({
89
+ status = 502,
90
+ error = 'UpstreamFailure',
91
+ description,
92
+ headers,
93
+ }: Partial<XRPCErrorOptions> = {}) {
94
+ super({ status, error, description, headers });
67
95
  }
68
96
  }
69
97
 
70
98
  export class NotEnoughResourcesError extends XRPCError {
71
- constructor({ status = 503, error = 'NotEnoughResources', description }: Partial<XRPCErrorOptions> = {}) {
72
- super({ status, error, description });
99
+ constructor({
100
+ status = 503,
101
+ error = 'NotEnoughResources',
102
+ description,
103
+ headers,
104
+ }: Partial<XRPCErrorOptions> = {}) {
105
+ super({ status, error, description, headers });
73
106
  }
74
107
  }
75
108
 
76
109
  export class UpstreamTimeoutError extends XRPCError {
77
- constructor({ status = 504, error = 'UpstreamTimeout', description }: Partial<XRPCErrorOptions> = {}) {
78
- super({ status, error, description });
110
+ constructor({
111
+ status = 504,
112
+ error = 'UpstreamTimeout',
113
+ description,
114
+ headers,
115
+ }: Partial<XRPCErrorOptions> = {}) {
116
+ super({ status, error, description, headers });
79
117
  }
80
118
  }
81
119
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "type": "module",
3
3
  "name": "@atcute/xrpc-server",
4
- "version": "0.1.5",
4
+ "version": "0.1.6",
5
5
  "description": "a small web framework for handling XRPC operations",
6
6
  "license": "0BSD",
7
7
  "repository": {
@@ -25,13 +25,13 @@
25
25
  "dependencies": {
26
26
  "@badrap/valita": "^0.4.6",
27
27
  "nanoid": "^5.1.6",
28
- "@atcute/cbor": "^2.2.8",
29
28
  "@atcute/crypto": "^2.3.0",
29
+ "@atcute/cbor": "^2.2.8",
30
30
  "@atcute/identity": "^1.1.3",
31
31
  "@atcute/identity-resolver": "^1.2.1",
32
- "@atcute/lexicons": "^1.2.5",
33
- "@atcute/uint8array": "^1.0.6",
34
- "@atcute/multibase": "^1.1.6"
32
+ "@atcute/lexicons": "^1.2.6",
33
+ "@atcute/multibase": "^1.1.6",
34
+ "@atcute/uint8array": "^1.0.6"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@atcute/xrpc-server": "file:",