Update app.js
Browse files
app.js
CHANGED
|
@@ -2148,13 +2148,22 @@ app.post("/playwright", async (req, res) => {
|
|
| 2148 |
if (!code) return res.status(400).json({ output: "code is required" });
|
| 2149 |
|
| 2150 |
try {
|
| 2151 |
-
const
|
| 2152 |
-
|
| 2153 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 2154 |
|
| 2155 |
-
|
| 2156 |
-
|
| 2157 |
} catch (error) {
|
|
|
|
| 2158 |
res.status(500).json({ output: error.message });
|
| 2159 |
}
|
| 2160 |
});
|
|
|
|
| 2148 |
if (!code) return res.status(400).json({ output: "code is required" });
|
| 2149 |
|
| 2150 |
try {
|
| 2151 |
+
const logs = [];
|
| 2152 |
+
const originalConsoleLog = console.log;
|
| 2153 |
+
console.log = (...args) => {
|
| 2154 |
+
logs.push(args.map(arg => (typeof arg === "object" ? JSON.stringify(arg, null, 2) : String(arg))).join(" "));
|
| 2155 |
+
originalConsoleLog(...args);
|
| 2156 |
+
};
|
| 2157 |
+
|
| 2158 |
+
const vm = new NodeVM({ require: { external: ["playwright"], builtin: [] } });
|
| 2159 |
+
const wrappedCode = `(async () => { ${code} })();`;
|
| 2160 |
+
const result = await vm.run(wrappedCode, import.meta.url);
|
| 2161 |
+
if (result !== undefined) logs.push(String(result));
|
| 2162 |
|
| 2163 |
+
console.log = originalConsoleLog;
|
| 2164 |
+
res.json({ output: logs.length ? logs.join("\n") : "No output captured" });
|
| 2165 |
} catch (error) {
|
| 2166 |
+
console.log = originalConsoleLog;
|
| 2167 |
res.status(500).json({ output: error.message });
|
| 2168 |
}
|
| 2169 |
});
|