summaryrefslogtreecommitdiff
path: root/desktop/node_modules/get-package-info/lib
diff options
context:
space:
mode:
authorRaindropsSys <raindrops@equestria.dev>2023-10-24 17:43:37 +0200
committerRaindropsSys <raindrops@equestria.dev>2023-10-24 17:43:37 +0200
commitae187b6d75c8079da0be1dc288613bad8466fe61 (patch)
tree5ea0d34185a2270f29ffaa65e1f5258028d7d5d0 /desktop/node_modules/get-package-info/lib
downloadmist-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.js88
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