UNPKG

webssh2-server

Version:

A Websocket to SSH2 gateway using xterm.js, socket.io, ssh2

85 lines (84 loc) 3.33 kB
/** * State selectors for deriving data from session state * All selectors are pure functions with no side effects */ import type { SessionState, AuthState, ConnectionState } from './types.js'; import type { ConnectionId, SessionId, UserId } from '../types/branded.js'; /** * Authentication selectors */ export declare const isAuthenticated: (state: SessionState) => boolean; export declare const isAuthPending: (state: SessionState) => boolean; export declare const hasAuthError: (state: SessionState) => boolean; export declare const getAuthError: (state: SessionState) => string | null; export declare const getAuthMethod: (state: SessionState) => AuthState["method"]; export declare const getUsername: (state: SessionState) => string | null; /** * Connection selectors */ export declare const isConnected: (state: SessionState) => boolean; export declare const isConnecting: (state: SessionState) => boolean; export declare const hasConnectionError: (state: SessionState) => boolean; export declare const getConnectionError: (state: SessionState) => string | null; export declare const getConnectionInfo: (state: SessionState) => { host: string | null; port: number | null; status: ConnectionState["status"]; connectionId: ConnectionId | null; }; export declare const getConnectionStatus: (state: SessionState) => ConnectionState["status"]; /** * Terminal selectors */ export declare const getTerminalDimensions: (state: SessionState) => { rows: number; cols: number; }; export declare const getTerminalType: (state: SessionState) => string; export declare const getTerminalEnvironment: (state: SessionState) => Readonly<Record<string, string>>; export declare const getWorkingDirectory: (state: SessionState) => string | null; /** * Combined selectors */ export declare const canExecuteCommands: (state: SessionState) => boolean; export declare const canResize: (state: SessionState) => boolean; export declare const isSessionActive: (state: SessionState) => boolean; export declare const getSessionSummary: (state: SessionState) => { id: SessionId; authenticated: boolean; connected: boolean; username: string | null; host: string | null; port: number | null; terminal: string; dimensions: { rows: number; cols: number; }; }; /** * Metadata selectors */ export declare const getSessionAge: (state: SessionState) => number; export declare const getLastActivity: (state: SessionState) => number; export declare const getIdleTime: (state: SessionState) => number; export declare const isIdle: (state: SessionState, threshold?: number) => boolean; export declare const getClientInfo: (state: SessionState) => { ip: string | null; userAgent: string | null; userId: UserId | null; }; /** * Error selectors */ export declare const getAllErrors: (state: SessionState) => string[]; export declare const hasAnyError: (state: SessionState) => boolean; /** * Status selectors */ export declare const getOverallStatus: (state: SessionState) => "initializing" | "authenticating" | "connecting" | "ready" | "error" | "closed"; /** * Feature flag selectors (for gradual rollout) */ export declare const shouldUseNewAuth: (_state: SessionState) => boolean; export declare const shouldUseConnectionPool: (_state: SessionState) => boolean;