| 'use strict'; |
| var path = require('path'); |
| var loadJsonFile = require('load-json-file'); |
| var normalizePackageData = require('normalize-package-data'); |
| var pathType = require('path-type'); |
| |
| module.exports = function (fp, opts) { |
| if (typeof fp !== 'string') { |
| opts = fp; |
| fp = '.'; |
| } |
| |
| opts = opts || {}; |
| |
| return pathType.dir(fp) |
| .then(function (isDir) { |
| if (isDir) { |
| fp = path.join(fp, 'package.json'); |
| } |
| |
| return loadJsonFile(fp); |
| }) |
| .then(function (x) { |
| if (opts.normalize !== false) { |
| normalizePackageData(x); |
| } |
| |
| return x; |
| }); |
| }; |
| |
| module.exports.sync = function (fp, opts) { |
| if (typeof fp !== 'string') { |
| opts = fp; |
| fp = '.'; |
| } |
| |
| opts = opts || {}; |
| fp = pathType.dirSync(fp) ? path.join(fp, 'package.json') : fp; |
| |
| var x = loadJsonFile.sync(fp); |
| |
| if (opts.normalize !== false) { |
| normalizePackageData(x); |
| } |
| |
| return x; |
| }; |