mirror of
https://github.com/pysunday/sdenv.git
synced 2025-04-08 17:47:08 +08:00
47 lines
1.1 KiB
JavaScript
47 lines
1.1 KiB
JavaScript
const jsdom = require('sdenv-jsdom');
|
|
const logger = require('./logger');
|
|
const { JSDOM, CookieJar } = jsdom;
|
|
|
|
exports.jsdomFromUrl = (config, cookieJar) => {
|
|
const resourceLoader = new jsdom.ResourceLoader({
|
|
strictSSL: false,
|
|
...config,
|
|
});
|
|
const virtualConsole = new jsdom.VirtualConsole();
|
|
virtualConsole.sendTo({
|
|
log: logger.log.bind(logger),
|
|
warn: logger.warn.bind(logger),
|
|
error: logger.error.bind(logger),
|
|
});
|
|
if (!cookieJar) cookieJar = new CookieJar();
|
|
const options = {
|
|
pretendToBeVisual: true,
|
|
runScripts: "dangerously",
|
|
resources: resourceLoader,
|
|
cookieJar,
|
|
virtualConsole,
|
|
}
|
|
return [(url) => {
|
|
return JSDOM.fromURL(url, options);
|
|
}, cookieJar];
|
|
};
|
|
|
|
exports.jsdomFromText = (config) => {
|
|
const virtualConsole = new jsdom.VirtualConsole();
|
|
virtualConsole.sendTo({
|
|
log: logger.log.bind(logger),
|
|
warn: logger.warn.bind(logger),
|
|
error: logger.error.bind(logger),
|
|
});
|
|
const cookieJar = new CookieJar()
|
|
const options = {
|
|
pretendToBeVisual: true,
|
|
cookieJar,
|
|
virtualConsole,
|
|
...config,
|
|
}
|
|
return [(text) => {
|
|
return new JSDOM(text, options);
|
|
}, cookieJar];
|
|
}
|