Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

✨ v3 (feature): add CHIPS support to Cookie #3047

Merged
merged 6 commits into from
Jun 30, 2024
Merged

✨ v3 (feature): add CHIPS support to Cookie #3047

merged 6 commits into from
Jun 30, 2024

Conversation

efectn
Copy link
Member

@efectn efectn commented Jun 28, 2024

Description

Add support for partitioned cookies.

Fixes #3002

Changes introduced

  • Documentation Update: Detail the updates made to the documentation and links to the changed files.
  • Changelog/What's New: Include a summary of the additions for the upcoming release notes.

Type of change

  • Enhancement (improvement to existing features and functionality)

Checklist

  • Followed the inspiration of the Express.js framework for new functionalities, making them similar in usage.
  • Conducted a self-review of the code and provided comments for complex or critical parts.
  • Updated the documentation in the /docs/ directory for Fiber's documentation.
  • Added or updated unit tests to validate the effectiveness of the changes or new features.
  • Ensured that new and existing unit tests pass locally with the changes.
  • Verified that any new dependencies are essential and have been agreed upon by the maintainers/community.
  • Aimed for optimal performance with minimal allocations in the new code.
  • Provided benchmarks for the new code to analyze and improve upon.

Commit formatting

Please use emojis in commit messages for an easy way to identify the purpose or intention of a commit. Check out the emoji cheatsheet here: CONTRIBUTING.md

@efectn efectn requested a review from a team as a code owner June 28, 2024 19:43
@efectn efectn requested review from gaby, sixcolors and ReneWerner87 and removed request for a team June 28, 2024 19:43
Copy link
Contributor

coderabbitai bot commented Jun 28, 2024

Warning

Rate limit exceeded

@gaby has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 19 minutes and 25 seconds before requesting another review.

How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

Commits

Files that changed from the base of the PR and between 3a1efbb and a0c474f.

Walkthrough

The changes introduce support for Cookies Having Independent Partitioned State (CHIPS) by adding a Partitioned boolean field to the Cookie struct, updating the related context method, and modifying the corresponding test and documentation files.

Changes

Files Change Summaries
ctx.go Added a Partitioned field to the Cookie struct and updated the Cookie method in DefaultCtx.
ctx_test.go Updated Test_Ctx_Cookie to include partitioned cookies and adjusted the expected result.
docs/api/ctx.md Documented the new Partitioned field in the Cookie struct.
docs/whats_new.md Noted the new feature support for CHIPS.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant DefaultCtx
    participant Cookie
    participant Test

    User->>DefaultCtx: Set Cookie with Partitioned attribute
    DefaultCtx->>Cookie: Create/Update Cookie with Partitioned field
    Note right of Cookie: Cookie's Partitioned field is set
    Test->>Cookie: Validate Partitioned attribute in tests
    Cookie-->Test: Returned with Partitioned set to true
Loading

Assessment against linked issues

Objective Addressed Explanation
Add support for CHIPS cookies (Partitioned field in Cookie struct) [#3002]

Poem

A cookie once plain, now split quite divine,
With partitions for privacy, securely they shine.
In Fiber's good code, a new feature's set,
CHIPS got by, no snag, no fret.
Here's to sweet bytes, and code that's just right! 🐇🍪


Tip

Early access features: enabled

We are currently testing the following features in early access:

  • OpenAI gpt-4o model for code reviews and chat: OpenAI claims that this model is better at understanding and generating code than the previous models. We seek your feedback over the next few weeks before making it generally available.

Note:

  • You can enable or disable early access features from the CodeRabbit UI or by updating the CodeRabbit configuration file.
  • Please join our Discord Community to provide feedback and report issues.
  • OSS projects are always opted into early access features.

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

codecov bot commented Jun 28, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 83.04%. Comparing base (0400af6) to head (a0c474f).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3047      +/-   ##
==========================================
+ Coverage   83.01%   83.04%   +0.02%     
==========================================
  Files         115      115              
  Lines        8314     8315       +1     
==========================================
+ Hits         6902     6905       +3     
+ Misses       1078     1077       -1     
+ Partials      334      333       -1     
Flag Coverage Δ
unittests 83.04% <100.00%> (+0.02%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@efectn efectn added this to the v3 milestone Jun 28, 2024
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

Outside diff range and nitpick comments (6)
docs/whats_new.md (4)

Line range hint 195-203: Correct the spelling of "Express.js".

The framework should be referred to as "Express.js" rather than "ExpressJs" to maintain consistency with official terminology.

- ExpressJs like
+ Express.js-like
Tools
Markdownlint

191-191: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


Line range hint 256-256: Grammar correction needed in CORS middleware description.

The phrase "a custom conditions" should be corrected to "custom conditions".

- a custom conditions
+ custom conditions
Tools
Markdownlint

191-191: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


Line range hint 49-218: Standardize list item markers.

Replace asterisks with dashes for list items to comply with the preferred Markdown style.

- * item
+ - item
Tools
Markdownlint

191-191: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


Line range hint 232-232: Remove trailing spaces and multiple consecutive blank lines.

Ensure the document follows best practices for Markdown formatting by removing unnecessary spaces and limiting consecutive blank lines.

- line with trailing space 
+ line without trailing space

- 

+

Also applies to: 285-285, 245-245, 306-306

Tools
Markdownlint

191-191: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)

ctx_test.go (2)

Line range hint 2428-2436: Refactor suggestion for Test_Ctx_IsFromLocal_X_Forwarded to improve clarity and maintainability.

The test cases are repetitive with slight variations in the header value. Consider using table-driven tests to consolidate these cases, enhancing readability and ease of maintenance.

func Test_Ctx_IsFromLocal_X_Forwarded(t *testing.T) {
    app := New()
    testCases := []struct{
        name string
        headerValue string
        expected bool
    }{
        {"Unset X-Forwarded-For header", "", false},
        {"Localhost IPv4", "127.0.0.1", false},
        {"Localhost IPv6", "::1", false},
        {"Full localhost IPv6", "0:0:0:0:0:0:0:1", false},
        {"Random IP", "93.46.8.90", false},
    }

    for _, tc := range testCases {
        t.Run(tc.name, func(t *testing.T) {
            c := app.AcquireCtx(&fasthttp.RequestCtx{})
            c.Request().Header.Set(HeaderXForwardedFor, tc.headerValue)
            require.Equal(t, tc.expected, c.IsFromLocal())
        })
    }
}

Also applies to: 2444-2452, 2460-2468, 2476-2484, 2492-2500


Line range hint 2502-2510: Refactor suggestion for Test_Ctx_IsFromLocal_RemoteAddr to improve test structure.

Similar to the previous function, using a table-driven test approach here would make the test more compact and maintainable.

func Test_Ctx_IsFromLocal_RemoteAddr(t *testing.T) {
    app := New()
    testCases := []struct{
        name string
        remoteAddr net.Addr
        expected bool
    }{
        {"Localhost IPv4", &net.TCPAddr{IP: net.ParseIP("127.0.0.1")}, true},
        {"Localhost IPv6", &net.TCPAddr{IP: net.ParseIP("::1")}, true},
        {"Full localhost IPv6", &net.TCPAddr{IP: net.ParseIP("0:0:0:0:0:0:0:1")}, true},
        {"Zero IPv4", &net.TCPAddr{IP: net.IPv4zero}, false},
        {"Random IPv4", &net.TCPAddr{IP: net.ParseIP("93.46.8.90")}, false},
        {"Random IPv6", &net.TCPAddr{IP: net.ParseIP("2001:0db8:85a3:0000:0000:8a2e:0370:7334")}, false},
    }

    for _, tc := range testCases {
        t.Run(tc.name, func(t *testing.T) {
            fastCtx := &fasthttp.RequestCtx{}
            fastCtx.SetRemoteAddr(tc.remoteAddr)
            c := app.AcquireCtx(fastCtx)
            require.Equal(t, tc.expected, c.IsFromLocal())
        })
    }
}

Also applies to: 2518-2526, 2534-2542, 2550-2558, 2566-2574, 2582-2590

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between dbba6cf and 65466c6.

Files selected for processing (4)
  • ctx.go (2 hunks)
  • ctx_test.go (1 hunks)
  • docs/api/ctx.md (1 hunks)
  • docs/whats_new.md (1 hunks)
Additional context used
LanguageTool
docs/whats_new.md

[grammar] ~51-~51: It looks like there is a word missing here. Did you mean “listen to config”?
Context: ...ic.md) * app.Config properties moved to listen config * DisableStartupMessage * EnablePre...

(LISTEN_TO_ME)


[style] ~55-~55: This adverb was used twice in the sentence. Consider removing one of them or replacing them with a synonym.
Context: ...nablePrintRoutes * ListenerNetwork -> previously Network ### new methods * RegisterCus...

(ADVERB_REPETITION_PREMIUM)


[uncategorized] ~195-~195: The official spelling of this programming framework is “Express.js”.
Context: ...port. ### new methods * AutoFormat -> ExpressJs like * Host -> ExpressJs like * Port ->...

(NODE_JS)


[uncategorized] ~196-~196: The official spelling of this programming framework is “Express.js”.
Context: ... AutoFormat -> ExpressJs like * Host -> ExpressJs like * Port -> ExpressJs like * IsProxy...

(NODE_JS)


[uncategorized] ~197-~197: The official spelling of this programming framework is “Express.js”.
Context: ...like * Host -> ExpressJs like * Port -> ExpressJs like * IsProxyTrusted * Reset * Schema ...

(NODE_JS)


[uncategorized] ~200-~200: The official spelling of this programming framework is “Express.js”.
Context: ...ke * IsProxyTrusted * Reset * Schema -> ExpressJs like * SendStream -> ExpressJs like * S...

(NODE_JS)


[uncategorized] ~201-~201: The official spelling of this programming framework is “Express.js”.
Context: ...chema -> ExpressJs like * SendStream -> ExpressJs like * SendString -> ExpressJs like * S...

(NODE_JS)


[uncategorized] ~202-~202: The official spelling of this programming framework is “Express.js”.
Context: ...tream -> ExpressJs like * SendString -> ExpressJs like * String -> ExpressJs like * ViewB...

(NODE_JS)


[uncategorized] ~203-~203: The official spelling of this programming framework is “Express.js”.
Context: ...endString -> ExpressJs like * String -> ExpressJs like * ViewBind -> instead of Bind ###...

(NODE_JS)


[grammar] ~256-~256: Do not use the singular ‘a’ before the plural noun ‘conditions’.
Context: ...ache management, allowing you to define a custom conditions for invalidating cache entries. ### CO...

(VB_A_JJ_NNS)


[style] ~260-~260: Consider rephrasing this to strengthen your wording.
Context: ...idating cache entries. ### CORS We've made some changes to the CORS middleware to improve its f...

(MAKE_CHANGES)


[uncategorized] ~268-~268: Loose punctuation mark.
Context: ...updated fields: - Config.AllowOrigins: Now accepts a slice of strings, each re...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~269-~269: Loose punctuation mark.
Context: ... allowed origin. - Config.AllowMethods: Now accepts a slice of strings, each re...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~270-~270: Loose punctuation mark.
Context: ... allowed method. - Config.AllowHeaders: Now accepts a slice of strings, each re...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~271-~271: Loose punctuation mark.
Context: ...allowed header. - Config.ExposeHeaders: Now accepts a slice of strings, each re...

(UNLIKELY_OPENING_PUNCTUATION)

docs/api/ctx.md

[uncategorized] ~257-~257: Possible missing article found.
Context: ...// []byte("user=john") }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~281-~281: Possible missing article found.
Context: ...// []byte("user=john") }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[style] ~341-~341: Consider a shorter alternative to avoid wordiness.
Context: ... information from a ClientHello message in order to guide application logic in the GetCerti...

(IN_ORDER_TO_PREMIUM)


[typographical] ~364-~364: Consider adding a comma here.
Context: ...text() *fasthttp.RequestCtx ``` :::info Please read the [Fasthttp Documentation](https...

(PLEASE_COMMA)


[uncategorized] ~430-~430: Possible missing article found.
Context: ...oe") // "doe" // ... }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~548-~548: Possible missing article found.
Context: ... if not exist // .. }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~556-~556: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short).
Context: ...icate that the client cache is now stale and the full response should be sent. When...

(COMMA_COMPOUND_SENTENCE_2)


[uncategorized] ~588-~588: Possible missing article found.
Context: ...n") // "john" // .. }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~603-~603: Possible missing article found.
Context: ...ers() map[string][]string ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~631-~631: Possible missing article found.
Context: ...n") // "john" // .. }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~646-~646: Possible missing article found.
Context: ...ers() map[string][]string ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~699-~699: Possible missing article found.
Context: ..."google.com" // ... }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~724-~724: Possible missing article found.
Context: ..."google.com" // ... }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~1136-~1136: Possible missing article found.
Context: ...q=something" // ... }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~1189-~1189: Possible missing article found.
Context: ...first wildcard segment }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[grammar] ~1282-~1282: Did you mean “are” or “were”?
Context: ..." // ... }) ``` ## Queries Queries is a function that returns an object conta...

(SENT_START_NNS_IS)


[uncategorized] ~1369-~1369: Possible missing article found.
Context: ...") // "nike" // ... }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~1456-~1456: Did you mean: “By default,”?
Context: ... data and sends a text/html response. By default Render uses the default [**Go Templat...

(BY_DEFAULT_COMMA)


[style] ~1456-~1456: To make your writing clearer, consider a more direct alternative.
Context: ...want to use another View engine, please take a look at our [Template middleware](h...

(TAKE_A_LOOK)


[grammar] ~1464-~1464: Please check the verb form.
Context: ....string) error ``` ## Request Request return the [*fasthttp.Request](https://godoc....

(SHE_LIVE)


[style] ~1464-~1464: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...Request Request return the [*fasthttp.Request](https://godoc.org/github.com/valyala/f...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[grammar] ~1479-~1479: Please check the verb form.
Context: ...te("GET") }) ``` ## Response Response return the [*fasthttp.Response](https://godoc...

(SHE_LIVE)


[style] ~1479-~1479: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...sponse Response return the [*fasthttp.Response](https://godoc.org/github.com/valyala/f...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1501-~1501: This phrase is redundant. Consider using “outside”.
Context: ...x *fasthttp.RequestCtx) ``` It is used outside of the Fiber Handlers to reset the context...

(OUTSIDE_OF)


[uncategorized] ~1505-~1505: There should be no space here.
Context: ...y be helpful after overriding the path, i. e. an internal redirect. Note that handler...

(EG_SPACE)


[typographical] ~1630-~1630: Consider adding a comma here.
Context: ...http or https for TLS requests. :::info Please use [Config.EnableTrustedProxyCheck](...

(PLEASE_COMMA)

Markdownlint
docs/whats_new.md

49-49: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


50-50: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


51-51: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


52-52: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


53-53: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


54-54: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


55-55: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


59-59: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


60-60: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


61-61: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


65-65: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


66-66: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


67-67: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


68-68: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


69-69: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


73-73: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


74-74: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


75-75: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


191-191: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


195-195: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


196-196: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


197-197: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


198-198: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


199-199: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


200-200: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


201-201: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


202-202: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


203-203: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


204-204: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


208-208: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


209-209: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


210-210: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


211-211: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


212-212: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


213-213: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


214-214: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


215-215: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


216-216: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


217-217: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


218-218: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


222-222: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


223-223: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


224-224: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


232-232: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


285-285: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


245-245: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


306-306: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


262-262: Expected: 1; Actual: 0; Below
Headings should be surrounded by blank lines

(MD022, blanks-around-headings)


265-265: Expected: 1; Actual: 0; Below
Headings should be surrounded by blank lines

(MD022, blanks-around-headings)


143-143: null
Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


171-171: null
Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


23-23: null
Lists should be surrounded by blank lines

(MD032, blanks-around-lists)


263-263: null
Lists should be surrounded by blank lines

(MD032, blanks-around-lists)

docs/api/ctx.md

990-990: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1012-1012: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1196-1196: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1197-1197: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1375-1375: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1376-1376: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1399-1399: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1400-1400: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1401-1401: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1292-1292: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1293-1293: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1294-1294: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1295-1295: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1296-1296: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1304-1304: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1305-1305: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1306-1306: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1314-1314: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1315-1315: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1316-1316: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1317-1317: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1325-1325: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1326-1326: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1327-1327: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1335-1335: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1336-1336: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1337-1337: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1338-1338: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1339-1339: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1340-1340: Column: 1
Hard tabs

(MD010, no-hard-tabs)


168-168: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


1195-1195: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


1223-1223: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


1453-1453: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


1216-1216: null
Lists should be surrounded by blank lines

(MD032, blanks-around-lists)


1405-1405: null
Lists should be surrounded by blank lines

(MD032, blanks-around-lists)

Additional comments not posted (5)
ctx.go (3)

108-108: Added Partitioned field to Cookie struct

The new Partitioned field has been added to the Cookie struct to support CHIPS (Cookies Having Independent Partitioned State). This is a good addition for improving privacy by partitioning cookies based on the top-level site. Make sure to update any related documentation or client-side code that interacts with cookies to accommodate this new field.


362-364: Documentation reference in code

It’s beneficial to include a reference to the official documentation for CHIPS directly in the code where the Partitioned field is set. This makes it easier for developers to understand the context and usage of this feature.


364-364: Setting the Partitioned flag on cookies

The implementation for setting the Partitioned flag on cookies is correct. However, ensure that this behavior is clearly documented, especially since it can affect how cookies are handled by browsers that support the CHIPS standard.

ctx_test.go (2)

Line range hint 2592-2599: Approved test logic in Test_Ctx_extractIPsFromHeader.

The test effectively checks the IPs method's ability to parse and return the correct IP address from a complex X-Forwarded-For header string containing various delimiters and invalid entries.


Line range hint 2601-2608: Approved test logic in Test_Ctx_extractIPsFromHeader_EnableValidateIp.

This test correctly verifies that the IPs method, with IP validation enabled, filters out invalid IP addresses and returns only the valid ones from the X-Forwarded-For header.

Copy link
Member

@gaby gaby left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, pending docs updates

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 65466c6 and dc50d04.

Files selected for processing (2)
  • ctx.go (2 hunks)
  • docs/api/ctx.md (2 hunks)
Files skipped from review as they are similar to previous changes (1)
  • ctx.go
Additional context used
LanguageTool
docs/api/ctx.md

[uncategorized] ~223-~223: Possible missing comma found.
Context: ...urns a pointer to the Bind struct which contains all the methods to bind ...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~257-~257: Possible missing article found.
Context: ...// []byte("user=john") }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~281-~281: Possible missing article found.
Context: ...// []byte("user=john") }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[style] ~341-~341: Consider a shorter alternative to avoid wordiness.
Context: ... information from a ClientHello message in order to guide application logic in the GetCerti...

(IN_ORDER_TO_PREMIUM)


[typographical] ~364-~364: Consider adding a comma here.
Context: ...text() *fasthttp.RequestCtx ``` :::info Please read the [Fasthttp Documentation](https...

(PLEASE_COMMA)


[grammar] ~408-~408: Did you mean “partitioning”? Or maybe you should add a pronoun? In active voice, ‘allow’ + ‘to’ takes an object, usually a pronoun.
Context: ...``` :::info Partitioned cookies allow to partition the cookie jar by top-level site, enhan...

(ALLOW_TO)


[uncategorized] ~444-~444: Possible missing article found.
Context: ...oe") // "doe" // ... }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~562-~562: Possible missing article found.
Context: ... if not exist // .. }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~570-~570: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short).
Context: ...icate that the client cache is now stale and the full response should be sent. When...

(COMMA_COMPOUND_SENTENCE_2)


[uncategorized] ~602-~602: Possible missing article found.
Context: ...n") // "john" // .. }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~617-~617: Possible missing article found.
Context: ...ers() map[string][]string ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~645-~645: Possible missing article found.
Context: ...n") // "john" // .. }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~660-~660: Possible missing article found.
Context: ...ers() map[string][]string ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~713-~713: Possible missing article found.
Context: ..."google.com" // ... }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~738-~738: Possible missing article found.
Context: ..."google.com" // ... }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~1150-~1150: Possible missing article found.
Context: ...q=something" // ... }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~1203-~1203: Possible missing article found.
Context: ...first wildcard segment }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[grammar] ~1296-~1296: Did you mean “are” or “were”?
Context: ..." // ... }) ``` ## Queries Queries is a function that returns an object conta...

(SENT_START_NNS_IS)


[uncategorized] ~1383-~1383: Possible missing article found.
Context: ...") // "nike" // ... }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~1470-~1470: Did you mean: “By default,”?
Context: ... data and sends a text/html response. By default Render uses the default [**Go Templat...

(BY_DEFAULT_COMMA)


[style] ~1470-~1470: To make your writing clearer, consider a more direct alternative.
Context: ...want to use another View engine, please take a look at our [Template middleware](h...

(TAKE_A_LOOK)


[grammar] ~1478-~1478: Please check the verb form.
Context: ....string) error ``` ## Request Request return the [*fasthttp.Request](https://godoc....

(SHE_LIVE)


[style] ~1478-~1478: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...Request Request return the [*fasthttp.Request](https://godoc.org/github.com/valyala/f...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[grammar] ~1493-~1493: Please check the verb form.
Context: ...te("GET") }) ``` ## Response Response return the [*fasthttp.Response](https://godoc...

(SHE_LIVE)


[style] ~1493-~1493: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...sponse Response return the [*fasthttp.Response](https://godoc.org/github.com/valyala/f...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1515-~1515: This phrase is redundant. Consider using “outside”.
Context: ...x *fasthttp.RequestCtx) ``` It is used outside of the Fiber Handlers to reset the context...

(OUTSIDE_OF)


[uncategorized] ~1519-~1519: There should be no space here.
Context: ...y be helpful after overriding the path, i. e. an internal redirect. Note that handler...

(EG_SPACE)


[typographical] ~1644-~1644: Consider adding a comma here.
Context: ...http or https for TLS requests. :::info Please use [Config.EnableTrustedProxyCheck](...

(PLEASE_COMMA)

Markdownlint
docs/api/ctx.md

1004-1004: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1026-1026: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1210-1210: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1211-1211: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1389-1389: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1390-1390: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1413-1413: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1414-1414: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1415-1415: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


378-378: Column: 1
Hard tabs

(MD010, no-hard-tabs)


379-379: Column: 1
Hard tabs

(MD010, no-hard-tabs)


380-380: Column: 1
Hard tabs

(MD010, no-hard-tabs)


381-381: Column: 1
Hard tabs

(MD010, no-hard-tabs)


382-382: Column: 1
Hard tabs

(MD010, no-hard-tabs)


383-383: Column: 1
Hard tabs

(MD010, no-hard-tabs)


384-384: Column: 1
Hard tabs

(MD010, no-hard-tabs)


385-385: Column: 1
Hard tabs

(MD010, no-hard-tabs)


386-386: Column: 1
Hard tabs

(MD010, no-hard-tabs)


387-387: Column: 1
Hard tabs

(MD010, no-hard-tabs)


388-388: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1306-1306: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1307-1307: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1308-1308: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1309-1309: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1310-1310: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1318-1318: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1319-1319: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1320-1320: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1328-1328: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1329-1329: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1330-1330: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1331-1331: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1339-1339: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1340-1340: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1341-1341: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1349-1349: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1350-1350: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1351-1351: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1352-1352: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1353-1353: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1354-1354: Column: 1
Hard tabs

(MD010, no-hard-tabs)


168-168: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


1209-1209: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


1237-1237: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


1467-1467: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


1230-1230: null
Lists should be surrounded by blank lines

(MD032, blanks-around-lists)


1419-1419: null
Lists should be surrounded by blank lines

(MD032, blanks-around-lists)

Additional comments not posted (3)
docs/api/ctx.md (3)

378-388: Add explanatory comments for the Partitioned field.

The Partitioned field is documented correctly, but it would be beneficial to add a brief explanation of its purpose and usage similar to other fields.

-  Partitioned bool      `json:"partitioned"`  // Indicates if the cookie is stored in a partitioned cookie jar
+  Partitioned bool      `json:"partitioned"`  // Indicates if the cookie is stored in a partitioned cookie jar, enhancing privacy by preventing cross-site tracking
Tools
Markdownlint

378-378: Column: 1
Hard tabs

(MD010, no-hard-tabs)


379-379: Column: 1
Hard tabs

(MD010, no-hard-tabs)


380-380: Column: 1
Hard tabs

(MD010, no-hard-tabs)


381-381: Column: 1
Hard tabs

(MD010, no-hard-tabs)


382-382: Column: 1
Hard tabs

(MD010, no-hard-tabs)


383-383: Column: 1
Hard tabs

(MD010, no-hard-tabs)


384-384: Column: 1
Hard tabs

(MD010, no-hard-tabs)


385-385: Column: 1
Hard tabs

(MD010, no-hard-tabs)


386-386: Column: 1
Hard tabs

(MD010, no-hard-tabs)


387-387: Column: 1
Hard tabs

(MD010, no-hard-tabs)


388-388: Column: 1
Hard tabs

(MD010, no-hard-tabs)


406-410: Improve the description of partitioned cookies.

The description is clear but could be enhanced for better understanding.

- Partitioned cookies allow to partition the cookie jar by top-level site, enhancing user privacy by preventing cookies from being shared across different sites. This feature is particularly useful in scenarios where a user interacts with embedded third-party services that should not have access to the main site's cookies. You can check out [CHIPS](https://developers.google.com/privacy-sandbox/3pcd/chips) for more information.
+ Partitioned cookies allow partitioning the cookie jar by top-level site, enhancing user privacy by preventing cookies from being shared across different sites. This feature is particularly useful in scenarios where a user interacts with embedded third-party services that should not have access to the main site's cookies. For more information, check out [CHIPS](https://developers.google.com/privacy-sandbox/3pcd/chips).
Tools
LanguageTool

[grammar] ~408-~408: Did you mean “partitioning”? Or maybe you should add a pronoun? In active voice, ‘allow’ + ‘to’ takes an object, usually a pronoun.
Context: ...``` :::info Partitioned cookies allow to partition the cookie jar by top-level site, enhan...

(ALLOW_TO)


412-424: Clarify the example usage of partitioned cookies.

The example is clear, but the comment about the Partitioned field could be more descriptive.

-  cookie.Partitioned = true  // This cookie will be stored in a separate jar when it's embeded into another website
+  cookie.Partitioned = true  // This cookie will be stored in a separate jar when embedded into another website, preventing cross-site access

Copy link
Member

@gaby gaby left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between dc50d04 and 3a1efbb.

Files selected for processing (4)
  • ctx.go (2 hunks)
  • ctx_test.go (1 hunks)
  • docs/api/ctx.md (2 hunks)
  • docs/whats_new.md (1 hunks)
Files skipped from review as they are similar to previous changes (2)
  • ctx.go
  • ctx_test.go
Additional context used
LanguageTool
docs/whats_new.md

[uncategorized] ~9-~9: “its” (belonging to it) seems less likely than “it’s” (it is)
Context: ...c_max_heading_level: 3 --- :::caution Its a draft, not finished yet. ::: [//]: ...

(AI_HYDRA_LEO_CPT_ITS_ITIS)


[grammar] ~51-~51: It looks like there is a word missing here. Did you mean “listen to config”?
Context: ...ic.md) * app.Config properties moved to listen config * DisableStartupMessage * EnablePre...

(LISTEN_TO_ME)


[style] ~55-~55: This adverb was used twice in the sentence. Consider removing one of them or replacing them with a synonym.
Context: ...nablePrintRoutes * ListenerNetwork -> previously Network ### new methods * RegisterCus...

(ADVERB_REPETITION_PREMIUM)


[uncategorized] ~195-~195: The official spelling of this programming framework is “Express.js”.
Context: ...port. ### new methods * AutoFormat -> ExpressJs like * Host -> ExpressJs like * Port ->...

(NODE_JS)


[uncategorized] ~196-~196: The official spelling of this programming framework is “Express.js”.
Context: ... AutoFormat -> ExpressJs like * Host -> ExpressJs like * Port -> ExpressJs like * IsProxy...

(NODE_JS)


[uncategorized] ~197-~197: The official spelling of this programming framework is “Express.js”.
Context: ...like * Host -> ExpressJs like * Port -> ExpressJs like * IsProxyTrusted * Reset * Schema ...

(NODE_JS)


[uncategorized] ~200-~200: The official spelling of this programming framework is “Express.js”.
Context: ...ke * IsProxyTrusted * Reset * Schema -> ExpressJs like * SendStream -> ExpressJs like * S...

(NODE_JS)


[uncategorized] ~201-~201: The official spelling of this programming framework is “Express.js”.
Context: ...chema -> ExpressJs like * SendStream -> ExpressJs like * SendString -> ExpressJs like * S...

(NODE_JS)


[uncategorized] ~202-~202: The official spelling of this programming framework is “Express.js”.
Context: ...tream -> ExpressJs like * SendString -> ExpressJs like * String -> ExpressJs like * ViewB...

(NODE_JS)


[uncategorized] ~203-~203: The official spelling of this programming framework is “Express.js”.
Context: ...endString -> ExpressJs like * String -> ExpressJs like * ViewBind -> instead of Bind ###...

(NODE_JS)


[grammar] ~257-~257: Do not use the singular ‘a’ before the plural noun ‘conditions’.
Context: ...ache management, allowing you to define a custom conditions for invalidating cache entries. ### CO...

(VB_A_JJ_NNS)


[style] ~261-~261: Consider rephrasing this to strengthen your wording.
Context: ...idating cache entries. ### CORS We've made some changes to the CORS middleware to improve its f...

(MAKE_CHANGES)


[uncategorized] ~269-~269: Loose punctuation mark.
Context: ...updated fields: - Config.AllowOrigins: Now accepts a slice of strings, each re...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~270-~270: Loose punctuation mark.
Context: ... allowed origin. - Config.AllowMethods: Now accepts a slice of strings, each re...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~271-~271: Loose punctuation mark.
Context: ... allowed method. - Config.AllowHeaders: Now accepts a slice of strings, each re...

(UNLIKELY_OPENING_PUNCTUATION)


[uncategorized] ~272-~272: Loose punctuation mark.
Context: ...allowed header. - Config.ExposeHeaders: Now accepts a slice of strings, each re...

(UNLIKELY_OPENING_PUNCTUATION)

docs/api/ctx.md

[uncategorized] ~223-~223: Possible missing comma found.
Context: ...urns a pointer to the Bind struct which contains all the methods to bind ...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~225-~225: Possible missing comma found.
Context: ...he request/response data. For detailed information check the Bind documentati...

(AI_HYDRA_LEO_MISSING_COMMA)


[uncategorized] ~257-~257: Possible missing article found.
Context: ...// []byte("user=john") }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~281-~281: Possible missing article found.
Context: ...// []byte("user=john") }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[style] ~341-~341: Consider a shorter alternative to avoid wordiness.
Context: ... information from a ClientHello message in order to guide application logic in the GetCerti...

(IN_ORDER_TO_PREMIUM)


[typographical] ~364-~364: Consider adding a comma here.
Context: ...text() *fasthttp.RequestCtx ``` :::info Please read the [Fasthttp Documentation](https...

(PLEASE_COMMA)


[grammar] ~408-~408: Did you mean “partitioning”? Or maybe you should add a pronoun? In active voice, ‘allow’ + ‘to’ takes an object, usually a pronoun.
Context: ...``` :::info Partitioned cookies allow to partition the cookie jar by top-level site, enhan...

(ALLOW_TO)


[uncategorized] ~444-~444: Possible missing article found.
Context: ...oe") // "doe" // ... }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~562-~562: Possible missing article found.
Context: ... if not exist // .. }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~570-~570: Use a comma before “and” if it connects two independent clauses (unless they are closely connected and short).
Context: ...icate that the client cache is now stale and the full response should be sent. When...

(COMMA_COMPOUND_SENTENCE_2)


[uncategorized] ~602-~602: Possible missing article found.
Context: ...n") // "john" // .. }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~617-~617: Possible missing article found.
Context: ...ers() map[string][]string ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~645-~645: Possible missing article found.
Context: ...n") // "john" // .. }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~660-~660: Possible missing article found.
Context: ...ers() map[string][]string ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~713-~713: Possible missing article found.
Context: ..."google.com" // ... }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~738-~738: Possible missing article found.
Context: ..."google.com" // ... }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~1150-~1150: Possible missing article found.
Context: ...q=something" // ... }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~1157-~1157: Possible missing article found.
Context: ...](../#zero-allocation) ::: ## Params Method can be used to get the route parameters...

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~1203-~1203: Possible missing article found.
Context: ...first wildcard segment }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[grammar] ~1296-~1296: Did you mean “are” or “were”?
Context: ..." // ... }) ``` ## Queries Queries is a function that returns an object conta...

(SENT_START_NNS_IS)


[uncategorized] ~1383-~1383: Possible missing article found.
Context: ...") // "nike" // ... }) ``` :::info Returned value is only valid within the handler....

(AI_HYDRA_LEO_MISSING_THE)


[uncategorized] ~1470-~1470: Did you mean: “By default,”?
Context: ... data and sends a text/html response. By default Render uses the default [**Go Templat...

(BY_DEFAULT_COMMA)


[style] ~1470-~1470: To make your writing clearer, consider a more direct alternative.
Context: ...want to use another View engine, please take a look at our [Template middleware](h...

(TAKE_A_LOOK)


[grammar] ~1478-~1478: Please check the verb form.
Context: ....string) error ``` ## Request Request return the [*fasthttp.Request](https://godoc....

(SHE_LIVE)


[style] ~1478-~1478: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...Request Request return the [*fasthttp.Request](https://godoc.org/github.com/valyala/f...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[grammar] ~1493-~1493: Please check the verb form.
Context: ...te("GET") }) ``` ## Response Response return the [*fasthttp.Response](https://godoc...

(SHE_LIVE)


[style] ~1493-~1493: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...sponse Response return the [*fasthttp.Response](https://godoc.org/github.com/valyala/f...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[style] ~1515-~1515: This phrase is redundant. Consider using “outside”.
Context: ...x *fasthttp.RequestCtx) ``` It is used outside of the Fiber Handlers to reset the context...

(OUTSIDE_OF)


[uncategorized] ~1519-~1519: There should be no space here.
Context: ...y be helpful after overriding the path, i. e. an internal redirect. Note that handler...

(EG_SPACE)


[uncategorized] ~1606-~1606: Possible missing article found.
Context: ...n err } }) ``` ## SaveFileToStorage Method is used to save any multipart file ...

(AI_HYDRA_LEO_MISSING_THE)


[typographical] ~1644-~1644: Consider adding a comma here.
Context: ...http or https for TLS requests. :::info Please use [Config.EnableTrustedProxyCheck](...

(PLEASE_COMMA)


[uncategorized] ~1770-~1770: Possible missing comma found.
Context: ...fo If the file contains an url specific character you have to escape it before passing th...

(AI_HYDRA_LEO_MISSING_COMMA)

Markdownlint
docs/whats_new.md

49-49: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


50-50: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


51-51: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


52-52: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


53-53: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


54-54: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


55-55: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


59-59: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


60-60: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


61-61: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


65-65: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


66-66: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


67-67: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


68-68: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


69-69: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


73-73: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


74-74: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


75-75: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


191-191: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


195-195: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


196-196: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


197-197: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


198-198: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


199-199: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


200-200: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


201-201: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


202-202: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


203-203: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


204-204: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


208-208: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


209-209: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


210-210: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


211-211: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


212-212: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


213-213: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


214-214: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


215-215: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


216-216: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


217-217: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


218-218: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


222-222: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


223-223: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


224-224: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


225-225: Expected: dash; Actual: asterisk
Unordered list style

(MD004, ul-style)


233-233: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


286-286: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


246-246: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


307-307: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


263-263: Expected: 1; Actual: 0; Below
Headings should be surrounded by blank lines

(MD022, blanks-around-headings)


266-266: Expected: 1; Actual: 0; Below
Headings should be surrounded by blank lines

(MD022, blanks-around-headings)


143-143: null
Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


171-171: null
Fenced code blocks should be surrounded by blank lines

(MD031, blanks-around-fences)


23-23: null
Lists should be surrounded by blank lines

(MD032, blanks-around-lists)


264-264: null
Lists should be surrounded by blank lines

(MD032, blanks-around-lists)

docs/api/ctx.md

1004-1004: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1026-1026: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1210-1210: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1211-1211: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1389-1389: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1390-1390: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1413-1413: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1414-1414: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


1415-1415: Expected: 0 or 2; Actual: 1
Trailing spaces

(MD009, no-trailing-spaces)


378-378: Column: 1
Hard tabs

(MD010, no-hard-tabs)


379-379: Column: 1
Hard tabs

(MD010, no-hard-tabs)


380-380: Column: 1
Hard tabs

(MD010, no-hard-tabs)


381-381: Column: 1
Hard tabs

(MD010, no-hard-tabs)


382-382: Column: 1
Hard tabs

(MD010, no-hard-tabs)


383-383: Column: 1
Hard tabs

(MD010, no-hard-tabs)


384-384: Column: 1
Hard tabs

(MD010, no-hard-tabs)


385-385: Column: 1
Hard tabs

(MD010, no-hard-tabs)


386-386: Column: 1
Hard tabs

(MD010, no-hard-tabs)


387-387: Column: 1
Hard tabs

(MD010, no-hard-tabs)


388-388: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1306-1306: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1307-1307: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1308-1308: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1309-1309: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1310-1310: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1318-1318: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1319-1319: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1320-1320: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1328-1328: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1329-1329: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1330-1330: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1331-1331: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1339-1339: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1340-1340: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1341-1341: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1349-1349: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1350-1350: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1351-1351: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1352-1352: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1353-1353: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1354-1354: Column: 1
Hard tabs

(MD010, no-hard-tabs)


1749-1749: Column: 1
Hard tabs

(MD010, no-hard-tabs)


168-168: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


1209-1209: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


1237-1237: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


1467-1467: Expected: 1; Actual: 2
Multiple consecutive blank lines

(MD012, no-multiple-blanks)


1230-1230: null
Lists should be surrounded by blank lines

(MD032, blanks-around-lists)


1419-1419: null
Lists should be surrounded by blank lines

(MD032, blanks-around-lists)

gaby and others added 2 commits June 30, 2024 15:27
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@ReneWerner87 ReneWerner87 merged commit 56d60a0 into main Jun 30, 2024
15 checks passed
@efectn efectn deleted the chips branch July 16, 2024 13:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

📝 [Proposal]: Add support for CHIPS (Cookies Having Independent Partitioned State)
3 participants