Releases: bkonkle/nakago
v0.24.0
0.24.0
Added
nakago-axum
- Added aToken<T>
extractor that uses theT
for private claims using biscuit::ClaimsSet.
Removed
nakago-ws
- RemovedSession
in favor of a generic type parameter for theConnections
struct.
Changed
nakago-axum
- Renamed the authValidator
toJWKSValidator
for clarity.nakago-axum
- Moved the Unverified Validator out to a separate struct that is only built whencfg(test)
is enabled.nakago-ws
- Handlers now accept a new Token type, which contains the JWT string and the Registered Claims for use in more complex authorization scenarios.nakago-ws
- Changed the signature of Handlers to use Results for better error handling.nakago-async-graphql
- Updatednakago-axum
.
v0.23.0
0.23.0
Major pivot! Until now, Nakago has been aimed at growing into a full-scale API server framework. However, I've realized that the core value of Nakago is the Dependency Injection system, and that it can be used in a wide variety of contexts. This release is a pivot to focus on the DI system itself, and to make it more flexible and easier to use in a variety of contexts.
Take a look at examples like the Axum / Async-GraphQL demo for more details!
Removed
nakago
- RemovedApplication
,Hooks
, thelifecycle::EventType
andlifecycle::Events
enums. Theconfig
utilities were moved tonakago-figment
.nakago-axum
- RemovedAxumApplication
,Route
, andRoutes
in favor of a more generic approach. Use the newInject
extractor to access dependencies in your Axum handlers.nakago-warp
- RemovedWarpApplication
,Route
, andRoutes
in favor of a more generic approach. Use thewith_injection()
Filter to access dependencies in your Warp handlers.
Changed
nakago
- The tag-based container operations were previously the default mode of working withInject
. This proved to be more verbose and than necessary in most cases, however. The new default mode is to use the type-based operations, which are more ergonomic and easier to use. The tag-based operations are still available, but they are now suffixed with_tag
to make it clear that they are a different mode of operation. The type-based operations are no longer suffixed with_type
, because they are now the default.nakago
- Theinject
namespace has been promoted to the top level. Wherenakago::inject
was used before,nakago
should now be the equivalent.nakago
- Theconfig
utilities were moved tonakago-figment
.nakago-examples-simple
,nakago-examples-async-graphql
,nakago-examples-simple-warp
- Updated with the new approach. See these examples for more information about how to use the tools mentioned above.
Added
nakago-axum
- Added a newInject
extractor to access dependencies in your Axum handlers. This is a much more idiomatic way to use Nakago with Axum, and it's more flexible than the previous approach. Use the provided AxumState
to make theInject
container available to your handlers.nakago-figment
- Generic config utilities extracted from the corenakago
package.
v0.22.0
v0.21.0
0.21.0
Changed
nakago-axum
- Changed theInject
extractor to be a wrapper around the Nakago dependency injection container, rather than a direct extractor. This makes it much more convenient to use it in an idiomatic way with Axum.nakago-async-graphql
- Updatednakago-axum
nakago-ws
- Updatednakago-axum
nakago-examples-async-graphql
- Updated the example to use the newInject
extractor.
v0.20.0
0.20.0
Added
nakago-ws
: New package for Websocket utilities
Changed
nakago
: Major change - types are now the primary interface, with tags being used only when needed.- Tags introduced more boilerplate than I liked, and they're really only necessary when you're dealing with multiple instances of the same type. This change makes the API more ergonomic and easier to understand.
- Operations like
.get_type()
and.provide_type()
have been moved to methods like.get()
and.provide()
, and the existing tag methods were moved to methods like.get_tag()
and.provide_tag()
.
nakago-examples-async-graphql
: Updated to use the newnakago-ws
package for Websocket support.
Fixed
nakago-derive
: Properly namespaced theInject
usage
v0.19.1
0.19.1
Changed
nakago-example-async-graphql
: Cleaned up some imports that weren't being used.- Removed the 'config' directories in the example projects and moved the config files up to the root folder of each project.
- Updated config loaders to act on Figments, making it easier to take full advantage of the Figment library.
v0.19.0
0.19.0
Added
nakago-warp
: A new Warp adapter that works in a similar way to the Axum adapter.nakago-examples-simple-warp
: A new example project that uses the Warp adapter.nakago
: Added a copy of Axum'sFromRef
utility, so that it can be used without importing Axum itself.nakago-derive
: Updated to support the FromRef utility.
Changed
- Updated
mockall
andtokio-tungstenite
requirements, and removed temporary tokio-tungstenite fork. nakago-axum
: Simplified the route Init Hook.nakago-axum
,nakago-async-graphql
,nakago-sea-orm
: Updated to use the new FromRef utility.
v0.18.0
v0.17.0
0.17.0
This is a big release! It includes updates from http
to v1.0, hyper
to v1.0, and axum
to v0.7. It refactors the test utils to use reqwest
instead of the minimal hyper Client that is changing in v1.0. There are a number of small behind-the-scenes changes to support these new versions, and Nakago is currently relying on a few temporary forks as the community catches up to the big releases in recent weeks.
Changed
- Dependency updates to
http
v1.0,hyper
v1.0, andaxum
v0.7 across the board. nakago-axum
:AxumApplication.run()
now returns a tuple with the server and the actual address that it is bound to.nakago-axum
: Thejwks
utils now usereqwest
to retrieve the "known-hosts.json" file.nakago-axum
: TheRoute
andRoutes
types no longer take aBody
type parameter.nakago-axum
: Moved the test HTTP utilities toreqwest
, eliminating the need for an injected HTTP test client.nakago-async-graphql
: Moved the test HTTP utilities toreqwest
, and made the integration with the plain HTTP test utils more seamless.
Removed
nakago-axum
: Removed thetest::CLIENT
tag, because it is no longer needed.
Upgrade Guide
To update your project from Nakago v0.16 to v0.17:
-
Update all Nakago crates to v0.17.
-
Update usages of
AxumApplication.run()
to use the new return type, which is a tuple of(Server, SocketAddr)
.
// From:
let server = app.run(args.config_path).await?;
let addr = server.local_addr();
// To:
let (server, addr) = app.run(args.config_path).await?;
- Update tests to use
reqwest
instead of the injected HTTP client.
// From:
let req = utils
.http
.call(Method::GET, "/username", Value::Null, Some(&token))?;
let resp = utils.http_client.request(req).await?;
let status = resp.status();
let body = to_bytes(resp.into_body()).await?;
let json: Value = serde_json::from_slice(&body)?;
// To:
let resp = utils
.http
.get_json("/username", Some(&token))
.send()
.await?;
let status = resp.status();
let json = resp.json::<Value>().await?;