palistor 0.0.25 → 0.0.26

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 +574 -542
  2. package/README.ru.md +979 -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
@@ -7,17 +7,18 @@ import { isLeafNode, isGroupNode, isListNode } from "./nodeUtils";
7
7
  import { makeIdentityView } from "./nodeView";
8
8
  import { collectFlowStates } from "../../flow/flowState";
9
9
  /**
10
- * Рекурсивно собрать обратный индекс `listConfigNode → fieldPath` для ВСЕХ
11
- * списков конфига, включая вложенные в template списка (per-entity lists, C3)
12
- * и вложенные в nested-группы (C4).
10
+ * Recursively build the reverse index `listConfigNode → fieldPath` for ALL
11
+ * lists in the config, including lists nested inside a list template
12
+ * (per-entity lists) and inside nested groups.
13
13
  *
14
- * Путь хранится массивом ключей **относительно ближайшего entity-scope**:
15
- * - список прямо под template → `["contacts"]`;
16
- * - список внутри nested-группы → `["profile", "contacts"]`.
17
- * Путь сбрасывается на границе каждого списка (`child[0]` открывает новый
18
- * entity-scope его item-ы это отдельные entity со своим projectionObj).
19
- * Это позволяет `syncListValuesCache` (per-entity ветка) записать состав в
20
- * правильное вложенное место projectionObj владельца.
14
+ * The path is stored as an array of keys **relative to the nearest entity
15
+ * scope**:
16
+ * - a list directly under a template → `["contacts"]`;
17
+ * - a list inside a nested group → `["profile", "contacts"]`.
18
+ * The path resets at every list boundary (`child[0]` opens a new entity
19
+ * scope its items are separate entities with their own projectionObj).
20
+ * This lets `syncListValuesCache` (per-entity branch) write the membership
21
+ * into the right nested spot of the owner's projectionObj.
21
22
  */
22
23
  function collectListFieldKeys(node, map, prefix = []) {
23
24
  for (const key of Object.keys(node)) {
@@ -30,7 +31,7 @@ function collectListFieldKeys(node, map, prefix = []) {
30
31
  map.set(child, [...prefix, key]);
31
32
  const template = child[0];
32
33
  if (template && typeof template === "object") {
33
- // Новый entity-scope — путь сбрасывается.
34
+ // New entity scope — the path resets.
34
35
  collectListFieldKeys(template, map, []);
35
36
  }
36
37
  continue;
@@ -41,89 +42,88 @@ function collectListFieldKeys(node, map, prefix = []) {
41
42
  }
42
43
  }
43
44
  /**
44
- * Реестр узлов конфига.
45
+ * Registry of config nodes.
45
46
  *
46
- * Объединяет данные,
47
- * `Palistor`: nodeState, nodePaths, nodeParents, computeNodes,
48
- * groupComputeMap, proxyCache.
47
+ * Bundles the data used by `Palistor`: nodeState, nodePaths, nodeParents,
48
+ * computeNodes, groupComputeMap, proxyCache.
49
49
  *
50
- * Выполняет инициализацию (registerNodes + buildNodeMaps + initGroupSubmitting)
51
- * в конструкторе.
50
+ * Runs initialization (registerNodes + buildNodeMaps + initGroupSubmitting)
51
+ * in the constructor.
52
52
  *
53
- * @internal используется пайплайнами и подсистемами через kernel
53
+ * @internal used by pipelines and subsystems via the kernel
54
54
  */
55
55
  export class NodeRegistry {
56
- // ─── Инициализация ───────────────────────────────────────────────────────
56
+ // ─── Initialization ──────────────────────────────────────────────────────
57
57
  constructor(rootConfig, initialValues, translate) {
58
- // ─── Данные ──────────────────────────────────────────────────────────────
58
+ // ─── Data ────────────────────────────────────────────────────────────────
59
59
  /**
60
- * Вычисленное состояние каждого узла конфига.
61
- * Ключобъект-узел, значение — FieldState.
60
+ * Computed state of every config node.
61
+ * Keythe node object, value its FieldState.
62
62
  */
63
63
  this.nodeState = new WeakMap();
64
64
  /**
65
- * Абсолютный dot-путь каждого узла конфига.
66
- * Например, passport.number → "passport.number".
67
- * Корневой узел не имеет пути в этой карте (используется "").
65
+ * Absolute dot-path of every config node.
66
+ * e.g. passport.number → "passport.number".
67
+ * The root node has no entry in this map ("" is used).
68
68
  */
69
69
  this.nodePaths = new WeakMap();
70
70
  /**
71
- * Прямой родитель каждого узла конфига.
72
- * Корневой узел не имеет записи.
71
+ * Direct parent of every config node.
72
+ * The root node has no entry.
73
73
  */
74
74
  this.nodeParents = new WeakMap();
75
75
  /**
76
- * Все compute-узлы в порядке обхода (DFS).
77
- * Содержит листовые узлы и групповые узлы с computed-свойствами.
78
- * Используется NotificationHub для bumpLeafVersions().
76
+ * All compute nodes in traversal (DFS) order.
77
+ * Contains leaf nodes and group nodes with computed props.
78
+ * Used by NotificationHub for bumpLeafVersions().
79
79
  */
80
80
  this.computeNodes = [];
81
81
  /**
82
- * Маппинг группового узла массив его прямых дочерних записей (листья + группы с computed-свойствами).
83
- * Используется recomputeTargeted для пересчёта поддерева.
82
+ * Group nodearray of its direct child entries (leaves + groups with computed props).
83
+ * Used by recomputeTargeted to recompute a subtree.
84
84
  */
85
85
  this.groupComputeMap = new WeakMap();
86
86
  /**
87
- * Кэш Proxy-объектоводин прокси на узел конфига.
88
- * Гарантирует стабильность ссылок (===) на proxy.
87
+ * Proxy object cache one proxy per config node.
88
+ * Guarantees stable (===) proxy references.
89
89
  */
90
90
  this.proxyCache = new WeakMap();
91
91
  /**
92
- * ListState для каждого ListNode в конфиге.
93
- * Ключобъект-массив конфига (сам ListNode).
94
- * Заполняется при registerNodes (Phase 2A).
92
+ * ListState for every ListNode in the config.
93
+ * Keythe config array object (the ListNode itself).
94
+ * Populated during registerNodes.
95
95
  */
96
96
  this.listStates = new WeakMap();
97
97
  /**
98
- * Все ListState-объекты в порядке регистрации.
99
- * Используется Palistor для регистрации списков в EntityRegistry.rekey() (Phase 2C).
98
+ * All ListState objects in registration order.
99
+ * Used by Palistor to register lists in EntityRegistry.rekey().
100
100
  */
101
101
  this.allListStates = [];
102
102
  /**
103
- * Единый кэш list proxy (root + per-entity) — ключ: объект `ListState`.
104
- * Гарантирует стабильные ссылки на list-proxy для React (как proxyCache для групп).
105
- * Каждой паре (owner, listConfigNode) и каждому root-списку соответствует свой
106
- * `ListState`, поэтому ключевание по нему даёт корректную изоляцию.
103
+ * Single list-proxy cache (root + per-entity) — keyed by the `ListState` object.
104
+ * Guarantees stable list-proxy references for React (like proxyCache for groups).
105
+ * Every (owner, listConfigNode) pair and every root list has its own
106
+ * `ListState`, so keying by it gives correct isolation.
107
107
  */
108
108
  this.listProxyCache = new WeakMap();
109
109
  /**
110
- * Обратный индекс `listConfigNode → fieldPath` (вариант C, C3/C4).
111
- * Путь массив ключей относительно entity-scope владельца
112
- * (`["contacts"]` или `["profile", "contacts"]` для списка в nested-группе).
113
- * Используется для записи состава per-entity списка в нужное вложенное место
114
- * projectionObj владельца чтобы `store.getValues()` включал вложенные списки.
110
+ * Reverse index `listConfigNode → fieldPath`.
111
+ * The path is an array of keys relative to the owner's entity scope
112
+ * (`["contacts"]`, or `["profile", "contacts"]` for a list in a nested group).
113
+ * Used to write per-entity list membership into the right nested spot of
114
+ * the owner's projectionObj — so `store.getValues()` includes nested lists.
115
115
  */
116
116
  this.listFieldKeys = new WeakMap();
117
117
  /**
118
- * FlowState для каждого flow-узла (defineFlow) в конфиге.
119
- * Ключсам config-узел флоу. Заполняется в collectFlowStates.
118
+ * FlowState for every flow node (defineFlow) in the config.
119
+ * Keythe flow's config node. Populated in collectFlowStates.
120
120
  */
121
121
  this.flowStates = new WeakMap();
122
- /** Все FlowState в порядке регистрации (persist, reset, init lifecycle). */
122
+ /** All FlowStates in registration order (persist, reset, init lifecycle). */
123
123
  this.allFlowStates = [];
124
124
  /**
125
- * Обратный индекс: config-узел шага → FlowState владеющего флоу.
126
- * Используется group-proxy для вычисления step.status / step.isInvalid.
125
+ * Reverse index: step config node → FlowState of the owning flow.
126
+ * Used by the group proxy to compute step.status / step.isInvalid.
127
127
  */
128
128
  this.stepToFlow = new WeakMap();
129
129
  /**
@@ -137,18 +137,18 @@ export class NodeRegistry {
137
137
  this.isLeafNode = isLeafNode;
138
138
  this.isGroupNode = isGroupNode;
139
139
  this.isListNode = isListNode;
140
- // Фаза 1: регистрируем все листовые узлы, устанавливаем начальные значения
140
+ // Phase 1: register all leaf nodes and set initial values
141
141
  registerNodes(rootConfig, initialValues, this.computeNodes, this.nodeState, "", this.groupComputeMap, translate, this.listStates, this.allListStates);
142
- // Фаза 2: инициализируем submitting/dirty/revalidate для групп
142
+ // Phase 2: initialize submitting/dirty/revalidate for groups
143
143
  initGroupSubmitting(rootConfig, this.nodeState);
144
- // Фаза 3: строим маппинги путей и родителей
144
+ // Phase 3: build path and parent mappings
145
145
  buildNodeMaps(rootConfig, this.nodePaths, this.nodeParents);
146
- // Фаза 4 (вариант C, C3): обратный индекс listConfigNode → fieldKey,
147
- // нужен для материализации per-entity списков в projectionObj (getValues).
146
+ // Phase 4: reverse index listConfigNode → fieldKey, needed to
147
+ // materialize per-entity lists into projectionObj (getValues).
148
148
  collectListFieldKeys(rootConfig, this.listFieldKeys);
149
- // Фаза 5 (defineFlow): регистрация FlowState для узлов с маркером
150
- // __flowSteps. Выполняется после buildNodeMaps — путям flow-нод уже
151
- // назначены значения (нужны для persist-снимка и reset-скоупа).
149
+ // Phase 5 (defineFlow): register FlowState for nodes carrying the
150
+ // __flowSteps marker. Runs after buildNodeMaps — flow node paths are
151
+ // already assigned (needed for the persist snapshot and reset scope).
152
152
  collectFlowStates(rootConfig, this);
153
153
  }
154
154
  /** Called by Palistor after construction to wire the kernel reference. */
@@ -178,33 +178,33 @@ export class NodeRegistry {
178
178
  }
179
179
  return view;
180
180
  }
181
- // ─── Навигация ───────────────────────────────────────────────────────────
182
- /** Получить вычисленное состояние узла. */
181
+ // ─── Navigation ──────────────────────────────────────────────────────────
182
+ /** Get the computed state of a node. */
183
183
  getState(node) {
184
184
  return this.nodeState.get(node);
185
185
  }
186
- /** Установить состояние узла. */
186
+ /** Set the state of a node. */
187
187
  setState(node, state) {
188
188
  this.nodeState.set(node, state);
189
189
  }
190
- /** Получить абсолютный dot-путь узла. Для корневого undefined. */
190
+ /** Get the absolute dot-path of a node. undefined for the root. */
191
191
  getPath(node) {
192
192
  return this.nodePaths.get(node);
193
193
  }
194
- /** Получить непосредственного родителя узла. */
194
+ /** Get the direct parent of a node. */
195
195
  getParent(node) {
196
196
  return this.nodeParents.get(node);
197
197
  }
198
198
  /**
199
- * Получить path группы, к которой принадлежит узел.
200
- * - Листовой узел path родительской группы
201
- * - Групповой узелсобственный path
202
- * - Корневой → ""
199
+ * Get the path of the group a node belongs to.
200
+ * - Leaf node the parent group's path
201
+ * - Group nodeits own path
202
+ * - Root → ""
203
203
  */
204
204
  getGroupPath(node) {
205
205
  return getNodeGroupPath(node, this.nodeParents, this.nodePaths);
206
206
  }
207
- /** Найти узел по dot-пути. Перебирает computeNodes и проверяет их пути. */
207
+ /** Find a node by dot-path. Scans computeNodes and checks their paths. */
208
208
  findByPath(path) {
209
209
  for (const entry of this.computeNodes) {
210
210
  if (entry.path === path)
@@ -212,22 +212,22 @@ export class NodeRegistry {
212
212
  }
213
213
  return undefined;
214
214
  }
215
- /** Перебрать все compute-узлы. */
215
+ /** Iterate over all compute nodes. */
216
216
  forEachCompute(callback) {
217
217
  for (const entry of this.computeNodes) {
218
218
  callback(entry);
219
219
  }
220
220
  }
221
221
  /**
222
- * Зарегистрировать листовой узел, созданный в runtime (например, entity leaf при store.set()).
222
+ * Register a leaf node created at runtime (e.g. an entity leaf on store.set()).
223
223
  *
224
- * Обновляет все WeakMap-ы реестра и добавляет запись в `computeNodes`,
225
- * чтобы `bumpLeafVersions` (NotificationHub) автоматически захватил новый узел.
224
+ * Updates all registry WeakMaps and appends an entry to `computeNodes`,
225
+ * so `bumpLeafVersions` (NotificationHub) automatically picks up the new node.
226
226
  *
227
- * @param node Объект-узел (`{ value }`)
228
- * @param path Абсолютный dot-путь, e.g. "users.0.name"
229
- * @param parent Непосредственный родительский объект-узел
230
- * @param state Начальное FieldState
227
+ * @param node Node object (`{ value }`)
228
+ * @param path Absolute dot-path, e.g. "users.0.name"
229
+ * @param parent Direct parent node object
230
+ * @param state Initial FieldState
231
231
  */
232
232
  registerDynamicLeaf(node, path, parent, state) {
233
233
  const entry = { node: node, path };
@@ -235,7 +235,7 @@ export class NodeRegistry {
235
235
  this.nodeState.set(node, state);
236
236
  this.nodePaths.set(node, path);
237
237
  this.nodeParents.set(node, parent);
238
- // groupComputeMap: добавить в список родительской группы
238
+ // groupComputeMap: append to the parent group's list
239
239
  let list = this.groupComputeMap.get(parent);
240
240
  if (!list) {
241
241
  list = [];
@@ -244,20 +244,19 @@ export class NodeRegistry {
244
244
  list.push(entry);
245
245
  }
246
246
  /**
247
- * Снять регистрацию листового узла (например, при удалении entity).
247
+ * Unregister a leaf node (e.g. when an entity is deleted).
248
248
  *
249
- * Удаляет запись из `computeNodes` и из `groupComputeMap` родителя.
250
- * WeakMap-записи (nodeState, nodePaths, nodeParents) утилизируются GC автоматически.
249
+ * Removes the entry from `computeNodes` and from the parent's
250
+ * `groupComputeMap`. WeakMap entries (nodeState, nodePaths, nodeParents)
251
+ * are reclaimed by the GC automatically.
251
252
  *
252
- * @param node Листовой объект-узел
253
+ * @param node Leaf node object
253
254
  */
254
255
  unregisterLeaf(node) {
255
- // Удалить из computeNodes
256
256
  const idx = this.computeNodes.findIndex((e) => e.node === node);
257
257
  if (idx !== -1) {
258
258
  this.computeNodes.splice(idx, 1);
259
259
  }
260
- // Удалить из groupComputeMap родителя
261
260
  const parent = this.nodeParents.get(node);
262
261
  if (parent) {
263
262
  const list = this.groupComputeMap.get(parent);
@@ -1 +1 @@
1
- {"version":3,"file":"nodeRegistry.js","sourceRoot":"","sources":["../../../../store/store/NodeRegistry/nodeRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nodeRegistry.js","sourceRoot":"","sources":["../../../../store/store/NodeRegistry/nodeRegistry.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  import { isLeafNode, isGroupNode } from "../../traversal/nodeClassifier";
2
2
  export { isLeafNode, isGroupNode } from "../../traversal/nodeClassifier";
3
3
  /**
4
- * Является ли узел списком (массив длины 1-2).
5
- * array[0] — template (обычная группа), array[1] — опциональный listConfig.
4
+ * Whether the node is a list (array of length 1-2).
5
+ * array[0] — template (a regular group), array[1] — optional listConfig.
6
6
  *
7
- * NOTE: Более строгая проверка чем traversal.isListNode (длина 1-2).
8
- * Используется при построении proxy и разрастании keys.
7
+ * NOTE: Stricter check than traversal.isListNode (length 1-2).
8
+ * Used when building proxies and expanding keys.
9
9
  */
10
10
  export declare function isListNode(node: unknown): node is readonly [object, ...unknown[]];
11
- /** Утилитарный класс для проверки типа узла. Инициализируется без аргументов. */
11
+ /** Utility class for node type checks. Constructed without arguments. */
12
12
  export declare class NodeUtils {
13
13
  isLeafNode: typeof isLeafNode;
14
14
  isGroupNode: typeof isGroupNode;
@@ -1 +1 @@
1
- {"version":3,"file":"nodeUtils.d.ts","sourceRoot":"","sources":["../../../../store/store/NodeRegistry/nodeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACzE;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAEjF;AAED,iFAAiF;AACjF,qBAAa,SAAS;IACpB,UAAU,oBAAc;IACxB,WAAW,qBAAe;IAC1B,UAAU,oBAAc;CACzB"}
1
+ {"version":3,"file":"nodeUtils.d.ts","sourceRoot":"","sources":["../../../../store/store/NodeRegistry/nodeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACzE;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAEjF;AAED,yEAAyE;AACzE,qBAAa,SAAS;IACpB,UAAU,oBAAc;IACxB,WAAW,qBAAe;IAC1B,UAAU,oBAAc;CACzB"}
@@ -1,16 +1,16 @@
1
1
  import { isLeafNode, isGroupNode } from "../../traversal/nodeClassifier";
2
2
  export { isLeafNode, isGroupNode } from "../../traversal/nodeClassifier";
3
3
  /**
4
- * Является ли узел списком (массив длины 1-2).
5
- * array[0] — template (обычная группа), array[1] — опциональный listConfig.
4
+ * Whether the node is a list (array of length 1-2).
5
+ * array[0] — template (a regular group), array[1] — optional listConfig.
6
6
  *
7
- * NOTE: Более строгая проверка чем traversal.isListNode (длина 1-2).
8
- * Используется при построении proxy и разрастании keys.
7
+ * NOTE: Stricter check than traversal.isListNode (length 1-2).
8
+ * Used when building proxies and expanding keys.
9
9
  */
10
10
  export function isListNode(node) {
11
11
  return Array.isArray(node) && node.length >= 1 && node.length <= 2;
12
12
  }
13
- /** Утилитарный класс для проверки типа узла. Инициализируется без аргументов. */
13
+ /** Utility class for node type checks. Constructed without arguments. */
14
14
  export class NodeUtils {
15
15
  constructor() {
16
16
  this.isLeafNode = isLeafNode;
@@ -1 +1 @@
1
- {"version":3,"file":"nodeUtils.js","sourceRoot":"","sources":["../../../../store/store/NodeRegistry/nodeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACzE;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,iFAAiF;AACjF,MAAM,OAAO,SAAS;IAAtB;QACE,eAAU,GAAG,UAAU,CAAC;QACxB,gBAAW,GAAG,WAAW,CAAC;QAC1B,eAAU,GAAG,UAAU,CAAC;IAC1B,CAAC;CAAA"}
1
+ {"version":3,"file":"nodeUtils.js","sourceRoot":"","sources":["../../../../store/store/NodeRegistry/nodeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACzE;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,yEAAyE;AACzE,MAAM,OAAO,SAAS;IAAtB;QACE,eAAU,GAAG,UAAU,CAAC;QACxB,gBAAW,GAAG,WAAW,CAAC;QAC1B,eAAU,GAAG,UAAU,CAAC;IAC1B,CAAC;CAAA"}
@@ -1,14 +1,14 @@
1
1
  import type { AnyConfigNode } from "./types";
2
2
  import type { TrackingWrap } from "../compute/recompute";
3
3
  /**
4
- * Карта зависимостей между группами.
4
+ * Map of dependencies between groups.
5
5
  *
6
- * Объединяет:
7
- * - `Set<string>` пар donor→recipient (межгрупповые зависимости)
8
- * - кэш tracking-proxy и флаг «зависимости построены»
9
- * - логику `createTrackingValues` при первом полном recomputeAll
6
+ * Combines:
7
+ * - a `Set<string>` of donor→recipient pairs (cross-group dependencies)
8
+ * - a tracking-proxy cache and the "dependencies built" flag
9
+ * - the `createTrackingValues` logic during the first full recomputeAll
10
10
  *
11
- * @internal используется `Palistor` и compute-пайплайнами
11
+ * @internal used by `Palistor` and the compute pipelines
12
12
  */
13
13
  export declare class GroupDepsMap {
14
14
  private readonly _deps;
@@ -18,34 +18,34 @@ export declare class GroupDepsMap {
18
18
  private readonly _nodePaths;
19
19
  constructor(rootConfig: AnyConfigNode, nodePaths: WeakMap<object, string>, nodeParents: WeakMap<object, object>);
20
20
  /**
21
- * Raw `Set<string>` пар зависимостейдля совместимости с `recomputeTargeted`
22
- * и другими функциями, принимающими `groupDeps` напрямую.
21
+ * Raw `Set<string>` of dependency pairs for compatibility with
22
+ * `recomputeTargeted` and other functions taking `groupDeps` directly.
23
23
  * @internal
24
24
  */
25
25
  get deps(): Set<string>;
26
- /** Были ли кросс-групповые зависимости уже построены в первом recomputeAll? */
26
+ /** Whether cross-group dependencies were already built in the first recomputeAll. */
27
27
  get isBuilt(): boolean;
28
28
  /**
29
- * Возвращает `TrackingWrap`-функцию, которая перехватывает READ-доступы
30
- * к значениям других групп и записывает зависимости в `deps`.
29
+ * Returns a `TrackingWrap` function that intercepts READ accesses to other
30
+ * groups' values and records the dependencies into `deps`.
31
31
  *
32
- * Использовать ТОЛЬКО при первом `recomputeAll` (`isBuilt === false`).
33
- * После завершения вызвать `markBuilt()`.
32
+ * Use ONLY during the first `recomputeAll` (`isBuilt === false`).
33
+ * Call `markBuilt()` when done.
34
34
  *
35
- * Принимает group-scoped values (parent из nodeSlot):
36
- * - Для листовых узлов: values = scope родительской группы,
37
- * currentGroupPath = recipientPath (= путь родительской группы).
38
- * - Для групповых узлов (с isVisible и т.п.): values = scope
39
- * родителя группы (grandparent scope), currentGroupPath = путь родителя.
40
- * recipientPath при этом = собственный путь группы.
35
+ * Receives group-scoped values (parent from nodeSlot):
36
+ * - For leaf nodes: values = the parent group's scope,
37
+ * currentGroupPath = recipientPath (= the parent group's path).
38
+ * - For group nodes (with isVisible etc.): values = the group's parent
39
+ * scope (grandparent scope), currentGroupPath = the parent's path.
40
+ * recipientPath is then the group's own path.
41
41
  *
42
- * Кэш использует составной ключ `currentGroupPath\0recipientPath`, чтобы
43
- * избежать коллизии между листовыми и групповыми узлами с одинаковым recipientPath.
42
+ * The cache uses the composite key `currentGroupPath\0recipientPath` to
43
+ * avoid collisions between leaf and group nodes with the same recipientPath.
44
44
  */
45
45
  getTrackingWrap(): TrackingWrap;
46
46
  /**
47
- * Пометить зависимости как построенные и освободить proxy-кэш.
48
- * Вызывается ровно один раз после первого полного `recomputeAll`.
47
+ * Mark the dependencies as built and release the proxy cache.
48
+ * Called exactly onceafter the first full `recomputeAll`.
49
49
  */
50
50
  markBuilt(): void;
51
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"groupDepsMap.d.ts","sourceRoot":"","sources":["../../../store/store/groupDepsMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;;;;;;;;GASG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8C;IAC1E,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;gBAGnD,UAAU,EAAE,aAAa,EACzB,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;IAOtC;;;;OAIG;IACH,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAEtB;IAED,+EAA+E;IAC/E,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe,IAAI,YAAY;IA+B/B;;;OAGG;IACH,SAAS,IAAI,IAAI;CAIlB"}
1
+ {"version":3,"file":"groupDepsMap.d.ts","sourceRoot":"","sources":["../../../store/store/groupDepsMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;;;;;;;;GASG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8C;IAC1E,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;gBAGnD,UAAU,EAAE,aAAa,EACzB,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;IAOtC;;;;OAIG;IACH,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAEtB;IAED,qFAAqF;IACrF,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe,IAAI,YAAY;IAgC/B;;;OAGG;IACH,SAAS,IAAI,IAAI;CAIlB"}
@@ -3,14 +3,14 @@ import { createTrackingValues } from "../groupDeps/createTrackingValues";
3
3
  import { getNodeGroupPath } from "../groupDeps/getNodeGroupPath";
4
4
  import { isLeafNode } from "../traversal";
5
5
  /**
6
- * Карта зависимостей между группами.
6
+ * Map of dependencies between groups.
7
7
  *
8
- * Объединяет:
9
- * - `Set<string>` пар donor→recipient (межгрупповые зависимости)
10
- * - кэш tracking-proxy и флаг «зависимости построены»
11
- * - логику `createTrackingValues` при первом полном recomputeAll
8
+ * Combines:
9
+ * - a `Set<string>` of donor→recipient pairs (cross-group dependencies)
10
+ * - a tracking-proxy cache and the "dependencies built" flag
11
+ * - the `createTrackingValues` logic during the first full recomputeAll
12
12
  *
13
- * @internal используется `Palistor` и compute-пайплайнами
13
+ * @internal used by `Palistor` and the compute pipelines
14
14
  */
15
15
  export class GroupDepsMap {
16
16
  constructor(rootConfig, nodePaths, nodeParents) {
@@ -21,48 +21,49 @@ export class GroupDepsMap {
21
21
  this._nodeParents = nodeParents;
22
22
  }
23
23
  /**
24
- * Raw `Set<string>` пар зависимостейдля совместимости с `recomputeTargeted`
25
- * и другими функциями, принимающими `groupDeps` напрямую.
24
+ * Raw `Set<string>` of dependency pairs for compatibility with
25
+ * `recomputeTargeted` and other functions taking `groupDeps` directly.
26
26
  * @internal
27
27
  */
28
28
  get deps() {
29
29
  return this._deps;
30
30
  }
31
- /** Были ли кросс-групповые зависимости уже построены в первом recomputeAll? */
31
+ /** Whether cross-group dependencies were already built in the first recomputeAll. */
32
32
  get isBuilt() {
33
33
  return this._built;
34
34
  }
35
35
  /**
36
- * Возвращает `TrackingWrap`-функцию, которая перехватывает READ-доступы
37
- * к значениям других групп и записывает зависимости в `deps`.
36
+ * Returns a `TrackingWrap` function that intercepts READ accesses to other
37
+ * groups' values and records the dependencies into `deps`.
38
38
  *
39
- * Использовать ТОЛЬКО при первом `recomputeAll` (`isBuilt === false`).
40
- * После завершения вызвать `markBuilt()`.
39
+ * Use ONLY during the first `recomputeAll` (`isBuilt === false`).
40
+ * Call `markBuilt()` when done.
41
41
  *
42
- * Принимает group-scoped values (parent из nodeSlot):
43
- * - Для листовых узлов: values = scope родительской группы,
44
- * currentGroupPath = recipientPath (= путь родительской группы).
45
- * - Для групповых узлов (с isVisible и т.п.): values = scope
46
- * родителя группы (grandparent scope), currentGroupPath = путь родителя.
47
- * recipientPath при этом = собственный путь группы.
42
+ * Receives group-scoped values (parent from nodeSlot):
43
+ * - For leaf nodes: values = the parent group's scope,
44
+ * currentGroupPath = recipientPath (= the parent group's path).
45
+ * - For group nodes (with isVisible etc.): values = the group's parent
46
+ * scope (grandparent scope), currentGroupPath = the parent's path.
47
+ * recipientPath is then the group's own path.
48
48
  *
49
- * Кэш использует составной ключ `currentGroupPath\0recipientPath`, чтобы
50
- * избежать коллизии между листовыми и групповыми узлами с одинаковым recipientPath.
49
+ * The cache uses the composite key `currentGroupPath\0recipientPath` to
50
+ * avoid collisions between leaf and group nodes with the same recipientPath.
51
51
  */
52
52
  getTrackingWrap() {
53
53
  return (node, values) => {
54
54
  const isLeaf = isLeafNode(node);
55
- // Путь группы, ПОД которой эта compute-запись лежит в groupComputeMap —
56
- // именно её пересчитывает recomputeTargeted, поэтому реципиентом кросс-
57
- // групповой зависимости должна быть она:
58
- // - лист хранится под родительской группой → getNodeGroupPath(leaf) = её путь;
59
- // - групповой узел (isVisible и т.п.) тоже хранится под РОДИТЕЛЬСКОЙ группой,
60
- // поэтому берём путь родителя, а не собственный путь узла. Иначе зависимость
61
- // пишется на own-path группы, а recompute этой группы трогает только её
62
- // ДЕТЕЙ но не её собственный isVisible-энтри (он под родителем), и
63
- // кросс-групповое isVisible соседа не пересчитывается.
64
- // `values` здесь — scope этой же родительской группы, поэтому currentGroupPath
65
- // (корень вложенности) совпадает с ownerGroupPath.
55
+ // The path of the group UNDER which this compute entry lives in
56
+ // groupComputeMap that group is what recomputeTargeted recomputes, so
57
+ // it must be the recipient of the cross-group dependency:
58
+ // - a leaf is stored under its parent group → getNodeGroupPath(leaf) = its path;
59
+ // - a group node (isVisible etc.) is also stored under its PARENT group,
60
+ // so we take the parent's path, not the node's own path. Otherwise the
61
+ // dependency is recorded on the group's own path, and recomputing that
62
+ // group only touches its CHILDREN not its own isVisible entry (which
63
+ // lives under the parent) — so a neighbor's cross-group isVisible would
64
+ // never be recomputed.
65
+ // `values` here is the scope of that same parent group, so
66
+ // currentGroupPath (nesting root) equals ownerGroupPath.
66
67
  const ownerGroupPath = isLeaf
67
68
  ? getNodeGroupPath(node, this._nodeParents, this._nodePaths)
68
69
  : (() => {
@@ -78,8 +79,8 @@ export class GroupDepsMap {
78
79
  };
79
80
  }
80
81
  /**
81
- * Пометить зависимости как построенные и освободить proxy-кэш.
82
- * Вызывается ровно один раз после первого полного `recomputeAll`.
82
+ * Mark the dependencies as built and release the proxy cache.
83
+ * Called exactly onceafter the first full `recomputeAll`.
83
84
  */
84
85
  markBuilt() {
85
86
  this._built = true;