haori 0.17.2 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -589,6 +589,15 @@ declare class ElementFragment extends Fragment {
589
589
  * チェーン。同一フラグメントへの並行呼出による適用順の逆転を防ぐ。
590
590
  */
591
591
  private bindingWorkChain;
592
+ /**
593
+ * 実行中のバインドワーク(`Core.setBindingData` の work)の入れ子数。
594
+ * await をまたぐワークの全期間にわたって 0 より大きくなる。`> 0` の間は、
595
+ * このフラグメントのバインドワークが(配下の `data-fetch` 等を)await しながら
596
+ * 実行中であることを表す。マネージド fetch の bind-back が同一フラグメントを
597
+ * 指す場合に、FIFO キューへ積むと自己デッドロックするため、この状態を見て
598
+ * 即時実行(reentrant)へ切り替える判定に使う。
599
+ */
600
+ private bindingWorkActive;
592
601
  /** 生成時点の data-bind 属性の生値(リセット時の初期状態復元用) */
593
602
  private readonly initialBindAttribute;
594
603
  /** 子孫要素へ公開する派生バインドデータ */
@@ -739,12 +748,29 @@ declare class ElementFragment extends Fragment {
739
748
  * フラグでの「再入即時実行」を行っていましたが、await をまたいで届く**独立した
740
749
  * 並行呼出**まで再入扱いしてインライン実行し、`skipMutationAttributes` 中の
741
750
  * `data-bind` 書き込みが破棄されて古い値が後勝ちする競合の原因になっていました。
742
- * 真の再入(data-url-param 等)は呼出側がキューを介さず実行するため、ここでは
743
- * 一律にチェーンへ積みます。
751
+ * 真の再入(`data-url-param` の再評価、マネージド `data-fetch` の同一フラグメント
752
+ * への bind-back)は呼出側が `reentrant=true` でキューを介さず実行するため、
753
+ * ここでは一律にチェーンへ積みます。
744
754
  *
745
755
  * @param work 直列化したいバインドデータ更新処理
746
756
  * @returns work の完了 Promise
747
757
  */
758
+ /**
759
+ * このフラグメントのバインドワークが実行中(await をまたぐ期間を含む)かどうかを
760
+ * 返します。マネージド `data-fetch` の bind-back を reentrant 実行へ切り替えるべきか
761
+ * の判定に使います。
762
+ *
763
+ * @return 実行中なら true
764
+ */
765
+ isExecutingBindingWork(): boolean;
766
+ /**
767
+ * バインドワークの実行開始を記録します(`Core.setBindingData` の work 開始時に呼ぶ)。
768
+ */
769
+ markBindingWorkStart(): void;
770
+ /**
771
+ * バインドワークの実行終了を記録します(work 完了時に呼ぶ)。
772
+ */
773
+ markBindingWorkEnd(): void;
748
774
  enqueueBindingWork(work: () => Promise<void>): Promise<void>;
749
775
  /**
750
776
  * 生成時点の data-bind 属性の生値を取得します。
@@ -1725,7 +1751,7 @@ declare class TextFragment extends Fragment {
1725
1751
  evaluate(): Promise<void>;
1726
1752
  }
1727
1753
 
1728
- export declare const version = "0.17.2";
1754
+ export declare const version = "0.18.0";
1729
1755
 
1730
1756
  /**
1731
1757
  * すべてのレンダリングタスク(追従投入分を含む)の完了を待ちます。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "haori",
3
- "version": "0.17.2",
3
+ "version": "0.18.0",
4
4
  "description": "A lightweight HTML-first UI engine powered by declarative data bindings and expressions.",
5
5
  "scripts": {
6
6
  "dev": "vite",