Files
netris-nestri/packages/auth/src/error.ts
2026-08-06 22:13:51 +03:00

121 lines
2.5 KiB
TypeScript

/**
* A list of errors that can be thrown by OpenAuth.
*
* You can use these errors to check the type of error and handle it. For example.
*
* ```ts
* import { InvalidAuthorizationCodeError } from "@openauthjs/openauth/error"
*
* if (err instanceof InvalidAuthorizationCodeError) {
* // handle invalid code error
* }
* ```
*
* @packageDocumentation
*/
/**
* The OAuth server returned an error.
*/
export class OauthError extends Error {
constructor(
public error:
| 'invalid_request'
| 'invalid_grant'
| 'unauthorized_client'
| 'access_denied'
| 'unsupported_grant_type'
| 'server_error'
| 'temporarily_unavailable',
public description: string
) {
super(error + ' - ' + description);
}
}
/**
* The `provider` needs to be passed in.
*/
export class MissingProviderError extends OauthError {
constructor() {
super(
'invalid_request',
'Must specify `provider` query parameter if `select` callback on issuer is not specified'
);
}
}
/**
* The given parameter is missing.
*/
export class MissingParameterError extends OauthError {
constructor(public parameter: string) {
super('invalid_request', 'Missing parameter: ' + parameter);
}
}
/**
* The given client is not authorized to use the redirect URI that was passed in.
*/
export class UnauthorizedClientError extends OauthError {
constructor(
public clientID: string,
redirectURI: string
) {
super(
'unauthorized_client',
`Client ${clientID} is not authorized to use this redirect_uri: ${redirectURI}`
);
}
}
/**
* The browser was in an unknown state.
*
* This can happen when certain cookies have expired. Or the browser was switched in the middle
* of the authentication flow.
*/
export class UnknownStateError extends Error {
constructor() {
super(
'The browser was in an unknown state. This could be because certain cookies expired or the browser was switched in the middle of an authentication flow.'
);
}
}
/**
* The given subject is invalid.
*/
export class InvalidSubjectError extends Error {
constructor() {
super('Invalid subject');
}
}
/**
* The given refresh token is invalid.
*/
export class InvalidRefreshTokenError extends Error {
constructor() {
super('Invalid refresh token');
}
}
/**
* The given access token is invalid.
*/
export class InvalidAccessTokenError extends Error {
constructor() {
super('Invalid access token');
}
}
/**
* The given authorization code is invalid.
*/
export class InvalidAuthorizationCodeError extends Error {
constructor() {
super('Invalid authorization code');
}
}