UNPKG

webssh2-server

Version:

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

114 lines (113 loc) 3.4 kB
import type { Result } from '../types/result.js'; import type { SshHost, SshPort, Username, Password, TerminalType } from '../types/branded.js'; /** * Validation error */ export interface ValidationError { readonly field: string; readonly value: unknown; readonly message: string; readonly constraint: string | undefined; } /** * Validation result */ export type ValidationResult<T> = Result<T, ValidationError[]>; /** * Common validation constraints */ export declare const Constraints: { readonly HOST: { readonly MIN_LENGTH: 1; readonly MAX_LENGTH: 255; }; readonly PORT: { readonly MIN: 1; readonly MAX: 65535; }; readonly USERNAME: { readonly MIN_LENGTH: 1; readonly MAX_LENGTH: 255; readonly PATTERN: RegExp; }; readonly PASSWORD: { readonly MIN_LENGTH: 0; readonly MAX_LENGTH: 4096; }; readonly TERM: { readonly MIN_LENGTH: 1; readonly MAX_LENGTH: 50; readonly PATTERN: RegExp; readonly DEFAULT: "xterm-256color"; }; readonly ENV_VAR_NAME: { readonly PATTERN: RegExp; }; readonly ENV_VAR_VALUE: { readonly MAX_LENGTH: 4096; }; readonly PATH: { readonly MAX_LENGTH: 4096; readonly PATTERN: RegExp; }; readonly URL: { readonly MAX_LENGTH: 2048; }; }; /** * Validate hostname or IP address */ export declare function validateHost(value: unknown, field?: string): ValidationResult<SshHost>; /** * Validate optional host */ export declare function validateOptionalHost(value: unknown, field?: string): ValidationResult<SshHost | null>; /** * Validate port number */ export declare function validatePort(value: unknown, field?: string): ValidationResult<SshPort>; /** * Validate username */ export declare function validateUsername(value: unknown, field?: string): ValidationResult<Username>; /** * Validate optional username */ export declare function validateOptionalUsername(value: unknown, field?: string): ValidationResult<Username | null>; /** * Validate password */ export declare function validatePassword(value: unknown, field?: string, options?: { minLength?: number; maxLength?: number; required?: boolean; }): ValidationResult<Password>; /** * Validate terminal type */ export declare function validateTerminal(value: unknown, field?: string): ValidationResult<TerminalType | null>; /** * Validate environment variable */ export declare function validateEnvVar(name: unknown, value: unknown): ValidationResult<[string, string]>; /** * Validate object against schema */ export type FieldValidator<T> = (value: unknown, field: string) => ValidationResult<T>; export interface Schema { [field: string]: FieldValidator<unknown>; } /** * Validate object against schema */ export declare function validateObject<T extends Record<string, unknown>>(obj: unknown, schema: Schema): ValidationResult<T>; /** * Combine multiple validation results */ export declare function combineValidations<T extends readonly unknown[]>(...validations: { [K in keyof T]: ValidationResult<T[K]>; }): ValidationResult<T>; /** * Create custom validator */ export declare function createValidator<T>(validate: (value: unknown) => boolean, transform: (value: unknown) => T, errorMessage: string, constraint?: string): FieldValidator<T>;