zudo-panel-designer docs
GitHub リポジトリ

検索したい単語を入力

いつでも検索バーを開ける

防御的パース

parsePanelConfig()packages/core/src/serialize.ts)は任意 JSON を修復する、 例外を投げない全域的な境界です。tryParsePanelConfig() はインポート/ オートセーブ用のより厳密な入口で、先に app: "zpd"、1〜5 の整数 version、 layers 配列を要求し、その後フィールド修復を parsePanelConfig() へ 委譲します。

トップレベルの修復

Input結果
プレーンオブジェクトでない完全な createDefaultDoc() の固定スタックスターター。
layers が欠落/非配列のオブジェクト子が空の正規 3 コンテナスタック。
guides が欠落/非配列[]
hp が欠落、不正、非正数DEFAULT_PANEL_HPMAX_PANEL_HP 超過は上限へクランプ。
手編集された panel 寸法や palette派生的な参考出力なので無視。
未知のキー破棄。

parsePanelConfig() は version が欠落/非整数なら修復用に旧 v4 として扱います。 厳密な兄弟関数は、欠落、将来版、未対応 version を拒否します。

固定スタックの正規化

オブジェクト入力は常に、物理的な下から上の同じルートを返します。

  1. Copper

  2. Solder mask

  3. Silkscreen

v1–v4 の自由ルート文書では、通常 leaf/group を旧来の paint によって 分割します。複数マテリアルにまたがる group は、可能な限り通常シェル、 順序、名前、表示状態を保って分割します。fill と stroke が別マテリアルの path はマテリアル別コピーへ分けます。image、paint のない path、空 group は Copper がデフォルトです。

v5 では wrapper の id、ラベル、順序を信頼しません。有効 role は正規ルート へ統合し、欠落 role を合成し、重複 role を結合し、不正 wrapper から回収 できる子は旧方式で分割します。null でないすべてのベクター paint は最終的な 所属コンテナへ正規化されます。固定 wrapper が選択可能な通常 group として 回収されることはありません。

通常ノードと id

parseLayerNode()MAX_GROUP_DEPTH まで再帰する通常の kind: "group" と、5 つの leaf 型を受け付けます。不正/非オブジェクトノード、 未知の型は個別に破棄し、未知フィールドは残しません。

id は通常ツリー全体で決定的に割り当てます。欠落または空の id には type/group に基づく決定的なフォールバックを使い、先行 id または固定ルートとの衝突には 安定した数字サフィックスを付けます。同じ入力を繰り返しパースするとバイト同一 の結果になります。この永続化境界では時刻/乱数ベースの mintId() を呼びません。

共通フィールドの挙動:

Field修復
name文字列でなければ ""
hiddenboolean の場合だけ保持し、それ以外は省略。
有限の geometry/rotation非有限値は、必須かどうかに応じてフォールバックまたは省略。
color、null でない fill/stroke不正 index はいったん 0、その後最終コンテナ所属へ正規化。
path fill/strokenull は無効のまま、非 null は所有マテリアルで有効のまま。
path の点/ハンドル/サブパス不正エントリを個別に破棄。ハンドルは有限な xy が必要。
pattern params有限な数値エントリだけを保持。
pattern geometry不正 size は安全な panel-cover geometry へフォールバックし、MAX_PATTERN_SIZE_MM で上限化。

ガイド

guide は有効な horizontal/vertical orientation と有限な position を持つ場合だけ 残ります。欠落 id は 1 始まりの決定的な guide-${sourceIndex + 1} を使い、 明示/生成 id の衝突はすべて安定したサフィックスで修復します。hidden は boolean の場合だけ保持します。1 つの不正 guide が他を破棄することはありません。

2 つの入口がある理由

  • parsePanelConfig() は信頼済み移行と低レベル修復向けで、必ず安全な DocState を返します。

  • tryParsePanelConfig() はランダム JSON、別アプリ、将来形式をインポート UI やオートセーブが黙って受け入れるのを防ぎます。 ラウンドトリップ → インポートを参照してください。

修復結果は PanelConfig JSON であり、Gerber データではありません。Gerber ファイルは別系統の、アートワークのみの .zip エクスポートが、このファイル ではなくメモリ上のドキュメントから書き出します。