From 2e545249557c265f7d5f338cc3a382985211603c Mon Sep 17 00:00:00 2001 From: Myles Borins Date: Fri, 2 Oct 2020 17:52:19 -0400 Subject: deps: update npm to 7.0.0-rc.3 PR-URL: https://github.com/nodejs/node/pull/35474 Reviewed-By: Ruy Adorno Reviewed-By: Ujjwal Sharma Reviewed-By: Ben Coe Reviewed-By: Geoffrey Booth Reviewed-By: Rich Trott Reviewed-By: Shelley Vohr Reviewed-By: Guy Bedford Reviewed-By: Matteo Collina --- deps/npm/node_modules/json-stringify-nice/index.js | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 deps/npm/node_modules/json-stringify-nice/index.js (limited to 'deps/npm/node_modules/json-stringify-nice/index.js') diff --git a/deps/npm/node_modules/json-stringify-nice/index.js b/deps/npm/node_modules/json-stringify-nice/index.js new file mode 100644 index 0000000000..1ca7e14fa0 --- /dev/null +++ b/deps/npm/node_modules/json-stringify-nice/index.js @@ -0,0 +1,38 @@ +const isObj = val => val && !Array.isArray(val) && typeof val === 'object' + +const compare = (ak, bk, prefKeys) => + prefKeys.includes(ak) && !prefKeys.includes(bk) ? -1 + : prefKeys.includes(bk) && !prefKeys.includes(ak) ? 1 + : prefKeys.includes(ak) && prefKeys.includes(bk) + ? prefKeys.indexOf(ak) - prefKeys.indexOf(bk) + : ak.localeCompare(bk) + +const sort = (replacer, seen) => (key, val) => { + const prefKeys = Array.isArray(replacer) ? replacer : [] + + if (typeof replacer === 'function') + val = replacer(key, val) + + if (!isObj(val)) + return val + + if (seen.has(val)) + return seen.get(val) + + const ret = Object.entries(val).sort( + ([ak, av], [bk, bv]) => + isObj(av) === isObj(bv) ? compare(ak, bk, prefKeys) + : isObj(av) ? 1 + : -1 + ).reduce((set, [k, v]) => { + set[k] = v + return set + }, {}) + + seen.set(val, ret) + return ret +} + +module.exports = (obj, replacer, space = 2) => + JSON.stringify(obj, sort(replacer, new Map()), space) + + (space ? '\n' : '') -- cgit v1.2.1