UNPKG

page-with

Version:

A library for usage example-driven in-browser testing of your own libraries.

37 lines (36 loc) 1.52 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createRequestUtil = void 0; const uuid_1 = require("uuid"); const headers_polyfill_1 = require("headers-polyfill"); function createRequestUtil(page, server) { return (url, init, predicate) => { var _a; const requestId = (0, uuid_1.v4)(); const resolvedUrl = url.startsWith('/') ? new URL(url, (_a = server.connectionInfo) === null || _a === void 0 ? void 0 : _a.url).toString() : url; const fetchOptions = init || {}; const initialHeaders = fetchOptions.headers || {}; const requestHeaders = new headers_polyfill_1.Headers(initialHeaders); const identityHeaderName = 'accept-language'; requestHeaders.set(identityHeaderName, requestId); const resolvedInit = Object.assign({}, fetchOptions, { headers: (0, headers_polyfill_1.headersToObject)(requestHeaders), }); page.evaluate(([url, init]) => fetch(url, init), [ resolvedUrl, resolvedInit, ]); const defaultResponsePredicate = (res) => { const requestHeaders = res.request().headers(); return requestHeaders[identityHeaderName] === requestId; }; return page.waitForResponse((res) => { return predicate ? predicate(res, resolvedUrl) : defaultResponsePredicate(res); }); }; } exports.createRequestUtil = createRequestUtil;