@tirs/log-format
v0.2.11
Published
Tirs shared log wire format: the network/console transforms and redaction rules used by the Chrome extension, the Care SDK, and validated against the session viewer.
Readme
@tirs/log-format
Types, transforms, redaction and validators for the Tirs session log format — the network and console log files attached to a Tirs recording session.
Most integrations never need this package directly: the Tirs SDK produces these files for you. It exists for advanced cases — generating Tirs-compatible logs from your own capture pipeline, post-processing captured logs, or validating files before shipping them.
What it does
- Transforms raw captured activity into the session log files:
transformNetworkLog(entries, tabs, startTime, options?)andtransformConsoleLog(entries, startTime, options?), including request classification (CSS / JS / Img / Fetch-XHR / …) and per-entry time offsets aligned to a recording's start. - Redacts sensitive values in place:
redactNetworkLog(log),redactConsoleLog(log),redactText(text)— JWTs, bearer tokens, API keys, passwords, emails, credit cards (with checksum validation), IBANs, phone numbers, IPs, connection strings, private keys. - Validates structure:
validateNetworkLog(x)/validateConsoleLog(x)return{ valid, errors };assertValidNetworkLog(x)throws with the error list. - Ships full TypeScript types for every shape (
NetworkLogFile,ConsoleLogFile,RawNetworkActivity,RawConsoleEntry,TabMeta, …).
How to use
npm i @tirs/log-formatimport {
transformNetworkLog,
redactNetworkLog,
validateNetworkLog,
} from '@tirs/log-format';
const startTime = Date.now() - 60_000;
const log = transformNetworkLog(capturedEntries, [{ id: 1, url: location.href }], startTime);
redactNetworkLog(log);
const { valid, errors } = validateNetworkLog(log);
if (!valid) console.warn(errors);Optional configuration
Both transforms take an optional third/fourth argument:
| Option | Type | Default | What it does |
| --- | --- | --- | --- |
| pausedMsBefore | (tsMs: number) => number | () => 0 | Paused wall-clock milliseconds accumulated before a given timestamp. Subtracted from each entry's time offset so logs stay aligned with a video that omits paused spans. Supply it if your recordings can be paused. |
| creator | { name, version } | Tirs default | Stamped into the network log's creator field. Set it to identify your own capture pipeline. |
const options = {
creator: { name: 'My Capture Pipeline', version: '2.0.0' },
pausedMsBefore: (ts) => pauses
.filter(p => p.end && p.end <= ts)
.reduce((total, p) => total + (p.end - p.start), 0),
};
const network = transformNetworkLog(entries, tabs, startTime, options);
const console_ = transformConsoleLog(consoleEntries, startTime, options);Redaction and validation take no options — the rule set is fixed so that output stays consistent across every producer of this format.
Zero dependencies; runs in browsers, workers and Node.
MIT © Tirs
