tanstack-query-generator
Design of the ejected Redocly `tanstack-query` client generator. Read it, and update it, before changing generators/tanstack-query/.
来源信息
- 仓库
- Redocly/redocly-cli
- 最近来源活动
- 2026年8月25日 15:47
- 检测到的 SKILL.md 语言
- 英语
- 星标
- 1,519
- 分支
- 228
安装方式
默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。
检查来源文件
决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。
正在显示 SKILL.md
SKILL.md
来源说明 · 只读预览- name
- tanstack-query-generator
- description
- Design of the ejected Redocly `tanstack-query` client generator. Read it, and update it, before changing generators/tanstack-query/.
# The `tanstack-query` generator — its skill
This file is the DESIGN of your ejected `tanstack-query` generator (`generators/tanstack-query/`):
**to change the generator, edit this skill first, then make the code match it** — a diff
to `generators/tanstack-query/` that has no covering sentence here is incomplete.
## What it emits
Query/mutation option factories for TanStack Query — `<op>Options()`,
`<op>Mutation()`, and `<op>InfiniteOptions()` for paginated operations — plus exported
query keys. One generator, four framework variants (`react` default, `-vue`,
`-svelte`, `-solid`) differing only in the imported package.
## Design decisions that must hold
- **Options factories, not hooks:** consumers call `useQuery(<op>Options(...))`, so the
output works with any of the framework adapters and stays testable.
- **`queryKeyPrefix`** namespaces every key when several clients share a cache.
- **Infinite queries** derive `getNextPageParam` from the resolved pagination rule; a
`link`-style rule reads the `Link` header the descriptor declares.
- **`envelope` is excluded and stripped** — cached data is the plain body.
- Requires `typescript`; throw-mode only (it wraps thrown errors into query errors).
## The stage files
`render.ts` holds the whole factory renderer; `index.ts` is the entry (the framework is
its one argument). The wrappable-operation policy and the sdk calling convention come
from the typescript generator's published contract
(`@redocly/client-generator/contracts/typescript`); the resolved pagination arrives from
the pipeline on the generator input.
## Ejecting it
`redocly eject-generator tanstack-query` copies this generator's TypeScript source folder
to `generators/tanstack-query/`, exactly as we wrote it, importing
`@redocly/client-generator`, `@redocly/client-generator/printers/typescript`, and
`@redocly/client-generator/contracts/typescript`. Running a `.ts` generator uses Node's
type stripping (Node 22.18, 23.6, or newer); newer built-in versions merge in per file
with `--update`. The framework is a single argument in the ejected `index.ts` default
export (`tanstackQueryGenerator('react')`), so switch it to `'vue'`, `'svelte'`, or
`'solid'` there instead of ejecting four near-identical copies.
## The modify loop
1. Edit this skill: state the new behavior or decision.
2. Make `generators/tanstack-query/` match it.
3. Run `redocly generate-client` and inspect the `git diff` of the generated output —
generated files are never hand-edited.
Newer built-in versions merge in with `redocly eject-generator tanstack-query --update`.
在 GitHub 查看