--- /dev/null
+'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;
+};