* add forward from domain
* add balancer forward
* add unittest and readme
* add short description new feature
* add short description on signature
* golangci-lint fix
---------
Co-authored-by: René Werner <rene@gofiber.io>
* PR: add url for favicon middleware, for correct handling different of ico formats
* pr: efectn > URL would be better naming i think
* pr: add test case
* apply reviews
* remove json annotinos, since they are unnecessary
* readme fixes
* linting fixes
---------
Co-authored-by: koalan <kolesnikov.khv@gmail.com>
Co-authored-by: Muhammed Efe Çetin <efectn@protonmail.com>
* ✅ chore: add go 1.20 to ci and readmes
* 🧹 chore: add go 1.20 to ci and readmes
* update linter
* fix linter
* fix benchmarks
* fix benchmarks
* fix benchmarks
* internal: revert linting changes
Changes to the internal package should not have been made in 167a8b5e94.
* middleware/monitor: revert changes to exported field "ChartJSURL"
This is a breaking change introduced in 167a8b5e94.
* middleware/monitor: fix error checking
Fix the errorenous error checking introduced in 167a8b5e94.
* 🐛 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
* 📚 Doc: Reset zh_TW translation
* 📚 Doc: 1st revision of Chinese (Taiwan) translation
* 📚 Doc: Language Flag
* 📚 Doc: 2nd rev. of Chinese (Taiwan) translation
* 📚 Doc: Translated the middlewares list
* Docs: Fixup space
* 📚 Doc: Correct the figure link in READMEs
* 📚 Doc: Update according to review suggestions
* 📚 Doc: Update according to review suggestions
* Deleted redundant check for an ipv4 address octet block that is bigger than 255 in utils/ip.go. Also added a testcase for octetblocks that are bigger than 255.
* Added extra testcases
* docs: translate some words to bahasa
Translate:
download -> unduh
WebSocket support -> Mendukung WebSocket
Route Naming -> Penamaan Route
default -> bawaan
* 📝 docs: translate some words to bahasa(ID)
* 📝 Docs: Add discord channel link
* 🚀 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
* 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
app: make app.Test accept a time.Duration timeout
Cases found by running semgrep with an empty .semgrepignore file
semgrep --lang=go -e '$O.Test($X, $Y)'
* app: do not use empty *net.IPNet in case of an error of "net.ParseCIDR"
* app: expose error returned by "net.ParseCIDR"
* ctx: do not repeatedly call method in loop
* ctx: add test for "IsProxyTrusted" func