1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- 'use strict';
- var findUp = require('find-up');
- var loadJsonFile = require('load-json-file');
- var objectAssign = require('object-assign');
- var Symbol = require('symbol');
- var fpSymbol = Symbol('package.json filepath');
- function addFp(x, fp) {
- x[fpSymbol] = fp;
- return x;
- }
- module.exports = function (namespace, opts) {
- // legacy
- if (typeof opts === 'string') {
- opts = {cwd: opts};
- }
- opts = opts || {};
- return findUp('package.json', {cwd: opts.cwd})
- .then(function (fp) {
- if (!namespace) {
- throw new TypeError('Expected a namespace');
- }
- if (!fp) {
- return addFp(objectAssign({}, opts.defaults), fp);
- }
- return loadJsonFile(fp).then(function (pkg) {
- return addFp(objectAssign({}, opts.defaults, pkg[namespace]), fp);
- });
- });
- };
- module.exports.sync = function (namespace, opts) {
- if (!namespace) {
- throw new TypeError('Expected a namespace');
- }
- // legacy
- if (typeof opts === 'string') {
- opts = {cwd: opts};
- }
- opts = opts || {};
- var fp = findUp.sync('package.json', {cwd: opts.cwd});
- if (!fp) {
- return addFp(objectAssign({}, opts.defaults), fp);
- }
- var pkg = loadJsonFile.sync(fp);
- return addFp(objectAssign({}, opts.defaults, pkg[namespace]), fp);
- };
- module.exports.filepath = function (conf) {
- return conf[fpSymbol];
- };
|