UNPKG

superjolt

Version:

AI-powered deployment platform with MCP support - Deploy JavaScript apps using natural language with Claude Desktop

136 lines 6.58 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DomainAddCommand = void 0; const nest_commander_1 = require("nest-commander"); const api_service_1 = require("../services/api.service"); const auth_service_1 = require("../services/auth.service"); const logger_service_1 = require("../services/logger.service"); const common_1 = require("@nestjs/common"); const authenticated_command_1 = require("./authenticated.command"); const project_1 = require("../utils/project"); const chalk_1 = __importDefault(require("chalk")); let DomainAddCommand = class DomainAddCommand extends authenticated_command_1.AuthenticatedCommand { apiService; authService; logger; constructor(apiService, authService, logger) { super(); this.apiService = apiService; this.authService = authService; this.logger = logger; } async execute(passedParams, options) { try { const domain = passedParams[0]; let serviceId = passedParams[1]; if (!domain) { this.logger.error('Error: Domain is required'); this.logger.log('Usage: superjolt domain:add <domain> [serviceId]'); this.logger.log('Example: superjolt domain:add app.example.com'); this.logger.log(' superjolt domain:add app.example.com happy-blue-fox'); process.exit(1); } if (!serviceId) { const config = (0, project_1.readSuperjoltConfig)(); if (config?.serviceId) { serviceId = config.serviceId; this.logger.log(chalk_1.default.dim(`Using service ID from .superjolt file: ${serviceId}`)); } else { this.logger.error('Error: Service ID is required'); this.logger.log('Usage: superjolt domain:add <domain> [serviceId]'); this.logger.log('\nNo .superjolt file found. Run "superjolt deploy" first or provide a service ID.'); process.exit(1); } } const domainRegex = /^([a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/; if (!domainRegex.test(domain)) { this.logger.error('Error: Invalid domain format'); this.logger.log('Domain must be a valid domain name (e.g., app.example.com)'); process.exit(1); } this.logger.log(chalk_1.default.dim(`Adding custom domain ${domain} to service ${serviceId}...`)); const response = await this.apiService.createCustomDomain({ domain, serviceId, isPrimary: options.primary, }); this.logger.log(chalk_1.default.green(`✅ Custom domain added successfully!`)); this.logger.log(''); this.logger.log(`Domain: ${chalk_1.default.cyan(response.domain)}`); this.logger.log(`Service: ${response.serviceId}`); this.logger.log(`Status: ${this.formatStatus(response.status)}`); this.logger.log(`SSL Status: ${this.formatStatus(response.sslStatus)}`); if (response.isPrimary) { this.logger.log(`Primary: ${chalk_1.default.green('Yes')}`); } if (response.validationTarget) { this.logger.log(''); this.logger.log(chalk_1.default.yellow('⚠️ Domain validation required:')); this.logger.log(`Validation Method: ${response.validationMethod}`); this.logger.log(`Validation URL: ${chalk_1.default.cyan(response.validationTarget)}`); this.logger.log(''); this.logger.log('The domain will be automatically validated once DNS propagates.'); this.logger.log('This usually takes a few minutes.'); } this.logger.log(''); this.logger.log(chalk_1.default.dim('Check domain status with:')); this.logger.log(chalk_1.default.cyan(` superjolt domain:status ${domain}`)); } catch (error) { this.logger.error(`\n${error.message}`); process.exit(1); } } parsePrimary() { return true; } formatStatus(status) { switch (status) { case 'active': return chalk_1.default.green('● Active'); case 'pending_validation': return chalk_1.default.yellow('● Pending Validation'); case 'failed': return chalk_1.default.red('● Failed'); case 'expired': return chalk_1.default.red('● Expired'); default: return chalk_1.default.gray(`● ${status}`); } } }; exports.DomainAddCommand = DomainAddCommand; __decorate([ (0, nest_commander_1.Option)({ flags: '-p, --primary', description: 'Set this domain as the primary domain for the service', }), __metadata("design:type", Function), __metadata("design:paramtypes", []), __metadata("design:returntype", Boolean) ], DomainAddCommand.prototype, "parsePrimary", null); exports.DomainAddCommand = DomainAddCommand = __decorate([ (0, common_1.Injectable)(), (0, nest_commander_1.Command)({ name: 'domain:add', arguments: '<domain> [serviceId]', description: 'Add a custom domain to a service', }), __metadata("design:paramtypes", [api_service_1.ApiService, auth_service_1.AuthService, logger_service_1.LoggerService]) ], DomainAddCommand); //# sourceMappingURL=domain-add.command.js.map