add: devtool support
This commit is contained in:
parent
a56e31fa0d
commit
1208ad54a9
@ -18,7 +18,7 @@
|
||||
"build-prod": "cross-env NODE_ENV=production node scripts/build.mjs",
|
||||
"build": "concurrently -c auto npm:build-prod npm:tsc",
|
||||
"tsc": "tsc --noEmit",
|
||||
"start": "node scripts/start.mjs",
|
||||
"start": "concurrently 'node scripts/start.mjs' 'node -e \"setTimeout(()=>{},2000)\" && npm run devtool'",
|
||||
"start-watch": "npm run build-dev && concurrently -c auto npm:start npm:watch",
|
||||
"stop": "node scripts/stop.mjs",
|
||||
"restart-dev": "npm run build-dev && npm run stop && npm run start",
|
||||
@ -26,6 +26,7 @@
|
||||
"restart": "npm run restart-dev",
|
||||
"reload": "npm run build-dev && node scripts/reload.mjs",
|
||||
"watch": "chokidar \"src/**\" \"addon/**\" -c \"npm run reload\"",
|
||||
"devtool": "node scripts/devtool.mjs",
|
||||
"release": "release-it",
|
||||
"lint": "prettier --write . && eslint . --ext .ts --fix",
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
|
61
scripts/devtool.mjs
Normal file
61
scripts/devtool.mjs
Normal file
@ -0,0 +1,61 @@
|
||||
import { exit } from "process";
|
||||
import { execSync } from "child_process";
|
||||
import cmd from "./zotero-cmd.json" assert { type: "json" };
|
||||
|
||||
const { zoteroBinPath, profilePath } = cmd.exec;
|
||||
|
||||
const startZotero = `"${zoteroBinPath}" --debugger --purgecaches -profile "${profilePath}"`;
|
||||
|
||||
const script = `
|
||||
(async () => {
|
||||
Zotero.Prefs.set("devtools.debugger.remote-enabled", true, true);
|
||||
Zotero.Prefs.set("devtools.debugger.remote-port", 6100, true);
|
||||
Zotero.Prefs.set("devtools.debugger.prompt-connection", false, true);
|
||||
Zotero.Prefs.set("devtools.debugger.chrome-debugging-websocket", false, true);
|
||||
|
||||
env =
|
||||
Services.env ||
|
||||
Cc["@mozilla.org/process/environment;1"].getService(Ci.nsIEnvironment);
|
||||
|
||||
env.set("MOZ_BROWSER_TOOLBOX_PORT", 6100);
|
||||
Zotero.openInViewer(
|
||||
"chrome://devtools/content/framework/browser-toolbox/window.html",
|
||||
{
|
||||
onLoad: (doc) => {
|
||||
doc.querySelector("#status-message-container").style.visibility =
|
||||
"collapse";
|
||||
let toolboxBody;
|
||||
waitUntil(
|
||||
() => {
|
||||
toolboxBody = doc
|
||||
.querySelector(".devtools-toolbox-browsertoolbox-iframe")
|
||||
?.contentDocument?.querySelector(".theme-body");
|
||||
return toolboxBody;
|
||||
},
|
||||
() => {
|
||||
toolboxBody.style = "pointer-events: all !important";
|
||||
}
|
||||
);
|
||||
},
|
||||
}
|
||||
);
|
||||
|
||||
function waitUntil(condition, callback, interval = 100, timeout = 10000) {
|
||||
const start = Date.now();
|
||||
const intervalId = setInterval(() => {
|
||||
if (condition()) {
|
||||
clearInterval(intervalId);
|
||||
callback();
|
||||
} else if (Date.now() - start > timeout) {
|
||||
clearInterval(intervalId);
|
||||
}
|
||||
}, interval);
|
||||
}
|
||||
})()`;
|
||||
|
||||
const url = `zotero://ztoolkit-debug/?run=${encodeURIComponent(script)}`;
|
||||
|
||||
const command = `${startZotero} -url "${url}"`;
|
||||
|
||||
execSync(command);
|
||||
exit(0);
|
Loading…
x
Reference in New Issue
Block a user