Versions & changes
Every release of the @nest-extended scope, what it changed, and which docs go with it. All six packages are published together, so one version number covers the whole ecosystem.
v1.5.0
Service lifecycle events · released 18 Sept 2026
$npm i -g @nest-extended/cli@1.5.0
What v1.5.0 publishes
| Package | Version | npm |
|---|---|---|
| @nest-extended/core | 1.5.0 | |
| @nest-extended/decorators | 1.5.0 | |
| @nest-extended/mongoose | 1.5.0 | |
| @nest-extended/prisma | 1.5.0 | |
| @nest-extended/typeorm | 1.5.0 | |
| @nest-extended/cli | 1.5.0 |
Docs by version
Release history
v1.5.0
18 September 2026
Service lifecycle events
Every service gains a companion events class, so the work that surrounds a CRUD operation — profiles to create, mail to send, audit rows to write — lives next to the service instead of in the controller, and runs for every caller. Alongside it: controller-level @UseBefore / @UseAfter hooks, a codemod to switch existing controllers over, NestJS 12, and a Prisma 7 pin.
Service events
A {name}.events.ts class with beforeCreate / onCreate style hooks, wired at boot by NestExtendedModule.forRoot().
Two method families
_find / _get / _create / _patch / _remove stay event-free for service-to-service calls; find / get / create / patch / remove dispatch events.
One codemod to adopt it
nest-cli m events rewrites existing controllers from the underscore methods to the event-firing ones, with a dry run first.
- Service events:
NestServiceEvents,@ServiceEvents(TheService),ServiceEventsRegistry,NestServiceHooksandEventContextin@nest-extended/core. - Ten lifecycle hooks —
beforeFind/onFind,beforeGet/onGet,beforeCreate/onCreate,beforePatch/onPatch,beforeRemove/onRemove— plusonError.before*runs inline and its return value replaces the input;on*runs detached, after the response. - Event-firing
find/get/create/patch/removeon everyNestService, alongside the existing underscore methods. NestServiceBase<D, E>— the shared dispatcher every ORM adapter now extends, so the event logic exists once rather than three times.service.emit(name, payload)for custom events, type-checked against the events class, andservice.whenSettled()to await detached hooks in tests.- Optional global broadcasting through
@nestjs/event-emitter:super(model, { broadcast: "company" })emitscompany.create,company.patch,company.remove. @UseBefore()/@UseAfter()controller decorators in@nest-extended/decorators, run by the newUseHooksInterceptorthatforRoot()registers globally.nest-cli migration events(m events) — a codemod that switches controllers from_find/_get/… to the event-firing methods, with--dry-run,-yand--path.nest-cli g serviceflags--events/--skip-eventsand--broadcast/--skip-broadcast; the generator emits{name}.events.tsand registers it in the module providers.eventsoption onNestExtendedModule.forRoot(), andevents/broadcaston theNestServiceconstructor options.- A published security policy (
SECURITY.md) with supported-version and disclosure details.
- Generated controllers call the event-firing
find/get/create/patch/removeinstead of the underscore versions. Same arguments, same responses. - Scaffolded apps are emitted as CommonJS, with template relative imports updated to match.
- NestJS 12 and TypeScript 6 across the workspace; CI now builds on Node 24.
- Prisma is pinned to v7 —
@prisma/client@^7, the driver adapters at^7, and devprisma@^7. Prisma 8 ("Prisma Next") dropsprisma generate/db pushand moves the ORM commands underprisma orm, which the generated code does not target. @nest-extended/corenow depends on@nest-extended/decorators, because the interceptor reads the decorators’ metadata keys.ServiceOptions<T>gained optional event-firing members, andNestServiceOptionsgainedeventsandbroadcast.
- The unused
webpack-clidependency.
Requires
v1.0.0
3 July 2026
First stable release
The first production release of the whole scope: a generic CRUD controller and service, one query language across three ORMs, soft delete and auditing, JWT auth scaffolding, and a CLI that generates all of it. Graduated from the 0.0.x beta line, MIT-licensed, with an end-to-end suite that boots a generated app and exercises its HTTP API.
Three ORMs, one API
Mongoose, Prisma and TypeORM adapters sharing FeathersJS-style operators and the same NestService surface.
Scaffolding CLI
nest-cli g app, g service and g auth generate wired modules, DTOs, schemas and specs.
Soft delete & auditing
Non-destructive deletes with createdBy / updatedBy / deletedBy tracked from the request user.
NestController<T>andNestService— find, get, create, patch and remove with pagination, for Mongoose, Prisma and TypeORM.- A unified query language:
$limit,$skip,$sort,$select,$in,$gte,$or,$iLikeand friends, behaving identically on all three adapters. - The
@nest-extended/typeormadapter, completing PostgreSQL / MySQL / SQLite / MongoDB coverage. - Soft delete and audit fields, configurable through
NestExtendedModule.forRoot({ softDelete }). @User(),@Public(),@ModifyBody()andsetCreatedBy()in@nest-extended/decorators.- Database-aware exception filters (e.g. Prisma
P2002→409) and aNullResponseInterceptorthat turns anullGET into a404. nest-cli g app/g service/g auth, plusm runfor import-rewrite codemods, and non-interactive flags for every prompt.- An end-to-end suite that generates an app, boots it, and exercises the HTTP API.
- MIT license distributed to every workspace package.
- Controller id parameters are mandatory.
- Prisma 7 compatibility for the generated boilerplate:
prisma-clientgenerator, driver adapters, and the../generated/prisma/clientimport path. - Decorators moved out of
@nest-extended/coreinto@nest-extended/decorators(nest-cli m runrewrites the imports).
Requires
Looking for the pre-1.0 betas?
The 0.0.x beta tags are still on GitHub, but they predate the stable API and have no documentation here. Start from v1.0.0 and follow the migration guide to reach v1.5.0.