@featurevisor/core
Version:
Core package of Featurevisor for Node.js usage
27 lines • 1.18 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.checkForCircularDependencyInRequired = checkForCircularDependencyInRequired;
async function checkForCircularDependencyInRequired(datasource, featureKey, required, chain = []) {
if (!required) {
return;
}
const requiredKeys = required.map((r) => (typeof r === "string" ? r : r.key));
if (requiredKeys.length === 0) {
return;
}
for (const requiredKey of requiredKeys) {
chain.push(requiredKey);
if (chain.indexOf(featureKey) > -1) {
throw new Error(`circular dependency found: ${chain.join(" -> ")}`);
}
const requiredFeatureExists = await datasource.featureExists(featureKey);
if (!requiredFeatureExists) {
throw new Error(`required feature "${requiredKey}" not found`);
}
const requiredParsedFeature = await datasource.readFeature(requiredKey);
if (requiredParsedFeature.required) {
await checkForCircularDependencyInRequired(datasource, featureKey, requiredParsedFeature.required, chain);
}
}
}
//# sourceMappingURL=checkCircularDependency.js.map