ifest = getOptionValue('--experimental-policy') ? require('internal/process/policy').manifest : null; } if (manifest !== null) { const jsonURL = pathToFileURL(jsonPath); manifest.assertIntegrity(jsonURL, string); } } cache.set(jsonPath, result); return result; } /** * @param {string} requestPath * @return {PackageConfig} */ function readPackage(requestPath) { return read(resolve(requestPath, 'package.json')); } /** * Get the nearest parent package.json file from a given path. * Return the package.json data and the path to the package.json file, or false. * @param {string} checkPath The path to start searching from. */ function readPackageScope(checkPath) { const rootSeparatorIndex = StringPrototypeIndexOf(checkPath, sep); let separatorIndex; do { separatorIndex = StringPrototypeLastIndexOf(checkPath, sep); checkPath = StringPrototypeSlice(checkPath, 0, separatorIndex); if (StringPrototypeEndsWith(checkPath, sep + 'node_modules')) { return false; } const pjson = readPackage(checkPath + sep); if (pjson.exists) { return { data: pjson, path: checkPath, }; } } while (separatorIndex > rootSeparatorIndex); return false; } module.exports = { read, readPackage, readPackageScope, };