> For the complete documentation index, see [llms.txt](https://docs.soapjs.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.soapjs.com/release-notes.md).

# Release Notes

## Release Notes

Versioning is per package. Most recent first.

### @soapjs/soap

#### 0.10.0

* **feat(data):** `Source.native<T>(query)` — a sanctioned escape hatch that runs a native, client-specific query (a MongoDB pipeline, a SQL string, …) produced by a `RepositoryQuery`'s `build()`, bypassing the query factory and mapper.
* **breaking:** `native()` is a required method on the `Source` interface — adapters (`soap-node-*`) must implement it. Hence the minor bump.

### @soapjs/soap-node-mongo

#### 0.7.0

* **feat(source):** implement `MongoSource.native()` — dispatches by payload shape (array → aggregation pipeline; `{ kind: 'find' | 'aggregate' | 'command' }`).
* **chore:** bump `@soapjs/soap` peer dependency to `^0.10.0`.

### @soapjs/soap-express

#### 0.4.0

* **feat(routing):** unified route execution — both endpoint styles (decorators and the fluent `Router`) now share one dispatch path with identical semantics. A **failed `Result` always goes through `ResultMapper`** (consistent status mapping, e.g. `ValidationError` → 400) even when a `RouteIO` is set; a successful `Result` with a `RouteIO` is shaped by `routeIO.to`; everything else falls back to `ResultMapper` / `res.json`.
* **fix(route-io):** `PaginationIO` / `FileUploadIO` / `SimpleIO` delegate failures to `ResultMapper` instead of emitting a hardcoded 400/500.
* **fix(di):** use cases referenced by a route are resolved by `.Token ?? class name` (previously class name only).
* **refactor:** removed the duplicated per-request execution logic shared by the decorator and fluent-router paths.

#### 0.3.2

* **docs:** added a CQRS & Events section, documented `registerAuth(provider)`, and refreshed the README to the current `bootstrap()`-based API.

#### 0.3.1

* **fix(events):** `@EventHandler`'s default DI token now includes the handler class name (`EventHandler:<event>:<handler>`), so multiple handlers can fan out on the same event instead of silently overwriting each other.
* **feat(app):** `SoapExpressApp.registerAuth(provider)` registers all HTTP strategies from a soap-auth-compatible provider, with no hard dependency on soap-auth.

### @soapjs/soap-auth

#### 0.4.0

* Strategies: JWT, Local, API key, Basic, OAuth2 (+ hybrid), managed by the `SoapAuth` class; integrates with soap-express via `app.registerAuth(soapAuth)`.
