import { ContextualEnvironment, Environment, flattenTree, type AnyEnvironment, type EnvironmentMode, type MultiEnvironment, } from '@dazl/engine-core'; import type { IEnvironmentDescriptor } from '../types.js'; const convertEnvToIEnv = (env: AnyEnvironment): IEnvironmentDescriptor => { const { env: name, envType: type } = env; return { name, type, env, flatDependencies: [], }; }; export function parseEnv(env: ENV): IEnvironmentDescriptor { type MultiEnvironmentType = MultiEnvironment; const [parsedEnv, ...dependencies] = [ ...flattenTree(env, (node) => node.dependencies), ].map((e) => convertEnvToIEnv(e)); return { ...parsedEnv!, flatDependencies: dependencies as IEnvironmentDescriptor[], }; } export function parseContextualEnv( env: ContextualEnvironment, ): IEnvironmentDescriptor[] { const { env: name, environments } = env; const [, ...dependencies] = [...flattenTree(env, (node) => node.dependencies)].map((e) => convertEnvToIEnv(e)); return environments.map((childEnv) => ({ name, flatDependencies: dependencies as IEnvironmentDescriptor>[], type: childEnv.envType, childEnvName: childEnv.env, env: new Environment(name, childEnv.envType, 'single'), })); }