feat(tanstack-query): .queryKey, .streamedKey, .infiniteKey, .mutationKey#625
feat(tanstack-query): .queryKey, .streamedKey, .infiniteKey, .mutationKey#625
.queryKey, .streamedKey, .infiniteKey, .mutationKey#625Conversation
|
The latest updates on your projects. Learn more about Vercel for Git ↗︎
|
WalkthroughThis change introduces explicit key generation methods to the Tanstack Query integration, including Changes
Sequence Diagram(s)sequenceDiagram
participant User
participant ProcedureUtils
participant QueryClient
User->>ProcedureUtils: .queryKey(options)
ProcedureUtils->>ProcedureUtils: generateOperationKey(path, input)
ProcedureUtils-->>User: DataTag (query key)
User->>QueryClient: getQueryData(DataTag)
QueryClient-->>User: Output (typed result)
Assessment against linked issues
Assessment against linked issues: Out-of-scope changesNo out-of-scope changes detected. Poem
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (1)
🧰 Additional context used🧬 Code Graph Analysis (1)packages/tanstack-query/src/procedure-utils.test-d.ts (3)
⏰ Context from checks skipped due to timeout of 90000ms (3)
🔇 Additional comments (9)
✨ Finishing Touches
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. 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 using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Hello @unnoq, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!
Summary of Changes
Hello! gemini-code-assist here, providing a summary of this pull request. This PR introduces dedicated helper methods for generating TanStack Query keys within the oRPC TanStack Query integration. Previously, only a generic .key method existed, which was primarily intended for partial matching scenarios like invalidation. This change adds .queryKey, .streamedKey, .infiniteKey, and .mutationKey to provide type-safe, full-matching keys specifically tailored for each query/mutation type, addressing issues #620 and #517. The changes include updates to the core utility function, comprehensive type definition tests, runtime tests, and documentation.
Highlights
- New Key Generation Methods: Introduced
.queryKey,.streamedKey,.infiniteKey, and.mutationKeyhelpers on the procedure utils for generating type-safe, full-matching keys for their respective TanStack Query operations. - Documentation Update: The documentation for the TanStack Query integration has been updated to explain the difference between the existing
.key(partial matching) and the new specific key methods (full matching) and provides an example using.queryKey. - Improved Type Safety: Extensive TypeScript definition tests (
.test-d.ts) have been added to ensure the new key methods correctly handle optional/required inputs, infer types, supportskipToken, allow key overrides, and provide correct typing forgetQueryState. - Internal Usage Update: The existing
.queryOptions,.streamedOptions,.infiniteOptions, and.mutationOptionsmethods have been updated internally to utilize these new dedicated key generation helpers.
Changelog
Click here to see the changelog
- apps/content/docs/integrations/tanstack-query.md
- Updated documentation to differentiate between
.key(partial matching) and the new specific key methods (.queryKey, etc.) for full matching (lines 140-146). - Added an example demonstrating the use of
.queryKeywithqueryClient.setQueryData(lines 165-169).
- Updated documentation to differentiate between
- packages/tanstack-query/src/procedure-utils.test-d.ts
- Added
QueryClientimport and instantiation for testinggetQueryState(lines 6, 13). - Added comprehensive type definition tests for
.queryKeycovering input handling, type inference,skipToken, key override, andgetQueryStatetyping (lines 44-91). - Added comprehensive type definition tests for
.experimental_streamedKeycovering input handling, type inference,skipToken, key override, andgetQueryStatetyping (lines 162-215). - Added comprehensive type definition tests for
.infiniteKeycovering input handling, type inference,skipToken,pageParaminference/conflicts, key override, andgetQueryStatetyping (lines 289-384). - Added type definition tests for
.mutationKeycovering optional arguments, key override, and return type (lines 537-554).
- Added
- packages/tanstack-query/src/procedure-utils.test.ts
- Added runtime tests for
.queryKeyverifyinggenerateOperationKeycalls and key override (lines 33-39). - Added runtime tests for
.experimental_streamedKeyverifyinggenerateOperationKeycalls and key override (lines 78-84). - Added runtime tests for
.infiniteKeyverifyinggenerateOperationKeycalls and key override (lines 166-172). - Added runtime tests for
.mutationKeyverifyinggenerateOperationKeycalls and key override (lines 237-243).
- Added runtime tests for
- packages/tanstack-query/src/procedure-utils.ts
- Imported
DataTagandQueryKeytypes (line 3). - Imported new key options types
experimental_StreamedKeyOptionsandQueryKeyOptions(lines 5, 12). - Added
queryKeymethod implementation, callinggenerateOperationKeywith type 'query' (lines 126-130). - Updated
queryOptionsto use the newutils.queryKeymethod (line 133). - Added
experimental_streamedKeymethod implementation, callinggenerateOperationKeywith type 'streamed' (lines 158-161). - Updated
experimental_streamedOptionsto use the newutils.experimental_streamedKeymethod (line 165). - Added
infiniteKeymethod implementation, callinggenerateOperationKeywith type 'infinite' (lines 199-205). - Updated
infiniteOptionsto use the newutils.infiniteKeymethod (line 209). - Added
mutationKeymethod implementation, callinggenerateOperationKeywith type 'mutation' (lines 234-238). - Updated
mutationOptionsto use the newutils.mutationKeymethod (line 241). - Assigned the created utils object to a variable before returning (lines 123, 259).
- Imported
- packages/tanstack-query/src/types.ts
- Defined new type
QueryKeyOptionsfor options accepted by key generation methods (lines 37-40). - Updated
QueryOptionsInto extendQueryKeyOptionsand useOmitforqueryKey(lines 41-44). - Defined new type
experimental_StreamedKeyOptionsextendingQueryKeyOptions(lines 54-56).
- Defined new type
- packages/tanstack-query/tests/e2e.test-d.ts
- Added type tests for
.queryKeycheckinggetQueryStatedata and error types (lines 22-29). - Added type tests for
.streamedKeycheckinggetQueryStatedata and error types (lines 182-189). - Added type tests for
.infiniteKeycheckinggetQueryStatedata and error types (lines 342-349).
- Added type tests for
- packages/tanstack-query/tests/e2e.test.tsx
- Updated
getQueryDatacall in theuseQuerytest to use.queryKeyinstead of.key(line 37). - Updated
getQueryDatacall in thestreamed/useQuerytest to use.experimental_streamedKeyinstead of.key(line 90). - Updated
getQueryDatacall in theuseInfiniteQuerytest to use.infiniteKeyinstead of.key(line 153).
- Updated
Using Gemini Code Assist
The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.
Invoking Gemini
You can request assistance from Gemini at any point in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.
| Feature | Command | Description |
|---|---|---|
| Code Review | /gemini review |
Performs a code review for the current pull request in its current state. |
| Pull Request Summary | /gemini summary |
Provides a summary of the current pull request in its current state. |
| Comment | @gemini-code-assist | Responds in comments when explicitly tagged, both in issue comments and review comments. |
| Help | /gemini help |
Displays a list of available commands. |
Customization
To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.
Limitations & Feedback
Gemini Code Assist is currently in preview and may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments to provide feedback.
You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.
Footnotes
-
Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution. ↩
Codecov ReportAll modified and coverable lines are covered by tests ✅ 📢 Thoughts on this report? Let us know! |
There was a problem hiding this comment.
Code Review
This pull request introduces dedicated helper methods (.queryKey, .streamedKey, .infiniteKey, .mutationKey) for generating full matching keys in the TanStack Query integration. This is a valuable addition that improves clarity over the existing .key method (now designated for partial matching) and directly addresses the need for exact key matching for operations like setQueryData.
The changes are well-implemented across documentation, type definitions, and tests. The new methods are clearly defined, and the existing options methods (.queryOptions, etc.) have been refactored to use these new key generation utilities, which is a nice touch for consistency.
Overall, this is a solid enhancement. I have one suggestion regarding a type assertion that could be more precise.
Summary of Findings
- Type Assertion Precision: In
packages/tanstack-query/src/procedure-utils.ts, theinfiniteKeymethod usesas anyfor its return value. While functionally likely correct due to the interface definition, a more precise cast to the expectedDataTagtype would improve type safety and explicitness within the implementation. - Documentation Update: The documentation in
apps/content/docs/integrations/tanstack-query.mdhas been effectively updated to reflect the new key generation methods and clarify the distinction between partial and full matching keys. The examples are clear. - Test Coverage: Comprehensive type definition tests (
.test-d.ts) and runtime tests (.test.ts,.test.tsx) have been added for the new key methods, covering various scenarios including input handling,skipToken, and type inference. This ensures the reliability of the new features. - Code Refactoring: The existing
*Optionsmethods (e.g.,queryOptions) have been refactored to use the new dedicated key generation methods (e.g.,queryKey). This improves internal consistency and maintainability.
Merge Readiness
This pull request significantly improves the TanStack Query integration by providing clearer and more explicit ways to generate query keys. The code is well-structured, thoroughly tested, and the documentation is updated accordingly.
There is one medium-severity suggestion regarding a type assertion in procedure-utils.ts. Addressing this would enhance the internal type precision.
I am unable to approve pull requests directly. However, once the suggested change is considered or addressed, I believe this PR will be in excellent shape for merging after review and approval from authorized maintainers.
More templates
@orpc/arktype
@orpc/client
@orpc/contract
@orpc/hey-api
@orpc/nest
@orpc/openapi
@orpc/openapi-client
@orpc/react
@orpc/react-query
@orpc/server
@orpc/shared
@orpc/solid-query
@orpc/standard-server
@orpc/standard-server-aws-lambda
@orpc/standard-server-fetch
@orpc/standard-server-node
@orpc/standard-server-peer
@orpc/svelte-query
@orpc/tanstack-query
@orpc/valibot
@orpc/vue-colada
@orpc/vue-query
@orpc/zod
commit: |
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (6)
apps/content/docs/integrations/tanstack-query.md (1)
142-142: Fix grammatical issue in documentation.The word "action" should be plural "actions" to match the context.
-- `.key`: Generate a **partial matching** key for action like revalidating queries, checking mutation status, etc. +- `.key`: Generate a **partial matching** key for actions like revalidating queries, checking mutation status, etc.🧰 Tools
🪛 LanguageTool
[uncategorized] ~142-~142: Loose punctuation mark.
Context: ...eys for queries and mutations: -.key: Generate a partial matching key for...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~142-~142: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...Generate a partial matching key for action like revalidating queries, checking mut...(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)
packages/tanstack-query/src/procedure-utils.test-d.ts (1)
289-385: Comprehensive infinite key tests with minor improvement opportunity.The tests excellently cover pageParam type inference and initial page parameter typing. However, consider removing the unnecessary type cast on line 378.
- const state = queryClient.getQueryState(optionalUtils.infiniteKey({ - input: () => ({}), - initialPageParam, - })) + const infiniteKey = optionalUtils.infiniteKey({ + input: () => ({}), + initialPageParam, + }) + const state = queryClient.getQueryState(infiniteKey)packages/tanstack-query/src/procedure-utils.ts (4)
34-41: Add documentation link for.queryKeymethod.The JSDoc comment is missing the documentation link that other methods have. Consider adding it for consistency.
/** * Generate the key used for query options + * + * @see {@link https://orpc.unnoq.com/docs/integrations/tanstack-query#query-key Tanstack Query Key Docs} */
54-61: Add documentation link for experimental streamed key method./** * Generate the key used for streamed options + * + * @see {@link https://orpc.unnoq.com/docs/integrations/tanstack-query#streamed-key Tanstack Streamed Key Docs} */
75-83: Add documentation link for infinite key method./** * Generate the key used for infinite options + * + * @see {@link https://orpc.unnoq.com/docs/integrations/tanstack-query#infinite-key Tanstack Infinite Key Docs} */
94-102: Add documentation link for mutation key method./** * Generate the key used for mutation options + * + * @see {@link https://orpc.unnoq.com/docs/integrations/tanstack-query#mutation-key Tanstack Mutation Key Docs} */
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (7)
apps/content/docs/integrations/tanstack-query.md(2 hunks)packages/tanstack-query/src/procedure-utils.test-d.ts(5 hunks)packages/tanstack-query/src/procedure-utils.test.ts(4 hunks)packages/tanstack-query/src/procedure-utils.ts(7 hunks)packages/tanstack-query/src/types.ts(2 hunks)packages/tanstack-query/tests/e2e.test-d.ts(3 hunks)packages/tanstack-query/tests/e2e.test.tsx(3 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (4)
packages/tanstack-query/tests/e2e.test.tsx (1)
packages/tanstack-query/tests/shared.tsx (3)
queryClient(8-14)orpc(5-5)streamedOrpc(6-6)
packages/tanstack-query/tests/e2e.test-d.ts (1)
packages/tanstack-query/tests/shared.tsx (3)
queryClient(8-14)orpc(5-5)streamedOrpc(6-6)
packages/tanstack-query/src/types.ts (4)
packages/react-query/src/types.ts (1)
QueryOptionsIn(5-8)packages/solid-query/src/types.ts (1)
QueryOptionsIn(13-16)packages/svelte-query/src/types.ts (1)
QueryOptionsIn(13-16)packages/vue-query/src/types.ts (1)
QueryOptionsIn(18-29)
packages/tanstack-query/src/procedure-utils.test-d.ts (3)
packages/contract/src/error.ts (1)
ErrorFromErrorMap(49-49)packages/contract/tests/shared.ts (1)
baseErrorMap(12-17)packages/tanstack-query/tests/shared.tsx (1)
queryClient(8-14)
🪛 LanguageTool
apps/content/docs/integrations/tanstack-query.md
[uncategorized] ~142-~142: Loose punctuation mark.
Context: ...eys for queries and mutations: - .key: Generate a partial matching key for...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~142-~142: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...Generate a partial matching key for action like revalidating queries, checking mut...
(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)
[uncategorized] ~144-~144: Loose punctuation mark.
Context: ...tions](#query-options). - .streamedKey: Generate a full matching key for [S...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~145-~145: Loose punctuation mark.
Context: ...treamed-query-options). - .infiniteKey: Generate a full matching key for [I...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~146-~146: Loose punctuation mark.
Context: ...nfinite-query-options). - .mutationKey: Generate a full matching key for [M...
(UNLIKELY_OPENING_PUNCTUATION)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: publish-commit
- GitHub Check: lint
🔇 Additional comments (20)
packages/tanstack-query/tests/e2e.test.tsx (3)
37-37: LGTM! Correct usage of the new.queryKey()method.The migration from
.key({ input: { input: 123 }, type: 'query' })to.queryKey({ input: { input: 123 } })correctly uses the new specific key generation method, eliminating the need for thetypeparameter.
90-90: LGTM! Proper migration to.experimental_streamedKey()with updated parameter name.The change correctly:
- Uses the new
.experimental_streamedKey()method instead of generic.key()- Renames
fnOptionstoqueryFnOptionsto match the new API signature- Removes the
type: 'streamed'parameter as it's now implicit in the method name
153-153: LGTM! Correct migration to.infiniteKey()with proper parameter transformation.The change correctly:
- Uses the new
.infiniteKey()method instead of generic.key()- Transforms the input parameter from a static object to a function (
input => ({ input }))- Adds the required
initialPageParamparameter- Removes the
type: 'infinite'parameter as it's now implicitapps/content/docs/integrations/tanstack-query.md (2)
140-146: Excellent documentation update explaining the new key generation methods.The updated documentation clearly explains:
- The distinction between partial and full matching keys
- The specific use cases for each method
- The corresponding option types for each method
This provides developers with clear guidance on when to use each key generation method.
🧰 Tools
🪛 LanguageTool
[uncategorized] ~142-~142: Loose punctuation mark.
Context: ...eys for queries and mutations: -.key: Generate a partial matching key for...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~142-~142: The grammatical number of this noun doesn’t look right. Consider replacing it.
Context: ...Generate a partial matching key for action like revalidating queries, checking mut...(AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)
[uncategorized] ~144-~144: Loose punctuation mark.
Context: ...tions](#query-options). -.streamedKey: Generate a full matching key for [S...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~145-~145: Loose punctuation mark.
Context: ...treamed-query-options). -.infiniteKey: Generate a full matching key for [I...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~146-~146: Loose punctuation mark.
Context: ...nfinite-query-options). -.mutationKey: Generate a full matching key for [M...(UNLIKELY_OPENING_PUNCTUATION)
166-169: Great addition showing practical usage of.queryKey()for data updates.The new example demonstrates a common use case where developers need the exact key to update query data, highlighting the value of the full matching key methods.
packages/tanstack-query/src/procedure-utils.test.ts (4)
33-40: Excellent test coverage for.queryKey()method.The test correctly verifies:
- Delegation to
generateOperationKeywith the correct operation type ('query')- Proper parameter passing including input
- Handling of explicit
queryKeyoverride- Call count validation to ensure no extra calls when key is provided
78-85: Comprehensive test for.experimental_streamedKey()method.The test properly validates:
- Delegation with
'streamed'operation type- Correct parameter forwarding
- Key override functionality
- Appropriate mock call counting
166-173: Well-structured test for.infiniteKey()method.The test effectively covers:
- Delegation with
'infinite'operation type- Complex input parameter transformation (function to initial page param)
- Key override behavior
- Mock call verification
237-244: Complete test coverage for.mutationKey()method.The test correctly verifies:
- Delegation with
'mutation'operation type- Handling of no parameters (mutation keys typically don't need input)
- Key override functionality
- Proper call count management
packages/tanstack-query/tests/e2e.test-d.ts (3)
22-30: Excellent type safety validation for.queryKey()method.The test properly verifies:
- Correct data type for standard queries (
{ output: string } | undefined)- Type-safe error handling with
isDefinedError- Proper integration with
queryClient.getQueryState
182-190: Comprehensive type checking for.experimental_streamedKey()method.The test correctly validates:
- Array return type for streamed queries (
{ output: string }[] | undefined)- Error type safety for streamed operations
- Proper QueryClient integration
342-350: Well-designed type test for.infiniteKey()method.The test effectively verifies:
- Correct
InfiniteDatageneric type with proper page and page param types- Error handling type safety
- Complex input function parameter handling
- Integration with QueryClient state management
packages/tanstack-query/src/procedure-utils.test-d.ts (4)
6-6: LGTM! Good test setup for key generation methods.The addition of
QueryClientand its instantiation enables proper testing ofgetQueryStatetype inference with the new key methods.Also applies to: 13-14
44-92: Excellent type test coverage for.queryKeymethod!The tests thoroughly validate:
- Optional vs required input handling
- Type inference and error checking
skipTokencompatibility- Query key overrides
- Return type conformance to
QueryKey- Integration with
QueryClient.getQueryStateThis provides strong type safety guarantees for the new key generation method.
162-216: Well-structured tests for experimental streamed key generation!The tests mirror the
.queryKeytest structure while appropriately handling the additionalqueryFnOptionsparameter specific to streamed queries. Good consistency in using the experimental prefix.
537-555: Clean and appropriate tests for mutation key generation.The simpler test structure correctly reflects that mutation keys don't require input parameters. All essential scenarios are covered.
packages/tanstack-query/src/types.ts (3)
37-40: Well-designed type extraction for key options.The
QueryKeyOptions<TInput>type nicely consolidates the common pattern of conditional input handling and optional query key override, improving code reusability across the new key generation methods.
41-44: Improved type semantics withOmit.Using
Omit<QueryObserverOptions<...>, 'queryKey'>is more semantically correct thanSetOptional<..., 'queryKey'>since the query key is now handled separately throughQueryKeyOptions. This makes the type intention clearer.
54-57: Consistent type extension for streamed queries.The
experimental_StreamedKeyOptionsappropriately extendsQueryKeyOptionswhile adding the streamed-specificqueryFnOptionsparameter.packages/tanstack-query/src/procedure-utils.ts (1)
126-156: Excellent refactoring to centralize key generation!The implementation successfully modularizes key generation by:
- Extracting key generation into dedicated methods
- Having options methods delegate to their corresponding key methods
- Maintaining backward compatibility
- Ensuring consistent key generation across all operation types
This architectural improvement enhances maintainability and reduces code duplication.
Also applies to: 158-197, 199-232, 234-256
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Nitpick comments (1)
apps/content/docs/integrations/tanstack-query.md (1)
165-169: Usage example of.queryKeyis correct
ThesetQueryDatasnippet correctly demonstrates updating cached data with.queryKey. Consider including parallel examples for.streamedKeyand.infiniteKey(and even.mutationKey) to fully illustrate each helper’s usage.
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (3)
apps/content/docs/integrations/tanstack-query.md(2 hunks)packages/tanstack-query/src/general-utils.ts(1 hunks)packages/tanstack-query/src/procedure-utils.ts(7 hunks)
✅ Files skipped from review due to trivial changes (1)
- packages/tanstack-query/src/general-utils.ts
🚧 Files skipped from review as they are similar to previous changes (1)
- packages/tanstack-query/src/procedure-utils.ts
🧰 Additional context used
🪛 LanguageTool
apps/content/docs/integrations/tanstack-query.md
[uncategorized] ~142-~142: Loose punctuation mark.
Context: ...eys for queries and mutations: - .key: Generate a partial matching key for...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~144-~144: Loose punctuation mark.
Context: ...tions](#query-options). - .streamedKey: Generate a full matching key for [S...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~145-~145: Loose punctuation mark.
Context: ...treamed-query-options). - .infiniteKey: Generate a full matching key for [I...
(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~146-~146: Loose punctuation mark.
Context: ...nfinite-query-options). - .mutationKey: Generate a full matching key for [M...
(UNLIKELY_OPENING_PUNCTUATION)
⏰ Context from checks skipped due to timeout of 90000ms (2)
- GitHub Check: publish-commit
- GitHub Check: lint
🔇 Additional comments (1)
apps/content/docs/integrations/tanstack-query.md (1)
140-147: Comprehensive key helper enumeration
The addition of.key,.queryKey,.streamedKey,.infiniteKey, and.mutationKeyaccurately reflects the new API surface and aligns with implementation.🧰 Tools
🪛 LanguageTool
[uncategorized] ~142-~142: Loose punctuation mark.
Context: ...eys for queries and mutations: -.key: Generate a partial matching key for...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~144-~144: Loose punctuation mark.
Context: ...tions](#query-options). -.streamedKey: Generate a full matching key for [S...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~145-~145: Loose punctuation mark.
Context: ...treamed-query-options). -.infiniteKey: Generate a full matching key for [I...(UNLIKELY_OPENING_PUNCTUATION)
[uncategorized] ~146-~146: Loose punctuation mark.
Context: ...nfinite-query-options). -.mutationKey: Generate a full matching key for [M...(UNLIKELY_OPENING_PUNCTUATION)
Fixes #620, #517
Summary by CodeRabbit
New Features
Documentation
Tests
Refactor