acceptedEncodings

tcmts.cli.web.acceptedEncodings · #dsbcwnue · term · runs anywhere

The encodings a request accepts, as Accept-Encoding says (q=0 refuses one).

import type http from "node:http";

export function acceptedEncodings(req: http.IncomingMessage): Set<string> {
  const out = new Set<string>();
  for (const part of String(req.headers["accept-encoding"] ?? "").split(",")) {
    const [name, ...params] = part.trim().toLowerCase().split(";");
    const q = params.map((p) => /^\s*q=([\d.]+)/.exec(p)?.[1]).find(Boolean);
    if (name && (q === undefined || Number(q) > 0)) out.add(name);
  }
  return out;
}

used by