puppeteer-core
Version:
A high-level API to control headless Chrome over the DevTools Protocol
77 lines • 2.68 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.rewriteNavigationError = exports.getBiDiLifecycleEvent = exports.lifeCycleToSubscribedEvent = exports.getBiDiReadinessState = exports.lifeCycleToReadinessState = exports.getBiDiLifeCycles = void 0;
const rxjs_js_1 = require("../../third_party/rxjs/rxjs.js");
const Errors_js_1 = require("../common/Errors.js");
/**
* @internal
*/
function getBiDiLifeCycles(event) {
if (Array.isArray(event)) {
const pageLifeCycle = event.some(lifeCycle => {
return lifeCycle !== 'domcontentloaded';
})
? 'load'
: 'domcontentloaded';
const networkLifeCycle = event.reduce((acc, lifeCycle) => {
if (lifeCycle === 'networkidle0') {
return lifeCycle;
}
else if (acc !== 'networkidle0' && lifeCycle === 'networkidle2') {
return lifeCycle;
}
return acc;
}, null);
return [pageLifeCycle, networkLifeCycle];
}
if (event === 'networkidle0' || event === 'networkidle2') {
return ['load', event];
}
return [event, null];
}
exports.getBiDiLifeCycles = getBiDiLifeCycles;
/**
* @internal
*/
exports.lifeCycleToReadinessState = new Map([
['load', "complete" /* Bidi.BrowsingContext.ReadinessState.Complete */],
['domcontentloaded', "interactive" /* Bidi.BrowsingContext.ReadinessState.Interactive */],
]);
function getBiDiReadinessState(event) {
const lifeCycles = getBiDiLifeCycles(event);
const readiness = exports.lifeCycleToReadinessState.get(lifeCycles[0]);
return [readiness, lifeCycles[1]];
}
exports.getBiDiReadinessState = getBiDiReadinessState;
/**
* @internal
*/
exports.lifeCycleToSubscribedEvent = new Map([
['load', 'browsingContext.load'],
['domcontentloaded', 'browsingContext.domContentLoaded'],
]);
/**
* @internal
*/
function getBiDiLifecycleEvent(event) {
const lifeCycles = getBiDiLifeCycles(event);
const bidiEvent = exports.lifeCycleToSubscribedEvent.get(lifeCycles[0]);
return [bidiEvent, lifeCycles[1]];
}
exports.getBiDiLifecycleEvent = getBiDiLifecycleEvent;
/**
* @internal
*/
function rewriteNavigationError(message, ms) {
return (0, rxjs_js_1.catchError)(error => {
if (error instanceof Errors_js_1.ProtocolError) {
error.message += ` at ${message}`;
}
else if (error instanceof Errors_js_1.TimeoutError) {
error.message = `Navigation timeout of ${ms} ms exceeded`;
}
throw error;
});
}
exports.rewriteNavigationError = rewriteNavigationError;
//# sourceMappingURL=lifecycle.js.map