-
-
Notifications
You must be signed in to change notification settings - Fork 1.7k
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
Conversation
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 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. WalkthroughThe changes introduce support for Cookies Having Independent Partitioned State (CHIPS) by adding a Changes
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
Assessment against linked issues
Poem
Tip Early access features: enabledWe are currently testing the following features in early access:
Note:
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? TipsChatThere are 3 ways to chat with CodeRabbit:
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)
Additionally, you can add CodeRabbit Configration File (
|
Codecov ReportAll modified and coverable lines are covered by tests ✅
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
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. |
There was a problem hiding this 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-likeTools
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 conditionsTools
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 + - itemTools
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 forTest_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 forTest_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
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 atext/html
response. By defaultRender
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
: AddedPartitioned
field toCookie
structThe new
Partitioned
field has been added to theCookie
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 codeIt’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 thePartitioned
flag on cookiesThe 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 inTest_Ctx_extractIPsFromHeader
.The test effectively checks the
IPs
method's ability to parse and return the correct IP address from a complexX-Forwarded-For
header string containing various delimiters and invalid entries.
Line range hint
2601-2608
: Approved test logic inTest_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 theX-Forwarded-For
header.
There was a problem hiding this 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
There was a problem hiding this 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
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 atext/html
response. By defaultRender
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 thePartitioned
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 trackingTools
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
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
There was a problem hiding this 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
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 atext/html
response. By defaultRender
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)
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
Description
Add support for partitioned cookies.
Fixes #3002
Changes introduced
Type of change
Checklist
/docs/
directory for Fiber's documentation.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