@dudousxd/nestjs-telescope
Version:
Laravel Telescope-style observability console for NestJS — core: watchers, recorder, correlation, SQLite store, headless API.
34 lines • 1.68 kB
TypeScript
import type { TelescopeHttpRequest } from '../nest/telescope.options.js';
import type { TelescopeSessionUser } from './session-cookie.js';
/** Host hook for Mode A — validates the host's own auth on the raw request. */
export type SessionHook = (request: TelescopeHttpRequest) => Promise<TelescopeSessionUser | null> | TelescopeSessionUser | null;
/** Host hook for Mode B — validates submitted credentials. */
export type LoginHook = (username: string, password: string) => Promise<TelescopeSessionUser | null> | TelescopeSessionUser | null;
/** Author-facing `dashboardAuth` option (see TelescopeModuleOptions). */
export interface DashboardAuthOptions {
/** REQUIRED HMAC-SHA256 signing key. Missing/empty => boot error (fail closed). */
secret: string;
/** Cookie TTL (duration string, reuses durationToMs). Default '8h'. */
ttl?: string;
/** Mode A. */
session?: SessionHook;
/** Mode B. */
login?: LoginHook;
}
export type AuthMode = 'session' | 'login';
/** Resolved, validated dashboard-auth config used by the guard/controller/meta. */
export interface ResolvedDashboardAuth {
secret: string;
ttlMs: number;
modes: AuthMode[];
session?: SessionHook;
login?: LoginHook;
}
/**
* Validate + resolve `dashboardAuth`. Returns `null` when unconfigured (behavior
* unchanged). Throws at boot (fail closed) when configured but missing a secret
* or any hook — the host learns immediately rather than shipping an open or
* un-mintable dashboard.
*/
export declare function resolveDashboardAuth(options: DashboardAuthOptions | undefined): ResolvedDashboardAuth | null;
//# sourceMappingURL=dashboard-auth-config.d.ts.map