UNPKG

@geckos.io/typed-array-buffer-schema

Version:

A Schema based Object to Buffer converter

48 lines 1.78 kB
"use strict"; /** * @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