source/index.js
function alter_query_object(mode, query_object, alter_params) {
        const altered_object = Object.assign({}, query_object);
        const query_keys = Object.keys(query_object);
        const alter_keys = Object.keys(alter_params);
        for (const key of alter_keys) {
            if (query_keys.includes(key)) {
                const alter_value = alter_params[key];
                /* eslint-disable indent */
                const perform_alteration
                    = 'parse' === mode ? 'function' === typeof alter_value
                        ? alter_value
                        : 'function' === typeof alter_value.parse
                            ? alter_value.parse
                            : dont_alter
                    : 'compose' === mode
                        ? 'function' === typeof alter_value.compose
                            ? alter_value.compose
                            : dont_alter
                    : dont_alter
                    ;
                /* eslint-ensable indent */
                altered_object[key] = perform_alteration(altered_object[key]);
            }
        }
        return altered_object;
    }
function alter_query_object(mode, query_object, alter_params) {
        const altered_object = Object.assign({}, query_object);
        const query_keys = Object.keys(query_object);
        const alter_keys = Object.keys(alter_params);
        for (const key of alter_keys) {
            if (query_keys.includes(key)) {
                const alter_value = alter_params[key];
                /* eslint-disable indent */
                const perform_alteration
                    = 'parse' === mode ? 'function' === typeof alter_value
                        ? alter_value
                        : 'function' === typeof alter_value.parse
                            ? alter_value.parse
                            : dont_alter
                    : 'compose' === mode
                        ? 'function' === typeof alter_value.compose
                            ? alter_value.compose
                            : dont_alter
                    : dont_alter
                    ;
                /* eslint-ensable indent */
                altered_object[key] = perform_alteration(altered_object[key]);
            }
        }
        return altered_object;
    }
-----------