| Server IP : 85.214.239.14 / Your IP : 216.73.216.178 Web Server : Apache/2.4.65 (Debian) System : Linux h2886529.stratoserver.net 4.9.0 #1 SMP Mon Sep 30 15:36:27 MSK 2024 x86_64 User : www-data ( 33) PHP Version : 8.2.29 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : OFF Directory : /proc/3/task/3/root/proc/2/task/2/root/usr/lib/node_modules/pm2/lib/tools/ |
Upload File : |
'use strict';
var path = require('path')
, fs = require('fs');
/**
* Attempt to somewhat safely parse the JSON.
*
* @param {String} data JSON blob that needs to be parsed.
* @returns {Object|false} Parsed JSON or false.
* @api private
*/
function parse(data) {
data = data.toString('utf-8');
//
// Remove a possible UTF-8 BOM (byte order marker) as this can lead to parse
// values when passed in to the JSON.parse.
//
if (data.charCodeAt(0) === 0xFEFF) data = data.slice(1);
try { return JSON.parse(data); }
catch (e) { return false; }
}
/**
* Find package.json files.
*
* @param {String|Object} root The root directory we should start searching in.
* @returns {Object} Iterator interface.
* @api public
*/
module.exports = function find(root) {
root = root || process.cwd();
if (typeof root !== "string") {
if (typeof root === "object" && typeof root.filename === 'string') {
root = root.filename;
} else {
throw new Error("Must pass a filename string or a module object to finder");
}
}
return {
/**
* Return the parsed package.json that we find in a parent folder.
*
* @returns {Object} Value, filename and indication if the iteration is done.
* @api public
*/
next: function next() {
if (root.match(/^(\w:\\|\/)$/)) return {
value: undefined,
filename: undefined,
done: true
};
var file = path.join(root, 'package.json')
, data;
root = path.resolve(root, '..');
if (fs.existsSync(file) && (data = parse(fs.readFileSync(file)))) {
data.__path = file;
return {
value: data,
filename: file,
done: false
};
}
return next();
}
};
};