summaryrefslogtreecommitdiffstats
path: root/devtools/client/netmonitor/src/utils/sort-utils.js
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--devtools/client/netmonitor/src/utils/sort-utils.js42
1 files changed, 42 insertions, 0 deletions
diff --git a/devtools/client/netmonitor/src/utils/sort-utils.js b/devtools/client/netmonitor/src/utils/sort-utils.js
new file mode 100644
index 0000000000..a7f49417e8
--- /dev/null
+++ b/devtools/client/netmonitor/src/utils/sort-utils.js
@@ -0,0 +1,42 @@
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+"use strict";
+
+/**
+ * Sorts object by keys in alphabetical order
+ * If object has nested children, it sorts the child-elements also by keys
+ * @param {object} which should be sorted by keys in alphabetical order
+ */
+function sortObjectKeys(object) {
+ if (object == null) {
+ return null;
+ }
+
+ if (Array.isArray(object)) {
+ for (let i = 0; i < object.length; i++) {
+ if (typeof object[i] === "object") {
+ object[i] = sortObjectKeys(object[i]);
+ }
+ }
+ return object;
+ }
+
+ return Object.keys(object)
+ .sort(function (left, right) {
+ return left.toLowerCase().localeCompare(right.toLowerCase());
+ })
+ .reduce((acc, key) => {
+ if (typeof object[key] === "object") {
+ acc[key] = sortObjectKeys(object[key]);
+ } else {
+ acc[key] = object[key];
+ }
+ return acc;
+ }, Object.create(null));
+}
+
+module.exports = {
+ sortObjectKeys,
+};