Skip to content

Releases: go-goyave/goyave

Pre-release v5.0.0-rc8

02 Apr 13:26
5dc81f2
Compare
Choose a tag to compare
Pre-release
  • Improved docs
  • server.Stop() doesn't attempt to stop the server a second time if it was already stopped
  • Validation: added validation.Context accessors for current element path and array element errors
  • Validation: added validation.Context methods AddValidationError and AddValidationErrors so validators can merge additional errors that may be coming from nested validation
  • validation.Context's Extra field is never nil
  • Fixed OPTIONS method not added to routes if their router inherited their CORS settings from parent router
  • Updated dependencies
  • Improved language files unmarshal error messages

Pre-release v5.0.0-rc7

21 Mar 13:45
ddb0a3e
Compare
Choose a tag to compare
Pre-release
  • Updated dependencies
  • Improved thread-safety of server status
  • Updated contribution resources (issue templates, etc) and license

Pre-release v5.0.0-rc6

21 Feb 09:17
bf5cb4f
Compare
Choose a tag to compare
Pre-release
  • slog: custom errors implementing slog.LogValuer are now handled correctly and will be added as reason attribute.
  • Added parameter name hints on goyave.Handler so IDEs automatically name request and response properly when auto-completing.
  • testutil: when using TestMiddleware, the cloned request sent to the middleware now uses the same context.Context as the original request.
  • Updated dependencies and CI

Pre-release v5.0.0-rc5

30 Jan 14:03
2bcdd88
Compare
Choose a tag to compare
Pre-release
  • Added a name to special routes (the notFound and methodNotAllowed routes) so it is possible to know if there was no matched route from inside a global middleware.
  • testutil.TestMiddleware now also copies the request.Route.
  • ⚠️ The auth middleware is now only executed if the matched route (or one of its parents) have the meta auth.MetaAuth set to true. This means the auth.Middleware is now meant to be used as a global middleware. Routers and routes can be individually marked as requiring auth or not.

Pre-release v5.0.0-rc4

29 Jan 15:01
87c349b
Compare
Choose a tag to compare
Pre-release
  • Improvements to the session package to make manual transaction (begin, commit, rollback) easier and to improve support on nested transaction (that can possibly involve multiple different services).
    • The Session interface now has a Context() context.Context method.
    • Begin() now also injects the transaction DB in the new session's context.
    • Begin() and Transaction() now use the DB retrieved from the given context if available. This makes nested transactions possible even if the service is using the root session.

Pre-release v5.0.0-rc3

25 Jan 10:41
17bf097
Compare
Choose a tag to compare
Pre-release

-database.Paginator now uses a cloned statement for the count query to avoid modifying the original statement.

  • Wrap errors using errors.New() in many places that were not already doing it.
  • Added errors.Errorf, which is a shortcut for errors.New(fmt.Errorf()).
  • ⚠️ errors.New() and errors.NewSkip() now return nil if given nil as argument. nil values in []error and []any reasons are now ignored.
  • ⚠️ errors.New(), errors.NewSkip() and errors.Errorf() now return error interface instead of *errors.Error to improve ability to compare to nil.
  • Added a safeguard on Response.error() against nil errors.
  • Added a safeguard on slog.Logger.logError() against nil errors.
  • Updated internal uses of the util errors package according to the new changes described above.

Pre-release v5.0.0-rc2

12 Jan 09:46
50a453f
Compare
Choose a tag to compare
Pre-release
  • Removed the directory argument in router.Static. The static handler now uses the FS relative root directory as a base. Use a sub FS if you want to serve a sub directory.
  • Updated dependencies.

Pre-release v5.0.0-rc1

12 Jan 09:42
19f927b
Compare
Choose a tag to compare
Pre-release
  • Added new server options
    • Added config entry server.readHeaderTimeout which represents the amount of time allowed to read request headers.
    • Added Options.BaseContext, allowing to define the base context for the server.
    • Added Options.ConnContext, allowing to modify the context used for new client connections.
    • Added Options.ConnState, allowing to get notified when the client connection state changes.
    • Added Options.MaxHeaderBytes, which controls the maximum number of bytes the server will read parsing the request header's keys and values, including the request line.
  • Improvements on the embedded resources support:
    • Added a fsutil.Embed.Sub method, allowing to get sub filesystems for embed.FS.
    • fsutil.Embed now accepts fs.ReadDirFS instead of embed.FS
    • The lang package loads from root FS directory instead of forcing resources/lang, unless the FS implements fsutil.WorkingDirDS

Pre-release v5.0.0-preview7

04 Dec 10:19
49f4407
Compare
Choose a tag to compare
Pre-release

Breaking changes are marked with a ⚠️.

  • ⚠️ testutil: removed the route registrer parameter from NewTestServer and NewTestServerWithOptions
  • Redirect the default test server logger to testing.T.Log()
  • Added the new util/session package for business transaction management.
  • Validation: the email validator now converts the value to string instead of mail.Address to improve the experience with DTO conversion. mail.Address was serialized as a struct instead of a string.
  • Paginator: the page info query and the actual query are now executed in a transaction.
  • ⚠️ Paginator: Find() and UpdatePageInfo() now return an error instead of gorm.DB

Pre-release v5.0.0-preview6

10 Nov 14:48
0940170
Compare
Choose a tag to compare
Pre-release
  • Removed requirements to implement fsutil.FS for fsutil.WorkingDirFS, fsutil.MkdirFS, fsutil.WritableFS, fsutil.RemoveFS
  • Fixed RouteParams were emptied if the matched route doesn't have parameters but its parents do.
  • Fixed error trace added twice as an attribute in slog when logging *errors.Error having a reason of type *errors.Error. Only the correct trace is printed now.
  • Validation: the request context is now automatically attached to the DB in the validation middleware.
  • Extra in request and validation are now using typed keys instead of strings. You can now (and you are encouraged to) use comparable structures as keys.
  • ExtraJWTClaims key has been moved to the auth package.