@raphy-js/raph 1.0.0-dev.2 → 1.0.1-dev.25

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 (246) hide show
  1. package/README.md +1096 -0
  2. package/dist/api/Raph.d.ts +59 -190
  3. package/dist/api/RaphFacadeSession.d.ts +90 -0
  4. package/dist/api/RaphReactivityInstance.d.ts +72 -0
  5. package/dist/api/errors.d.ts +9 -4
  6. package/dist/api/types.d.ts +162 -17
  7. package/dist/core-CClhT8WR.js +1044 -0
  8. package/dist/core-cPQWYD4K.cjs +1 -0
  9. package/dist/debug/api/Raph.cjs +1 -1
  10. package/dist/debug/api/Raph.js +368 -367
  11. package/dist/debug/api/RaphFacadeSession.cjs +1 -0
  12. package/dist/debug/api/RaphFacadeSession.js +302 -0
  13. package/dist/debug/api/RaphReactivityInstance.cjs +1 -0
  14. package/dist/debug/api/RaphReactivityInstance.js +146 -0
  15. package/dist/debug/api/errors.cjs +1 -1
  16. package/dist/debug/api/errors.js +10 -7
  17. package/dist/debug/path/DataPath.cjs +1 -0
  18. package/dist/debug/path/DataPath.js +390 -0
  19. package/dist/debug/path/PathRouter.cjs +1 -0
  20. package/dist/debug/path/PathRouter.js +80 -0
  21. package/dist/debug/path/RaphKernel.cjs +1 -1
  22. package/dist/debug/path/RaphKernel.js +316 -236
  23. package/dist/debug/path/data-path.utils.cjs +1 -0
  24. package/dist/debug/path/data-path.utils.js +56 -0
  25. package/dist/debug/path/derived/DerivedRegistry.cjs +1 -0
  26. package/dist/debug/path/derived/DerivedRegistry.js +143 -0
  27. package/dist/debug/path/derived/RaphDerivedHandle.cjs +1 -0
  28. package/dist/debug/path/{RaphDerivedHandle.js → derived/RaphDerivedHandle.js} +19 -22
  29. package/dist/debug/path/derived/derived-collection.utils.cjs +1 -0
  30. package/dist/debug/path/{derived-collection.js → derived/derived-collection.utils.js} +71 -71
  31. package/dist/debug/path/derived/derived-strategy.types.cjs +1 -0
  32. package/dist/debug/path/derived/derived-strategy.types.js +1 -0
  33. package/dist/debug/path/meta/MetaController.cjs +1 -0
  34. package/dist/debug/path/{MetaController.js → meta/MetaController.js} +58 -66
  35. package/dist/debug/path/meta/RaphMeta.cjs +1 -0
  36. package/dist/debug/path/meta/RaphMeta.js +62 -0
  37. package/dist/debug/path/meta/RaphMetaStore.cjs +1 -0
  38. package/dist/debug/path/{RaphMetaStore.js → meta/RaphMetaStore.js} +24 -30
  39. package/dist/debug/path/meta/meta.types.cjs +1 -0
  40. package/dist/debug/path/meta/meta.types.js +1 -0
  41. package/dist/debug/path/storage/AdapterPathStore.cjs +1 -0
  42. package/dist/debug/path/storage/AdapterPathStore.js +128 -0
  43. package/dist/debug/path/storage/DefaultDataAdapter.cjs +1 -0
  44. package/dist/debug/path/{data-adapter.js → storage/DefaultDataAdapter.js} +47 -57
  45. package/dist/debug/path/storage/PathEventHub.cjs +1 -0
  46. package/dist/debug/path/storage/PathEventHub.js +161 -0
  47. package/dist/debug/path/storage/PathStore.cjs +1 -0
  48. package/dist/debug/path/{PathStore.js → storage/PathStore.js} +88 -98
  49. package/dist/debug/path/storage/createDataDraft.cjs +1 -0
  50. package/dist/debug/path/{data-draft.js → storage/createDataDraft.js} +24 -28
  51. package/dist/debug/path/storage/data-adapter.types.cjs +1 -0
  52. package/dist/debug/path/storage/data-adapter.types.js +1 -0
  53. package/dist/debug/reactivity/disposal.cjs +1 -0
  54. package/dist/debug/reactivity/disposal.js +32 -0
  55. package/dist/debug/reactivity/engine.cjs +1 -1
  56. package/dist/debug/reactivity/engine.js +888 -321
  57. package/dist/debug/reactivity/reactive-object.cjs +1 -0
  58. package/dist/debug/reactivity/reactive-object.js +265 -0
  59. package/dist/debug/reactivity/scope.cjs +1 -1
  60. package/dist/debug/reactivity/scope.js +221 -117
  61. package/dist/debug/reactivity/watch.cjs +1 -1
  62. package/dist/debug/reactivity/watch.js +1 -1
  63. package/dist/debug/runtime/RaphRuntime.cjs +1 -1
  64. package/dist/debug/runtime/RaphRuntime.js +1134 -502
  65. package/dist/debug/runtime/diagnostics/RaphDebug.cjs +1 -0
  66. package/dist/debug/runtime/diagnostics/RaphDebug.js +287 -0
  67. package/dist/debug/runtime/errors.cjs +1 -1
  68. package/dist/debug/runtime/errors.js +6 -3
  69. package/dist/debug/runtime/ownership/RaphEffectScope.cjs +1 -0
  70. package/dist/debug/runtime/ownership/RaphEffectScope.js +304 -0
  71. package/dist/debug/runtime/ownership/RaphNode.cjs +1 -0
  72. package/dist/debug/runtime/ownership/RaphNode.js +665 -0
  73. package/dist/debug/runtime/ownership/RaphScope.cjs +1 -0
  74. package/dist/debug/runtime/ownership/RaphScope.js +236 -0
  75. package/dist/debug/runtime/ownership/parent-graph.types.cjs +1 -0
  76. package/dist/debug/runtime/ownership/parent-graph.types.js +1 -0
  77. package/dist/debug/runtime/phases/RaphFrameLoop.cjs +1 -0
  78. package/dist/debug/runtime/{RaphFrameLoop.js → phases/RaphFrameLoop.js} +13 -17
  79. package/dist/debug/runtime/phases/RaphPhasePipeline.cjs +1 -0
  80. package/dist/debug/runtime/phases/RaphPhasePipeline.js +848 -0
  81. package/dist/debug/runtime/phases/RaphPhaseTaskRecord.cjs +1 -0
  82. package/dist/debug/runtime/phases/RaphPhaseTaskRecord.js +176 -0
  83. package/dist/debug/runtime/phases/RaphPhaseWatch.cjs +1 -0
  84. package/dist/debug/runtime/phases/RaphPhaseWatch.js +20 -0
  85. package/dist/debug/runtime/phases/orderPhaseTasks.cjs +1 -0
  86. package/dist/debug/runtime/phases/orderPhaseTasks.js +59 -0
  87. package/dist/debug/runtime/reactivity/PathHandle.cjs +1 -0
  88. package/dist/debug/runtime/reactivity/PathHandle.js +165 -0
  89. package/dist/debug/runtime/reactivity/RaphMetaSource.cjs +1 -0
  90. package/dist/debug/runtime/reactivity/RaphMetaSource.js +108 -0
  91. package/dist/debug/runtime/reactivity/RaphSelector.cjs +1 -0
  92. package/dist/debug/runtime/reactivity/RaphSelector.js +503 -0
  93. package/dist/debug/runtime/reactivity/RaphWorkGraph.cjs +1 -0
  94. package/dist/debug/runtime/reactivity/RaphWorkGraph.js +1157 -0
  95. package/dist/debug/runtime/reactivity/RuntimeReactivity.cjs +1 -0
  96. package/dist/debug/runtime/reactivity/RuntimeReactivity.js +550 -0
  97. package/dist/debug/runtime/reactivity/RuntimeWatch.cjs +1 -0
  98. package/dist/debug/runtime/reactivity/RuntimeWatch.js +77 -0
  99. package/dist/debug/runtime/reactivity/disposal-sweep.utils.cjs +1 -0
  100. package/dist/debug/runtime/reactivity/disposal-sweep.utils.js +42 -0
  101. package/dist/debug/runtime/reactivity/runtime-reactivity.types.cjs +1 -0
  102. package/dist/debug/runtime/reactivity/runtime-reactivity.types.js +1 -0
  103. package/dist/entrypoints/machine-testing.d.ts +2 -0
  104. package/dist/entrypoints/machine.d.ts +5 -0
  105. package/dist/entrypoints/path.d.ts +14 -0
  106. package/dist/entrypoints/reactivity.d.ts +1 -0
  107. package/dist/entrypoints/runtime.d.ts +18 -0
  108. package/dist/index.cjs +1 -1
  109. package/dist/index.js +46 -38
  110. package/dist/machine/compiler.d.ts +71 -0
  111. package/dist/machine/core.d.ts +50 -0
  112. package/dist/machine/persistence.d.ts +5 -0
  113. package/dist/machine/runtime.d.ts +4 -0
  114. package/dist/machine/testing.d.ts +43 -0
  115. package/dist/machine/types.d.ts +155 -0
  116. package/dist/machine-testing.cjs +1 -0
  117. package/dist/machine-testing.js +188 -0
  118. package/dist/machine.cjs +1 -0
  119. package/dist/machine.js +822 -0
  120. package/dist/main.d.ts +20 -0
  121. package/dist/path/{data-path.d.ts → DataPath.d.ts} +16 -40
  122. package/dist/path/{path-router.d.ts → PathRouter.d.ts} +1 -1
  123. package/dist/path/RaphKernel.d.ts +37 -10
  124. package/dist/path/data-path.types.d.ts +34 -0
  125. package/dist/path/data-path.utils.d.ts +9 -0
  126. package/dist/path/{DerivedRegistry.d.ts → derived/DerivedRegistry.d.ts} +2 -2
  127. package/dist/path/{RaphDerivedHandle.d.ts → derived/RaphDerivedHandle.d.ts} +3 -3
  128. package/dist/path/derived/derived-collection.types.d.ts +12 -0
  129. package/dist/path/{derived-collection.d.ts → derived/derived-collection.utils.d.ts} +3 -13
  130. package/dist/path/{derived-strategies.d.ts → derived/derived-strategy.types.d.ts} +0 -3
  131. package/dist/path/derived/derived-strategy.utils.d.ts +4 -0
  132. package/dist/path/{MetaController.d.ts → meta/MetaController.d.ts} +4 -4
  133. package/dist/path/{RaphMeta.d.ts → meta/RaphMeta.d.ts} +2 -2
  134. package/dist/path/{RaphMetaStore.d.ts → meta/RaphMetaStore.d.ts} +1 -1
  135. package/dist/path/{meta.types.d.ts → meta/meta.types.d.ts} +2 -4
  136. package/dist/path/path.types.d.ts +3 -2
  137. package/dist/path/{segment-key.d.ts → pathSegmentKey.d.ts} +1 -1
  138. package/dist/path/{AdapterPathStore.d.ts → storage/AdapterPathStore.d.ts} +4 -4
  139. package/dist/path/{data-adapter.d.ts → storage/DefaultDataAdapter.d.ts} +2 -17
  140. package/dist/path/storage/PathEventHub.d.ts +62 -0
  141. package/dist/path/{PathStore.d.ts → storage/PathStore.d.ts} +7 -7
  142. package/dist/path/storage/data-adapter.types.d.ts +17 -0
  143. package/dist/path.cjs +1 -1
  144. package/dist/path.js +16 -16
  145. package/dist/raph.cjs +1 -1
  146. package/dist/raph.js +46 -38
  147. package/dist/reactivity/disposal.d.ts +14 -0
  148. package/dist/reactivity/engine.d.ts +193 -6
  149. package/dist/reactivity/reactive-object.d.ts +36 -0
  150. package/dist/reactivity/scope.d.ts +108 -30
  151. package/dist/reactivity/types.d.ts +25 -0
  152. package/dist/reactivity.cjs +1 -1
  153. package/dist/reactivity.js +12 -12
  154. package/dist/runtime/RaphRuntime.d.ts +319 -160
  155. package/dist/runtime/diagnostics/RaphDebug.d.ts +239 -0
  156. package/dist/runtime/errors.d.ts +5 -0
  157. package/dist/runtime/ownership/RaphEffectScope.d.ts +98 -0
  158. package/dist/runtime/ownership/RaphNode.d.ts +310 -0
  159. package/dist/runtime/ownership/RaphScope.d.ts +168 -0
  160. package/dist/runtime/{parent-graph.d.ts → ownership/parent-graph.types.d.ts} +0 -1
  161. package/dist/runtime/ownership/parentGraph.d.ts +3 -0
  162. package/dist/runtime/phases/RaphPhasePipeline.d.ts +253 -0
  163. package/dist/runtime/phases/RaphPhaseTaskRecord.d.ts +195 -0
  164. package/dist/runtime/phases/RaphPhaseWatch.d.ts +22 -0
  165. package/dist/runtime/phases/orderPhaseTasks.d.ts +6 -0
  166. package/dist/runtime/phases/phase.types.d.ts +171 -0
  167. package/dist/runtime/{PathHandle.d.ts → reactivity/PathHandle.d.ts} +14 -6
  168. package/dist/runtime/reactivity/RaphMetaSource.d.ts +32 -0
  169. package/dist/runtime/reactivity/RaphSelector.d.ts +338 -0
  170. package/dist/runtime/reactivity/RaphWorkGraph.d.ts +309 -0
  171. package/dist/runtime/reactivity/RuntimeReactivity.d.ts +293 -0
  172. package/dist/runtime/{RuntimeWatch.d.ts → reactivity/RuntimeWatch.d.ts} +12 -6
  173. package/dist/runtime/reactivity/disposal-sweep.utils.d.ts +19 -0
  174. package/dist/runtime/reactivity/runtime-reactivity.types.d.ts +56 -0
  175. package/dist/runtime.cjs +1 -1
  176. package/dist/runtime.js +21 -16
  177. package/package.json +76 -35
  178. package/ReadMe.md +0 -153
  179. package/dist/api/public.d.ts +0 -22
  180. package/dist/debug/api/public.cjs +0 -1
  181. package/dist/debug/api/public.js +0 -40
  182. package/dist/debug/path/AdapterPathStore.cjs +0 -1
  183. package/dist/debug/path/AdapterPathStore.js +0 -133
  184. package/dist/debug/path/DerivedRegistry.cjs +0 -1
  185. package/dist/debug/path/DerivedRegistry.js +0 -157
  186. package/dist/debug/path/MetaController.cjs +0 -1
  187. package/dist/debug/path/PathEventHub.cjs +0 -1
  188. package/dist/debug/path/PathEventHub.js +0 -148
  189. package/dist/debug/path/PathStore.cjs +0 -1
  190. package/dist/debug/path/RaphDerivedHandle.cjs +0 -1
  191. package/dist/debug/path/RaphMeta.cjs +0 -1
  192. package/dist/debug/path/RaphMeta.js +0 -68
  193. package/dist/debug/path/RaphMetaStore.cjs +0 -1
  194. package/dist/debug/path/data-adapter.cjs +0 -1
  195. package/dist/debug/path/data-draft.cjs +0 -1
  196. package/dist/debug/path/data-path.cjs +0 -1
  197. package/dist/debug/path/data-path.js +0 -423
  198. package/dist/debug/path/derived-collection.cjs +0 -1
  199. package/dist/debug/path/path-router.cjs +0 -1
  200. package/dist/debug/path/path-router.js +0 -86
  201. package/dist/debug/path/public.cjs +0 -1
  202. package/dist/debug/path/public.js +0 -18
  203. package/dist/debug/runtime/PathHandle.cjs +0 -1
  204. package/dist/debug/runtime/PathHandle.js +0 -139
  205. package/dist/debug/runtime/RaphDebug.cjs +0 -1
  206. package/dist/debug/runtime/RaphDebug.js +0 -15
  207. package/dist/debug/runtime/RaphFrameLoop.cjs +0 -1
  208. package/dist/debug/runtime/RaphNode.cjs +0 -1
  209. package/dist/debug/runtime/RaphNode.js +0 -143
  210. package/dist/debug/runtime/RaphPhasePipeline.cjs +0 -1
  211. package/dist/debug/runtime/RaphPhasePipeline.js +0 -526
  212. package/dist/debug/runtime/RaphScope.cjs +0 -1
  213. package/dist/debug/runtime/RaphScope.js +0 -64
  214. package/dist/debug/runtime/RuntimeReactivity.cjs +0 -1
  215. package/dist/debug/runtime/RuntimeReactivity.js +0 -154
  216. package/dist/debug/runtime/RuntimeWatch.cjs +0 -1
  217. package/dist/debug/runtime/RuntimeWatch.js +0 -71
  218. package/dist/debug/runtime/public.cjs +0 -1
  219. package/dist/debug/runtime/public.js +0 -18
  220. package/dist/path/PathEventHub.d.ts +0 -48
  221. package/dist/path/public.d.ts +0 -14
  222. package/dist/runtime/RaphDebug.d.ts +0 -32
  223. package/dist/runtime/RaphNode.d.ts +0 -68
  224. package/dist/runtime/RaphPhasePipeline.d.ts +0 -133
  225. package/dist/runtime/RaphScope.d.ts +0 -50
  226. package/dist/runtime/RuntimeReactivity.d.ts +0 -40
  227. package/dist/runtime/phase.types.d.ts +0 -49
  228. package/dist/runtime/public.d.ts +0 -13
  229. package/dist/runtime/runtime-reactivity.types.d.ts +0 -9
  230. /package/dist/debug/path/{meta.types.cjs → data-path.types.cjs} +0 -0
  231. /package/dist/debug/path/{meta.types.js → data-path.types.js} +0 -0
  232. /package/dist/debug/{runtime/runtime-reactivity.types.cjs → path/derived/derived-collection.types.cjs} +0 -0
  233. /package/dist/debug/{runtime/runtime-reactivity.types.js → path/derived/derived-collection.types.js} +0 -0
  234. /package/dist/debug/path/{derived-strategies.cjs → derived/derived-strategy.utils.cjs} +0 -0
  235. /package/dist/debug/path/{derived-strategies.js → derived/derived-strategy.utils.js} +0 -0
  236. /package/dist/debug/path/{segment-key.cjs → pathSegmentKey.cjs} +0 -0
  237. /package/dist/debug/path/{segment-key.js → pathSegmentKey.js} +0 -0
  238. /package/dist/debug/runtime/{parent-graph.cjs → ownership/parentGraph.cjs} +0 -0
  239. /package/dist/debug/runtime/{parent-graph.js → ownership/parentGraph.js} +0 -0
  240. /package/dist/debug/runtime/{disposal.cjs → ownership/throwDisposalErrors.cjs} +0 -0
  241. /package/dist/debug/runtime/{disposal.js → ownership/throwDisposalErrors.js} +0 -0
  242. /package/dist/debug/runtime/{phase.types.cjs → phases/phase.types.cjs} +0 -0
  243. /package/dist/debug/runtime/{phase.types.js → phases/phase.types.js} +0 -0
  244. /package/dist/path/{data-draft.d.ts → storage/createDataDraft.d.ts} +0 -0
  245. /package/dist/runtime/{disposal.d.ts → ownership/throwDisposalErrors.d.ts} +0 -0
  246. /package/dist/runtime/{RaphFrameLoop.d.ts → phases/RaphFrameLoop.d.ts} +0 -0
package/dist/raph.js CHANGED
@@ -1,40 +1,48 @@
1
- import { DefaultDataAdapter as e } from "./debug/path/data-adapter.js";
2
- import { DataPath as t } from "./debug/path/data-path.js";
3
- import { collectionByKey as f, filterByKey as h, full as R } from "./debug/path/derived-strategies.js";
4
- import { RaphDerivedHandle as x, RaphDerivedTargetWriteError as i } from "./debug/path/RaphDerivedHandle.js";
5
- import { RaphKernel as n } from "./debug/path/RaphKernel.js";
6
- import { RaphMeta as u } from "./debug/path/RaphMeta.js";
7
- import { RaphActionError as D, RaphCrossRuntimeError as c, RaphDisposedError as y } from "./debug/runtime/errors.js";
8
- import { parentGraph as K } from "./debug/runtime/parent-graph.js";
9
- import { PathHandle as v } from "./debug/runtime/PathHandle.js";
10
- import { RaphSchedulerType as B } from "./debug/runtime/phase.types.js";
11
- import { RaphNode as H } from "./debug/runtime/RaphNode.js";
12
- import { RaphRuntime as P } from "./debug/runtime/RaphRuntime.js";
13
- import { RaphScope as T } from "./debug/runtime/RaphScope.js";
14
- import { RaphConfigurationError as N, RaphDefaultRuntimeError as W, RaphError as b, RaphModeError as j } from "./debug/api/errors.js";
15
- import { Raph as q } from "./debug/api/Raph.js";
1
+ import { RaphCapabilityError as e, RaphConfigurationError as p, RaphDefaultInstanceError as a, RaphError as t, RaphFacadeDisposedError as h } from "./debug/api/errors.js";
2
+ import { Raph as R } from "./debug/api/Raph.js";
3
+ import { RaphReactivityInstance as x } from "./debug/api/RaphReactivityInstance.js";
4
+ import { RaphActionError as n, RaphCrossRuntimeError as s, RaphDisposedError as c, RaphPhaseProcessError as l } from "./debug/runtime/errors.js";
5
+ import { parentGraph as E } from "./debug/runtime/ownership/parentGraph.js";
6
+ import { RaphEffectScope as u } from "./debug/runtime/ownership/RaphEffectScope.js";
7
+ import { RaphNode as P } from "./debug/runtime/ownership/RaphNode.js";
8
+ import { RaphScope as C } from "./debug/runtime/ownership/RaphScope.js";
9
+ import { orderPhaseTasks as S } from "./debug/runtime/phases/orderPhaseTasks.js";
10
+ import { RaphSchedulerType as g } from "./debug/runtime/phases/phase.types.js";
11
+ import { RaphRuntime as B } from "./debug/runtime/RaphRuntime.js";
12
+ import { PathHandle as I } from "./debug/runtime/reactivity/PathHandle.js";
13
+ import { DataPath as k } from "./debug/path/DataPath.js";
14
+ import { collectionByKey as G, filterByKey as M, full as N } from "./debug/path/derived/derived-strategy.utils.js";
15
+ import { RaphDerivedHandle as j, RaphDerivedTargetWriteError as q } from "./debug/path/derived/RaphDerivedHandle.js";
16
+ import { RaphMeta as z } from "./debug/path/meta/RaphMeta.js";
17
+ import { RaphKernel as L } from "./debug/path/RaphKernel.js";
18
+ import { DefaultDataAdapter as Q } from "./debug/path/storage/DefaultDataAdapter.js";
16
19
  export {
17
- t as DataPath,
18
- e as DefaultDataAdapter,
19
- v as PathHandle,
20
- q as Raph,
21
- D as RaphActionError,
22
- N as RaphConfigurationError,
23
- c as RaphCrossRuntimeError,
24
- W as RaphDefaultRuntimeError,
25
- x as RaphDerivedHandle,
26
- i as RaphDerivedTargetWriteError,
27
- y as RaphDisposedError,
28
- b as RaphError,
29
- n as RaphKernel,
30
- u as RaphMeta,
31
- j as RaphModeError,
32
- H as RaphNode,
33
- P as RaphRuntime,
34
- B as RaphSchedulerType,
35
- T as RaphScope,
36
- f as collectionByKey,
37
- h as filterByKey,
38
- R as full,
39
- K as parentGraph
20
+ k as DataPath,
21
+ Q as DefaultDataAdapter,
22
+ I as PathHandle,
23
+ R as Raph,
24
+ n as RaphActionError,
25
+ e as RaphCapabilityError,
26
+ p as RaphConfigurationError,
27
+ s as RaphCrossRuntimeError,
28
+ a as RaphDefaultInstanceError,
29
+ j as RaphDerivedHandle,
30
+ q as RaphDerivedTargetWriteError,
31
+ c as RaphDisposedError,
32
+ u as RaphEffectScope,
33
+ t as RaphError,
34
+ h as RaphFacadeDisposedError,
35
+ L as RaphKernel,
36
+ z as RaphMeta,
37
+ P as RaphNode,
38
+ l as RaphPhaseProcessError,
39
+ x as RaphReactivityInstance,
40
+ B as RaphRuntime,
41
+ g as RaphSchedulerType,
42
+ C as RaphScope,
43
+ G as collectionByKey,
44
+ M as filterByKey,
45
+ N as full,
46
+ S as orderPhaseTasks,
47
+ E as parentGraph
40
48
  };
@@ -0,0 +1,14 @@
1
+ /** Failure of one completed disposal call; never thrown as a wrapper. @internal */
2
+ export interface DisposalFailure {
3
+ readonly error: unknown;
4
+ readonly hasUnrouted: boolean;
5
+ readonly completed?: {
6
+ readonly error: unknown;
7
+ };
8
+ }
9
+ /** An authored callback or a non-resource disposal stage failed. @internal */
10
+ export declare function unroutedDisposalFailure(error: unknown): DisposalFailure;
11
+ /** Combines only errors collected by this framework operation, without inspecting payloads. @internal */
12
+ export declare function combineDisposalFailures(failures: readonly DisposalFailure[] | undefined, message: string): DisposalFailure | undefined;
13
+ /** Public disposal exposes only the original raw payload. @internal */
14
+ export declare function throwDisposalFailure(failure: DisposalFailure | undefined): void;
@@ -1,4 +1,4 @@
1
- import { ComputedAccessHandle, Disposer, EffectCallback, EffectFactory, OwnedSource, ReactivityOptions, ReadonlySignal, Signal, SignalAccess, WatchCallback, WatchOptions, WatchSource, WritableComputedOptions } from './types';
1
+ import { ComputedAccessHandle, Disposer, EffectCallback, EffectFactory, EffectTask, OwnedSource, OwnedSourceHooks, ReactiveNode, ReactivityOptions, ReadonlySignal, Signal, SignalAccess, WatchCallback, WatchOptions, WatchSource, WritableComputedOptions } from './types';
2
2
  import { ScopeNode } from './scope';
3
3
  export { ScopeNode } from './scope';
4
4
  export type { Disposer, EffectCallback, EffectScheduler, EffectTask, ReactivityOptions, ReadonlySignal, Signal, WatchCallback, WatchOptions, WatchSource, WatchValue, WritableComputedOptions, } from './types';
@@ -9,12 +9,14 @@ export type { Disposer, EffectCallback, EffectScheduler, EffectTask, ReactivityO
9
9
  * синхронного движка не проверяет внешнюю политику на каждом эффекте.
10
10
  */
11
11
  export declare class RaphReactivity {
12
+ private readonly adaptiveDependencyIndex;
12
13
  private activeSub;
13
14
  private batchDepth;
14
15
  private effectReadIndex;
15
16
  private effectWriteIndex;
16
17
  private invalidationDepth;
17
18
  private dependencyDepth;
19
+ private checkingDepth;
18
20
  private flushingEffects;
19
21
  private readonly effectQueue;
20
22
  private readonly invalidationStack;
@@ -41,6 +43,11 @@ export declare class RaphReactivity {
41
43
  * а peek() выполняет чтение с временно отключённым отслеживанием.
42
44
  */
43
45
  signal<T>(initialValue: T): Signal<T>;
46
+ /**
47
+ * Возвращает стабильный глубокий Proxy для plain object или array.
48
+ * Object context и per-property sources создаются лениво внутри этого engine.
49
+ */
50
+ reactive<T extends object>(value: T): T;
44
51
  /**
45
52
  * - `(1)` Создаёт ленивое вычисляемое значение только для чтения;
46
53
  * - `(2)` Создаёт writable computed, сохраняя исходную функцию setter;
@@ -85,6 +92,8 @@ export declare class RaphReactivity {
85
92
  * Поля внешней задачи и окончательной очистки добавляются только при необходимости.
86
93
  */
87
94
  private allocateGraphRecord;
95
+ /** Creates a narrow Proxy adapter over the existing intrusive graph. */
96
+ private createReactivePropertySourceBridge;
88
97
  /**
89
98
  * Материализует signal в графе при первом отслеживаемом чтении
90
99
  * и связывает его с активным потребителем.
@@ -119,8 +128,9 @@ export declare class RaphReactivity {
119
128
  private writeSignalValue;
120
129
  /**
121
130
  * Возвращает кеш либо синхронно актуализирует вычисляемое значение.
122
- * Неуспешное вычисление не считается значением. Даже ошибочное чтение сохраняет
123
- * связь с активным потребителем, чтобы тот мог восстановиться при изменении источника.
131
+ * Неуспешное вычисление не считается значением. Ошибка getter сохраняет связь
132
+ * с активным потребителем для восстановления. Повторное чтение во время
133
+ * первого сбора зависимостей отклоняется до регистрации связи и чтения кеша.
124
134
  */
125
135
  private readComputedValue;
126
136
  /**
@@ -175,7 +185,7 @@ export declare class RaphReactivity {
175
185
  /**
176
186
  * Удаляет непрочитанный хвост зависимостей завершившегося запуска.
177
187
  * trackedTail обозначает границу прочитанного префикса, а не неизменный конец списка.
178
- * Удаление из списков производителей не выполняет пользовательские callbacks.
188
+ * Ошибка cleanup не прерывает освобождение оставшегося хвоста зависимостей.
179
189
  */
180
190
  private pruneUnreadDependencies;
181
191
  /**
@@ -184,6 +194,10 @@ export declare class RaphReactivity {
184
194
  * Также исправляет курсор поиска, если он указывал на удаляемую связь.
185
195
  */
186
196
  private detachSubLink;
197
+ /** Завершает удаление producer-связи без вызова source cleanup. */
198
+ private unlinkSubLink;
199
+ /** Connects Runtime ownership metadata only for edges whose producer opted in. */
200
+ private attachDependencyCleanup;
187
201
  /**
188
202
  * Отсоединяет owned-источник сразу с обеих сторон каждой связи.
189
203
  * Вызывается на границе lifetime, а не при обычных чтениях и записях.
@@ -207,6 +221,7 @@ export declare class RaphReactivity {
207
221
  * не выполняет. Непосредственное и потенциальное изменения отмечает разными флагами.
208
222
  */
209
223
  private propagateInvalidation;
224
+ private markActiveChecks;
210
225
  /**
211
226
  * Помечает работающего потребителя, только если затронута уже прочитанная связь.
212
227
  * Связи за trackedTail принадлежат прошлому запуску и не означают повторную invalidation.
@@ -227,6 +242,8 @@ export declare class RaphReactivity {
227
242
  * Неверное значение в кеш не записывается.
228
243
  */
229
244
  private recomputeValue;
245
+ /** Сохраняет первичную ошибку и отдельные ошибки cleanup при восстановлении. */
246
+ private failComputedValue;
230
247
  /**
231
248
  * Восстанавливает связи и состояния после неудачного getter.
232
249
  * Отдельная функция удерживает обработку исключений вне обычной части пересчёта.
@@ -240,6 +257,8 @@ export declare class RaphReactivity {
240
257
  * узлов текущего прохода; порядок успешного обхода не меняется.
241
258
  */
242
259
  private refreshDependencies;
260
+ /** Settles every direct dependency so a cancelled external delivery can be re-armed. */
261
+ private settleCancelledDependencies;
243
262
  /**
244
263
  * Выполняет исходный итеративный обход зависимостей без обработки ошибок внутри цикла.
245
264
  * Перед пользовательским вычислением публикует активную высоту стека; оболочка
@@ -278,6 +297,7 @@ export declare class RaphReactivity {
278
297
  * Ошибка одного элемента не оставляет необработанные записи со старым SCHEDULED.
279
298
  */
280
299
  private flushExternalEffects;
300
+ private markRecoveryDependencies;
281
301
  /**
282
302
  * Завершает очередь после первой ошибки, собирая последующие причины сбоя.
283
303
  * Вызывается только на ошибочном пути; успешный проход не создаёт массив ошибок
@@ -290,6 +310,7 @@ export declare class RaphReactivity {
290
310
  * чтобы последующая запись могла снова запросить выполнение.
291
311
  */
292
312
  private requestEffectTask;
313
+ private scheduleEffectTask;
293
314
  /**
294
315
  * Окончательно останавливает эффект и освобождает все принадлежащие ему ресурсы.
295
316
  * Сначала делает узел неактивным и отсоединяет связи, затем отменяет задачу,
@@ -339,13 +360,13 @@ export declare class RaphReactivity {
339
360
  *
340
361
  * @internal
341
362
  */
342
- _ownedSignal<T>(initialValue: T): OwnedSource<Signal<T>>;
363
+ _ownedSignal<T>(initialValue: T, sourceHooks?: OwnedSourceHooks): OwnedSource<Signal<T>>;
343
364
  /**
344
365
  * Создаёт ленивый computed с финализатором исходящих и входящих связей.
345
366
  * Финализатор работает и до первого вычисления, не материализуя узел ради очистки.
346
367
  * @internal
347
368
  */
348
- _ownedComputed<T>(fn: () => T): OwnedSource<ReadonlySignal<T>>;
369
+ _ownedComputed<T>(fn: () => T, sourceHooks?: OwnedSourceHooks): OwnedSource<ReadonlySignal<T>>;
349
370
  /**
350
371
  * Открывает вложенную синхронную границу группировки.
351
372
  * Внутренний вызывающий код обязан выполнить соответствующий endBatch().
@@ -368,8 +389,174 @@ export declare class RaphReactivity {
368
389
  * @internal
369
390
  */
370
391
  _isFlushingEffects(): boolean;
392
+ /**
393
+ * Создаёт запись графа для эффекта с внешним планированием и подключает его
394
+ * постоянную задачу. Запуск ещё не запрошен: вызывающий слой сохраняет запись
395
+ * и затем вызывает _requestTaskEffect(). Запись, созданная во время работы
396
+ * другого эффекта, становится его вложенным ресурсом.
397
+ * @internal
398
+ */
399
+ _allocateTaskEffect(fn: EffectCallback, task: EffectTask): ReactiveNode;
400
+ /**
401
+ * Запрашивает первый запуск эффекта с задачей. При `schedule` задача получает
402
+ * schedule(), как на пути scheduler bind; без него вызывающий слой уже сам
403
+ * поставил задачу в очередь, и запись только помечается запланированной.
404
+ * Если метод бросает исключение, запись освобождает вызывающий слой.
405
+ * @internal
406
+ */
407
+ _requestTaskEffect(node: ReactiveNode, schedule: boolean): void;
408
+ /**
409
+ * Открывает одну доставку эффекта с задачей. Возвращает false для устаревшей
410
+ * доставки: запись остановлена или запуск больше не запланирован.
411
+ * @internal
412
+ */
413
+ _beginTaskEffectRun(node: ReactiveNode): boolean;
414
+ /**
415
+ * Выполняет доставку, открытую через _beginTaskEffectRun(), вне активного
416
+ * потребителя и затем обрабатывает очередь эффектов, в том числе после
417
+ * неудачного запуска; при двух сбоях передаёт обе причины.
418
+ * @internal
419
+ */
420
+ _finishTaskEffectRun(node: ReactiveNode): void;
421
+ /**
422
+ * Гасит ожидающую доставку, от которой отказывается задача. Вызывающий слой
423
+ * не должен отменять доставку до первого запуска: зависимости до него ещё не
424
+ * собраны. Возвращает false, если запись уже остановлена.
425
+ * @internal
426
+ */
427
+ _cancelTaskEffect(node: ReactiveNode): boolean;
428
+ /**
429
+ * Делает следующую доставку исполняемой и снова планирует задачу. Нужен,
430
+ * когда invalidation пришла после снимка текущей доставки: её запуск
431
+ * расходует предыдущее dirty-состояние.
432
+ * @internal
433
+ */
434
+ _rearmTaskEffect(node: ReactiveNode): void;
435
+ /**
436
+ * Окончательно останавливает эффект с задачей. Engine один раз вызывает
437
+ * task.dispose() изнутри, поэтому задача может направлять собственное
438
+ * освобождение через этот метод.
439
+ * @internal
440
+ */
441
+ _disposeTaskEffect(node: ReactiveNode): void;
442
+ /**
443
+ * Материализует signal для активного потребителя и связывает их. Без
444
+ * потребителя возвращает undefined: signal остаётся значением у вызывающего
445
+ * слоя. После материализации значением владеет запись.
446
+ * @internal
447
+ */
448
+ _trackSignalNode<T>(value: T, sourceHooks: OwnedSourceHooks): ReactiveNode<T> | undefined;
449
+ /**
450
+ * Читает материализованный signal и регистрирует зависимость активного
451
+ * потребителя.
452
+ * @internal
453
+ */
454
+ _readSignalNode<T>(node: ReactiveNode<T>): T;
455
+ /**
456
+ * Читает материализованный signal без подписки текущего потребителя;
457
+ * pending-значение фиксируется так же, как при обычном чтении.
458
+ * @internal
459
+ */
460
+ _peekSignalNode<T>(node: ReactiveNode<T>): T;
461
+ /**
462
+ * Возвращает значение, которое увидит следующее чтение: pending-значение
463
+ * незавершённой группировки либо зафиксированное. Ничего не фиксирует.
464
+ * @internal
465
+ */
466
+ _visibleSignalValue<T>(node: ReactiveNode<T>): T;
467
+ /**
468
+ * Записывает значение материализованного signal с обычной семантикой batch.
469
+ * @internal
470
+ */
471
+ _writeSignalNode<T>(node: ReactiveNode<T>, value: T): void;
472
+ /**
473
+ * Сообщает, есть ли у материализованного signal потребители в графе.
474
+ * @internal
475
+ */
476
+ _signalNodeHasSubscribers(node: ReactiveNode): boolean;
477
+ /**
478
+ * Отсоединяет материализованный signal от потребителей и освобождает его
479
+ * значения. Значения освобождаются и при сбое отсоединения. Поля pending
480
+ * сбрасываются, только если запись их получала: запись без группировок не
481
+ * меняет набор своих полей при освобождении.
482
+ * @internal
483
+ */
484
+ _releaseSignalNode(node: ReactiveNode): void;
485
+ /**
486
+ * Ищет среди текущих потребителей записи первого, чьего владельца принимает
487
+ * accept, и возвращает этого владельца. Владелец потребителя определяется
488
+ * так же, как при привязке ребра через onDependency: у computed это
489
+ * dependencyOwner его source hooks, у эффекта — dependencyOwner его задачи.
490
+ * Потребители без владельца пропускаются. Обход идёт в порядке списка
491
+ * потребителей, ничего не выделяет и не меняет граф; accept не должен менять
492
+ * связи этой записи.
493
+ * @param node Материализованная запись производителя.
494
+ * @param accept Проверка владельца потребителя; context передаётся ей без closure.
495
+ * @param context Произвольное значение вызывающего слоя для accept.
496
+ * @internal
497
+ */
498
+ _findSubscriberOwner<Context>(node: ReactiveNode, accept: (owner: object, context: Context) => boolean, context: Context): object | undefined;
499
+ /**
500
+ * Возвращает владельца активного потребителя: того, кому engine привязал бы
501
+ * ребро следующего отслеживаемого чтения. Владелец определяется так же, как
502
+ * в _findSubscriberOwner(). Без активного потребителя и у потребителя без
503
+ * владельца результат undefined. Метод ничего не выделяет и не меняет граф.
504
+ *
505
+ * Вызывающий слой проверяет по этому владельцу допустимость чтения, когда
506
+ * его собственный контекст снят, а потребитель engine остался активным.
507
+ * @internal
508
+ */
509
+ _activeSubscriberOwner(): object | undefined;
510
+ /**
511
+ * Увеличивает счётчик материализованного signal и уведомляет его
512
+ * потребителей. Без потребителей ничего не пишет и возвращает false.
513
+ *
514
+ * Сдвиг — обычная запись signal. Вне группировки она прямая: счётчик
515
+ * фиксируется сразу, а потребитель становится обязательным к пересчёту, в
516
+ * том числе тот, кто ждал только проверки зависимостей или стоит на стеке
517
+ * идущей проверки. Внутри группировки и у записи с ещё не прочитанным
518
+ * отложенным сдвигом запись откладывается до первого чтения, как любая запись
519
+ * внутри batch().
520
+ *
521
+ * Потребитель, который выполняется в момент прямого сдвига, получает его по
522
+ * общему правилу записи во время запуска: у записи не остаётся отложенного
523
+ * сдвига, который позже подтвердил бы ему изменение.
524
+ *
525
+ * Очередь эффектов обрабатывается на выходе, если группировки нет: отложенная
526
+ * запись сама её не обрабатывает, а потребитель, которого она поставила в
527
+ * очередь, не должен ждать следующей записи.
528
+ * @internal
529
+ */
530
+ _bumpSignalNode(node: ReactiveNode<number>): boolean;
531
+ /**
532
+ * Создаёт запись-счётчик для активного потребителя и связывает их; без
533
+ * потребителя возвращает undefined. Счётчик начинается с нуля и сдвигается
534
+ * через _bumpSignalNode().
535
+ *
536
+ * Счётчик — производитель без собственных зависимостей. Граф читает у него
537
+ * то же, что у записи signal в роли производителя: признаки, список
538
+ * потребителей, отсутствие getter, значение и source hooks. Полей списка
539
+ * зависимостей у записи нет, а hooks лежат в ней самой: счётчик стоит одной
540
+ * аллокации из шести полей, а запись signal с hooks — двух. Поля отложенной
541
+ * записи появляются у счётчика с первым сдвигом.
542
+ * @internal
543
+ */
544
+ _trackCounterNode(sourceHooks: OwnedSourceHooks): ReactiveNode<number> | undefined;
545
+ /**
546
+ * Возвращает постоянную задачу активного потребителя. Engine делает запись
547
+ * эффекта активным потребителем непосредственно перед вызовом её тела,
548
+ * поэтому первое обращение из тела возвращает задачу именно этого эффекта,
549
+ * какие бы доставки ни выполнил cleanup его прошлого запуска.
550
+ *
551
+ * Без активного потребителя и у потребителя без задачи — computed либо
552
+ * эффекта, созданного без внешнего планирования, — результат undefined.
553
+ * Метод ничего не выделяет и не меняет граф.
554
+ * @internal
555
+ */
556
+ _activeEffectTask(): EffectTask | undefined;
371
557
  }
372
558
  export declare const signal: RaphReactivity['signal'];
559
+ export declare const reactive: RaphReactivity['reactive'];
373
560
  export declare function computed<T>(getter: () => T): ReadonlySignal<T>;
374
561
  export declare function computed<T>(options: WritableComputedOptions<T>): Signal<T>;
375
562
  export declare const effect: RaphReactivity['effect'];
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Opaque per-property producer used by the reactive-object adapter.
3
+ * The concrete record belongs to RaphReactivity's existing intrusive graph.
4
+ * @internal
5
+ */
6
+ export type ReactivePropertySource = object;
7
+ /**
8
+ * The only bridge between Proxy bookkeeping and the reactive graph internals.
9
+ * It deliberately exposes operations instead of graph fields or subclass hooks.
10
+ * @internal
11
+ */
12
+ export interface ReactivePropertySourceBridge {
13
+ readonly batch: <T>(operation: () => T) => T;
14
+ readonly create: () => ReactivePropertySource;
15
+ readonly isTracking: () => boolean;
16
+ readonly track: (source: ReactivePropertySource) => void;
17
+ readonly trigger: (source: ReactivePropertySource) => void;
18
+ }
19
+ /** Runtime policy installed for one RuntimeReactivity instance. @internal */
20
+ export interface ReactiveObjectPolicy {
21
+ readonly owner?: object;
22
+ readonly assertRead?: () => void;
23
+ readonly assertWrite?: () => void;
24
+ readonly runWrite?: <T>(operation: () => T) => T;
25
+ readonly throwForeign?: (owner: object | undefined) => never;
26
+ }
27
+ /** Associates Runtime lifecycle policy with an engine without widening its public class API. @internal */
28
+ export declare function configureReactiveObjectPolicy(engine: object, policy: ReactiveObjectPolicy): void;
29
+ /** Releases a Runtime-owned context while retained proxies become inert handles. @internal */
30
+ export declare function disposeReactiveObjectContext(engine: object, disposedPolicy?: ReactiveObjectPolicy): void;
31
+ /**
32
+ * Returns one stable Proxy per raw object inside one RaphReactivity instance.
33
+ * The context and both WeakMaps are allocated only after the first call.
34
+ * @internal
35
+ */
36
+ export declare function reactiveObject<T extends object>(engine: object, value: T, createBridge: () => ReactivePropertySourceBridge): T;
@@ -1,13 +1,26 @@
1
+ import { DisposalFailure } from './disposal';
1
2
  import { RaphReactivity } from './engine';
2
3
  import { Disposer, EffectCallback, OwnedResource, OwnedSource, ReadonlySignal, ScopeChildren, ScopeLink, Signal, SourceFinalizer, WatchCallback, WatchOptions, WatchSource, WritableComputedOptions } from './types';
3
4
  /**
4
- * Универсальный владелец ресурсов без фаз, путей и зависимости от Runtime.
5
- * Хранит ресурсы в двусвязном списке и освобождает их в обратном порядке.
6
- * Проверки lifetime выполняют только owned handles; свободные signal() не проходят
7
- * через владельца. Класс не является узлом графа зависимостей.
5
+ * Запись источника в списке владельца: сама хранит связь с соседом и сама
6
+ * освобождает источник, поэтому владельцу не нужна отдельная коллекция.
7
+ * @internal
8
8
  */
9
- export declare class ScopeNode {
10
- readonly reactivity: RaphReactivity;
9
+ export interface OwnedSourceEntry {
10
+ _previousSource: OwnedSourceEntry | undefined;
11
+ _finalizeSource: () => boolean;
12
+ }
13
+ /**
14
+ * Общая основа владельцев: список ресурсов, список источников и признаки
15
+ * lifetime лежат в самом владельце. ScopeNode добавляет standalone API,
16
+ * RaphScope — Runtime API; отдельного объекта-хранилища у владельца нет.
17
+ *
18
+ * Поля объявлены через `declare` и присваиваются в constructor в одном
19
+ * порядке: все владельцы одного класса получают один hidden class, а сборка с
20
+ * любым target не превращает объявления в вызовы field-helper.
21
+ * @internal
22
+ */
23
+ export declare abstract class ScopeOwner implements ScopeChildren<OwnedResource> {
11
24
  /**
12
25
  * Первый зарегистрированный ресурс; не является ребёнком execution-дерева.
13
26
  * @internal
@@ -19,14 +32,11 @@ export declare class ScopeNode {
19
32
  */
20
33
  scopeLastChild: OwnedResource | undefined;
21
34
  private _resourceCount;
22
- private _sourceFinalizers;
35
+ private _lastSource;
36
+ private _sourceCount;
23
37
  protected _disposed: boolean;
24
38
  protected _disposing: boolean;
25
- /**
26
- * Связывает владельца с реактивным экземпляром без создания нового графа.
27
- * @param reactivity Экземпляр, в котором создаются owned-ресурсы.
28
- */
29
- constructor(reactivity: RaphReactivity);
39
+ constructor();
30
40
  /**
31
41
  * Показывает, началось ли окончательное освобождение владельца.
32
42
  */
@@ -35,6 +45,88 @@ export declare class ScopeNode {
35
45
  * Разрешает регистрацию и доступ только до начала освобождения.
36
46
  */
37
47
  get active(): boolean;
48
+ /**
49
+ * Возвращает число ещё не освобождённых записей ресурсов.
50
+ * @internal
51
+ */
52
+ _debugResourceCount(): number;
53
+ /**
54
+ * Возвращает число зарегистрированных источников; после начала их
55
+ * финализации владелец источников не числит.
56
+ * @internal
57
+ */
58
+ _debugSourceCount(): number;
59
+ /**
60
+ * Возвращает последний зарегистрированный источник: с него по связям
61
+ * `_previousSource` обходится список источников владельца от нового к
62
+ * старому. С началом финализации владелец источников не числит, и метод
63
+ * возвращает undefined. Обход не должен регистрировать и освобождать
64
+ * источники этого владельца.
65
+ * @internal
66
+ */
67
+ _lastOwnedSource(): OwnedSourceEntry | undefined;
68
+ /**
69
+ * Вынимает запись ресурса из списка владельца и уменьшает счётчик. Запись
70
+ * вызывает метод из своего dispose() до пользовательского cleanup, иначе
71
+ * освобождение владельца не продвинется по списку. Повторный вызов и запись
72
+ * другого владельца безопасно игнорируются.
73
+ * @internal
74
+ */
75
+ _releaseRecord(entry: OwnedResource): void;
76
+ /**
77
+ * Ставит cleanup в конец списка ресурсов и возвращает его однократный stop.
78
+ * Lifetime не проверяет: это делает вызывающий метод владельца.
79
+ *
80
+ * Stop захватывает только запись, а не владельца: снятая запись теряет ссылку
81
+ * на владельца, поэтому удержанный stop не удерживает ни его, ни соседние
82
+ * записи.
83
+ */
84
+ protected _ownCleanup(cleanup: Disposer): Disposer;
85
+ /** Registers a framework cleanup; the public stop still exposes only raw failure. */
86
+ protected _ownCompleted(cleanup: () => DisposalFailure | undefined): Disposer;
87
+ /**
88
+ * Ставит готовую запись ресурса в конец списка без обёртки и closure: запись
89
+ * сама является элементом списка владельца. Её dispose() обязан сначала
90
+ * вызвать _releaseRecord(), иначе освобождение владельца не продвинется по
91
+ * списку. Предусловие: запись не состоит в другом списке.
92
+ * Lifetime не проверяет: это делает вызывающий метод владельца.
93
+ */
94
+ protected _ownRecord(entry: OwnedResource): void;
95
+ /**
96
+ * Ставит функцию-финализатор источника в список источников владельца.
97
+ * Lifetime не проверяет: это делает вызывающий метод владельца.
98
+ */
99
+ protected _ownSourceFinalizer(finalizer: SourceFinalizer): void;
100
+ /**
101
+ * Ставит готовую запись источника в список источников владельца без обёртки:
102
+ * источник сам является элементом списка и сам освобождает себя через
103
+ * _finalizeSource(). Предусловие: запись не состоит в другом списке.
104
+ * Lifetime не проверяет: это делает вызывающий метод владельца.
105
+ */
106
+ protected _ownSourceEntry(entry: OwnedSourceEntry): void;
107
+ /**
108
+ * Освобождает ресурсы в обратном порядке регистрации, затем финализирует
109
+ * источники. Сбой одной записи не останавливает остальные; массив ошибок
110
+ * создаётся только при первой ошибке.
111
+ */
112
+ protected _releaseOwned(): DisposalFailure[] | undefined;
113
+ }
114
+ /**
115
+ * Универсальный владелец ресурсов без фаз, путей и зависимости от Runtime.
116
+ * Хранит ресурсы в двусвязном списке и освобождает их в обратном порядке.
117
+ * Проверки lifetime выполняют только owned handles; свободные signal() не проходят
118
+ * через владельца. Класс не является узлом графа зависимостей.
119
+ */
120
+ export declare class ScopeNode extends ScopeOwner {
121
+ /**
122
+ * Экземпляр, в котором создаются owned-ресурсы.
123
+ */
124
+ readonly reactivity: RaphReactivity;
125
+ /**
126
+ * Связывает владельца с реактивным экземпляром без создания нового графа.
127
+ * @param reactivity Экземпляр, в котором создаются owned-ресурсы.
128
+ */
129
+ constructor(reactivity: RaphReactivity);
38
130
  /**
39
131
  * Создаёт owned signal и регистрирует его финализатор.
40
132
  * Все методы возвращённого handle проверяют, что владелец ещё активен.
@@ -62,16 +154,6 @@ export declare class ScopeNode {
62
154
  * Если владелец уже неактивен, выполняет cleanup сразу и возвращает пустой disposer.
63
155
  */
64
156
  own(disposer: Disposer): Disposer;
65
- /**
66
- * Возвращает число ещё не освобождённых записей ресурсов.
67
- * @internal
68
- */
69
- _debugResourceCount(): number;
70
- /**
71
- * Возвращает число зарегистрированных финализаторов источников.
72
- * @internal
73
- */
74
- _debugSourceCount(): number;
75
157
  /**
76
158
  * Освобождает ресурсы в обратном порядке, затем финализирует источники.
77
159
  * Повторный вызов безопасен. Ошибки cleanup и завершающего hook собираются
@@ -100,6 +182,8 @@ export declare class ScopeNode {
100
182
  /**
101
183
  * Добавляет финализатор источника. Возвращённый им false означает повторную попытку
102
184
  * после прогресса других финализаторов, а не успешное освобождение.
185
+ * Каждая регистрация — отдельный источник: одинаковые финализаторы владелец
186
+ * не объединяет, и функция, переданная дважды, будет вызвана дважды.
103
187
  * @internal
104
188
  */
105
189
  _ownSource(finalizer: SourceFinalizer): void;
@@ -118,17 +202,11 @@ export declare class ScopeNode {
118
202
  * Возвращает сообщение для AggregateError при нескольких ошибках освобождения.
119
203
  */
120
204
  protected _disposalMessage(): string;
121
- /**
122
- * Освобождает источники в обратном порядке регистрации с повторными попытками.
123
- * Если в проходе не было прогресса, прекращает обход, сохраняя существующий контракт.
124
- * Исключение одного финализатора не блокирует остальные.
125
- */
126
- private _finalizeSources;
127
205
  }
128
206
  /**
129
207
  * Добавляет дочерний ресурс в конец списка владельца без отдельной обёртки связей.
130
- * Предусловие: ребёнок ещё не находится в другом списке. Переиспользуется
131
- * ресурсами ScopeNode и записями вложенных эффектов.
208
+ * Предусловие: ребёнок ещё не находится в другом списке. Используется записями
209
+ * вложенных эффектов; владельцы ведут свой список ресурсов сами.
132
210
  * @internal
133
211
  */
134
212
  export declare function appendScopeChild<T extends ScopeLink<T>>(parent: ScopeChildren<T>, child: T): void;