reactjs / reactjs/react-docgen
Cannot parse Flow $Shape
オープン
まだ誰も着手していません。
flow
help wanted
improvement
- 主要言語
- TypeScript
- スター
- 3.8k
- フォーク
- 316
- 平均マージ
- 5時間 7分
- マージ済み PR(30日)
- 4
説明
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)"
}
}
}
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
提供された components/Label.js の例で失敗を再現し、react-docgen の Flow パースのエントリポイントを調査します。issue ではソースファイルもテストも指定されていません。$Shape でラップされた props をパースし、ラップされていない型について示される props メタデータを返し、この例のカバレッジを追加できれば完了です。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- javascript
- 領域
- documentation, tooling
- issue の種類
- バグ
- 難易度
- 3/5
- 見積もり時間
- 1〜2日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 45/100