diff options
author | RaindropsSys <raindrops@equestria.dev> | 2023-10-24 17:43:37 +0200 |
---|---|---|
committer | RaindropsSys <raindrops@equestria.dev> | 2023-10-24 17:43:37 +0200 |
commit | ae187b6d75c8079da0be1dc288613bad8466fe61 (patch) | |
tree | 5ea0d34185a2270f29ffaa65e1f5258028d7d5d0 /desktop/node_modules/get-package-info/lib | |
download | mist-ae187b6d75c8079da0be1dc288613bad8466fe61.tar.gz mist-ae187b6d75c8079da0be1dc288613bad8466fe61.tar.bz2 mist-ae187b6d75c8079da0be1dc288613bad8466fe61.zip |
Initial commit
Diffstat (limited to 'desktop/node_modules/get-package-info/lib')
-rw-r--r-- | desktop/node_modules/get-package-info/lib/index.js | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/desktop/node_modules/get-package-info/lib/index.js b/desktop/node_modules/get-package-info/lib/index.js new file mode 100644 index 0000000..61b17dc --- /dev/null +++ b/desktop/node_modules/get-package-info/lib/index.js @@ -0,0 +1,88 @@ +'use strict'; + +var Promise = require('bluebird'); +var get = require('lodash.get'); +var readPkgUp = require('read-pkg-up'); +var path = require('path'); +var debug = require('debug')('get-package-info'); + +var getInfo = function getInfo(props, dir, result) { + if (!Array.isArray(props)) return Promise.reject(new Error('First argument must be array of properties to retrieve.')); + if (!props.length) return Promise.resolve(result); + + debug('Getting props: ', props); + debug('Looking up starting from directory: ', dir); + debug('Result so far:', result); + + return Promise.resolve(readPkgUp({ cwd: dir, normalize: false })).then(function (_ref) { + var src = _ref.path; + var pkg = _ref.pkg; + + if (!src) { + debug('Couldn\'t find any more package.json files'); + var err = new Error('Unable to find all properties in parent package.json files. Missing props: ' + props.map(function (prop) { + return JSON.stringify(prop); + }).join(', ')); + err.missingProps = props; + err.result = result; + throw err; + } + + debug('Checking props in package.json found at:', src); + var nextProps = []; + + props.forEach(function (prop) { + // For props given as array + // Look for props in that order, and when found + // save value under all given props + if (Array.isArray(prop)) { + (function () { + var value = void 0, + sourceProp = void 0; + + prop.some(function (p) { + sourceProp = p; + value = get(pkg, p); + return value; + }); + + if (value !== undefined) { + debug('Found prop:', prop); + prop.forEach(function (p) { + result.values[p] = value; + result.source[p] = { src: src, pkg: pkg, prop: sourceProp }; + }); + } else { + debug('Couldn\'t find prop:', prop); + nextProps.push(prop); + } + })(); + } else { + // For regular string props, just look normally + var _value = get(pkg, prop); + + if (_value !== undefined) { + debug('Found prop:', prop); + result.values[prop] = _value; + result.source[prop] = { src: src, pkg: pkg, prop: prop }; + } else { + debug('Couldn\'t find prop:', prop); + nextProps.push(prop); + } + } + }); + + // Still have props to look for, look at another package.json above this one + if (nextProps.length) { + debug('Not all props satisfied, looking for parent package.json'); + return getInfo(nextProps, path.join(path.dirname(src), '..'), result); + } + + debug('Found all props!'); + return result; + }); +}; + +module.exports = function (props, dir, cb) { + return getInfo(props, dir, { values: {}, source: {} }).nodeify(cb); +};
\ No newline at end of file |