UNPKG

@puls-atlas/cli

Version:

The Puls Atlas CLI tool for managing Atlas projects

42 lines 2.09 kB
import { isPlainObject } from 'es-toolkit/predicate'; import { resolveRuntimeEnvironmentBinding } from './configShape.js'; import { clone, normalizeOptionalString } from '../../utils/value.js'; import { getAtlasGeneratedFeatureConfigPath } from '../../utils/atlas.js'; export const SERVICE_RUNTIME_CONFIG_VERSION = 1; const createGeneratedServiceRuntime = (bindingRuntime, runtimeMetadata) => ({ serviceUrl: normalizeOptionalString(bindingRuntime?.serviceUrl) ?? normalizeOptionalString(runtimeMetadata?.serviceUrl) ?? null }); const createGeneratedServiceEntry = (serviceName, serviceConfig, context, runtimeMetadataByService) => { if (!isPlainObject(serviceConfig)) { return null; } const environmentBinding = resolveRuntimeEnvironmentBinding(serviceConfig, context?.environment); if (isPlainObject(environmentBinding)) { const generatedConfig = clone(environmentBinding); const bindingRuntime = isPlainObject(generatedConfig.runtime) ? generatedConfig.runtime : null; delete generatedConfig.runtime; return { config: generatedConfig, runtime: createGeneratedServiceRuntime(bindingRuntime, runtimeMetadataByService?.[serviceName]), scope: 'project' }; } return { config: clone(serviceConfig), scope: 'global' }; }; export const createGeneratedServiceConfig = (context, rootConfig, now = new Date(), options = {}) => ({ version: SERVICE_RUNTIME_CONFIG_VERSION, environment: context.environment ?? null, generatedAt: now.toISOString(), projectId: context.projectId, services: Object.fromEntries(Object.entries(rootConfig?.services ?? {}).map(([serviceName, serviceConfig]) => [serviceName, createGeneratedServiceEntry(serviceName, serviceConfig, context, options.runtimeMetadataByService)]).filter(([, serviceEntry]) => Boolean(serviceEntry))) }); export const previewGeneratedServiceConfigArtifact = (context, cwd = process.cwd()) => ({ filePath: getAtlasGeneratedFeatureConfigPath('services', context.projectId, cwd) }); export default { createGeneratedServiceConfig, previewGeneratedServiceConfigArtifact };