@catladder/cli
Version:
Panter cli tool for cloud CI/CD and DevOps
25 lines • 1.39 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;
//# sourceMappingURL=resolveAllReferences.js.map