> ## Documentation Index
> Fetch the complete documentation index at: https://docs.comfy.org/llms.txt
> Use this file to discover all available pages before exploring further.

# フロントエンド拡張機能のリンク登録マイグレーション

> addFloatingLink が undefined を返す場合、ストアに支えられた graph.links ビュー、ComfyUI フロントエンド拡張機能でのリンク ID の衝突への対処。

`LinkNetwork.addFloatingLink(link)` は `LLink | undefined` を返すようになりました。

新しい実行時リンクでは、未割り当てのリンク ID を渡し、返されたリンクを使用します。

```ts theme={null}
const registeredLink = graph.addFloatingLink(link)
if (!registeredLink) return
```

登録が成功した場合、または同じリンクがすでにトポロジストアに存在する場合、登録は保存済みのリンクを返します。別の実行時リンクがすでにその ID を所有している場合、登録はエラーをログに記録し、渡されたリンクを未接続のままにして `undefined` を返します。稼働中のリンクを暗黙に置き換えたり、渡されたリンクに別の ID を割り当てたりはしません。`graph.floatingLinks` は片端リンクのためのフィルタ済み互換ビューのままです。

`graph.links` と `graph.floatingLinks` は、独立したネイティブの `Map` ストレージではなく、所有者でフィルタされたストアに支えられた互換ビューです。通常の `Map` 読み取りメソッドはキャッシュされたメンバーシップスナップショットを使用します。トポロジのメンバーが変わった後は、既存のイテレーターを保持せず、新しいイテレーターを取得してください。どちらのビューも有効な Pinia を必要とし、ストアがない状態を空のグラフとしては表さなくなりました。

ネイティブの `Map.set()` と同様に、`view.set(id, link)` は登録結果ではなくビューを返します。登録は既存のリンクを保持したまま ID の衝突やターゲットの衝突を拒否することがあるため、ビュー経由で挿入する拡張機能は `view.get(link.id) === link` で成功を確認してください。同じビュー内のリンクと ID が衝突した後は、`has()` は `true` を返し、`get()` は既存のリンクを返します。その操作をカバーできる場合はグラフ接続 API とフローティングリンク API を優先してください。これらの API は周辺のライフサイクルを調整するためです。どちらのビューに対しても `Map.prototype` のメソッドを直接呼び出したり、ネイティブ `Map` の内部ストレージに依存したりしないでください。

入力の置き換えは、古いリンクの切断コールバックより前に新しいリンクをコミットするため、コールバックからの問い合わせは空の入力ではなく置き換え後のリンクを参照します。通常の接続コールバックはその後に続きます。

以前に戻り値を無視していた拡張機能は、渡されたリンクを保持、描画、変更する前に `undefined` を処理してください。新しい実行時リンクに正のリンク ID をあらかじめ指定せず、グラフに生成させてください。

永続化された ID の衝突修復は、ワークフローのインポートとデシリアライズの責務です。シリアライズされたトポロジをインポートする拡張機能は、実行時登録 API を使う前にその境界で競合する ID を正規化してください。

ルートの `LGraph` を構築する場合、またはシリアライズされたデータから設定する場合は、グラフのトポロジがライフサイクル全体を通じてストアに支えられているため、有効な Pinia が必要です。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.