* start refactoring network * separate network module, refactor spot network capture Signed-off-by: nick-delirium <nikita@openreplay.com> * some console refactoring, display network results in ui * detect gql error param * fix proxy ignore file, fix network tracking, fix tab tracking * some code quality improvements... * handle graphql in network lib (.2 ver), update tracker to use last version of lib * remove debug logs, change request type to gql (if its gql!) in lib, display gql in ui --------- Signed-off-by: nick-delirium <nikita@openreplay.com>
169 lines
4.8 KiB
TypeScript
169 lines
4.8 KiB
TypeScript
// import {
|
|
// SpotNetworkRequest,
|
|
// filterBody,
|
|
// filterHeaders,
|
|
// tryFilterUrl,
|
|
// TrackedRequest,
|
|
// } from "./networkTrackingUtils";
|
|
//
|
|
// export const rawRequests: (TrackedRequest & {
|
|
// startTs: number;
|
|
// duration: number;
|
|
// })[] = [];
|
|
//
|
|
// export function createSpotNetworkRequestV1(
|
|
// trackedRequest: TrackedRequest,
|
|
// trackedTab?: number,
|
|
// ) {
|
|
// if (trackedRequest.tabId === -1) {
|
|
// return;
|
|
// }
|
|
// if (trackedTab && trackedTab !== trackedRequest.tabId) {
|
|
// return;
|
|
// }
|
|
// if (
|
|
// ["ping", "beacon", "image", "script", "font"].includes(trackedRequest.type)
|
|
// ) {
|
|
// if (!trackedRequest.statusCode || trackedRequest.statusCode < 400) {
|
|
// return;
|
|
// }
|
|
// }
|
|
// const type = ["stylesheet", "script", "image", "media", "font"].includes(
|
|
// trackedRequest.type,
|
|
// )
|
|
// ? "resource"
|
|
// : trackedRequest.type;
|
|
//
|
|
// const requestHeaders = trackedRequest.requestHeaders
|
|
// ? filterHeaders(trackedRequest.requestHeaders)
|
|
// : {};
|
|
// const responseHeaders = trackedRequest.responseHeaders
|
|
// ? filterHeaders(trackedRequest.responseHeaders)
|
|
// : {};
|
|
//
|
|
// const reqSize = trackedRequest.reqBody
|
|
// ? trackedRequest.requestSize || trackedRequest.reqBody.length
|
|
// : 0;
|
|
//
|
|
// const status = getRequestStatus(trackedRequest);
|
|
// let body;
|
|
// if (trackedRequest.reqBody) {
|
|
// try {
|
|
// body = filterBody(trackedRequest.reqBody);
|
|
// } catch (e) {
|
|
// body = "Error parsing body";
|
|
// console.error(e);
|
|
// }
|
|
// } else {
|
|
// body = "";
|
|
// }
|
|
// const request: SpotNetworkRequest = {
|
|
// method: trackedRequest.method,
|
|
// type,
|
|
// body,
|
|
// responseBody: "",
|
|
// requestHeaders,
|
|
// responseHeaders,
|
|
// time: trackedRequest.timeStamp,
|
|
// statusCode: status,
|
|
// error: trackedRequest.error,
|
|
// url: tryFilterUrl(trackedRequest.url),
|
|
// fromCache: trackedRequest.fromCache || false,
|
|
// encodedBodySize: reqSize,
|
|
// responseBodySize: trackedRequest.responseSize,
|
|
// duration: trackedRequest.duration,
|
|
// };
|
|
//
|
|
// return request;
|
|
// }
|
|
//
|
|
// function modifyOnSpot(request: TrackedRequest) {
|
|
// const id = request.requestId;
|
|
// const index = rawRequests.findIndex((r) => r.requestId === id);
|
|
// const ts = Date.now();
|
|
// const start = rawRequests[index]?.startTs ?? ts;
|
|
// rawRequests[index] = {
|
|
// ...rawRequests[index],
|
|
// ...request,
|
|
// duration: ts - start,
|
|
// };
|
|
// }
|
|
//
|
|
// const trackOnBefore = (
|
|
// details: WebRequest.OnBeforeRequestDetailsType & { reqBody: string },
|
|
// ) => {
|
|
// if (details.method === "POST" && details.requestBody) {
|
|
// const requestBody = details.requestBody;
|
|
// if (requestBody.formData) {
|
|
// details.reqBody = JSON.stringify(requestBody.formData);
|
|
// } else if (requestBody.raw) {
|
|
// const raw = requestBody.raw[0]?.bytes;
|
|
// if (raw) {
|
|
// details.reqBody = new TextDecoder("utf-8").decode(raw);
|
|
// }
|
|
// }
|
|
// }
|
|
// rawRequests.push({ ...details, startTs: Date.now(), duration: 0 });
|
|
// };
|
|
// const trackOnCompleted = (details: WebRequest.OnCompletedDetailsType) => {
|
|
// modifyOnSpot(details);
|
|
// };
|
|
// const trackOnHeaders = (details: WebRequest.OnBeforeSendHeadersDetailsType) => {
|
|
// modifyOnSpot(details);
|
|
// };
|
|
// const trackOnError = (details: WebRequest.OnErrorOccurredDetailsType) => {
|
|
// modifyOnSpot(details);
|
|
// };
|
|
// export function startTrackingNetwork() {
|
|
// rawRequests.length = 0;
|
|
// browser.webRequest.onBeforeRequest.addListener(
|
|
// // @ts-ignore
|
|
// trackOnBefore,
|
|
// { urls: ["<all_urls>"] },
|
|
// ["requestBody"],
|
|
// );
|
|
// browser.webRequest.onBeforeSendHeaders.addListener(
|
|
// trackOnHeaders,
|
|
// { urls: ["<all_urls>"] },
|
|
// ["requestHeaders"],
|
|
// );
|
|
// browser.webRequest.onCompleted.addListener(
|
|
// trackOnCompleted,
|
|
// {
|
|
// urls: ["<all_urls>"],
|
|
// },
|
|
// ["responseHeaders"],
|
|
// );
|
|
// browser.webRequest.onErrorOccurred.addListener(
|
|
// trackOnError,
|
|
// {
|
|
// urls: ["<all_urls>"],
|
|
// },
|
|
// ["extraHeaders"],
|
|
// );
|
|
// }
|
|
//
|
|
// export function stopTrackingNetwork() {
|
|
// browser.webRequest.onBeforeRequest.removeListener(trackOnBefore);
|
|
// browser.webRequest.onCompleted.removeListener(trackOnCompleted);
|
|
// browser.webRequest.onErrorOccurred.removeListener(trackOnError);
|
|
// }
|
|
//
|
|
// function getRequestStatus(request: any): number {
|
|
// if (request.statusCode) {
|
|
// return request.statusCode;
|
|
// }
|
|
// if (request.error) {
|
|
// return 0;
|
|
// }
|
|
// return 200;
|
|
// }
|
|
//
|
|
// export function getFinalRequests(tabId: number): SpotNetworkRequest[] {
|
|
// const finalRequests = rawRequests
|
|
// .map((r) => createSpotNetworkRequest(r, tabId))
|
|
// .filter((r) => r !== undefined);
|
|
// rawRequests.length = 0;
|
|
//
|
|
// return finalRequests;
|
|
// }
|