UNPKG

docker-pilot

Version:

A powerful, scalable Docker CLI library for managing containerized applications of any size

173 lines 8.18 kB
"use strict"; /** * Type definitions for Docker Pilot */ Object.defineProperty(exports, "__esModule", { value: true }); exports.PluginError = exports.ServiceError = exports.CommandExecutionError = exports.ConfigurationError = exports.DockerPilotError = exports.DockerPilotConfigSchema = exports.DevelopmentConfigSchema = exports.MonitoringConfigSchema = exports.BackupConfigSchema = exports.BackupServiceConfigSchema = exports.CLIConfigSchema = exports.ServiceConfigSchema = void 0; const zod_1 = require("zod"); // ============================================================================ // SERVICE TYPES // ============================================================================ exports.ServiceConfigSchema = zod_1.z.object({ port: zod_1.z.number().optional().nullable(), path: zod_1.z.string().optional().nullable(), description: zod_1.z.string().optional(), healthCheck: zod_1.z.boolean().default(false), backupEnabled: zod_1.z.boolean().default(false), environment: zod_1.z.record(zod_1.z.string()).optional(), volumes: zod_1.z.array(zod_1.z.string()).optional(), depends_on: zod_1.z.array(zod_1.z.string()).optional(), networks: zod_1.z.array(zod_1.z.string()).optional(), restart: zod_1.z.enum(['no', 'always', 'on-failure', 'unless-stopped']).default('unless-stopped'), scale: zod_1.z.number().min(1).default(1), cpu_limit: zod_1.z.string().optional(), memory_limit: zod_1.z.string().optional(), detected: zod_1.z.boolean().optional(), // Flag to indicate auto-detected services build: zod_1.z.object({ context: zod_1.z.string(), dockerfile: zod_1.z.string().optional(), args: zod_1.z.record(zod_1.z.string()).optional(), target: zod_1.z.string().optional() }).optional() }); // ============================================================================ // CLI CONFIGURATION TYPES // ============================================================================ exports.CLIConfigSchema = zod_1.z.object({ version: zod_1.z.string().default('1.0.0'), welcomeMessage: zod_1.z.string().default('Bem-vindo ao {projectName} Docker Pilot v{version}! 🐳'), goodbyeMessage: zod_1.z.string().default('Obrigado por usar o {projectName} Docker Pilot!'), interactiveMode: zod_1.z.boolean().default(true), colorOutput: zod_1.z.boolean().default(true), verboseLogging: zod_1.z.boolean().default(false), confirmDestructiveActions: zod_1.z.boolean().default(true) }); // ============================================================================ // BACKUP CONFIGURATION TYPES // ============================================================================ exports.BackupServiceConfigSchema = zod_1.z.object({ command: zod_1.z.string(), filename: zod_1.z.string(), preBackupHook: zod_1.z.string().optional(), postBackupHook: zod_1.z.string().optional(), compression: zod_1.z.boolean().default(true), encryption: zod_1.z.boolean().default(false) }); exports.BackupConfigSchema = zod_1.z.object({ enabled: zod_1.z.boolean().default(true), directory: zod_1.z.string().default('./backups'), retention: zod_1.z.number().min(1).default(7), schedule: zod_1.z.string().optional(), // cron expression services: zod_1.z.record(exports.BackupServiceConfigSchema).default({}), cloud: zod_1.z.object({ provider: zod_1.z.enum(['aws', 'gcp', 'azure']).optional(), bucket: zod_1.z.string().optional(), region: zod_1.z.string().optional(), credentials: zod_1.z.record(zod_1.z.string()).optional() }).optional() }); // ============================================================================ // MONITORING CONFIGURATION TYPES // ============================================================================ exports.MonitoringConfigSchema = zod_1.z.object({ enabled: zod_1.z.boolean().default(true), refreshInterval: zod_1.z.number().min(1).default(5), services: zod_1.z.array(zod_1.z.string()).default([]), urls: zod_1.z.record(zod_1.z.string()).default({}), alerts: zod_1.z.object({ enabled: zod_1.z.boolean().default(false), email: zod_1.z.string().email().optional(), webhook: zod_1.z.string().url().optional(), thresholds: zod_1.z.object({ cpu: zod_1.z.number().min(0).max(100).default(80), memory: zod_1.z.number().min(0).max(100).default(80), disk: zod_1.z.number().min(0).max(100).default(90) }).default({}) }).default({}) }); // ============================================================================ // DEVELOPMENT CONFIGURATION TYPES // ============================================================================ exports.DevelopmentConfigSchema = zod_1.z.object({ hotReload: zod_1.z.boolean().default(true), debugMode: zod_1.z.boolean().default(false), logLevel: zod_1.z.enum(['debug', 'info', 'warn', 'error']).default('info'), autoMigrate: zod_1.z.boolean().default(false), seedData: zod_1.z.boolean().default(false), testMode: zod_1.z.boolean().default(false), watchFiles: zod_1.z.array(zod_1.z.string()).default([]), environment: zod_1.z.enum(['development', 'staging', 'production']).default('development') }); // ============================================================================ // MAIN CONFIGURATION SCHEMA // ============================================================================ exports.DockerPilotConfigSchema = zod_1.z.object({ projectName: zod_1.z.string().min(1), dockerCompose: zod_1.z.string().default('docker compose'), configVersion: zod_1.z.string().default('1.0'), primaryComposeFile: zod_1.z.string().optional(), services: zod_1.z.record(exports.ServiceConfigSchema).default({}), plugins: zod_1.z.array(zod_1.z.string()).default([]), cli: exports.CLIConfigSchema.default({}), backup: exports.BackupConfigSchema.default({}), monitoring: exports.MonitoringConfigSchema.default({}), development: exports.DevelopmentConfigSchema.default({}), networks: zod_1.z.record(zod_1.z.object({ driver: zod_1.z.string().optional(), external: zod_1.z.boolean().default(false), ipam: zod_1.z.object({ driver: zod_1.z.string().optional(), config: zod_1.z.array(zod_1.z.object({ subnet: zod_1.z.string(), gateway: zod_1.z.string().optional() })).optional() }).optional() })).default({}), volumes: zod_1.z.record(zod_1.z.object({ driver: zod_1.z.string().optional(), external: zod_1.z.boolean().default(false), driver_opts: zod_1.z.record(zod_1.z.string()).optional() })).default({}), language: zod_1.z.enum(['en', 'pt-br']).default('en') }); // ============================================================================ // ERROR TYPES // ============================================================================ class DockerPilotError extends Error { constructor(message, code, context) { super(message); this.code = code; this.context = context; this.name = 'DockerPilotError'; } } exports.DockerPilotError = DockerPilotError; class ConfigurationError extends DockerPilotError { constructor(message, context) { super(message, 'CONFIGURATION_ERROR', context); this.name = 'ConfigurationError'; } } exports.ConfigurationError = ConfigurationError; class CommandExecutionError extends DockerPilotError { constructor(message, context) { super(message, 'COMMAND_EXECUTION_ERROR', context); this.name = 'CommandExecutionError'; } } exports.CommandExecutionError = CommandExecutionError; class ServiceError extends DockerPilotError { constructor(message, context) { super(message, 'SERVICE_ERROR', context); this.name = 'ServiceError'; } } exports.ServiceError = ServiceError; class PluginError extends DockerPilotError { constructor(message, context) { super(message, 'PLUGIN_ERROR', context); this.name = 'PluginError'; } } exports.PluginError = PluginError; //# sourceMappingURL=index.js.map