23 Commits
Author SHA1 Message Date
Roman Khegay 0fb57c8b07 fix(core,express,fastify,ws,socket.io): load adapters with an older core (#18251) 2026-10-24 14:35:13 +02:00
Roman Khegay 135f999b6d fix(core): read the url protocol from the server (#18252) 2026-10-24 14:22:58 +02:00
Roman Khegay 79b57f962c fix(core): name the array and index of undefined module entries (#18254) 2026-10-24 14:22:50 +02:00
Roman Khegay ce57692f1f fix(microservices): report a nats connection that gave up reconnecting (#18255) 2026-10-24 14:22:34 +02:00
Roman Khegay 2b6bacb71a fix(microservices): do not emit a trailing null to kafka requesters (#18249) 2026-10-24 14:22:26 +02:00
Roman Khegay 62765431ec fix(fastify): leave 5xx fastify errors unmapped so they are logged (#18240) 2026-10-22 12:26:53 +02:00
Roman Khegay 6c6ba7c6a6 fix(common): abort the response when a streamable file fails midway (#18220) 2026-10-22 09:04:16 +02:00
Roman Khegay fe2faa0ab8 fix(fastify): listen on a file descriptor (#18226) 2026-10-22 08:36:19 +02:00
Roman Khegay 62647d3ec9 fix(core): read the abort on error option of the app being called (#18216) 2026-10-21 11:01:13 +02:00
Roman Khegay aa18d3930e fix(core): let exclusions cover routes excluded from the global prefix (#18209)
Middleware and CSRF exclusions now also cover the routes excluded from the global prefix that they match, which the router serves without the prefix. Such a route now skips the middleware or the CSRF check, as the same exclusion already does for routes under the prefix.
2026-10-21 10:34:56 +02:00
Roman Khegay 7726a675b3 perf(core): resolve route params without a promise when no pipe runs (#18147)
When none of a route's params has a pipe, the params are resolved and the controller is called synchronously, so it runs a few microtasks earlier than before (as routes without params already did).
2026-10-14 08:59:48 +02:00
Roman Khegay 06dac356f4 perf(core): avoid AsyncResource.bind() per request in interceptor chain (#18136) 2026-10-13 20:23:14 +02:00
Roman KhegayandKamil Myśliwiec 77613d6a39 fix(core,microservices): flush buffered logs when initialization fails (#18111)
* fix(core,microservices): flush buffered logs when initialization fails

* fix(microservices): read autoflushlogs from the top-level options

For a useFactory config the microservice read autoFlushLogs from the factory's output, so a top-level autoFlushLogs: false was ignored. All flush sites now share flushLogsIfAutoFlushEnabled(), which reads the options passed to NestFactory.

---------

Co-authored-by: Kamil Myśliwiec <mail@kamilmysliwiec.com>
2026-10-12 12:03:12 +02:00
Roman KhegayandKamil Myśliwiec 2962bc224a fix(core): fail at startup for request-scoped class global enhancers (#18104)
* fix(core): fail at startup for request-scoped class global enhancers

* test(core): rename the request-scoped global enhancer describes

---------

Co-authored-by: Kamil Myśliwiec <mail@kamilmysliwiec.com>
2026-10-12 11:29:32 +02:00
Roman Khegay 7036f3dc08 test(microservices): cover a mid-pattern rmq '#' with a real broker (#18105) 2026-10-12 11:09:12 +02:00
Roman Khegay 4fa1e4e1f9 fix(fastify): honor return503OnClosing during the shutdown hooks (#18101) 2026-10-12 10:58:06 +02:00
Roman Khegay 6f7048d305 fix(microservices): default server options like the client factory does (#18100) 2026-10-12 10:58:01 +02:00
Roman KhegayandKamil Myśliwiec eef86fc0d9 fix(microservices): match rmq '#' wildcards in any position (#18083)
* fix(microservices): match rmq '#' wildcards in any position

* test(microservices): pin empty segment matching in rmq patterns

* fix(microservices): match empty rmq routing keys and stop on a mismatch

The broker splits an empty routing key into no words, so "#.#" matches it
as "#" does. The matcher also stops as soon as no prefix of the key can
match the pattern read so far.

---------

Co-authored-by: Kamil Myśliwiec <mail@kamilmysliwiec.com>
2026-10-12 10:28:16 +02:00
Roman Khegay 529152191e fix(common,core,express): answer method miss on an excluded route (#17923) 2026-10-08 11:08:18 +02:00
Roman Khegay 5100837bc3 fix(core): recommend {*path} in the legacy wildcard warning (#17859) 2026-09-23 19:45:58 +02:00
Roman Khegay 8ff59f3053 fix(express): map multer array index and invalid field name codes to 400 (#17857) 2026-09-23 14:43:28 +02:00
Roman Khegay 233a88e25a fix(fastify): register static assets and view engine before listen (#17854) 2026-09-23 13:27:48 +02:00
Roman Khegay fb8e0d6529 fix(core): name the module when metadata entries are invalid (#17819)
* fix(core): name the module when metadata entries are invalid

A custom provider without a usable useClass, useValue, useFactory or
useExisting, and an undefined entry in controllers or exports, crashed
bootstrap with a bare TypeError naming neither the module nor the token.

Throw a descriptive error instead, as undefined imports and providers
already do.

* test(core): cover the injectable path and the invalid provider message

Pin the paths the previous commit changed: a custom injectable without a
valid "use*" property, the message text for string, symbol and class
tokens, and null as well as undefined in the two container specs.
2026-09-22 15:19:57 +02:00