Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 57 additions & 50 deletions types/oidc-provider/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2713,8 +2713,14 @@ export namespace interactionPolicy {
}

export namespace errors {
interface OIDCProviderErrorOptions {
cause?: unknown;
detail?: string;
}

class OIDCProviderError extends Error {
constructor(status: number, message: string);
constructor(status: number, message: string, options?: OIDCProviderErrorOptions);
cause?: unknown;
error: string;
error_description?: string | undefined;
error_detail?: string | undefined;
Expand All @@ -2724,155 +2730,156 @@ export namespace errors {
allow_redirect: boolean;
}
class ExpiredLoginHintToken extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class InvalidBindingMessage extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class InvalidAuthorizationDetails extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class InvalidCredentialRequest extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class InvalidNonce extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class InvalidUserCode extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class MissingUserCode extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class TransactionFailed extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class UnknownUserId extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class AccessDenied extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class AuthorizationPending extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class ConsentRequired extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class ExpiredToken extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class InteractionRequired extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class InvalidClient extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class InvalidDpopProof extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class InvalidClientAuth extends OIDCProviderError {
constructor(detail?: string);
constructor(options?: string | OIDCProviderErrorOptions);
}
class InvalidClientMetadata extends OIDCProviderError {
constructor(description: string, detail?: string);
constructor(description: string, options?: string | OIDCProviderErrorOptions);
}
class InvalidGrant extends OIDCProviderError {
constructor(detail?: string);
constructor(options?: string | OIDCProviderErrorOptions);
}
class InvalidRequest extends OIDCProviderError {
constructor(description: string, code?: number, detail?: string);
constructor(description: string, code?: number, options?: string | OIDCProviderErrorOptions);
}
class SessionNotFound extends InvalidRequest {}
class InvalidRequestObject extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class InvalidRequestUri extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class InvalidProof extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class InvalidScope extends OIDCProviderError {
constructor(description: string, scope: string, detail?: string);
constructor(description: string, scope: string, options?: string | OIDCProviderErrorOptions);
}
class InsufficientScope extends OIDCProviderError {
constructor(description: string, scope: string, detail?: string);
constructor(description: string, scope: string, options?: string | OIDCProviderErrorOptions);
}
class InvalidSoftwareStatement extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class InvalidTarget extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class UnknownCredentialConfiguration extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class UnknownCredentialIdentifier extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class InvalidToken extends OIDCProviderError {
constructor(detail?: string);
constructor(options?: string | OIDCProviderErrorOptions);
}
class LoginRequired extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class InvalidRedirectUri extends OIDCProviderError {
constructor(options?: OIDCProviderErrorOptions);
constructor(description?: string, detail?: string);
}
class RegistrationNotSupported extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class RequestNotSupported extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class RequestUriNotSupported extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class SlowDown extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class TemporarilyUnavailable extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class UnapprovedSoftwareStatement extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class UnauthorizedClient extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class UnsupportedGrantType extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class UnsupportedResponseMode extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class UnsupportedResponseType extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class CustomOIDCProviderError extends OIDCProviderError {
constructor(message: string, description?: string);
constructor(message: string, description?: string, options?: OIDCProviderErrorOptions);
}
class CredentialRequestDenied extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class UseDpopNonce extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class UnsupportedTokenType extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class UseAttestationChallenge extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class UseFreshAttestation extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class InvalidClientAttestation extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
class UnmetAuthenticationRequirements extends OIDCProviderError {
constructor(description?: string, detail?: string);
constructor(description?: string, options?: string | OIDCProviderErrorOptions);
}
}

Expand Down
39 changes: 37 additions & 2 deletions types/oidc-provider/oidc-provider-tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -884,6 +884,9 @@ provider.backchannelResult("request", rarGrant, {
provider.on("credential.error", (ctx, err) => {
ctx.oidc.issuer.substring(0);
err.error.substring(0);
if (err.cause instanceof Error) {
err.cause.message.substring(0);
}
});
provider.on("pre_authorized_code.saved", code => {
code.txCode?.substring(0);
Expand Down Expand Up @@ -1149,11 +1152,43 @@ const claims = new provider.Claims(
claims.scope("openid").result().then(JSON.stringify);

provider.ReplayDetection.unique("issuer", "jti", Date.now()).then(Boolean);
const errorCause = new Error("validation failed");
const errorOptions: oidc.errors.OIDCProviderErrorOptions = {
cause: errorCause,
detail: "validation detail",
};

const providerError = new oidc.errors.OIDCProviderError(400, "custom_error", errorOptions);
if (providerError.cause instanceof Error) {
providerError.cause.message.substring(0);
}

new oidc.errors.CustomOIDCProviderError("custom_error", "custom error");
new oidc.errors.CustomOIDCProviderError("custom_error", "custom error", errorOptions);

new oidc.errors.InvalidClientAuth();
new oidc.errors.InvalidClientMetadata("invalid metadata", "validation detail");
new oidc.errors.InvalidClientAuth("validation detail");
new oidc.errors.InvalidClientAuth({ cause: errorCause });
new oidc.errors.InvalidGrant();
new oidc.errors.InvalidGrant("validation detail");
new oidc.errors.InvalidGrant(errorOptions);
new oidc.errors.InvalidToken();
new oidc.errors.InvalidToken("validation detail");
new oidc.errors.InvalidToken({ cause: "non-error cause" });

new oidc.errors.InvalidClientMetadata("invalid metadata", "validation detail");
new oidc.errors.InvalidClientMetadata("invalid metadata", errorOptions);
new oidc.errors.InvalidRequest("invalid request", 400, "validation detail");
new oidc.errors.InvalidRequest("invalid request", 400, errorOptions);
new oidc.errors.InvalidScope("invalid scope", "api:write", "validation detail");
new oidc.errors.InvalidScope("invalid scope", "api:write", errorOptions);
new oidc.errors.InsufficientScope("insufficient scope", "api:write", "validation detail");
new oidc.errors.InvalidToken();
new oidc.errors.InsufficientScope("insufficient scope", "api:write", errorOptions);

new oidc.errors.UnmetAuthenticationRequirements("authentication required", "validation detail");
new oidc.errors.UnmetAuthenticationRequirements("authentication required", errorOptions);
new oidc.errors.AccessDenied(undefined, { cause: errorCause });

new oidc.errors.InvalidRedirectUri();
new oidc.errors.InvalidRedirectUri({ cause: errorCause });
new oidc.errors.InvalidRedirectUri("legacy description", "legacy detail");