UNPKG

@twg-group/container-manager

Version:

Container management for Docker, Swarm, Kubernetes

98 lines 4.29 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); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.DeployConfigDto = void 0; const class_transformer_1 = require("class-transformer"); const class_validator_1 = require("class-validator"); const port_binding_dto_1 = require("./port-binding.dto"); const volume_binding_dto_1 = require("./volume-binding.dto"); const class_transformer_2 = require("class-transformer"); class DeployConfigDto { image; name; env; ports; volumes; replicas = 1; network; labels; restartPolicy = true; static create(config) { const instance = (0, class_transformer_2.plainToClass)(DeployConfigDto, config, { enableImplicitConversion: true, }); const errors = (0, class_validator_1.validateSync)(instance); if (errors.length > 0) { const errorMessages = errors.flatMap((e) => Object.values(e.constraints ?? {})); throw new Error(`Configuration error: ${errorMessages.join('; ')}`); } return instance; } } exports.DeployConfigDto = DeployConfigDto; __decorate([ (0, class_validator_1.IsNotEmpty)({ message: 'Image must be specified' }), (0, class_validator_1.IsString)(), __metadata("design:type", String) ], DeployConfigDto.prototype, "image", void 0); __decorate([ (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsString)(), (0, class_validator_1.Matches)(/^[a-z0-9-_]+$/, { message: 'Name can only contain lowercase letters, numbers, hyphens and underscores', }), __metadata("design:type", String) ], DeployConfigDto.prototype, "name", void 0); __decorate([ (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsObject)(), __metadata("design:type", Object) ], DeployConfigDto.prototype, "env", void 0); __decorate([ (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsArray)(), (0, class_validator_1.ValidateNested)({ each: true }), (0, class_transformer_1.Type)(() => port_binding_dto_1.PortBindingDto), __metadata("design:type", Array) ], DeployConfigDto.prototype, "ports", void 0); __decorate([ (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsArray)(), (0, class_validator_1.ValidateNested)({ each: true }), (0, class_transformer_1.Type)(() => volume_binding_dto_1.VolumeBindingDto), __metadata("design:type", Array) ], DeployConfigDto.prototype, "volumes", void 0); __decorate([ (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsInt)(), (0, class_validator_1.Min)(1, { message: 'Minimum 1 replica required' }), (0, class_validator_1.Max)(20, { message: 'Maximum 20 replicas allowed' }), __metadata("design:type", Number) ], DeployConfigDto.prototype, "replicas", void 0); __decorate([ (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsString)(), (0, class_validator_1.Matches)(/^[a-z0-9-_]+$/, { message: 'Network name can only contain lowercase letters, numbers, hyphens and underscores', }), __metadata("design:type", String) ], DeployConfigDto.prototype, "network", void 0); __decorate([ (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsObject)(), __metadata("design:type", Object) ], DeployConfigDto.prototype, "labels", void 0); __decorate([ (0, class_validator_1.IsOptional)(), (0, class_validator_1.IsBoolean)(), __metadata("design:type", Boolean) ], DeployConfigDto.prototype, "restartPolicy", void 0); //# sourceMappingURL=deploy-config.dto.js.map