@authup/errors 1.0.0-beta.51 → 1.0.0-beta.53

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.
@@ -1,19 +1,25 @@
1
1
  import { type AuthHeaderError } from './auth-header.ts';
2
2
  import { type BadRequestError } from './bad-request.ts';
3
+ import { type ValidationError } from './validation.ts';
3
4
  import { type BearerTokenMalformedError } from './bearer-token.ts';
4
5
  import { type EntityConflictError } from './entity-conflict.ts';
5
6
  import { type EntityCredentialsInvalidError } from './entity-credentials-invalid.ts';
6
7
  import { type EntityInactiveError } from './entity-inactive.ts';
7
8
  import { type EntityNotFoundError } from './entity-not-found.ts';
8
9
  import { type InternalError } from './internal.ts';
10
+ import { type LoginThrottledError } from './login-throttled.ts';
11
+ import { type MfaThrottledError } from './mfa-throttled.ts';
9
12
  import { type UnauthorizedError } from './unauthorized.ts';
10
13
  export declare function isAuthHeaderError(input: unknown): input is AuthHeaderError;
11
14
  export declare function isBearerTokenMalformedError(input: unknown): input is BearerTokenMalformedError;
12
15
  export declare function isBadRequestError(input: unknown): input is BadRequestError;
16
+ export declare function isValidationError(input: unknown): input is ValidationError;
13
17
  export declare function isUnauthorizedError(input: unknown): input is UnauthorizedError;
14
18
  export declare function isEntityNotFoundError(input: unknown): input is EntityNotFoundError;
15
19
  export declare function isEntityConflictError(input: unknown): input is EntityConflictError;
16
20
  export declare function isEntityInactiveError(input: unknown): input is EntityInactiveError;
17
21
  export declare function isEntityCredentialsInvalidError(input: unknown): input is EntityCredentialsInvalidError;
18
22
  export declare function isInternalError(input: unknown): input is InternalError;
23
+ export declare function isLoginThrottledError(input: unknown): input is LoginThrottledError;
24
+ export declare function isMfaThrottledError(input: unknown): input is MfaThrottledError;
19
25
  //# sourceMappingURL=check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/built-in/check.ts"],"names":[],"mappings":"AAUA,OAAO,EAA8B,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAA8B,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAAyC,KAAK,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC1G,OAAO,EAAkC,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAA6C,KAAK,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChI,OAAO,EAAkC,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAmC,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAA2B,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAA+B,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAExF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAI1E;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,yBAAyB,CAI9F;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAI1E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAI9E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAIlF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAIlF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAIlF;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,6BAA6B,CAItG;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAItE"}
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../src/built-in/check.ts"],"names":[],"mappings":"AAUA,OAAO,EAA8B,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAA8B,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACpF,OAAO,EAA6B,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClF,OAAO,EAAyC,KAAK,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC1G,OAAO,EAAkC,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAA6C,KAAK,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAChI,OAAO,EAAkC,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAmC,KAAK,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAClG,OAAO,EAA2B,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAC5E,OAAO,EAAkC,KAAK,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChG,OAAO,EAAgC,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1F,OAAO,EAA+B,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAExF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAI1E;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,yBAAyB,CAI9F;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAI1E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,eAAe,CAI1E;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAI9E;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAIlF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAIlF;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAIlF;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,6BAA6B,CAItG;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAItE;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAIlF;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAI9E"}
@@ -7,5 +7,8 @@ export * from './entity-credentials-invalid';
7
7
  export * from './entity-inactive';
8
8
  export * from './entity-not-found';
9
9
  export * from './internal';
10
+ export * from './login-throttled';
11
+ export * from './mfa-throttled';
10
12
  export * from './unauthorized';
13
+ export * from './validation';
11
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/built-in/index.ts"],"names":[],"mappings":"AAOA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/built-in/index.ts"],"names":[],"mappings":"AAOA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,SAAS,CAAC;AACxB,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { AuthupError } from '../module.ts';
2
+ import type { AuthupErrorOptions } from '../types.ts';
3
+ export declare const LOGIN_THROTTLED_ERROR_INSTANCE: unique symbol;
4
+ export type LoginThrottledErrorOptions = AuthupErrorOptions & {
5
+ /**
6
+ * Seconds until the sliding throttle window can release the pair.
7
+ */
8
+ retryAfter?: number;
9
+ };
10
+ export declare class LoginThrottledError extends AuthupError {
11
+ constructor(input?: LoginThrottledErrorOptions);
12
+ }
13
+ //# sourceMappingURL=login-throttled.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"login-throttled.d.ts","sourceRoot":"","sources":["../../src/built-in/login-throttled.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,eAAO,MAAM,8BAA8B,eAAmD,CAAC;AAE/F,MAAM,MAAM,0BAA0B,GAAG,kBAAkB,GAAG;IAC1D;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,qBAAa,mBAAoB,SAAQ,WAAW;gBACpC,KAAK,CAAC,EAAE,0BAA0B;CAajD"}
@@ -0,0 +1,13 @@
1
+ import { AuthupError } from '../module.ts';
2
+ import type { AuthupErrorOptions } from '../types.ts';
3
+ export declare const MFA_THROTTLED_ERROR_INSTANCE: unique symbol;
4
+ export type MfaThrottledErrorOptions = AuthupErrorOptions & {
5
+ /**
6
+ * Seconds until the exponential backoff releases the account.
7
+ */
8
+ retryAfter?: number;
9
+ };
10
+ export declare class MfaThrottledError extends AuthupError {
11
+ constructor(input?: MfaThrottledErrorOptions);
12
+ }
13
+ //# sourceMappingURL=mfa-throttled.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mfa-throttled.d.ts","sourceRoot":"","sources":["../../src/built-in/mfa-throttled.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,eAAO,MAAM,4BAA4B,eAAiD,CAAC;AAE3F,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,GAAG;IACxD;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,qBAAa,iBAAkB,SAAQ,WAAW;gBAClC,KAAK,CAAC,EAAE,wBAAwB;CAa/C"}
@@ -0,0 +1,13 @@
1
+ import { AuthupError } from '../module.ts';
2
+ import type { AuthupErrorOptions } from '../types.ts';
3
+ export declare const VALIDATION_ERROR_INSTANCE: unique symbol;
4
+ /**
5
+ * A domain/business-rule violation raised by core logic. Deliberately NOT
6
+ * named after an HTTP status: core code stays transport-agnostic, and the HTTP
7
+ * adapter maps its `ErrorCode.BAD_REQUEST` to a 400 response
8
+ * (`httpStatusFromCode`). Prefer this over `BadRequestError` in `core/**`.
9
+ */
10
+ export declare class ValidationError extends AuthupError {
11
+ constructor(input?: string | AuthupErrorOptions);
12
+ }
13
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/built-in/validation.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,eAAO,MAAM,yBAAyB,eAA+C,CAAC;AAEtF;;;;;GAKG;AACH,qBAAa,eAAgB,SAAQ,WAAW;gBAChC,KAAK,CAAC,EAAE,MAAM,GAAG,kBAAkB;CAQlD"}
@@ -13,6 +13,9 @@ export declare enum ErrorCode {
13
13
  PASSWORD_RECOVERY_DISABLED = "password_recovery_disabled",
14
14
  EMAIL_VERIFICATION_REQUIRED = "email_verification_required",
15
15
  RESET_TOKEN_EXPIRED = "reset_token_expired",
16
+ LOGIN_ATTEMPT_THROTTLED = "login_attempt_throttled",
17
+ MFA_ATTEMPT_THROTTLED = "mfa_attempt_throttled",
18
+ MFA_NOT_CONFIGURABLE = "mfa_not_configurable",
16
19
  STORAGE_INSUFFICIENT = "storage_insufficient",
17
20
  JWK_INVALID = "jwk_invalid",
18
21
  JWK_NOT_FOUND = "jwk_not_found",
@@ -21,9 +24,16 @@ export declare enum ErrorCode {
21
24
  JWT_EXPIRED = "expired_token",
22
25
  OAUTH_REDIRECT_URI_MISMATCH = "redirect_uri_mismatch",
23
26
  OAUTH_CLIENT_INVALID = "invalid_client",
27
+ OAUTH_CLIENT_UNAUTHORIZED = "unauthorized_client",
24
28
  OAUTH_GRANT_INVALID = "invalid_grant",
25
29
  OAUTH_GRANT_TYPE_UNSUPPORTED = "unsupported_token_grant_type",
26
30
  OAUTH_REQUEST_INVALID = "invalid_request",
31
+ OAUTH_LOGIN_REQUIRED = "login_required",
32
+ OAUTH_MFA_REQUIRED = "mfa_required",
33
+ OAUTH_ACCESS_DENIED = "access_denied",
34
+ OAUTH_INTERACTION_REQUIRED = "interaction_required",
35
+ OAUTH_ACCOUNT_SELECTION_REQUIRED = "account_selection_required",
36
+ OAUTH_CONSENT_REQUIRED = "consent_required",
27
37
  OAUTH_RESPONSE_TYPE_UNSUPPORTED = "unsupported_response_type",
28
38
  OAUTH_SCOPE_INVALID = "invalid_scope",
29
39
  OAUTH_SCOPE_INSUFFICIENT = "insufficient_scope",
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAOA,oBAAY,SAAS;IAEjB,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IAGjC,iCAAiC,iCAAiC;IAClE,2BAA2B,2BAA2B;IAGtD,qBAAqB,0BAA0B;IAG/C,0BAA0B,wBAAwB;IAClD,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IACrC,eAAe,oBAAoB;IACnC,uBAAuB,4BAA4B;IAGnD,qBAAqB,0BAA0B;IAC/C,0BAA0B,+BAA+B;IACzD,2BAA2B,gCAAgC;IAC3D,mBAAmB,wBAAwB;IAG3C,oBAAoB,yBAAyB;IAG7C,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAG/B,WAAW,kBAAkB;IAC7B,YAAY,mBAAmB;IAC/B,WAAW,kBAAkB;IAG7B,2BAA2B,0BAA0B;IACrD,oBAAoB,mBAAmB;IACvC,mBAAmB,kBAAkB;IACrC,4BAA4B,iCAAiC;IAC7D,qBAAqB,oBAAoB;IACzC,+BAA+B,8BAA8B;IAC7D,mBAAmB,kBAAkB;IACrC,wBAAwB,uBAAuB;IAG/C,oBAAoB,yBAAyB;IAC7C,iBAAiB,sBAAsB;IACvC,4BAA4B,iCAAiC;IAG7D,0BAA0B,+BAA+B;IACzD,gCAAgC,qCAAqC;IACrE,gCAAgC,qCAAqC;CACxE"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAOA,oBAAY,SAAS;IAEjB,WAAW,gBAAgB;IAC3B,cAAc,mBAAmB;IAGjC,iCAAiC,iCAAiC;IAClE,2BAA2B,2BAA2B;IAGtD,qBAAqB,0BAA0B;IAG/C,0BAA0B,wBAAwB;IAClD,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IACrC,eAAe,oBAAoB;IACnC,uBAAuB,4BAA4B;IAGnD,qBAAqB,0BAA0B;IAC/C,0BAA0B,+BAA+B;IACzD,2BAA2B,gCAAgC;IAC3D,mBAAmB,wBAAwB;IAC3C,uBAAuB,4BAA4B;IACnD,qBAAqB,0BAA0B;IAC/C,oBAAoB,yBAAyB;IAG7C,oBAAoB,yBAAyB;IAG7C,WAAW,gBAAgB;IAC3B,aAAa,kBAAkB;IAG/B,WAAW,kBAAkB;IAC7B,YAAY,mBAAmB;IAC/B,WAAW,kBAAkB;IAG7B,2BAA2B,0BAA0B;IACrD,oBAAoB,mBAAmB;IACvC,yBAAyB,wBAAwB;IACjD,mBAAmB,kBAAkB;IACrC,4BAA4B,iCAAiC;IAC7D,qBAAqB,oBAAoB;IACzC,oBAAoB,mBAAmB;IACvC,kBAAkB,iBAAiB;IACnC,mBAAmB,kBAAkB;IACrC,0BAA0B,yBAAyB;IACnD,gCAAgC,+BAA+B;IAC/D,sBAAsB,qBAAqB;IAC3C,+BAA+B,8BAA8B;IAC7D,mBAAmB,kBAAkB;IACrC,wBAAwB,uBAAuB;IAG/C,oBAAoB,yBAAyB;IAC7C,iBAAiB,sBAAsB;IACvC,4BAA4B,iCAAiC;IAG7D,0BAA0B,+BAA+B;IACzD,gCAAgC,qCAAqC;IACrE,gCAAgC,qCAAqC;CACxE"}
package/dist/index.d.mts CHANGED
@@ -1,6 +1,5 @@
1
1
  import { BASE_ERROR_INSTANCE, BaseError, ErrorOptions, INSTANCEOF_PROPERTY, hasInstanceof, markInstanceof } from "@ebec/core";
2
2
  import { Issue } from "validup";
3
-
4
3
  //#region src/types.d.ts
5
4
  type AuthupErrorOptions = ErrorOptions & {
6
5
  data?: Record<string, any>;
@@ -52,6 +51,18 @@ declare class BearerTokenMalformedError extends UnauthorizedError {
52
51
  constructor(message?: string);
53
52
  }
54
53
  //#endregion
54
+ //#region src/built-in/validation.d.ts
55
+ declare const VALIDATION_ERROR_INSTANCE: unique symbol;
56
+ /**
57
+ * A domain/business-rule violation raised by core logic. Deliberately NOT
58
+ * named after an HTTP status: core code stays transport-agnostic, and the HTTP
59
+ * adapter maps its `ErrorCode.BAD_REQUEST` to a 400 response
60
+ * (`httpStatusFromCode`). Prefer this over `BadRequestError` in `core/**`.
61
+ */
62
+ declare class ValidationError extends AuthupError {
63
+ constructor(input?: string | AuthupErrorOptions);
64
+ }
65
+ //#endregion
55
66
  //#region src/built-in/entity-conflict.d.ts
56
67
  declare const ENTITY_CONFLICT_ERROR_INSTANCE: unique symbol;
57
68
  declare class EntityConflictError extends AuthupError {
@@ -82,16 +93,43 @@ declare class InternalError extends AuthupError {
82
93
  constructor(input?: string | AuthupErrorOptions);
83
94
  }
84
95
  //#endregion
96
+ //#region src/built-in/login-throttled.d.ts
97
+ declare const LOGIN_THROTTLED_ERROR_INSTANCE: unique symbol;
98
+ type LoginThrottledErrorOptions = AuthupErrorOptions & {
99
+ /**
100
+ * Seconds until the sliding throttle window can release the pair.
101
+ */
102
+ retryAfter?: number;
103
+ };
104
+ declare class LoginThrottledError extends AuthupError {
105
+ constructor(input?: LoginThrottledErrorOptions);
106
+ }
107
+ //#endregion
108
+ //#region src/built-in/mfa-throttled.d.ts
109
+ declare const MFA_THROTTLED_ERROR_INSTANCE: unique symbol;
110
+ type MfaThrottledErrorOptions = AuthupErrorOptions & {
111
+ /**
112
+ * Seconds until the exponential backoff releases the account.
113
+ */
114
+ retryAfter?: number;
115
+ };
116
+ declare class MfaThrottledError extends AuthupError {
117
+ constructor(input?: MfaThrottledErrorOptions);
118
+ }
119
+ //#endregion
85
120
  //#region src/built-in/check.d.ts
86
121
  declare function isAuthHeaderError(input: unknown): input is AuthHeaderError;
87
122
  declare function isBearerTokenMalformedError(input: unknown): input is BearerTokenMalformedError;
88
123
  declare function isBadRequestError(input: unknown): input is BadRequestError;
124
+ declare function isValidationError(input: unknown): input is ValidationError;
89
125
  declare function isUnauthorizedError(input: unknown): input is UnauthorizedError;
90
126
  declare function isEntityNotFoundError(input: unknown): input is EntityNotFoundError;
91
127
  declare function isEntityConflictError(input: unknown): input is EntityConflictError;
92
128
  declare function isEntityInactiveError(input: unknown): input is EntityInactiveError;
93
129
  declare function isEntityCredentialsInvalidError(input: unknown): input is EntityCredentialsInvalidError;
94
130
  declare function isInternalError(input: unknown): input is InternalError;
131
+ declare function isLoginThrottledError(input: unknown): input is LoginThrottledError;
132
+ declare function isMfaThrottledError(input: unknown): input is MfaThrottledError;
95
133
  //#endregion
96
134
  //#region src/check.d.ts
97
135
  /**
@@ -133,6 +171,9 @@ declare enum ErrorCode {
133
171
  PASSWORD_RECOVERY_DISABLED = "password_recovery_disabled",
134
172
  EMAIL_VERIFICATION_REQUIRED = "email_verification_required",
135
173
  RESET_TOKEN_EXPIRED = "reset_token_expired",
174
+ LOGIN_ATTEMPT_THROTTLED = "login_attempt_throttled",
175
+ MFA_ATTEMPT_THROTTLED = "mfa_attempt_throttled",
176
+ MFA_NOT_CONFIGURABLE = "mfa_not_configurable",
136
177
  STORAGE_INSUFFICIENT = "storage_insufficient",
137
178
  JWK_INVALID = "jwk_invalid",
138
179
  JWK_NOT_FOUND = "jwk_not_found",
@@ -141,9 +182,16 @@ declare enum ErrorCode {
141
182
  JWT_EXPIRED = "expired_token",
142
183
  OAUTH_REDIRECT_URI_MISMATCH = "redirect_uri_mismatch",
143
184
  OAUTH_CLIENT_INVALID = "invalid_client",
185
+ OAUTH_CLIENT_UNAUTHORIZED = "unauthorized_client",
144
186
  OAUTH_GRANT_INVALID = "invalid_grant",
145
187
  OAUTH_GRANT_TYPE_UNSUPPORTED = "unsupported_token_grant_type",
146
188
  OAUTH_REQUEST_INVALID = "invalid_request",
189
+ OAUTH_LOGIN_REQUIRED = "login_required",
190
+ OAUTH_MFA_REQUIRED = "mfa_required",
191
+ OAUTH_ACCESS_DENIED = "access_denied",
192
+ OAUTH_INTERACTION_REQUIRED = "interaction_required",
193
+ OAUTH_ACCOUNT_SELECTION_REQUIRED = "account_selection_required",
194
+ OAUTH_CONSENT_REQUIRED = "consent_required",
147
195
  OAUTH_RESPONSE_TYPE_UNSUPPORTED = "unsupported_response_type",
148
196
  OAUTH_SCOPE_INVALID = "invalid_scope",
149
197
  OAUTH_SCOPE_INSUFFICIENT = "insufficient_scope",
@@ -215,5 +263,5 @@ declare function httpStatusFromCode(code: string, fallback?: number): number;
215
263
  */
216
264
  declare function codeFromHttpStatus(status: number): ErrorCode;
217
265
  //#endregion
218
- export { AUTHUP_ERROR_INSTANCE, AUTH_HEADER_ERROR_INSTANCE, AuthHeaderError, AuthupEntityErrorInput, AuthupEntityErrorOptions, AuthupError, AuthupErrorInput, AuthupErrorOptions, BAD_REQUEST_ERROR_INSTANCE, BASE_ERROR_INSTANCE, BEARER_TOKEN_MALFORMED_ERROR_INSTANCE, BadRequestError, BearerTokenMalformedError, ENTITY_CONFLICT_ERROR_INSTANCE, ENTITY_CREDENTIALS_INVALID_ERROR_INSTANCE, ENTITY_INACTIVE_ERROR_INSTANCE, ENTITY_NOT_FOUND_ERROR_INSTANCE, ERROR_CODE_TO_STATUS, EntityConflictError, EntityCredentialsInvalidError, EntityInactiveError, EntityNotFoundError, ErrorCode, INSTANCEOF_PROPERTY, INTERNAL_ERROR_INSTANCE, InternalError, UNAUTHORIZED_ERROR_INSTANCE, UnauthorizedError, codeFromHttpStatus, hasInstanceof, httpStatusFromCode, isAuthHeaderError, isAuthupError, isBadRequestError, isBearerTokenMalformedError, isEntityConflictError, isEntityCredentialsInvalidError, isEntityInactiveError, isEntityNotFoundError, isError, isInternalError, isUnauthorizedError, markInstanceof, normalizeError, serializeError };
266
+ export { AUTHUP_ERROR_INSTANCE, AUTH_HEADER_ERROR_INSTANCE, AuthHeaderError, AuthupEntityErrorInput, AuthupEntityErrorOptions, AuthupError, AuthupErrorInput, AuthupErrorOptions, BAD_REQUEST_ERROR_INSTANCE, BASE_ERROR_INSTANCE, BEARER_TOKEN_MALFORMED_ERROR_INSTANCE, BadRequestError, BearerTokenMalformedError, ENTITY_CONFLICT_ERROR_INSTANCE, ENTITY_CREDENTIALS_INVALID_ERROR_INSTANCE, ENTITY_INACTIVE_ERROR_INSTANCE, ENTITY_NOT_FOUND_ERROR_INSTANCE, ERROR_CODE_TO_STATUS, EntityConflictError, EntityCredentialsInvalidError, EntityInactiveError, EntityNotFoundError, ErrorCode, INSTANCEOF_PROPERTY, INTERNAL_ERROR_INSTANCE, InternalError, LOGIN_THROTTLED_ERROR_INSTANCE, LoginThrottledError, LoginThrottledErrorOptions, MFA_THROTTLED_ERROR_INSTANCE, MfaThrottledError, MfaThrottledErrorOptions, UNAUTHORIZED_ERROR_INSTANCE, UnauthorizedError, VALIDATION_ERROR_INSTANCE, ValidationError, codeFromHttpStatus, hasInstanceof, httpStatusFromCode, isAuthHeaderError, isAuthupError, isBadRequestError, isBearerTokenMalformedError, isEntityConflictError, isEntityCredentialsInvalidError, isEntityInactiveError, isEntityNotFoundError, isError, isInternalError, isLoginThrottledError, isMfaThrottledError, isUnauthorizedError, isValidationError, markInstanceof, normalizeError, serializeError };
219
267
  //# sourceMappingURL=index.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/module.ts","../src/built-in/unauthorized.ts","../src/built-in/auth-header.ts","../src/built-in/bad-request.ts","../src/built-in/bearer-token.ts","../src/built-in/entity-conflict.ts","../src/built-in/entity-credentials-invalid.ts","../src/built-in/entity-inactive.ts","../src/built-in/entity-not-found.ts","../src/built-in/internal.ts","../src/built-in/check.ts","../src/check.ts","../src/constants.ts","../src/normalize.ts","../src/serialize.ts","../src/status.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/module.ts","../src/built-in/unauthorized.ts","../src/built-in/auth-header.ts","../src/built-in/bad-request.ts","../src/built-in/bearer-token.ts","../src/built-in/validation.ts","../src/built-in/entity-conflict.ts","../src/built-in/entity-credentials-invalid.ts","../src/built-in/entity-inactive.ts","../src/built-in/entity-not-found.ts","../src/built-in/internal.ts","../src/built-in/login-throttled.ts","../src/built-in/mfa-throttled.ts","../src/built-in/check.ts","../src/check.ts","../src/constants.ts","../src/normalize.ts","../src/serialize.ts","../src/status.ts"],"mappings":";;;KASY,qBAAqB;EAC7B,OAAO;;KAGC,4BAA4B;KAE5B,2BAA2B;EACnC;;KAGQ,kCAAkC;;;cCRjC;cAEA,oBAAoB;WACb,QAAQ;WAER,OAAO;cAEX,QAAQ;EAWX;;;;;;;;;;;cCjBA;cAEA,0BAA0B;cACvB,iBAAiB;;;;cCJpB;cAEA,wBAAwB;cACrB;SAQL,gBAAgB,eAAY;;;;cCV1B;cAEA,wBAAwB;cACrB,iBAAiB;;;;cCJpB;cAEA,kCAAkC;cAC/B;;;;cCFH;;;;;;;cAQA,wBAAwB;cACrB,iBAAiB;;;;cCTpB;cAEA,4BAA4B;cACzB,iBAAiB;;;;cCHpB;cAEA,sCAAsC;cACnC,iBAAiB;;;;cCHpB;cAEA,4BAA4B;cACzB,iBAAiB;;;;cCHpB;cAEA,4BAA4B;cACzB,iBAAiB;;;;cCHpB;cAEA,sBAAsB;cACnB,iBAAiB;;;;cCHpB;KAED,6BAA6B;;;;EAIrC;;cAGS,4BAA4B;cACzB,QAAQ;;;;cCVX;KAED,2BAA2B;;;;EAInC;;cAGS,0BAA0B;cACvB,QAAQ;;;;iBCCR,kBAAkB,iBAAiB,SAAS;iBAM5C,4BAA4B,iBAAiB,SAAS;iBAMtD,kBAAkB,iBAAiB,SAAS;iBAM5C,kBAAkB,iBAAiB,SAAS;iBAM5C,oBAAoB,iBAAiB,SAAS;iBAM9C,sBAAsB,iBAAiB,SAAS;iBAMhD,sBAAsB,iBAAiB,SAAS;iBAMhD,sBAAsB,iBAAiB,SAAS;iBAMhD,gCAAgC,iBAAiB,SAAS;iBAM1D,gBAAgB,iBAAiB,SAAS;iBAM1C,sBAAsB,iBAAiB,SAAS;iBAMhD,oBAAoB,iBAAiB,SAAS;;;;;;;;;;;;iBChE9C,QAAQ,iBAAiB,SAAS;;;;;;;;;;;;iBAelC,cAAc,iBAAiB,SAAS;;;aCjC5C;EAER;EACA;EAGA;EACA;EAGA;EAGA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EAGA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EAGA;EACA;EACA;;;;;;;;;;;;;iBCtDY,eAAe,iBAAiB;;;;;;;;;;;;;;;;iBCIhC,eAAe,OAAO,QAAQ;;;;;;;;;;;;;;;;cCAjC,sBAAsB,SAAS,QAAQ,UAAU;;;;;iBAkC9C,mBAAmB,cAAc;;;;;;;;;;;iBAcjC,mBAAmB,iBAAiB"}
package/dist/index.mjs CHANGED
@@ -15,6 +15,9 @@ let ErrorCode = /* @__PURE__ */ function(ErrorCode) {
15
15
  ErrorCode["PASSWORD_RECOVERY_DISABLED"] = "password_recovery_disabled";
16
16
  ErrorCode["EMAIL_VERIFICATION_REQUIRED"] = "email_verification_required";
17
17
  ErrorCode["RESET_TOKEN_EXPIRED"] = "reset_token_expired";
18
+ ErrorCode["LOGIN_ATTEMPT_THROTTLED"] = "login_attempt_throttled";
19
+ ErrorCode["MFA_ATTEMPT_THROTTLED"] = "mfa_attempt_throttled";
20
+ ErrorCode["MFA_NOT_CONFIGURABLE"] = "mfa_not_configurable";
18
21
  ErrorCode["STORAGE_INSUFFICIENT"] = "storage_insufficient";
19
22
  ErrorCode["JWK_INVALID"] = "jwk_invalid";
20
23
  ErrorCode["JWK_NOT_FOUND"] = "jwk_not_found";
@@ -23,9 +26,16 @@ let ErrorCode = /* @__PURE__ */ function(ErrorCode) {
23
26
  ErrorCode["JWT_EXPIRED"] = "expired_token";
24
27
  ErrorCode["OAUTH_REDIRECT_URI_MISMATCH"] = "redirect_uri_mismatch";
25
28
  ErrorCode["OAUTH_CLIENT_INVALID"] = "invalid_client";
29
+ ErrorCode["OAUTH_CLIENT_UNAUTHORIZED"] = "unauthorized_client";
26
30
  ErrorCode["OAUTH_GRANT_INVALID"] = "invalid_grant";
27
31
  ErrorCode["OAUTH_GRANT_TYPE_UNSUPPORTED"] = "unsupported_token_grant_type";
28
32
  ErrorCode["OAUTH_REQUEST_INVALID"] = "invalid_request";
33
+ ErrorCode["OAUTH_LOGIN_REQUIRED"] = "login_required";
34
+ ErrorCode["OAUTH_MFA_REQUIRED"] = "mfa_required";
35
+ ErrorCode["OAUTH_ACCESS_DENIED"] = "access_denied";
36
+ ErrorCode["OAUTH_INTERACTION_REQUIRED"] = "interaction_required";
37
+ ErrorCode["OAUTH_ACCOUNT_SELECTION_REQUIRED"] = "account_selection_required";
38
+ ErrorCode["OAUTH_CONSENT_REQUIRED"] = "consent_required";
29
39
  ErrorCode["OAUTH_RESPONSE_TYPE_UNSUPPORTED"] = "unsupported_response_type";
30
40
  ErrorCode["OAUTH_SCOPE_INVALID"] = "invalid_scope";
31
41
  ErrorCode["OAUTH_SCOPE_INSUFFICIENT"] = "insufficient_scope";
@@ -141,6 +151,24 @@ function isAuthupError(input) {
141
151
  return Array.isArray(input.issues);
142
152
  }
143
153
  //#endregion
154
+ //#region src/built-in/validation.ts
155
+ const VALIDATION_ERROR_INSTANCE = Symbol.for("@authup/errors/ValidationError");
156
+ /**
157
+ * A domain/business-rule violation raised by core logic. Deliberately NOT
158
+ * named after an HTTP status: core code stays transport-agnostic, and the HTTP
159
+ * adapter maps its `ErrorCode.BAD_REQUEST` to a 400 response
160
+ * (`httpStatusFromCode`). Prefer this over `BadRequestError` in `core/**`.
161
+ */
162
+ var ValidationError = class extends AuthupError {
163
+ constructor(input) {
164
+ super({
165
+ code: "bad_request",
166
+ ...typeof input === "string" ? { message: input } : input ?? {}
167
+ });
168
+ markInstanceof$1(this, VALIDATION_ERROR_INSTANCE);
169
+ }
170
+ };
171
+ //#endregion
144
172
  //#region src/built-in/entity-conflict.ts
145
173
  const ENTITY_CONFLICT_ERROR_INSTANCE = Symbol.for("@authup/errors/EntityConflictError");
146
174
  var EntityConflictError = class extends AuthupError {
@@ -210,6 +238,42 @@ var InternalError = class extends AuthupError {
210
238
  }
211
239
  };
212
240
  //#endregion
241
+ //#region src/built-in/login-throttled.ts
242
+ const LOGIN_THROTTLED_ERROR_INSTANCE = Symbol.for("@authup/errors/LoginThrottledError");
243
+ var LoginThrottledError = class extends AuthupError {
244
+ constructor(input) {
245
+ const { retryAfter, ...rest } = input ?? {};
246
+ super({
247
+ code: "login_attempt_throttled",
248
+ message: "Too many failed login attempts. Please try again later.",
249
+ ...rest,
250
+ data: {
251
+ ...typeof retryAfter === "number" ? { retryAfter } : {},
252
+ ...rest.data ?? {}
253
+ }
254
+ });
255
+ markInstanceof$1(this, LOGIN_THROTTLED_ERROR_INSTANCE);
256
+ }
257
+ };
258
+ //#endregion
259
+ //#region src/built-in/mfa-throttled.ts
260
+ const MFA_THROTTLED_ERROR_INSTANCE = Symbol.for("@authup/errors/MfaThrottledError");
261
+ var MfaThrottledError = class extends AuthupError {
262
+ constructor(input) {
263
+ const { retryAfter, ...rest } = input ?? {};
264
+ super({
265
+ code: "mfa_attempt_throttled",
266
+ message: "Too many failed verification attempts. Please try again later.",
267
+ ...rest,
268
+ data: {
269
+ ...typeof retryAfter === "number" ? { retryAfter } : {},
270
+ ...rest.data ?? {}
271
+ }
272
+ });
273
+ markInstanceof$1(this, MFA_THROTTLED_ERROR_INSTANCE);
274
+ }
275
+ };
276
+ //#endregion
213
277
  //#region src/built-in/check.ts
214
278
  function isAuthHeaderError(input) {
215
279
  if (hasInstanceof$1(input, AUTH_HEADER_ERROR_INSTANCE)) return true;
@@ -226,6 +290,11 @@ function isBadRequestError(input) {
226
290
  if (!isAuthupError(input)) return false;
227
291
  return input.code === "bad_request";
228
292
  }
293
+ function isValidationError(input) {
294
+ if (hasInstanceof$1(input, VALIDATION_ERROR_INSTANCE)) return true;
295
+ if (!isAuthupError(input)) return false;
296
+ return input.code === "bad_request";
297
+ }
229
298
  function isUnauthorizedError(input) {
230
299
  if (hasInstanceof$1(input, UNAUTHORIZED_ERROR_INSTANCE)) return true;
231
300
  if (!isAuthupError(input)) return false;
@@ -256,6 +325,16 @@ function isInternalError(input) {
256
325
  if (!isAuthupError(input)) return false;
257
326
  return input.code === "internal_error";
258
327
  }
328
+ function isLoginThrottledError(input) {
329
+ if (hasInstanceof$1(input, LOGIN_THROTTLED_ERROR_INSTANCE)) return true;
330
+ if (!isAuthupError(input)) return false;
331
+ return input.code === "login_attempt_throttled";
332
+ }
333
+ function isMfaThrottledError(input) {
334
+ if (hasInstanceof$1(input, MFA_THROTTLED_ERROR_INSTANCE)) return true;
335
+ if (!isAuthupError(input)) return false;
336
+ return input.code === "mfa_attempt_throttled";
337
+ }
259
338
  //#endregion
260
339
  //#region src/normalize.ts
261
340
  /**
@@ -324,6 +403,8 @@ const ERROR_CODE_TO_STATUS = {
324
403
  ["entity_not_found"]: 404,
325
404
  ["jwk_not_found"]: 404,
326
405
  ["entity_conflict"]: 409,
406
+ ["login_attempt_throttled"]: 429,
407
+ ["mfa_attempt_throttled"]: 429,
327
408
  ["internal_error"]: 500,
328
409
  ["storage_insufficient"]: 507
329
410
  };
@@ -349,11 +430,12 @@ function codeFromHttpStatus(status) {
349
430
  if (status === 409) return "entity_conflict";
350
431
  if (status === 401) return "identity_unauthorized";
351
432
  if (status === 403) return "permission_denied";
433
+ if (status === 429) return "login_attempt_throttled";
352
434
  if (status === 507) return "storage_insufficient";
353
435
  if (status >= 500) return "internal_error";
354
436
  return "bad_request";
355
437
  }
356
438
  //#endregion
357
- export { AUTHUP_ERROR_INSTANCE, AUTH_HEADER_ERROR_INSTANCE, AuthHeaderError, AuthupError, BAD_REQUEST_ERROR_INSTANCE, BASE_ERROR_INSTANCE, BEARER_TOKEN_MALFORMED_ERROR_INSTANCE, BadRequestError, BearerTokenMalformedError, ENTITY_CONFLICT_ERROR_INSTANCE, ENTITY_CREDENTIALS_INVALID_ERROR_INSTANCE, ENTITY_INACTIVE_ERROR_INSTANCE, ENTITY_NOT_FOUND_ERROR_INSTANCE, ERROR_CODE_TO_STATUS, EntityConflictError, EntityCredentialsInvalidError, EntityInactiveError, EntityNotFoundError, ErrorCode, INSTANCEOF_PROPERTY, INTERNAL_ERROR_INSTANCE, InternalError, UNAUTHORIZED_ERROR_INSTANCE, UnauthorizedError, codeFromHttpStatus, hasInstanceof, httpStatusFromCode, isAuthHeaderError, isAuthupError, isBadRequestError, isBearerTokenMalformedError, isEntityConflictError, isEntityCredentialsInvalidError, isEntityInactiveError, isEntityNotFoundError, isError, isInternalError, isUnauthorizedError, markInstanceof, normalizeError, serializeError };
439
+ export { AUTHUP_ERROR_INSTANCE, AUTH_HEADER_ERROR_INSTANCE, AuthHeaderError, AuthupError, BAD_REQUEST_ERROR_INSTANCE, BASE_ERROR_INSTANCE, BEARER_TOKEN_MALFORMED_ERROR_INSTANCE, BadRequestError, BearerTokenMalformedError, ENTITY_CONFLICT_ERROR_INSTANCE, ENTITY_CREDENTIALS_INVALID_ERROR_INSTANCE, ENTITY_INACTIVE_ERROR_INSTANCE, ENTITY_NOT_FOUND_ERROR_INSTANCE, ERROR_CODE_TO_STATUS, EntityConflictError, EntityCredentialsInvalidError, EntityInactiveError, EntityNotFoundError, ErrorCode, INSTANCEOF_PROPERTY, INTERNAL_ERROR_INSTANCE, InternalError, LOGIN_THROTTLED_ERROR_INSTANCE, LoginThrottledError, MFA_THROTTLED_ERROR_INSTANCE, MfaThrottledError, UNAUTHORIZED_ERROR_INSTANCE, UnauthorizedError, VALIDATION_ERROR_INSTANCE, ValidationError, codeFromHttpStatus, hasInstanceof, httpStatusFromCode, isAuthHeaderError, isAuthupError, isBadRequestError, isBearerTokenMalformedError, isEntityConflictError, isEntityCredentialsInvalidError, isEntityInactiveError, isEntityNotFoundError, isError, isInternalError, isLoginThrottledError, isMfaThrottledError, isUnauthorizedError, isValidationError, markInstanceof, normalizeError, serializeError };
358
440
 
359
441
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["isRawError","hasInstanceof","hasInstanceof"],"sources":["../src/constants.ts","../src/module.ts","../src/built-in/unauthorized.ts","../src/built-in/auth-header.ts","../src/built-in/bad-request.ts","../src/built-in/bearer-token.ts","../src/check.ts","../src/built-in/entity-conflict.ts","../src/built-in/entity-credentials-invalid.ts","../src/built-in/entity-inactive.ts","../src/built-in/entity-not-found.ts","../src/built-in/internal.ts","../src/built-in/check.ts","../src/normalize.ts","../src/serialize.ts","../src/status.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum ErrorCode {\n // Generic\n BAD_REQUEST = 'bad_request',\n INTERNAL_ERROR = 'internal_error',\n\n // HTTP Codes\n HTTP_HEADER_AUTH_TYPE_UNSUPPORTED = 'unsupported_auth_header_type',\n HTTP_BEARER_TOKEN_MALFORMED = 'bearer_token_malformed',\n\n // Identity Auth\n IDENTITY_UNAUTHORIZED = 'identity_unauthorized',\n\n // Entity Codes\n ENTITY_CREDENTIALS_INVALID = 'invalid_credentials',\n ENTITY_INACTIVE = 'entity_inactive',\n ENTITY_NOT_FOUND = 'entity_not_found',\n ENTITY_CONFLICT = 'entity_conflict',\n ENTITY_RELATION_INVALID = 'entity_relation_invalid',\n\n // Identity Codes\n REGISTRATION_DISABLED = 'registration_disabled',\n PASSWORD_RECOVERY_DISABLED = 'password_recovery_disabled',\n EMAIL_VERIFICATION_REQUIRED = 'email_verification_required',\n RESET_TOKEN_EXPIRED = 'reset_token_expired',\n\n // Storage Codes\n STORAGE_INSUFFICIENT = 'storage_insufficient',\n\n // JWK Codes\n JWK_INVALID = 'jwk_invalid',\n JWK_NOT_FOUND = 'jwk_not_found',\n\n // JWT Codes\n JWT_INVALID = 'invalid_token',\n JWT_INACTIVE = 'inactive_token',\n JWT_EXPIRED = 'expired_token',\n\n // Oauth2 Codes\n OAUTH_REDIRECT_URI_MISMATCH = 'redirect_uri_mismatch',\n OAUTH_CLIENT_INVALID = 'invalid_client',\n OAUTH_GRANT_INVALID = 'invalid_grant',\n OAUTH_GRANT_TYPE_UNSUPPORTED = 'unsupported_token_grant_type',\n OAUTH_REQUEST_INVALID = 'invalid_request',\n OAUTH_RESPONSE_TYPE_UNSUPPORTED = 'unsupported_response_type',\n OAUTH_SCOPE_INVALID = 'invalid_scope',\n OAUTH_SCOPE_INSUFFICIENT = 'insufficient_scope',\n\n // Permission Codes\n PERMISSION_NOT_FOUND = 'permission_not_found',\n PERMISSION_DENIED = 'permission_denied',\n PERMISSION_EVALUATION_FAILED = 'permission_evaluation_failed',\n\n // Policy Codes\n POLICY_EVALUATOR_NOT_FOUND = 'policy_evaluator_not_found',\n POLICY_EVALUATOR_NOT_PROCESSABLE = 'policy_evaluator_not_processable',\n POLICY_EVALUATOR_CONTEXT_INVALID = 'policy_evaluator_context_invalid',\n}\n","/*\n * Copyright (c) 2024-2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { AuthupErrorInput } from './types.ts';\nimport { BaseError, markInstanceof } from '@ebec/core';\nimport type { Issue } from 'validup';\n\nexport const AUTHUP_ERROR_INSTANCE = Symbol.for('@authup/errors/AuthupError');\n\nexport class AuthupError extends BaseError {\n public readonly issues: Issue[];\n\n public readonly data?: Record<string, any>;\n\n constructor(input?: AuthupErrorInput) {\n super(input);\n markInstanceof(this, AUTHUP_ERROR_INSTANCE);\n\n this.issues = [];\n\n if (input && typeof input !== 'string' && input.data) {\n this.data = input.data;\n }\n }\n\n override toJSON() {\n return {\n ...super.toJSON(),\n issues: this.issues,\n ...(this.data ?? {}),\n };\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ErrorCode } from '../constants.ts';\nimport { markInstanceof } from '@ebec/core';\nimport { AuthupError } from '../module.ts';\nimport type { AuthupErrorOptions } from '../types.ts';\n\nexport const UNAUTHORIZED_ERROR_INSTANCE = Symbol.for('@authup/errors/UnauthorizedError');\n\nexport class UnauthorizedError extends AuthupError {\n constructor(input?: string | AuthupErrorOptions) {\n const options: AuthupErrorOptions = typeof input === 'string' ? { message: input } : (input ?? {});\n super({\n code: ErrorCode.IDENTITY_UNAUTHORIZED,\n message: 'Authentication required.',\n ...options,\n });\n markInstanceof(this, UNAUTHORIZED_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2022-2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ErrorCode } from '../constants.ts';\nimport { markInstanceof } from '@ebec/core';\nimport { UnauthorizedError } from './unauthorized.ts';\n\nexport const AUTH_HEADER_ERROR_INSTANCE = Symbol.for('@authup/errors/AuthHeaderError');\n\nexport class AuthHeaderError extends UnauthorizedError {\n constructor(message: string) {\n super({\n code: ErrorCode.HTTP_HEADER_AUTH_TYPE_UNSUPPORTED,\n message,\n });\n markInstanceof(this, AUTH_HEADER_ERROR_INSTANCE);\n }\n\n static unsupportedType(type: string) {\n return new AuthHeaderError(`The authorization header type ${type} is not supported.`);\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ErrorCode } from '../constants.ts';\nimport { markInstanceof } from '@ebec/core';\nimport { AuthupError } from '../module.ts';\nimport type { AuthupErrorOptions } from '../types.ts';\n\nexport const BAD_REQUEST_ERROR_INSTANCE = Symbol.for('@authup/errors/BadRequestError');\n\nexport class BadRequestError extends AuthupError {\n constructor(input?: string | AuthupErrorOptions) {\n const options: AuthupErrorOptions = typeof input === 'string' ? { message: input } : (input ?? {});\n super({\n code: ErrorCode.BAD_REQUEST,\n ...options,\n });\n markInstanceof(this, BAD_REQUEST_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2022-2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ErrorCode } from '../constants.ts';\nimport { markInstanceof } from '@ebec/core';\nimport { UnauthorizedError } from './unauthorized.ts';\n\nexport const BEARER_TOKEN_MALFORMED_ERROR_INSTANCE = Symbol.for('@authup/errors/BearerTokenMalformedError');\n\nexport class BearerTokenMalformedError extends UnauthorizedError {\n constructor(message?: string) {\n super({\n code: ErrorCode.HTTP_BEARER_TOKEN_MALFORMED,\n message: message ?? 'The Authorization header is malformed.',\n });\n markInstanceof(this, BEARER_TOKEN_MALFORMED_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n hasInstanceof,\n isBaseError,\n isObject,\n isError as isRawError,\n} from '@ebec/core';\nimport type { AuthupError } from './module.ts';\nimport { AUTHUP_ERROR_INSTANCE } from './module.ts';\n\n/**\n * Duck-type guard for `Error`.\n *\n * Re-exports `@ebec/core`'s shape-based check: `input` matches when it\n * carries the standard `name` / `message` / `stack` triplet, regardless\n * of which realm or class hierarchy produced it. Use this instead of\n * `instanceof Error` for cross-realm boundaries (worker threads,\n * duplicate-module copies) where `instanceof` can yield false negatives.\n */\nexport function isError(input: unknown): input is Error {\n return isRawError(input);\n}\n\n/**\n * Duck-type guard for AuthupError.\n *\n * Fast path: input has the AuthupError marker in its `@instanceof` chain.\n * Subclass instances also accumulate this marker, so this guard matches any\n * AuthupError subclass (`OAuth2Error`, `JWTError`, etc.).\n *\n * Slow path: input is shape-compatible with AuthupError (BaseError + has\n * `issues: Issue[]`). Catches cases where the marker is missing — plain\n * objects rehydrated from JSON, older builds without the marker.\n */\nexport function isAuthupError(input: unknown): input is AuthupError {\n if (hasInstanceof(input, AUTHUP_ERROR_INSTANCE)) {\n return true;\n }\n\n if (!isBaseError(input)) {\n return false;\n }\n\n if (!isObject(input)) {\n return false;\n }\n\n return Array.isArray(input.issues);\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { markInstanceof } from '@ebec/core';\nimport { ErrorCode } from '../constants.ts';\nimport { AuthupError } from '../module.ts';\nimport type { AuthupEntityErrorOptions } from '../types.ts';\n\nexport const ENTITY_CONFLICT_ERROR_INSTANCE = Symbol.for('@authup/errors/EntityConflictError');\n\nexport class EntityConflictError extends AuthupError {\n constructor(input?: string | AuthupEntityErrorOptions) {\n const options: AuthupEntityErrorOptions = typeof input === 'string' ? { message: input } : (input ?? {});\n const { entity, ...rest } = options;\n super({\n code: ErrorCode.ENTITY_CONFLICT,\n message: entity ? `The ${entity} already exists.` : 'Entity already exists.',\n ...rest,\n });\n markInstanceof(this, ENTITY_CONFLICT_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { markInstanceof } from '@ebec/core';\nimport { ErrorCode } from '../constants.ts';\nimport { AuthupError } from '../module.ts';\nimport type { AuthupEntityErrorOptions } from '../types.ts';\n\nexport const ENTITY_CREDENTIALS_INVALID_ERROR_INSTANCE = Symbol.for('@authup/errors/EntityCredentialsInvalidError');\n\nexport class EntityCredentialsInvalidError extends AuthupError {\n constructor(input?: string | AuthupEntityErrorOptions) {\n const options: AuthupEntityErrorOptions = typeof input === 'string' ? { message: input } : (input ?? {});\n const { entity, ...rest } = options;\n super({\n code: ErrorCode.ENTITY_CREDENTIALS_INVALID,\n message: entity ? `The ${entity} credentials are invalid.` : 'Credentials are invalid.',\n ...rest,\n });\n markInstanceof(this, ENTITY_CREDENTIALS_INVALID_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { markInstanceof } from '@ebec/core';\nimport { ErrorCode } from '../constants.ts';\nimport { AuthupError } from '../module.ts';\nimport type { AuthupEntityErrorOptions } from '../types.ts';\n\nexport const ENTITY_INACTIVE_ERROR_INSTANCE = Symbol.for('@authup/errors/EntityInactiveError');\n\nexport class EntityInactiveError extends AuthupError {\n constructor(input?: string | AuthupEntityErrorOptions) {\n const options: AuthupEntityErrorOptions = typeof input === 'string' ? { message: input } : (input ?? {});\n const { entity, ...rest } = options;\n super({\n code: ErrorCode.ENTITY_INACTIVE,\n message: entity ? `The ${entity} is inactive.` : 'Entity is inactive.',\n ...rest,\n });\n markInstanceof(this, ENTITY_INACTIVE_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { markInstanceof } from '@ebec/core';\nimport { ErrorCode } from '../constants.ts';\nimport { AuthupError } from '../module.ts';\nimport type { AuthupEntityErrorOptions } from '../types.ts';\n\nexport const ENTITY_NOT_FOUND_ERROR_INSTANCE = Symbol.for('@authup/errors/EntityNotFoundError');\n\nexport class EntityNotFoundError extends AuthupError {\n constructor(input?: string | AuthupEntityErrorOptions) {\n const options: AuthupEntityErrorOptions = typeof input === 'string' ? { message: input } : (input ?? {});\n const { entity, ...rest } = options;\n super({\n code: ErrorCode.ENTITY_NOT_FOUND,\n message: entity ? `The ${entity} was not found.` : 'Entity not found.',\n ...rest,\n });\n markInstanceof(this, ENTITY_NOT_FOUND_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ErrorCode } from '../constants.ts';\nimport { markInstanceof } from '@ebec/core';\nimport { AuthupError } from '../module.ts';\nimport type { AuthupErrorOptions } from '../types.ts';\n\nexport const INTERNAL_ERROR_INSTANCE = Symbol.for('@authup/errors/InternalError');\n\nexport class InternalError extends AuthupError {\n constructor(input?: string | AuthupErrorOptions) {\n const options: AuthupErrorOptions = typeof input === 'string' ? { message: input } : (input ?? {});\n super({\n code: ErrorCode.INTERNAL_ERROR,\n message: 'An internal error occurred.',\n ...options,\n });\n markInstanceof(this, INTERNAL_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isAuthupError } from '../check.ts';\nimport { ErrorCode } from '../constants.ts';\nimport { hasInstanceof } from '@ebec/core';\nimport { AUTH_HEADER_ERROR_INSTANCE, type AuthHeaderError } from './auth-header.ts';\nimport { BAD_REQUEST_ERROR_INSTANCE, type BadRequestError } from './bad-request.ts';\nimport { BEARER_TOKEN_MALFORMED_ERROR_INSTANCE, type BearerTokenMalformedError } from './bearer-token.ts';\nimport { ENTITY_CONFLICT_ERROR_INSTANCE, type EntityConflictError } from './entity-conflict.ts';\nimport { ENTITY_CREDENTIALS_INVALID_ERROR_INSTANCE, type EntityCredentialsInvalidError } from './entity-credentials-invalid.ts';\nimport { ENTITY_INACTIVE_ERROR_INSTANCE, type EntityInactiveError } from './entity-inactive.ts';\nimport { ENTITY_NOT_FOUND_ERROR_INSTANCE, type EntityNotFoundError } from './entity-not-found.ts';\nimport { INTERNAL_ERROR_INSTANCE, type InternalError } from './internal.ts';\nimport { UNAUTHORIZED_ERROR_INSTANCE, type UnauthorizedError } from './unauthorized.ts';\n\nexport function isAuthHeaderError(input: unknown): input is AuthHeaderError {\n if (hasInstanceof(input, AUTH_HEADER_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.HTTP_HEADER_AUTH_TYPE_UNSUPPORTED;\n}\n\nexport function isBearerTokenMalformedError(input: unknown): input is BearerTokenMalformedError {\n if (hasInstanceof(input, BEARER_TOKEN_MALFORMED_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.HTTP_BEARER_TOKEN_MALFORMED;\n}\n\nexport function isBadRequestError(input: unknown): input is BadRequestError {\n if (hasInstanceof(input, BAD_REQUEST_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.BAD_REQUEST;\n}\n\nexport function isUnauthorizedError(input: unknown): input is UnauthorizedError {\n if (hasInstanceof(input, UNAUTHORIZED_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.IDENTITY_UNAUTHORIZED;\n}\n\nexport function isEntityNotFoundError(input: unknown): input is EntityNotFoundError {\n if (hasInstanceof(input, ENTITY_NOT_FOUND_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.ENTITY_NOT_FOUND;\n}\n\nexport function isEntityConflictError(input: unknown): input is EntityConflictError {\n if (hasInstanceof(input, ENTITY_CONFLICT_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.ENTITY_CONFLICT;\n}\n\nexport function isEntityInactiveError(input: unknown): input is EntityInactiveError {\n if (hasInstanceof(input, ENTITY_INACTIVE_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.ENTITY_INACTIVE;\n}\n\nexport function isEntityCredentialsInvalidError(input: unknown): input is EntityCredentialsInvalidError {\n if (hasInstanceof(input, ENTITY_CREDENTIALS_INVALID_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.ENTITY_CREDENTIALS_INVALID;\n}\n\nexport function isInternalError(input: unknown): input is InternalError {\n if (hasInstanceof(input, INTERNAL_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.INTERNAL_ERROR;\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isError } from './check.ts';\n\n/**\n * Normalize an arbitrary thrown value into an `Error` instance.\n *\n * Useful at error-pipeline boundaries (catch blocks, error middleware,\n * fallbacks) where TypeScript hands you `unknown` but downstream code\n * wants a real `Error` to inspect or rethrow. Duck-typed: any value\n * passing `isError` is returned as-is. Strings become `new Error(str)`;\n * any other value is stringified.\n */\nexport function normalizeError(input: unknown): Error {\n if (isError(input)) {\n return input;\n }\n\n if (typeof input === 'string') {\n return new Error(input);\n }\n\n return new Error(String(input));\n}\n\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@ebec/core';\n\n/**\n * Convert an `Error` (or any value with a `toJSON()` method) into a\n * plain object suitable for embedding in a JSON response body.\n *\n * Calls `input.toJSON()` if present — preserves every attribute the\n * error chose to surface (`code`, `cause`, `errors`, `issues`, `data`,\n * AuthupError sub-class fields, ...). Falls back to spreading the\n * Error's enumerable own properties alongside the standard\n * `name` / `message` pair, so caller-attached fields survive.\n *\n * Pair with `normalizeError` to handle arbitrary thrown values:\n * `serializeError(normalizeError(e))`.\n */\nexport function serializeError(input: Error): Record<string, any> {\n if ('toJSON' in input && typeof input.toJSON === 'function') {\n const output = input.toJSON();\n if (isObject(output)) {\n return output;\n }\n }\n\n return {\n ...input,\n name: input.name,\n message: input.message,\n };\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ErrorCode } from './constants.ts';\n\n/**\n * Default mapping from `ErrorCode` to HTTP status. Adapters apply this and\n * may layer their own overrides on top. Codes not listed here fall back\n * to 400 (Bad Request) — which is the right default for \"validation /\n * malformed-request\" style errors.\n *\n * The mapping mirrors the HTTP statuses produced by the pre-refactor\n * `@ebec/http`-coupled error classes, with one intentional change:\n *\n * - `OAUTH_CLIENT_INVALID`: 400 → **401**, per RFC 6749 §5.2 (`invalid_client`\n * responses should use 401). Surfaces as a behavior change in HTTP-level\n * tests asserting `status: 400, code: OAUTH_CLIENT_INVALID`.\n */\nexport const ERROR_CODE_TO_STATUS: Readonly<Partial<Record<`${ErrorCode}`, number>>> = {\n // 401\n [ErrorCode.OAUTH_CLIENT_INVALID]: 401,\n [ErrorCode.HTTP_BEARER_TOKEN_MALFORMED]: 401,\n [ErrorCode.HTTP_HEADER_AUTH_TYPE_UNSUPPORTED]: 401,\n [ErrorCode.IDENTITY_UNAUTHORIZED]: 401,\n\n // 403\n [ErrorCode.PERMISSION_NOT_FOUND]: 403,\n [ErrorCode.PERMISSION_DENIED]: 403,\n [ErrorCode.PERMISSION_EVALUATION_FAILED]: 403,\n\n // 404\n [ErrorCode.ENTITY_NOT_FOUND]: 404,\n [ErrorCode.JWK_NOT_FOUND]: 404,\n\n // 409\n [ErrorCode.ENTITY_CONFLICT]: 409,\n\n // 500\n [ErrorCode.INTERNAL_ERROR]: 500,\n\n // 507\n [ErrorCode.STORAGE_INSUFFICIENT]: 507,\n};\n\n/**\n * Resolve an HTTP status for a given error code. Unknown codes fall back\n * to `fallback` (default 400).\n */\nexport function httpStatusFromCode(code: string, fallback = 400): number {\n return ERROR_CODE_TO_STATUS[code as `${ErrorCode}`] ?? fallback;\n}\n\n/**\n * Resolve a semantic `ErrorCode` for a foreign HTTP status. Used at the\n * boundary where a non-AuthupError (e.g. `@ebec/http` HTTPError thrown by\n * the framework, or a foreign service response) enters our system and\n * needs to be normalized into an `AuthupError` with an authup-vocabulary\n * code. Status is the only stable handshake across the two vocabularies.\n *\n * Default mapping covers the common HTTP statuses. Anything 5xx\n * collapses to `INTERNAL_ERROR`; unknown 4xx collapses to `BAD_REQUEST`.\n */\nexport function codeFromHttpStatus(status: number): ErrorCode {\n if (status === 404) return ErrorCode.ENTITY_NOT_FOUND;\n if (status === 409) return ErrorCode.ENTITY_CONFLICT;\n if (status === 401) return ErrorCode.IDENTITY_UNAUTHORIZED;\n if (status === 403) return ErrorCode.PERMISSION_DENIED;\n if (status === 507) return ErrorCode.STORAGE_INSUFFICIENT;\n if (status >= 500) return ErrorCode.INTERNAL_ERROR;\n return ErrorCode.BAD_REQUEST;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["isRawError","hasInstanceof","hasInstanceof"],"sources":["../src/constants.ts","../src/module.ts","../src/built-in/unauthorized.ts","../src/built-in/auth-header.ts","../src/built-in/bad-request.ts","../src/built-in/bearer-token.ts","../src/check.ts","../src/built-in/validation.ts","../src/built-in/entity-conflict.ts","../src/built-in/entity-credentials-invalid.ts","../src/built-in/entity-inactive.ts","../src/built-in/entity-not-found.ts","../src/built-in/internal.ts","../src/built-in/login-throttled.ts","../src/built-in/mfa-throttled.ts","../src/built-in/check.ts","../src/normalize.ts","../src/serialize.ts","../src/status.ts"],"sourcesContent":["/*\n * Copyright (c) 2022-2024.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nexport enum ErrorCode {\n // Generic\n BAD_REQUEST = 'bad_request',\n INTERNAL_ERROR = 'internal_error',\n\n // HTTP Codes\n HTTP_HEADER_AUTH_TYPE_UNSUPPORTED = 'unsupported_auth_header_type',\n HTTP_BEARER_TOKEN_MALFORMED = 'bearer_token_malformed',\n\n // Identity Auth\n IDENTITY_UNAUTHORIZED = 'identity_unauthorized',\n\n // Entity Codes\n ENTITY_CREDENTIALS_INVALID = 'invalid_credentials',\n ENTITY_INACTIVE = 'entity_inactive',\n ENTITY_NOT_FOUND = 'entity_not_found',\n ENTITY_CONFLICT = 'entity_conflict',\n ENTITY_RELATION_INVALID = 'entity_relation_invalid',\n\n // Identity Codes\n REGISTRATION_DISABLED = 'registration_disabled',\n PASSWORD_RECOVERY_DISABLED = 'password_recovery_disabled',\n EMAIL_VERIFICATION_REQUIRED = 'email_verification_required',\n RESET_TOKEN_EXPIRED = 'reset_token_expired',\n LOGIN_ATTEMPT_THROTTLED = 'login_attempt_throttled',\n MFA_ATTEMPT_THROTTLED = 'mfa_attempt_throttled',\n MFA_NOT_CONFIGURABLE = 'mfa_not_configurable',\n\n // Storage Codes\n STORAGE_INSUFFICIENT = 'storage_insufficient',\n\n // JWK Codes\n JWK_INVALID = 'jwk_invalid',\n JWK_NOT_FOUND = 'jwk_not_found',\n\n // JWT Codes\n JWT_INVALID = 'invalid_token',\n JWT_INACTIVE = 'inactive_token',\n JWT_EXPIRED = 'expired_token',\n\n // Oauth2 Codes\n OAUTH_REDIRECT_URI_MISMATCH = 'redirect_uri_mismatch',\n OAUTH_CLIENT_INVALID = 'invalid_client',\n OAUTH_CLIENT_UNAUTHORIZED = 'unauthorized_client',\n OAUTH_GRANT_INVALID = 'invalid_grant',\n OAUTH_GRANT_TYPE_UNSUPPORTED = 'unsupported_token_grant_type',\n OAUTH_REQUEST_INVALID = 'invalid_request',\n OAUTH_LOGIN_REQUIRED = 'login_required',\n OAUTH_MFA_REQUIRED = 'mfa_required',\n OAUTH_ACCESS_DENIED = 'access_denied',\n OAUTH_INTERACTION_REQUIRED = 'interaction_required',\n OAUTH_ACCOUNT_SELECTION_REQUIRED = 'account_selection_required',\n OAUTH_CONSENT_REQUIRED = 'consent_required',\n OAUTH_RESPONSE_TYPE_UNSUPPORTED = 'unsupported_response_type',\n OAUTH_SCOPE_INVALID = 'invalid_scope',\n OAUTH_SCOPE_INSUFFICIENT = 'insufficient_scope',\n\n // Permission Codes\n PERMISSION_NOT_FOUND = 'permission_not_found',\n PERMISSION_DENIED = 'permission_denied',\n PERMISSION_EVALUATION_FAILED = 'permission_evaluation_failed',\n\n // Policy Codes\n POLICY_EVALUATOR_NOT_FOUND = 'policy_evaluator_not_found',\n POLICY_EVALUATOR_NOT_PROCESSABLE = 'policy_evaluator_not_processable',\n POLICY_EVALUATOR_CONTEXT_INVALID = 'policy_evaluator_context_invalid',\n}\n","/*\n * Copyright (c) 2024-2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport type { AuthupErrorInput } from './types.ts';\nimport { BaseError, markInstanceof } from '@ebec/core';\nimport type { Issue } from 'validup';\n\nexport const AUTHUP_ERROR_INSTANCE = Symbol.for('@authup/errors/AuthupError');\n\nexport class AuthupError extends BaseError {\n public readonly issues: Issue[];\n\n public readonly data?: Record<string, any>;\n\n constructor(input?: AuthupErrorInput) {\n super(input);\n markInstanceof(this, AUTHUP_ERROR_INSTANCE);\n\n this.issues = [];\n\n if (input && typeof input !== 'string' && input.data) {\n this.data = input.data;\n }\n }\n\n override toJSON() {\n return {\n ...super.toJSON(),\n issues: this.issues,\n ...(this.data ?? {}),\n };\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ErrorCode } from '../constants.ts';\nimport { markInstanceof } from '@ebec/core';\nimport { AuthupError } from '../module.ts';\nimport type { AuthupErrorOptions } from '../types.ts';\n\nexport const UNAUTHORIZED_ERROR_INSTANCE = Symbol.for('@authup/errors/UnauthorizedError');\n\nexport class UnauthorizedError extends AuthupError {\n constructor(input?: string | AuthupErrorOptions) {\n const options: AuthupErrorOptions = typeof input === 'string' ? { message: input } : (input ?? {});\n super({\n code: ErrorCode.IDENTITY_UNAUTHORIZED,\n message: 'Authentication required.',\n ...options,\n });\n markInstanceof(this, UNAUTHORIZED_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2022-2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ErrorCode } from '../constants.ts';\nimport { markInstanceof } from '@ebec/core';\nimport { UnauthorizedError } from './unauthorized.ts';\n\nexport const AUTH_HEADER_ERROR_INSTANCE = Symbol.for('@authup/errors/AuthHeaderError');\n\nexport class AuthHeaderError extends UnauthorizedError {\n constructor(message: string) {\n super({\n code: ErrorCode.HTTP_HEADER_AUTH_TYPE_UNSUPPORTED,\n message,\n });\n markInstanceof(this, AUTH_HEADER_ERROR_INSTANCE);\n }\n\n static unsupportedType(type: string) {\n return new AuthHeaderError(`The authorization header type ${type} is not supported.`);\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ErrorCode } from '../constants.ts';\nimport { markInstanceof } from '@ebec/core';\nimport { AuthupError } from '../module.ts';\nimport type { AuthupErrorOptions } from '../types.ts';\n\nexport const BAD_REQUEST_ERROR_INSTANCE = Symbol.for('@authup/errors/BadRequestError');\n\nexport class BadRequestError extends AuthupError {\n constructor(input?: string | AuthupErrorOptions) {\n const options: AuthupErrorOptions = typeof input === 'string' ? { message: input } : (input ?? {});\n super({\n code: ErrorCode.BAD_REQUEST,\n ...options,\n });\n markInstanceof(this, BAD_REQUEST_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2022-2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ErrorCode } from '../constants.ts';\nimport { markInstanceof } from '@ebec/core';\nimport { UnauthorizedError } from './unauthorized.ts';\n\nexport const BEARER_TOKEN_MALFORMED_ERROR_INSTANCE = Symbol.for('@authup/errors/BearerTokenMalformedError');\n\nexport class BearerTokenMalformedError extends UnauthorizedError {\n constructor(message?: string) {\n super({\n code: ErrorCode.HTTP_BEARER_TOKEN_MALFORMED,\n message: message ?? 'The Authorization header is malformed.',\n });\n markInstanceof(this, BEARER_TOKEN_MALFORMED_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport {\n hasInstanceof,\n isBaseError,\n isObject,\n isError as isRawError,\n} from '@ebec/core';\nimport type { AuthupError } from './module.ts';\nimport { AUTHUP_ERROR_INSTANCE } from './module.ts';\n\n/**\n * Duck-type guard for `Error`.\n *\n * Re-exports `@ebec/core`'s shape-based check: `input` matches when it\n * carries the standard `name` / `message` / `stack` triplet, regardless\n * of which realm or class hierarchy produced it. Use this instead of\n * `instanceof Error` for cross-realm boundaries (worker threads,\n * duplicate-module copies) where `instanceof` can yield false negatives.\n */\nexport function isError(input: unknown): input is Error {\n return isRawError(input);\n}\n\n/**\n * Duck-type guard for AuthupError.\n *\n * Fast path: input has the AuthupError marker in its `@instanceof` chain.\n * Subclass instances also accumulate this marker, so this guard matches any\n * AuthupError subclass (`OAuth2Error`, `JWTError`, etc.).\n *\n * Slow path: input is shape-compatible with AuthupError (BaseError + has\n * `issues: Issue[]`). Catches cases where the marker is missing — plain\n * objects rehydrated from JSON, older builds without the marker.\n */\nexport function isAuthupError(input: unknown): input is AuthupError {\n if (hasInstanceof(input, AUTHUP_ERROR_INSTANCE)) {\n return true;\n }\n\n if (!isBaseError(input)) {\n return false;\n }\n\n if (!isObject(input)) {\n return false;\n }\n\n return Array.isArray(input.issues);\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ErrorCode } from '../constants.ts';\nimport { markInstanceof } from '@ebec/core';\nimport { AuthupError } from '../module.ts';\nimport type { AuthupErrorOptions } from '../types.ts';\n\nexport const VALIDATION_ERROR_INSTANCE = Symbol.for('@authup/errors/ValidationError');\n\n/**\n * A domain/business-rule violation raised by core logic. Deliberately NOT\n * named after an HTTP status: core code stays transport-agnostic, and the HTTP\n * adapter maps its `ErrorCode.BAD_REQUEST` to a 400 response\n * (`httpStatusFromCode`). Prefer this over `BadRequestError` in `core/**`.\n */\nexport class ValidationError extends AuthupError {\n constructor(input?: string | AuthupErrorOptions) {\n const options: AuthupErrorOptions = typeof input === 'string' ? { message: input } : (input ?? {});\n super({\n code: ErrorCode.BAD_REQUEST,\n ...options,\n });\n markInstanceof(this, VALIDATION_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { markInstanceof } from '@ebec/core';\nimport { ErrorCode } from '../constants.ts';\nimport { AuthupError } from '../module.ts';\nimport type { AuthupEntityErrorOptions } from '../types.ts';\n\nexport const ENTITY_CONFLICT_ERROR_INSTANCE = Symbol.for('@authup/errors/EntityConflictError');\n\nexport class EntityConflictError extends AuthupError {\n constructor(input?: string | AuthupEntityErrorOptions) {\n const options: AuthupEntityErrorOptions = typeof input === 'string' ? { message: input } : (input ?? {});\n const { entity, ...rest } = options;\n super({\n code: ErrorCode.ENTITY_CONFLICT,\n message: entity ? `The ${entity} already exists.` : 'Entity already exists.',\n ...rest,\n });\n markInstanceof(this, ENTITY_CONFLICT_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { markInstanceof } from '@ebec/core';\nimport { ErrorCode } from '../constants.ts';\nimport { AuthupError } from '../module.ts';\nimport type { AuthupEntityErrorOptions } from '../types.ts';\n\nexport const ENTITY_CREDENTIALS_INVALID_ERROR_INSTANCE = Symbol.for('@authup/errors/EntityCredentialsInvalidError');\n\nexport class EntityCredentialsInvalidError extends AuthupError {\n constructor(input?: string | AuthupEntityErrorOptions) {\n const options: AuthupEntityErrorOptions = typeof input === 'string' ? { message: input } : (input ?? {});\n const { entity, ...rest } = options;\n super({\n code: ErrorCode.ENTITY_CREDENTIALS_INVALID,\n message: entity ? `The ${entity} credentials are invalid.` : 'Credentials are invalid.',\n ...rest,\n });\n markInstanceof(this, ENTITY_CREDENTIALS_INVALID_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { markInstanceof } from '@ebec/core';\nimport { ErrorCode } from '../constants.ts';\nimport { AuthupError } from '../module.ts';\nimport type { AuthupEntityErrorOptions } from '../types.ts';\n\nexport const ENTITY_INACTIVE_ERROR_INSTANCE = Symbol.for('@authup/errors/EntityInactiveError');\n\nexport class EntityInactiveError extends AuthupError {\n constructor(input?: string | AuthupEntityErrorOptions) {\n const options: AuthupEntityErrorOptions = typeof input === 'string' ? { message: input } : (input ?? {});\n const { entity, ...rest } = options;\n super({\n code: ErrorCode.ENTITY_INACTIVE,\n message: entity ? `The ${entity} is inactive.` : 'Entity is inactive.',\n ...rest,\n });\n markInstanceof(this, ENTITY_INACTIVE_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { markInstanceof } from '@ebec/core';\nimport { ErrorCode } from '../constants.ts';\nimport { AuthupError } from '../module.ts';\nimport type { AuthupEntityErrorOptions } from '../types.ts';\n\nexport const ENTITY_NOT_FOUND_ERROR_INSTANCE = Symbol.for('@authup/errors/EntityNotFoundError');\n\nexport class EntityNotFoundError extends AuthupError {\n constructor(input?: string | AuthupEntityErrorOptions) {\n const options: AuthupEntityErrorOptions = typeof input === 'string' ? { message: input } : (input ?? {});\n const { entity, ...rest } = options;\n super({\n code: ErrorCode.ENTITY_NOT_FOUND,\n message: entity ? `The ${entity} was not found.` : 'Entity not found.',\n ...rest,\n });\n markInstanceof(this, ENTITY_NOT_FOUND_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ErrorCode } from '../constants.ts';\nimport { markInstanceof } from '@ebec/core';\nimport { AuthupError } from '../module.ts';\nimport type { AuthupErrorOptions } from '../types.ts';\n\nexport const INTERNAL_ERROR_INSTANCE = Symbol.for('@authup/errors/InternalError');\n\nexport class InternalError extends AuthupError {\n constructor(input?: string | AuthupErrorOptions) {\n const options: AuthupErrorOptions = typeof input === 'string' ? { message: input } : (input ?? {});\n super({\n code: ErrorCode.INTERNAL_ERROR,\n message: 'An internal error occurred.',\n ...options,\n });\n markInstanceof(this, INTERNAL_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { markInstanceof } from '@ebec/core';\nimport { ErrorCode } from '../constants.ts';\nimport { AuthupError } from '../module.ts';\nimport type { AuthupErrorOptions } from '../types.ts';\n\nexport const LOGIN_THROTTLED_ERROR_INSTANCE = Symbol.for('@authup/errors/LoginThrottledError');\n\nexport type LoginThrottledErrorOptions = AuthupErrorOptions & {\n /**\n * Seconds until the sliding throttle window can release the pair.\n */\n retryAfter?: number,\n};\n\nexport class LoginThrottledError extends AuthupError {\n constructor(input?: LoginThrottledErrorOptions) {\n const { retryAfter, ...rest } = input ?? {};\n super({\n code: ErrorCode.LOGIN_ATTEMPT_THROTTLED,\n message: 'Too many failed login attempts. Please try again later.',\n ...rest,\n data: {\n ...(typeof retryAfter === 'number' ? { retryAfter } : {}),\n ...(rest.data ?? {}),\n },\n });\n markInstanceof(this, LOGIN_THROTTLED_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { markInstanceof } from '@ebec/core';\nimport { ErrorCode } from '../constants.ts';\nimport { AuthupError } from '../module.ts';\nimport type { AuthupErrorOptions } from '../types.ts';\n\nexport const MFA_THROTTLED_ERROR_INSTANCE = Symbol.for('@authup/errors/MfaThrottledError');\n\nexport type MfaThrottledErrorOptions = AuthupErrorOptions & {\n /**\n * Seconds until the exponential backoff releases the account.\n */\n retryAfter?: number,\n};\n\nexport class MfaThrottledError extends AuthupError {\n constructor(input?: MfaThrottledErrorOptions) {\n const { retryAfter, ...rest } = input ?? {};\n super({\n code: ErrorCode.MFA_ATTEMPT_THROTTLED,\n message: 'Too many failed verification attempts. Please try again later.',\n ...rest,\n data: {\n ...(typeof retryAfter === 'number' ? { retryAfter } : {}),\n ...(rest.data ?? {}),\n },\n });\n markInstanceof(this, MFA_THROTTLED_ERROR_INSTANCE);\n }\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isAuthupError } from '../check.ts';\nimport { ErrorCode } from '../constants.ts';\nimport { hasInstanceof } from '@ebec/core';\nimport { AUTH_HEADER_ERROR_INSTANCE, type AuthHeaderError } from './auth-header.ts';\nimport { BAD_REQUEST_ERROR_INSTANCE, type BadRequestError } from './bad-request.ts';\nimport { VALIDATION_ERROR_INSTANCE, type ValidationError } from './validation.ts';\nimport { BEARER_TOKEN_MALFORMED_ERROR_INSTANCE, type BearerTokenMalformedError } from './bearer-token.ts';\nimport { ENTITY_CONFLICT_ERROR_INSTANCE, type EntityConflictError } from './entity-conflict.ts';\nimport { ENTITY_CREDENTIALS_INVALID_ERROR_INSTANCE, type EntityCredentialsInvalidError } from './entity-credentials-invalid.ts';\nimport { ENTITY_INACTIVE_ERROR_INSTANCE, type EntityInactiveError } from './entity-inactive.ts';\nimport { ENTITY_NOT_FOUND_ERROR_INSTANCE, type EntityNotFoundError } from './entity-not-found.ts';\nimport { INTERNAL_ERROR_INSTANCE, type InternalError } from './internal.ts';\nimport { LOGIN_THROTTLED_ERROR_INSTANCE, type LoginThrottledError } from './login-throttled.ts';\nimport { MFA_THROTTLED_ERROR_INSTANCE, type MfaThrottledError } from './mfa-throttled.ts';\nimport { UNAUTHORIZED_ERROR_INSTANCE, type UnauthorizedError } from './unauthorized.ts';\n\nexport function isAuthHeaderError(input: unknown): input is AuthHeaderError {\n if (hasInstanceof(input, AUTH_HEADER_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.HTTP_HEADER_AUTH_TYPE_UNSUPPORTED;\n}\n\nexport function isBearerTokenMalformedError(input: unknown): input is BearerTokenMalformedError {\n if (hasInstanceof(input, BEARER_TOKEN_MALFORMED_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.HTTP_BEARER_TOKEN_MALFORMED;\n}\n\nexport function isBadRequestError(input: unknown): input is BadRequestError {\n if (hasInstanceof(input, BAD_REQUEST_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.BAD_REQUEST;\n}\n\nexport function isValidationError(input: unknown): input is ValidationError {\n if (hasInstanceof(input, VALIDATION_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.BAD_REQUEST;\n}\n\nexport function isUnauthorizedError(input: unknown): input is UnauthorizedError {\n if (hasInstanceof(input, UNAUTHORIZED_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.IDENTITY_UNAUTHORIZED;\n}\n\nexport function isEntityNotFoundError(input: unknown): input is EntityNotFoundError {\n if (hasInstanceof(input, ENTITY_NOT_FOUND_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.ENTITY_NOT_FOUND;\n}\n\nexport function isEntityConflictError(input: unknown): input is EntityConflictError {\n if (hasInstanceof(input, ENTITY_CONFLICT_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.ENTITY_CONFLICT;\n}\n\nexport function isEntityInactiveError(input: unknown): input is EntityInactiveError {\n if (hasInstanceof(input, ENTITY_INACTIVE_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.ENTITY_INACTIVE;\n}\n\nexport function isEntityCredentialsInvalidError(input: unknown): input is EntityCredentialsInvalidError {\n if (hasInstanceof(input, ENTITY_CREDENTIALS_INVALID_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.ENTITY_CREDENTIALS_INVALID;\n}\n\nexport function isInternalError(input: unknown): input is InternalError {\n if (hasInstanceof(input, INTERNAL_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.INTERNAL_ERROR;\n}\n\nexport function isLoginThrottledError(input: unknown): input is LoginThrottledError {\n if (hasInstanceof(input, LOGIN_THROTTLED_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.LOGIN_ATTEMPT_THROTTLED;\n}\n\nexport function isMfaThrottledError(input: unknown): input is MfaThrottledError {\n if (hasInstanceof(input, MFA_THROTTLED_ERROR_INSTANCE)) return true;\n if (!isAuthupError(input)) return false;\n return input.code === ErrorCode.MFA_ATTEMPT_THROTTLED;\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isError } from './check.ts';\n\n/**\n * Normalize an arbitrary thrown value into an `Error` instance.\n *\n * Useful at error-pipeline boundaries (catch blocks, error middleware,\n * fallbacks) where TypeScript hands you `unknown` but downstream code\n * wants a real `Error` to inspect or rethrow. Duck-typed: any value\n * passing `isError` is returned as-is. Strings become `new Error(str)`;\n * any other value is stringified.\n */\nexport function normalizeError(input: unknown): Error {\n if (isError(input)) {\n return input;\n }\n\n if (typeof input === 'string') {\n return new Error(input);\n }\n\n return new Error(String(input));\n}\n\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { isObject } from '@ebec/core';\n\n/**\n * Convert an `Error` (or any value with a `toJSON()` method) into a\n * plain object suitable for embedding in a JSON response body.\n *\n * Calls `input.toJSON()` if present — preserves every attribute the\n * error chose to surface (`code`, `cause`, `errors`, `issues`, `data`,\n * AuthupError sub-class fields, ...). Falls back to spreading the\n * Error's enumerable own properties alongside the standard\n * `name` / `message` pair, so caller-attached fields survive.\n *\n * Pair with `normalizeError` to handle arbitrary thrown values:\n * `serializeError(normalizeError(e))`.\n */\nexport function serializeError(input: Error): Record<string, any> {\n if ('toJSON' in input && typeof input.toJSON === 'function') {\n const output = input.toJSON();\n if (isObject(output)) {\n return output;\n }\n }\n\n return {\n ...input,\n name: input.name,\n message: input.message,\n };\n}\n","/*\n * Copyright (c) 2026.\n * Author Peter Placzek (tada5hi)\n * For the full copyright and license information,\n * view the LICENSE file that was distributed with this source code.\n */\n\nimport { ErrorCode } from './constants.ts';\n\n/**\n * Default mapping from `ErrorCode` to HTTP status. Adapters apply this and\n * may layer their own overrides on top. Codes not listed here fall back\n * to 400 (Bad Request) — which is the right default for \"validation /\n * malformed-request\" style errors.\n *\n * The mapping mirrors the HTTP statuses produced by the pre-refactor\n * `@ebec/http`-coupled error classes, with one intentional change:\n *\n * - `OAUTH_CLIENT_INVALID`: 400 → **401**, per RFC 6749 §5.2 (`invalid_client`\n * responses should use 401). Surfaces as a behavior change in HTTP-level\n * tests asserting `status: 400, code: OAUTH_CLIENT_INVALID`.\n */\nexport const ERROR_CODE_TO_STATUS: Readonly<Partial<Record<`${ErrorCode}`, number>>> = {\n // 401\n [ErrorCode.OAUTH_CLIENT_INVALID]: 401,\n [ErrorCode.HTTP_BEARER_TOKEN_MALFORMED]: 401,\n [ErrorCode.HTTP_HEADER_AUTH_TYPE_UNSUPPORTED]: 401,\n [ErrorCode.IDENTITY_UNAUTHORIZED]: 401,\n\n // 403\n [ErrorCode.PERMISSION_NOT_FOUND]: 403,\n [ErrorCode.PERMISSION_DENIED]: 403,\n [ErrorCode.PERMISSION_EVALUATION_FAILED]: 403,\n\n // 404\n [ErrorCode.ENTITY_NOT_FOUND]: 404,\n [ErrorCode.JWK_NOT_FOUND]: 404,\n\n // 409\n [ErrorCode.ENTITY_CONFLICT]: 409,\n\n // 429\n [ErrorCode.LOGIN_ATTEMPT_THROTTLED]: 429,\n [ErrorCode.MFA_ATTEMPT_THROTTLED]: 429,\n\n // 500\n [ErrorCode.INTERNAL_ERROR]: 500,\n\n // 507\n [ErrorCode.STORAGE_INSUFFICIENT]: 507,\n};\n\n/**\n * Resolve an HTTP status for a given error code. Unknown codes fall back\n * to `fallback` (default 400).\n */\nexport function httpStatusFromCode(code: string, fallback = 400): number {\n return ERROR_CODE_TO_STATUS[code as `${ErrorCode}`] ?? fallback;\n}\n\n/**\n * Resolve a semantic `ErrorCode` for a foreign HTTP status. Used at the\n * boundary where a non-AuthupError (e.g. `@ebec/http` HTTPError thrown by\n * the framework, or a foreign service response) enters our system and\n * needs to be normalized into an `AuthupError` with an authup-vocabulary\n * code. Status is the only stable handshake across the two vocabularies.\n *\n * Default mapping covers the common HTTP statuses. Anything 5xx\n * collapses to `INTERNAL_ERROR`; unknown 4xx collapses to `BAD_REQUEST`.\n */\nexport function codeFromHttpStatus(status: number): ErrorCode {\n if (status === 404) return ErrorCode.ENTITY_NOT_FOUND;\n if (status === 409) return ErrorCode.ENTITY_CONFLICT;\n if (status === 401) return ErrorCode.IDENTITY_UNAUTHORIZED;\n if (status === 403) return ErrorCode.PERMISSION_DENIED;\n if (status === 429) return ErrorCode.LOGIN_ATTEMPT_THROTTLED;\n if (status === 507) return ErrorCode.STORAGE_INSUFFICIENT;\n if (status >= 500) return ErrorCode.INTERNAL_ERROR;\n return ErrorCode.BAD_REQUEST;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC,CAwBlF,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAM,GAAG,MAAM,CAEvE;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAQ5D"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../src/status.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC,CA4BlF,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,SAAM,GAAG,MAAM,CAEvE;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAS5D"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@authup/errors",
3
3
  "type": "module",
4
- "version": "1.0.0-beta.51",
4
+ "version": "1.0.0-beta.53",
5
5
  "description": "Package containing error codes and basic error classes.",
6
6
  "license": "Apache-2.0",
7
7
  "exports": {