@catladder/cli
Version:
Panter cli tool for cloud CI/CD and DevOps
24 lines (23 loc) • 1.23 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.resolveAllReferences = void 0;
const VariableValueContainingReferences_1 = require("./VariableValueContainingReferences");
const resolveAllReferencesOnce_1 = require("./resolveAllReferencesOnce");
const resolveAllReferences = async (values, getEnvVars) => {
// replace until there aren't any references left
let result = values;
let i = 0;
while (Object.values(result).some(value => value.parts.some(part => part instanceof VariableValueContainingReferences_1.VariableReference))) {
const replaced = await (0, resolveAllReferencesOnce_1.resolveAllReferencesOnce)(result, getEnvVars);
result = replaced;
i++;
if (i > 1000) {
const unresolved = Object.entries(result).filter(([key, value]) => value.parts.some(part => part instanceof VariableValueContainingReferences_1.VariableReference));
throw new Error("Infinite loop detected in these variables: " + unresolved.map(([key, value]) => `${key} (last reference: ${value.parts.find(part => part instanceof VariableValueContainingReferences_1.VariableReference)})`).join(", "));
}
}
return result;
};
exports.resolveAllReferences = resolveAllReferences;