UNPKG

ts-prime

Version:

A utility library for JavaScript and Typescript.

64 lines (63 loc) 2.07 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var guards_1 = require("./guards"); var pipe_1 = require("./pipe"); var sortBy_1 = require("./sortBy"); var map_1 = require("./map"); function anyToString(data) { if (guards_1.isObject(data)) { var keys = Object.keys(data); return pipe_1.pipe(keys, map_1.map(function (key) { var value = data[key]; if (guards_1.isString(value)) return key + ":" + value; if (guards_1.isNumber(value)) return key + ":" + value; if (guards_1.isBoolean(value)) return key + ":" + String(value); if (guards_1.isObject(value)) { return key + ":" + anyToString(value); } return key + ":" + String(value); }), sortBy_1.sortBy(function (c) { return c; })).join(':'); } if (guards_1.isArray(data)) { return pipe_1.pipe(data.map(function (d) { return anyToString(d); }), sortBy_1.sortBy(function (c) { return c; })).join(':'); } return String(data); } /** * Recursivly sort arrays and objects. * @param value - anything */ function deepSort(value) { var v = value; if (guards_1.isString(v)) return value; if (guards_1.isNumber(v)) return value; if (guards_1.isFunction(v)) return value; if (guards_1.isPromise(v)) return value; if (guards_1.isBoolean(v)) return value; if (guards_1.isObject(v)) { var keys = pipe_1.pipe(Object.keys(value), sortBy_1.sortBy(function (c) { return c; })); var obj = {}; for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) { var k = keys_1[_i]; obj[k] = deepSort(v[k]); } return obj; } if (guards_1.isArray(v)) { return pipe_1.pipe(v.map(function (q) { return deepSort(q); }), sortBy_1.sortBy(function (c) { return anyToString(c); })); } return value; } exports.deepSort = deepSort;