palistor 0.0.25 → 0.0.27

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 (255) hide show
  1. package/README.md +609 -542
  2. package/README.ru.md +1015 -0
  3. package/dist/index.d.ts +16 -27
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +17 -28
  6. package/dist/index.js.map +1 -1
  7. package/dist/react/createTrackingProxy.d.ts +27 -27
  8. package/dist/react/createTrackingProxy.d.ts.map +1 -1
  9. package/dist/react/createTrackingProxy.js +54 -53
  10. package/dist/react/createTrackingProxy.js.map +1 -1
  11. package/dist/react/useForm.d.ts +42 -43
  12. package/dist/react/useForm.d.ts.map +1 -1
  13. package/dist/react/useForm.js +38 -38
  14. package/dist/react/useForm.js.map +1 -1
  15. package/dist/react/usePersist.d.ts +14 -14
  16. package/dist/react/usePersist.js +18 -18
  17. package/dist/react/usePersist.js.map +1 -1
  18. package/dist/react/useStoreContext.d.ts +11 -11
  19. package/dist/react/useStoreContext.js +11 -11
  20. package/dist/react/useTranslator.d.ts +12 -12
  21. package/dist/react/useTranslator.js +12 -12
  22. package/dist/store/applyPatch/applyPatch.d.ts +8 -8
  23. package/dist/store/applyPatch/applyPatch.js +12 -12
  24. package/dist/store/applyPatch/applyPatch.js.map +1 -1
  25. package/dist/store/buildProxy/buildEntityProjectionProxy.js +6 -6
  26. package/dist/store/buildProxy/buildEntityProjectionProxy.js.map +1 -1
  27. package/dist/store/buildProxy/buildListProxy.d.ts +8 -8
  28. package/dist/store/buildProxy/buildListProxy.js +30 -30
  29. package/dist/store/buildProxy/buildListProxy.js.map +1 -1
  30. package/dist/store/buildProxy/buildProxy.d.ts +8 -8
  31. package/dist/store/buildProxy/buildProxy.js +39 -39
  32. package/dist/store/buildProxy/buildProxy.js.map +1 -1
  33. package/dist/store/buildProxy/computeProxyKeys.d.ts +8 -8
  34. package/dist/store/buildProxy/computeProxyKeys.js +9 -9
  35. package/dist/store/buildProxy/computeProxyKeys.js.map +1 -1
  36. package/dist/store/buildProxy/handleLazyResolve.d.ts +3 -3
  37. package/dist/store/buildProxy/handleLazyResolve.js +3 -3
  38. package/dist/store/buildProxy/initProxyCaches.d.ts +5 -5
  39. package/dist/store/buildProxy/initProxyCaches.js +5 -5
  40. package/dist/store/compute/computeFieldState.d.ts +3 -3
  41. package/dist/store/compute/computeFieldState.js +8 -8
  42. package/dist/store/compute/computeFieldState.js.map +1 -1
  43. package/dist/store/compute/fieldStateChanged.d.ts +1 -1
  44. package/dist/store/compute/fieldStateChanged.js +1 -1
  45. package/dist/store/compute/recompute/collectGroupComputeNodes.d.ts +4 -4
  46. package/dist/store/compute/recompute/collectGroupComputeNodes.js +7 -7
  47. package/dist/store/compute/recompute/collectGroupComputeNodes.js.map +1 -1
  48. package/dist/store/compute/recompute/recomputeAndNotify.d.ts +3 -3
  49. package/dist/store/compute/recompute/recomputeAndNotify.js +3 -3
  50. package/dist/store/compute/recompute/recomputeLeaves.d.ts +11 -10
  51. package/dist/store/compute/recompute/recomputeLeaves.d.ts.map +1 -1
  52. package/dist/store/compute/recompute/recomputeLeaves.js +26 -27
  53. package/dist/store/compute/recompute/recomputeLeaves.js.map +1 -1
  54. package/dist/store/compute/recompute/recomputeTargeted.d.ts +7 -7
  55. package/dist/store/compute/recompute/recomputeTargeted.js +12 -12
  56. package/dist/store/compute/recompute/recomputeTargeted.js.map +1 -1
  57. package/dist/store/compute/recompute/topologicalSortComputed.d.ts +4 -4
  58. package/dist/store/compute/recompute/topologicalSortComputed.d.ts.map +1 -1
  59. package/dist/store/compute/recompute/topologicalSortComputed.js +11 -13
  60. package/dist/store/compute/recompute/topologicalSortComputed.js.map +1 -1
  61. package/dist/store/compute/recompute/types.d.ts +4 -4
  62. package/dist/store/compute/resolveFlag.d.ts +2 -2
  63. package/dist/store/compute/resolveFlag.js +2 -2
  64. package/dist/store/compute/resolveString.d.ts +5 -5
  65. package/dist/store/compute/resolveString.js +6 -6
  66. package/dist/store/compute/resolveString.js.map +1 -1
  67. package/dist/store/compute/types.d.ts +3 -3
  68. package/dist/store/constants.d.ts +48 -48
  69. package/dist/store/constants.d.ts.map +1 -1
  70. package/dist/store/constants.js +45 -45
  71. package/dist/store/defineFieldMapping.d.ts +21 -19
  72. package/dist/store/defineFieldMapping.d.ts.map +1 -1
  73. package/dist/store/defineFieldMapping.js +21 -19
  74. package/dist/store/defineFieldMapping.js.map +1 -1
  75. package/dist/store/dirtyTracking/collectInitialSnapshot.js +1 -1
  76. package/dist/store/dirtyTracking/collectInitialSnapshot.js.map +1 -1
  77. package/dist/store/dirtyTracking/recomputeDirtyTargeted.d.ts +3 -3
  78. package/dist/store/dirtyTracking/recomputeDirtyTargeted.js +11 -11
  79. package/dist/store/dirtyTracking/recomputeDirtyTargeted.js.map +1 -1
  80. package/dist/store/dirtyTracking/setGroupRevalidate.d.ts +6 -6
  81. package/dist/store/dirtyTracking/setGroupRevalidate.js +7 -7
  82. package/dist/store/dirtyTracking/setGroupRevalidate.js.map +1 -1
  83. package/dist/store/entityRegistry/entityRegistry.d.ts +72 -72
  84. package/dist/store/entityRegistry/entityRegistry.d.ts.map +1 -1
  85. package/dist/store/entityRegistry/entityRegistry.js +91 -91
  86. package/dist/store/entityRegistry/entityRegistry.js.map +1 -1
  87. package/dist/store/entityRegistry/generateId.d.ts +3 -3
  88. package/dist/store/entityRegistry/generateId.js +3 -3
  89. package/dist/store/entityRegistry/types.d.ts +17 -17
  90. package/dist/store/entityRegistry/types.d.ts.map +1 -1
  91. package/dist/store/flow/buildFlowStepsProxy.d.ts +9 -9
  92. package/dist/store/flow/buildFlowStepsProxy.js +13 -13
  93. package/dist/store/flow/buildFlowStepsProxy.js.map +1 -1
  94. package/dist/store/flow/defineFlow.d.ts +27 -25
  95. package/dist/store/flow/defineFlow.d.ts.map +1 -1
  96. package/dist/store/flow/defineFlow.js +15 -13
  97. package/dist/store/flow/defineFlow.js.map +1 -1
  98. package/dist/store/flow/flowApi.d.ts +3 -2
  99. package/dist/store/flow/flowApi.d.ts.map +1 -1
  100. package/dist/store/flow/flowApi.js +1 -1
  101. package/dist/store/flow/flowApi.js.map +1 -1
  102. package/dist/store/flow/flowNavigation.d.ts +65 -63
  103. package/dist/store/flow/flowNavigation.d.ts.map +1 -1
  104. package/dist/store/flow/flowNavigation.js +74 -72
  105. package/dist/store/flow/flowNavigation.js.map +1 -1
  106. package/dist/store/flow/flowState.d.ts +16 -16
  107. package/dist/store/flow/flowState.d.ts.map +1 -1
  108. package/dist/store/flow/flowState.js +5 -5
  109. package/dist/store/flow/flowState.js.map +1 -1
  110. package/dist/store/groupDeps/createGroupDeps.d.ts +3 -3
  111. package/dist/store/groupDeps/createGroupDeps.js +6 -6
  112. package/dist/store/groupDeps/createGroupDeps.js.map +1 -1
  113. package/dist/store/groupDeps/createTrackingValues.d.ts +9 -9
  114. package/dist/store/groupDeps/createTrackingValues.js +11 -11
  115. package/dist/store/groupDeps/createTrackingValues.js.map +1 -1
  116. package/dist/store/groupDeps/getNodeGroupPath.d.ts +3 -3
  117. package/dist/store/groupDeps/getNodeGroupPath.js +5 -5
  118. package/dist/store/groupDeps/getNodeGroupPath.js.map +1 -1
  119. package/dist/store/groupDeps/getRecipientGroups.d.ts +1 -1
  120. package/dist/store/groupDeps/getRecipientGroups.js +1 -1
  121. package/dist/store/groupDeps/groupDeps.d.ts +7 -7
  122. package/dist/store/groupDeps/groupDeps.js +7 -7
  123. package/dist/store/groupDeps/pairKey.d.ts +3 -3
  124. package/dist/store/groupDeps/pairKey.d.ts.map +1 -1
  125. package/dist/store/groupDeps/pairKey.js +4 -4
  126. package/dist/store/groupDeps/pairKey.js.map +1 -1
  127. package/dist/store/groupDeps/resolveGroupByPath.d.ts +3 -3
  128. package/dist/store/groupDeps/resolveGroupByPath.js +3 -3
  129. package/dist/store/init/createNotificationHub.d.ts +31 -31
  130. package/dist/store/init/createNotificationHub.d.ts.map +1 -1
  131. package/dist/store/init/createNotificationHub.js +36 -37
  132. package/dist/store/init/createNotificationHub.js.map +1 -1
  133. package/dist/store/init/createResolveManager.d.ts +72 -69
  134. package/dist/store/init/createResolveManager.d.ts.map +1 -1
  135. package/dist/store/init/createResolveManager.js +101 -98
  136. package/dist/store/init/createResolveManager.js.map +1 -1
  137. package/dist/store/init/initGroupSubmitting.d.ts +2 -2
  138. package/dist/store/init/initGroupSubmitting.js +4 -4
  139. package/dist/store/init/initGroupSubmitting.js.map +1 -1
  140. package/dist/store/normalizeConfig.d.ts +20 -18
  141. package/dist/store/normalizeConfig.d.ts.map +1 -1
  142. package/dist/store/normalizeConfig.js +31 -29
  143. package/dist/store/normalizeConfig.js.map +1 -1
  144. package/dist/store/onChangePipeline/computeFieldKey.d.ts +2 -2
  145. package/dist/store/onChangePipeline/computeFieldKey.js +2 -2
  146. package/dist/store/onChangePipeline/findOnChangeAncestors.d.ts +2 -2
  147. package/dist/store/onChangePipeline/findOnChangeAncestors.js +4 -4
  148. package/dist/store/onChangePipeline/findOnChangeAncestors.js.map +1 -1
  149. package/dist/store/onChangePipeline/onChangePipeline.d.ts +13 -12
  150. package/dist/store/onChangePipeline/onChangePipeline.d.ts.map +1 -1
  151. package/dist/store/onChangePipeline/onChangePipeline.js +14 -13
  152. package/dist/store/onChangePipeline/onChangePipeline.js.map +1 -1
  153. package/dist/store/persist/drivers.d.ts +7 -7
  154. package/dist/store/persist/drivers.js +8 -8
  155. package/dist/store/persist/drivers.js.map +1 -1
  156. package/dist/store/persist/index.d.ts +1 -1
  157. package/dist/store/persist/persistManager.d.ts +23 -23
  158. package/dist/store/persist/persistManager.d.ts.map +1 -1
  159. package/dist/store/persist/persistManager.js +51 -51
  160. package/dist/store/persist/persistManager.js.map +1 -1
  161. package/dist/store/persist/types.d.ts +23 -23
  162. package/dist/store/persist/types.d.ts.map +1 -1
  163. package/dist/store/persist/types.js +4 -4
  164. package/dist/store/resetPipeline/buildResetPatch.d.ts +5 -5
  165. package/dist/store/resetPipeline/buildResetPatch.js +5 -5
  166. package/dist/store/resetPipeline/collectDefaults.d.ts +5 -5
  167. package/dist/store/resetPipeline/collectDefaults.js +6 -6
  168. package/dist/store/resetPipeline/collectDefaults.js.map +1 -1
  169. package/dist/store/resetPipeline/resetPipeline.d.ts +7 -7
  170. package/dist/store/resetPipeline/resetPipeline.js +15 -15
  171. package/dist/store/resetPipeline/resetPipeline.js.map +1 -1
  172. package/dist/store/resolvePipeline/applyPendingWrites.d.ts +10 -10
  173. package/dist/store/resolvePipeline/applyPendingWrites.d.ts.map +1 -1
  174. package/dist/store/resolvePipeline/applyPendingWrites.js +35 -38
  175. package/dist/store/resolvePipeline/applyPendingWrites.js.map +1 -1
  176. package/dist/store/resolvePipeline/createContextTrackingProxy.d.ts +8 -7
  177. package/dist/store/resolvePipeline/createContextTrackingProxy.d.ts.map +1 -1
  178. package/dist/store/resolvePipeline/createContextTrackingProxy.js +6 -5
  179. package/dist/store/resolvePipeline/createContextTrackingProxy.js.map +1 -1
  180. package/dist/store/resolvePipeline/createValuesTrackingProxy.d.ts +43 -43
  181. package/dist/store/resolvePipeline/createValuesTrackingProxy.d.ts.map +1 -1
  182. package/dist/store/resolvePipeline/createValuesTrackingProxy.js +70 -70
  183. package/dist/store/resolvePipeline/createValuesTrackingProxy.js.map +1 -1
  184. package/dist/store/resolvePipeline/executeListResolve.d.ts +14 -14
  185. package/dist/store/resolvePipeline/executeListResolve.js +27 -27
  186. package/dist/store/resolvePipeline/executeListResolve.js.map +1 -1
  187. package/dist/store/resolvePipeline/executeResolve.d.ts +15 -15
  188. package/dist/store/resolvePipeline/executeResolve.js +46 -46
  189. package/dist/store/resolvePipeline/executeResolve.js.map +1 -1
  190. package/dist/store/store/NodeRegistry/nodeRegistry.d.ts +61 -61
  191. package/dist/store/store/NodeRegistry/nodeRegistry.d.ts.map +1 -1
  192. package/dist/store/store/NodeRegistry/nodeRegistry.js +85 -86
  193. package/dist/store/store/NodeRegistry/nodeRegistry.js.map +1 -1
  194. package/dist/store/store/NodeRegistry/nodeUtils.d.ts +5 -5
  195. package/dist/store/store/NodeRegistry/nodeUtils.d.ts.map +1 -1
  196. package/dist/store/store/NodeRegistry/nodeUtils.js +5 -5
  197. package/dist/store/store/NodeRegistry/nodeUtils.js.map +1 -1
  198. package/dist/store/store/groupDepsMap.d.ts +23 -23
  199. package/dist/store/store/groupDepsMap.d.ts.map +1 -1
  200. package/dist/store/store/groupDepsMap.js +35 -34
  201. package/dist/store/store/groupDepsMap.js.map +1 -1
  202. package/dist/store/store/hasComputedProps.d.ts +2 -2
  203. package/dist/store/store/hasComputedProps.js +2 -2
  204. package/dist/store/store/nodeMap.d.ts +5 -5
  205. package/dist/store/store/nodeMap.js +7 -7
  206. package/dist/store/store/nodeMap.js.map +1 -1
  207. package/dist/store/store/palistor.d.ts +80 -80
  208. package/dist/store/store/palistor.d.ts.map +1 -1
  209. package/dist/store/store/palistor.js +149 -169
  210. package/dist/store/store/palistor.js.map +1 -1
  211. package/dist/store/store/registerNodes.d.ts +10 -10
  212. package/dist/store/store/registerNodes.js +15 -15
  213. package/dist/store/store/registerNodes.js.map +1 -1
  214. package/dist/store/store/serviceRegistry.d.ts +8 -8
  215. package/dist/store/store/serviceRegistry.d.ts.map +1 -1
  216. package/dist/store/store/serviceRegistry.js +8 -8
  217. package/dist/store/store/serviceRegistry.js.map +1 -1
  218. package/dist/store/store/types.d.ts +236 -234
  219. package/dist/store/store/types.d.ts.map +1 -1
  220. package/dist/store/submitPipeline/applyLeafBeforeSubmit.d.ts +2 -2
  221. package/dist/store/submitPipeline/applyLeafBeforeSubmit.js +2 -2
  222. package/dist/store/submitPipeline/collectLeafStates.d.ts +2 -2
  223. package/dist/store/submitPipeline/collectLeafStates.js +2 -2
  224. package/dist/store/submitPipeline/submitPipeline.d.ts +8 -8
  225. package/dist/store/submitPipeline/submitPipeline.js +12 -12
  226. package/dist/store/submitPipeline/submitPipeline.js.map +1 -1
  227. package/dist/store/submitPipeline/types.d.ts +1 -1
  228. package/dist/store/submitPipeline/types.d.ts.map +1 -1
  229. package/dist/store/traversal/nodeClassifier.d.ts +9 -9
  230. package/dist/store/traversal/nodeClassifier.d.ts.map +1 -1
  231. package/dist/store/traversal/nodeClassifier.js +11 -11
  232. package/dist/store/traversal/nodeClassifier.js.map +1 -1
  233. package/dist/store/traversal/walkFull.d.ts +14 -14
  234. package/dist/store/traversal/walkFull.js +2 -2
  235. package/dist/store/valuesCache/valuesCache.d.ts +9 -9
  236. package/dist/store/valuesCache/valuesCache.d.ts.map +1 -1
  237. package/dist/store/valuesCache/valuesCache.js +6 -6
  238. package/dist/store/writePipeline/formatPatch.d.ts +5 -5
  239. package/dist/store/writePipeline/formatPatch.js +7 -7
  240. package/dist/store/writePipeline/formatPatch.js.map +1 -1
  241. package/dist/store/writePipeline/formatValue.d.ts +5 -5
  242. package/dist/store/writePipeline/formatValue.js +5 -5
  243. package/dist/store/writePipeline/mergeChanged.d.ts +4 -4
  244. package/dist/store/writePipeline/mergeChanged.js +4 -4
  245. package/dist/store/writePipeline/runSetter.d.ts +6 -6
  246. package/dist/store/writePipeline/runSetter.js +8 -8
  247. package/dist/store/writePipeline/storeValue.d.ts +3 -3
  248. package/dist/store/writePipeline/storeValue.js +3 -3
  249. package/dist/store/writePipeline/types.d.ts +4 -4
  250. package/dist/store/writePipeline/types.d.ts.map +1 -1
  251. package/dist/store/writePipeline/writePipeline.d.ts +7 -7
  252. package/dist/store/writePipeline/writePipeline.d.ts.map +1 -1
  253. package/dist/store/writePipeline/writePipeline.js +15 -15
  254. package/dist/store/writePipeline/writePipeline.js.map +1 -1
  255. package/package.json +11 -4
@@ -1,123 +1,123 @@
1
1
  /**
2
- * createValuesTrackingProxy — оборачивает дерево значений в Proxy, который:
3
- * - ЧТЕНИЕ: отслеживает обращённые пути (автоматические зависимости для повторного запуска резолвера)
4
- * - ЗАПИСЬ: буферизирует побочные эффекты (пакетный режим, без промежуточных ре-рендеров)
2
+ * createValuesTrackingProxy — wraps the values tree in a Proxy that:
3
+ * - READS: tracks accessed paths (automatic dependencies for resolver re-runs)
4
+ * - WRITES: buffers side effects (batch mode, no intermediate re-renders)
5
5
  *
6
- * Используется внутри выполнения резолвера: резолвер получает этот прокси вместо реального объекта.
7
- * После завершения резолвера обращённые пути сохраняются для отслеживания зависимостей,
8
- * а буферизированные записи сбрасываются одним пакетом.
6
+ * Used inside resolver execution: the resolver receives this proxy instead of
7
+ * the real object. After the resolver finishes, the accessed paths are stored
8
+ * for dependency tracking and the buffered writes are flushed in one batch.
9
9
  *
10
- * ─── КАК ЭТО РАБОТАЕТ ────────────────────────────────────────────────────────
10
+ * ─── HOW IT WORKS ────────────────────────────────────────────────────────────
11
11
  *
12
- * Дерево значений выглядит как обычный вложенный объект:
12
+ * The values tree looks like a regular nested object:
13
13
  * { user: { name: "Alice", vehicleExists: true }, payment: { amount: 100 } }
14
14
  *
15
- * Когда резолвер запускается, он получает этот прокси вместо реального объекта.
16
- * Прокси перехватывает каждое обращение к свойству:
15
+ * When the resolver runs, it receives this proxy instead of the real object.
16
+ * The proxy intercepts every property access:
17
17
  *
18
- * ЧТЕНИЕ: values.user.name
19
- * → прокси возвращает вложенный прокси для "user"
20
- * → вложенный прокси перехватывает "name", записывает путь "user.name" в accessedPaths
21
- * → возвращает реальное значение
18
+ * READ: values.user.name
19
+ * → the proxy returns a nested proxy for "user"
20
+ * → the nested proxy intercepts "name", records the path "user.name" in accessedPaths
21
+ * → returns the real value
22
22
  *
23
- * ЗАПИСЬ: values.user.vehicleExists = false
24
- * → прокси перехватывает присваивание, записывает { path: "user.vehicleExists", value: false }
25
- * в pendingWrites[]
26
- * → НЕ трогает реальный объект значенийзапись отложена!
23
+ * WRITE: values.user.vehicleExists = false
24
+ * → the proxy intercepts the assignment, records { path: "user.vehicleExists", value: false }
25
+ * into pendingWrites[]
26
+ * → the real values object is NOT touched the write is deferred!
27
27
  *
28
- * После возврата резолвера:
29
- * 1. getAccessedPaths() → используется для перестройки графа зависимостей этого резолвера
30
- * (при следующем изменении любого из этих путей резолвер запустится снова)
31
- * 2. getPendingWrites() → передаётся в applyPendingWrites(), который превращает каждый
32
- * путь обратно во вложенный патч и вызывает applyPatch() на реальном хранилище
28
+ * After the resolver returns:
29
+ * 1. getAccessedPaths() → used to rebuild this resolver's dependency graph
30
+ * (the resolver re-runs the next time any of these paths changes)
31
+ * 2. getPendingWrites() → passed to applyPendingWrites(), which turns each
32
+ * path back into a nested patch and calls applyPatch() on the real store
33
33
  *
34
- * ЗАЧЕМ БУФЕРИЗИРОВАТЬ ЗАПИСИ вместо немедленного применения?
35
- * - Предотвращает каскадные ре-рендеры в середине работы резолвера
36
- * - Все мутации применяются одним атомарным пакетомсогласованное состояние после каждого тика пайплайна
37
- * - Записи резолвера A случайно не запускают резолвер B в процессе его выполнения
34
+ * WHY BUFFER WRITES instead of applying immediately?
35
+ * - Prevents cascading re-renders in the middle of a resolver run
36
+ * - All mutations are applied in one atomic batch consistent state after every pipeline tick
37
+ * - Resolver A's writes don't accidentally trigger resolver B mid-run
38
38
  */
39
39
  /**
40
- * Создаёт отслеживающий прокси с поддержкой записи для дерева значений.
40
+ * Creates a writable tracking proxy for the values tree.
41
41
  *
42
- * - Чтение примитива записывает полный путь (например "user.id") в accessedPaths
43
- * - Чтение объекта возвращает вложенный прокси (рекурсивно), не трекается до обращения к листу
44
- * - Запись по ЛЮБОМУ пути буферизирует присваивание в pendingWrites[], не затрагивая реальные данные
42
+ * - Reading a primitive records the full path (e.g. "user.id") in accessedPaths
43
+ * - Reading an object returns a nested proxy (recursively); not tracked until a leaf is read
44
+ * - Writing to ANY path buffers the assignment in pendingWrites[] without touching real data
45
45
  *
46
- * @param values — текущий снапшот значений (из valuesCache.values), здесь считается только для чтения
46
+ * @param values — current values snapshot (from valuesCache.values), treated as read-only here
47
47
  */
48
48
  export function createValuesTrackingProxy(values) {
49
- // Собирает все пути к примитивам, которые резолвер читает.
50
- // Пример после работы резолвера: Set { "user.name", "user.vehicleExists" }
49
+ // Collects every primitive path the resolver reads.
50
+ // Example after a resolver run: Set { "user.name", "user.vehicleExists" }
51
51
  const accessedPaths = new Set();
52
- // Собирает все записи, которые резолвер выполняет, в порядке их появления.
53
- // Ни одна не применяется до вызова applyPendingWrites() после возврата резолвера.
54
- // Пример: [{ path: "user.vehicleExists", value: false }, { path: "payment.amount", value: 200 }]
52
+ // Collects every write the resolver performs, in order of appearance.
53
+ // None is applied until applyPendingWrites() runs after the resolver returns.
54
+ // Example: [{ path: "user.vehicleExists", value: false }, { path: "payment.amount", value: 200 }]
55
55
  const pendingWrites = [];
56
- // Кэширует вложенные прокси по их префиксу пути, чтобы при повторном обращении
57
- // к одному и тому же вложенному объекту возвращался тот же экземпляр прокси.
58
- // Ключ: префикс пути через точку (например "user"), или "__root__" для корневого уровня.
56
+ // Caches nested proxies by their path prefix so repeated access to the same
57
+ // nested object returns the same proxy instance.
58
+ // Key: dot-separated path prefix (e.g. "user"), or "__root__" for the root level.
59
59
  const proxyCache = new Map();
60
60
  /**
61
- * Рекурсивно оборачивает `target` в Proxy, который отслеживает чтения и буферизирует записи.
61
+ * Recursively wraps `target` in a Proxy that tracks reads and buffers writes.
62
62
  *
63
- * @param target — реальный объект значений (или вложенный подобъект) для обёртки
64
- * @param parentPath — накопленный префикс пути через точку, например "" для корня или "user" для вложенного
63
+ * @param target — the real values object (or nested sub-object) to wrap
64
+ * @param parentPath — accumulated dot-path prefix, e.g. "" for the root or "user" for a nested one
65
65
  */
66
66
  function buildValuesProxy(target, parentPath) {
67
- // Возвращаем закэшированный прокси для данного пути, чтобы не создавать дублирующие прокси
68
- // для одного узла (важно для проверок ссылочного равенства внутри резолверов).
67
+ // Return the cached proxy for this path so we don't create duplicate
68
+ // proxies for one node (matters for referential equality checks inside resolvers).
69
69
  const cacheKey = parentPath || "__root__";
70
70
  if (proxyCache.has(cacheKey))
71
71
  return proxyCache.get(cacheKey);
72
72
  const p = new Proxy(target, {
73
- // ─── GET-ловушка ──────────────────────────────────────────────────────
74
- // Перехватывает каждое чтение свойства. Строит полный путь через точку, затем:
75
- // • если значение вложенный простой объект возвращает вложенный прокси
76
- // (промежуточные пути не трекаем, только чтения листьев)
77
- // • если значение примитив записывает путь в accessedPaths и возвращает его
73
+ // ─── GET trap ─────────────────────────────────────────────────────────
74
+ // Intercepts every property read. Builds the full dot-path, then:
75
+ // • nested plain object returns a nested proxy
76
+ // (intermediate paths are not tracked, only leaf reads)
77
+ // • primitive records the path in accessedPaths and returns it
78
78
  get(_t, key) {
79
- // Игнорируем символьные ключи (например Symbol.toPrimitive, Symbol.iterator) —
80
- // это внутренние ключи фреймворка/рантайма, не часть дерева значений.
79
+ // Ignore symbol keys (e.g. Symbol.toPrimitive, Symbol.iterator) —
80
+ // framework/runtime internals, not part of the values tree.
81
81
  if (typeof key === "symbol")
82
82
  return undefined;
83
- // Формируем полный путь через точку для данного обращения, например "user" + "." + "name" = "user.name"
83
+ // Full dot-path for this access, e.g. "user" + "." + "name" = "user.name"
84
84
  const fullPath = parentPath ? `${parentPath}.${key}` : key;
85
85
  const val = target[key];
86
- // Если значение простой объект, оборачиваем его в ещё один прокси, чтобы
87
- // продолжать отслеживать более глубокие чтения, например values.user.address.city.
88
- // Массивы и Date считаются листовыми значениями (не рекурсируем).
86
+ // Plain objects are wrapped in another proxy to keep tracking deeper
87
+ // reads, e.g. values.user.address.city.
88
+ // Arrays and Dates are treated as leaf values (no recursion).
89
89
  if (val !== null && typeof val === "object" && !Array.isArray(val) && !(val instanceof Date)) {
90
90
  return buildValuesProxy(val, fullPath);
91
91
  }
92
- // Чтение листазаписываем путь, чтобы резолвер мог быть перезапущен позже,
93
- // когда это конкретное значение изменится в хранилище.
92
+ // Leaf readrecord the path so the resolver can be re-triggered
93
+ // later when this specific value changes in the store.
94
94
  accessedPaths.add(fullPath);
95
95
  return val;
96
96
  },
97
- // ─── SET-ловушка ──────────────────────────────────────────────────────
98
- // Перехватывает каждое присваивание. Вместо мутации реального объекта значений
99
- // помещаем дескриптор PendingWrite в буфер.
97
+ // ─── SET trap ─────────────────────────────────────────────────────────
98
+ // Intercepts every assignment. Instead of mutating the real values
99
+ // object, pushes a PendingWrite descriptor into the buffer.
100
100
  //
101
- // Запись намеренно откладывается:
102
- // 1. Резолвер может выполнить несколько записей подряд; сначала собираем все.
103
- // 2. applyPendingWrites() вызывается после возврата резолвера, поэтому все
104
- // мутации применяются атомарно за один вызов applyPatch().
105
- // 3. Это не позволяет резолверу наблюдать собственные частично применённые записи.
101
+ // Writes are deliberately deferred:
102
+ // 1. A resolver may perform several writes in a row; collect them all first.
103
+ // 2. applyPendingWrites() runs after the resolver returns, so all
104
+ // mutations are applied atomically in a single applyPatch() call.
105
+ // 3. The resolver cannot observe its own partially applied writes.
106
106
  set(_t, key, newValue) {
107
107
  if (typeof key === "symbol")
108
108
  return false;
109
109
  const fullPath = parentPath ? `${parentPath}.${key}` : key;
110
- // Буферизируем записьреальное хранилище пока не трогаем.
110
+ // Buffer the write the real store is untouched for now.
111
111
  pendingWrites.push({ path: fullPath, value: newValue });
112
- // Возврат true сообщает Proxy, что присваивание «принято»
113
- // (предотвращает TypeError в strict-режиме, несмотря на отсутствие реальной мутации).
112
+ // Returning true tells the Proxy the assignment was "accepted"
113
+ // (prevents a strict-mode TypeError despite no real mutation happening).
114
114
  return true;
115
115
  },
116
116
  });
117
117
  proxyCache.set(cacheKey, p);
118
118
  return p;
119
119
  }
120
- // Строим прокси корневого уровня (parentPath = "" означает отсутствие префикса).
120
+ // Build the root-level proxy (parentPath = "" means no prefix).
121
121
  const proxy = buildValuesProxy(values, "");
122
122
  return {
123
123
  proxy,
@@ -1 +1 @@
1
- {"version":3,"file":"createValuesTrackingProxy.js","sourceRoot":"","sources":["../../../store/resolvePipeline/createValuesTrackingProxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AA8BH;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAA+B;IAE/B,2DAA2D;IAC3D,2EAA2E;IAC3E,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,2EAA2E;IAC3E,kFAAkF;IAClF,iGAAiG;IACjG,MAAM,aAAa,GAAmB,EAAE,CAAC;IAEzC,+EAA+E;IAC/E,6EAA6E;IAC7E,yFAAyF;IACzF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmB,CAAC;IAE9C;;;;;OAKG;IACH,SAAS,gBAAgB,CAAC,MAA+B,EAAE,UAAkB;QAC3E,2FAA2F;QAC3F,+EAA+E;QAC/E,MAAM,QAAQ,GAAG,UAAU,IAAI,UAAU,CAAC;QAC1C,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,CAA4B,CAAC;QAEzF,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;YAC1B,yEAAyE;YACzE,+EAA+E;YAC/E,6EAA6E;YAC7E,6DAA6D;YAC7D,kFAAkF;YAClF,GAAG,CAAC,EAAE,EAAE,GAAoB;gBAC1B,+EAA+E;gBAC/E,sEAAsE;gBACtE,IAAI,OAAO,GAAG,KAAK,QAAQ;oBAAE,OAAO,SAAS,CAAC;gBAE9C,wGAAwG;gBACxG,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAExB,2EAA2E;gBAC3E,mFAAmF;gBACnF,kEAAkE;gBAClE,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,EAAE,CAAC;oBAC7F,OAAO,gBAAgB,CAAC,GAA8B,EAAE,QAAQ,CAAC,CAAC;gBACpE,CAAC;gBAED,6EAA6E;gBAC7E,uDAAuD;gBACvD,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC5B,OAAO,GAAG,CAAC;YACb,CAAC;YAED,yEAAyE;YACzE,+EAA+E;YAC/E,4CAA4C;YAC5C,EAAE;YACF,kCAAkC;YAClC,gFAAgF;YAChF,6EAA6E;YAC7E,gEAAgE;YAChE,qFAAqF;YACrF,GAAG,CAAC,EAAE,EAAE,GAAoB,EAAE,QAAiB;gBAC7C,IAAI,OAAO,GAAG,KAAK,QAAQ;oBAAE,OAAO,KAAK,CAAC;gBAE1C,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3D,4DAA4D;gBAC5D,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACxD,0DAA0D;gBAC1D,sFAAsF;gBACtF,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;QAEH,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,CAA4B,CAAC;IACtC,CAAC;IAED,iFAAiF;IACjF,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE3C,OAAO;QACL,KAAK;QACL,gBAAgB,EAAE,GAAG,EAAE,CAAC,aAAa;QACrC,gBAAgB,EAAE,GAAG,EAAE,CAAC,aAAa;KACtC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"createValuesTrackingProxy.js","sourceRoot":"","sources":["../../../store/resolvePipeline/createValuesTrackingProxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AA8BH;;;;;;;;GAQG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAA+B;IAE/B,oDAAoD;IACpD,0EAA0E;IAC1E,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IAExC,sEAAsE;IACtE,8EAA8E;IAC9E,kGAAkG;IAClG,MAAM,aAAa,GAAmB,EAAE,CAAC;IAEzC,4EAA4E;IAC5E,iDAAiD;IACjD,kFAAkF;IAClF,MAAM,UAAU,GAAG,IAAI,GAAG,EAAmB,CAAC;IAE9C;;;;;OAKG;IACH,SAAS,gBAAgB,CAAC,MAA+B,EAAE,UAAkB;QAC3E,qEAAqE;QACrE,mFAAmF;QACnF,MAAM,QAAQ,GAAG,UAAU,IAAI,UAAU,CAAC;QAC1C,IAAI,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC;YAAE,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,CAA4B,CAAC;QAEzF,MAAM,CAAC,GAAG,IAAI,KAAK,CAAC,MAAM,EAAE;YAC1B,yEAAyE;YACzE,kEAAkE;YAClE,mDAAmD;YACnD,4DAA4D;YAC5D,mEAAmE;YACnE,GAAG,CAAC,EAAE,EAAE,GAAoB;gBAC1B,kEAAkE;gBAClE,4DAA4D;gBAC5D,IAAI,OAAO,GAAG,KAAK,QAAQ;oBAAE,OAAO,SAAS,CAAC;gBAE9C,0EAA0E;gBAC1E,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3D,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAExB,qEAAqE;gBACrE,wCAAwC;gBACxC,8DAA8D;gBAC9D,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,YAAY,IAAI,CAAC,EAAE,CAAC;oBAC7F,OAAO,gBAAgB,CAAC,GAA8B,EAAE,QAAQ,CAAC,CAAC;gBACpE,CAAC;gBAED,kEAAkE;gBAClE,uDAAuD;gBACvD,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAC5B,OAAO,GAAG,CAAC;YACb,CAAC;YAED,yEAAyE;YACzE,mEAAmE;YACnE,4DAA4D;YAC5D,EAAE;YACF,oCAAoC;YACpC,+EAA+E;YAC/E,oEAAoE;YACpE,uEAAuE;YACvE,qEAAqE;YACrE,GAAG,CAAC,EAAE,EAAE,GAAoB,EAAE,QAAiB;gBAC7C,IAAI,OAAO,GAAG,KAAK,QAAQ;oBAAE,OAAO,KAAK,CAAC;gBAE1C,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAC3D,0DAA0D;gBAC1D,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACxD,+DAA+D;gBAC/D,yEAAyE;gBACzE,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;QAEH,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC5B,OAAO,CAA4B,CAAC;IACtC,CAAC;IAED,gEAAgE;IAChE,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE3C,OAAO;QACL,KAAK;QACL,gBAAgB,EAAE,GAAG,EAAE,CAAC,aAAa;QACrC,gBAAgB,EAAE,GAAG,EAAE,CAAC,aAAa;KACtC,CAAC;AACJ,CAAC"}
@@ -2,31 +2,31 @@ import type { EntityData } from "../entityRegistry";
2
2
  import type { ListResolveConfig, ListState } from "../store/types";
3
3
  import type { ResolveDeps } from "./types";
4
4
  /**
5
- * Дополнительные зависимости для executeListResolve.
6
- * Расширяет ResolveDeps с list-специфичными колбэками.
5
+ * Extra dependencies for executeListResolve.
6
+ * Extends ResolveDeps with list-specific callbacks.
7
7
  */
8
8
  export interface ListResolveDeps extends ResolveDeps {
9
9
  /**
10
- * Upsert entities в EntityRegistry + зарегистрировать leaf-ноды.
11
- * Не вызывает recompute/notifyChanged — они вызываются после.
12
- * Возвращает Set изменённых leaf-нод.
13
- * Phase 4: listNode передаётся для автоматического запуска entity field resolves.
10
+ * Upsert entities into EntityRegistry + register leaf nodes.
11
+ * Does not call recompute/notifyChanged — those run afterwards.
12
+ * Returns the Set of changed leaf nodes.
13
+ * listNode is passed to trigger entity field resolves automatically.
14
14
  */
15
15
  setEntitiesRaw: (items: EntityData[], listNode?: object) => Set<object>;
16
16
  /**
17
- * Синхронизировать valuesCache с составом списка (единый метод, root + entity).
18
- * Вызывается после обновления listState.itemIds.
17
+ * Sync valuesCache with the list membership (single method, root + entity).
18
+ * Called after listState.itemIds is updated.
19
19
  */
20
20
  syncListValuesCache: (listState: ListState) => void;
21
21
  }
22
22
  /**
23
- * Запустить resolve для ListNode.
23
+ * Run resolve for a ListNode.
24
24
  *
25
- * Отличается от executeResolve (для групп):
26
- * - resolver возвращает Array<EntityData> вместо Record<string, unknown>
27
- * - Результатupsert entities + обновление listState.itemIds
28
- * - initialItemIds обновляется при успехе → dirty = false после resolve
29
- * - loading state хранится в nodeState для listNode (создаётся на лету)
25
+ * Differs from executeResolve (for groups):
26
+ * - the resolver returns Array<EntityData> instead of Record<string, unknown>
27
+ * - the result entity upserts + listState.itemIds update
28
+ * - initialItemIds is updated on success → dirty = false after resolve
29
+ * - loading state is kept in nodeState for the listNode (created on the fly)
30
30
  */
31
31
  export declare function executeListResolve(listNode: object, resolve: ListResolveConfig, listState: ListState, deps: ListResolveDeps): Promise<unknown>;
32
32
  //# sourceMappingURL=executeListResolve.d.ts.map
@@ -14,43 +14,43 @@ const DEFAULT_LIST_STATE = {
14
14
  };
15
15
  // ─── executeListResolve ──────────────────────────────────────────────────────
16
16
  /**
17
- * Запустить resolve для ListNode.
17
+ * Run resolve for a ListNode.
18
18
  *
19
- * Отличается от executeResolve (для групп):
20
- * - resolver возвращает Array<EntityData> вместо Record<string, unknown>
21
- * - Результатupsert entities + обновление listState.itemIds
22
- * - initialItemIds обновляется при успехе → dirty = false после resolve
23
- * - loading state хранится в nodeState для listNode (создаётся на лету)
19
+ * Differs from executeResolve (for groups):
20
+ * - the resolver returns Array<EntityData> instead of Record<string, unknown>
21
+ * - the result entity upserts + listState.itemIds update
22
+ * - initialItemIds is updated on success → dirty = false after resolve
23
+ * - loading state is kept in nodeState for the listNode (created on the fly)
24
24
  */
25
25
  export function executeListResolve(listNode, resolve, listState, deps) {
26
26
  const { nodeState, resolveStates, recompute, notifyChanged, notify, setEntitiesRaw, syncListValuesCache, store, } = deps;
27
27
  const state = resolveStates.get(listNode);
28
28
  if (!state)
29
29
  return Promise.resolve();
30
- // Дедупликация
30
+ // Deduplication
31
31
  if (state.status === "pending" && state.promise) {
32
32
  return state.promise;
33
33
  }
34
34
  state.status = "pending";
35
35
  state.attempt = 0;
36
36
  state.error = null;
37
- // Устанавливаем loading = true в nodeState для listNode
37
+ // Set loading = true in nodeState for the listNode
38
38
  const nodeSt = nodeState.get(listNode);
39
39
  nodeState.set(listNode, { ...(nodeSt ?? DEFAULT_LIST_STATE), loading: true });
40
- // Уведомляем об изменении loading: true.
41
- // U2: бампаем и сам ListState (новый ключ трекинга), и listNode (мост для тестов).
40
+ // Notify about loading: true.
41
+ // Bump both the ListState (the tracking key) and the listNode (bridge for tests).
42
42
  const loadingChanged = new Set([listNode, listState]);
43
43
  recomputeAndNotify(loadingChanged, recompute, notifyChanged);
44
44
  const promise = (async () => {
45
45
  let contextTracking = null;
46
46
  let valuesTracking = null;
47
47
  try {
48
- // Вызываем resolver со снимком текущих значений через tracking proxy
49
- // для автоматической регистрации зависимостей (deps)
48
+ // Call the resolver with a snapshot of current values through a tracking
49
+ // proxy, so dependencies (deps) are registered automatically
50
50
  const { getValues } = deps;
51
51
  const freshValues = getValues();
52
52
  valuesTracking = createValuesTrackingProxy(freshValues);
53
- // Оборачиваем store.context в tracking proxy для автоматических контекстных зависимостей
53
+ // Wrap store.context in a tracking proxy for automatic context dependencies
54
54
  contextTracking = createContextTrackingProxy(store.context);
55
55
  const storeProxy = new Proxy(store, {
56
56
  get(target, key) {
@@ -60,34 +60,34 @@ export function executeListResolve(listNode, resolve, listState, deps) {
60
60
  },
61
61
  });
62
62
  const result = await resolve.resolver(valuesTracking.proxy, storeProxy);
63
- // Прерываем, если статус изменился во время ожидания (например, reset)
63
+ // Abort when the status changed while awaiting (e.g. a reset)
64
64
  if (state.status !== "pending")
65
65
  return result;
66
66
  // ── Success path ────────────────────────────────────────────────────
67
- // U2: ListState ключ трекинга; listNode мост обратной совместимости.
67
+ // ListState is the tracking key; listNode is the backward-compat bridge.
68
68
  const changed = new Set([listNode, listState]);
69
69
  if (Array.isArray(result) && result.length > 0) {
70
- // Upsert всех сущностей (регистрирует листья, возвращает изменённые узлы)
71
- // Pass listNode so that entity field resolves are triggered automatically (Phase 4).
70
+ // Upsert all entities (registers leaves, returns changed nodes).
71
+ // Pass listNode so that entity field resolves are triggered automatically.
72
72
  const entityChanged = setEntitiesRaw(result, listNode);
73
73
  for (const n of entityChanged)
74
74
  changed.add(n);
75
- // Обновляем itemIds из результата resolver
75
+ // Update itemIds from the resolver result
76
76
  listState.itemIds = result
77
77
  .map((item) => item.id)
78
78
  .filter((id) => typeof id === "string" && id !== "");
79
- // Сохраняем как начальный снимок для dirty-трекинга
79
+ // Store as the initial snapshot for dirty tracking
80
80
  listState.initialItemIds = [...listState.itemIds];
81
- // Синхронизируем valuesCache.values[listKey]
81
+ // Sync valuesCache.values[listKey]
82
82
  syncListValuesCache(listState);
83
83
  }
84
84
  else if (Array.isArray(result) && result.length === 0) {
85
- // Пустой результаточищаем список
85
+ // Empty resultclear the list
86
86
  listState.itemIds = [];
87
87
  listState.initialItemIds = [];
88
88
  syncListValuesCache(listState);
89
89
  }
90
- // Авто-зависимости: явные deps + values tracking + контекстные зависимости
90
+ // Auto-dependencies: explicit deps + values tracking + context dependencies
91
91
  const mergedDeps = new Set(resolve.deps ?? []);
92
92
  for (const p of valuesTracking.getAccessedPaths())
93
93
  mergedDeps.add(p);
@@ -97,13 +97,13 @@ export function executeListResolve(listNode, resolve, listState, deps) {
97
97
  }
98
98
  }
99
99
  state.dependencies = mergedDeps;
100
- // Обновляем loading = false, status = resolved
100
+ // Update loading = false, status = resolved
101
101
  const updatedSt = nodeState.get(listNode);
102
102
  nodeState.set(listNode, { ...(updatedSt ?? DEFAULT_LIST_STATE), loading: false });
103
103
  state.status = "resolved";
104
104
  state.error = null;
105
105
  recomputeAndNotify(changed, recompute, notifyChanged);
106
- // Если зависимость изменилась пока были в pending — перезапускаем немедленно
106
+ // If a dependency changed while pending — re-run immediately
107
107
  if (state.pendingRetrigger) {
108
108
  state.pendingRetrigger = false;
109
109
  state.status = "idle";
@@ -120,7 +120,7 @@ export function executeListResolve(listNode, resolve, listState, deps) {
120
120
  nodeState.set(listNode, { ...(updatedSt ?? DEFAULT_LIST_STATE), loading: false });
121
121
  state.status = "error";
122
122
  state.error = err;
123
- // Сохраняем контекстные зависимости даже в случае ошибки
123
+ // Store context dependencies even on the error path
124
124
  {
125
125
  const mergedDeps = new Set(resolve.deps ?? []);
126
126
  if (valuesTracking) {
@@ -138,10 +138,10 @@ export function executeListResolve(listNode, resolve, listState, deps) {
138
138
  resolve.onError?.(err, { notify });
139
139
  }
140
140
  catch {
141
- // onError не должен бросать исключения
141
+ // onError should not throw
142
142
  }
143
143
  recomputeAndNotify(new Set([listNode, listState]), recompute, notifyChanged);
144
- // Если зависимость изменилась пока были в pending — перезапускаем немедленно
144
+ // If a dependency changed while pending — re-run immediately
145
145
  if (state.pendingRetrigger) {
146
146
  state.pendingRetrigger = false;
147
147
  state.status = "idle";
@@ -1 +1 @@
1
- {"version":3,"file":"executeListResolve.js","sourceRoot":"","sources":["../../../store/resolvePipeline/executeListResolve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executeListResolve.js","sourceRoot":"","sources":["../../../store/resolvePipeline/executeListResolve.ts"],"names":[],"mappings":"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"}
@@ -1,26 +1,26 @@
1
1
  import { type AnyConfigNode } from "../store/types";
2
2
  import type { Resolve, ResolveDeps } from "./types";
3
3
  /**
4
- * Запустить resolve для заданного узла.
4
+ * Run resolve for a given node.
5
5
  *
6
- * Пайплайн:
7
- * 1. Проверить статусесли pending, вернуть существующий промис (дедупликация)
8
- * 2. Установить status = pending, loading = true
9
- * 3. Если есть optimisticResolver → запустить, применить патч (без notify, батчем)
10
- * 4. Обернуть values в tracking write-proxy
11
- * 5. Вызвать resolver(trackedValues)
12
- * 6. Логика повторов: при ошибке повторять до retry.attempts раз
13
- * 7. При успехе:
14
- * - applyPatch(result) к поддереву узла
15
- * - сбросить буферизованные записи (сайд-эффекты)
6
+ * Pipeline:
7
+ * 1. Check statusif pending, return the existing promise (deduplication)
8
+ * 2. Set status = pending, loading = true
9
+ * 3. If there's an optimisticResolver → run it, apply the patch (no notify, batched)
10
+ * 4. Wrap values in a tracking write-proxy
11
+ * 5. Call resolver(trackedValues)
12
+ * 6. Retry logic: on error retry up to retry.attempts times
13
+ * 7. On success:
14
+ * - applyPatch(result) to the node's subtree
15
+ * - flush buffered writes (side effects)
16
16
  * - loading = false, status = resolved
17
- * - recomputeAll (однократно)
18
- * - notifyChanged (однократно)
19
- * 8. При ошибке (после всех повторов):
17
+ * - recomputeAll (once)
18
+ * - notifyChanged (once)
19
+ * 8. On error (after all retries):
20
20
  * - onError(error, { notify })
21
21
  * - loading = false, status = error
22
22
  * - recomputeAll + notifyChanged
23
- * 9. Сохранить accessedPaths для авто-зависимостей
23
+ * 9. Store accessedPaths for auto-dependencies
24
24
  */
25
25
  export declare function executeResolve(node: AnyConfigNode, resolve: Resolve, deps: ResolveDeps): Promise<unknown>;
26
26
  //# sourceMappingURL=executeResolve.d.ts.map