* Revert "Revert "🐛 requestid.Config.ContextKey is interface{} (#2369)" (#2742)"
This reverts commit 28be17f929cfa7d3c27dd292fc3956f2f9882e22.
* fix: request ContextKey default value condition
Should check for `nil` since it is `any`.
* fix: don't constrain middlewares' context-keys to strings
`context` recommends using "unexported type" as context keys to avoid
collisions https://pkg.go.dev/github.com/gofiber/fiber/v2#Ctx.Locals.
The official go blog also recommends this https://go.dev/blog/context.
`fiber.Ctx.Locals(key any, value any)` correctly allows consumers to
use unexported types or e.g. strings.
But some fiber middlewares constrain their context-keys to `string` in
their "default config structs", making it impossible to use unexported
types.
This PR removes the `string` _constraint_ from all middlewares, allowing
to now use unexported types as per the official guidelines. However
the default value is still a string, so it's not a breaking change, and
anyone still using strings as context keys is not affected.
* internal: revert linting changes
Changes to the internal package should not have been made in 167a8b5e9421e0ab51fbf44c5621632f4a1a90c5.
* middleware/monitor: revert changes to exported field "ChartJSURL"
This is a breaking change introduced in 167a8b5e9421e0ab51fbf44c5621632f4a1a90c5.
* middleware/monitor: fix error checking
Fix the errorenous error checking introduced in 167a8b5e9421e0ab51fbf44c5621632f4a1a90c5.
* 🐛 Bug: Fix issues introduced in linting PR #2319
* 🐛 Bug: Fix issues introduced in linting PR #2319
* Bug: Fix issues introduced in linting PR #2319
---------
Co-authored-by: René Werner <rene@gofiber.io>
* golangci-lint: add and apply more stricter linting rules
* github: drop security workflow now that we use gosec linter inside golangci-lint
* github: use official golangci-lint CI linter
* Add editorconfig and gitattributes file
* 🚀 Feature: Add idempotency middleware (#2253)
* middleware: add idempotency middleware
* middleware/idempotency: use fiber.Storage instead of custom storage
* middleware/idempotency: only allocate data if really required
* middleware/idempotency: marshal response using msgp
* middleware/idempotency: add msgp tests
* middleware/idempotency: do not export response
* middleware/idempotency: disable msgp's -io option to disable generating unused methods
* middleware/idempotency: switch to time.Duration based app.Test
* middleware/idempotency: only create closure once
* middleware/idempotency: add benchmarks
* middleware/idempotency: optimize strings.ToLower when making comparison
The real "strings.ToLower" still needs to be used when storing the data.
* middleware/idempotency: safe-copy body
* middleware/idempotency: backport to v2