| "use strict"; |
| |
| Object.defineProperty(exports, "__esModule", { |
| value: true |
| }); |
| exports.findPackageData = findPackageData; |
| |
| function _path() { |
| const data = _interopRequireDefault(require("path")); |
| |
| _path = function () { |
| return data; |
| }; |
| |
| return data; |
| } |
| |
| var _utils = require("./utils"); |
| |
| function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } |
| |
| const PACKAGE_FILENAME = "package.json"; |
| |
| function findPackageData(filepath) { |
| let pkg = null; |
| const directories = []; |
| let isPackage = true; |
| |
| let dirname = _path().default.dirname(filepath); |
| |
| while (!pkg && _path().default.basename(dirname) !== "node_modules") { |
| directories.push(dirname); |
| pkg = readConfigPackage(_path().default.join(dirname, PACKAGE_FILENAME)); |
| |
| const nextLoc = _path().default.dirname(dirname); |
| |
| if (dirname === nextLoc) { |
| isPackage = false; |
| break; |
| } |
| |
| dirname = nextLoc; |
| } |
| |
| return { |
| filepath, |
| directories, |
| pkg, |
| isPackage |
| }; |
| } |
| |
| const readConfigPackage = (0, _utils.makeStaticFileCache)((filepath, content) => { |
| let options; |
| |
| try { |
| options = JSON.parse(content); |
| } catch (err) { |
| err.message = `${filepath}: Error while parsing JSON - ${err.message}`; |
| throw err; |
| } |
| |
| if (typeof options !== "object") { |
| throw new Error(`${filepath}: Config returned typeof ${typeof options}`); |
| } |
| |
| if (Array.isArray(options)) { |
| throw new Error(`${filepath}: Expected config object but found array`); |
| } |
| |
| return { |
| filepath, |
| dirname: _path().default.dirname(filepath), |
| options |
| }; |
| }); |