@geckos.io/typed-array-buffer-schema
Version:
A Schema based Object to Buffer converter
48 lines • 1.78 kB
JavaScript
;
/**
* @copyright
* Copyright (c) 2014 IndigoUnited (https://github.com/IndigoUnited)
* Copyright (c) 2021 Yannick Deubel (https://github.com/yandeu)
*
* @license {@link https://github.com/geckosio/geckos.io/blob/master/LICENSE BSD-3-Clause}
*
* @description
* copied and modified from deep-sort-object@1.0.2 (https://github.com/IndigoUnited/js-deep-sort-object/blob/master/index.js)
* previously licensed under MIT (https://github.com/IndigoUnited/js-deep-sort-object/blob/master/LICENSE)
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.deepSortObject = void 0;
const is_plain_object_1 = require("is-plain-object");
const isPlainArray = (arr) => Array.isArray(arr) && (arr.length > 0 ? typeof arr[0] == "object" : true);
const isValue = (val) => !(0, is_plain_object_1.isPlainObject)(val) && !isPlainArray(val);
/** Sort objects by key; sort properties that are not itself an object on top. */
// @ts-ignore
const defaultSortFn = ([keyA, valueA], [keyB, valueB]) => {
if (isValue(valueA) && isValue(valueB))
return keyA.localeCompare(keyB);
if (isValue(valueA))
return -1;
if (isValue(valueB))
return 1;
return keyA.localeCompare(keyB);
};
const sort = (src, comparator) => {
let out;
if (Array.isArray(src)) {
return src.map(function (item) {
return sort(item, comparator);
});
}
if ((0, is_plain_object_1.isPlainObject)(src)) {
out = {};
Object.entries(src)
.sort(comparator || defaultSortFn)
.forEach(function ([key, value]) {
out[key] = sort(value, comparator);
});
return out;
}
return src;
};
exports.deepSortObject = sort;
//# sourceMappingURL=deep-sort-object.js.map