init
This commit is contained in:
104
mc_test/node_modules/electron-log/src/node/packageJson.js
generated
vendored
Executable file
104
mc_test/node_modules/electron-log/src/node/packageJson.js
generated
vendored
Executable file
@ -0,0 +1,104 @@
|
||||
'use strict';
|
||||
|
||||
const fs = require('fs');
|
||||
const path = require('path');
|
||||
|
||||
module.exports = {
|
||||
findAndReadPackageJson,
|
||||
tryReadJsonAt,
|
||||
};
|
||||
|
||||
/**
|
||||
* @return {{ name?: string, version?: string}}
|
||||
*/
|
||||
function findAndReadPackageJson() {
|
||||
return tryReadJsonAt(getMainModulePath())
|
||||
|| tryReadJsonAt(extractPathFromArgs())
|
||||
|| tryReadJsonAt(process.resourcesPath, 'app.asar')
|
||||
|| tryReadJsonAt(process.resourcesPath, 'app')
|
||||
|| tryReadJsonAt(process.cwd())
|
||||
|| { name: undefined, version: undefined };
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {...string} searchPaths
|
||||
* @return {{ name?: string, version?: string } | undefined}
|
||||
*/
|
||||
function tryReadJsonAt(...searchPaths) {
|
||||
if (!searchPaths[0]) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
try {
|
||||
const searchPath = path.join(...searchPaths);
|
||||
const fileName = findUp('package.json', searchPath);
|
||||
if (!fileName) {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
const json = JSON.parse(fs.readFileSync(fileName, 'utf8'));
|
||||
const name = json?.productName || json?.name;
|
||||
if (!name || name.toLowerCase() === 'electron') {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
if (name) {
|
||||
return { name, version: json?.version };
|
||||
}
|
||||
|
||||
return undefined;
|
||||
} catch (e) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {string} fileName
|
||||
* @param {string} [cwd]
|
||||
* @return {string | null}
|
||||
*/
|
||||
function findUp(fileName, cwd) {
|
||||
let currentPath = cwd;
|
||||
// eslint-disable-next-line no-constant-condition
|
||||
while (true) {
|
||||
const parsedPath = path.parse(currentPath);
|
||||
const root = parsedPath.root;
|
||||
const dir = parsedPath.dir;
|
||||
|
||||
if (fs.existsSync(path.join(currentPath, fileName))) {
|
||||
return path.resolve(path.join(currentPath, fileName));
|
||||
}
|
||||
|
||||
if (currentPath === root) {
|
||||
return null;
|
||||
}
|
||||
|
||||
currentPath = dir;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get app path from --user-data-dir cmd arg, passed to a renderer process
|
||||
* @return {string|null}
|
||||
*/
|
||||
function extractPathFromArgs() {
|
||||
const matchedArgs = process.argv.filter((arg) => {
|
||||
return arg.indexOf('--user-data-dir=') === 0;
|
||||
});
|
||||
|
||||
if (matchedArgs.length === 0 || typeof matchedArgs[0] !== 'string') {
|
||||
return null;
|
||||
}
|
||||
|
||||
const userDataDir = matchedArgs[0];
|
||||
return userDataDir.replace('--user-data-dir=', '');
|
||||
}
|
||||
|
||||
function getMainModulePath() {
|
||||
try {
|
||||
// Requires isn't available in ESM
|
||||
return require.main?.filename;
|
||||
} catch {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user