Cannot parse Flow $Shape
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 45/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- javascript
- Domain
- documentation, tooling
Research direction
Reproduce the failure with the provided components/Label.js example and inspect react-docgen's Flow parsing entry points; no source file or test is named in the issue. Done means parsing the $Shape-wrapped props and returning the props metadata shown for the unwrapped type, with coverage for this example.
Written by the indexing model from the issue text.
Description
I don't know whether this applies to all Flow utility types in general, but React makes extensive use of $Shape (and so do we!) - react-docgen (3.0.0-rc.1) seems to fail at parsing this.
Example component props:
// components/Label.js
type Props = $Shape<{
/** Content to place inside .ui.label element */
children?: React.Node,
/** Classes for .ui.label element */
classes?: string,
/** Type of the label (icon, favicon, image, notification, state) */
type?: 'icon' | 'favicon' | 'image' | 'notification' | 'state',
/** Tooltip (data-content, data-position, data-delay) */
tooltip?: Tooltip
}>;
With $Shape:
{
"displayName": "Label",
"methods": []
}
Without $Shape:
{
"displayName": "Label",
"methods": [],
"props": {
"children": {
"required": false,
"flowType": {
"name": "ReactNode",
"raw": "React.Node"
},
"description": "Content to place inside .ui.label element"
},
"classes": {
"required": false,
"flowType": {
"name": "string"
},
"description": "Classes for .ui.label element"
},
"type": {
"required": false,
"flowType": {
"name": "union",
"raw": "'icon' | 'favicon' | 'image' | 'notification' | 'state'",
"elements": [
{
"name": "literal",
"value": "'icon'"
},
{
"name": "literal",
"value": "'favicon'"
},
{
"name": "literal",
"value": "'image'"
},
{
"name": "literal",
"value": "'notification'"
},
{
"name": "literal",
"value": "'state'"
}
]
},
"description": "Type of the label (icon, favicon, image, notification, state)"
},
"tooltip": {
"required": false,
"flowType": {
"name": "Tooltip"
},
"description": "Tooltip (data-content, data-position, data-delay)"
}
}
}
- Dominant language
- TypeScript
- Stars
- 3.8k
- Forks
- 316
- Avg merge
- 3h 28m
- Merged PRs (30d)
- 6
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from reactjs/react-docgen
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
reactjs/react-docgen#1102 ·
-
Typescript Status Open
Difficulty 5/5 Over a week Newbie friendliness 20/100
reactjs/react-docgen#1005 · 4 reactions ·
-
Difficulty 3/5 1-2 days Newbie friendliness 48/100
reactjs/react-docgen#997 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 42/100
reactjs/react-docgen#994 · 1 comment ·
-
Difficulty 4/5 3-5 days Newbie friendliness 25/100
reactjs/react-docgen#982 · 2 comments ·
All issues in reactjs/react-docgen
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
copse-dev/agent-pane#2953 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
Eynzof/Hermes-CN-Desktop#610 ·
-
bug clawsweeper:linked-pr-open clawsweeper:needs-live-repro clawsweeper:no-new-fix-pr impact:message-loss issue-rating: 🐚 platinum hermit P2 regression
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
calcite-components needs triage refactor
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
Esri/calcite-design-system#15203 ·