@lotto24-angular/imports-orchestrator
Version:
Orchestrate dynamically imported components in Angular applications
14 lines • 2.19 kB
JavaScript
export function findFn(config, key, trail = []) {
const stringOrFn = config[key];
if (trail.includes(key)) {
throw new Error(`circular reference found: ${[...trail, key].join(' => ')}`);
}
if (typeof stringOrFn === 'string') {
return findFn(config, stringOrFn, [...trail, key]);
}
if (typeof stringOrFn === 'function') {
return stringOrFn;
}
throw new Error(`Missing entry for key="${key}"`);
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmluZC1mbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvaW1wb3J0cy1vcmNoZXN0cmF0b3Ivc3JjL2xpYi9ob3N0LWRpcmVjdGl2ZS91dGlsL2ZpbmQtZm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxVQUFVLE1BQU0sQ0FDcEIsTUFBdUMsRUFDdkMsR0FBVyxFQUNYLFFBQWtCLEVBQUU7SUFFcEIsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRS9CLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxLQUFLLENBQ2IsNkJBQTZCLENBQUMsR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQzVELENBQUM7SUFDSixDQUFDO0lBRUQsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUNuQyxPQUFPLE1BQU0sQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLENBQUMsR0FBRyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsSUFBSSxPQUFPLFVBQVUsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUNyQyxPQUFPLFVBQVUsQ0FBQztJQUNwQixDQUFDO0lBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQywwQkFBMEIsR0FBRyxHQUFHLENBQUMsQ0FBQztBQUNwRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGZpbmRGbjxUPihcbiAgY29uZmlnOiB7IFtpbmRleDogc3RyaW5nXTogc3RyaW5nIHwgVCB9LFxuICBrZXk6IHN0cmluZyxcbiAgdHJhaWw6IHN0cmluZ1tdID0gW11cbik6IFQge1xuICBjb25zdCBzdHJpbmdPckZuID0gY29uZmlnW2tleV07XG5cbiAgaWYgKHRyYWlsLmluY2x1ZGVzKGtleSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgY2lyY3VsYXIgcmVmZXJlbmNlIGZvdW5kOiAke1suLi50cmFpbCwga2V5XS5qb2luKCcgPT4gJyl9YFxuICAgICk7XG4gIH1cblxuICBpZiAodHlwZW9mIHN0cmluZ09yRm4gPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIGZpbmRGbihjb25maWcsIHN0cmluZ09yRm4sIFsuLi50cmFpbCwga2V5XSk7XG4gIH1cblxuICBpZiAodHlwZW9mIHN0cmluZ09yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gc3RyaW5nT3JGbjtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyBlbnRyeSBmb3Iga2V5PVwiJHtrZXl9XCJgKTtcbn1cbiJdfQ==