palistor 0.0.24

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 (431) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +947 -0
  3. package/dist/index.d.ts +54 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +58 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/react/createTrackingProxy.d.ts +55 -0
  8. package/dist/react/createTrackingProxy.d.ts.map +1 -0
  9. package/dist/react/createTrackingProxy.js +149 -0
  10. package/dist/react/createTrackingProxy.js.map +1 -0
  11. package/dist/react/useForm.d.ts +108 -0
  12. package/dist/react/useForm.d.ts.map +1 -0
  13. package/dist/react/useForm.js +180 -0
  14. package/dist/react/useForm.js.map +1 -0
  15. package/dist/react/useNotifier.d.ts +35 -0
  16. package/dist/react/useNotifier.d.ts.map +1 -0
  17. package/dist/react/useNotifier.js +41 -0
  18. package/dist/react/useNotifier.js.map +1 -0
  19. package/dist/react/usePersist.d.ts +45 -0
  20. package/dist/react/usePersist.d.ts.map +1 -0
  21. package/dist/react/usePersist.js +60 -0
  22. package/dist/react/usePersist.js.map +1 -0
  23. package/dist/react/useStoreContext.d.ts +42 -0
  24. package/dist/react/useStoreContext.d.ts.map +1 -0
  25. package/dist/react/useStoreContext.js +46 -0
  26. package/dist/react/useStoreContext.js.map +1 -0
  27. package/dist/react/useTranslator.d.ts +37 -0
  28. package/dist/react/useTranslator.d.ts.map +1 -0
  29. package/dist/react/useTranslator.js +43 -0
  30. package/dist/react/useTranslator.js.map +1 -0
  31. package/dist/store/applyPatch/applyPatch.d.ts +17 -0
  32. package/dist/store/applyPatch/applyPatch.d.ts.map +1 -0
  33. package/dist/store/applyPatch/applyPatch.js +44 -0
  34. package/dist/store/applyPatch/applyPatch.js.map +1 -0
  35. package/dist/store/buildProxy/buildEntityProjectionProxy.d.ts +52 -0
  36. package/dist/store/buildProxy/buildEntityProjectionProxy.d.ts.map +1 -0
  37. package/dist/store/buildProxy/buildEntityProjectionProxy.js +321 -0
  38. package/dist/store/buildProxy/buildEntityProjectionProxy.js.map +1 -0
  39. package/dist/store/buildProxy/buildListProxy.d.ts +33 -0
  40. package/dist/store/buildProxy/buildListProxy.d.ts.map +1 -0
  41. package/dist/store/buildProxy/buildListProxy.js +306 -0
  42. package/dist/store/buildProxy/buildListProxy.js.map +1 -0
  43. package/dist/store/buildProxy/buildProxy.d.ts +41 -0
  44. package/dist/store/buildProxy/buildProxy.d.ts.map +1 -0
  45. package/dist/store/buildProxy/buildProxy.js +380 -0
  46. package/dist/store/buildProxy/buildProxy.js.map +1 -0
  47. package/dist/store/buildProxy/computeProxyKeys.d.ts +15 -0
  48. package/dist/store/buildProxy/computeProxyKeys.d.ts.map +1 -0
  49. package/dist/store/buildProxy/computeProxyKeys.js +28 -0
  50. package/dist/store/buildProxy/computeProxyKeys.js.map +1 -0
  51. package/dist/store/buildProxy/handleLazyResolve.d.ts +10 -0
  52. package/dist/store/buildProxy/handleLazyResolve.d.ts.map +1 -0
  53. package/dist/store/buildProxy/handleLazyResolve.js +26 -0
  54. package/dist/store/buildProxy/handleLazyResolve.js.map +1 -0
  55. package/dist/store/buildProxy/initProxyCaches.d.ts +16 -0
  56. package/dist/store/buildProxy/initProxyCaches.d.ts.map +1 -0
  57. package/dist/store/buildProxy/initProxyCaches.js +17 -0
  58. package/dist/store/buildProxy/initProxyCaches.js.map +1 -0
  59. package/dist/store/compute/computeFieldState.d.ts +10 -0
  60. package/dist/store/compute/computeFieldState.d.ts.map +1 -0
  61. package/dist/store/compute/computeFieldState.js +53 -0
  62. package/dist/store/compute/computeFieldState.js.map +1 -0
  63. package/dist/store/compute/fieldStateChanged.d.ts +6 -0
  64. package/dist/store/compute/fieldStateChanged.d.ts.map +1 -0
  65. package/dist/store/compute/fieldStateChanged.js +20 -0
  66. package/dist/store/compute/fieldStateChanged.js.map +1 -0
  67. package/dist/store/compute/index.d.ts +7 -0
  68. package/dist/store/compute/index.d.ts.map +1 -0
  69. package/dist/store/compute/index.js +6 -0
  70. package/dist/store/compute/index.js.map +1 -0
  71. package/dist/store/compute/isEmpty.d.ts +6 -0
  72. package/dist/store/compute/isEmpty.d.ts.map +1 -0
  73. package/dist/store/compute/isEmpty.js +14 -0
  74. package/dist/store/compute/isEmpty.js.map +1 -0
  75. package/dist/store/compute/recompute/collectGroupComputeNodes.d.ts +11 -0
  76. package/dist/store/compute/recompute/collectGroupComputeNodes.d.ts.map +1 -0
  77. package/dist/store/compute/recompute/collectGroupComputeNodes.js +26 -0
  78. package/dist/store/compute/recompute/collectGroupComputeNodes.js.map +1 -0
  79. package/dist/store/compute/recompute/collectGroupLeafNodes.d.ts +11 -0
  80. package/dist/store/compute/recompute/collectGroupLeafNodes.d.ts.map +1 -0
  81. package/dist/store/compute/recompute/collectGroupLeafNodes.js +26 -0
  82. package/dist/store/compute/recompute/collectGroupLeafNodes.js.map +1 -0
  83. package/dist/store/compute/recompute/index.d.ts +7 -0
  84. package/dist/store/compute/recompute/index.d.ts.map +1 -0
  85. package/dist/store/compute/recompute/index.js +6 -0
  86. package/dist/store/compute/recompute/index.js.map +1 -0
  87. package/dist/store/compute/recompute/recomputeAndNotify.d.ts +8 -0
  88. package/dist/store/compute/recompute/recomputeAndNotify.d.ts.map +1 -0
  89. package/dist/store/compute/recompute/recomputeAndNotify.js +13 -0
  90. package/dist/store/compute/recompute/recomputeAndNotify.js.map +1 -0
  91. package/dist/store/compute/recompute/recomputeLeaves.d.ts +23 -0
  92. package/dist/store/compute/recompute/recomputeLeaves.d.ts.map +1 -0
  93. package/dist/store/compute/recompute/recomputeLeaves.js +77 -0
  94. package/dist/store/compute/recompute/recomputeLeaves.js.map +1 -0
  95. package/dist/store/compute/recompute/recomputeTargeted.d.ts +14 -0
  96. package/dist/store/compute/recompute/recomputeTargeted.d.ts.map +1 -0
  97. package/dist/store/compute/recompute/recomputeTargeted.js +50 -0
  98. package/dist/store/compute/recompute/recomputeTargeted.js.map +1 -0
  99. package/dist/store/compute/recompute/topologicalSortComputed.d.ts +16 -0
  100. package/dist/store/compute/recompute/topologicalSortComputed.d.ts.map +1 -0
  101. package/dist/store/compute/recompute/topologicalSortComputed.js +60 -0
  102. package/dist/store/compute/recompute/topologicalSortComputed.js.map +1 -0
  103. package/dist/store/compute/recompute/types.d.ts +24 -0
  104. package/dist/store/compute/recompute/types.d.ts.map +1 -0
  105. package/dist/store/compute/recompute/types.js +2 -0
  106. package/dist/store/compute/recompute/types.js.map +1 -0
  107. package/dist/store/compute/resolveFlag.d.ts +7 -0
  108. package/dist/store/compute/resolveFlag.d.ts.map +1 -0
  109. package/dist/store/compute/resolveFlag.js +12 -0
  110. package/dist/store/compute/resolveFlag.js.map +1 -0
  111. package/dist/store/compute/resolveString.d.ts +11 -0
  112. package/dist/store/compute/resolveString.d.ts.map +1 -0
  113. package/dist/store/compute/resolveString.js +18 -0
  114. package/dist/store/compute/resolveString.js.map +1 -0
  115. package/dist/store/compute/types.d.ts +37 -0
  116. package/dist/store/compute/types.d.ts.map +1 -0
  117. package/dist/store/compute/types.js +2 -0
  118. package/dist/store/compute/types.js.map +1 -0
  119. package/dist/store/constants.d.ts +83 -0
  120. package/dist/store/constants.d.ts.map +1 -0
  121. package/dist/store/constants.js +145 -0
  122. package/dist/store/constants.js.map +1 -0
  123. package/dist/store/defineFieldMapping.d.ts +41 -0
  124. package/dist/store/defineFieldMapping.d.ts.map +1 -0
  125. package/dist/store/defineFieldMapping.js +42 -0
  126. package/dist/store/defineFieldMapping.js.map +1 -0
  127. package/dist/store/defineList.d.ts +14 -0
  128. package/dist/store/defineList.d.ts.map +1 -0
  129. package/dist/store/defineList.js +7 -0
  130. package/dist/store/defineList.js.map +1 -0
  131. package/dist/store/dirtyTracking/captureInitialValues.d.ts +8 -0
  132. package/dist/store/dirtyTracking/captureInitialValues.d.ts.map +1 -0
  133. package/dist/store/dirtyTracking/captureInitialValues.js +16 -0
  134. package/dist/store/dirtyTracking/captureInitialValues.js.map +1 -0
  135. package/dist/store/dirtyTracking/collectInitialSnapshot.d.ts +10 -0
  136. package/dist/store/dirtyTracking/collectInitialSnapshot.d.ts.map +1 -0
  137. package/dist/store/dirtyTracking/collectInitialSnapshot.js +35 -0
  138. package/dist/store/dirtyTracking/collectInitialSnapshot.js.map +1 -0
  139. package/dist/store/dirtyTracking/index.d.ts +7 -0
  140. package/dist/store/dirtyTracking/index.d.ts.map +1 -0
  141. package/dist/store/dirtyTracking/index.js +6 -0
  142. package/dist/store/dirtyTracking/index.js.map +1 -0
  143. package/dist/store/dirtyTracking/isDirtyValue.d.ts +7 -0
  144. package/dist/store/dirtyTracking/isDirtyValue.d.ts.map +1 -0
  145. package/dist/store/dirtyTracking/isDirtyValue.js +25 -0
  146. package/dist/store/dirtyTracking/isDirtyValue.js.map +1 -0
  147. package/dist/store/dirtyTracking/mergeInitialValues.d.ts +11 -0
  148. package/dist/store/dirtyTracking/mergeInitialValues.d.ts.map +1 -0
  149. package/dist/store/dirtyTracking/mergeInitialValues.js +29 -0
  150. package/dist/store/dirtyTracking/mergeInitialValues.js.map +1 -0
  151. package/dist/store/dirtyTracking/recomputeDirtyTargeted.d.ts +17 -0
  152. package/dist/store/dirtyTracking/recomputeDirtyTargeted.d.ts.map +1 -0
  153. package/dist/store/dirtyTracking/recomputeDirtyTargeted.js +90 -0
  154. package/dist/store/dirtyTracking/recomputeDirtyTargeted.js.map +1 -0
  155. package/dist/store/dirtyTracking/setGroupRevalidate.d.ts +13 -0
  156. package/dist/store/dirtyTracking/setGroupRevalidate.d.ts.map +1 -0
  157. package/dist/store/dirtyTracking/setGroupRevalidate.js +32 -0
  158. package/dist/store/dirtyTracking/setGroupRevalidate.js.map +1 -0
  159. package/dist/store/entityRegistry/entityRegistry.d.ts +166 -0
  160. package/dist/store/entityRegistry/entityRegistry.d.ts.map +1 -0
  161. package/dist/store/entityRegistry/entityRegistry.js +402 -0
  162. package/dist/store/entityRegistry/entityRegistry.js.map +1 -0
  163. package/dist/store/entityRegistry/generateId.d.ts +7 -0
  164. package/dist/store/entityRegistry/generateId.d.ts.map +1 -0
  165. package/dist/store/entityRegistry/generateId.js +18 -0
  166. package/dist/store/entityRegistry/generateId.js.map +1 -0
  167. package/dist/store/entityRegistry/index.d.ts +4 -0
  168. package/dist/store/entityRegistry/index.d.ts.map +1 -0
  169. package/dist/store/entityRegistry/index.js +3 -0
  170. package/dist/store/entityRegistry/index.js.map +1 -0
  171. package/dist/store/entityRegistry/types.d.ts +50 -0
  172. package/dist/store/entityRegistry/types.d.ts.map +1 -0
  173. package/dist/store/entityRegistry/types.js +2 -0
  174. package/dist/store/entityRegistry/types.js.map +1 -0
  175. package/dist/store/fieldMapping.typecheck.d.ts +2 -0
  176. package/dist/store/fieldMapping.typecheck.d.ts.map +1 -0
  177. package/dist/store/fieldMapping.typecheck.js +71 -0
  178. package/dist/store/fieldMapping.typecheck.js.map +1 -0
  179. package/dist/store/groupDeps/createGroupDeps.d.ts +9 -0
  180. package/dist/store/groupDeps/createGroupDeps.d.ts.map +1 -0
  181. package/dist/store/groupDeps/createGroupDeps.js +29 -0
  182. package/dist/store/groupDeps/createGroupDeps.js.map +1 -0
  183. package/dist/store/groupDeps/createTrackingValues.d.ts +15 -0
  184. package/dist/store/groupDeps/createTrackingValues.d.ts.map +1 -0
  185. package/dist/store/groupDeps/createTrackingValues.js +39 -0
  186. package/dist/store/groupDeps/createTrackingValues.js.map +1 -0
  187. package/dist/store/groupDeps/getNodeGroupPath.d.ts +9 -0
  188. package/dist/store/groupDeps/getNodeGroupPath.d.ts.map +1 -0
  189. package/dist/store/groupDeps/getNodeGroupPath.js +20 -0
  190. package/dist/store/groupDeps/getNodeGroupPath.js.map +1 -0
  191. package/dist/store/groupDeps/getRecipientGroups.d.ts +5 -0
  192. package/dist/store/groupDeps/getRecipientGroups.d.ts.map +1 -0
  193. package/dist/store/groupDeps/getRecipientGroups.js +15 -0
  194. package/dist/store/groupDeps/getRecipientGroups.js.map +1 -0
  195. package/dist/store/groupDeps/groupDeps.d.ts +19 -0
  196. package/dist/store/groupDeps/groupDeps.d.ts.map +1 -0
  197. package/dist/store/groupDeps/groupDeps.js +19 -0
  198. package/dist/store/groupDeps/groupDeps.js.map +1 -0
  199. package/dist/store/groupDeps/index.d.ts +7 -0
  200. package/dist/store/groupDeps/index.d.ts.map +1 -0
  201. package/dist/store/groupDeps/index.js +7 -0
  202. package/dist/store/groupDeps/index.js.map +1 -0
  203. package/dist/store/groupDeps/pairKey.d.ts +7 -0
  204. package/dist/store/groupDeps/pairKey.d.ts.map +1 -0
  205. package/dist/store/groupDeps/pairKey.js +12 -0
  206. package/dist/store/groupDeps/pairKey.js.map +1 -0
  207. package/dist/store/groupDeps/resolveGroupByPath.d.ts +8 -0
  208. package/dist/store/groupDeps/resolveGroupByPath.d.ts.map +1 -0
  209. package/dist/store/groupDeps/resolveGroupByPath.js +19 -0
  210. package/dist/store/groupDeps/resolveGroupByPath.js.map +1 -0
  211. package/dist/store/init/createNotificationHub.d.ts +81 -0
  212. package/dist/store/init/createNotificationHub.d.ts.map +1 -0
  213. package/dist/store/init/createNotificationHub.js +149 -0
  214. package/dist/store/init/createNotificationHub.js.map +1 -0
  215. package/dist/store/init/createResolveManager.d.ts +166 -0
  216. package/dist/store/init/createResolveManager.d.ts.map +1 -0
  217. package/dist/store/init/createResolveManager.js +502 -0
  218. package/dist/store/init/createResolveManager.js.map +1 -0
  219. package/dist/store/init/initGroupSubmitting.d.ts +8 -0
  220. package/dist/store/init/initGroupSubmitting.d.ts.map +1 -0
  221. package/dist/store/init/initGroupSubmitting.js +39 -0
  222. package/dist/store/init/initGroupSubmitting.js.map +1 -0
  223. package/dist/store/normalizeConfig.d.ts +28 -0
  224. package/dist/store/normalizeConfig.d.ts.map +1 -0
  225. package/dist/store/normalizeConfig.js +76 -0
  226. package/dist/store/normalizeConfig.js.map +1 -0
  227. package/dist/store/onChangePipeline/computeFieldKey.d.ts +11 -0
  228. package/dist/store/onChangePipeline/computeFieldKey.d.ts.map +1 -0
  229. package/dist/store/onChangePipeline/computeFieldKey.js +18 -0
  230. package/dist/store/onChangePipeline/computeFieldKey.js.map +1 -0
  231. package/dist/store/onChangePipeline/findOnChangeAncestors.d.ts +8 -0
  232. package/dist/store/onChangePipeline/findOnChangeAncestors.d.ts.map +1 -0
  233. package/dist/store/onChangePipeline/findOnChangeAncestors.js +22 -0
  234. package/dist/store/onChangePipeline/findOnChangeAncestors.js.map +1 -0
  235. package/dist/store/onChangePipeline/onChangePipeline.d.ts +29 -0
  236. package/dist/store/onChangePipeline/onChangePipeline.d.ts.map +1 -0
  237. package/dist/store/onChangePipeline/onChangePipeline.js +99 -0
  238. package/dist/store/onChangePipeline/onChangePipeline.js.map +1 -0
  239. package/dist/store/persist/drivers.d.ts +34 -0
  240. package/dist/store/persist/drivers.d.ts.map +1 -0
  241. package/dist/store/persist/drivers.js +89 -0
  242. package/dist/store/persist/drivers.js.map +1 -0
  243. package/dist/store/persist/index.d.ts +7 -0
  244. package/dist/store/persist/index.d.ts.map +1 -0
  245. package/dist/store/persist/index.js +3 -0
  246. package/dist/store/persist/index.js.map +1 -0
  247. package/dist/store/persist/persistManager.d.ts +67 -0
  248. package/dist/store/persist/persistManager.d.ts.map +1 -0
  249. package/dist/store/persist/persistManager.js +198 -0
  250. package/dist/store/persist/persistManager.js.map +1 -0
  251. package/dist/store/persist/types.d.ts +66 -0
  252. package/dist/store/persist/types.d.ts.map +1 -0
  253. package/dist/store/persist/types.js +9 -0
  254. package/dist/store/persist/types.js.map +1 -0
  255. package/dist/store/resetPipeline/buildResetPatch.d.ts +11 -0
  256. package/dist/store/resetPipeline/buildResetPatch.d.ts.map +1 -0
  257. package/dist/store/resetPipeline/buildResetPatch.js +22 -0
  258. package/dist/store/resetPipeline/buildResetPatch.js.map +1 -0
  259. package/dist/store/resetPipeline/collectDefaults.d.ts +12 -0
  260. package/dist/store/resetPipeline/collectDefaults.d.ts.map +1 -0
  261. package/dist/store/resetPipeline/collectDefaults.js +31 -0
  262. package/dist/store/resetPipeline/collectDefaults.js.map +1 -0
  263. package/dist/store/resetPipeline/resetPipeline.d.ts +19 -0
  264. package/dist/store/resetPipeline/resetPipeline.d.ts.map +1 -0
  265. package/dist/store/resetPipeline/resetPipeline.js +49 -0
  266. package/dist/store/resetPipeline/resetPipeline.js.map +1 -0
  267. package/dist/store/resolvePipeline/applyPendingWrites.d.ts +26 -0
  268. package/dist/store/resolvePipeline/applyPendingWrites.d.ts.map +1 -0
  269. package/dist/store/resolvePipeline/applyPendingWrites.js +68 -0
  270. package/dist/store/resolvePipeline/applyPendingWrites.js.map +1 -0
  271. package/dist/store/resolvePipeline/createContextTrackingProxy.d.ts +16 -0
  272. package/dist/store/resolvePipeline/createContextTrackingProxy.d.ts.map +1 -0
  273. package/dist/store/resolvePipeline/createContextTrackingProxy.js +29 -0
  274. package/dist/store/resolvePipeline/createContextTrackingProxy.js.map +1 -0
  275. package/dist/store/resolvePipeline/createValuesTrackingProxy.d.ts +75 -0
  276. package/dist/store/resolvePipeline/createValuesTrackingProxy.d.ts.map +1 -0
  277. package/dist/store/resolvePipeline/createValuesTrackingProxy.js +128 -0
  278. package/dist/store/resolvePipeline/createValuesTrackingProxy.js.map +1 -0
  279. package/dist/store/resolvePipeline/executeEntityFieldResolve.d.ts +29 -0
  280. package/dist/store/resolvePipeline/executeEntityFieldResolve.d.ts.map +1 -0
  281. package/dist/store/resolvePipeline/executeEntityFieldResolve.js +218 -0
  282. package/dist/store/resolvePipeline/executeEntityFieldResolve.js.map +1 -0
  283. package/dist/store/resolvePipeline/executeListResolve.d.ts +32 -0
  284. package/dist/store/resolvePipeline/executeListResolve.d.ts.map +1 -0
  285. package/dist/store/resolvePipeline/executeListResolve.js +157 -0
  286. package/dist/store/resolvePipeline/executeListResolve.js.map +1 -0
  287. package/dist/store/resolvePipeline/executeResolve.d.ts +26 -0
  288. package/dist/store/resolvePipeline/executeResolve.d.ts.map +1 -0
  289. package/dist/store/resolvePipeline/executeResolve.js +201 -0
  290. package/dist/store/resolvePipeline/executeResolve.js.map +1 -0
  291. package/dist/store/resolvePipeline/findResolvesToRetrigger.d.ts +10 -0
  292. package/dist/store/resolvePipeline/findResolvesToRetrigger.d.ts.map +1 -0
  293. package/dist/store/resolvePipeline/findResolvesToRetrigger.js +29 -0
  294. package/dist/store/resolvePipeline/findResolvesToRetrigger.js.map +1 -0
  295. package/dist/store/resolvePipeline/index.d.ts +22 -0
  296. package/dist/store/resolvePipeline/index.d.ts.map +1 -0
  297. package/dist/store/resolvePipeline/index.js +18 -0
  298. package/dist/store/resolvePipeline/index.js.map +1 -0
  299. package/dist/store/resolvePipeline/initResolveStates.d.ts +41 -0
  300. package/dist/store/resolvePipeline/initResolveStates.d.ts.map +1 -0
  301. package/dist/store/resolvePipeline/initResolveStates.js +95 -0
  302. package/dist/store/resolvePipeline/initResolveStates.js.map +1 -0
  303. package/dist/store/resolvePipeline/resetResolveState.d.ts +8 -0
  304. package/dist/store/resolvePipeline/resetResolveState.d.ts.map +1 -0
  305. package/dist/store/resolvePipeline/resetResolveState.js +18 -0
  306. package/dist/store/resolvePipeline/resetResolveState.js.map +1 -0
  307. package/dist/store/resolvePipeline/types.d.ts +134 -0
  308. package/dist/store/resolvePipeline/types.d.ts.map +1 -0
  309. package/dist/store/resolvePipeline/types.js +54 -0
  310. package/dist/store/resolvePipeline/types.js.map +1 -0
  311. package/dist/store/store/NodeRegistry/index.d.ts +3 -0
  312. package/dist/store/store/NodeRegistry/index.d.ts.map +1 -0
  313. package/dist/store/store/NodeRegistry/index.js +2 -0
  314. package/dist/store/store/NodeRegistry/index.js.map +1 -0
  315. package/dist/store/store/NodeRegistry/nodeRegistry.d.ts +139 -0
  316. package/dist/store/store/NodeRegistry/nodeRegistry.d.ts.map +1 -0
  317. package/dist/store/store/NodeRegistry/nodeRegistry.js +255 -0
  318. package/dist/store/store/NodeRegistry/nodeRegistry.js.map +1 -0
  319. package/dist/store/store/NodeRegistry/nodeUtils.d.ts +17 -0
  320. package/dist/store/store/NodeRegistry/nodeUtils.d.ts.map +1 -0
  321. package/dist/store/store/NodeRegistry/nodeUtils.js +21 -0
  322. package/dist/store/store/NodeRegistry/nodeUtils.js.map +1 -0
  323. package/dist/store/store/NodeRegistry/nodeView.d.ts +28 -0
  324. package/dist/store/store/NodeRegistry/nodeView.d.ts.map +1 -0
  325. package/dist/store/store/NodeRegistry/nodeView.js +16 -0
  326. package/dist/store/store/NodeRegistry/nodeView.js.map +1 -0
  327. package/dist/store/store/dirtyTracker.d.ts +27 -0
  328. package/dist/store/store/dirtyTracker.d.ts.map +1 -0
  329. package/dist/store/store/dirtyTracker.js +38 -0
  330. package/dist/store/store/dirtyTracker.js.map +1 -0
  331. package/dist/store/store/groupDepsMap.d.ts +52 -0
  332. package/dist/store/store/groupDepsMap.d.ts.map +1 -0
  333. package/dist/store/store/groupDepsMap.js +84 -0
  334. package/dist/store/store/groupDepsMap.js.map +1 -0
  335. package/dist/store/store/hasComputedProps.d.ts +7 -0
  336. package/dist/store/store/hasComputedProps.d.ts.map +1 -0
  337. package/dist/store/store/hasComputedProps.js +15 -0
  338. package/dist/store/store/hasComputedProps.js.map +1 -0
  339. package/dist/store/store/index.d.ts +6 -0
  340. package/dist/store/store/index.d.ts.map +1 -0
  341. package/dist/store/store/index.js +3 -0
  342. package/dist/store/store/index.js.map +1 -0
  343. package/dist/store/store/nodeMap.d.ts +12 -0
  344. package/dist/store/store/nodeMap.d.ts.map +1 -0
  345. package/dist/store/store/nodeMap.js +30 -0
  346. package/dist/store/store/nodeMap.js.map +1 -0
  347. package/dist/store/store/palistor.d.ts +256 -0
  348. package/dist/store/store/palistor.d.ts.map +1 -0
  349. package/dist/store/store/palistor.js +772 -0
  350. package/dist/store/store/palistor.js.map +1 -0
  351. package/dist/store/store/registerNodes.d.ts +33 -0
  352. package/dist/store/store/registerNodes.d.ts.map +1 -0
  353. package/dist/store/store/registerNodes.js +88 -0
  354. package/dist/store/store/registerNodes.js.map +1 -0
  355. package/dist/store/store/serviceRegistry.d.ts +24 -0
  356. package/dist/store/store/serviceRegistry.d.ts.map +1 -0
  357. package/dist/store/store/serviceRegistry.js +32 -0
  358. package/dist/store/store/serviceRegistry.js.map +1 -0
  359. package/dist/store/store/types.d.ts +622 -0
  360. package/dist/store/store/types.d.ts.map +1 -0
  361. package/dist/store/store/types.js +2 -0
  362. package/dist/store/store/types.js.map +1 -0
  363. package/dist/store/submitPipeline/applyLeafBeforeSubmit.d.ts +7 -0
  364. package/dist/store/submitPipeline/applyLeafBeforeSubmit.d.ts.map +1 -0
  365. package/dist/store/submitPipeline/applyLeafBeforeSubmit.js +26 -0
  366. package/dist/store/submitPipeline/applyLeafBeforeSubmit.js.map +1 -0
  367. package/dist/store/submitPipeline/collectLeafStates.d.ts +11 -0
  368. package/dist/store/submitPipeline/collectLeafStates.d.ts.map +1 -0
  369. package/dist/store/submitPipeline/collectLeafStates.js +17 -0
  370. package/dist/store/submitPipeline/collectLeafStates.js.map +1 -0
  371. package/dist/store/submitPipeline/getSubValues.d.ts +9 -0
  372. package/dist/store/submitPipeline/getSubValues.d.ts.map +1 -0
  373. package/dist/store/submitPipeline/getSubValues.js +26 -0
  374. package/dist/store/submitPipeline/getSubValues.js.map +1 -0
  375. package/dist/store/submitPipeline/submitPipeline.d.ts +32 -0
  376. package/dist/store/submitPipeline/submitPipeline.d.ts.map +1 -0
  377. package/dist/store/submitPipeline/submitPipeline.js +119 -0
  378. package/dist/store/submitPipeline/submitPipeline.js.map +1 -0
  379. package/dist/store/submitPipeline/types.d.ts +12 -0
  380. package/dist/store/submitPipeline/types.d.ts.map +1 -0
  381. package/dist/store/submitPipeline/types.js +2 -0
  382. package/dist/store/submitPipeline/types.js.map +1 -0
  383. package/dist/store/traversal/index.d.ts +4 -0
  384. package/dist/store/traversal/index.d.ts.map +1 -0
  385. package/dist/store/traversal/index.js +3 -0
  386. package/dist/store/traversal/index.js.map +1 -0
  387. package/dist/store/traversal/nodeClassifier.d.ts +23 -0
  388. package/dist/store/traversal/nodeClassifier.d.ts.map +1 -0
  389. package/dist/store/traversal/nodeClassifier.js +46 -0
  390. package/dist/store/traversal/nodeClassifier.js.map +1 -0
  391. package/dist/store/traversal/walkFull.d.ts +33 -0
  392. package/dist/store/traversal/walkFull.d.ts.map +1 -0
  393. package/dist/store/traversal/walkFull.js +28 -0
  394. package/dist/store/traversal/walkFull.js.map +1 -0
  395. package/dist/store/valuesCache/valuesCache.d.ts +27 -0
  396. package/dist/store/valuesCache/valuesCache.d.ts.map +1 -0
  397. package/dist/store/valuesCache/valuesCache.js +58 -0
  398. package/dist/store/valuesCache/valuesCache.js.map +1 -0
  399. package/dist/store/writePipeline/formatPatch.d.ts +14 -0
  400. package/dist/store/writePipeline/formatPatch.d.ts.map +1 -0
  401. package/dist/store/writePipeline/formatPatch.js +35 -0
  402. package/dist/store/writePipeline/formatPatch.js.map +1 -0
  403. package/dist/store/writePipeline/formatValue.d.ts +12 -0
  404. package/dist/store/writePipeline/formatValue.d.ts.map +1 -0
  405. package/dist/store/writePipeline/formatValue.js +15 -0
  406. package/dist/store/writePipeline/formatValue.js.map +1 -0
  407. package/dist/store/writePipeline/index.d.ts +8 -0
  408. package/dist/store/writePipeline/index.d.ts.map +1 -0
  409. package/dist/store/writePipeline/index.js +7 -0
  410. package/dist/store/writePipeline/index.js.map +1 -0
  411. package/dist/store/writePipeline/mergeChanged.d.ts +9 -0
  412. package/dist/store/writePipeline/mergeChanged.d.ts.map +1 -0
  413. package/dist/store/writePipeline/mergeChanged.js +15 -0
  414. package/dist/store/writePipeline/mergeChanged.js.map +1 -0
  415. package/dist/store/writePipeline/runSetter.d.ts +16 -0
  416. package/dist/store/writePipeline/runSetter.d.ts.map +1 -0
  417. package/dist/store/writePipeline/runSetter.js +35 -0
  418. package/dist/store/writePipeline/runSetter.js.map +1 -0
  419. package/dist/store/writePipeline/storeValue.d.ts +11 -0
  420. package/dist/store/writePipeline/storeValue.d.ts.map +1 -0
  421. package/dist/store/writePipeline/storeValue.js +17 -0
  422. package/dist/store/writePipeline/storeValue.js.map +1 -0
  423. package/dist/store/writePipeline/types.d.ts +10 -0
  424. package/dist/store/writePipeline/types.d.ts.map +1 -0
  425. package/dist/store/writePipeline/types.js +2 -0
  426. package/dist/store/writePipeline/types.js.map +1 -0
  427. package/dist/store/writePipeline/writePipeline.d.ts +31 -0
  428. package/dist/store/writePipeline/writePipeline.d.ts.map +1 -0
  429. package/dist/store/writePipeline/writePipeline.js +97 -0
  430. package/dist/store/writePipeline/writePipeline.js.map +1 -0
  431. package/package.json +79 -0
@@ -0,0 +1,198 @@
1
+ /**
2
+ * PersistManager — управляет гидратацией и автосохранением состояния формы.
3
+ *
4
+ * Инстанцируется внутри Palistor.
5
+ * Не зависит от React — может быть подключён из любого окружения.
6
+ *
7
+ * Жизненный цикл:
8
+ * 1. Создаётся при new Palistor(...) (неактивен).
9
+ * 2. Активируется через enable(options) — гидратация + auto-save.
10
+ * 3. Деактивируется через disable() — отписка от store, отмена таймеров.
11
+ */
12
+ import { applyPatch } from "../applyPatch/applyPatch";
13
+ import { recomputeAndNotify } from "../compute/recompute";
14
+ // ─── Фильтрация полей ────────────────────────────────────────────────────────
15
+ /**
16
+ * Отфильтровать значения по pick/omit.
17
+ * pick имеет приоритет. Если ни pick, ни omit не заданы — возвращает всё.
18
+ */
19
+ function filterValues(values, pick, omit) {
20
+ if (pick && pick.length > 0) {
21
+ const result = {};
22
+ for (const key of pick) {
23
+ if (key in values)
24
+ result[key] = values[key];
25
+ }
26
+ return result;
27
+ }
28
+ if (omit && omit.length > 0) {
29
+ const omitSet = new Set(omit);
30
+ const result = {};
31
+ for (const key of Object.keys(values)) {
32
+ if (!omitSet.has(key))
33
+ result[key] = values[key];
34
+ }
35
+ return result;
36
+ }
37
+ return values;
38
+ }
39
+ // ─── Класс ───────────────────────────────────────────────────────────────────
40
+ /**
41
+ * Менеджер персистенции формы.
42
+ *
43
+ * Получает доступ ко всем данным формы через `kernel` (Palistor instance).
44
+ */
45
+ export class PersistManager {
46
+ constructor(kernel) {
47
+ // ─── Внутреннее состояние ─────────────────────────────────────────────────
48
+ this.active = false;
49
+ this.currentKey = null;
50
+ this.currentDriver = null;
51
+ this.serialize = JSON.stringify;
52
+ this.deserialize = JSON.parse;
53
+ this.debounceMs = 100;
54
+ /** Отписка от subscribeGlobal. */
55
+ this.unsubscribe = null;
56
+ /** ID таймера debounce. */
57
+ this.debounceTimer = null;
58
+ /** Флаг, предотвращающий сохранение во время гидратации. */
59
+ this.isHydrating = false;
60
+ /**
61
+ * Запланировать сохранение с debounce.
62
+ */
63
+ this.scheduleSave = () => {
64
+ if (!this.active || this.isHydrating)
65
+ return;
66
+ this.cancelDebounce();
67
+ if (this.debounceMs <= 0) {
68
+ this.saveToStorage();
69
+ return;
70
+ }
71
+ this.debounceTimer = setTimeout(() => {
72
+ this.debounceTimer = null;
73
+ this.saveToStorage();
74
+ }, this.debounceMs);
75
+ };
76
+ this.kernel = kernel;
77
+ }
78
+ // ─── Вспомогательные ──────────────────────────────────────────────────────
79
+ cancelDebounce() {
80
+ if (this.debounceTimer !== null) {
81
+ clearTimeout(this.debounceTimer);
82
+ this.debounceTimer = null;
83
+ }
84
+ }
85
+ /**
86
+ * Сохранить текущие значения в storage (без debounce).
87
+ */
88
+ async saveToStorage() {
89
+ if (!this.active || !this.currentKey || !this.currentDriver)
90
+ return;
91
+ const allValues = this.kernel.getValues();
92
+ const filtered = filterValues(allValues, this.pickFields, this.omitFields);
93
+ try {
94
+ const serialized = this.serialize(filtered);
95
+ await Promise.resolve(this.currentDriver.setItem(this.currentKey, serialized));
96
+ }
97
+ catch {
98
+ // Ошибки сериализации/записи — молчим (production-safe)
99
+ }
100
+ }
101
+ /**
102
+ * Прочитать из storage и применить значения к nodeState.
103
+ */
104
+ async hydrateFromStorage() {
105
+ if (!this.currentKey || !this.currentDriver)
106
+ return;
107
+ this.isHydrating = true;
108
+ try {
109
+ const raw = await Promise.resolve(this.currentDriver.getItem(this.currentKey));
110
+ if (raw === null) {
111
+ this.isHydrating = false;
112
+ return;
113
+ }
114
+ const values = this.deserialize(raw);
115
+ if (!values || typeof values !== "object") {
116
+ this.isHydrating = false;
117
+ return;
118
+ }
119
+ // Применяем как патч — applyPatch рекурсивно обходит дерево конфига
120
+ // (скалярные/групповые поля; list-узлы он пропускает).
121
+ const patchedNodes = applyPatch(this.kernel.rootConfig, this.kernel.nodes.nodeState, values, new Set());
122
+ // C3: восстанавливаем состав корневых и per-entity списков из снимка.
123
+ // Для конфигов без списков — no-op (graceful для старых снимков).
124
+ const listChanged = this.kernel.restoreLists(values);
125
+ for (const n of listChanged)
126
+ patchedNodes.add(n);
127
+ // Пересчитываем, объединяем и уведомляем подписчиков
128
+ recomputeAndNotify(patchedNodes, () => this.kernel.recompute(), (c) => this.kernel.notifyChanged(c));
129
+ }
130
+ catch {
131
+ // Ошибки десериализации — молчим
132
+ }
133
+ finally {
134
+ this.isHydrating = false;
135
+ }
136
+ }
137
+ // ─── Публичный API ─────────────────────────────────────────────────────────
138
+ /**
139
+ * Активировать персистенцию: гидратация из storage + auto-save при изменениях.
140
+ *
141
+ * Если persist уже активен — предыдущий отключается.
142
+ * Возвращает Promise, который резолвится после успешной гидратации.
143
+ */
144
+ enable(options) {
145
+ // Если уже активен — отключаем предыдущий
146
+ if (this.active)
147
+ this.disable();
148
+ // Сохраняем настройки
149
+ this.currentKey = options.key;
150
+ this.currentDriver = options.driver;
151
+ this.serialize = options.serialize ?? JSON.stringify;
152
+ this.deserialize = options.deserialize ?? JSON.parse;
153
+ this.debounceMs = options.debounce ?? 100;
154
+ this.pickFields = options.pick;
155
+ this.omitFields = options.omit;
156
+ this.active = true;
157
+ // Подписка на изменения для auto-save
158
+ this.unsubscribe = this.kernel.hub.subscribeGlobal(this.scheduleSave);
159
+ // Гидратация
160
+ return this.hydrateFromStorage();
161
+ }
162
+ /** Деактивировать: отписка от store, отмена таймеров, очистка состояния. */
163
+ disable() {
164
+ this.active = false;
165
+ this.cancelDebounce();
166
+ if (this.unsubscribe) {
167
+ this.unsubscribe();
168
+ this.unsubscribe = null;
169
+ }
170
+ this.currentKey = null;
171
+ this.currentDriver = null;
172
+ }
173
+ /** Принудительно сохранить текущие значения в storage (без debounce). */
174
+ async flush() {
175
+ this.cancelDebounce();
176
+ await this.saveToStorage();
177
+ }
178
+ /** Принудительно гидратировать из storage. */
179
+ async hydrate() {
180
+ await this.hydrateFromStorage();
181
+ }
182
+ /** Удалить данные из storage по текущему ключу. */
183
+ async clear() {
184
+ if (!this.currentKey || !this.currentDriver)
185
+ return;
186
+ try {
187
+ await Promise.resolve(this.currentDriver.removeItem(this.currentKey));
188
+ }
189
+ catch {
190
+ // noop
191
+ }
192
+ }
193
+ /** Активна ли персистенция в данный момент. */
194
+ isEnabled() {
195
+ return this.active;
196
+ }
197
+ }
198
+ //# sourceMappingURL=persistManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"persistManager.js","sourceRoot":"","sources":["../../../store/persist/persistManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Persist — абстрактный интерфейс драйвера хранения и опции персистенции.
3
+ *
4
+ * Драйвер может быть синхронным (localStorage) или асинхронным (IndexedDB).
5
+ * Все методы возвращают `T | Promise<T>` — persist-менеджер обрабатывает оба
6
+ * варианта единообразно через `Promise.resolve()`.
7
+ */
8
+ /**
9
+ * Интерфейс драйвера хранения.
10
+ *
11
+ * Реализуйте этот интерфейс для любого бэкенда:
12
+ * localStorage, sessionStorage, IndexedDB, AsyncStorage, файловая система и т.д.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const myDriver: PersistDriver = {
17
+ * getItem: (key) => localStorage.getItem(key),
18
+ * setItem: (key, value) => localStorage.setItem(key, value),
19
+ * removeItem: (key) => localStorage.removeItem(key),
20
+ * };
21
+ * ```
22
+ */
23
+ export interface PersistDriver {
24
+ /** Прочитать значение по ключу. `null` если не найдено. */
25
+ getItem(key: string): string | null | Promise<string | null>;
26
+ /** Записать значение по ключу. */
27
+ setItem(key: string, value: string): void | Promise<void>;
28
+ /** Удалить значение по ключу. */
29
+ removeItem(key: string): void | Promise<void>;
30
+ }
31
+ /**
32
+ * Опции персистенции для ProxyStore.
33
+ *
34
+ * @template TValues — тип значений формы
35
+ */
36
+ export interface PersistOptions<TValues = Record<string, unknown>> {
37
+ /** Уникальный ключ хранения. */
38
+ key: string;
39
+ /** Драйвер хранения (localStorage, IndexedDB, …). */
40
+ driver: PersistDriver;
41
+ /**
42
+ * Кастомный сериализатор (по умолчанию `JSON.stringify`).
43
+ * Полезно для binary-форматов, шифрования и т.д.
44
+ */
45
+ serialize?: (values: Partial<TValues>) => string;
46
+ /**
47
+ * Кастомный десериализатор (по умолчанию `JSON.parse`).
48
+ */
49
+ deserialize?: (raw: string) => Partial<TValues>;
50
+ /**
51
+ * Задержка записи в ms (debounce). По умолчанию 100 ms.
52
+ * Установите 0 для мгновенной записи.
53
+ */
54
+ debounce?: number;
55
+ /**
56
+ * Персистить только указанные поля верхнего уровня.
57
+ * Если задано — `omit` игнорируется.
58
+ */
59
+ pick?: (keyof TValues & string)[];
60
+ /**
61
+ * Исключить указанные поля верхнего уровня из персистенции.
62
+ * Игнорируется если задано `pick`.
63
+ */
64
+ omit?: (keyof TValues & string)[];
65
+ }
66
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../store/persist/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa;IAC5B,2DAA2D;IAC3D,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAE7D,kCAAkC;IAClC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE1D,iCAAiC;IACjC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/C;AAID;;;;GAIG;AACH,MAAM,WAAW,cAAc,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/D,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IAEZ,qDAAqD;IACrD,MAAM,EAAE,aAAa,CAAC;IAEtB;;;OAGG;IACH,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC;IAEjD;;OAEG;IACH,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhD;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;IAElC;;;OAGG;IACH,IAAI,CAAC,EAAE,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC;CACnC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Persist — абстрактный интерфейс драйвера хранения и опции персистенции.
3
+ *
4
+ * Драйвер может быть синхронным (localStorage) или асинхронным (IndexedDB).
5
+ * Все методы возвращают `T | Promise<T>` — persist-менеджер обрабатывает оба
6
+ * варианта единообразно через `Promise.resolve()`.
7
+ */
8
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../store/persist/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
@@ -0,0 +1,11 @@
1
+ import type { AnyConfigNode } from "../store/types";
2
+ /**
3
+ * Строит патч для сброса группы.
4
+ *
5
+ * Приоритет:
6
+ * 1. Если переданы явные `values` → используются как патч напрямую.
7
+ * 2. Иначе берётся initial snapshot (или defaults из конфига как fallback),
8
+ * после чего применяется reset-трансформер группы (если задан).
9
+ */
10
+ export declare function buildResetPatch(groupNode: AnyConfigNode, initialValueMap: WeakMap<object, unknown> | undefined, values: Record<string, unknown> | undefined): Record<string, unknown>;
11
+ //# sourceMappingURL=buildResetPatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildResetPatch.d.ts","sourceRoot":"","sources":["../../../store/resetPipeline/buildResetPatch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,aAAa,EACxB,eAAe,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACrD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYzB"}
@@ -0,0 +1,22 @@
1
+ import { collectDefaults } from "./collectDefaults";
2
+ import { collectInitialSnapshot } from "../dirtyTracking";
3
+ /**
4
+ * Строит патч для сброса группы.
5
+ *
6
+ * Приоритет:
7
+ * 1. Если переданы явные `values` → используются как патч напрямую.
8
+ * 2. Иначе берётся initial snapshot (или defaults из конфига как fallback),
9
+ * после чего применяется reset-трансформер группы (если задан).
10
+ */
11
+ export function buildResetPatch(groupNode, initialValueMap, values) {
12
+ if (values !== undefined)
13
+ return values;
14
+ const base = initialValueMap
15
+ ? collectInitialSnapshot(groupNode, initialValueMap)
16
+ : collectDefaults(groupNode);
17
+ if (typeof groupNode.reset === "function") {
18
+ return groupNode.reset(base);
19
+ }
20
+ return base;
21
+ }
22
+ //# sourceMappingURL=buildResetPatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildResetPatch.js","sourceRoot":"","sources":["../../../store/resetPipeline/buildResetPatch.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAC7B,SAAwB,EACxB,eAAqD,EACrD,MAA2C;IAE3C,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC;IAExC,MAAM,IAAI,GAAG,eAAe;QAC1B,CAAC,CAAC,sBAAsB,CAAC,SAAS,EAAE,eAAe,CAAC;QACpD,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;IAE/B,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC1C,OAAQ,SAAS,CAAC,KAAiE,CAAC,IAAI,CAAC,CAAC;IAC5F,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { AnyConfigNode } from "../store/types";
2
+ /**
3
+ * Рекурсивно собирает значения по умолчанию из конфига.
4
+ *
5
+ * Для листовых узлов:
6
+ * - статическое значение → берётся как есть
7
+ * - функция (computed) → "" как fallback
8
+ *
9
+ * Останавливается на вложенных группах с собственным `reset` (reset boundary).
10
+ */
11
+ export declare function collectDefaults(node: AnyConfigNode): Record<string, unknown>;
12
+ //# sourceMappingURL=collectDefaults.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectDefaults.d.ts","sourceRoot":"","sources":["../../../store/resetPipeline/collectDefaults.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkB5E"}
@@ -0,0 +1,31 @@
1
+ import { configKeys, isLeafNode, isListNode } from "../traversal";
2
+ /**
3
+ * Рекурсивно собирает значения по умолчанию из конфига.
4
+ *
5
+ * Для листовых узлов:
6
+ * - статическое значение → берётся как есть
7
+ * - функция (computed) → "" как fallback
8
+ *
9
+ * Останавливается на вложенных группах с собственным `reset` (reset boundary).
10
+ */
11
+ export function collectDefaults(node) {
12
+ const result = {};
13
+ for (const key of configKeys(node)) {
14
+ const child = node[key];
15
+ if (!child || typeof child !== "object")
16
+ continue;
17
+ if (isListNode(child))
18
+ continue; // ListNode — пропускаем, обрабатывается в фазе 2
19
+ if (isLeafNode(child)) {
20
+ const raw = child.value;
21
+ result[key] = typeof raw === "function" ? "" : raw;
22
+ }
23
+ else {
24
+ if (typeof child.reset === "function")
25
+ continue;
26
+ result[key] = collectDefaults(child);
27
+ }
28
+ }
29
+ return result;
30
+ }
31
+ //# sourceMappingURL=collectDefaults.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collectDefaults.js","sourceRoot":"","sources":["../../../store/resetPipeline/collectDefaults.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAGlE;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,IAAmB;IACjD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAE3C,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAA+B,CAAC,EAAE,CAAC;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAkB,CAAC;QACzC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAClD,IAAI,UAAU,CAAC,KAAK,CAAC;YAAE,SAAS,CAAC,iDAAiD;QAElF,IAAI,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,GAAG,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,IAAI,OAAO,KAAK,CAAC,KAAK,KAAK,UAAU;gBAAE,SAAS;YAChD,MAAM,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { AnyConfigNode } from "../store/types";
2
+ import type { Palistor } from "../store/palistor";
3
+ /**
4
+ * ResetPipeline — сброс значений группового узла.
5
+ *
6
+ * - Если `values` передан явно — применяется как патч (новая baseline → dirty = false).
7
+ * - Иначе восстанавливается initial snapshot (или config defaults как fallback),
8
+ * с опциональной трансформацией через reset-функцию группы.
9
+ *
10
+ * После сброса:
11
+ * - revalidate = false (очистка режима валидации)
12
+ * - полный пересчёт вычисляемых свойств + уведомление подписчиков
13
+ */
14
+ export declare class ResetPipeline {
15
+ private readonly kernel;
16
+ constructor(kernel: Palistor<any, any>);
17
+ execute(groupNode: AnyConfigNode, values?: Record<string, unknown>): void;
18
+ }
19
+ //# sourceMappingURL=resetPipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resetPipeline.d.ts","sourceRoot":"","sources":["../../../store/resetPipeline/resetPipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAMlD;;;;;;;;;;GAUG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAEvD,OAAO,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAsC1E"}
@@ -0,0 +1,49 @@
1
+ import { applyPatch } from "../applyPatch/applyPatch";
2
+ import { setGroupRevalidate, captureInitialValues } from "../dirtyTracking";
3
+ import { recomputeAndNotify } from "../compute/recompute";
4
+ import { buildResetPatch } from "./buildResetPatch";
5
+ /**
6
+ * ResetPipeline — сброс значений группового узла.
7
+ *
8
+ * - Если `values` передан явно — применяется как патч (новая baseline → dirty = false).
9
+ * - Иначе восстанавливается initial snapshot (или config defaults как fallback),
10
+ * с опциональной трансформацией через reset-функцию группы.
11
+ *
12
+ * После сброса:
13
+ * - revalidate = false (очистка режима валидации)
14
+ * - полный пересчёт вычисляемых свойств + уведомление подписчиков
15
+ */
16
+ export class ResetPipeline {
17
+ constructor(kernel) {
18
+ this.kernel = kernel;
19
+ }
20
+ execute(groupNode, values) {
21
+ const nodeState = this.kernel.nodes.nodeState;
22
+ const initialValueMap = this.kernel.dirty.initialValueMap;
23
+ const valuesCache = this.kernel.values;
24
+ // При полном сбросе формы очищаем состояния резолва entity-полей,
25
+ // чтобы они заново выполнились при загрузке сущностей через list resolver.
26
+ if (groupNode === this.kernel.rootConfig) {
27
+ this.kernel.resolveManager.entityStates.clearAll();
28
+ }
29
+ const patch = buildResetPatch(groupNode, initialValueMap, values);
30
+ const changed = applyPatch(groupNode, nodeState, patch, new Set(), valuesCache);
31
+ // C2: при полном сбросе восстанавливаем состав per-entity списков к initial
32
+ // и бампаем версии их EntityListState-узлов → React перерисует списки.
33
+ // C3: пересинхронизируем projectionObj владельца — getValues() вернёт initial.
34
+ if (groupNode === this.kernel.rootConfig) {
35
+ for (const { state } of this.kernel.entityRegistry.resetEntityListStates()) {
36
+ this.kernel.syncListValuesCache(state);
37
+ changed.add(state);
38
+ }
39
+ }
40
+ if (values !== undefined && initialValueMap) {
41
+ captureInitialValues(groupNode, nodeState, initialValueMap);
42
+ }
43
+ const revalidateChanged = setGroupRevalidate(groupNode, false, nodeState);
44
+ for (const n of revalidateChanged)
45
+ changed.add(n);
46
+ recomputeAndNotify(changed, () => this.kernel.recompute(), (c) => this.kernel.notifyChanged(c));
47
+ }
48
+ }
49
+ //# sourceMappingURL=resetPipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resetPipeline.js","sourceRoot":"","sources":["../../../store/resetPipeline/resetPipeline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,aAAa;IACxB,YAA6B,MAA0B;QAA1B,WAAM,GAAN,MAAM,CAAoB;IAAG,CAAC;IAE3D,OAAO,CAAC,SAAwB,EAAE,MAAgC;QAChE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9C,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC;QAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAEvC,kEAAkE;QAClE,2EAA2E;QAC3E,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QACrD,CAAC;QAED,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;QAElE,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;QAEhF,4EAA4E;QAC5E,uEAAuE;QACvE,+EAA+E;QAC/E,IAAI,SAAS,KAAK,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YACzC,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,qBAAqB,EAAE,EAAE,CAAC;gBAC3E,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,KAA0B,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;QAED,IAAI,MAAM,KAAK,SAAS,IAAI,eAAe,EAAE,CAAC;YAC5C,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,iBAAiB,GAAG,kBAAkB,CAAC,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;QAC1E,KAAK,MAAM,CAAC,IAAI,iBAAiB;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAElD,kBAAkB,CAChB,OAAO,EACP,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CACpC,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,26 @@
1
+ import { type AnyConfigNode } from "../store/types";
2
+ import { type PendingWrite } from "./createValuesTrackingProxy";
3
+ import type { FieldState } from "../compute/index";
4
+ import type { ValuesCache } from "../valuesCache/valuesCache";
5
+ /**
6
+ * Сбрасывает все буферизированные записи из одного запуска резолвера в реальное хранилище.
7
+ *
8
+ * Преобразует каждый плоский путь (через точку) обратно во вложенную структуру патча,
9
+ * которую понимает applyPatch(), затем применяет его.
10
+ *
11
+ * Пример:
12
+ * PendingWrite { path: "user.vehicleExists", value: false }
13
+ * → patch = { user: { vehicleExists: false } }
14
+ * → applyPatch(rootConfig, nodeState, patch, changed, valuesCache)
15
+ *
16
+ * Несколько уровней вложенности работают аналогично:
17
+ * path: "a.b.c" → patch = { a: { b: { c: value } } }
18
+ *
19
+ * @param writes — записи, буферизированные createValuesTrackingProxy во время выполнения резолвера
20
+ * @param rootConfig — корень дерева конфига полей (используется applyPatch для поиска узлов)
21
+ * @param nodeState — состояние узлов в рантайме (флаги dirty, ошибки и т.д.)
22
+ * @param valuesCache — изменяемый кэш значений, который applyPatch обновляет на месте
23
+ * @returns — множество узлов конфига, значение которых реально изменилось (для отслеживания зависимостей)
24
+ */
25
+ export declare function applyPendingWrites(writes: PendingWrite[], rootConfig: AnyConfigNode, nodeState: WeakMap<object, FieldState>, valuesCache: ValuesCache): Set<object>;
26
+ //# sourceMappingURL=applyPendingWrites.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyPendingWrites.d.ts","sourceRoot":"","sources":["../../../store/resolvePipeline/applyPendingWrites.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAiB9D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,YAAY,EAAE,EACtB,UAAU,EAAE,aAAa,EACzB,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,EACtC,WAAW,EAAE,WAAW,GACvB,GAAG,CAAC,MAAM,CAAC,CAkCb"}
@@ -0,0 +1,68 @@
1
+ import { applyPatch } from "../applyPatch/applyPatch";
2
+ // ─── Применение буферизированных записей ────────────────────────────────────
3
+ //
4
+ // Это вторая половина пайплайна отложенных записей.
5
+ //
6
+ // КРАТКОЕ ОПИСАНИЕ ПОТОКА:
7
+ // 1. Резолвер запускается с прокси из createValuesTrackingProxy().
8
+ // 2. Каждое `values.x.y = z` внутри резолвера перехватывается и сохраняется как
9
+ // PendingWrite { path: "x.y", value: z } — ничего не мутируется.
10
+ // 3. После возврата резолвера вызывается applyPendingWrites() со
11
+ // собранным списком PendingWrite-записей.
12
+ // 4. Для каждой записи восстанавливаем вложенный патч-объект, который ожидает applyPatch(),
13
+ // затем вызываем applyPatch() для реальной записи в хранилище.
14
+ // 5. applyPatch() фиксирует узлы конфига, которые изменились, в множество `changed`.
15
+ // 6. Вызывающий код использует `changed`, чтобы решить, какие зависимые резолверы перезапустить.
16
+ /**
17
+ * Сбрасывает все буферизированные записи из одного запуска резолвера в реальное хранилище.
18
+ *
19
+ * Преобразует каждый плоский путь (через точку) обратно во вложенную структуру патча,
20
+ * которую понимает applyPatch(), затем применяет его.
21
+ *
22
+ * Пример:
23
+ * PendingWrite { path: "user.vehicleExists", value: false }
24
+ * → patch = { user: { vehicleExists: false } }
25
+ * → applyPatch(rootConfig, nodeState, patch, changed, valuesCache)
26
+ *
27
+ * Несколько уровней вложенности работают аналогично:
28
+ * path: "a.b.c" → patch = { a: { b: { c: value } } }
29
+ *
30
+ * @param writes — записи, буферизированные createValuesTrackingProxy во время выполнения резолвера
31
+ * @param rootConfig — корень дерева конфига полей (используется applyPatch для поиска узлов)
32
+ * @param nodeState — состояние узлов в рантайме (флаги dirty, ошибки и т.д.)
33
+ * @param valuesCache — изменяемый кэш значений, который applyPatch обновляет на месте
34
+ * @returns — множество узлов конфига, значение которых реально изменилось (для отслеживания зависимостей)
35
+ */
36
+ export function applyPendingWrites(writes, rootConfig, nodeState, valuesCache) {
37
+ // Накапливает все узлы конфига, значение которых реально изменилось в ходе этого сброса.
38
+ // Возвращается вызывающему коду, чтобы тот мог запланировать повторный запуск зависимых резолверов.
39
+ const changed = new Set();
40
+ for (const { path, value } of writes) {
41
+ // ── Восстанавливаем вложенный патч из пути через точку ──────────────────
42
+ // applyPatch() ожидает вложенный объект, зеркалирующий дерево конфига, а не плоский путь.
43
+ // Строим его вручную, обходя сегменты пути и вкладывая объекты друг в друга.
44
+ //
45
+ // Пример: path = "user.vehicleExists"
46
+ // parts = ["user", "vehicleExists"]
47
+ // После цикла: patch = { user: { vehicleExists: <value> } }
48
+ const parts = path.split(".");
49
+ let patch = {};
50
+ let current = patch; // курсор `current` идёт вглубь строящегося вложенного объекта
51
+ for (let i = 0; i < parts.length - 1; i++) {
52
+ // Создаём промежуточный пустой объект для каждого сегмента пути, кроме последнего.
53
+ current[parts[i]] = {};
54
+ current = current[parts[i]];
55
+ }
56
+ // Помещаем реальное значение на листе (последний сегмент).
57
+ current[parts[parts.length - 1]] = value;
58
+ // ── Применяем патч к реальному хранилищу ────────────────────────────────
59
+ // applyPatch обходит rootConfig по форме патча, записывает значения в
60
+ // valuesCache, обновляет nodeState (флаги dirty и т.д.) и фиксирует
61
+ // в `changed` все узлы, значение которых изменилось.
62
+ applyPatch(rootConfig, nodeState, patch, changed, valuesCache);
63
+ }
64
+ // Возвращаем множество изменённых узлов, чтобы пайплайн резолвов мог
65
+ // запланировать повторные запуски для всего, что зависело от этих значений.
66
+ return changed;
67
+ }
68
+ //# sourceMappingURL=applyPendingWrites.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"applyPendingWrites.js","sourceRoot":"","sources":["../../../store/resolvePipeline/applyPendingWrites.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAMtD,+EAA+E;AAC/E,EAAE;AACF,oDAAoD;AACpD,EAAE;AACF,2BAA2B;AAC3B,qEAAqE;AACrE,kFAAkF;AAClF,sEAAsE;AACtE,mEAAmE;AACnE,+CAA+C;AAC/C,8FAA8F;AAC9F,oEAAoE;AACpE,uFAAuF;AACvF,mGAAmG;AAEnG;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAsB,EACtB,UAAyB,EACzB,SAAsC,EACtC,WAAwB;IAExB,yFAAyF;IACzF,oGAAoG;IACpG,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,KAAK,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,MAAM,EAAE,CAAC;QACrC,2EAA2E;QAC3E,0FAA0F;QAC1F,6EAA6E;QAC7E,EAAE;QACF,sCAAsC;QACtC,sCAAsC;QACtC,8DAA8D;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,GAA4B,EAAE,CAAC;QACxC,IAAI,OAAO,GAAG,KAAK,CAAC,CAAC,8DAA8D;QACnF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,mFAAmF;YACnF,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;YACvB,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAA4B,CAAC;QACzD,CAAC;QACD,2DAA2D;QAC3D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC;QAEzC,2EAA2E;QAC3E,sEAAsE;QACtE,oEAAoE;QACpE,qDAAqD;QACrD,UAAU,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IACjE,CAAC;IAED,qEAAqE;IACrE,4EAA4E;IAC5E,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * createContextTrackingProxy — оборачивает плоский объект контекста в read-only Proxy,
3
+ * который записывает ключи, к которым обращался резолвер.
4
+ *
5
+ * Используется в executeResolve для автоматического определения контекстных зависимостей:
6
+ * если резолвер читает `store.context.accountId`, то `$context.accountId` добавляется
7
+ * в auto-deps, и резолвер перезапустится при изменении этого ключа через `setContext`.
8
+ */
9
+ export interface ContextTrackingResult {
10
+ /** Прокси над context — передаётся внутри storeProxy в resolver */
11
+ proxy: Record<string, unknown>;
12
+ /** Ключи контекста, к которым обратился резолвер */
13
+ getAccessedKeys: () => Set<string>;
14
+ }
15
+ export declare function createContextTrackingProxy(context: Record<string, unknown>): ContextTrackingResult;
16
+ //# sourceMappingURL=createContextTrackingProxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createContextTrackingProxy.d.ts","sourceRoot":"","sources":["../../../store/resolvePipeline/createContextTrackingProxy.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,MAAM,WAAW,qBAAqB;IACpC,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,oDAAoD;IACpD,eAAe,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;CACpC;AAED,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,qBAAqB,CAoBvB"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * createContextTrackingProxy — оборачивает плоский объект контекста в read-only Proxy,
3
+ * который записывает ключи, к которым обращался резолвер.
4
+ *
5
+ * Используется в executeResolve для автоматического определения контекстных зависимостей:
6
+ * если резолвер читает `store.context.accountId`, то `$context.accountId` добавляется
7
+ * в auto-deps, и резолвер перезапустится при изменении этого ключа через `setContext`.
8
+ */
9
+ export function createContextTrackingProxy(context) {
10
+ const accessedKeys = new Set();
11
+ const proxy = new Proxy(context, {
12
+ get(_target, key) {
13
+ // Skip symbol keys (e.g. Symbol.toPrimitive, Symbol.iterator)
14
+ if (typeof key === "symbol")
15
+ return Reflect.get(context, key);
16
+ accessedKeys.add(key);
17
+ return context[key];
18
+ },
19
+ set() {
20
+ // Context is read-only inside resolvers
21
+ throw new TypeError("store.context is read-only inside a resolver");
22
+ },
23
+ });
24
+ return {
25
+ proxy,
26
+ getAccessedKeys: () => accessedKeys,
27
+ };
28
+ }
29
+ //# sourceMappingURL=createContextTrackingProxy.js.map