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
@@ -1,16 +1,16 @@
1
1
  import { pairKey } from "./pairKey";
2
2
  /**
3
- * Обёртка для valuesCache.values, которая перехватывает READ-доступы
4
- * и записывает кросс-групповые зависимости в Set.
3
+ * Wrapper for valuesCache.values that intercepts READ accesses
4
+ * and records cross-group dependencies into a Set.
5
5
  *
6
- * При чтении leaf-значения определяется группа-донор (по текущему уровню вложенности).
7
- * Если донорреципиентзаписываем пару donor→recipient.
6
+ * When a leaf value is read, the donor group is determined by the current
7
+ * nesting level. If donor recipientthe donor→recipient pair is recorded.
8
8
  *
9
- * @param values — плоский объект значений из valuesCache.values
10
- * @param recipientGroupPath — путь группы, для которой сейчас идёт вычисление
11
- * @param deps — Set для записи обнаруженных зависимостей
12
- * @param currentGroupPath — текущий уровень вложенности в дереве значений (начинается с "")
13
- * @param subProxyCache — WeakMap для мемоизации суб-прокси в рамках одного вызова
9
+ * @param values — flat values object from valuesCache.values
10
+ * @param recipientGroupPath — path of the group currently being computed
11
+ * @param deps — Set that collects discovered dependencies
12
+ * @param currentGroupPath — current nesting level in the values tree (starts as "")
13
+ * @param subProxyCache — WeakMap memoizing sub-proxies within one call
14
14
  */
15
15
  export function createTrackingValues(values, recipientGroupPath, deps, currentGroupPath = "", subProxyCache = new WeakMap()) {
16
16
  return new Proxy(values, {
@@ -18,7 +18,7 @@ export function createTrackingValues(values, recipientGroupPath, deps, currentGr
18
18
  if (typeof key === "symbol")
19
19
  return target[key];
20
20
  const val = target[key];
21
- // Вложенный объект (группа) — рекурсивный proxy с мемоизацией
21
+ // Nested object (group) — recursive proxy with memoization
22
22
  if (val && typeof val === "object" && !Array.isArray(val)) {
23
23
  const cached = subProxyCache.get(val);
24
24
  if (cached)
@@ -28,7 +28,7 @@ export function createTrackingValues(values, recipientGroupPath, deps, currentGr
28
28
  subProxyCache.set(val, childProxy);
29
29
  return childProxy;
30
30
  }
31
- // Чтение leaf-значения: донор = currentGroupPath
31
+ // Leaf value read: donor = currentGroupPath
32
32
  if (currentGroupPath !== recipientGroupPath) {
33
33
  deps.add(pairKey(currentGroupPath, recipientGroupPath));
34
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"createTrackingValues.js","sourceRoot":"","sources":["../../../store/groupDeps/createTrackingValues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAA+B,EAC/B,kBAA0B,EAC1B,IAAiB,EACjB,gBAAgB,GAAG,EAAE,EACrB,gBAA0D,IAAI,OAAO,EAAE;IAEvE,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,GAAG,CAAC,MAAM,EAAE,GAAoB;YAC9B,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,OAAQ,MAAc,CAAC,GAAG,CAAC,CAAC;YAEzD,MAAM,GAAG,GAAI,MAAkC,CAAC,GAAG,CAAC,CAAC;YAErD,8DAA8D;YAC9D,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1D,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,GAAa,CAAC,CAAC;gBAChD,IAAI,MAAM;oBAAE,OAAO,MAAM,CAAC;gBAC1B,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBACxE,MAAM,UAAU,GAAG,oBAAoB,CACrC,GAA8B,EAC9B,kBAAkB,EAClB,IAAI,EACJ,SAAS,EACT,aAAa,CACd,CAAC;gBACF,aAAa,CAAC,GAAG,CAAC,GAAa,EAAE,UAAU,CAAC,CAAC;gBAC7C,OAAO,UAAU,CAAC;YACpB,CAAC;YAED,iDAAiD;YACjD,IAAI,gBAAgB,KAAK,kBAAkB,EAAE,CAAC;gBAC5C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,CAAC;YAC1D,CAAC;YAED,OAAO,GAAG,CAAC;QACb,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"createTrackingValues.js","sourceRoot":"","sources":["../../../store/groupDeps/createTrackingValues.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAA+B,EAC/B,kBAA0B,EAC1B,IAAiB,EACjB,gBAAgB,GAAG,EAAE,EACrB,gBAA0D,IAAI,OAAO,EAAE;IAEvE,OAAO,IAAI,KAAK,CAAC,MAAM,EAAE;QACvB,GAAG,CAAC,MAAM,EAAE,GAAoB;YAC9B,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,OAAQ,MAAc,CAAC,GAAG,CAAC,CAAC;YAEzD,MAAM,GAAG,GAAI,MAAkC,CAAC,GAAG,CAAC,CAAC;YAErD,2DAA2D;YAC3D,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1D,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,GAAa,CAAC,CAAC;gBAChD,IAAI,MAAM;oBAAE,OAAO,MAAM,CAAC;gBAC1B,MAAM,SAAS,GAAG,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBACxE,MAAM,UAAU,GAAG,oBAAoB,CACrC,GAA8B,EAC9B,kBAAkB,EAClB,IAAI,EACJ,SAAS,EACT,aAAa,CACd,CAAC;gBACF,aAAa,CAAC,GAAG,CAAC,GAAa,EAAE,UAAU,CAAC,CAAC;gBAC7C,OAAO,UAAU,CAAC;YACpB,CAAC;YAED,4CAA4C;YAC5C,IAAI,gBAAgB,KAAK,kBAAkB,EAAE,CAAC;gBAC5C,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,CAAC;YAC1D,CAAC;YAED,OAAO,GAAG,CAAC;QACb,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1,8 +1,8 @@
1
1
  /**
2
- * Определить путь группы, к которой принадлежит узел.
2
+ * Determine the path of the group a node belongs to.
3
3
  *
4
- * - Листовой узел (есть "value") → путь родительской группы
5
- * - Групповой узелсвой собственный путь
4
+ * - Leaf node (has "value") → the parent group's path
5
+ * - Group nodeits own path
6
6
  * - Root → ""
7
7
  */
8
8
  export declare function getNodeGroupPath(node: object, nodeParents: WeakMap<object, object>, nodePaths: WeakMap<object, string>): string;
@@ -1,17 +1,17 @@
1
1
  import { isGroupNode } from "../traversal";
2
2
  /**
3
- * Определить путь группы, к которой принадлежит узел.
3
+ * Determine the path of the group a node belongs to.
4
4
  *
5
- * - Листовой узел (есть "value") → путь родительской группы
6
- * - Групповой узелсвой собственный путь
5
+ * - Leaf node (has "value") → the parent group's path
6
+ * - Group nodeits own path
7
7
  * - Root → ""
8
8
  */
9
9
  export function getNodeGroupPath(node, nodeParents, nodePaths) {
10
- // Групповой узелего собственный путь
10
+ // Group nodeits own path
11
11
  if (isGroupNode(node)) {
12
12
  return nodePaths.get(node) ?? "";
13
13
  }
14
- // Листовойпуть родительской группы
14
+ // Leafthe parent group's path
15
15
  const parent = nodeParents.get(node);
16
16
  if (!parent)
17
17
  return "";
@@ -1 +1 @@
1
- {"version":3,"file":"getNodeGroupPath.js","sourceRoot":"","sources":["../../../store/groupDeps/getNodeGroupPath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,WAAoC,EACpC,SAAkC;IAElC,wCAAwC;IACxC,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IACD,sCAAsC;IACtC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"getNodeGroupPath.js","sourceRoot":"","sources":["../../../store/groupDeps/getNodeGroupPath.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,WAAoC,EACpC,SAAkC;IAElC,4BAA4B;IAC5B,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACnC,CAAC;IACD,iCAAiC;IACjC,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,OAAO,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AACrC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Получить все группы-реципиенты для данного донора (исключая self-зависимость).
2
+ * Get all recipient groups for a given donor (excluding the self-dependency).
3
3
  */
4
4
  export declare function getRecipientGroups(deps: Set<string>, donorPath: string): string[];
5
5
  //# sourceMappingURL=getRecipientGroups.d.ts.map
@@ -1,6 +1,6 @@
1
1
  import { parsePairKey } from "./pairKey";
2
2
  /**
3
- * Получить все группы-реципиенты для данного донора (исключая self-зависимость).
3
+ * Get all recipient groups for a given donor (excluding the self-dependency).
4
4
  */
5
5
  export function getRecipientGroups(deps, donorPath) {
6
6
  const recipients = [];
@@ -1,14 +1,14 @@
1
1
  /**
2
- * Карта зависимостей между группами.
2
+ * Map of dependencies between groups.
3
3
  *
4
- * Хранит пары "донор→реципиент" в Set<string>.
5
- * Когда значение в группе-доноре меняется, все группы-реципиенты
6
- * нужно пересчитать.
4
+ * Stores "donor→recipient" pairs in a Set<string>.
5
+ * When a value in a donor group changes, all recipient groups
6
+ * need to be recomputed.
7
7
  *
8
- * Пример: если поле в группе passport читает значение из root,
9
- * записывается зависимость "→passport" (root донор, passport реципиент).
8
+ * Example: if a field in the passport group reads a value from the root,
9
+ * the dependency "→passport" is recorded (root is the donor, passport the recipient).
10
10
  *
11
- * Каждая группа по умолчанию зависит от себя ("AA", "BB").
11
+ * Every group depends on itself by default ("AA", "BB").
12
12
  */
13
13
  export { pairKey } from "./pairKey";
14
14
  export { createGroupDeps } from "./createGroupDeps";
@@ -1,14 +1,14 @@
1
1
  /**
2
- * Карта зависимостей между группами.
2
+ * Map of dependencies between groups.
3
3
  *
4
- * Хранит пары "донор→реципиент" в Set<string>.
5
- * Когда значение в группе-доноре меняется, все группы-реципиенты
6
- * нужно пересчитать.
4
+ * Stores "donor→recipient" pairs in a Set<string>.
5
+ * When a value in a donor group changes, all recipient groups
6
+ * need to be recomputed.
7
7
  *
8
- * Пример: если поле в группе passport читает значение из root,
9
- * записывается зависимость "→passport" (root донор, passport реципиент).
8
+ * Example: if a field in the passport group reads a value from the root,
9
+ * the dependency "→passport" is recorded (root is the donor, passport the recipient).
10
10
  *
11
- * Каждая группа по умолчанию зависит от себя ("AA", "BB").
11
+ * Every group depends on itself by default ("AA", "BB").
12
12
  */
13
13
  export { pairKey } from "./pairKey";
14
14
  export { createGroupDeps } from "./createGroupDeps";
@@ -1,7 +1,7 @@
1
- /** Разделитель пары "донор→реципиент". */
1
+ /** Separator of the "donor→recipient" pair. */
2
2
  export declare const SEP = "\u2192";
3
- /** Создать ключ пары "донор→реципиент". */
3
+ /** Create a "donor→recipient" pair key. */
4
4
  export declare function pairKey(donor: string, recipient: string): string;
5
- /** Разобрать ключ обратно в [donor, recipient]. */
5
+ /** Parse a key back into [donor, recipient]. */
6
6
  export declare function parsePairKey(key: string): [string, string];
7
7
  //# sourceMappingURL=pairKey.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pairKey.d.ts","sourceRoot":"","sources":["../../../store/groupDeps/pairKey.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,eAAO,MAAM,GAAG,WAAW,CAAC;AAE5B,2CAA2C;AAC3C,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,mDAAmD;AACnD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAG1D"}
1
+ {"version":3,"file":"pairKey.d.ts","sourceRoot":"","sources":["../../../store/groupDeps/pairKey.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,eAAO,MAAM,GAAG,WAAM,CAAC;AAEvB,2CAA2C;AAC3C,wBAAgB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEhE;AAED,gDAAgD;AAChD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAG1D"}
@@ -1,10 +1,10 @@
1
- /** Разделитель пары "донор→реципиент". */
2
- export const SEP = "\u2192"; // →
3
- /** Создать ключ пары "донор→реципиент". */
1
+ /** Separator of the "donor→recipient" pair. */
2
+ export const SEP = ""; // →
3
+ /** Create a "donor→recipient" pair key. */
4
4
  export function pairKey(donor, recipient) {
5
5
  return `${donor}${SEP}${recipient}`;
6
6
  }
7
- /** Разобрать ключ обратно в [donor, recipient]. */
7
+ /** Parse a key back into [donor, recipient]. */
8
8
  export function parsePairKey(key) {
9
9
  const idx = key.indexOf(SEP);
10
10
  return [key.slice(0, idx), key.slice(idx + SEP.length)];
@@ -1 +1 @@
1
- {"version":3,"file":"pairKey.js","sourceRoot":"","sources":["../../../store/groupDeps/pairKey.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,MAAM,CAAC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,IAAI;AAEjC,2CAA2C;AAC3C,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,SAAiB;IACtD,OAAO,GAAG,KAAK,GAAG,GAAG,GAAG,SAAS,EAAE,CAAC;AACtC,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1D,CAAC"}
1
+ {"version":3,"file":"pairKey.js","sourceRoot":"","sources":["../../../store/groupDeps/pairKey.ts"],"names":[],"mappings":"AAAA,+CAA+C;AAC/C,MAAM,CAAC,MAAM,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI;AAE5B,2CAA2C;AAC3C,MAAM,UAAU,OAAO,CAAC,KAAa,EAAE,SAAiB;IACtD,OAAO,GAAG,KAAK,GAAG,GAAG,GAAG,SAAS,EAAE,CAAC;AACtC,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1D,CAAC"}
@@ -1,8 +1,8 @@
1
1
  import { type AnyConfigNode } from "../store/types";
2
2
  /**
3
- * Найти узел конфига группы по dot-пути.
4
- * "" → rootConfig, "passport" → rootConfig.passport, и т.д.
5
- * Возвращает undefined если путь не существует в дереве (например, entity-пути "_entity_.*").
3
+ * Find a group config node by dot-path.
4
+ * "" → rootConfig, "passport" → rootConfig.passport, etc.
5
+ * Returns undefined when the path doesn't exist in the tree (e.g. "_entity_.*" paths).
6
6
  */
7
7
  export declare function resolveGroupByPath(rootConfig: AnyConfigNode, path: string): AnyConfigNode | undefined;
8
8
  //# sourceMappingURL=resolveGroupByPath.d.ts.map
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Найти узел конфига группы по dot-пути.
3
- * "" → rootConfig, "passport" → rootConfig.passport, и т.д.
4
- * Возвращает undefined если путь не существует в дереве (например, entity-пути "_entity_.*").
2
+ * Find a group config node by dot-path.
3
+ * "" → rootConfig, "passport" → rootConfig.passport, etc.
4
+ * Returns undefined when the path doesn't exist in the tree (e.g. "_entity_.*" paths).
5
5
  */
6
6
  export function resolveGroupByPath(rootConfig, path) {
7
7
  if (!path)
@@ -1,46 +1,46 @@
1
1
  import type { AnyConfigNode, ListState } from "../store/types";
2
2
  import type { FieldState } from "../compute/index";
3
3
  import type { ComputeEntry } from "../store/registerNodes";
4
- /** Зависимости, необходимые для пересчёта dirty-флагов при уведомлении. */
4
+ /** Dependencies needed to recompute dirty flags during notification. */
5
5
  export interface DirtyDeps {
6
6
  rootConfig: AnyConfigNode;
7
7
  nodeState: WeakMap<AnyConfigNode, FieldState>;
8
8
  initialValueMap: WeakMap<AnyConfigNode, unknown>;
9
- /** ListStates для dirty-tracking по составу списков (Phase 2C). */
9
+ /** ListStates for list-membership dirty tracking. */
10
10
  listStates?: WeakMap<AnyConfigNode, ListState>;
11
11
  nodeParents: WeakMap<AnyConfigNode, AnyConfigNode>;
12
12
  nodePaths: WeakMap<AnyConfigNode, string>;
13
13
  }
14
14
  export interface NotificationHubDeps {
15
15
  computeNodes: ComputeEntry[];
16
- /** Маппинг узлов на их dot-пути (заполняется buildNodeMaps). */
16
+ /** Node dot-path mapping (filled by buildNodeMaps). */
17
17
  nodePaths: WeakMap<object, string>;
18
18
  }
19
19
  /**
20
- * Система уведомлений хранилища.
20
+ * The store's notification system.
21
21
  *
22
- * Консолидирует:
23
- * - per-node и глобальные подписки
24
- * - версионирование (global + per-node)
25
- * - post-notify hook для внешних подсистем (resolve retrigger)
22
+ * Consolidates:
23
+ * - per-node and global subscriptions
24
+ * - versioning (global + per-node)
25
+ * - the post-notify hook for external subsystems (resolve re-trigger)
26
26
  */
27
27
  export declare class NotificationHub {
28
28
  private readonly computeNodes;
29
29
  private readonly nodePaths;
30
- /** Подписчики на изменение каждого поля. */
30
+ /** Per-field change subscribers. */
31
31
  private readonly nodeListeners;
32
- /** Глобальные подписчикиуведомляются при ЛЮБОМ изменении. */
32
+ /** Global subscribersnotified on ANY change. */
33
33
  private readonly globalListeners;
34
- /** Глобальная версияинкрементируется при каждом изменении. */
34
+ /** Global versionincremented on every change. */
35
35
  private version;
36
- /** Версии отдельных узлов для точечной подписки. */
36
+ /** Per-node versionsfor targeted subscriptions. */
37
37
  private readonly nodeVersions;
38
- /** Хук, вызываемый после каждого notifyChanged (resolve retrigger и т.д.) */
38
+ /** Hook invoked after every notifyChanged (resolve re-trigger etc.). */
39
39
  private postNotifyHook;
40
40
  /**
41
- * Re-entrancy guard: предотвращает рекурсивный вызов postNotifyHook.
42
- * Пути, накопленные во время активного хука, откладываются и обрабатываются
43
- * последовательно после завершения текущего вызова.
41
+ * Re-entrancy guard: prevents recursive postNotifyHook invocation.
42
+ * Paths accumulated while a hook is active are deferred and processed
43
+ * sequentially after the current call completes.
44
44
  */
45
45
  private isDispatchingHook;
46
46
  private pendingHookPaths;
@@ -48,31 +48,31 @@ export declare class NotificationHub {
48
48
  private notifyNode;
49
49
  private notifyGlobals;
50
50
  /**
51
- * Обработать набор изменённых узлов:
52
- * 1. Пересчитать dirty-флаги (leaf + group + root)
53
- * 2. Инкрементировать глобальную версию
54
- * 3. Обновить per-node версии + уведомить per-node подписчиков
55
- * 4. Уведомить глобальных подписчиков
56
- * 5. Вызвать postNotifyHook (retrigger resolves и т.д.)
51
+ * Process a set of changed nodes:
52
+ * 1. Recompute dirty flags (leaf + group + root)
53
+ * 2. Increment the global version
54
+ * 3. Update per-node versions + notify per-node subscribers
55
+ * 4. Notify global subscribers
56
+ * 5. Invoke the postNotifyHook (resolve re-triggers etc.)
57
57
  */
58
58
  notifyChanged(changed: Set<AnyConfigNode>, dirtyDeps: DirtyDeps): void;
59
- /** Подписаться на изменения конкретного узла. */
59
+ /** Subscribe to changes of a specific node. */
60
60
  subscribe: (node: AnyConfigNode, listener: () => void) => (() => void);
61
- /** Подписаться на любое изменение в хранилище. */
61
+ /** Subscribe to any store change. */
62
62
  subscribeGlobal: (listener: () => void) => (() => void);
63
- /** Глобальная версия хранилища. */
63
+ /** Global store version. */
64
64
  getVersion: () => number;
65
- /** Версия конкретного узла. */
65
+ /** Version of a specific node. */
66
66
  getNodeVersion: (node: AnyConfigNode) => number;
67
67
  /**
68
- * Инкрементировать версию для всех leaf-узлов + уведомить глобальных подписчиков.
69
- * Используется при смене translator — все компоненты перерендерятся.
68
+ * Bump the version of all leaf nodes + notify global subscribers.
69
+ * Used on translator change all components re-render.
70
70
  */
71
71
  bumpLeafVersions(): void;
72
72
  /**
73
- * Зарегистрировать хук, вызываемый после каждого notifyChanged.
74
- * Получает множество dot-путей изменённых узлов.
75
- * Используется resolve-системой для retrigger по зависимостям.
73
+ * Register a hook invoked after every notifyChanged.
74
+ * Receives the set of dot-paths of the changed nodes.
75
+ * Used by the resolve system for dependency-driven re-triggers.
76
76
  */
77
77
  setPostNotifyHook(hook: ((changedPaths: Set<string>) => void) | null): void;
78
78
  }
@@ -1 +1 @@
1
- {"version":3,"file":"createNotificationHub.d.ts","sourceRoot":"","sources":["../../../store/init/createNotificationHub.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAK3D,2EAA2E;AAC3E,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,aAAa,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAC9C,eAAe,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACjD,mEAAmE;IACnE,UAAU,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAC/C,WAAW,EAAE,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACnD,SAAS,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,gEAAgE;IAChE,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAID;;;;;;;GAOG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IAEpD,4CAA4C;IAC5C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiD;IAE/E,gEAAgE;IAChE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IAEzD,iEAAiE;IACjE,OAAO,CAAC,OAAO,CAAK;IAEpB,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwC;IAErE,6EAA6E;IAC7E,OAAO,CAAC,cAAc,CAAsD;IAE5E;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,gBAAgB,CAA4B;gBAExC,IAAI,EAAE,mBAAmB;IAOrC,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,aAAa;IAMrB;;;;;;;OAOG;IACH,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAsDtE,iDAAiD;IACjD,SAAS,GAAI,MAAM,aAAa,EAAE,UAAU,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAInE;IAEF,kDAAkD;IAClD,eAAe,GAAI,UAAU,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAGpD;IAEF,mCAAmC;IACnC,UAAU,QAAO,MAAM,CAErB;IAEF,+BAA+B;IAC/B,cAAc,GAAI,MAAM,aAAa,KAAG,MAAM,CAE5C;IAEF;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAQxB;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;CAG5E;AAID,2DAA2D;AAC3D,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,GAAG,eAAe,CAEhF"}
1
+ {"version":3,"file":"createNotificationHub.d.ts","sourceRoot":"","sources":["../../../store/init/createNotificationHub.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAK3D,wEAAwE;AACxE,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,aAAa,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IAC9C,eAAe,EAAE,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACjD,qDAAqD;IACrD,UAAU,CAAC,EAAE,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAC/C,WAAW,EAAE,OAAO,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACnD,SAAS,EAAE,OAAO,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,YAAY,EAAE,CAAC;IAC7B,yDAAyD;IACzD,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAID;;;;;;;GAOG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0B;IAEpD,oCAAoC;IACpC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiD;IAE/E,mDAAmD;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IAEzD,oDAAoD;IACpD,OAAO,CAAC,OAAO,CAAK;IAEpB,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAwC;IAErE,wEAAwE;IACxE,OAAO,CAAC,cAAc,CAAsD;IAE5E;;;;OAIG;IACH,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,gBAAgB,CAA4B;gBAExC,IAAI,EAAE,mBAAmB;IAOrC,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,aAAa;IAMrB;;;;;;;OAOG;IACH,aAAa,CAAC,OAAO,EAAE,GAAG,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,SAAS,GAAG,IAAI;IAqDtE,+CAA+C;IAC/C,SAAS,GAAI,MAAM,aAAa,EAAE,UAAU,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAInE;IAEF,qCAAqC;IACrC,eAAe,GAAI,UAAU,MAAM,IAAI,KAAG,CAAC,MAAM,IAAI,CAAC,CAGpD;IAEF,4BAA4B;IAC5B,UAAU,QAAO,MAAM,CAErB;IAEF,kCAAkC;IAClC,cAAc,GAAI,MAAM,aAAa,KAAG,MAAM,CAE5C;IAEF;;;OAGG;IACH,gBAAgB,IAAI,IAAI;IAQxB;;;;OAIG;IACH,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI;CAG5E;AAID,2DAA2D;AAC3D,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,mBAAmB,GAAG,eAAe,CAEhF"}
@@ -1,49 +1,49 @@
1
1
  import { recomputeDirtyTargeted } from "../dirtyTracking/recomputeDirtyTargeted";
2
2
  // ─── Class ───────────────────────────────────────────────────────────────────
3
3
  /**
4
- * Система уведомлений хранилища.
4
+ * The store's notification system.
5
5
  *
6
- * Консолидирует:
7
- * - per-node и глобальные подписки
8
- * - версионирование (global + per-node)
9
- * - post-notify hook для внешних подсистем (resolve retrigger)
6
+ * Consolidates:
7
+ * - per-node and global subscriptions
8
+ * - versioning (global + per-node)
9
+ * - the post-notify hook for external subsystems (resolve re-trigger)
10
10
  */
11
11
  export class NotificationHub {
12
12
  constructor(deps) {
13
- /** Подписчики на изменение каждого поля. */
13
+ /** Per-field change subscribers. */
14
14
  this.nodeListeners = new WeakMap();
15
- /** Глобальные подписчикиуведомляются при ЛЮБОМ изменении. */
15
+ /** Global subscribersnotified on ANY change. */
16
16
  this.globalListeners = new Set();
17
- /** Глобальная версияинкрементируется при каждом изменении. */
17
+ /** Global versionincremented on every change. */
18
18
  this.version = 0;
19
- /** Версии отдельных узлов для точечной подписки. */
19
+ /** Per-node versionsfor targeted subscriptions. */
20
20
  this.nodeVersions = new WeakMap();
21
- /** Хук, вызываемый после каждого notifyChanged (resolve retrigger и т.д.) */
21
+ /** Hook invoked after every notifyChanged (resolve re-trigger etc.). */
22
22
  this.postNotifyHook = null;
23
23
  /**
24
- * Re-entrancy guard: предотвращает рекурсивный вызов postNotifyHook.
25
- * Пути, накопленные во время активного хука, откладываются и обрабатываются
26
- * последовательно после завершения текущего вызова.
24
+ * Re-entrancy guard: prevents recursive postNotifyHook invocation.
25
+ * Paths accumulated while a hook is active are deferred and processed
26
+ * sequentially after the current call completes.
27
27
  */
28
28
  this.isDispatchingHook = false;
29
29
  this.pendingHookPaths = null;
30
- /** Подписаться на изменения конкретного узла. */
30
+ /** Subscribe to changes of a specific node. */
31
31
  this.subscribe = (node, listener) => {
32
32
  if (!this.nodeListeners.has(node))
33
33
  this.nodeListeners.set(node, new Set());
34
34
  this.nodeListeners.get(node).add(listener);
35
35
  return () => this.nodeListeners.get(node).delete(listener);
36
36
  };
37
- /** Подписаться на любое изменение в хранилище. */
37
+ /** Subscribe to any store change. */
38
38
  this.subscribeGlobal = (listener) => {
39
39
  this.globalListeners.add(listener);
40
40
  return () => this.globalListeners.delete(listener);
41
41
  };
42
- /** Глобальная версия хранилища. */
42
+ /** Global store version. */
43
43
  this.getVersion = () => {
44
44
  return this.version;
45
45
  };
46
- /** Версия конкретного узла. */
46
+ /** Version of a specific node. */
47
47
  this.getNodeVersion = (node) => {
48
48
  return this.nodeVersions.get(node) ?? 0;
49
49
  };
@@ -59,12 +59,12 @@ export class NotificationHub {
59
59
  }
60
60
  // ─── Public API ──────────────────────────────────────────────────────────
61
61
  /**
62
- * Обработать набор изменённых узлов:
63
- * 1. Пересчитать dirty-флаги (leaf + group + root)
64
- * 2. Инкрементировать глобальную версию
65
- * 3. Обновить per-node версии + уведомить per-node подписчиков
66
- * 4. Уведомить глобальных подписчиков
67
- * 5. Вызвать postNotifyHook (retrigger resolves и т.д.)
62
+ * Process a set of changed nodes:
63
+ * 1. Recompute dirty flags (leaf + group + root)
64
+ * 2. Increment the global version
65
+ * 3. Update per-node versions + notify per-node subscribers
66
+ * 4. Notify global subscribers
67
+ * 5. Invoke the postNotifyHook (resolve re-triggers etc.)
68
68
  */
69
69
  notifyChanged(changed, dirtyDeps) {
70
70
  if (changed.size === 0)
@@ -74,19 +74,18 @@ export class NotificationHub {
74
74
  const dirtyResult = recomputeDirtyTargeted(changed, rootConfig, nodeState, initialValueMap, nodeParents, nodePaths, listStates);
75
75
  for (const n of dirtyResult.changed)
76
76
  changed.add(n);
77
- // Инкрементируем глобальную версию
77
+ // Increment the global version
78
78
  this.version++;
79
- // Обновляем версии изменённых узлов + уведомляем per-node подписчиков
79
+ // Update the changed nodes' versions + notify per-node subscribers
80
80
  for (const node of changed) {
81
81
  this.nodeVersions.set(node, this.version);
82
82
  this.notifyNode(node);
83
83
  }
84
- // Уведомляем глобальных подписчиков
85
84
  this.notifyGlobals();
86
- // Post-notify hook (resolve retrigger и т.д.)
87
- // Re-entrancy guard: если notifyChanged вызван рекурсивно (например,
88
- // из executeListResolve во время postNotifyHook), пути накапливаются
89
- // и обрабатываются последовательно после завершения внешнего вызова.
85
+ // Post-notify hook (resolve re-triggers etc.)
86
+ // Re-entrancy guard: when notifyChanged is called recursively (e.g. from
87
+ // executeListResolve during the postNotifyHook), the paths accumulate and
88
+ // are processed sequentially after the outer call completes.
90
89
  if (this.postNotifyHook) {
91
90
  const changedPaths = new Set();
92
91
  for (const n of changed) {
@@ -96,7 +95,7 @@ export class NotificationHub {
96
95
  }
97
96
  if (changedPaths.size > 0) {
98
97
  if (this.isDispatchingHook) {
99
- // Рекурсивный вызов: откладываем пути
98
+ // Recursive call: defer the paths
100
99
  if (!this.pendingHookPaths)
101
100
  this.pendingHookPaths = new Set();
102
101
  for (const p of changedPaths)
@@ -106,7 +105,7 @@ export class NotificationHub {
106
105
  this.isDispatchingHook = true;
107
106
  try {
108
107
  this.postNotifyHook(changedPaths);
109
- // Дрейнируем пути, накопленные во время вызова хука
108
+ // Drain the paths accumulated during the hook invocation
110
109
  while (this.pendingHookPaths !== null && this.pendingHookPaths.size > 0) {
111
110
  const pending = this.pendingHookPaths;
112
111
  this.pendingHookPaths = null;
@@ -122,8 +121,8 @@ export class NotificationHub {
122
121
  }
123
122
  }
124
123
  /**
125
- * Инкрементировать версию для всех leaf-узлов + уведомить глобальных подписчиков.
126
- * Используется при смене translator — все компоненты перерендерятся.
124
+ * Bump the version of all leaf nodes + notify global subscribers.
125
+ * Used on translator change all components re-render.
127
126
  */
128
127
  bumpLeafVersions() {
129
128
  this.version++;
@@ -133,9 +132,9 @@ export class NotificationHub {
133
132
  this.notifyGlobals();
134
133
  }
135
134
  /**
136
- * Зарегистрировать хук, вызываемый после каждого notifyChanged.
137
- * Получает множество dot-путей изменённых узлов.
138
- * Используется resolve-системой для retrigger по зависимостям.
135
+ * Register a hook invoked after every notifyChanged.
136
+ * Receives the set of dot-paths of the changed nodes.
137
+ * Used by the resolve system for dependency-driven re-triggers.
139
138
  */
140
139
  setPostNotifyHook(hook) {
141
140
  this.postNotifyHook = hook;
@@ -1 +1 @@
1
- {"version":3,"file":"createNotificationHub.js","sourceRoot":"","sources":["../../../store/init/createNotificationHub.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createNotificationHub.js","sourceRoot":"","sources":["../../../store/init/createNotificationHub.ts"],"names":[],"mappings":"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"}