@browsercore/devtools
v0.2.0
Published
Developer tooling — packet inspector, TLS/HTTP2 visualizer, profile diff, certificate inspector, benchmark CLI.
Readme
@browsercore/devtools
Developer tooling for the browsercore stack: packet inspector, TLS/HTTP visualizers,
profile diff, certificate inspector, and the network-devtools CLI. Depends on the
library but is NOT required by it — every tool here consumes the public API of the
lower-level packages, and nothing here is imported by them.
Install
npm install @browsercore/devtoolsQuick usage
import {
createInspectorSession,
visualizeTlsHandshake,
diffProfiles,
inspectCertificate,
} from "@browsercore/devtools";
// Capture frames into a live session, then render a TLS handshake trace:
const session = createInspectorSession();
session.addFrame({ direction: "sent", protocol: "tls", bytes: clientHello, decoded: null });
console.log(visualizeTlsHandshake(session));
// Diff two browser profiles field-by-field:
const diff = diffProfiles("chrome-140" as never, "firefox-135" as never);
console.log(diff.differences);
// Parse a PEM/DER X.509 certificate:
const info = inspectCertificate(pemBytes);
console.log(info.subject, info.fingerprintSha256);Public API
| Export | Kind | Purpose |
| --- | --- | --- |
| createInspectorSession() | function | Start an empty inspection session |
| decodeTlsRecord() | function | Decode a TLS record from raw bytes |
| decodeHttp2Frame() | function | Decode an HTTP/2 frame header + payload |
| decodeHttp1Message() | function | Parse an HTTP/1.1 request/response |
| visualizeTlsHandshake() | function | Render a captured TLS handshake as an ASCII trace |
| visualizeHttp2Stream() | function | Render captured HTTP/2 frames as an ASCII trace |
| diffProfiles() | function | Compare two browser profiles field-by-field |
| inspectCertificate() | function | Parse a PEM/DER X.509 certificate into a summary |
| exportToJson() | function | Stable, human-readable JSON (2-space indent) |
| exportToHtml() | function | Render a value as a self-contained HTML document |
| assertNever() | function | Exhaustiveness check for switch over unions |
| createId() | function | Unique, branded-id generator |
| InspectionSession | interface | Live session: append frames, filter, visualize |
| PacketFrame | interface | A single captured frame (direction, protocol, bytes) |
| PacketDirection | union | "sent" \| "received" |
| PacketProtocol | union | "tls" \| "http2" \| "http1" \| "tcp" |
| DecodedTlsRecord | interface | Decoded TLS record (content type, version, fragments) |
| DecodedHttp2Frame | interface | Decoded HTTP/2 frame (type, flags, streamId, payload) |
| DecodedHttp1Message | interface | Parsed HTTP/1.1 request/response |
| CertInfo | interface | Parsed certificate summary (subject, issuer, SAN, fingerprint) |
| ProfileDiff / ProfileDiffEntry | interface | Result of diffing two profiles |
| InspectorSessionId | branded type | Branded session identifier |
| DevtoolsError | class | Base typed error (carries kind + cause) |
| CertParseError | class | Certificate could not be parsed |
| TlsDecodeError | class | TLS record could not be decoded |
| Http2DecodeError | class | HTTP/2 frame could not be decoded |
| ProfileDiffError | class | Profile diff could not be computed |
License
MIT
