trifid-core
Version:
Trifid Core
44 lines (43 loc) • 1.41 kB
JavaScript
import { cwdResolver, envResolver, fileCallback, fileResolver, } from "../resolvers.js";
/**
*
* @param value Array of paths.
* @param context Configuration file full path.
*/
export const extendsResolver = (value, context) => {
return value.map((path) => {
return fileCallback(context)(fileResolver(cwdResolver(path), context));
});
};
/**
* Recursively expand resolver prefixes (`env:`, `cwd:`, `file:`) found in any
* string contained in `value`. The shape of `value` is preserved.
*
* @param value Value to expand.
* @param context Configuration file full path.
*/
export const applyResolvers = (value, context) => {
if (value !== null && typeof value === 'object') {
const record = value;
for (const k of Object.keys(record)) {
record[k] = applyResolvers(record[k], context);
}
return value;
}
if (typeof value === 'string') {
return fileResolver(cwdResolver(envResolver(value)), context);
}
return value;
};
export const templateResolver = (value, context) => {
return applyResolvers(value, context);
};
export const serverResolver = (value, context) => {
return applyResolvers(value, context);
};
export const globalsResolver = (value, context) => {
return applyResolvers(value, context);
};
export const pluginsResolver = (value, context) => {
return applyResolvers(value, context);
};