38 lines
1.1 KiB
JavaScript
38 lines
1.1 KiB
JavaScript
const Module = require('module');
|
|
const originalRequire = Module.prototype.require;
|
|
Module.prototype.require = function(request) {
|
|
if (request === 'vscode') return { window: {}, workspace: {}, Uri: {}, EventEmitter: class {} };
|
|
return originalRequire.apply(this, arguments);
|
|
};
|
|
const ext = require('./out/extension');
|
|
|
|
// Try calling _getHtml
|
|
let html;
|
|
try {
|
|
html = ext.ConnectAIPanel.prototype._getHtml.call({_getHtml: ext.ConnectAIPanel.prototype._getHtml});
|
|
} catch(e) {
|
|
console.log("Could not call _getHtml directly:", e.message);
|
|
// Alternative: match from the original code and eval it
|
|
const fs = require('fs');
|
|
const code = fs.readFileSync('out/extension.js', 'utf8');
|
|
const match = code.match(/_getHtml.*?_getHtml\(\)\s*\{\s*return\s+(`(?:[^`]|\\`)*`);?/m);
|
|
if (match) {
|
|
html = eval(match[1]);
|
|
}
|
|
}
|
|
|
|
if (!html) {
|
|
console.log("Failed to get html");
|
|
process.exit(1);
|
|
}
|
|
|
|
const fs = require('fs');
|
|
fs.writeFileSync('test_eval2.html', html);
|
|
const {JSDOM} = require('jsdom');
|
|
try {
|
|
new JSDOM(html, {runScripts:'dangerously'});
|
|
console.log("JSDOM OK");
|
|
} catch(e) {
|
|
console.log("JSDOM FATAL ERROR:", e.message);
|
|
}
|