import React from "react"; import { getMemory } from "../memory"; import { MergedStolenDataEntry, Sources } from "../stolen-data-entry"; import { hyphenate } from "../util"; const MAX_STRING_VALUE_LENGTH = 100; function StolenDataValueTable({ entry, prefixKey = "", }: { entry: MergedStolenDataEntry; prefixKey: string; }) { return ( {Object.keys(entry.getParsedValues(prefixKey)[0]).map((key) => { const subkey = `${prefixKey}.${key}`; return ( ); })}
{ entry.toggleMark(subkey); e.stopPropagation(); }} style={{ border: entry.hasMark(subkey) ? "2px solid red" : "2px solid transparent", }} > {hyphenate(key)}
); } function StolenDataValue({ entry, prefixKey = "", }: { entry: MergedStolenDataEntry; prefixKey?: string; }) { const value = entry.getParsedValues(prefixKey)[0]; let body = null; if (!value) { body = <>; } else if (typeof value === "string") { const content = entry.getParsedValues(prefixKey)[0] as string; body = (
{content.slice(0, MAX_STRING_VALUE_LENGTH)}{" "} {content.length > MAX_STRING_VALUE_LENGTH ? "(...)" : ""}
); } else { body = ; } return (
{ entry.toggleMark(prefixKey); e.stopPropagation(); }} data-marks={entry.getMarkedValues().join(", ")} > {body}
); } const icons: Record = { cookie: "🍪", pathname: "🛣", queryparams: "🅿", header: "H", }; export default function StolenDataCluster({ origin, shorthost, minValueLength, cookiesOnly, cookiesOrOriginOnly, }: { origin: string; shorthost: string; refreshToken: number; minValueLength: number; cookiesOnly: boolean; cookiesOrOriginOnly: boolean; }) { const cluster = getMemory().getClustersForOrigin(origin)[shorthost]; return (

{cluster.id}{" "} {cluster.hasCookies() ? "🍪" : ""} x{cluster.requests.length}{" "} getMemory().removeCookiesFor(origin, shorthost)} > Wyczyść cookiesy

{cluster.getFullHosts().map((host) => ( {host}, ))}
{cluster .getStolenData({ minValueLength, cookiesOnly, cookiesOrOriginOnly }) .map((entry) => ( ))}
entry.toggleMark("")} > {entry.getNames().map(hyphenate).join(", ")} {entry.getSources().map((source) => icons[source])}
); }