in apps/mountebank-mock/mountebank-source/src/models/predicates.js [198:220]
function normalize (obj, config, options, logger) {
// Needed to solve a tricky case conversion for "matches" predicates with jsonpath/xpath parameters
if (typeof config.keyCaseSensitive === 'undefined') {
config.keyCaseSensitive = config.caseSensitive;
}
const keyCaseTransform = config.keyCaseSensitive === false ? lowercase : caseTransform(config),
sortTransform = array => array.sort(sortObjects),
transforms = [];
if (options.withSelectors) {
transforms.push(selectTransform(config, options, logger));
}
transforms.push(exceptTransform(config, logger));
transforms.push(caseTransform(config));
transforms.push(encodingTransform(options.encoding));
// sort to provide deterministic comparison for deepEquals,
// where the order in the array for multi-valued querystring keys
// and xpath selections isn't important
return transformAll(obj, [keyCaseTransform], transforms, [sortTransform]);
}