@shelltender/server
Version:
Server-side terminal session management for Shelltender
115 lines • 3.39 kB
TypeScript
import express from 'express';
import { Server } from 'http';
import { SessionManager, BufferManager, SessionStore, WebSocketServer, EventManager, TerminalDataPipeline, PipelineIntegration } from './index.js';
export interface ShelltenderConfig {
port?: number | 'auto';
wsPath?: string;
enablePipeline?: boolean;
enableSecurity?: boolean;
sessionOptions?: {
defaultCommand?: string;
defaultCwd?: string;
defaultEnv?: Record<string, string>;
};
server?: Server;
sessionManager?: SessionManager;
sessionStore?: SessionStore;
host?: string;
trustProxy?: boolean;
staticDir?: string;
apiRoutes?: boolean;
defaultDirectory?: (sessionId: string) => string;
transformSessionConfig?: (config: any, sessionId: string) => Promise<any>;
dataDir?: string;
}
export interface ShelltenderInstance {
sessionManager: SessionManager;
bufferManager: BufferManager;
wsServer: WebSocketServer;
sessionStore: SessionStore;
eventManager: EventManager;
pipeline?: TerminalDataPipeline;
integration?: PipelineIntegration;
server?: Server;
port?: number;
url?: string;
wsUrl?: string;
config: ShelltenderConfig & {
isReady: boolean;
};
createSession: (options?: any) => any;
getSession: (sessionId: string) => any;
getAllSessions: () => any[];
resizeSession: (sessionId: string, cols: number, rows: number) => boolean;
killSession: (sessionId: string) => boolean;
broadcast: (message: any) => void;
getActiveSessionCount: () => number;
getConfiguration: () => any;
stop: () => Promise<void>;
}
/**
* Create a Shelltender instance attached to an Express app
*/
export declare function createShelltender(app: express.Application, config?: ShelltenderConfig): Promise<ShelltenderInstance>;
/**
* Create a standalone Shelltender server
*/
export declare function createShelltenderServer(config?: ShelltenderConfig): Promise<{
server: Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>;
shelltender: ShelltenderInstance;
port: number;
url: string;
wsUrl: string;
stop: () => Promise<void>;
}>;
/**
* One-line server startup
*/
export declare function startShelltender(port?: number): Promise<{
server: Server<typeof import("http").IncomingMessage, typeof import("http").ServerResponse>;
shelltender: ShelltenderInstance;
port: number;
url: string;
wsUrl: string;
stop: () => Promise<void>;
}>;
/**
* Detect runtime environment
*/
export declare function detectEnvironment(options?: {
app?: express.Application;
}): Promise<{
isDocker: boolean;
isKubernetes: boolean;
isCI: boolean;
isDevelopment: boolean;
isProduction: boolean;
behindProxy: boolean;
host: string;
enableDevTools: boolean;
suggestions: string[];
}>;
/**
* Validate configuration
*/
export declare function validateConfiguration(config: any): Promise<{
errors: string[];
warnings: string[];
fixes: any;
migration: {
from: {
websocketPort: any;
httpPort: any;
};
to: {
port: any;
wsPath: string;
};
};
} | {
errors: string[];
warnings: string[];
fixes: any;
migration?: undefined;
}>;
//# sourceMappingURL=createServer.d.ts.map