@sugarcube/plugin-http
Version:
HTTP related plugins for sugarcube.
69 lines (56 loc) • 1.61 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _puppeteerExtra = _interopRequireDefault(require("puppeteer-extra"));
var _api = require("puppeteer/lib/api");
var _puppeteerExtraPluginStealth = _interopRequireDefault(require("puppeteer-extra-plugin-stealth"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
_puppeteerExtra.default.use((0, _puppeteerExtraPluginStealth.default)());
var _default = async () => {
const instance = await _puppeteerExtra.default.launch({
args: ["--no-sandbox", "--disabled-setuid-sandbox"]
});
const dispose = () => instance.close();
const browse = async f => {
const page = await instance.newPage();
await page.setViewport({
width: 1024,
height: 768
});
const goto = async url => {
try {
try {
// Not all websites will work with networkidle0. Try again with
// networkidle2 in case the URL times out. Otherwise give up.
await page.goto(url, {
waitUntil: "networkidle0"
});
} catch (ee) {
if (ee instanceof _api.TimeoutError) {
await page.goto(url, {
waitUntil: "networkidle2"
});
} else {
await page.close();
throw ee;
}
}
} catch (e) {
await page.close();
throw e;
}
};
await f({
goto,
page
});
await page.close();
};
return {
dispose,
browse
};
};
exports.default = _default;