palistor 0.0.24 → 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 (278) hide show
  1. package/README.md +574 -542
  2. package/README.ru.md +979 -0
  3. package/dist/index.d.ts +19 -28
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +21 -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 +92 -42
  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.d.ts.map +1 -1
  32. package/dist/store/buildProxy/buildProxy.js +84 -33
  33. package/dist/store/buildProxy/buildProxy.js.map +1 -1
  34. package/dist/store/buildProxy/computeProxyKeys.d.ts +8 -8
  35. package/dist/store/buildProxy/computeProxyKeys.d.ts.map +1 -1
  36. package/dist/store/buildProxy/computeProxyKeys.js +18 -13
  37. package/dist/store/buildProxy/computeProxyKeys.js.map +1 -1
  38. package/dist/store/buildProxy/handleLazyResolve.d.ts +3 -3
  39. package/dist/store/buildProxy/handleLazyResolve.js +3 -3
  40. package/dist/store/buildProxy/initProxyCaches.d.ts +5 -5
  41. package/dist/store/buildProxy/initProxyCaches.js +5 -5
  42. package/dist/store/compute/computeFieldState.d.ts +3 -3
  43. package/dist/store/compute/computeFieldState.js +8 -8
  44. package/dist/store/compute/computeFieldState.js.map +1 -1
  45. package/dist/store/compute/fieldStateChanged.d.ts +1 -1
  46. package/dist/store/compute/fieldStateChanged.js +1 -1
  47. package/dist/store/compute/recompute/collectGroupComputeNodes.d.ts +4 -4
  48. package/dist/store/compute/recompute/collectGroupComputeNodes.js +7 -7
  49. package/dist/store/compute/recompute/collectGroupComputeNodes.js.map +1 -1
  50. package/dist/store/compute/recompute/recomputeAndNotify.d.ts +3 -3
  51. package/dist/store/compute/recompute/recomputeAndNotify.js +3 -3
  52. package/dist/store/compute/recompute/recomputeLeaves.d.ts +11 -10
  53. package/dist/store/compute/recompute/recomputeLeaves.d.ts.map +1 -1
  54. package/dist/store/compute/recompute/recomputeLeaves.js +26 -27
  55. package/dist/store/compute/recompute/recomputeLeaves.js.map +1 -1
  56. package/dist/store/compute/recompute/recomputeTargeted.d.ts +7 -7
  57. package/dist/store/compute/recompute/recomputeTargeted.js +12 -12
  58. package/dist/store/compute/recompute/recomputeTargeted.js.map +1 -1
  59. package/dist/store/compute/recompute/topologicalSortComputed.d.ts +4 -4
  60. package/dist/store/compute/recompute/topologicalSortComputed.d.ts.map +1 -1
  61. package/dist/store/compute/recompute/topologicalSortComputed.js +11 -13
  62. package/dist/store/compute/recompute/topologicalSortComputed.js.map +1 -1
  63. package/dist/store/compute/recompute/types.d.ts +4 -4
  64. package/dist/store/compute/resolveFlag.d.ts +2 -2
  65. package/dist/store/compute/resolveFlag.js +2 -2
  66. package/dist/store/compute/resolveString.d.ts +5 -5
  67. package/dist/store/compute/resolveString.js +6 -6
  68. package/dist/store/compute/resolveString.js.map +1 -1
  69. package/dist/store/compute/types.d.ts +3 -3
  70. package/dist/store/constants.d.ts +57 -38
  71. package/dist/store/constants.d.ts.map +1 -1
  72. package/dist/store/constants.js +70 -35
  73. package/dist/store/constants.js.map +1 -1
  74. package/dist/store/defineFieldMapping.d.ts +21 -19
  75. package/dist/store/defineFieldMapping.d.ts.map +1 -1
  76. package/dist/store/defineFieldMapping.js +21 -19
  77. package/dist/store/defineFieldMapping.js.map +1 -1
  78. package/dist/store/dirtyTracking/collectInitialSnapshot.js +1 -1
  79. package/dist/store/dirtyTracking/collectInitialSnapshot.js.map +1 -1
  80. package/dist/store/dirtyTracking/recomputeDirtyTargeted.d.ts +3 -3
  81. package/dist/store/dirtyTracking/recomputeDirtyTargeted.js +11 -11
  82. package/dist/store/dirtyTracking/recomputeDirtyTargeted.js.map +1 -1
  83. package/dist/store/dirtyTracking/setGroupRevalidate.d.ts +6 -6
  84. package/dist/store/dirtyTracking/setGroupRevalidate.js +7 -7
  85. package/dist/store/dirtyTracking/setGroupRevalidate.js.map +1 -1
  86. package/dist/store/entityRegistry/entityRegistry.d.ts +72 -72
  87. package/dist/store/entityRegistry/entityRegistry.d.ts.map +1 -1
  88. package/dist/store/entityRegistry/entityRegistry.js +91 -91
  89. package/dist/store/entityRegistry/entityRegistry.js.map +1 -1
  90. package/dist/store/entityRegistry/generateId.d.ts +3 -3
  91. package/dist/store/entityRegistry/generateId.js +3 -3
  92. package/dist/store/entityRegistry/types.d.ts +17 -17
  93. package/dist/store/entityRegistry/types.d.ts.map +1 -1
  94. package/dist/store/flow/buildFlowStepsProxy.d.ts +17 -0
  95. package/dist/store/flow/buildFlowStepsProxy.d.ts.map +1 -0
  96. package/dist/store/flow/buildFlowStepsProxy.js +72 -0
  97. package/dist/store/flow/buildFlowStepsProxy.js.map +1 -0
  98. package/dist/store/flow/defineFlow.d.ts +92 -0
  99. package/dist/store/flow/defineFlow.d.ts.map +1 -0
  100. package/dist/store/flow/defineFlow.js +99 -0
  101. package/dist/store/flow/defineFlow.js.map +1 -0
  102. package/dist/store/flow/flowApi.d.ts +18 -0
  103. package/dist/store/flow/flowApi.d.ts.map +1 -0
  104. package/dist/store/flow/flowApi.js +18 -0
  105. package/dist/store/flow/flowApi.js.map +1 -0
  106. package/dist/store/flow/flowNavigation.d.ts +137 -0
  107. package/dist/store/flow/flowNavigation.d.ts.map +1 -0
  108. package/dist/store/flow/flowNavigation.js +384 -0
  109. package/dist/store/flow/flowNavigation.js.map +1 -0
  110. package/dist/store/flow/flowState.d.ts +41 -0
  111. package/dist/store/flow/flowState.d.ts.map +1 -0
  112. package/dist/store/flow/flowState.js +51 -0
  113. package/dist/store/flow/flowState.js.map +1 -0
  114. package/dist/store/flow/index.d.ts +10 -0
  115. package/dist/store/flow/index.d.ts.map +1 -0
  116. package/dist/store/flow/index.js +6 -0
  117. package/dist/store/flow/index.js.map +1 -0
  118. package/dist/store/groupDeps/createGroupDeps.d.ts +3 -3
  119. package/dist/store/groupDeps/createGroupDeps.js +6 -6
  120. package/dist/store/groupDeps/createGroupDeps.js.map +1 -1
  121. package/dist/store/groupDeps/createTrackingValues.d.ts +9 -9
  122. package/dist/store/groupDeps/createTrackingValues.js +11 -11
  123. package/dist/store/groupDeps/createTrackingValues.js.map +1 -1
  124. package/dist/store/groupDeps/getNodeGroupPath.d.ts +3 -3
  125. package/dist/store/groupDeps/getNodeGroupPath.js +5 -5
  126. package/dist/store/groupDeps/getNodeGroupPath.js.map +1 -1
  127. package/dist/store/groupDeps/getRecipientGroups.d.ts +1 -1
  128. package/dist/store/groupDeps/getRecipientGroups.js +1 -1
  129. package/dist/store/groupDeps/groupDeps.d.ts +7 -7
  130. package/dist/store/groupDeps/groupDeps.js +7 -7
  131. package/dist/store/groupDeps/pairKey.d.ts +3 -3
  132. package/dist/store/groupDeps/pairKey.d.ts.map +1 -1
  133. package/dist/store/groupDeps/pairKey.js +4 -4
  134. package/dist/store/groupDeps/pairKey.js.map +1 -1
  135. package/dist/store/groupDeps/resolveGroupByPath.d.ts +3 -3
  136. package/dist/store/groupDeps/resolveGroupByPath.js +3 -3
  137. package/dist/store/init/createNotificationHub.d.ts +31 -31
  138. package/dist/store/init/createNotificationHub.d.ts.map +1 -1
  139. package/dist/store/init/createNotificationHub.js +36 -37
  140. package/dist/store/init/createNotificationHub.js.map +1 -1
  141. package/dist/store/init/createResolveManager.d.ts +72 -69
  142. package/dist/store/init/createResolveManager.d.ts.map +1 -1
  143. package/dist/store/init/createResolveManager.js +101 -98
  144. package/dist/store/init/createResolveManager.js.map +1 -1
  145. package/dist/store/init/initGroupSubmitting.d.ts +2 -2
  146. package/dist/store/init/initGroupSubmitting.js +4 -4
  147. package/dist/store/init/initGroupSubmitting.js.map +1 -1
  148. package/dist/store/normalizeConfig.d.ts +20 -18
  149. package/dist/store/normalizeConfig.d.ts.map +1 -1
  150. package/dist/store/normalizeConfig.js +31 -29
  151. package/dist/store/normalizeConfig.js.map +1 -1
  152. package/dist/store/onChangePipeline/computeFieldKey.d.ts +2 -2
  153. package/dist/store/onChangePipeline/computeFieldKey.js +2 -2
  154. package/dist/store/onChangePipeline/findOnChangeAncestors.d.ts +2 -2
  155. package/dist/store/onChangePipeline/findOnChangeAncestors.js +4 -4
  156. package/dist/store/onChangePipeline/findOnChangeAncestors.js.map +1 -1
  157. package/dist/store/onChangePipeline/onChangePipeline.d.ts +13 -12
  158. package/dist/store/onChangePipeline/onChangePipeline.d.ts.map +1 -1
  159. package/dist/store/onChangePipeline/onChangePipeline.js +14 -13
  160. package/dist/store/onChangePipeline/onChangePipeline.js.map +1 -1
  161. package/dist/store/persist/drivers.d.ts +7 -7
  162. package/dist/store/persist/drivers.js +8 -8
  163. package/dist/store/persist/drivers.js.map +1 -1
  164. package/dist/store/persist/index.d.ts +1 -1
  165. package/dist/store/persist/persistManager.d.ts +23 -23
  166. package/dist/store/persist/persistManager.d.ts.map +1 -1
  167. package/dist/store/persist/persistManager.js +73 -42
  168. package/dist/store/persist/persistManager.js.map +1 -1
  169. package/dist/store/persist/types.d.ts +23 -23
  170. package/dist/store/persist/types.d.ts.map +1 -1
  171. package/dist/store/persist/types.js +4 -4
  172. package/dist/store/resetPipeline/buildResetPatch.d.ts +5 -5
  173. package/dist/store/resetPipeline/buildResetPatch.js +5 -5
  174. package/dist/store/resetPipeline/collectDefaults.d.ts +5 -5
  175. package/dist/store/resetPipeline/collectDefaults.js +6 -6
  176. package/dist/store/resetPipeline/collectDefaults.js.map +1 -1
  177. package/dist/store/resetPipeline/resetPipeline.d.ts +7 -7
  178. package/dist/store/resetPipeline/resetPipeline.d.ts.map +1 -1
  179. package/dist/store/resetPipeline/resetPipeline.js +17 -12
  180. package/dist/store/resetPipeline/resetPipeline.js.map +1 -1
  181. package/dist/store/resolvePipeline/applyPendingWrites.d.ts +10 -10
  182. package/dist/store/resolvePipeline/applyPendingWrites.d.ts.map +1 -1
  183. package/dist/store/resolvePipeline/applyPendingWrites.js +35 -38
  184. package/dist/store/resolvePipeline/applyPendingWrites.js.map +1 -1
  185. package/dist/store/resolvePipeline/createContextTrackingProxy.d.ts +8 -7
  186. package/dist/store/resolvePipeline/createContextTrackingProxy.d.ts.map +1 -1
  187. package/dist/store/resolvePipeline/createContextTrackingProxy.js +6 -5
  188. package/dist/store/resolvePipeline/createContextTrackingProxy.js.map +1 -1
  189. package/dist/store/resolvePipeline/createValuesTrackingProxy.d.ts +43 -43
  190. package/dist/store/resolvePipeline/createValuesTrackingProxy.d.ts.map +1 -1
  191. package/dist/store/resolvePipeline/createValuesTrackingProxy.js +70 -70
  192. package/dist/store/resolvePipeline/createValuesTrackingProxy.js.map +1 -1
  193. package/dist/store/resolvePipeline/executeListResolve.d.ts +14 -14
  194. package/dist/store/resolvePipeline/executeListResolve.js +27 -27
  195. package/dist/store/resolvePipeline/executeListResolve.js.map +1 -1
  196. package/dist/store/resolvePipeline/executeResolve.d.ts +15 -15
  197. package/dist/store/resolvePipeline/executeResolve.js +46 -46
  198. package/dist/store/resolvePipeline/executeResolve.js.map +1 -1
  199. package/dist/store/store/NodeRegistry/nodeRegistry.d.ts +69 -56
  200. package/dist/store/store/NodeRegistry/nodeRegistry.d.ts.map +1 -1
  201. package/dist/store/store/NodeRegistry/nodeRegistry.js +94 -78
  202. package/dist/store/store/NodeRegistry/nodeRegistry.js.map +1 -1
  203. package/dist/store/store/NodeRegistry/nodeUtils.d.ts +5 -5
  204. package/dist/store/store/NodeRegistry/nodeUtils.d.ts.map +1 -1
  205. package/dist/store/store/NodeRegistry/nodeUtils.js +5 -5
  206. package/dist/store/store/NodeRegistry/nodeUtils.js.map +1 -1
  207. package/dist/store/store/groupDepsMap.d.ts +23 -23
  208. package/dist/store/store/groupDepsMap.d.ts.map +1 -1
  209. package/dist/store/store/groupDepsMap.js +40 -34
  210. package/dist/store/store/groupDepsMap.js.map +1 -1
  211. package/dist/store/store/hasComputedProps.d.ts +2 -2
  212. package/dist/store/store/hasComputedProps.js +2 -2
  213. package/dist/store/store/nodeMap.d.ts +5 -5
  214. package/dist/store/store/nodeMap.js +7 -7
  215. package/dist/store/store/nodeMap.js.map +1 -1
  216. package/dist/store/store/palistor.d.ts +80 -80
  217. package/dist/store/store/palistor.d.ts.map +1 -1
  218. package/dist/store/store/palistor.js +151 -165
  219. package/dist/store/store/palistor.js.map +1 -1
  220. package/dist/store/store/registerNodes.d.ts +10 -10
  221. package/dist/store/store/registerNodes.d.ts.map +1 -1
  222. package/dist/store/store/registerNodes.js +33 -18
  223. package/dist/store/store/registerNodes.js.map +1 -1
  224. package/dist/store/store/serviceRegistry.d.ts +8 -8
  225. package/dist/store/store/serviceRegistry.d.ts.map +1 -1
  226. package/dist/store/store/serviceRegistry.js +8 -8
  227. package/dist/store/store/serviceRegistry.js.map +1 -1
  228. package/dist/store/store/types.d.ts +277 -223
  229. package/dist/store/store/types.d.ts.map +1 -1
  230. package/dist/store/submitPipeline/applyLeafBeforeSubmit.d.ts +2 -2
  231. package/dist/store/submitPipeline/applyLeafBeforeSubmit.js +2 -2
  232. package/dist/store/submitPipeline/collectLeafStates.d.ts +2 -2
  233. package/dist/store/submitPipeline/collectLeafStates.js +2 -2
  234. package/dist/store/submitPipeline/submitPipeline.d.ts +8 -8
  235. package/dist/store/submitPipeline/submitPipeline.d.ts.map +1 -1
  236. package/dist/store/submitPipeline/submitPipeline.js +15 -11
  237. package/dist/store/submitPipeline/submitPipeline.js.map +1 -1
  238. package/dist/store/submitPipeline/types.d.ts +1 -1
  239. package/dist/store/submitPipeline/types.d.ts.map +1 -1
  240. package/dist/store/traversal/nodeClassifier.d.ts +9 -9
  241. package/dist/store/traversal/nodeClassifier.d.ts.map +1 -1
  242. package/dist/store/traversal/nodeClassifier.js +11 -11
  243. package/dist/store/traversal/nodeClassifier.js.map +1 -1
  244. package/dist/store/traversal/walkFull.d.ts +14 -14
  245. package/dist/store/traversal/walkFull.js +2 -2
  246. package/dist/store/valuesCache/valuesCache.d.ts +9 -9
  247. package/dist/store/valuesCache/valuesCache.d.ts.map +1 -1
  248. package/dist/store/valuesCache/valuesCache.js +6 -6
  249. package/dist/store/writePipeline/formatPatch.d.ts +5 -5
  250. package/dist/store/writePipeline/formatPatch.js +7 -7
  251. package/dist/store/writePipeline/formatPatch.js.map +1 -1
  252. package/dist/store/writePipeline/formatValue.d.ts +5 -5
  253. package/dist/store/writePipeline/formatValue.js +5 -5
  254. package/dist/store/writePipeline/mergeChanged.d.ts +4 -4
  255. package/dist/store/writePipeline/mergeChanged.js +4 -4
  256. package/dist/store/writePipeline/runSetter.d.ts +6 -6
  257. package/dist/store/writePipeline/runSetter.js +8 -8
  258. package/dist/store/writePipeline/storeValue.d.ts +3 -3
  259. package/dist/store/writePipeline/storeValue.js +3 -3
  260. package/dist/store/writePipeline/types.d.ts +4 -4
  261. package/dist/store/writePipeline/types.d.ts.map +1 -1
  262. package/dist/store/writePipeline/writePipeline.d.ts +7 -7
  263. package/dist/store/writePipeline/writePipeline.d.ts.map +1 -1
  264. package/dist/store/writePipeline/writePipeline.js +15 -15
  265. package/dist/store/writePipeline/writePipeline.js.map +1 -1
  266. package/package.json +11 -4
  267. package/dist/store/compute/recompute/collectGroupLeafNodes.d.ts +0 -11
  268. package/dist/store/compute/recompute/collectGroupLeafNodes.d.ts.map +0 -1
  269. package/dist/store/compute/recompute/collectGroupLeafNodes.js +0 -26
  270. package/dist/store/compute/recompute/collectGroupLeafNodes.js.map +0 -1
  271. package/dist/store/fieldMapping.typecheck.d.ts +0 -2
  272. package/dist/store/fieldMapping.typecheck.d.ts.map +0 -1
  273. package/dist/store/fieldMapping.typecheck.js +0 -71
  274. package/dist/store/fieldMapping.typecheck.js.map +0 -1
  275. package/dist/store/submitPipeline/getSubValues.d.ts +0 -9
  276. package/dist/store/submitPipeline/getSubValues.d.ts.map +0 -1
  277. package/dist/store/submitPipeline/getSubValues.js +0 -26
  278. package/dist/store/submitPipeline/getSubValues.js.map +0 -1
@@ -3,78 +3,90 @@ import { type GroupComputeMap, type ComputeEntry } from "../registerNodes";
3
3
  import type { AnyConfigNode, TranslateFn, ListState } from "../types";
4
4
  import { isLeafNode, isGroupNode, isListNode } from "./nodeUtils";
5
5
  import { type NodeView, type NodeViewKernel } from "./nodeView";
6
+ import { type FlowState } from "../../flow/flowState";
6
7
  /**
7
- * Реестр узлов конфига.
8
+ * Registry of config nodes.
8
9
  *
9
- * Объединяет данные,
10
- * `Palistor`: nodeState, nodePaths, nodeParents, computeNodes,
11
- * groupComputeMap, proxyCache.
10
+ * Bundles the data used by `Palistor`: nodeState, nodePaths, nodeParents,
11
+ * computeNodes, groupComputeMap, proxyCache.
12
12
  *
13
- * Выполняет инициализацию (registerNodes + buildNodeMaps + initGroupSubmitting)
14
- * в конструкторе.
13
+ * Runs initialization (registerNodes + buildNodeMaps + initGroupSubmitting)
14
+ * in the constructor.
15
15
  *
16
- * @internal используется пайплайнами и подсистемами через kernel
16
+ * @internal used by pipelines and subsystems via the kernel
17
17
  */
18
18
  export declare class NodeRegistry {
19
19
  constructor(rootConfig: AnyConfigNode, initialValues: Record<string, unknown>, translate: TranslateFn);
20
20
  /**
21
- * Вычисленное состояние каждого узла конфига.
22
- * Ключобъект-узел, значение — FieldState.
21
+ * Computed state of every config node.
22
+ * Keythe node object, value its FieldState.
23
23
  */
24
24
  readonly nodeState: WeakMap<object, FieldState>;
25
25
  /**
26
- * Абсолютный dot-путь каждого узла конфига.
27
- * Например, passport.number → "passport.number".
28
- * Корневой узел не имеет пути в этой карте (используется "").
26
+ * Absolute dot-path of every config node.
27
+ * e.g. passport.number → "passport.number".
28
+ * The root node has no entry in this map ("" is used).
29
29
  */
30
30
  readonly nodePaths: WeakMap<object, string>;
31
31
  /**
32
- * Прямой родитель каждого узла конфига.
33
- * Корневой узел не имеет записи.
32
+ * Direct parent of every config node.
33
+ * The root node has no entry.
34
34
  */
35
35
  readonly nodeParents: WeakMap<object, object>;
36
36
  /**
37
- * Все compute-узлы в порядке обхода (DFS).
38
- * Содержит листовые узлы и групповые узлы с computed-свойствами.
39
- * Используется NotificationHub для bumpLeafVersions().
37
+ * All compute nodes in traversal (DFS) order.
38
+ * Contains leaf nodes and group nodes with computed props.
39
+ * Used by NotificationHub for bumpLeafVersions().
40
40
  */
41
41
  readonly computeNodes: ComputeEntry[];
42
42
  /**
43
- * Маппинг группового узла массив его прямых дочерних записей (листья + группы с computed-свойствами).
44
- * Используется recomputeTargeted для пересчёта поддерева.
43
+ * Group nodearray of its direct child entries (leaves + groups with computed props).
44
+ * Used by recomputeTargeted to recompute a subtree.
45
45
  */
46
46
  readonly groupComputeMap: GroupComputeMap;
47
47
  /**
48
- * Кэш Proxy-объектоводин прокси на узел конфига.
49
- * Гарантирует стабильность ссылок (===) на proxy.
48
+ * Proxy object cache one proxy per config node.
49
+ * Guarantees stable (===) proxy references.
50
50
  */
51
51
  readonly proxyCache: WeakMap<object, unknown>;
52
52
  /**
53
- * ListState для каждого ListNode в конфиге.
54
- * Ключобъект-массив конфига (сам ListNode).
55
- * Заполняется при registerNodes (Phase 2A).
53
+ * ListState for every ListNode in the config.
54
+ * Keythe config array object (the ListNode itself).
55
+ * Populated during registerNodes.
56
56
  */
57
57
  readonly listStates: WeakMap<object, ListState>;
58
58
  /**
59
- * Все ListState-объекты в порядке регистрации.
60
- * Используется Palistor для регистрации списков в EntityRegistry.rekey() (Phase 2C).
59
+ * All ListState objects in registration order.
60
+ * Used by Palistor to register lists in EntityRegistry.rekey().
61
61
  */
62
62
  readonly allListStates: ListState[];
63
63
  /**
64
- * Единый кэш list proxy (root + per-entity) — ключ: объект `ListState`.
65
- * Гарантирует стабильные ссылки на list-proxy для React (как proxyCache для групп).
66
- * Каждой паре (owner, listConfigNode) и каждому root-списку соответствует свой
67
- * `ListState`, поэтому ключевание по нему даёт корректную изоляцию.
64
+ * Single list-proxy cache (root + per-entity) — keyed by the `ListState` object.
65
+ * Guarantees stable list-proxy references for React (like proxyCache for groups).
66
+ * Every (owner, listConfigNode) pair and every root list has its own
67
+ * `ListState`, so keying by it gives correct isolation.
68
68
  */
69
69
  readonly listProxyCache: WeakMap<object, object>;
70
70
  /**
71
- * Обратный индекс `listConfigNode → fieldPath` (вариант C, C3/C4).
72
- * Путь массив ключей относительно entity-scope владельца
73
- * (`["contacts"]` или `["profile", "contacts"]` для списка в nested-группе).
74
- * Используется для записи состава per-entity списка в нужное вложенное место
75
- * projectionObj владельца чтобы `store.getValues()` включал вложенные списки.
71
+ * Reverse index `listConfigNode → fieldPath`.
72
+ * The path is an array of keys relative to the owner's entity scope
73
+ * (`["contacts"]`, or `["profile", "contacts"]` for a list in a nested group).
74
+ * Used to write per-entity list membership into the right nested spot of
75
+ * the owner's projectionObj — so `store.getValues()` includes nested lists.
76
76
  */
77
77
  readonly listFieldKeys: WeakMap<object, string[]>;
78
+ /**
79
+ * FlowState for every flow node (defineFlow) in the config.
80
+ * Key — the flow's config node. Populated in collectFlowStates.
81
+ */
82
+ readonly flowStates: WeakMap<object, FlowState>;
83
+ /** All FlowStates in registration order (persist, reset, init lifecycle). */
84
+ readonly allFlowStates: FlowState[];
85
+ /**
86
+ * Reverse index: step config node → FlowState of the owning flow.
87
+ * Used by the group proxy to compute step.status / step.isInvalid.
88
+ */
89
+ readonly stepToFlow: WeakMap<object, FlowState>;
78
90
  /**
79
91
  * NodeView per storage node.
80
92
  * - Config-mode: populated lazily via getView (identity views cached in _identityViews).
@@ -92,47 +104,48 @@ export declare class NodeRegistry {
92
104
  * - via present → entity view registered by _setEntitiesRaw; throws if not found.
93
105
  */
94
106
  getView(storage: AnyConfigNode, via?: object): NodeView;
95
- /** Получить вычисленное состояние узла. */
107
+ /** Get the computed state of a node. */
96
108
  getState(node: object): FieldState | undefined;
97
- /** Установить состояние узла. */
109
+ /** Set the state of a node. */
98
110
  setState(node: object, state: FieldState): void;
99
- /** Получить абсолютный dot-путь узла. Для корневого undefined. */
111
+ /** Get the absolute dot-path of a node. undefined for the root. */
100
112
  getPath(node: object): string | undefined;
101
- /** Получить непосредственного родителя узла. */
113
+ /** Get the direct parent of a node. */
102
114
  getParent(node: object): object | undefined;
103
115
  /**
104
- * Получить path группы, к которой принадлежит узел.
105
- * - Листовой узел path родительской группы
106
- * - Групповой узелсобственный path
107
- * - Корневой → ""
116
+ * Get the path of the group a node belongs to.
117
+ * - Leaf node the parent group's path
118
+ * - Group nodeits own path
119
+ * - Root → ""
108
120
  */
109
121
  getGroupPath(node: object): string;
110
- /** Найти узел по dot-пути. Перебирает computeNodes и проверяет их пути. */
122
+ /** Find a node by dot-path. Scans computeNodes and checks their paths. */
111
123
  findByPath(path: string): object | undefined;
112
- /** Перебрать все compute-узлы. */
124
+ /** Iterate over all compute nodes. */
113
125
  forEachCompute(callback: (entry: ComputeEntry) => void): void;
114
126
  isLeafNode: typeof isLeafNode;
115
127
  isGroupNode: typeof isGroupNode;
116
128
  isListNode: typeof isListNode;
117
129
  /**
118
- * Зарегистрировать листовой узел, созданный в runtime (например, entity leaf при store.set()).
130
+ * Register a leaf node created at runtime (e.g. an entity leaf on store.set()).
119
131
  *
120
- * Обновляет все WeakMap-ы реестра и добавляет запись в `computeNodes`,
121
- * чтобы `bumpLeafVersions` (NotificationHub) автоматически захватил новый узел.
132
+ * Updates all registry WeakMaps and appends an entry to `computeNodes`,
133
+ * so `bumpLeafVersions` (NotificationHub) automatically picks up the new node.
122
134
  *
123
- * @param node Объект-узел (`{ value }`)
124
- * @param path Абсолютный dot-путь, e.g. "users.0.name"
125
- * @param parent Непосредственный родительский объект-узел
126
- * @param state Начальное FieldState
135
+ * @param node Node object (`{ value }`)
136
+ * @param path Absolute dot-path, e.g. "users.0.name"
137
+ * @param parent Direct parent node object
138
+ * @param state Initial FieldState
127
139
  */
128
140
  registerDynamicLeaf(node: object, path: string, parent: object, state: import("../../compute/index").FieldState): void;
129
141
  /**
130
- * Снять регистрацию листового узла (например, при удалении entity).
142
+ * Unregister a leaf node (e.g. when an entity is deleted).
131
143
  *
132
- * Удаляет запись из `computeNodes` и из `groupComputeMap` родителя.
133
- * WeakMap-записи (nodeState, nodePaths, nodeParents) утилизируются GC автоматически.
144
+ * Removes the entry from `computeNodes` and from the parent's
145
+ * `groupComputeMap`. WeakMap entries (nodeState, nodePaths, nodeParents)
146
+ * are reclaimed by the GC automatically.
134
147
  *
135
- * @param node Листовой объект-узел
148
+ * @param node Leaf node object
136
149
  */
137
150
  unregisterLeaf(node: object): void;
138
151
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nodeRegistry.d.ts","sourceRoot":"","sources":["../../../../store/store/NodeRegistry/nodeRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nodeRegistry.d.ts","sourceRoot":"","sources":["../../../../store/store/NodeRegistry/nodeRegistry.ts"],"names":[],"mappings":"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"}
@@ -5,18 +5,20 @@ import { getNodeGroupPath } from "../../groupDeps/getNodeGroupPath";
5
5
  import { CONFIG_PROPS } from "../../constants";
6
6
  import { isLeafNode, isGroupNode, isListNode } from "./nodeUtils";
7
7
  import { makeIdentityView } from "./nodeView";
8
+ import { collectFlowStates } from "../../flow/flowState";
8
9
  /**
9
- * Рекурсивно собрать обратный индекс `listConfigNode → fieldPath` для ВСЕХ
10
- * списков конфига, включая вложенные в template списка (per-entity lists, C3)
11
- * и вложенные в 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.
12
13
  *
13
- * Путь хранится массивом ключей **относительно ближайшего entity-scope**:
14
- * - список прямо под template → `["contacts"]`;
15
- * - список внутри nested-группы → `["profile", "contacts"]`.
16
- * Путь сбрасывается на границе каждого списка (`child[0]` открывает новый
17
- * entity-scope его item-ы это отдельные entity со своим projectionObj).
18
- * Это позволяет `syncListValuesCache` (per-entity ветка) записать состав в
19
- * правильное вложенное место 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.
20
22
  */
21
23
  function collectListFieldKeys(node, map, prefix = []) {
22
24
  for (const key of Object.keys(node)) {
@@ -29,7 +31,7 @@ function collectListFieldKeys(node, map, prefix = []) {
29
31
  map.set(child, [...prefix, key]);
30
32
  const template = child[0];
31
33
  if (template && typeof template === "object") {
32
- // Новый entity-scope — путь сбрасывается.
34
+ // New entity scope — the path resets.
33
35
  collectListFieldKeys(template, map, []);
34
36
  }
35
37
  continue;
@@ -40,79 +42,90 @@ function collectListFieldKeys(node, map, prefix = []) {
40
42
  }
41
43
  }
42
44
  /**
43
- * Реестр узлов конфига.
45
+ * Registry of config nodes.
44
46
  *
45
- * Объединяет данные,
46
- * `Palistor`: nodeState, nodePaths, nodeParents, computeNodes,
47
- * groupComputeMap, proxyCache.
47
+ * Bundles the data used by `Palistor`: nodeState, nodePaths, nodeParents,
48
+ * computeNodes, groupComputeMap, proxyCache.
48
49
  *
49
- * Выполняет инициализацию (registerNodes + buildNodeMaps + initGroupSubmitting)
50
- * в конструкторе.
50
+ * Runs initialization (registerNodes + buildNodeMaps + initGroupSubmitting)
51
+ * in the constructor.
51
52
  *
52
- * @internal используется пайплайнами и подсистемами через kernel
53
+ * @internal used by pipelines and subsystems via the kernel
53
54
  */
54
55
  export class NodeRegistry {
55
- // ─── Инициализация ───────────────────────────────────────────────────────
56
+ // ─── Initialization ──────────────────────────────────────────────────────
56
57
  constructor(rootConfig, initialValues, translate) {
57
- // ─── Данные ──────────────────────────────────────────────────────────────
58
+ // ─── Data ────────────────────────────────────────────────────────────────
58
59
  /**
59
- * Вычисленное состояние каждого узла конфига.
60
- * Ключобъект-узел, значение — FieldState.
60
+ * Computed state of every config node.
61
+ * Keythe node object, value its FieldState.
61
62
  */
62
63
  this.nodeState = new WeakMap();
63
64
  /**
64
- * Абсолютный dot-путь каждого узла конфига.
65
- * Например, passport.number → "passport.number".
66
- * Корневой узел не имеет пути в этой карте (используется "").
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).
67
68
  */
68
69
  this.nodePaths = new WeakMap();
69
70
  /**
70
- * Прямой родитель каждого узла конфига.
71
- * Корневой узел не имеет записи.
71
+ * Direct parent of every config node.
72
+ * The root node has no entry.
72
73
  */
73
74
  this.nodeParents = new WeakMap();
74
75
  /**
75
- * Все compute-узлы в порядке обхода (DFS).
76
- * Содержит листовые узлы и групповые узлы с computed-свойствами.
77
- * Используется 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().
78
79
  */
79
80
  this.computeNodes = [];
80
81
  /**
81
- * Маппинг группового узла массив его прямых дочерних записей (листья + группы с computed-свойствами).
82
- * Используется recomputeTargeted для пересчёта поддерева.
82
+ * Group nodearray of its direct child entries (leaves + groups with computed props).
83
+ * Used by recomputeTargeted to recompute a subtree.
83
84
  */
84
85
  this.groupComputeMap = new WeakMap();
85
86
  /**
86
- * Кэш Proxy-объектоводин прокси на узел конфига.
87
- * Гарантирует стабильность ссылок (===) на proxy.
87
+ * Proxy object cache one proxy per config node.
88
+ * Guarantees stable (===) proxy references.
88
89
  */
89
90
  this.proxyCache = new WeakMap();
90
91
  /**
91
- * ListState для каждого ListNode в конфиге.
92
- * Ключобъект-массив конфига (сам ListNode).
93
- * Заполняется при registerNodes (Phase 2A).
92
+ * ListState for every ListNode in the config.
93
+ * Keythe config array object (the ListNode itself).
94
+ * Populated during registerNodes.
94
95
  */
95
96
  this.listStates = new WeakMap();
96
97
  /**
97
- * Все ListState-объекты в порядке регистрации.
98
- * Используется Palistor для регистрации списков в EntityRegistry.rekey() (Phase 2C).
98
+ * All ListState objects in registration order.
99
+ * Used by Palistor to register lists in EntityRegistry.rekey().
99
100
  */
100
101
  this.allListStates = [];
101
102
  /**
102
- * Единый кэш list proxy (root + per-entity) — ключ: объект `ListState`.
103
- * Гарантирует стабильные ссылки на list-proxy для React (как proxyCache для групп).
104
- * Каждой паре (owner, listConfigNode) и каждому root-списку соответствует свой
105
- * `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.
106
107
  */
107
108
  this.listProxyCache = new WeakMap();
108
109
  /**
109
- * Обратный индекс `listConfigNode → fieldPath` (вариант C, C3/C4).
110
- * Путь массив ключей относительно entity-scope владельца
111
- * (`["contacts"]` или `["profile", "contacts"]` для списка в nested-группе).
112
- * Используется для записи состава per-entity списка в нужное вложенное место
113
- * 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.
114
115
  */
115
116
  this.listFieldKeys = new WeakMap();
117
+ /**
118
+ * FlowState for every flow node (defineFlow) in the config.
119
+ * Key — the flow's config node. Populated in collectFlowStates.
120
+ */
121
+ this.flowStates = new WeakMap();
122
+ /** All FlowStates in registration order (persist, reset, init lifecycle). */
123
+ this.allFlowStates = [];
124
+ /**
125
+ * Reverse index: step config node → FlowState of the owning flow.
126
+ * Used by the group proxy to compute step.status / step.isInvalid.
127
+ */
128
+ this.stepToFlow = new WeakMap();
116
129
  /**
117
130
  * NodeView per storage node.
118
131
  * - Config-mode: populated lazily via getView (identity views cached in _identityViews).
@@ -124,15 +137,19 @@ export class NodeRegistry {
124
137
  this.isLeafNode = isLeafNode;
125
138
  this.isGroupNode = isGroupNode;
126
139
  this.isListNode = isListNode;
127
- // Фаза 1: регистрируем все листовые узлы, устанавливаем начальные значения
140
+ // Phase 1: register all leaf nodes and set initial values
128
141
  registerNodes(rootConfig, initialValues, this.computeNodes, this.nodeState, "", this.groupComputeMap, translate, this.listStates, this.allListStates);
129
- // Фаза 2: инициализируем submitting/dirty/revalidate для групп
142
+ // Phase 2: initialize submitting/dirty/revalidate for groups
130
143
  initGroupSubmitting(rootConfig, this.nodeState);
131
- // Фаза 3: строим маппинги путей и родителей
144
+ // Phase 3: build path and parent mappings
132
145
  buildNodeMaps(rootConfig, this.nodePaths, this.nodeParents);
133
- // Фаза 4 (вариант C, C3): обратный индекс listConfigNode → fieldKey,
134
- // нужен для материализации per-entity списков в projectionObj (getValues).
146
+ // Phase 4: reverse index listConfigNode → fieldKey, needed to
147
+ // materialize per-entity lists into projectionObj (getValues).
135
148
  collectListFieldKeys(rootConfig, this.listFieldKeys);
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
+ collectFlowStates(rootConfig, this);
136
153
  }
137
154
  /** Called by Palistor after construction to wire the kernel reference. */
138
155
  setKernel(kernel) {
@@ -161,33 +178,33 @@ export class NodeRegistry {
161
178
  }
162
179
  return view;
163
180
  }
164
- // ─── Навигация ───────────────────────────────────────────────────────────
165
- /** Получить вычисленное состояние узла. */
181
+ // ─── Navigation ──────────────────────────────────────────────────────────
182
+ /** Get the computed state of a node. */
166
183
  getState(node) {
167
184
  return this.nodeState.get(node);
168
185
  }
169
- /** Установить состояние узла. */
186
+ /** Set the state of a node. */
170
187
  setState(node, state) {
171
188
  this.nodeState.set(node, state);
172
189
  }
173
- /** Получить абсолютный dot-путь узла. Для корневого undefined. */
190
+ /** Get the absolute dot-path of a node. undefined for the root. */
174
191
  getPath(node) {
175
192
  return this.nodePaths.get(node);
176
193
  }
177
- /** Получить непосредственного родителя узла. */
194
+ /** Get the direct parent of a node. */
178
195
  getParent(node) {
179
196
  return this.nodeParents.get(node);
180
197
  }
181
198
  /**
182
- * Получить path группы, к которой принадлежит узел.
183
- * - Листовой узел path родительской группы
184
- * - Групповой узелсобственный path
185
- * - Корневой → ""
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 → ""
186
203
  */
187
204
  getGroupPath(node) {
188
205
  return getNodeGroupPath(node, this.nodeParents, this.nodePaths);
189
206
  }
190
- /** Найти узел по dot-пути. Перебирает computeNodes и проверяет их пути. */
207
+ /** Find a node by dot-path. Scans computeNodes and checks their paths. */
191
208
  findByPath(path) {
192
209
  for (const entry of this.computeNodes) {
193
210
  if (entry.path === path)
@@ -195,22 +212,22 @@ export class NodeRegistry {
195
212
  }
196
213
  return undefined;
197
214
  }
198
- /** Перебрать все compute-узлы. */
215
+ /** Iterate over all compute nodes. */
199
216
  forEachCompute(callback) {
200
217
  for (const entry of this.computeNodes) {
201
218
  callback(entry);
202
219
  }
203
220
  }
204
221
  /**
205
- * Зарегистрировать листовой узел, созданный в runtime (например, entity leaf при store.set()).
222
+ * Register a leaf node created at runtime (e.g. an entity leaf on store.set()).
206
223
  *
207
- * Обновляет все WeakMap-ы реестра и добавляет запись в `computeNodes`,
208
- * чтобы `bumpLeafVersions` (NotificationHub) автоматически захватил новый узел.
224
+ * Updates all registry WeakMaps and appends an entry to `computeNodes`,
225
+ * so `bumpLeafVersions` (NotificationHub) automatically picks up the new node.
209
226
  *
210
- * @param node Объект-узел (`{ value }`)
211
- * @param path Абсолютный dot-путь, e.g. "users.0.name"
212
- * @param parent Непосредственный родительский объект-узел
213
- * @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
214
231
  */
215
232
  registerDynamicLeaf(node, path, parent, state) {
216
233
  const entry = { node: node, path };
@@ -218,7 +235,7 @@ export class NodeRegistry {
218
235
  this.nodeState.set(node, state);
219
236
  this.nodePaths.set(node, path);
220
237
  this.nodeParents.set(node, parent);
221
- // groupComputeMap: добавить в список родительской группы
238
+ // groupComputeMap: append to the parent group's list
222
239
  let list = this.groupComputeMap.get(parent);
223
240
  if (!list) {
224
241
  list = [];
@@ -227,20 +244,19 @@ export class NodeRegistry {
227
244
  list.push(entry);
228
245
  }
229
246
  /**
230
- * Снять регистрацию листового узла (например, при удалении entity).
247
+ * Unregister a leaf node (e.g. when an entity is deleted).
231
248
  *
232
- * Удаляет запись из `computeNodes` и из `groupComputeMap` родителя.
233
- * 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.
234
252
  *
235
- * @param node Листовой объект-узел
253
+ * @param node Leaf node object
236
254
  */
237
255
  unregisterLeaf(node) {
238
- // Удалить из computeNodes
239
256
  const idx = this.computeNodes.findIndex((e) => e.node === node);
240
257
  if (idx !== -1) {
241
258
  this.computeNodes.splice(idx, 1);
242
259
  }
243
- // Удалить из groupComputeMap родителя
244
260
  const parent = this.nodeParents.get(node);
245
261
  if (parent) {
246
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;