docker-pilot
Version:
A powerful, scalable Docker CLI library for managing containerized applications of any size
173 lines • 8.18 kB
JavaScript
"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