# Change Log

## Unreleased

- Added `jso-symbolicate --event <reporter>` for local processing of captured
  Sentry, Bugsnag, Rollbar, Datadog, Honeybadger, Raygun, Airbrake, and
  AppSignal event JSON. The CLI reads event JSON from `--event-file` or stdin
  and writes demangled JSON to stdout without source-map upload.
- In event mode, `--json` emits `{ reporter, event, hits, mapEntries }` so
  support scripts can detect wrong-map cases with the same hit-count signal
  used by stack-trace mode.
- Added `jso-symbolicate/event` with `symbolicateEvent(...)` and TypeScript
  declarations for scripts that want the same dispatcher programmatically.

## 0.5.0 — 2026-05-19

- **Airbrake integration**: `jso-symbolicate/airbrake` exports `createAirbrakeFilter(lookup)` — pass to `airbrake.addFilter(...)`. Demangles `errors[].type`, `errors[].message`, every `backtrace[].function`, and the inline `code` source-context object. Always returns the notice (never null) so symbolication errors cannot drop a report.
- **AppSignal integration**: `jso-symbolicate/appsignal` exports `createAppSignalDecorator(lookup)` — pass to `appsignal.addDecorator(...)`. Demangles `action`, `namespace`, `error.name`, `error.message`, every backtrace string, and string tag values. Pushes data back via `setError`/`setAction`/`setTags` when the span exposes those setters.
- jso-symbolicate now covers Sentry, Bugsnag, Rollbar, Datadog, Honeybadger, Raygun, Airbrake, and AppSignal — eight reporters out of the box. 15 unit tests covering all of them.

## 0.4.0 — 2026-05-19

- **Honeybadger integration**: `jso-symbolicate/honeybadger` exports `createHoneybadgerBeforeNotify(lookup)` — pass to `Honeybadger.configure({ beforeNotify })`. Demangles message, name, class, and backtrace[] entries (both string and structured array shapes).
- **Raygun integration**: `jso-symbolicate/raygun` exports `createRaygunBeforeSend(lookup)` — pass to `rg4js("onBeforeSend", ...)`. Demangles error.Message / error.ClassName / error.StackString and every StackTrace[] frame. Handles both Raygun4JS and Raygun4Node payload shapes.
- Symbolicate now covers Sentry, Bugsnag, Rollbar, Datadog, Honeybadger, and Raygun. TypeScript declarations included.

## 0.3.0 — 2026-05-19

- **Rollbar integration**: `jso-symbolicate/rollbar` exports `createRollbarTransform(lookup)` — pass to `new Rollbar({ transform })` and every payload arrives demangled (trace, trace_chain[], message, telemetry breadcrumbs). Errors during transform are swallowed so a broken lookup never blocks crash reporting.
- **Datadog Browser SDK integration**: `jso-symbolicate/datadog` exports `createDatadogBeforeSend(lookup)` — wire into `datadogRum.init({ beforeSend })` or `datadogLogs.init({ beforeSend })`. Demangles `error.message`, `error.type`, `error.stack`, action names, and Log message bodies in-place.
- TypeScript declarations for both new subpath exports.

## 0.2.0 — 2026-05-19

- **Sentry integration**: `jso-symbolicate/sentry` exports `createSentryEventProcessor(lookup, options)` — drop into `Sentry.init({ beforeSend })` and every event arrives with demangled stack frames, messages, and breadcrumbs. Optional `preserveOriginal: true` attaches the un-demangled event as a Sentry extra.
- **Bugsnag integration**: `jso-symbolicate/bugsnag` exports `createBugsnagOnError(lookup)` — same pattern wired through Bugsnag's `onError` hook.
- TypeScript declarations for both new subpath exports.

## 0.1.0 — 2026-05-19

Initial release.

- Local symbolication of obfuscated JavaScript stack traces against a JSO identifier map.
- Accepts five map source shapes: full API report JSON, bare report, array form, object form, block text.
- `--annotate` mode keeps mangled names with `/* original */` comments.
- `--json` mode emits structured output suitable for CI.
- Programmatic API: `buildLookup`, `demangleStack`, `demangleStackWithStats`.
