UNPKG

@puls-atlas/cli

Version:

The Puls Atlas CLI tool for managing Atlas projects

56 lines 2.2 kB
import { isBoolean, isEmpty, isPlainObject, isString } from 'es-toolkit/compat'; const normalizeCapabilityFlags = capabilities => { if (capabilities === undefined) { return {}; } if (!isPlainObject(capabilities)) { throw new Error('Atlas service descriptor capabilities must be an object.'); } for (const [capabilityName, capabilityValue] of Object.entries(capabilities)) { if (!isBoolean(capabilityValue)) { throw new Error(`Atlas service capability "${capabilityName}" must be a boolean.`); } } return { ...capabilities }; }; const assertNonEmptyString = (value, propertyPath) => { if (!isString(value) || isEmpty(value.trim())) { throw new Error(`Atlas service descriptor ${propertyPath} must be a non-empty string.`); } return value.trim(); }; const normalizeTemplateRootDirectories = templateRootDirectories => { if (templateRootDirectories === undefined) { return []; } if (!Array.isArray(templateRootDirectories)) { throw new Error('Atlas service descriptor templateRootDirectories must be an array.'); } return templateRootDirectories.map((entry, index) => assertNonEmptyString(entry, `templateRootDirectories[${index}]`)); }; export class ServiceDescriptor { constructor({ capabilities, configSectionKey, defaultModuleSource, defaultRootDir, description, displayName, id, moduleRelativePath, templateRootDirectories }) { this.id = assertNonEmptyString(id, 'id'); this.displayName = assertNonEmptyString(displayName, 'displayName'); this.configSectionKey = assertNonEmptyString(configSectionKey ?? id, 'configSectionKey'); this.description = assertNonEmptyString(description, 'description'); this.defaultModuleSource = assertNonEmptyString(defaultModuleSource, 'defaultModuleSource'); this.defaultRootDir = assertNonEmptyString(defaultRootDir, 'defaultRootDir'); this.moduleRelativePath = assertNonEmptyString(moduleRelativePath, 'moduleRelativePath'); this.templateRootDirectories = normalizeTemplateRootDirectories(templateRootDirectories); this.capabilities = normalizeCapabilityFlags(capabilities); } } export default ServiceDescriptor;