feat: adapt levilamina 1.5.x

This commit is contained in:
zimuya4153
2025-10-13 03:46:40 +08:00
Unverified
parent 5b5d60b5fb
commit b0cff071dc
8 changed files with 134 additions and 114 deletions
+48 -45
View File
@@ -1,51 +1,54 @@
/**
* @returns {string}
*/
const getPluginName = () => {
// quickjs
try {
throw new Error("getPluginName");
} catch (error) {
const /** @type {string} */ line = error.stack.trim().split("\n").pop().trim();
if (line.includes("<anonymous>")) {
return line.slice(
line.indexOf("(") + 1,
line.indexOf("\\")
);
}
if (line.includes("<eval>")) {
return line.slice(
line.indexOf("/", line.indexOf("/") + 1) + 1,
line.indexOf("\\")
);
}
}
if (getPluginName.PluginNameCache) return getPluginName.PluginNameCache;
// nodejs
try {
const path = require('path');
const selfFileName = path.basename(__filename);
const pluginDirectory = Object.entries(
require('module')._pathCache
).find(
([key, _]) =>
key.includes(selfFileName)
)[0].split("\u0000")[1];
const directories = pluginDirectory.split("\\");
const pluginName = directories[directories.findIndex(value => value === "plugins") + 1].trim();
if (pluginName) return pluginName;
} catch { }
try {
throw new Error("getPluginName");
} catch (error) {
const /** @type {string} */ line = error.stack.trim().split("\n").pop().trim();
if (line.includes(".js") && /:\d+:\d+$/.test(line)) {
const directories = line.split("\\");
const pluginName = directories[directories.findIndex(value => value === "plugins") + 1].trim();
if (pluginName) return pluginName;
return getPluginName.PluginNameCache = (() => {
if (ll.getCurrentPluginInfo) return ll.getCurrentPluginInfo().name;
const error = new Error("getPluginName");
switch (ll.scriptEngineVersion) {
case "QuickJS": {
if (!error.stack) break;
const /** @type {string} */ line = error.stack.trim().split("\n").pop().trim();
if (line.includes("<anonymous>")) {
return line.slice(
line.indexOf("(") + 1,
line.indexOf("\\")
);
}
if (line.includes("<eval>")) {
return line.slice(
line.indexOf("/", line.indexOf("/") + 1) + 1,
line.indexOf("\\")
);
}
break;
}
case "V8 12.4.254.21-node.21": {
try {
const selfFileName = require('path').basename(__filename);
const pluginDirectory = Object.entries(
require('module')._pathCache
).find(
([key, _]) => key.includes(selfFileName)
)[0].split("\u0000")[1];
const directories = pluginDirectory.split("\\");
const pluginName = directories[directories.findIndex(value => value === "plugins") + 1].trim();
if (pluginName) return pluginName;
} catch { }
if (!error.stack) break;
const /** @type {string} */ line = error.stack.trim().split("\n").pop().trim();
if (line.includes(".js") && /:\d+:\d+$/.test(line)) {
const directories = line.split("\\");
const pluginName = directories[directories.findIndex(value => value === "plugins") + 1].trim();
if (pluginName) return pluginName;
}
break;
}
default: break;
}
}
return "Unknown";
return "Unknown";
})();
};
module.exports = {