serinus 2.1.1
serinus: ^2.1.1 copied to clipboard
Serinus is a framework written in Dart for building efficient and scalable server-side applications.
Changelog #
2.1.1 #
Released on: 15-02-2026
Refactor #
- Refactor how Serinus handlers module generation to use topological sorting of the modules to ensure that the modules are generated in the correct order. This improves the performance of the application startup and reduces the memory usage during the module generation process.
2.1.0 #
Released on: 12-02-2026
Features #
- Add
ClassProviderto allow inheritance in providers. Now it is possible to pass a class as a provider and have it injected as its subclass. This allows for better abstraction and separation of concerns in the application architecture. - Add
etagto requests to allow for better caching strategies and reduce bandwidth usage. - Replace
SpannerwithAtlasas the default router for Serinus applications. Atlas provides better performance and more features compared to Spanner allowing for something more robust and flexible routing system. - Allow disabling versioning on specific routes or controllers. This provides more flexibility in managing API versions and allows for better control over the versioning strategy.
- Add
filemethod toFormDatato simplify file part extraction from multipart/form-data requests. - Add utility methods to
intto simplify body size limit configuration.
Fixes #
- Fix WebSocket upgrade handling to prevent wrongful exceptions during connection upgrades.
ResponseContext#bodynow does not close the response when set, allowing for proper response handling in hooks and middlewares.
Changes #
bodyAsandbodyAsListmethods now uses a conservative approach to parsing the body, if the body is already of the requested type it is returned as is, otherwise it is parsed. This improves performance and reduces unnecessary parsing operations.- Improve general performances of the handling system reducing memory allocations and CPU usage.
- Deprecated
BodySizeLimitHookin favor ofbodySizeLimitoption increateApplicationmethod. This simplifies the configuration of body size limits and provides a more consistent approach to application configuration.
2.0.4 #
- feat: add
SerinusHeaders#asFullMap()to get all the headers including the original request headers as an unmodifiable map. - chore: update dependencies.
2.0.3 #
- fix: add
ResponseContext#bodyto early close the response on hooks, exceptions, and middlewares.
2.0.2 #
- fix(#203): when default maxRequests is used in RateLimiterHook the app doesn't start up properly. #204 by francescovallone
2.0.1 #
- ci: add pana to serinus workflow
- fix: gentle close the web socket connections when application shuts down
- feat: add
bodyAsList<T>()to parse lists of elements
2.0.0 #
- feat: add ComposedModule to allow for better composition of modules.
- fix: WebSocketGateway now correctly converts data before sending it.
- fix: correct handling of request body from previous erroneous implementation in 2.0.0-rc.5.
- fix: correct assignment of WsAdapter to the WebSocketGateway to prevent wrongful exceptions on sending data.
- ref!: remove ParseSchema completely from Serinus.
- feat: add onPart callback to the FormData parsing to allow for custom handling of each part of the multipart/form-data.
- feat: add simple hooks implementation to simplify the implementation of hooks in routes and controllers.
- feat: add shouldValidateMultipart to the RouteHandler to allow for manual validation of multipart/form-data requests.
- feat: improve body parsing to allow for more flexibility in the implementation of custom body types.
- feat: add utility methods to the RequestContext to simplify the extraction of typed parameters from the request.
- fix: fix check on WebSocketGateway to prevent wrongful exceptions on sending data.
- fix: reinstantiate module providers on deferred provider add to it
- fix: global prefix and versioning are now applied correctly to all routes
- feat!: change
Provider.deferredtoProvider.composedto better reflect its purpose. - ref!: Controller path is now a required parameter.
- ref!: View Engine now has just a single method for rendering templates.
- ref!: View and ViewString are now one single class with two factory constructors.
- ref!: Middlewares are now registered using a fluent API.
- ref!: The
Module#registerAsyncmethod now must return a DynamicModule - ref!: Each body type is now a separate class
- ref!: Request and Response Hooks are now divided.
- ref!: Some Hooks have now different method signatures.
- ref!: Renamed ResponseProperties to ResponseContext
- ref!: The Logger has been refactored to allow for more flexibility in the implementation.
- ref!: SerinusExceptions message is now a required parameter.
- ref!: Global definitions are now module-scoped.
1.0.6 #
1.0.5 #
- fix: reinstantiate module providers on deferred provider add to it
1.0.4 #
- fix(#172): fix the issue with the
UploadFilemethod to correctly handle the file upload in the request body. #173
1.0.3 #
- chore: format the codebase with the latest version of dartfmt
1.0.2 #
- chore: update dependencies to the latest version
1.0.1 #
- chore: update dependencies to the latest version
1.0.0 #
This first stable release is packed with game-changing features designed to elevate your development experience:
- ModelProvider for seamless serialization and deserialization of JSON and form-data
- Typed Bodies to ensure type-safety when dealing with the request body.
- Client Generation for easy API integration
- Static Routes for optimized performance
- Lifecycle hooks to enhance control
- Improved dependency injection for cleaner architecture
1.0.0-rc.4 #
- feat(#104): add form data support to the models system.
1.0.0-rc.3 #
- feat: add a sealed class families to define a JsonBody object.
- feat: decouple the adapters allowing for more flexibility in the implementation of the adapters.
1.0.0-rc.2 #
- fix: change dependency constraints to ensure compatibility with the latest version of the packages
1.0.0-rc.1 #
- feat: first release candidate of Serinus 1.0.0
0.6.2 #
- chore: update spanner to 1.0.3
0.6.1 #
- fix: fix exported providers
0.6.0 #
0.6.0-dev.5 #
- feat(#57): abstract ParseSchema to allow for more flexibility in the implementation of the schema parsers.
0.6.0-dev.4 #
- refactor(#39): add parent providers in child providers to allow for a better specialization of the behavior of the providers.
- refactor(#39): refactor contexts to unify common interfaces and methods.
0.6.0-dev.3 #
- fix(#39): fix canUse to use the correct type instead of dynamic.
0.6.0-dev.2 #
- feat(#39): add canUse and canStat methods to the request context to check if a provider or a metadata is present in the context.
0.6.0-dev.1 #
- feat(#39): add metadata system to Serinus to specialize the behavior of routes and controllers.
0.5.2 #
0.5.1 #
- Add exports for Logger and ViewEngine
0.5.0 #
- feat(#36): add ParseSchema and remove parse hook to simplify validation in Serinus
- feat(#33): add interoperability with Shelf
- Add documentation for the Serinus CLI deploy command
0.4.1 #
- Fix another bug in the normalization route of the Controllers (#22)
0.4.0 #
- Add event-based response state (#14)
- Fix a bug in the normalization route of the Controllers when a leading slash is present (#22)
- Add request lifecycle hooks to the application both global and local (#18)
- Add Request Lifecycle documentation (#15)
- The Route class is now concrete and has several factory constructors to simplify the creation of routes (#16)
- The Response.file method now uses streams to send the file to the client (#17)
0.3.1 #
- Update Spanner to 1.0.1+5
- Add Body size limit to the application
- Improve performances of the application (up to 25%)
0.3.0 #
- Add WebSocket support
- Fix a bug in the ModulesContainer that caused a wrongful injection of the providers in the application.
- Abstract the Handler interface to allow for more flexibility in the implementation of the handlers
0.2.3 #
- Fix a bug in the ModulesContainer that caused a wrongful injection of the providers in the application.
0.2.2 #
- Add enableCompression flag in the SerinusApplication
- Clean up code and add more tests
- Start documenting the code
0.2.1 #
- Fix support for Serinus CLI run command environment variables
- Improve general performance
- Add Versioning to the Application
- Add GlobalPrefix to the Application
- Add ApplicationConfig to centralize the configuration of the application
0.2.0 #
- General performance improvements
- Refactor ViewEngines
- Add tests
- Add documentation
- Add support for Serinus CLI run command environment variables
- Simplify Route Handler signature (!!!BREAKING!!!)
0.1.1-dev.1 #
- Add support for Spanner as router
- Clean up code
0.1.0-dev.2 #
- Add DeferredModules
- Add scope to the ApplicationContext
- Fix Middlewares
0.1.0-dev.1 #
- Add DeferredProviders
- Fix parsing of path parameters in request
0.0.1-dev.5 #
- Add scoped providers to ExecutionContext
0.0.1-dev.4 #
- Huge refactoring of the code
- Add guards for the request
- Add pipes for the request
0.0.1-dev.3 #
- Added more exceptions
- Added ApplicationInit mixins
- Refactoring of the code and small fixes
0.0.1-dev.2 #
- Changed request route mapping
- Refactoring of the code and small fixes
0.0.1-dev.1 #
Initial Implementation