UNPKG

playwright-fluent

Version:
90 lines (89 loc) 2.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.stringifyRequest = exports.toRequestInfo = exports.toQueryString = void 0; const tslib_1 = require("tslib"); const url_1 = require("url"); const querystring = (0, tslib_1.__importStar)(require("querystring")); // eslint-disable-next-line @typescript-eslint/no-var-requires const escapeHtml = require('escape-html'); function encodeHtml(content) { if (typeof content !== 'string') { return content; } const result = escapeHtml(content); return result; } function toJsonOrDefault(data) { try { if (!data) { return data; } return JSON.parse(data); } catch (error) { return data; } } async function toJsonOrText(response) { try { const payload = await response.json(); return payload; } catch (error) { const payload = await response.text(); return encodeHtml(payload); } } function toQueryString(url) { try { const nodeUrl = new url_1.URL(url); const rawSearch = nodeUrl.search; let rawQueryString = rawSearch; if (rawSearch && rawSearch.startsWith('?')) { rawQueryString = rawSearch.replace('?', ''); } const query = querystring.parse(rawQueryString); return query; } catch (error) { return {}; } } exports.toQueryString = toQueryString; async function toRequestInfo(request) { const requestInfo = { url: request.url(), queryString: toQueryString(request.url()), method: request.method(), error: request.failure(), headers: request.headers(), postData: toJsonOrDefault(request.postData()), response: null, }; const response = await request.response(); if (response === null) { return requestInfo; } let responseBody = undefined; try { responseBody = await toJsonOrText(response); } catch (error) { // ignore error } const responseInfo = { headers: response.headers(), payload: responseBody, status: response.status(), statusText: response.statusText(), }; requestInfo.response = responseInfo; return requestInfo; } exports.toRequestInfo = toRequestInfo; async function stringifyRequest(request) { const requestInfo = await toRequestInfo(request); const result = JSON.stringify(requestInfo, null, 2); return result; } exports.stringifyRequest = stringifyRequest;