@clipwhisperer/common
Version:
ClipWhisperer Common - Shared library providing core utilities, database schemas, authentication, bucket management, and common functionality across all ClipWhisperer microservices
288 lines (287 loc) • 9.35 kB
TypeScript
import { z } from 'zod';
/**
* Environment validation schema
*/
export declare const EnvironmentSchema: z.ZodEnum<["development", "staging", "production", "test"]>;
/**
* Restart policy schema
*/
export declare const RestartPolicySchema: z.ZodObject<{
enabled: z.ZodDefault<z.ZodBoolean>;
maxAttempts: z.ZodDefault<z.ZodNumber>;
delay: z.ZodDefault<z.ZodNumber>;
backoffMultiplier: z.ZodDefault<z.ZodNumber>;
maxDelay: z.ZodDefault<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
delay?: number;
enabled?: boolean;
maxAttempts?: number;
backoffMultiplier?: number;
maxDelay?: number;
}, {
delay?: number;
enabled?: boolean;
maxAttempts?: number;
backoffMultiplier?: number;
maxDelay?: number;
}>;
/**
* Service configuration schema
*/
export declare const ServiceConfigItemSchema: z.ZodObject<{
name: z.ZodString;
port: z.ZodNumber;
healthEndpoint: z.ZodString;
startCommand: z.ZodString;
workingDirectory: z.ZodOptional<z.ZodString>;
dependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
restartPolicy: z.ZodOptional<z.ZodObject<{
enabled: z.ZodDefault<z.ZodBoolean>;
maxAttempts: z.ZodDefault<z.ZodNumber>;
delay: z.ZodDefault<z.ZodNumber>;
backoffMultiplier: z.ZodDefault<z.ZodNumber>;
maxDelay: z.ZodDefault<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
delay?: number;
enabled?: boolean;
maxAttempts?: number;
backoffMultiplier?: number;
maxDelay?: number;
}, {
delay?: number;
enabled?: boolean;
maxAttempts?: number;
backoffMultiplier?: number;
maxDelay?: number;
}>>;
timeout: z.ZodDefault<z.ZodNumber>;
healthCheckInterval: z.ZodDefault<z.ZodNumber>;
gracefulShutdownTimeout: z.ZodDefault<z.ZodNumber>;
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, "strip", z.ZodTypeAny, {
name?: string;
port?: number;
dependencies?: string[];
timeout?: number;
healthEndpoint?: string;
startCommand?: string;
workingDirectory?: string;
restartPolicy?: {
delay?: number;
enabled?: boolean;
maxAttempts?: number;
backoffMultiplier?: number;
maxDelay?: number;
};
healthCheckInterval?: number;
gracefulShutdownTimeout?: number;
env?: Record<string, string>;
}, {
name?: string;
port?: number;
dependencies?: string[];
timeout?: number;
healthEndpoint?: string;
startCommand?: string;
workingDirectory?: string;
restartPolicy?: {
delay?: number;
enabled?: boolean;
maxAttempts?: number;
backoffMultiplier?: number;
maxDelay?: number;
};
healthCheckInterval?: number;
gracefulShutdownTimeout?: number;
env?: Record<string, string>;
}>;
/**
* Manager configuration schema
*/
export declare const ManagerConfigSchema: z.ZodObject<{
environment: z.ZodDefault<z.ZodEnum<["development", "staging", "production", "test"]>>;
logLevel: z.ZodDefault<z.ZodEnum<["error", "warn", "info", "debug", "trace"]>>;
maxConcurrentServices: z.ZodDefault<z.ZodNumber>;
globalTimeout: z.ZodDefault<z.ZodNumber>;
healthCheckInterval: z.ZodDefault<z.ZodNumber>;
enableMetrics: z.ZodDefault<z.ZodBoolean>;
enableAutoRestart: z.ZodDefault<z.ZodBoolean>;
services: z.ZodDefault<z.ZodArray<z.ZodObject<{
name: z.ZodString;
port: z.ZodNumber;
healthEndpoint: z.ZodString;
startCommand: z.ZodString;
workingDirectory: z.ZodOptional<z.ZodString>;
dependencies: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
restartPolicy: z.ZodOptional<z.ZodObject<{
enabled: z.ZodDefault<z.ZodBoolean>;
maxAttempts: z.ZodDefault<z.ZodNumber>;
delay: z.ZodDefault<z.ZodNumber>;
backoffMultiplier: z.ZodDefault<z.ZodNumber>;
maxDelay: z.ZodDefault<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
delay?: number;
enabled?: boolean;
maxAttempts?: number;
backoffMultiplier?: number;
maxDelay?: number;
}, {
delay?: number;
enabled?: boolean;
maxAttempts?: number;
backoffMultiplier?: number;
maxDelay?: number;
}>>;
timeout: z.ZodDefault<z.ZodNumber>;
healthCheckInterval: z.ZodDefault<z.ZodNumber>;
gracefulShutdownTimeout: z.ZodDefault<z.ZodNumber>;
env: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
}, "strip", z.ZodTypeAny, {
name?: string;
port?: number;
dependencies?: string[];
timeout?: number;
healthEndpoint?: string;
startCommand?: string;
workingDirectory?: string;
restartPolicy?: {
delay?: number;
enabled?: boolean;
maxAttempts?: number;
backoffMultiplier?: number;
maxDelay?: number;
};
healthCheckInterval?: number;
gracefulShutdownTimeout?: number;
env?: Record<string, string>;
}, {
name?: string;
port?: number;
dependencies?: string[];
timeout?: number;
healthEndpoint?: string;
startCommand?: string;
workingDirectory?: string;
restartPolicy?: {
delay?: number;
enabled?: boolean;
maxAttempts?: number;
backoffMultiplier?: number;
maxDelay?: number;
};
healthCheckInterval?: number;
gracefulShutdownTimeout?: number;
env?: Record<string, string>;
}>, "many">>;
}, "strip", z.ZodTypeAny, {
healthCheckInterval?: number;
environment?: "production" | "development" | "staging" | "test";
logLevel?: "error" | "warn" | "info" | "debug" | "trace";
maxConcurrentServices?: number;
globalTimeout?: number;
enableMetrics?: boolean;
enableAutoRestart?: boolean;
services?: {
name?: string;
port?: number;
dependencies?: string[];
timeout?: number;
healthEndpoint?: string;
startCommand?: string;
workingDirectory?: string;
restartPolicy?: {
delay?: number;
enabled?: boolean;
maxAttempts?: number;
backoffMultiplier?: number;
maxDelay?: number;
};
healthCheckInterval?: number;
gracefulShutdownTimeout?: number;
env?: Record<string, string>;
}[];
}, {
healthCheckInterval?: number;
environment?: "production" | "development" | "staging" | "test";
logLevel?: "error" | "warn" | "info" | "debug" | "trace";
maxConcurrentServices?: number;
globalTimeout?: number;
enableMetrics?: boolean;
enableAutoRestart?: boolean;
services?: {
name?: string;
port?: number;
dependencies?: string[];
timeout?: number;
healthEndpoint?: string;
startCommand?: string;
workingDirectory?: string;
restartPolicy?: {
delay?: number;
enabled?: boolean;
maxAttempts?: number;
backoffMultiplier?: number;
maxDelay?: number;
};
healthCheckInterval?: number;
gracefulShutdownTimeout?: number;
env?: Record<string, string>;
}[];
}>;
/**
* CLI configuration schema
*/
export declare const CLIConfigSchema: z.ZodObject<{
interactive: z.ZodDefault<z.ZodBoolean>;
watch: z.ZodDefault<z.ZodBoolean>;
verbose: z.ZodDefault<z.ZodBoolean>;
colors: z.ZodDefault<z.ZodBoolean>;
updateInterval: z.ZodDefault<z.ZodNumber>;
maxLogLines: z.ZodDefault<z.ZodNumber>;
theme: z.ZodDefault<z.ZodEnum<["default", "minimal", "compact"]>>;
}, "strip", z.ZodTypeAny, {
interactive?: boolean;
watch?: boolean;
verbose?: boolean;
colors?: boolean;
updateInterval?: number;
maxLogLines?: number;
theme?: "default" | "minimal" | "compact";
}, {
interactive?: boolean;
watch?: boolean;
verbose?: boolean;
colors?: boolean;
updateInterval?: number;
maxLogLines?: number;
theme?: "default" | "minimal" | "compact";
}>;
export type Environment = z.infer<typeof EnvironmentSchema>;
export type ServiceConfigItem = z.infer<typeof ServiceConfigItemSchema>;
export type ManagerConfig = z.infer<typeof ManagerConfigSchema>;
export type CLIConfig = z.infer<typeof CLIConfigSchema>;
export type RestartPolicy = z.infer<typeof RestartPolicySchema>;
/**
* Default service configurations for ClipWhisperer
*/
export declare const DefaultServiceConfigs: ServiceConfigItem[];
/**
* Simple configuration manager for service orchestration
*/
export declare class ServiceConfig {
private managerConfig;
constructor(config?: Partial<ManagerConfig>);
getEnvironment(): Environment;
getServices(): ServiceConfigItem[];
getService(serviceName: string): ServiceConfigItem | undefined;
getManagerConfig(): ManagerConfig;
isDevelopment(): boolean;
isProduction(): boolean;
isTest(): boolean;
addService(service: ServiceConfigItem): void;
removeService(serviceName: string): boolean;
validateDependencies(): {
valid: boolean;
errors: string[];
};
}