@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
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=require("../../reactivity/engine.cjs"),O=require("../errors.cjs"),R=require("../phases/RaphPhaseTaskRecord.cjs"),S=require("./RaphSelector.cjs"),T=require("./RaphWorkGraph.cjs");let a,u;function A(n){return{schedule:n,dispose:g}}let v=0;function E(n){n.firstSub!==null&&++v}function N(n,e,t){n.firstSub===null&&t.delete(e)}const _=Object.freeze({}),m=Object.freeze({schedule:g,dispose:g}),b=64;class C{constructor(e){this.items=[e],this.shared=!1}detach(){const e=this.items.slice();return this.items=e,this.shared=!1,e}}class f extends T.RaphProducer{constructor(e,t,r,i){super(e,t,r),this._value=i,this._node=void 0,this._previousSource=void 0,this._writeTaps=void 0,this.source=this}get token(){return this}get dependencyOwner(){return this.owner}toJSON(){let e=0;for(let t=this._previousSource;t!==void 0&&e<b;t=t._previousSource)++e;return{kind:this.kind,owner:this.owner.id,index:e,revision:this.revision,disposed:this.disposed}}get(){const e=this.owner,t=e.runtime._getReactivity();w(t,e),e._assertAlive();const r=this._node;if(r!==void 0)return t._readSignalNode(r);const i=this._value,s=t._trackSignalNode(i,this);return s!==void 0&&(this._node=s,this._value=void 0),i}peek(){const e=this.owner,t=e.runtime._getReactivity();h(t._lifecycle),e._assertAlive();const r=this._node;return r===void 0?this._value:t._peekSignalNode(r)}set(e){const t=this.owner,r=t.runtime,i=r._getReactivity()._lifecycle,s=i.assertWriteAllowed;s===void 0?(h(i),t._assertAlive()):(t._assertAlive(),s()),r._enterWrite();try{this._write(e)}catch(o){throw r._failWrite(o)}r._exitWrite()}_writeInBoundary(e){const t=this.owner;h(t.runtime._getReactivity()._lifecycle),t._assertAlive(),this._write(e)}_addWriteTap(e){const t=this._writeTaps;if(t===void 0){e._tapSlot=0,this._writeTaps=new C(e);return}const r=t.shared?t.detach():t.items;e._tapSlot=r.length,r.push(e)}_removeWriteTap(e){const t=this._writeTaps;if(t===void 0)return;const r=e._tapSlot;if(r<0||t.items[r]!==e)return;if(e._tapSlot=-1,t.items.length===1){this._writeTaps=void 0;return}const i=t.shared?t.detach():t.items,s=i.pop();s!==e&&(i[r]=s,s._tapSlot=r)}onChange(e,t,r){this.owner.runtime._getWorkGraph()._notifyValueWrite(this,e,t,r)}onDispose(e){this.owner.runtime._getWorkGraph()._disposeProducer(this,e)}_findConsumerOwner(e,t){const r=this._writeTaps;if(r!==void 0){const s=r.items;for(let o=0;o<s.length;o++){const c=s[o]._tapOwner;if(e(c,t))return c}}const i=this._node;return i===void 0?void 0:this.owner.runtime._getReactivity()._findSubscriberOwner(i,e,t)}_finalizeSource(){if(this.disposed)return!0;this._value=void 0,this._writeTaps=void 0;const e=this._node,t=this.owner.runtime._getReactivity();let r;try{this.onDispose(e!==void 0&&t._signalNodeHasSubscribers(e))}catch(i){(r??=[]).push(i)}if(e!==void 0){this._node=void 0;try{t._releaseSignalNode(e)}catch(i){(r??=[]).push(i)}}if(r!==void 0)throw r.length===1?r[0]:new AggregateError(r,"Owned signal disposal failed.");return!0}_write(e){const t=this._writeTaps;if(t!==void 0){this._writeTapped(e,t);return}const r=this._node;if(r!==void 0){const s=this.owner.runtime,o=s._getReactivity(),c=o._visibleSignalValue(r);c!==e&&s._getWorkGraph()._notifyValueWrite(this,c,e,r.firstSub!==null),o._writeSignalNode(r,e);return}const i=this._value;i!==e&&(this.owner.runtime._getWorkGraph()._notifyValueWrite(this,i,e,!1),this._value=e)}_writeTapped(e,t){const r=this._node,i=this.owner.runtime._getReactivity(),s=r===void 0?this._value:i._visibleSignalValue(r);if(s===e)return;const o=t.items;t.shared=!0;let c=r!==void 0&&i._signalNodeHasSubscribers(r);for(let d=0;!c&&d<o.length;d++)c=o[d]._observesWrites();this.onChange(s,e,c);let l;if(r===void 0)this._value=e;else try{i._writeSignalNode(r,e)}catch(d){l=[d]}for(let d=0;d<o.length;d++)try{o[d]._afterSourceWrite(s,e)}catch(y){(l??=[]).push(y)}if(l!==void 0)throw l.length===1?l[0]:new AggregateError(l,"[Raph] Signal write and its observers failed.")}}class p extends k.RaphReactivity{constructor(e,t={}){super({...t.adaptiveDependencyIndex===void 0?{}:{adaptiveDependencyIndex:t.adaptiveDependencyIndex},effectScheduler:{bind:A}}),this._lifecycle=e,this._phaseBody=()=>{const r=this._activeEffectTask(),i=r.consumerOwner,s=a,o=u;a=e,u=i;let c;try{const l=r.effect;c=l(r.state&R.TASK_TASKLESS?r.group:r.task)}finally{a=s,u=o}return typeof c=="function"?I(this,c):c},p._releasedShapeAnchor??=W(this)}untrackedWithOwner(e){const t=a,r=u;a=void 0,u=void 0;try{return this.untracked(e)}finally{a=t,u=r}}_applyUntrackedWithOwner(e,t){const r=a,i=u;a=void 0,u=void 0;try{return this._isTracking()?this.untracked(()=>e(...t)):e(...t)}finally{a=r,u=i}}_runTaskEffectUntracked(e){const t=a,r=u;a=void 0,u=void 0;try{this._finishTaskEffectRun(e)}finally{a=t,u=r}}getActiveOwner(){return a===void 0?void 0:a.owner}getActiveConsumerOwner(){return u}hasActiveContext(){return a!==void 0||this._isTracking()}runWithOwner(e,t,r){const i=a,s=u;a=e,u=e===void 0?void 0:t;try{return r()}finally{a=i,u=s}}_findSignalConsumerOwner(e,t,r){for(let i=e._lastOwnedSource();i!==void 0;i=i._previousSource){if(!(i instanceof f)&&!(i instanceof S.RuntimeSelector))continue;const s=i._findConsumerOwner(t,r);if(s!==void 0)return s}}_assertTrackedRead(e){w(this,e)}_hasSingleSubscriber(e){const t=e.firstSub;return t!==null&&t===e.lastSub}_countObserved(e,t){let r=0;for(let i=0;i<e.length;i++){const s=e[i];s!==void 0&&s.firstSub!==null&&++r}return t!==void 0&&t.size!==0&&(v=0,t.forEach(E),r+=v),r}_dropUnobserved(e,t){let r=0;for(let i=0;i<e.length;i++){const s=e[i];s!==void 0&&(s.firstSub===null?e[i]=void 0:++r)}return t!==void 0&&t.size!==0&&t.forEach(N),r}selectorForOwner(e,t,r){if(!(e instanceof f))throw new TypeError("[Raph] selector() source must be a writable Runtime signal.");const i=r?.equals;if(i!==void 0&&typeof i!="function")throw new TypeError("[Raph] selector() equals must be a function.");const s=e.owner;if(s.runtime!==t.runtime)throw new O.RaphCrossRuntimeError("[Raph] selector() source belongs to another runtime.");s._assertAlive(),this._lifecycle.assertDependencyAllowed(s,t);const o=new S.RuntimeSelector(t,this,e,i);try{t._adoptSourceEntry(o)}catch(c){throw o._finalizeSource(),c}return o}signalForOwner(e,t,r="producer",i=!0){const s=new f(t,r,i,e);return t._adoptSourceEntry(s),s}computedForOwner(e,t,r){const i=this._lifecycle,s=t._adoptSource(this._ownedComputed(e,r));return{get:()=>{w(this,t),t._assertAlive();const o=s.get();return t._assertAlive(),o},peek(){h(i),t._assertAlive();const o=s.peek();return t._assertAlive(),o}}}}p._releasedShapeAnchor=void 0;function W(n){let e,t;const r=n._allocateTaskEffect(()=>{e=n._trackSignalNode(void 0,_),t=n._trackSignalNode(void 0,_)},m);n._requestTaskEffect(r,!1),n._beginTaskEffectRun(r),n._finishTaskEffectRun(r);const i=e.firstSub;n._disposeTaskEffect(r),n.batch(()=>n._writeSignalNode(t,0)),n._releaseSignalNode(e),n._releaseSignalNode(t);let s,o;const c=n._allocateTaskEffect(()=>{s=n._trackCounterNode(_),o=n._trackCounterNode(_)},m);return n._requestTaskEffect(c,!1),n._beginTaskEffectRun(c),n._finishTaskEffectRun(c),n.batch(()=>{n._bumpSignalNode(o)}),n._disposeTaskEffect(c),n._releaseSignalNode(s),n._releaseSignalNode(o),{source:e,written:t,edge:i,consumer:r,counter:s,bumped:o}}function I(n,e){return()=>n.untrackedWithOwner(e)}function h(n){n.owner===void 0&&n.throwDisposed()}function w(n,e){const t=n._lifecycle;h(t);const r=a;if(r!==void 0){r!==t&&t.throwCrossRuntime(r.owner);const s=u;s!==void 0&&s!==e&&t.assertDependencyAllowed(e,s);return}const i=n._activeSubscriberOwner();i!==void 0&&t.assertDependencyAllowed(e,i)}function g(){}exports.RuntimeReactivity=p;exports.RuntimeSignal=f;exports.SIGNAL_INDEX_LIMIT=b;
@@ -0,0 +1,550 @@
1
+ import { RaphReactivity as y } from "../../reactivity/engine.js";
2
+ import { RaphCrossRuntimeError as k } from "../errors.js";
3
+ import { TASK_TASKLESS as O } from "../phases/RaphPhaseTaskRecord.js";
4
+ import { RuntimeSelector as m } from "./RaphSelector.js";
5
+ import { RaphProducer as T } from "./RaphWorkGraph.js";
6
+ let a, d;
7
+ function A(n) {
8
+ return { schedule: n, dispose: w };
9
+ }
10
+ let p = 0;
11
+ function R(n) {
12
+ n.firstSub !== null && ++p;
13
+ }
14
+ function E(n, e, t) {
15
+ n.firstSub === null && t.delete(e);
16
+ }
17
+ const f = Object.freeze({}), S = Object.freeze({ schedule: w, dispose: w }), N = 64;
18
+ class C {
19
+ constructor(e) {
20
+ this.items = [e], this.shared = !1;
21
+ }
22
+ /**
23
+ * Заменяет список его копией, которую ещё не обходит ни одна запись, и
24
+ * возвращает её. Места наблюдателей в копии те же.
25
+ */
26
+ detach() {
27
+ const e = this.items.slice();
28
+ return this.items = e, this.shared = !1, e;
29
+ }
30
+ }
31
+ class _ extends T {
32
+ /**
33
+ * Создаёт signal своим собственным handle. Регистрацию у владельца
34
+ * выполняет вызывающий код.
35
+ */
36
+ constructor(e, t, r, s) {
37
+ super(e, t, r), this._value = s, this._node = void 0, this._previousSource = void 0, this._writeTaps = void 0, this.source = this;
38
+ }
39
+ /**
40
+ * Identity producer для задач implicit effects: сам signal.
41
+ * @internal
42
+ */
43
+ get token() {
44
+ return this;
45
+ }
46
+ /**
47
+ * Владелец signal. Engine читает это поле только у потребителей, а signal
48
+ * потребителем не бывает; getter сохраняет полный контракт source hooks.
49
+ * @internal
50
+ */
51
+ get dependencyOwner() {
52
+ return this.owner;
53
+ }
54
+ /**
55
+ * Возвращает компактное описание signal для JSON.stringify, логов и diff
56
+ * неуспешной проверки. К описанию producer добавлен номер signal среди
57
+ * источников его владельца в порядке регистрации: один и тот же signal
58
+ * описывается одинаково, сколько бы раз и через какую копию его ни
59
+ * печатали, а разные живые signals одного владельца различаются номером,
60
+ * пока он меньше SIGNAL_INDEX_LIMIT. Номер считается проходом по списку
61
+ * источников только при сериализации и не дальше этой границы: у каждого
62
+ * источника, зарегистрированного после первых SIGNAL_INDEX_LIMIT, он равен
63
+ * границе. У освобождённого signal номер равен нулю. Значение в описание не
64
+ * входит: оно может быть сколь угодно большим и само содержать циклы.
65
+ */
66
+ toJSON() {
67
+ let e = 0;
68
+ for (let t = this._previousSource; t !== void 0 && e < N; t = t._previousSource)
69
+ ++e;
70
+ return {
71
+ kind: this.kind,
72
+ owner: this.owner.id,
73
+ index: e,
74
+ revision: this.revision,
75
+ disposed: this.disposed
76
+ };
77
+ }
78
+ /**
79
+ * Читает значение и регистрирует зависимость активного потребителя.
80
+ */
81
+ get() {
82
+ const e = this.owner, t = e.runtime._getReactivity();
83
+ v(t, e), e._assertAlive();
84
+ const r = this._node;
85
+ if (r !== void 0)
86
+ return t._readSignalNode(r);
87
+ const s = this._value, i = t._trackSignalNode(s, this);
88
+ return i !== void 0 && (this._node = i, this._value = void 0), s;
89
+ }
90
+ /**
91
+ * Читает значение без подписки текущего потребителя.
92
+ */
93
+ peek() {
94
+ const e = this.owner, t = e.runtime._getReactivity();
95
+ h(t._lifecycle), e._assertAlive();
96
+ const r = this._node;
97
+ return r === void 0 ? this._value : t._peekSignalNode(r);
98
+ }
99
+ /**
100
+ * Записывает значение в собственной границе записи Runtime. Граница
101
+ * открывается и закрывается явными вызовами, без closure.
102
+ */
103
+ set(e) {
104
+ const t = this.owner, r = t.runtime, s = r._getReactivity()._lifecycle, i = s.assertWriteAllowed;
105
+ i === void 0 ? (h(s), t._assertAlive()) : (t._assertAlive(), i()), r._enterWrite();
106
+ try {
107
+ this._write(e);
108
+ } catch (o) {
109
+ throw r._failWrite(o);
110
+ }
111
+ r._exitWrite();
112
+ }
113
+ /**
114
+ * Записывает значение внутри уже открытой границы записи, минуя политику
115
+ * actions: так Runtime продвигает собственный frame signal.
116
+ * @internal
117
+ */
118
+ _writeInBoundary(e) {
119
+ const t = this.owner;
120
+ h(t.runtime._getReactivity()._lifecycle), t._assertAlive(), this._write(e);
121
+ }
122
+ /**
123
+ * Подключает наблюдателя фактических записей этого signal. Наблюдатель
124
+ * вызывается синхронно внутри границы записи, после того как новое значение
125
+ * стало видимым для чтения, и до выхода из записи. Запись, которая уже идёт,
126
+ * нового наблюдателя не вызывает. Цена подключения не зависит от числа
127
+ * наблюдателей.
128
+ * @internal
129
+ */
130
+ _addWriteTap(e) {
131
+ const t = this._writeTaps;
132
+ if (t === void 0) {
133
+ e._tapSlot = 0, this._writeTaps = new C(e);
134
+ return;
135
+ }
136
+ const r = t.shared ? t.detach() : t.items;
137
+ e._tapSlot = r.length, r.push(e);
138
+ }
139
+ /**
140
+ * Отключает наблюдателя записей: его место занимает последний наблюдатель
141
+ * списка. Запись, которая уже идёт, ещё вызовет отключённого наблюдателя.
142
+ * Отключение неизвестного наблюдателя и отключение у освобождённого signal
143
+ * безопасны. Цена отключения не зависит от числа наблюдателей.
144
+ * @internal
145
+ */
146
+ _removeWriteTap(e) {
147
+ const t = this._writeTaps;
148
+ if (t === void 0)
149
+ return;
150
+ const r = e._tapSlot;
151
+ if (r < 0 || t.items[r] !== e)
152
+ return;
153
+ if (e._tapSlot = -1, t.items.length === 1) {
154
+ this._writeTaps = void 0;
155
+ return;
156
+ }
157
+ const s = t.shared ? t.detach() : t.items, i = s.pop();
158
+ i !== e && (s[r] = i, i._tapSlot = r);
159
+ }
160
+ /**
161
+ * Сообщает WorkGraph о фактической записи до распространения по графу.
162
+ * @internal
163
+ */
164
+ onChange(e, t, r) {
165
+ this.owner.runtime._getWorkGraph()._notifyValueWrite(
166
+ this,
167
+ e,
168
+ t,
169
+ r
170
+ );
171
+ }
172
+ /**
173
+ * Освобождает producer-сторону signal в WorkGraph.
174
+ * @internal
175
+ */
176
+ onDispose(e) {
177
+ this.owner.runtime._getWorkGraph()._disposeProducer(this, e);
178
+ }
179
+ /**
180
+ * Ищет среди текущих потребителей signal в графе первого, чьего владельца
181
+ * принимает accept, и возвращает этого владельца. Signal не ведёт учёта
182
+ * своих implicit-рёбер и не имеет hook onDependency: рёбра читаются из
183
+ * записи графа только по запросу. У signal без записи графа потребителей
184
+ * нет: его ещё не читал ни один потребитель либо он уже освобождён.
185
+ * Владельцы наблюдателей записи считаются потребителями наравне с ними.
186
+ * @internal
187
+ */
188
+ _findConsumerOwner(e, t) {
189
+ const r = this._writeTaps;
190
+ if (r !== void 0) {
191
+ const i = r.items;
192
+ for (let o = 0; o < i.length; o++) {
193
+ const c = i[o]._tapOwner;
194
+ if (e(c, t))
195
+ return c;
196
+ }
197
+ }
198
+ const s = this._node;
199
+ return s === void 0 ? void 0 : this.owner.runtime._getReactivity()._findSubscriberOwner(s, e, t);
200
+ }
201
+ /**
202
+ * Освобождает signal как источник владельца: публикует финальную причину,
203
+ * отсоединяет запись графа и отпускает значение. Сбой одного шага не
204
+ * отменяет остальные. Повторный вызов безопасен.
205
+ * @internal
206
+ */
207
+ _finalizeSource() {
208
+ if (this.disposed)
209
+ return !0;
210
+ this._value = void 0, this._writeTaps = void 0;
211
+ const e = this._node, t = this.owner.runtime._getReactivity();
212
+ let r;
213
+ try {
214
+ this.onDispose(e !== void 0 && t._signalNodeHasSubscribers(e));
215
+ } catch (s) {
216
+ (r ??= []).push(s);
217
+ }
218
+ if (e !== void 0) {
219
+ this._node = void 0;
220
+ try {
221
+ t._releaseSignalNode(e);
222
+ } catch (s) {
223
+ (r ??= []).push(s);
224
+ }
225
+ }
226
+ if (r !== void 0)
227
+ throw r.length === 1 ? r[0] : new AggregateError(r, "Owned signal disposal failed.");
228
+ return !0;
229
+ }
230
+ /**
231
+ * Записывает значение без проверок lifetime и без границы записи.
232
+ * Критерий изменения — ===, как у записи графа.
233
+ */
234
+ _write(e) {
235
+ const t = this._writeTaps;
236
+ if (t !== void 0) {
237
+ this._writeTapped(e, t);
238
+ return;
239
+ }
240
+ const r = this._node;
241
+ if (r !== void 0) {
242
+ const i = this.owner.runtime, o = i._getReactivity(), c = o._visibleSignalValue(r);
243
+ c !== e && i._getWorkGraph()._notifyValueWrite(this, c, e, r.firstSub !== null), o._writeSignalNode(r, e);
244
+ return;
245
+ }
246
+ const s = this._value;
247
+ s !== e && (this.owner.runtime._getWorkGraph()._notifyValueWrite(this, s, e, !1), this._value = e);
248
+ }
249
+ /**
250
+ * Запись signal с наблюдателями. Отличается от `_write()` двумя вещами.
251
+ * Причина записи публикуется и тогда, когда потребители есть только у
252
+ * наблюдателя: их будит эта же запись. После того как новое значение стало
253
+ * видимым, каждый наблюдатель получает прежнее и новое значение. Сбой
254
+ * распространения по графу или одного наблюдателя не отменяет остальных.
255
+ *
256
+ * Запись обходит тот список наблюдателей, который застала: подключение и
257
+ * отключение во время обхода меняют его копию.
258
+ */
259
+ _writeTapped(e, t) {
260
+ const r = this._node, s = this.owner.runtime._getReactivity(), i = r === void 0 ? this._value : s._visibleSignalValue(r);
261
+ if (i === e)
262
+ return;
263
+ const o = t.items;
264
+ t.shared = !0;
265
+ let c = r !== void 0 && s._signalNodeHasSubscribers(r);
266
+ for (let u = 0; !c && u < o.length; u++)
267
+ c = o[u]._observesWrites();
268
+ this.onChange(i, e, c);
269
+ let l;
270
+ if (r === void 0)
271
+ this._value = e;
272
+ else
273
+ try {
274
+ s._writeSignalNode(r, e);
275
+ } catch (u) {
276
+ l = [u];
277
+ }
278
+ for (let u = 0; u < o.length; u++)
279
+ try {
280
+ o[u]._afterSourceWrite(i, e);
281
+ } catch (b) {
282
+ (l ??= []).push(b);
283
+ }
284
+ if (l !== void 0)
285
+ throw l.length === 1 ? l[0] : new AggregateError(l, "[Raph] Signal write and its observers failed.");
286
+ }
287
+ }
288
+ class g extends y {
289
+ /**
290
+ * Создаёт policy adapter реактивного графа для одного runtime.
291
+ * @param _lifecycle Политика lifetime и записи Runtime; её читают handles
292
+ * этого графа, поэтому поле доступно внутри пакета.
293
+ */
294
+ constructor(e, t = {}) {
295
+ super({
296
+ ...t.adaptiveDependencyIndex === void 0 ? {} : { adaptiveDependencyIndex: t.adaptiveDependencyIndex },
297
+ effectScheduler: { bind: A }
298
+ }), this._lifecycle = e, this._phaseBody = () => {
299
+ const r = this._activeEffectTask(), s = r.consumerOwner, i = a, o = d;
300
+ a = e, d = s;
301
+ let c;
302
+ try {
303
+ const l = r.effect;
304
+ c = l(r.state & O ? r.group : r.task);
305
+ } finally {
306
+ a = i, d = o;
307
+ }
308
+ return typeof c == "function" ? D(this, c) : c;
309
+ }, g._releasedShapeAnchor ??= W(this);
310
+ }
311
+ /**
312
+ * Выполняет untracked-операцию, сохраняя runtime owner context.
313
+ */
314
+ untrackedWithOwner(e) {
315
+ const t = a, r = d;
316
+ a = void 0, d = void 0;
317
+ try {
318
+ return this.untracked(e);
319
+ } finally {
320
+ a = t, d = r;
321
+ }
322
+ }
323
+ /**
324
+ * Вызывает операцию с её аргументами вне Runtime owner context и вне graph
325
+ * consumer: форма `untrackedWithOwner(() => operation(...args))` без closure.
326
+ * Closure создаётся, только когда вызов пришёл изнутри отслеживаемого
327
+ * вычисления и graph consumer нужно снять.
328
+ *
329
+ * @internal
330
+ */
331
+ _applyUntrackedWithOwner(e, t) {
332
+ const r = a, s = d;
333
+ a = void 0, d = void 0;
334
+ try {
335
+ return this._isTracking() ? this.untracked(() => e(...t)) : e(...t);
336
+ } finally {
337
+ a = r, d = s;
338
+ }
339
+ }
340
+ /**
341
+ * Выполняет одну открытую доставку phase effect вне Runtime owner context и
342
+ * вне graph consumer: форма untrackedWithOwner() без closure для записи,
343
+ * подготовленной через _beginTaskEffectRun().
344
+ *
345
+ * @internal
346
+ */
347
+ _runTaskEffectUntracked(e) {
348
+ const t = a, r = d;
349
+ a = void 0, d = void 0;
350
+ try {
351
+ this._finishTaskEffectRun(e);
352
+ } finally {
353
+ a = t, d = r;
354
+ }
355
+ }
356
+ /**
357
+ * Возвращает owner текущего синхронного реактивного контекста.
358
+ */
359
+ getActiveOwner() {
360
+ return a === void 0 ? void 0 : a.owner;
361
+ }
362
+ /** Returns the Runtime resource owner whose implicit dependencies are being collected. */
363
+ getActiveConsumerOwner() {
364
+ return d;
365
+ }
366
+ /**
367
+ * Сообщает, должен ли untracked work очищать graph consumer или Runtime owner context.
368
+ */
369
+ hasActiveContext() {
370
+ return a !== void 0 || this._isTracking();
371
+ }
372
+ /**
373
+ * Выполняет операцию с указанным active owner.
374
+ */
375
+ runWithOwner(e, t, r) {
376
+ const s = a, i = d;
377
+ a = e, d = e === void 0 ? void 0 : t;
378
+ try {
379
+ return r();
380
+ } finally {
381
+ a = s, d = i;
382
+ }
383
+ }
384
+ /**
385
+ * Ищет среди текущих потребителей Runtime signals владельца `sourceOwner`
386
+ * первого, чьего владельца принимает accept, и возвращает этого владельца.
387
+ * Signals обходятся от нового к старому по списку источников владельца;
388
+ * остальные источники списка пропускаются: их рёбра учитывает сам WorkGraph.
389
+ * Обход ничего не выделяет. Его цена — длина списка источников владельца
390
+ * плюс потребители каждого его signal с записью графа до первого принятого.
391
+ *
392
+ * @internal
393
+ */
394
+ _findSignalConsumerOwner(e, t, r) {
395
+ for (let s = e._lastOwnedSource(); s !== void 0; s = s._previousSource) {
396
+ if (!(s instanceof _) && !(s instanceof m))
397
+ continue;
398
+ const i = s._findConsumerOwner(t, r);
399
+ if (i !== void 0)
400
+ return i;
401
+ }
402
+ }
403
+ /**
404
+ * Проверяет отслеживаемое чтение источника владельца `sourceOwner` теми же
405
+ * правилами, что и чтение его Runtime signal: Runtime жив, активный
406
+ * потребитель принадлежит этому Runtime и вправе неявно зависеть от
407
+ * владельца. Lifetime самого владельца проверяет вызывающий код.
408
+ *
409
+ * @internal
410
+ */
411
+ _assertTrackedRead(e) {
412
+ v(this, e);
413
+ }
414
+ /**
415
+ * Сообщает, что у записи ровно один потребитель. Внутри cleanup связи,
416
+ * который engine вызывает до снятия этой связи со списка, ответ `true`
417
+ * означает, что снимается последняя связь записи.
418
+ *
419
+ * @internal
420
+ */
421
+ _hasSingleSubscriber(e) {
422
+ const t = e.firstSub;
423
+ return t !== null && t === e.lastSub;
424
+ }
425
+ /**
426
+ * Считает записи, у которых есть потребители, в двух частях одного индекса:
427
+ * в ряду, где пустое место хранит undefined, и в индексе по ключам, если он
428
+ * есть. Ряд обходится циклом без вызовов. Обход ничего не выделяет и не
429
+ * меняет граф.
430
+ *
431
+ * @internal
432
+ */
433
+ _countObserved(e, t) {
434
+ let r = 0;
435
+ for (let s = 0; s < e.length; s++) {
436
+ const i = e[s];
437
+ i !== void 0 && i.firstSub !== null && ++r;
438
+ }
439
+ return t !== void 0 && t.size !== 0 && (p = 0, t.forEach(R), r += p), r;
440
+ }
441
+ /**
442
+ * Убирает записи без потребителей из обеих частей индекса: место ряда
443
+ * становится пустым, запись индекса по ключам удаляется. Возвращает число
444
+ * мест ряда, оставшихся занятыми. Сами записи не освобождаются: без
445
+ * потребителей и без ссылки из индекса они недостижимы.
446
+ *
447
+ * @internal
448
+ */
449
+ _dropUnobserved(e, t) {
450
+ let r = 0;
451
+ for (let s = 0; s < e.length; s++) {
452
+ const i = e[s];
453
+ i !== void 0 && (i.firstSub === null ? e[s] = void 0 : ++r);
454
+ }
455
+ return t !== void 0 && t.size !== 0 && t.forEach(E), r;
456
+ }
457
+ /**
458
+ * Создаёт selector над записываемым Runtime signal и ставит его в список
459
+ * источников владельца. Source должен быть доступен владельцу для implicit
460
+ * чтения: принадлежать ему самому, его предку или root scope. Тогда source
461
+ * переживает selector, а потребители selector могли бы читать source сами.
462
+ */
463
+ selectorForOwner(e, t, r) {
464
+ if (!(e instanceof _))
465
+ throw new TypeError("[Raph] selector() source must be a writable Runtime signal.");
466
+ const s = r?.equals;
467
+ if (s !== void 0 && typeof s != "function")
468
+ throw new TypeError("[Raph] selector() equals must be a function.");
469
+ const i = e.owner;
470
+ if (i.runtime !== t.runtime)
471
+ throw new k("[Raph] selector() source belongs to another runtime.");
472
+ i._assertAlive(), this._lifecycle.assertDependencyAllowed(i, t);
473
+ const o = new m(t, this, e, s);
474
+ try {
475
+ t._adoptSourceEntry(o);
476
+ } catch (c) {
477
+ throw o._finalizeSource(), c;
478
+ }
479
+ return o;
480
+ }
481
+ /**
482
+ * Создаёт Runtime signal и ставит его в список источников владельца. Signal
483
+ * одним объектом является handle, producer WorkGraph и записью источника.
484
+ */
485
+ signalForOwner(e, t, r = "producer", s = !0) {
486
+ const i = new _(t, r, s, e);
487
+ return t._adoptSourceEntry(i), i;
488
+ }
489
+ /**
490
+ * Создаёт owned computed с runtime lifecycle policy.
491
+ */
492
+ computedForOwner(e, t, r) {
493
+ const s = this._lifecycle, i = t._adoptSource(this._ownedComputed(e, r));
494
+ return {
495
+ get: () => {
496
+ v(this, t), t._assertAlive();
497
+ const o = i.get();
498
+ return t._assertAlive(), o;
499
+ },
500
+ peek() {
501
+ h(s), t._assertAlive();
502
+ const o = i.peek();
503
+ return t._assertAlive(), o;
504
+ }
505
+ };
506
+ }
507
+ }
508
+ g._releasedShapeAnchor = void 0;
509
+ function W(n) {
510
+ let e, t;
511
+ const r = n._allocateTaskEffect(() => {
512
+ e = n._trackSignalNode(void 0, f), t = n._trackSignalNode(void 0, f);
513
+ }, S);
514
+ n._requestTaskEffect(r, !1), n._beginTaskEffectRun(r), n._finishTaskEffectRun(r);
515
+ const s = e.firstSub;
516
+ n._disposeTaskEffect(r), n.batch(() => n._writeSignalNode(t, 0)), n._releaseSignalNode(e), n._releaseSignalNode(t);
517
+ let i, o;
518
+ const c = n._allocateTaskEffect(() => {
519
+ i = n._trackCounterNode(f), o = n._trackCounterNode(f);
520
+ }, S);
521
+ return n._requestTaskEffect(c, !1), n._beginTaskEffectRun(c), n._finishTaskEffectRun(c), n.batch(() => {
522
+ n._bumpSignalNode(o);
523
+ }), n._disposeTaskEffect(c), n._releaseSignalNode(i), n._releaseSignalNode(o), { source: e, written: t, edge: s, consumer: r, counter: i, bumped: o };
524
+ }
525
+ function D(n, e) {
526
+ return () => n.untrackedWithOwner(e);
527
+ }
528
+ function h(n) {
529
+ n.owner === void 0 && n.throwDisposed();
530
+ }
531
+ function v(n, e) {
532
+ const t = n._lifecycle;
533
+ h(t);
534
+ const r = a;
535
+ if (r !== void 0) {
536
+ r !== t && t.throwCrossRuntime(r.owner);
537
+ const i = d;
538
+ i !== void 0 && i !== e && t.assertDependencyAllowed(e, i);
539
+ return;
540
+ }
541
+ const s = n._activeSubscriberOwner();
542
+ s !== void 0 && t.assertDependencyAllowed(e, s);
543
+ }
544
+ function w() {
545
+ }
546
+ export {
547
+ g as RuntimeReactivity,
548
+ _ as RuntimeSignal,
549
+ N as SIGNAL_INDEX_LIMIT
550
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});class h{constructor(s,t){this._cleanup=void 0,this._stopped=!1,this._runUntracked=s,this._callback=t,this.deliver=()=>{if(this._stopped)return;const e=this._cleanup;if(e===void 0){const i=this._callback();if(typeof i!="function")return;this._stopped?this._runUntracked(i):this._cleanup=i;return}this._deliverWithCleanup(e)}}get stopped(){return this._stopped}_deliverWithCleanup(s){const t=[];if(this._cleanup=void 0,this._attempt(s,t),!this._stopped){let e=null;try{const i=this._runUntracked(this._callback);typeof i=="function"&&(e=i)}catch(i){t.push(i)}e!==null&&(this._stopped?this._attempt(e,t):this._cleanup=e)}r(t)}stop(s){if(this._stopped)return;this._stopped=!0;const t=[];if(s!==void 0)try{s()}catch(i){t.push(i)}const e=this._cleanup;this._cleanup=void 0,e!==void 0&&this._attempt(e,t),r(t)}_attempt(s,t){try{this._runUntracked(s)}catch(e){t.push(e)}}}function r(n){if(n.length===1)throw n[0];if(n.length>1)throw new AggregateError(n,"[Raph] Runtime watch delivery failed.")}exports.RuntimeWatch=h;
@@ -0,0 +1,77 @@
1
+ class h {
2
+ /**
3
+ * Создаёт runtime-owned watch с явным lifecycle остановки.
4
+ */
5
+ constructor(s, t) {
6
+ this._cleanup = void 0, this._stopped = !1, this._runUntracked = s, this._callback = t, this.deliver = () => {
7
+ if (this._stopped)
8
+ return;
9
+ const e = this._cleanup;
10
+ if (e === void 0) {
11
+ const i = this._callback();
12
+ if (typeof i != "function")
13
+ return;
14
+ this._stopped ? this._runUntracked(i) : this._cleanup = i;
15
+ return;
16
+ }
17
+ this._deliverWithCleanup(e);
18
+ };
19
+ }
20
+ /**
21
+ * Показывает, остановлен ли watch.
22
+ */
23
+ get stopped() {
24
+ return this._stopped;
25
+ }
26
+ /**
27
+ * Preserves cleanup/callback error aggregation and reentrant stop semantics
28
+ * for the less common resource-returning callback path.
29
+ */
30
+ _deliverWithCleanup(s) {
31
+ const t = [];
32
+ if (this._cleanup = void 0, this._attempt(s, t), !this._stopped) {
33
+ let e = null;
34
+ try {
35
+ const i = this._runUntracked(this._callback);
36
+ typeof i == "function" && (e = i);
37
+ } catch (i) {
38
+ t.push(i);
39
+ }
40
+ e !== null && (this._stopped ? this._attempt(e, t) : this._cleanup = e);
41
+ }
42
+ r(t);
43
+ }
44
+ /**
45
+ * Останавливает внешнюю регистрацию и cleanup callback, сохраняя обе ошибки.
46
+ */
47
+ stop(s) {
48
+ if (this._stopped)
49
+ return;
50
+ this._stopped = !0;
51
+ const t = [];
52
+ if (s !== void 0)
53
+ try {
54
+ s();
55
+ } catch (i) {
56
+ t.push(i);
57
+ }
58
+ const e = this._cleanup;
59
+ this._cleanup = void 0, e !== void 0 && this._attempt(e, t), r(t);
60
+ }
61
+ _attempt(s, t) {
62
+ try {
63
+ this._runUntracked(s);
64
+ } catch (e) {
65
+ t.push(e);
66
+ }
67
+ }
68
+ }
69
+ function r(n) {
70
+ if (n.length === 1)
71
+ throw n[0];
72
+ if (n.length > 1)
73
+ throw new AggregateError(n, "[Raph] Runtime watch delivery failed.");
74
+ }
75
+ export {
76
+ h as RuntimeWatch
77
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});function w(t,n,e){n._sweepDue=e,t.push(n),S(t,n,t.length-1)}function _(t,n){const e=n._sweepSlot;if(e<0||t[e]!==n)return!1;n._sweepSlot=-1;const o=t.pop();return o===n||(e!==0&&o._sweepDue<t[e-1>>1]._sweepDue?S(t,o,e):s(t,o,e)),!0}function f(t,n){const e=t[0];e._sweepDue=n,s(t,e,0)}function S(t,n,e){const o=n._sweepDue;for(;e!==0;){const i=e-1>>1,p=t[i];if(p._sweepDue<=o)break;t[e]=p,p._sweepSlot=e,e=i}t[e]=n,n._sweepSlot=e}function s(t,n,e){const o=t.length,i=n._sweepDue;for(let p=e*2+1;p<o;p=e*2+1){const r=p+1;r<o&&t[r]._sweepDue<t[p]._sweepDue&&(p=r);const c=t[p];if(c._sweepDue>=i)break;t[e]=c,c._sweepSlot=e,e=p}t[e]=n,n._sweepSlot=e}exports.dequeueSweeper=_;exports.enqueueSweeper=w;exports.postponeFirstSweeper=f;