atsid/express-jefferson

View on GitHub
src/domain/appsection/routes/chain_processor/resolve_aliases.js

Summary

Maintainability
A
25 mins
Test Coverage
/**
 * Resolves alias references in a middleware cahin
 * @param middleware
 */
function process(middleware, conf) {
    const isAlias = (x) => typeof x === 'string';
    function getAlias(aliasName) {
        const found = conf.aliases[aliasName];
        if (!found) {
            throw new Error(`could not find alias ${aliasName}`);
        }
        return found;
    }

    for (let i = middleware.length - 1; i >= 0; i--) {
        if (isAlias(middleware[i])) {
            const aliasResult = process(getAlias(middleware[i]), conf);
            middleware.splice.apply(middleware, [i, 1].concat(aliasResult));
        }
    }
    return middleware;
}

module.exports = {process};