公開済みSDLを旧版に置く
古いスキーマから新しいスキーマへの変更を判定します。左右を交換すると同じ二つの文書でも削除と追加が逆になり、リスク分類も再計算されます。
GraphQL文書
公開中の完全なSDLを左、新しい完全なSDLを右に入力してください。比較の向きで削除と追加の意味が変わります。
完全なスキーマSDLを2つ入力するか、サンプルを読み込んでください。
2つのSDLはこのブラウザー内だけで解析します。APIへの送信、アップロード、履歴保存、URLへの入力追加は行いません。
破壊的変更と潜在的な危険はGraphQL.jsが判定します。それ以外の構造変更と非推奨の変更は別に表示し、安全とは断定しません。
SDLは各100,000文字、20,000トークン、ネスト100段まで。比較は8秒で停止します。
完全なスキーマSDLを2つ入力するか、サンプルを読み込んでください。
GraphQLスキーマ差分は、プルリクエストでSDLの並びや空白が大きく変わったときに役立ちます。文字の違いではなく、既存のクエリが依存する型、フィールド、引数の契約を追えます。 GraphQLスキーマ比較でも、基準は文字列ではなく型の意味です。
構造変更と互換性の判定は同じものではありません。GraphQL.jsが破壊的変更として挙げなかった新規フィールドや非推奨の印も記録し、レビューで見落とさないようにします。
SDLの見た目ではなく、API契約の変化を見るための比較です。
GraphQLスキーマ差分はSDLを解析してから型・フィールド・引数のパスを比較します。並び替えやインデントは差分にならず、削除されたフィールドはその名前と旧値が明示されます。
enum値の追加は潜在的な危険として扱われます。一方、@deprecatedを付けても既存のフィールドはまだ使えます。GraphQLスキーマ差分はこの印と新しいフィールドを別々に残し、未判定を安全と言い換えません。
古いスキーマから新しいスキーマへの変更を判定します。左右を交換すると同じ二つの文書でも削除と追加が逆になり、リスク分類も再計算されます。
標準では入力が約350ミリ秒止まると比較します。長いSDLを貼り付ける間は自動を切り、比較ボタンまたはCtrl/Cmd+Enterで現在の二つだけを処理できます。
入力を編集すると前回の結果は古くなり、コピーと保存は使えません。旧版・新版のどちらで失敗したかと行列を確認して再実行してください。表示は100件ずつでも、保存するレポートには全件が入ります。
型、フィールド、引数、入力型、enum、union、ディレクティブを比較します。空白や定義順の差はAPIの変更として数えません。
破壊的変更と潜在的な危険にはGraphQL.jsの規則を用い、その識別コードも表示します。その他の構造変更は「安全」と断定せず残します。 互換性チェックの根拠を辿れます。GraphQL Inspectorのような外部CI設定は不要です。
@deprecatedの追加や理由の変更を独立して表示します。非推奨になったフィールドを後で削除すれば破壊的変更のままです。
Mutationの必須引数をnull許容にすると受け付ける入力が広がるため、GraphQL.jsは通常その方向を破壊的変更としません。逆に必須へ狭めると古い呼び出しが失敗し得ます。
enum値の追加はクエリ検証を直ちに壊さなくても、全値を列挙しているクライアントには想定外です。そのため潜在的な危険として扱います。
二つのSDLから改名の意図は分かりません。GraphQLスキーマ差分は旧型の削除と新型の追加を別々に示します。移行期間を設けるかどうかはAPI側で決めてください。
Mutationはルート型のフィールドなので@deprecatedを付けられます。印を付けても古い操作は残り、後日の実際の削除は標準規則では破壊的変更です。
戻り値を非nullからnull許容にするとクライアントの型の前提が変わるため、GraphQL.jsは破壊的と判定します。逆方向でもresolverが本当にnullを返さないかは別途試験が必要です。
期待と違う結果になりましたか?