some lib fixes
This commit is contained in:
59
node_modules/jibo/lib/utils/path-utils.js
generated
vendored
Normal file
59
node_modules/jibo/lib/utils/path-utils.js
generated
vendored
Normal file
@@ -0,0 +1,59 @@
|
||||
"use strict";
|
||||
|
||||
const path = require("path");
|
||||
|
||||
function existsSync(p) {
|
||||
try {
|
||||
// eslint-disable-next-line n/no-sync
|
||||
return require("fs").existsSync(p);
|
||||
} catch (_) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function isDirectorySync(p) {
|
||||
try {
|
||||
// eslint-disable-next-line n/no-sync
|
||||
return require("fs").statSync(p).isDirectory();
|
||||
} catch (_) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
function findRoot(startPath) {
|
||||
if (!startPath || typeof startPath !== "string") return null;
|
||||
|
||||
// Handle URIs (atom://...) and file:// style strings conservatively.
|
||||
if (startPath.startsWith("atom://")) return null;
|
||||
let current = startPath;
|
||||
if (current.startsWith("file://")) current = current.replace(/^file:\/\//, "");
|
||||
|
||||
// If it's a file, walk from its directory.
|
||||
try {
|
||||
if (existsSync(current) && !current.endsWith(path.sep)) {
|
||||
const stat = require("fs").statSync(current);
|
||||
if (stat && stat.isFile()) current = path.dirname(current);
|
||||
}
|
||||
} catch (_) {
|
||||
current = path.dirname(current);
|
||||
}
|
||||
|
||||
// Prefer `find-root` if available (it is in the SDK dependency tree).
|
||||
try {
|
||||
const findRootPkg = require("find-root");
|
||||
return findRootPkg(current);
|
||||
} catch (_) {
|
||||
// Fall back to a simple package.json search.
|
||||
}
|
||||
|
||||
let dir = current;
|
||||
while (dir && dir !== path.dirname(dir)) {
|
||||
if (existsSync(path.join(dir, "package.json"))) return dir;
|
||||
// Jibo SDK projects also commonly have a top-level `src/`.
|
||||
if (isDirectorySync(path.join(dir, "src"))) return dir;
|
||||
dir = path.dirname(dir);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
module.exports = { findRoot };
|
||||
Reference in New Issue
Block a user