effectable 1.2.0-canary.1 → 1.2.0-canary.11

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.
Files changed (37) hide show
  1. package/build/component/Component.d.ts +18 -2
  2. package/build/component/Component.d.ts.map +1 -1
  3. package/build/component/Component.js +45 -5
  4. package/build/component/Component.js.map +1 -1
  5. package/build/component/GraphRuntime.d.ts +133 -12
  6. package/build/component/GraphRuntime.d.ts.map +1 -1
  7. package/build/component/GraphRuntime.js +553 -134
  8. package/build/component/GraphRuntime.js.map +1 -1
  9. package/build/component/types.d.ts +12 -0
  10. package/build/component/types.d.ts.map +1 -1
  11. package/build/component/types.js +13 -1
  12. package/build/component/types.js.map +1 -1
  13. package/build/connect/connect.d.ts +20 -1
  14. package/build/connect/connect.d.ts.map +1 -1
  15. package/build/connect/connect.js +596 -69
  16. package/build/connect/connect.js.map +1 -1
  17. package/build/connect/index.d.ts +1 -1
  18. package/build/connect/index.d.ts.map +1 -1
  19. package/build/connect/index.js +2 -1
  20. package/build/connect/index.js.map +1 -1
  21. package/build/runtime/HandleRegistry.d.ts +14 -1
  22. package/build/runtime/HandleRegistry.d.ts.map +1 -1
  23. package/build/runtime/HandleRegistry.js +21 -2
  24. package/build/runtime/HandleRegistry.js.map +1 -1
  25. package/build/store/createStore.d.ts.map +1 -1
  26. package/build/store/createStore.js +39 -5
  27. package/build/store/createStore.js.map +1 -1
  28. package/build/store/middleware.d.ts.map +1 -1
  29. package/build/store/middleware.js +33 -8
  30. package/build/store/middleware.js.map +1 -1
  31. package/build/store/selector.d.ts.map +1 -1
  32. package/build/store/selector.js +9 -1
  33. package/build/store/selector.js.map +1 -1
  34. package/build/store/semanticStateTree.d.ts.map +1 -1
  35. package/build/store/semanticStateTree.js +5 -1
  36. package/build/store/semanticStateTree.js.map +1 -1
  37. package/package.json +1 -1
@@ -5,6 +5,12 @@
5
5
  * Holds `state`, updates it via {@link Component.setState}, and after each update calls
6
6
  * {@link Component.onUpdate}.
7
7
  *
8
+ * **Single writer:** only {@link Component.setState} may change state after construction
9
+ * (triggers `onUpdate` and reconcile schedule). Direct `this.state = …` after init emits
10
+ * `console.warn` and does **not** change `#state`. Constructor init (`super(props, initial)`
11
+ * or `this.state = …` in the constructor body) is allowed without warning. If reconciliation
12
+ * is not needed, use a ref.
13
+ *
8
14
  * **Modes:**
9
15
  * - **Standalone** — `Component` as a lightweight stateful object without GraphRuntime: `setState`
10
16
  * immediately leads to `onUpdate`, with no “only after mount” restriction.
@@ -50,6 +56,7 @@ export type SetStateUpdate<S, P = unknown> = Partial<S> | ((prevState: S, props:
50
56
  * ```
51
57
  */
52
58
  export declare abstract class Component<S = unknown, P = unknown> implements Lifecycle {
59
+ #private;
53
60
  /**
54
61
  * Opt-in flag for HFT components: if `true`, {@link Component.setState} applies
55
62
  * updates **in-place** on the current `this.state` instead of creating a new object via spread.
@@ -66,10 +73,19 @@ export declare abstract class Component<S = unknown, P = unknown> implements Lif
66
73
  * ```
67
74
  */
68
75
  static readonly mutableState: boolean;
69
- /** Current instance state after the last assignment in {@link Component.setState}. */
70
- state: S;
71
76
  /** Instance inputs: filled by GraphRuntime, connect-HOC, or calling code. */
72
77
  props: P;
78
+ /**
79
+ * Current instance state after the last commit in {@link Component.setState}
80
+ * (or constructor init). Read freely; do not assign after construction — use `setState`.
81
+ */
82
+ get state(): S;
83
+ /**
84
+ * Direct assignment after construction is forbidden: emits {@link console.warn} and leaves
85
+ * `#state` unchanged (no write, no `onUpdate`, no reconcile). Prefer {@link Component.setState}.
86
+ * Allowed without warning during construction (`super(props, initial)` or subclass ctor body).
87
+ */
88
+ set state(value: S);
73
89
  /**
74
90
  * @param {P} props Props available in the {@link Component.setState} callback and in the subclass.
75
91
  * @param {S} [initialState] Initial state; if omitted, an empty object is used as `S`.
@@ -1 +1 @@
1
- {"version":3,"file":"Component.d.ts","sourceRoot":"","sources":["../../src/component/Component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGlD;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,IACrC,OAAO,CAAC,CAAC,CAAC,GACV,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,8BAAsB,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CACxD,YAAW,SAAS;IAClB;;;;;;;;;;;;;;OAcG;IACH,gBAAuB,YAAY,EAAE,OAAO,CAAS;IAErD,sFAAsF;IAC/E,KAAK,EAAE,CAAC,CAAC;IAEhB,6EAA6E;IACtE,KAAK,EAAE,CAAC,CAAC;IAEhB;;;OAGG;gBACU,KAAK,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC;IAKvC;;;;;;;;;OASG;IACI,QAAQ,CAAE,MAAM,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;IAoCpD;;;;;;;;;OASG;IACI,QAAQ,CAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAI1C;;;;;;OAMG;IACH,OAAO,CAAC,IAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEjC;;;;;OAKG;IACH,SAAS,CAAC,IAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEnC;;;;;;;;OAQG;IACH,OAAO,CAAC,IAAK,kBAAkB,GAAG,kBAAkB,EAAE,GAAG,IAAI;CAC9D"}
1
+ {"version":3,"file":"Component.d.ts","sourceRoot":"","sources":["../../src/component/Component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGlD;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,OAAO,IACrC,OAAO,CAAC,CAAC,CAAC,GACV,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAQ7C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,8BAAsB,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,CACxD,YAAW,SAAS;;IAClB;;;;;;;;;;;;;;OAcG;IACH,gBAAuB,YAAY,EAAE,OAAO,CAAS;IAWrD,6EAA6E;IACtE,KAAK,EAAE,CAAC,CAAC;IAEhB;;;OAGG;IACH,IAAW,KAAK,IAAK,CAAC,CAErB;IAED;;;;OAIG;IACH,IAAW,KAAK,CAAE,KAAK,EAAE,CAAC,EAMzB;IAED;;;OAGG;gBACU,KAAK,EAAE,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC;IAWvC;;;;;;;;;OASG;IACI,QAAQ,CAAE,MAAM,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI;IAoCpD;;;;;;;;;OASG;IACI,QAAQ,CAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAI1C;;;;;;OAMG;IACH,OAAO,CAAC,IAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEjC;;;;;OAKG;IACH,SAAS,CAAC,IAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEnC;;;;;;;;OAQG;IACH,OAAO,CAAC,IAAK,kBAAkB,GAAG,kBAAkB,EAAE,GAAG,IAAI;CAC9D"}
@@ -6,6 +6,12 @@
6
6
  * Holds `state`, updates it via {@link Component.setState}, and after each update calls
7
7
  * {@link Component.onUpdate}.
8
8
  *
9
+ * **Single writer:** only {@link Component.setState} may change state after construction
10
+ * (triggers `onUpdate` and reconcile schedule). Direct `this.state = …` after init emits
11
+ * `console.warn` and does **not** change `#state`. Constructor init (`super(props, initial)`
12
+ * or `this.state = …` in the constructor body) is allowed without warning. If reconciliation
13
+ * is not needed, use a ref.
14
+ *
9
15
  * **Modes:**
10
16
  * - **Standalone** — `Component` as a lightweight stateful object without GraphRuntime: `setState`
11
17
  * immediately leads to `onUpdate`, with no “only after mount” restriction.
@@ -21,6 +27,10 @@
21
27
  Object.defineProperty(exports, "__esModule", { value: true });
22
28
  exports.Component = void 0;
23
29
  const types_1 = require("./types");
30
+ /** Warn text for forbidden direct `this.state =` after construction. */
31
+ const DIRECT_STATE_ASSIGNMENT_WARN = '[Effectable] Component: direct assignment to `state` is not supported. ' +
32
+ 'Use `setState(...)` so `onUpdate` and reconcile run. ' +
33
+ 'If you do not need reconciliation, store the value in a ref (`@UseRef`) instead of state.';
24
34
  /**
25
35
  * Abstract base class with state and lifecycle.
26
36
  * Implements the {@link Lifecycle} contract: `onMount` → `onUpdate*` → `onUnmount`.
@@ -60,17 +70,47 @@ class Component {
60
70
  * ```
61
71
  */
62
72
  static mutableState = false;
63
- /** Current instance state after the last assignment in {@link Component.setState}. */
64
- state;
73
+ /** Backing store for {@link Component.state}. Written only by init, setter, or {@link Component.setState}. */
74
+ #state;
75
+ /**
76
+ * When `true`, direct `this.state =` does not warn (constructor init window).
77
+ * Closed after the full `new` constructor chain finishes (microtask).
78
+ */
79
+ #allowDirectStateWrite;
65
80
  /** Instance inputs: filled by GraphRuntime, connect-HOC, or calling code. */
66
81
  props;
82
+ /**
83
+ * Current instance state after the last commit in {@link Component.setState}
84
+ * (or constructor init). Read freely; do not assign after construction — use `setState`.
85
+ */
86
+ get state() {
87
+ return this.#state;
88
+ }
89
+ /**
90
+ * Direct assignment after construction is forbidden: emits {@link console.warn} and leaves
91
+ * `#state` unchanged (no write, no `onUpdate`, no reconcile). Prefer {@link Component.setState}.
92
+ * Allowed without warning during construction (`super(props, initial)` or subclass ctor body).
93
+ */
94
+ set state(value) {
95
+ if (!this.#allowDirectStateWrite) {
96
+ console.warn(DIRECT_STATE_ASSIGNMENT_WARN);
97
+ return;
98
+ }
99
+ this.#state = value;
100
+ }
67
101
  /**
68
102
  * @param {P} props Props available in the {@link Component.setState} callback and in the subclass.
69
103
  * @param {S} [initialState] Initial state; if omitted, an empty object is used as `S`.
70
104
  */
71
105
  constructor(props, initialState) {
72
106
  this.props = props;
73
- this.state = (initialState ?? {});
107
+ this.#allowDirectStateWrite = true;
108
+ this.#state = (initialState ?? {});
109
+ // Subclass constructor bodies run synchronously after `super()` and may assign `this.state`.
110
+ // Close the gate once the full `new` constructor chain has finished.
111
+ queueMicrotask(() => {
112
+ this.#allowDirectStateWrite = false;
113
+ });
74
114
  }
75
115
  /**
76
116
  * Computes the next state as a shallow merge of `prev` with the update object or with the
@@ -83,7 +123,7 @@ class Component {
83
123
  * @returns {void}
84
124
  */
85
125
  setState(update) {
86
- const prev = this.state;
126
+ const prev = this.#state;
87
127
  const delta = typeof update === 'function'
88
128
  ? update(prev, this.props)
89
129
  : update;
@@ -107,7 +147,7 @@ class Component {
107
147
  }
108
148
  // Shallow-copy previous state and delta to avoid mutating the original state
109
149
  const next = { ...prev, ...delta };
110
- this.state = next;
150
+ this.#state = next;
111
151
  // State is already committed: always schedule even if onUpdate throws,
112
152
  // otherwise mounted compose/children stay stale after a successful write.
113
153
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","sourceRoot":"","sources":["../../src/component/Component.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;GAkBG;;;AAIH,mCAA+C;AAa/C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAsB,SAAS;IAE7B;;;;;;;;;;;;;;OAcG;IACI,MAAM,CAAU,YAAY,GAAY,KAAK,CAAC;IAErD,sFAAsF;IAC/E,KAAK,CAAI;IAEhB,6EAA6E;IACtE,KAAK,CAAI;IAEhB;;;OAGG;IACH,YAAa,KAAQ,EAAE,YAAgB;QACrC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,GAAG,CAAC,YAAY,IAAI,EAAE,CAAM,CAAC;IACzC,CAAC;IAED;;;;;;;;;OASG;IACI,QAAQ,CAAE,MAA4B;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,UAAU;YACxC,CAAC,CAAE,MAA4C,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;YACjE,CAAC,CAAC,MAAM,CAAC;QAEX,yEAAyE;QACzE,+DAA+D;QAC/D,IAAK,IAAI,CAAC,WAA0C,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC3E,MAAM,MAAM,GAAG,IAA0C,CAAC;YAC1D,MAAM,GAAG,GAAG,KAA2C,CAAC;YACxD,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;YACD,uEAAuE;YACvE,0EAA0E;YAC1E,IAAI,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC5B,CAAC;oBAAS,CAAC;gBACR,IAA2D,CAAC,4BAAoB,CAAC,EAAE,EAAE,CAAC;YACzF,CAAC;YACD,OAAO;QACT,CAAC;QAED,6EAA6E;QAC7E,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,GAAG,IAAS,CAAC;QACvB,uEAAuE;QACvE,0EAA0E;QAC1E,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;gBAAS,CAAC;YACR,IAA2D,CAAC,4BAAoB,CAAC,EAAE,EAAE,CAAC;QACzF,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACI,QAAQ,CAAE,KAAQ,EAAE,KAAQ;QACjC,kDAAkD;IACpD,CAAC;;AA5FH,8BAyHC"}
1
+ {"version":3,"file":"Component.js","sourceRoot":"","sources":["../../src/component/Component.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;;;AAIH,mCAA+C;AAa/C,wEAAwE;AACxE,MAAM,4BAA4B,GAChC,yEAAyE;IACzE,uDAAuD;IACvD,2FAA2F,CAAC;AAE9F;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAsB,SAAS;IAE7B;;;;;;;;;;;;;;OAcG;IACI,MAAM,CAAU,YAAY,GAAY,KAAK,CAAC;IAErD,8GAA8G;IAC9G,MAAM,CAAI;IAEV;;;OAGG;IACH,sBAAsB,CAAU;IAEhC,6EAA6E;IACtE,KAAK,CAAI;IAEhB;;;OAGG;IACH,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;OAIG;IACH,IAAW,KAAK,CAAE,KAAQ;QACxB,IAAI,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACjC,OAAO,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,YAAa,KAAQ,EAAE,YAAgB;QACrC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,CAAC,YAAY,IAAI,EAAE,CAAM,CAAC;QACxC,6FAA6F;QAC7F,qEAAqE;QACrE,cAAc,CAAC,GAAG,EAAE;YAClB,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;OASG;IACI,QAAQ,CAAE,MAA4B;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,MAAM,KAAK,GAAG,OAAO,MAAM,KAAK,UAAU;YACxC,CAAC,CAAE,MAA4C,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;YACjE,CAAC,CAAC,MAAM,CAAC;QAEX,yEAAyE;QACzE,+DAA+D;QAC/D,IAAK,IAAI,CAAC,WAA0C,CAAC,YAAY,KAAK,IAAI,EAAE,CAAC;YAC3E,MAAM,MAAM,GAAG,IAA0C,CAAC;YAC1D,MAAM,GAAG,GAAG,KAA2C,CAAC;YACxD,KAAK,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;gBACpB,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC;YACD,uEAAuE;YACvE,0EAA0E;YAC1E,IAAI,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC5B,CAAC;oBAAS,CAAC;gBACR,IAA2D,CAAC,4BAAoB,CAAC,EAAE,EAAE,CAAC;YACzF,CAAC;YACD,OAAO;QACT,CAAC;QAED,6EAA6E;QAC7E,MAAM,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,IAAS,CAAC;QACxB,uEAAuE;QACvE,0EAA0E;QAC1E,IAAI,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5B,CAAC;gBAAS,CAAC;YACR,IAA2D,CAAC,4BAAoB,CAAC,EAAE,EAAE,CAAC;QACzF,CAAC;IACH,CAAC;IAED;;;;;;;;;OASG;IACI,QAAQ,CAAE,KAAQ,EAAE,KAAQ;QACjC,kDAAkD;IACpD,CAAC;;AA7HH,8BA0JC"}
@@ -147,6 +147,12 @@ export declare class GraphRuntime {
147
147
  * unmount() must await this before concluding teardown is finished.
148
148
  */
149
149
  private pendingTeardown;
150
+ /**
151
+ * Imperative ref values bound for owners that expose `@UseImperativeHandle` methods.
152
+ * `commitRef` assigns a limited handle (not the Component instance) into `ref.current`;
153
+ * identity-safe clear must still recognize that handle as owned by the instance.
154
+ */
155
+ private readonly imperativeRefByOwner;
150
156
  /**
151
157
  * Instances are created only via {@link GraphRuntime.mount}; direct `new GraphRuntime()` is unavailable externally.
152
158
  */
@@ -184,9 +190,20 @@ export declare class GraphRuntime {
184
190
  */
185
191
  private disposeEffectableRuntimeBusWiring;
186
192
  /**
187
- * Identity-safe ref clearing: clears ref.current only if it still points to the expected owner.
193
+ * Builds the value assigned to `ref.current` for a mounted instance.
194
+ *
195
+ * When the constructor declares `@UseImperativeHandle` methods, only those methods
196
+ * are exposed (bound to the instance) — matching the refs.ts / CONCEPT contract.
197
+ * Without an allowlist, the full instance is assigned (legacy escape hatch).
198
+ *
199
+ * @param {Component<unknown, unknown>} instance - mounted component instance
200
+ * @returns {unknown} instance or limited imperative handle object
201
+ */
202
+ private resolveRefCurrentValue;
203
+ /**
204
+ * Identity-safe ref clearing: clears ref.current only if it still points to the expected owner
205
+ * (full instance) or the limited imperative handle previously bound for that owner.
188
206
  * Prevents an old rollback from clearing a ref that a newer materialization already reused.
189
- * No cast required (Component | null → unknown | null is assignable).
190
207
  *
191
208
  * @param {RefObject<unknown>} ref - ref object
192
209
  * @param {Component<unknown, unknown>} expectedOwner - expected current owner
@@ -199,12 +216,10 @@ export declare class GraphRuntime {
199
216
  *
200
217
  * Rules:
201
218
  * - Clear previousRef only if it still points to expectedPreviousOwner (identity-safe).
202
- * - Bind nextRef to instance if nextRef is provided.
219
+ * - Bind nextRef to the instance, or to a limited `@UseImperativeHandle` surface when declared.
203
220
  * - previousRef and nextRef can be the same object (ref reuse) or different (ref swap).
204
221
  * - Do not let an old disposer clear a newer owner.
205
222
  *
206
- * No casts: Component | null → unknown | null is assignable (widening).
207
- *
208
223
  * @param {RefObject<unknown> | undefined} previousRef - ref to clear (can be undefined if no previous ref)
209
224
  * @param {Component<unknown, unknown> | null} expectedPreviousOwner - expected owner of previousRef (null if unknown)
210
225
  * @param {RefObject<unknown> | undefined} nextRef - ref to bind to instance (can be undefined if removing ref)
@@ -228,11 +243,16 @@ export declare class GraphRuntime {
228
243
  * Transactional rollback for failed fiber materialization.
229
244
  * Releases acquired resources in reverse acquisition order:
230
245
  * 1. disable scheduler hook
231
- * 2. dispose runtime bus registrations
232
- * 3. clear bound ref (identity-safe)
233
- * 4. run failed-startup cleanup
234
- * 5. destroy mounted children in reverse order
246
+ * 2. destroy mounted children in compose order (same as {@link destroyFiber})
247
+ * 3. run failed-startup cleanup (parent onUnmount when startup ran)
248
+ * 4. dispose runtime bus registrations
249
+ * 5. clear bound ref (identity-safe)
235
250
  * 6. unlink the partial fiber
251
+ *
252
+ * Children must be destroyed before parent bus dispose / ref clear / onUnmount so
253
+ * child onUnmount still sees a live parent ref and parent @On* subscriptions
254
+ * (matches {@link destroyFiber} / {@link runFiberFailedCleanup}).
255
+ *
236
256
  * Cleanup is best-effort: one failure does not skip remaining steps.
237
257
  * Preserves the original materialization error; cleanup errors are attached.
238
258
  * Rollback is idempotent.
@@ -246,7 +266,7 @@ export declare class GraphRuntime {
246
266
  * Async continuation of rollback child destruction after one child's destroy returned a Promise.
247
267
  *
248
268
  * @param {RuntimeFiber<unknown>[]} children - mounted children
249
- * @param {number} lastIdx - index of the last processed child
269
+ * @param {number} pendingIdx - index of the child whose destroy is pending
250
270
  * @param {Promise<void>} pending - Promise from destroying the previous child
251
271
  * @param {Error} primaryError - original materialization error
252
272
  * @param {Error[]} cleanupErrors - accumulated cleanup errors
@@ -257,7 +277,8 @@ export declare class GraphRuntime {
257
277
  private continueRollbackDestroyAsync;
258
278
  /**
259
279
  * After rollback destroyed children: run parent failed-cleanup only when startup
260
- * actually ran (`status !== 'registered'`), then attach cleanup errors and rethrow.
280
+ * actually ran (`status !== 'registered'`), then dispose parent bus + clear parent
281
+ * ref (after children / onUnmount), then attach cleanup errors and rethrow.
261
282
  *
262
283
  * @param {RuntimeFiber<unknown>} fiber - parent fiber being rolled back
263
284
  * @param {Component<unknown, unknown> | null} instance - parent instance
@@ -266,6 +287,15 @@ export declare class GraphRuntime {
266
287
  * @returns {void | Promise<void>} always rejects via {@link finalizeRollback}
267
288
  */
268
289
  private finishRollbackParentCleanup;
290
+ /**
291
+ * Best-effort parent bus dispose + identity-safe ref clear after children (and
292
+ * parent onUnmount when applicable) have finished during materialize rollback.
293
+ *
294
+ * @param {RuntimeFiber<unknown>} fiber - parent fiber being rolled back
295
+ * @param {Error[]} cleanupErrors - accumulated cleanup errors
296
+ * @returns {void}
297
+ */
298
+ private disposeRollbackParentResources;
269
299
  /**
270
300
  * Attaches cleanup errors to the primary error and rethrows.
271
301
  *
@@ -461,6 +491,79 @@ export declare class GraphRuntime {
461
491
  * @returns {FiberInspectNode} node snapshot
462
492
  */
463
493
  private toFiberInspectNode;
494
+ /**
495
+ * Runs deferred {@link LifecycleEngine.runStartup} for a fiber subtree in
496
+ * children→parent order (siblings in compose order).
497
+ *
498
+ * Call only after the subtree (and any later siblings that must observe
499
+ * publishes) have completed bus wiring. Idempotent for fibers that already
500
+ * started.
501
+ *
502
+ * @param {RuntimeFiber<unknown>} fiber - subtree root
503
+ * @returns {void | Promise<void>}
504
+ */
505
+ private flushDeferredLifecycleTree;
506
+ /**
507
+ * Async continuation of {@link flushDeferredLifecycleTree} after a child flush returns a Promise.
508
+ *
509
+ * @param {RuntimeFiber<unknown>} fiber - subtree root
510
+ * @param {RuntimeFiber<unknown>[]} children - child fibers
511
+ * @param {number} pendingIdx - index of the pending child
512
+ * @param {PromiseLike<void>} pending - pending child flush
513
+ * @returns {Promise<void>}
514
+ */
515
+ private continueFlushDeferredLifecycleAsync;
516
+ /**
517
+ * Runs startup + update-hook injection when {@link FiberConstructionJournal.lifecycleDeferred}
518
+ * is set; no-op otherwise.
519
+ *
520
+ * @param {RuntimeFiber<unknown>} fiber - fiber to start
521
+ * @returns {void | Promise<void>}
522
+ */
523
+ private runDeferredLifecycleIfNeeded;
524
+ /**
525
+ * Async path for {@link runDeferredLifecycleIfNeeded} when startup returns a Promise.
526
+ *
527
+ * @param {RuntimeFiber<unknown>} fiber - fiber being started
528
+ * @param {PromiseLike<import('./lifecycle').LifecycleTransitionResult>} pendingStartup - pending startup
529
+ * @returns {Promise<void>}
530
+ */
531
+ private finalizeDeferredLifecycleAsync;
532
+ /**
533
+ * After bus wiring: either defer lifecycle (sibling/parent batching) or flush
534
+ * deferred children and run this fiber's startup.
535
+ *
536
+ * @template P node props type
537
+ * @param {RuntimeFiber<P>} fiber - fiber that just finished wiring
538
+ * @param {Component<unknown, P>} instance - component instance
539
+ * @param {LifecycleEngine} engine - lifecycle engine
540
+ * @param {boolean} deferLifecycle - when true, skip startup until a parent flush
541
+ * @returns {RuntimeFiber<P> | Promise<RuntimeFiber<P>>}
542
+ */
543
+ private completeMaterializeAfterWiring;
544
+ /**
545
+ * Async continuation after a deferred child flush during materialize completion.
546
+ *
547
+ * @template P node props type
548
+ * @param {RuntimeFiber<P>} fiber - parent fiber
549
+ * @param {Component<unknown, P>} instance - parent instance
550
+ * @param {LifecycleEngine} engine - parent engine
551
+ * @param {RuntimeFiber<unknown>[]} children - child fibers
552
+ * @param {number} pendingIdx - pending child index
553
+ * @param {PromiseLike<void>} pending - pending flush
554
+ * @returns {Promise<RuntimeFiber<P>>}
555
+ */
556
+ private continueCompleteMaterializeAfterWiringAsync;
557
+ /**
558
+ * Runs startup for a fiber that is completing materialize (not deferred).
559
+ *
560
+ * @template P node props type
561
+ * @param {RuntimeFiber<P>} fiber - fiber
562
+ * @param {Component<unknown, P>} instance - instance
563
+ * @param {LifecycleEngine} engine - engine
564
+ * @returns {RuntimeFiber<P> | Promise<RuntimeFiber<P>>}
565
+ */
566
+ private runMaterializeStartup;
464
567
  /**
465
568
  * Creates a RuntimeFiber for a virtual node: instantiates the component,
466
569
  * injects contexts, builds the child scope (for ContextProvider),
@@ -473,12 +576,14 @@ export declare class GraphRuntime {
473
576
  * @param {VirtualServiceNode<P>} vnode - virtual node
474
577
  * @param {RuntimeFiber | null} parentFiber - parent fiber
475
578
  * @param {ContextScope} parentScope - parent scope
579
+ * @param {boolean} [deferLifecycle=false] - when true, wire buses but defer onMount
580
+ * until {@link flushDeferredLifecycleTree} (used for sibling batching)
476
581
  * @returns {RuntimeFiber<P> | Promise<RuntimeFiber<P>>}
477
582
  */
478
583
  private materialize;
479
584
  /**
480
585
  * Async continuation of {@link materialize} after a child returned a Promise.
481
- * Finishes remaining child fibers with `await`, then runs parent startup.
586
+ * Finishes remaining child fibers with `await`, then completes wiring / lifecycle.
482
587
  *
483
588
  * @param {RuntimeFiber<P>} fiber - current fiber
484
589
  * @param {Component<unknown, P>} instance - component instance
@@ -488,6 +593,7 @@ export declare class GraphRuntime {
488
593
  * @param {ContextScope} childScope - scope for child nodes
489
594
  * @param {Promise<RuntimeFiber<unknown>>} pending - Promise for the current child
490
595
  * @param {number} pendingIdx - index of the current child
596
+ * @param {boolean} deferLifecycle - parent defer flag from {@link materialize}
491
597
  * @returns {Promise<RuntimeFiber<P>>}
492
598
  */
493
599
  private continueMaterializeAsync;
@@ -510,6 +616,9 @@ export declare class GraphRuntime {
510
616
  * @param {VirtualServiceNode<P>} nextVnode - new virtual node
511
617
  * @param {RuntimeFiber | null} parentFiber - parent fiber
512
618
  * @param {ContextScope} parentScope - parent scope
619
+ * @param {boolean} [deferLifecycle=false] - when true, REPLACE materialize wires buses but
620
+ * defers onMount until the sibling batch flush in {@link reconcileChildren} (same contract
621
+ * as PLACE). Root reconcile must leave this false — nothing else flushes the root.
513
622
  * @returns {Promise<RuntimeFiber<P>>}
514
623
  */
515
624
  private reconcileFiber;
@@ -535,6 +644,18 @@ export declare class GraphRuntime {
535
644
  * @returns {void | Promise<void>}
536
645
  */
537
646
  private runFiberFailedCleanup;
647
+ /**
648
+ * Destroys PLACE/REPLACE fibers in `nextChildren` that are not identity-in `currentChildren`.
649
+ * Used when child reconcile succeeded but a later step (e.g. ref commit in
650
+ * {@link applyFiberUpdate}) throws — those new fibers are not linked onto the parent
651
+ * yet, so fail-stop teardown of `currentRoot` cannot reach them.
652
+ *
653
+ * @param {RuntimeFiber<unknown>[]} currentChildren - parent children before apply
654
+ * @param {RuntimeFiber<unknown>[]} nextChildren - reconciled next children
655
+ * @param {unknown} primaryError - error to attach rollback failures onto
656
+ * @returns {void | Promise<void>}
657
+ */
658
+ private destroyOrphanedPlacedChildren;
538
659
  /**
539
660
  * Applies the reconcile result to the current fiber in-place.
540
661
  * In-place mutation instead of spread: 0 heap allocations on UPDATE
@@ -1 +1 @@
1
- {"version":3,"file":"GraphRuntime.d.ts","sourceRoot":"","sources":["../../src/component/GraphRuntime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"GraphRuntime.d.ts","sourceRoot":"","sources":["../../src/component/GraphRuntime.ts"],"names":[],"mappings":"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"}