UNPKG

@altostra/core

Version:

Core library for shared types and logic

49 lines (48 loc) 1.57 kB
import type { Result } from "../common/Result"; export declare type JwtValidatorConfig = JwtValidatorConfigMultipleKeys | JwtValidatorConfigSingleKey; export interface JwtValidatorConfigBase { audience: string[]; ignoreExpiration?: boolean; skipSignatureVerification?: boolean; } export interface JwtValidatorConfigSingleKey extends JwtValidatorConfigBase { publicKey: string; } export interface JwtValidatorConfigMultipleKeys extends JwtValidatorConfigBase { publicKeys: string[]; } export declare enum ErrorCodes { MissingToken = 400, InvalidToken = 401, MalformedPayload = 500, MissingUserPayload = 501, WrongPayloadType = 502 } export interface ValidationError { code: ErrorCodes; message?: string; data?: any; inner?: Error; } export interface JwtValidationResult { user: string; expires: Date; claims: JwtClaims; } export interface JwtClaims { sub: string; iss: string; iat: number; exp: number; scope?: string; altostra?: Record<string, unknown>; permissions?: string[]; } export declare const AltostraClaimNamespace = "https://altostra.com"; export declare class JwtValidator { #private; constructor(config: JwtValidatorConfig); validate(token?: string): Result<JwtValidationResult, ValidationError>; static decodeUnverified(cleanToken: string, config: DecodeUnverifiedConfig): Result<JwtValidationResult, ValidationError>; } export declare type DecodeUnverifiedConfig = Pick<JwtValidatorConfigBase, 'ignoreExpiration' | 'skipSignatureVerification'>;