export function formatNetworkFields()

in src/reporters/json.ts [188:230]


export function formatNetworkFields(network: NetworkInfo) {
  const { request, response, url, browser } = network;
  // Perform redaction on the headers before writing results
  if (request?.headers) {
    request.headers = redactKeys(request.headers);
  }
  if (response?.headers) {
    response.headers = redactKeys(response.headers);
  }

  const ecs = {
    // URL would be parsed and mapped by heartbeat
    url,
    user_agent: {
      name: browser.name,
      version: browser.version,
      original: request.headers?.['User-Agent'],
    },
    http: {
      request,
      response,
    },
    tls: formatTLS(response?.securityDetails),
  };

  const pickItems: Array<keyof NetworkInfo> = [
    'browser',
    'type',
    'isNavigationRequest',
    'requestSentTime',
    'responseReceivedTime',
    'loadEndTime',
    'transferSize',
    'resourceSize',
    'timings',
  ];
  const payload: Partial<NetworkInfo> = pickItems.reduce((acc, value) => {
    network[value] && (acc[value] = network[value]);
    return acc;
  }, {});

  return { ecs, payload };
}