aboutsummaryrefslogtreecommitdiff
path: root/node_modules/sort-keys/index.js
diff options
context:
space:
mode:
authorFlorian Dold <florian.dold@gmail.com>2017-05-28 00:38:50 +0200
committerFlorian Dold <florian.dold@gmail.com>2017-05-28 00:40:43 +0200
commit7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027 (patch)
tree6de9a1aebd150a23b7f8c273ec657a5d0a18fe3e /node_modules/sort-keys/index.js
parent963b7a41feb29cc4be090a2446bdfe0c1f1bcd81 (diff)
downloadwallet-core-7fff4499fd915bcea3fa93b1aa8b35f4fe7a6027.tar.xz
add linting (and some initial fixes)
Diffstat (limited to 'node_modules/sort-keys/index.js')
-rw-r--r--node_modules/sort-keys/index.js44
1 files changed, 44 insertions, 0 deletions
diff --git a/node_modules/sort-keys/index.js b/node_modules/sort-keys/index.js
new file mode 100644
index 000000000..f75a0e053
--- /dev/null
+++ b/node_modules/sort-keys/index.js
@@ -0,0 +1,44 @@
+'use strict';
+var isPlainObj = require('is-plain-obj');
+
+module.exports = function (obj, opts) {
+ if (!isPlainObj(obj)) {
+ throw new TypeError('Expected a plain object');
+ }
+
+ opts = opts || {};
+
+ // DEPRECATED
+ if (typeof opts === 'function') {
+ opts = {compare: opts};
+ }
+
+ var deep = opts.deep;
+ var seenInput = [];
+ var seenOutput = [];
+
+ var sortKeys = function (x) {
+ var seenIndex = seenInput.indexOf(x);
+
+ if (seenIndex !== -1) {
+ return seenOutput[seenIndex];
+ }
+
+ var ret = {};
+ var keys = Object.keys(x).sort(opts.compare);
+
+ seenInput.push(x);
+ seenOutput.push(ret);
+
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ var val = x[key];
+
+ ret[key] = deep && isPlainObj(val) ? sortKeys(val) : val;
+ }
+
+ return ret;
+ };
+
+ return sortKeys(obj);
+};