assetgraph-i18n
Version:
i18n plugin for assetgraph-builder
19 lines (18 loc) • 517 B
JavaScript
module.exports = function canonicalizeObject(obj, numLevels) {
if (typeof numLevels !== 'number') {
numLevels = Infinity;
}
if (Array.isArray(obj)) {
return obj.map(canonicalizeObject, numLevels - 1);
} else if (typeof obj === 'object' && obj !== null && numLevels > 0) {
const sortedObj = {};
Object.keys(obj)
.sort()
.forEach(function (key) {
sortedObj[key] = canonicalizeObject(obj[key], numLevels - 1);
});
return sortedObj;
} else {
return obj;
}
};