palistor 0.0.25 → 0.0.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (255) hide show
  1. package/README.md +609 -542
  2. package/README.ru.md +1015 -0
  3. package/dist/index.d.ts +16 -27
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +17 -28
  6. package/dist/index.js.map +1 -1
  7. package/dist/react/createTrackingProxy.d.ts +27 -27
  8. package/dist/react/createTrackingProxy.d.ts.map +1 -1
  9. package/dist/react/createTrackingProxy.js +54 -53
  10. package/dist/react/createTrackingProxy.js.map +1 -1
  11. package/dist/react/useForm.d.ts +42 -43
  12. package/dist/react/useForm.d.ts.map +1 -1
  13. package/dist/react/useForm.js +38 -38
  14. package/dist/react/useForm.js.map +1 -1
  15. package/dist/react/usePersist.d.ts +14 -14
  16. package/dist/react/usePersist.js +18 -18
  17. package/dist/react/usePersist.js.map +1 -1
  18. package/dist/react/useStoreContext.d.ts +11 -11
  19. package/dist/react/useStoreContext.js +11 -11
  20. package/dist/react/useTranslator.d.ts +12 -12
  21. package/dist/react/useTranslator.js +12 -12
  22. package/dist/store/applyPatch/applyPatch.d.ts +8 -8
  23. package/dist/store/applyPatch/applyPatch.js +12 -12
  24. package/dist/store/applyPatch/applyPatch.js.map +1 -1
  25. package/dist/store/buildProxy/buildEntityProjectionProxy.js +6 -6
  26. package/dist/store/buildProxy/buildEntityProjectionProxy.js.map +1 -1
  27. package/dist/store/buildProxy/buildListProxy.d.ts +8 -8
  28. package/dist/store/buildProxy/buildListProxy.js +30 -30
  29. package/dist/store/buildProxy/buildListProxy.js.map +1 -1
  30. package/dist/store/buildProxy/buildProxy.d.ts +8 -8
  31. package/dist/store/buildProxy/buildProxy.js +39 -39
  32. package/dist/store/buildProxy/buildProxy.js.map +1 -1
  33. package/dist/store/buildProxy/computeProxyKeys.d.ts +8 -8
  34. package/dist/store/buildProxy/computeProxyKeys.js +9 -9
  35. package/dist/store/buildProxy/computeProxyKeys.js.map +1 -1
  36. package/dist/store/buildProxy/handleLazyResolve.d.ts +3 -3
  37. package/dist/store/buildProxy/handleLazyResolve.js +3 -3
  38. package/dist/store/buildProxy/initProxyCaches.d.ts +5 -5
  39. package/dist/store/buildProxy/initProxyCaches.js +5 -5
  40. package/dist/store/compute/computeFieldState.d.ts +3 -3
  41. package/dist/store/compute/computeFieldState.js +8 -8
  42. package/dist/store/compute/computeFieldState.js.map +1 -1
  43. package/dist/store/compute/fieldStateChanged.d.ts +1 -1
  44. package/dist/store/compute/fieldStateChanged.js +1 -1
  45. package/dist/store/compute/recompute/collectGroupComputeNodes.d.ts +4 -4
  46. package/dist/store/compute/recompute/collectGroupComputeNodes.js +7 -7
  47. package/dist/store/compute/recompute/collectGroupComputeNodes.js.map +1 -1
  48. package/dist/store/compute/recompute/recomputeAndNotify.d.ts +3 -3
  49. package/dist/store/compute/recompute/recomputeAndNotify.js +3 -3
  50. package/dist/store/compute/recompute/recomputeLeaves.d.ts +11 -10
  51. package/dist/store/compute/recompute/recomputeLeaves.d.ts.map +1 -1
  52. package/dist/store/compute/recompute/recomputeLeaves.js +26 -27
  53. package/dist/store/compute/recompute/recomputeLeaves.js.map +1 -1
  54. package/dist/store/compute/recompute/recomputeTargeted.d.ts +7 -7
  55. package/dist/store/compute/recompute/recomputeTargeted.js +12 -12
  56. package/dist/store/compute/recompute/recomputeTargeted.js.map +1 -1
  57. package/dist/store/compute/recompute/topologicalSortComputed.d.ts +4 -4
  58. package/dist/store/compute/recompute/topologicalSortComputed.d.ts.map +1 -1
  59. package/dist/store/compute/recompute/topologicalSortComputed.js +11 -13
  60. package/dist/store/compute/recompute/topologicalSortComputed.js.map +1 -1
  61. package/dist/store/compute/recompute/types.d.ts +4 -4
  62. package/dist/store/compute/resolveFlag.d.ts +2 -2
  63. package/dist/store/compute/resolveFlag.js +2 -2
  64. package/dist/store/compute/resolveString.d.ts +5 -5
  65. package/dist/store/compute/resolveString.js +6 -6
  66. package/dist/store/compute/resolveString.js.map +1 -1
  67. package/dist/store/compute/types.d.ts +3 -3
  68. package/dist/store/constants.d.ts +48 -48
  69. package/dist/store/constants.d.ts.map +1 -1
  70. package/dist/store/constants.js +45 -45
  71. package/dist/store/defineFieldMapping.d.ts +21 -19
  72. package/dist/store/defineFieldMapping.d.ts.map +1 -1
  73. package/dist/store/defineFieldMapping.js +21 -19
  74. package/dist/store/defineFieldMapping.js.map +1 -1
  75. package/dist/store/dirtyTracking/collectInitialSnapshot.js +1 -1
  76. package/dist/store/dirtyTracking/collectInitialSnapshot.js.map +1 -1
  77. package/dist/store/dirtyTracking/recomputeDirtyTargeted.d.ts +3 -3
  78. package/dist/store/dirtyTracking/recomputeDirtyTargeted.js +11 -11
  79. package/dist/store/dirtyTracking/recomputeDirtyTargeted.js.map +1 -1
  80. package/dist/store/dirtyTracking/setGroupRevalidate.d.ts +6 -6
  81. package/dist/store/dirtyTracking/setGroupRevalidate.js +7 -7
  82. package/dist/store/dirtyTracking/setGroupRevalidate.js.map +1 -1
  83. package/dist/store/entityRegistry/entityRegistry.d.ts +72 -72
  84. package/dist/store/entityRegistry/entityRegistry.d.ts.map +1 -1
  85. package/dist/store/entityRegistry/entityRegistry.js +91 -91
  86. package/dist/store/entityRegistry/entityRegistry.js.map +1 -1
  87. package/dist/store/entityRegistry/generateId.d.ts +3 -3
  88. package/dist/store/entityRegistry/generateId.js +3 -3
  89. package/dist/store/entityRegistry/types.d.ts +17 -17
  90. package/dist/store/entityRegistry/types.d.ts.map +1 -1
  91. package/dist/store/flow/buildFlowStepsProxy.d.ts +9 -9
  92. package/dist/store/flow/buildFlowStepsProxy.js +13 -13
  93. package/dist/store/flow/buildFlowStepsProxy.js.map +1 -1
  94. package/dist/store/flow/defineFlow.d.ts +27 -25
  95. package/dist/store/flow/defineFlow.d.ts.map +1 -1
  96. package/dist/store/flow/defineFlow.js +15 -13
  97. package/dist/store/flow/defineFlow.js.map +1 -1
  98. package/dist/store/flow/flowApi.d.ts +3 -2
  99. package/dist/store/flow/flowApi.d.ts.map +1 -1
  100. package/dist/store/flow/flowApi.js +1 -1
  101. package/dist/store/flow/flowApi.js.map +1 -1
  102. package/dist/store/flow/flowNavigation.d.ts +65 -63
  103. package/dist/store/flow/flowNavigation.d.ts.map +1 -1
  104. package/dist/store/flow/flowNavigation.js +74 -72
  105. package/dist/store/flow/flowNavigation.js.map +1 -1
  106. package/dist/store/flow/flowState.d.ts +16 -16
  107. package/dist/store/flow/flowState.d.ts.map +1 -1
  108. package/dist/store/flow/flowState.js +5 -5
  109. package/dist/store/flow/flowState.js.map +1 -1
  110. package/dist/store/groupDeps/createGroupDeps.d.ts +3 -3
  111. package/dist/store/groupDeps/createGroupDeps.js +6 -6
  112. package/dist/store/groupDeps/createGroupDeps.js.map +1 -1
  113. package/dist/store/groupDeps/createTrackingValues.d.ts +9 -9
  114. package/dist/store/groupDeps/createTrackingValues.js +11 -11
  115. package/dist/store/groupDeps/createTrackingValues.js.map +1 -1
  116. package/dist/store/groupDeps/getNodeGroupPath.d.ts +3 -3
  117. package/dist/store/groupDeps/getNodeGroupPath.js +5 -5
  118. package/dist/store/groupDeps/getNodeGroupPath.js.map +1 -1
  119. package/dist/store/groupDeps/getRecipientGroups.d.ts +1 -1
  120. package/dist/store/groupDeps/getRecipientGroups.js +1 -1
  121. package/dist/store/groupDeps/groupDeps.d.ts +7 -7
  122. package/dist/store/groupDeps/groupDeps.js +7 -7
  123. package/dist/store/groupDeps/pairKey.d.ts +3 -3
  124. package/dist/store/groupDeps/pairKey.d.ts.map +1 -1
  125. package/dist/store/groupDeps/pairKey.js +4 -4
  126. package/dist/store/groupDeps/pairKey.js.map +1 -1
  127. package/dist/store/groupDeps/resolveGroupByPath.d.ts +3 -3
  128. package/dist/store/groupDeps/resolveGroupByPath.js +3 -3
  129. package/dist/store/init/createNotificationHub.d.ts +31 -31
  130. package/dist/store/init/createNotificationHub.d.ts.map +1 -1
  131. package/dist/store/init/createNotificationHub.js +36 -37
  132. package/dist/store/init/createNotificationHub.js.map +1 -1
  133. package/dist/store/init/createResolveManager.d.ts +72 -69
  134. package/dist/store/init/createResolveManager.d.ts.map +1 -1
  135. package/dist/store/init/createResolveManager.js +101 -98
  136. package/dist/store/init/createResolveManager.js.map +1 -1
  137. package/dist/store/init/initGroupSubmitting.d.ts +2 -2
  138. package/dist/store/init/initGroupSubmitting.js +4 -4
  139. package/dist/store/init/initGroupSubmitting.js.map +1 -1
  140. package/dist/store/normalizeConfig.d.ts +20 -18
  141. package/dist/store/normalizeConfig.d.ts.map +1 -1
  142. package/dist/store/normalizeConfig.js +31 -29
  143. package/dist/store/normalizeConfig.js.map +1 -1
  144. package/dist/store/onChangePipeline/computeFieldKey.d.ts +2 -2
  145. package/dist/store/onChangePipeline/computeFieldKey.js +2 -2
  146. package/dist/store/onChangePipeline/findOnChangeAncestors.d.ts +2 -2
  147. package/dist/store/onChangePipeline/findOnChangeAncestors.js +4 -4
  148. package/dist/store/onChangePipeline/findOnChangeAncestors.js.map +1 -1
  149. package/dist/store/onChangePipeline/onChangePipeline.d.ts +13 -12
  150. package/dist/store/onChangePipeline/onChangePipeline.d.ts.map +1 -1
  151. package/dist/store/onChangePipeline/onChangePipeline.js +14 -13
  152. package/dist/store/onChangePipeline/onChangePipeline.js.map +1 -1
  153. package/dist/store/persist/drivers.d.ts +7 -7
  154. package/dist/store/persist/drivers.js +8 -8
  155. package/dist/store/persist/drivers.js.map +1 -1
  156. package/dist/store/persist/index.d.ts +1 -1
  157. package/dist/store/persist/persistManager.d.ts +23 -23
  158. package/dist/store/persist/persistManager.d.ts.map +1 -1
  159. package/dist/store/persist/persistManager.js +51 -51
  160. package/dist/store/persist/persistManager.js.map +1 -1
  161. package/dist/store/persist/types.d.ts +23 -23
  162. package/dist/store/persist/types.d.ts.map +1 -1
  163. package/dist/store/persist/types.js +4 -4
  164. package/dist/store/resetPipeline/buildResetPatch.d.ts +5 -5
  165. package/dist/store/resetPipeline/buildResetPatch.js +5 -5
  166. package/dist/store/resetPipeline/collectDefaults.d.ts +5 -5
  167. package/dist/store/resetPipeline/collectDefaults.js +6 -6
  168. package/dist/store/resetPipeline/collectDefaults.js.map +1 -1
  169. package/dist/store/resetPipeline/resetPipeline.d.ts +7 -7
  170. package/dist/store/resetPipeline/resetPipeline.js +15 -15
  171. package/dist/store/resetPipeline/resetPipeline.js.map +1 -1
  172. package/dist/store/resolvePipeline/applyPendingWrites.d.ts +10 -10
  173. package/dist/store/resolvePipeline/applyPendingWrites.d.ts.map +1 -1
  174. package/dist/store/resolvePipeline/applyPendingWrites.js +35 -38
  175. package/dist/store/resolvePipeline/applyPendingWrites.js.map +1 -1
  176. package/dist/store/resolvePipeline/createContextTrackingProxy.d.ts +8 -7
  177. package/dist/store/resolvePipeline/createContextTrackingProxy.d.ts.map +1 -1
  178. package/dist/store/resolvePipeline/createContextTrackingProxy.js +6 -5
  179. package/dist/store/resolvePipeline/createContextTrackingProxy.js.map +1 -1
  180. package/dist/store/resolvePipeline/createValuesTrackingProxy.d.ts +43 -43
  181. package/dist/store/resolvePipeline/createValuesTrackingProxy.d.ts.map +1 -1
  182. package/dist/store/resolvePipeline/createValuesTrackingProxy.js +70 -70
  183. package/dist/store/resolvePipeline/createValuesTrackingProxy.js.map +1 -1
  184. package/dist/store/resolvePipeline/executeListResolve.d.ts +14 -14
  185. package/dist/store/resolvePipeline/executeListResolve.js +27 -27
  186. package/dist/store/resolvePipeline/executeListResolve.js.map +1 -1
  187. package/dist/store/resolvePipeline/executeResolve.d.ts +15 -15
  188. package/dist/store/resolvePipeline/executeResolve.js +46 -46
  189. package/dist/store/resolvePipeline/executeResolve.js.map +1 -1
  190. package/dist/store/store/NodeRegistry/nodeRegistry.d.ts +61 -61
  191. package/dist/store/store/NodeRegistry/nodeRegistry.d.ts.map +1 -1
  192. package/dist/store/store/NodeRegistry/nodeRegistry.js +85 -86
  193. package/dist/store/store/NodeRegistry/nodeRegistry.js.map +1 -1
  194. package/dist/store/store/NodeRegistry/nodeUtils.d.ts +5 -5
  195. package/dist/store/store/NodeRegistry/nodeUtils.d.ts.map +1 -1
  196. package/dist/store/store/NodeRegistry/nodeUtils.js +5 -5
  197. package/dist/store/store/NodeRegistry/nodeUtils.js.map +1 -1
  198. package/dist/store/store/groupDepsMap.d.ts +23 -23
  199. package/dist/store/store/groupDepsMap.d.ts.map +1 -1
  200. package/dist/store/store/groupDepsMap.js +35 -34
  201. package/dist/store/store/groupDepsMap.js.map +1 -1
  202. package/dist/store/store/hasComputedProps.d.ts +2 -2
  203. package/dist/store/store/hasComputedProps.js +2 -2
  204. package/dist/store/store/nodeMap.d.ts +5 -5
  205. package/dist/store/store/nodeMap.js +7 -7
  206. package/dist/store/store/nodeMap.js.map +1 -1
  207. package/dist/store/store/palistor.d.ts +80 -80
  208. package/dist/store/store/palistor.d.ts.map +1 -1
  209. package/dist/store/store/palistor.js +149 -169
  210. package/dist/store/store/palistor.js.map +1 -1
  211. package/dist/store/store/registerNodes.d.ts +10 -10
  212. package/dist/store/store/registerNodes.js +15 -15
  213. package/dist/store/store/registerNodes.js.map +1 -1
  214. package/dist/store/store/serviceRegistry.d.ts +8 -8
  215. package/dist/store/store/serviceRegistry.d.ts.map +1 -1
  216. package/dist/store/store/serviceRegistry.js +8 -8
  217. package/dist/store/store/serviceRegistry.js.map +1 -1
  218. package/dist/store/store/types.d.ts +236 -234
  219. package/dist/store/store/types.d.ts.map +1 -1
  220. package/dist/store/submitPipeline/applyLeafBeforeSubmit.d.ts +2 -2
  221. package/dist/store/submitPipeline/applyLeafBeforeSubmit.js +2 -2
  222. package/dist/store/submitPipeline/collectLeafStates.d.ts +2 -2
  223. package/dist/store/submitPipeline/collectLeafStates.js +2 -2
  224. package/dist/store/submitPipeline/submitPipeline.d.ts +8 -8
  225. package/dist/store/submitPipeline/submitPipeline.js +12 -12
  226. package/dist/store/submitPipeline/submitPipeline.js.map +1 -1
  227. package/dist/store/submitPipeline/types.d.ts +1 -1
  228. package/dist/store/submitPipeline/types.d.ts.map +1 -1
  229. package/dist/store/traversal/nodeClassifier.d.ts +9 -9
  230. package/dist/store/traversal/nodeClassifier.d.ts.map +1 -1
  231. package/dist/store/traversal/nodeClassifier.js +11 -11
  232. package/dist/store/traversal/nodeClassifier.js.map +1 -1
  233. package/dist/store/traversal/walkFull.d.ts +14 -14
  234. package/dist/store/traversal/walkFull.js +2 -2
  235. package/dist/store/valuesCache/valuesCache.d.ts +9 -9
  236. package/dist/store/valuesCache/valuesCache.d.ts.map +1 -1
  237. package/dist/store/valuesCache/valuesCache.js +6 -6
  238. package/dist/store/writePipeline/formatPatch.d.ts +5 -5
  239. package/dist/store/writePipeline/formatPatch.js +7 -7
  240. package/dist/store/writePipeline/formatPatch.js.map +1 -1
  241. package/dist/store/writePipeline/formatValue.d.ts +5 -5
  242. package/dist/store/writePipeline/formatValue.js +5 -5
  243. package/dist/store/writePipeline/mergeChanged.d.ts +4 -4
  244. package/dist/store/writePipeline/mergeChanged.js +4 -4
  245. package/dist/store/writePipeline/runSetter.d.ts +6 -6
  246. package/dist/store/writePipeline/runSetter.js +8 -8
  247. package/dist/store/writePipeline/storeValue.d.ts +3 -3
  248. package/dist/store/writePipeline/storeValue.js +3 -3
  249. package/dist/store/writePipeline/types.d.ts +4 -4
  250. package/dist/store/writePipeline/types.d.ts.map +1 -1
  251. package/dist/store/writePipeline/writePipeline.d.ts +7 -7
  252. package/dist/store/writePipeline/writePipeline.d.ts.map +1 -1
  253. package/dist/store/writePipeline/writePipeline.js +15 -15
  254. package/dist/store/writePipeline/writePipeline.js.map +1 -1
  255. package/package.json +11 -4
@@ -1,28 +1,30 @@
1
1
  import type { FieldMapping } from "./store/types";
2
2
  /**
3
- * Приводит конфиг, написанный во ВНЕШНИХ (замапленных) именах, к внутренним
4
- * один раз, на границе конструктора `Palistor`, ДО того как дерево попадёт в
3
+ * Converts a config authored in EXTERNAL (mapped) names to internal names
4
+ * once, at the `Palistor` constructor boundary, BEFORE the tree reaches
5
5
  * init/compute/traversal.
6
6
  *
7
- * Зачем: `fieldMapping` задаёт единый публичный словарь имён полей. Автор пишет
8
- * конфиг в этом словаре (`required`, `helpText`, …), а всё внутреннее ядро
9
- * (computeFieldState, registerNodes, обходы по `CONFIG_PROPS` / `"value" in node`)
10
- * оперирует internal-именами (`isRequired`, `description`, …). Нормализуя дерево
11
- * в одной точке, мы не трогаем ни одно из ~десятка мест ниже по стеку —
12
- * все они продолжают работать с internal-именами без изменений.
7
+ * Why: `fieldMapping` defines the single public vocabulary of field names.
8
+ * The author writes the config in that vocabulary (`required`, `helpText`, …)
9
+ * while the whole internal core (computeFieldState, registerNodes, walks over
10
+ * `CONFIG_PROPS` / `"value" in node`) operates on internal names
11
+ * (`isRequired`, `description`, …). Normalizing the tree at a single point
12
+ * leaves the ~dozen call sites below the stack untouched — they keep working
13
+ * with internal names unchanged.
13
14
  *
14
- * Переводятся только ключи из {@link MAPPABLE_CONFIG_KEYS} (пересечение
15
- * mappable-ключей и входных ключей конфига). Идентичность дочерних полей
16
- * (`email`, `passport`, …) не ремапится никогда.
15
+ * Only keys from {@link MAPPABLE_CONFIG_KEYS} are translated (the
16
+ * intersection of mappable keys and config input keys). Child field identity
17
+ * (`email`, `passport`, …) is never remapped.
17
18
  *
18
- * Инвариант карты (см. RFC): external-имя не должно совпадать с именем соседнего
19
- * дочернего поля.
19
+ * Map invariant: an external name must not collide with a sibling child-field
20
+ * name.
20
21
  *
21
- * @param config корневой конфиг (как написал автор)
22
- * @param externalToInternal обратная карта external→internal (sparse)
23
- * @param fieldMapping прямая карта internal→external (для strict-проверок)
24
- * @returns новое нормализованное дерево (оригинал не мутируется). Если карта
25
- * пуста возвращается исходный `config` без копий (нулевой оверхед).
22
+ * @param config root config (as authored)
23
+ * @param externalToInternal reverse map, external→internal (sparse)
24
+ * @param fieldMapping forward map, internal→external (for strict checks)
25
+ * @returns a new normalized tree (the original is not mutated). When the map
26
+ * is empty the original `config` is returned without copies (zero
27
+ * overhead).
26
28
  */
27
29
  export declare function normalizeConfig<T>(config: T, externalToInternal: Record<string, string>, fieldMapping: FieldMapping): T;
28
30
  //# sourceMappingURL=normalizeConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"normalizeConfig.d.ts","sourceRoot":"","sources":["../../store/normalizeConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAIlD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,MAAM,EAAE,CAAC,EACT,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1C,YAAY,EAAE,YAAY,GACzB,CAAC,CAGH"}
1
+ {"version":3,"file":"normalizeConfig.d.ts","sourceRoot":"","sources":["../../store/normalizeConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAIlD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAC/B,MAAM,EAAE,CAAC,EACT,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC1C,YAAY,EAAE,YAAY,GACzB,CAAC,CAGH"}
@@ -1,29 +1,31 @@
1
1
  import { CONFIG_PROPS, MAPPABLE_CONFIG_KEYS, MAPPABLE_KEYS } from "./constants";
2
2
  const MAPPABLE_KEYS_SET = new Set(MAPPABLE_KEYS);
3
3
  /**
4
- * Приводит конфиг, написанный во ВНЕШНИХ (замапленных) именах, к внутренним
5
- * один раз, на границе конструктора `Palistor`, ДО того как дерево попадёт в
4
+ * Converts a config authored in EXTERNAL (mapped) names to internal names
5
+ * once, at the `Palistor` constructor boundary, BEFORE the tree reaches
6
6
  * init/compute/traversal.
7
7
  *
8
- * Зачем: `fieldMapping` задаёт единый публичный словарь имён полей. Автор пишет
9
- * конфиг в этом словаре (`required`, `helpText`, …), а всё внутреннее ядро
10
- * (computeFieldState, registerNodes, обходы по `CONFIG_PROPS` / `"value" in node`)
11
- * оперирует internal-именами (`isRequired`, `description`, …). Нормализуя дерево
12
- * в одной точке, мы не трогаем ни одно из ~десятка мест ниже по стеку —
13
- * все они продолжают работать с internal-именами без изменений.
8
+ * Why: `fieldMapping` defines the single public vocabulary of field names.
9
+ * The author writes the config in that vocabulary (`required`, `helpText`, …)
10
+ * while the whole internal core (computeFieldState, registerNodes, walks over
11
+ * `CONFIG_PROPS` / `"value" in node`) operates on internal names
12
+ * (`isRequired`, `description`, …). Normalizing the tree at a single point
13
+ * leaves the ~dozen call sites below the stack untouched — they keep working
14
+ * with internal names unchanged.
14
15
  *
15
- * Переводятся только ключи из {@link MAPPABLE_CONFIG_KEYS} (пересечение
16
- * mappable-ключей и входных ключей конфига). Идентичность дочерних полей
17
- * (`email`, `passport`, …) не ремапится никогда.
16
+ * Only keys from {@link MAPPABLE_CONFIG_KEYS} are translated (the
17
+ * intersection of mappable keys and config input keys). Child field identity
18
+ * (`email`, `passport`, …) is never remapped.
18
19
  *
19
- * Инвариант карты (см. RFC): external-имя не должно совпадать с именем соседнего
20
- * дочернего поля.
20
+ * Map invariant: an external name must not collide with a sibling child-field
21
+ * name.
21
22
  *
22
- * @param config корневой конфиг (как написал автор)
23
- * @param externalToInternal обратная карта external→internal (sparse)
24
- * @param fieldMapping прямая карта internal→external (для strict-проверок)
25
- * @returns новое нормализованное дерево (оригинал не мутируется). Если карта
26
- * пуста возвращается исходный `config` без копий (нулевой оверхед).
23
+ * @param config root config (as authored)
24
+ * @param externalToInternal reverse map, external→internal (sparse)
25
+ * @param fieldMapping forward map, internal→external (for strict checks)
26
+ * @returns a new normalized tree (the original is not mutated). When the map
27
+ * is empty the original `config` is returned without copies (zero
28
+ * overhead).
27
29
  */
28
30
  export function normalizeConfig(config, externalToInternal, fieldMapping) {
29
31
  if (Object.keys(externalToInternal).length === 0)
@@ -31,7 +33,7 @@ export function normalizeConfig(config, externalToInternal, fieldMapping) {
31
33
  return normalizeNode(config, externalToInternal, fieldMapping);
32
34
  }
33
35
  function normalizeNode(node, e2i, fwd) {
34
- // ListNode — массив [template, listConfig?]: нормализуем каждый элемент.
36
+ // ListNode — array [template, listConfig?]: normalize each element.
35
37
  if (Array.isArray(node)) {
36
38
  return node.map((el) => normalizeNode(el, e2i, fwd));
37
39
  }
@@ -41,33 +43,33 @@ function normalizeNode(node, e2i, fwd) {
41
43
  const out = {};
42
44
  for (const key of Object.keys(src)) {
43
45
  const value = src[key];
44
- // (1) strict: автор написал INTERNAL-имя config-ключа, который активно
45
- // ремапится (напр. `isRequired` при isRequired→required).
46
+ // (1) strict: the author wrote the INTERNAL name of a config key that is
47
+ // actively remapped (e.g. `isRequired` when isRequired→required).
46
48
  if (MAPPABLE_CONFIG_KEYS.has(key) && key in fwd) {
47
49
  throw new Error(`[palistor] fieldMapping is active: write "${String(fwd[key])}" instead of internal "${key}" in config.`);
48
50
  }
49
51
  const internal = e2i[key];
50
- // (2) key внешнее имя из карты.
52
+ // (2) key is an external name from the map.
51
53
  if (internal !== undefined) {
52
54
  if (MAPPABLE_CONFIG_KEYS.has(internal)) {
53
- // ремап во ВХОДНОЙ config-ключпереименовываем, внутрь не рекурсируем.
55
+ // remap to an INPUT config key rename, do not recurse inside.
54
56
  out[internal] = value;
55
57
  continue;
56
58
  }
57
59
  if (MAPPABLE_KEYS_SET.has(internal)) {
58
- // ремап в ВЫЧИСЛЯЕМЫЙ/выходной ключ (isInvalid/errorMessage/dirty/
59
- // loading/onValueChange) — в конфиге его писать нельзя.
60
+ // remap to a COMPUTED/output key (isInvalid/errorMessage/dirty/
61
+ // loading/onValueChange) — it must not be written in a config.
60
62
  throw new Error(`[palistor] "${internal}" (mapped as "${key}") is computed and cannot be set in config — remove it.`);
61
63
  }
62
- // internal не mappable — карта странная; трактуем key как обычно (ниже).
64
+ // internal is not mappable — odd map; treat key normally (below).
63
65
  }
64
- // (3) key не внешнее имя карты: служебный ключ конфига или дочернее поле.
66
+ // (3) key is not an external map name: a service config key or a child field.
65
67
  if (CONFIG_PROPS.has(key)) {
66
- // служебный (validate, componentProps, resolve, value, label, …) — как есть.
68
+ // service key (validate, componentProps, resolve, value, label, …) — as-is.
67
69
  out[key] = value;
68
70
  }
69
71
  else {
70
- // дочернее поле (идентичность не ремапится) → рекурсия.
72
+ // child field (identity is never remapped) → recurse.
71
73
  out[key] = normalizeNode(value, e2i, fwd);
72
74
  }
73
75
  }
@@ -1 +1 @@
1
- {"version":3,"file":"normalizeConfig.js","sourceRoot":"","sources":["../../store/normalizeConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGhF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS,aAAa,CAAC,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAS,EACT,kBAA0C,EAC1C,YAA0B;IAE1B,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAChE,OAAO,aAAa,CAAC,MAAM,EAAE,kBAAkB,EAAE,YAAY,CAAM,CAAC;AACtE,CAAC;AAED,SAAS,aAAa,CACpB,IAAa,EACb,GAA2B,EAC3B,GAAiB;IAEjB,yEAAyE;IACzE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3D,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,MAAM,GAAG,GAA4B,EAAE,CAAC;IAExC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAEvB,uEAAuE;QACvE,8DAA8D;QAC9D,IAAI,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CACb,6CAA6C,MAAM,CACjD,GAAG,CAAC,GAAyB,CAAC,CAC/B,0BAA0B,GAAG,cAAc,CAC7C,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAE1B,kCAAkC;QAClC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvC,yEAAyE;gBACzE,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;gBACtB,SAAS;YACX,CAAC;YACD,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpC,mEAAmE;gBACnE,wDAAwD;gBACxD,MAAM,IAAI,KAAK,CACb,eAAe,QAAQ,iBAAiB,GAAG,yDAAyD,CACrG,CAAC;YACJ,CAAC;YACD,yEAAyE;QAC3E,CAAC;QAED,4EAA4E;QAC5E,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,6EAA6E;YAC7E,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,wDAAwD;YACxD,GAAG,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"normalizeConfig.js","sourceRoot":"","sources":["../../store/normalizeConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGhF,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAS,aAAa,CAAC,CAAC;AAEzD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAS,EACT,kBAA0C,EAC1C,YAA0B;IAE1B,IAAI,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAChE,OAAO,aAAa,CAAC,MAAM,EAAE,kBAAkB,EAAE,YAAY,CAAM,CAAC;AACtE,CAAC;AAED,SAAS,aAAa,CACpB,IAAa,EACb,GAA2B,EAC3B,GAAiB;IAEjB,oEAAoE;IACpE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3D,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,MAAM,GAAG,GAA4B,EAAE,CAAC;IAExC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAEvB,yEAAyE;QACzE,sEAAsE;QACtE,IAAI,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;YAChD,MAAM,IAAI,KAAK,CACb,6CAA6C,MAAM,CACjD,GAAG,CAAC,GAAyB,CAAC,CAC/B,0BAA0B,GAAG,cAAc,CAC7C,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAE1B,4CAA4C;QAC5C,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,oBAAoB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvC,gEAAgE;gBAChE,GAAG,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;gBACtB,SAAS;YACX,CAAC;YACD,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpC,gEAAgE;gBAChE,+DAA+D;gBAC/D,MAAM,IAAI,KAAK,CACb,eAAe,QAAQ,iBAAiB,GAAG,yDAAyD,CACrG,CAAC;YACJ,CAAC;YACD,kEAAkE;QACpE,CAAC;QAED,8EAA8E;QAC9E,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAC1B,4EAA4E;YAC5E,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,sDAAsD;YACtD,GAAG,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Вычисляет путь изменённого поля относительно узла-обработчика.
2
+ * Computes the changed field's path relative to the handler node.
3
3
  *
4
- * Примеры:
4
+ * Examples:
5
5
  * nodePath="form.address.city", handlerPath="form" → "address.city"
6
6
  * nodePath="name", handlerPath="" → "name"
7
7
  * nodePath="form.country", handlerPath="form.country" → "country" (self)
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Вычисляет путь изменённого поля относительно узла-обработчика.
2
+ * Computes the changed field's path relative to the handler node.
3
3
  *
4
- * Примеры:
4
+ * Examples:
5
5
  * nodePath="form.address.city", handlerPath="form" → "address.city"
6
6
  * nodePath="name", handlerPath="" → "name"
7
7
  * nodePath="form.country", handlerPath="form.country" → "country" (self)
@@ -1,8 +1,8 @@
1
1
  import { type AnyConfigNode } from "../store/types";
2
2
  /**
3
- * Собирает все узлы с `onChange` от самого узла вверх до корня.
3
+ * Collects all nodes with `onChange` from the node itself up to the root.
4
4
  *
5
- * Порядок: сам узел (если есть onChange) первым, затем ближайший предок и т.д.
5
+ * Order: the node itself first (if it has onChange), then the nearest ancestor, etc.
6
6
  */
7
7
  export declare function findOnChangeNodes(node: object, nodeParents: WeakMap<object, object>): AnyConfigNode[];
8
8
  //# sourceMappingURL=findOnChangeAncestors.d.ts.map
@@ -1,15 +1,15 @@
1
1
  /**
2
- * Собирает все узлы с `onChange` от самого узла вверх до корня.
2
+ * Collects all nodes with `onChange` from the node itself up to the root.
3
3
  *
4
- * Порядок: сам узел (если есть onChange) первым, затем ближайший предок и т.д.
4
+ * Order: the node itself first (if it has onChange), then the nearest ancestor, etc.
5
5
  */
6
6
  export function findOnChangeNodes(node, nodeParents) {
7
7
  const result = [];
8
- // Сам узел
8
+ // The node itself
9
9
  if (typeof node.onChange === "function") {
10
10
  result.push(node);
11
11
  }
12
- // Предки
12
+ // Ancestors
13
13
  let current = nodeParents.get(node);
14
14
  while (current) {
15
15
  if (typeof current.onChange === "function") {
@@ -1 +1 @@
1
- {"version":3,"file":"findOnChangeAncestors.js","sourceRoot":"","sources":["../../../store/onChangePipeline/findOnChangeAncestors.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAY,EACZ,WAAoC;IAEpC,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,WAAW;IACX,IAAI,OAAQ,IAAsB,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,IAAqB,CAAC,CAAC;IACrC,CAAC;IAED,SAAS;IACT,IAAI,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAQ,OAAyB,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,OAAwB,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"findOnChangeAncestors.js","sourceRoot":"","sources":["../../../store/onChangePipeline/findOnChangeAncestors.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAY,EACZ,WAAoC;IAEpC,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,kBAAkB;IAClB,IAAI,OAAQ,IAAsB,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,IAAqB,CAAC,CAAC;IACrC,CAAC;IAED,YAAY;IACZ,IAAI,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpC,OAAO,OAAO,EAAE,CAAC;QACf,IAAI,OAAQ,OAAyB,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;YAC9D,MAAM,CAAC,IAAI,CAAC,OAAwB,CAAC,CAAC;QACxC,CAAC;QACD,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,29 +1,30 @@
1
1
  import { type AnyConfigNode } from "../store/types";
2
2
  import type { Palistor } from "../store/palistor";
3
3
  export interface OnChangeOptions {
4
- /** templateField — при entity-mode: onChange ищется в template-дереве, патч применяется к entity-сиблингам. */
4
+ /** templateField — in entity mode: onChange is looked up in the template tree, the patch is applied to entity siblings. */
5
5
  via?: AnyConfigNode;
6
6
  }
7
7
  /**
8
- * OnChangePipeline — fire-and-forget вызов onChange хендлеров
9
- * при изменении поля: сначала на самом узле (если есть onChange),
10
- * затем на всех группах-предках с onChange.
8
+ * OnChangePipeline — fire-and-forget invocation of onChange handlers when a
9
+ * field changes: first on the node itself (if it has onChange), then on all
10
+ * ancestor groups with onChange.
11
11
  *
12
- * Для каждого узла с `onChange`:
13
- * - вычисляется `fieldKey` — имя поля (для самого узла) или путь относительно предка
14
- * - onChange вызывается асинхронно, не блокируя pipeline записи
15
- * - если onChange вернул объект-патч он применяется к store
12
+ * For every node with `onChange`:
13
+ * - `fieldKey` is computed the field name (for the node itself) or the path relative to the ancestor
14
+ * - onChange runs asynchronously, without blocking the write pipeline
15
+ * - a returned patch object is applied to the store
16
16
  *
17
- * При opts.via — entity-mode: обход onChange через template-иерархию (не entity),
18
- * allValues entity-значения из view.parent.getValues().
17
+ * With opts.via — entity mode: the onChange walk goes through the template
18
+ * hierarchy (not the entity); allValues are the entity values from
19
+ * view.parent.getValues().
19
20
  */
20
21
  export declare class OnChangePipeline {
21
22
  private readonly kernel;
22
23
  constructor(kernel: Palistor<any, any>);
23
24
  fire(node: AnyConfigNode, newValue: unknown, previousValue: unknown, opts?: OnChangeOptions): void;
24
- /** Применить патч onChange к entity-сиблингам (entity-mode). */
25
+ /** Apply an onChange patch to entity siblings (entity mode). */
25
26
  private _applyEntityOnChangeResult;
26
- /** Применить патч onChange к config-узлам (config-mode). */
27
+ /** Apply an onChange patch to config nodes (config mode). */
27
28
  private _applyOnChangeResult;
28
29
  }
29
30
  //# sourceMappingURL=onChangePipeline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"onChangePipeline.d.ts","sourceRoot":"","sources":["../../../store/onChangePipeline/onChangePipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AASlD,MAAM,WAAW,eAAe;IAC9B,+GAA+G;IAC/G,GAAG,CAAC,EAAE,aAAa,CAAC;CACrB;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAEvD,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI;IA0ClG,gEAAgE;IAChE,OAAO,CAAC,0BAA0B;IAsClC,4DAA4D;IAC5D,OAAO,CAAC,oBAAoB;CAsB7B"}
1
+ {"version":3,"file":"onChangePipeline.d.ts","sourceRoot":"","sources":["../../../store/onChangePipeline/onChangePipeline.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AASlD,MAAM,WAAW,eAAe;IAC9B,2HAA2H;IAC3H,GAAG,CAAC,EAAE,aAAa,CAAC;CACrB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,gBAAgB;IACf,OAAO,CAAC,QAAQ,CAAC,MAAM;gBAAN,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAEvD,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,IAAI;IA0ClG,gEAAgE;IAChE,OAAO,CAAC,0BAA0B;IAsClC,6DAA6D;IAC7D,OAAO,CAAC,oBAAoB;CAsB7B"}
@@ -5,17 +5,18 @@ import { computeFieldKey } from "./computeFieldKey";
5
5
  import { isLeafNode } from "../traversal";
6
6
  import { storeValue } from "../writePipeline/storeValue";
7
7
  /**
8
- * OnChangePipeline — fire-and-forget вызов onChange хендлеров
9
- * при изменении поля: сначала на самом узле (если есть onChange),
10
- * затем на всех группах-предках с onChange.
8
+ * OnChangePipeline — fire-and-forget invocation of onChange handlers when a
9
+ * field changes: first on the node itself (if it has onChange), then on all
10
+ * ancestor groups with onChange.
11
11
  *
12
- * Для каждого узла с `onChange`:
13
- * - вычисляется `fieldKey` — имя поля (для самого узла) или путь относительно предка
14
- * - onChange вызывается асинхронно, не блокируя pipeline записи
15
- * - если onChange вернул объект-патч он применяется к store
12
+ * For every node with `onChange`:
13
+ * - `fieldKey` is computed the field name (for the node itself) or the path relative to the ancestor
14
+ * - onChange runs asynchronously, without blocking the write pipeline
15
+ * - a returned patch object is applied to the store
16
16
  *
17
- * При opts.via — entity-mode: обход onChange через template-иерархию (не entity),
18
- * allValues entity-значения из view.parent.getValues().
17
+ * With opts.via — entity mode: the onChange walk goes through the template
18
+ * hierarchy (not the entity); allValues are the entity values from
19
+ * view.parent.getValues().
19
20
  */
20
21
  export class OnChangePipeline {
21
22
  constructor(kernel) {
@@ -24,7 +25,7 @@ export class OnChangePipeline {
24
25
  fire(node, newValue, previousValue, opts) {
25
26
  const { nodePaths, nodeParents } = this.kernel.nodes;
26
27
  if (opts?.via !== undefined) {
27
- // ── Entity mode: onChange-обход по template-дереву ──
28
+ // ── Entity mode: onChange walk over the template tree ──
28
29
  const view = this.kernel.nodes.getView(node, opts.via);
29
30
  const onChangeNodes = findOnChangeNodes(view.rules, nodeParents);
30
31
  if (onChangeNodes.length === 0)
@@ -41,7 +42,7 @@ export class OnChangePipeline {
41
42
  }
42
43
  return;
43
44
  }
44
- // ── Config mode (существующая логика) ──
45
+ // ── Config mode ──
45
46
  const valuesCache = this.kernel.values;
46
47
  const onChangeNodes = findOnChangeNodes(node, nodeParents);
47
48
  if (onChangeNodes.length === 0)
@@ -57,7 +58,7 @@ export class OnChangePipeline {
57
58
  .catch(() => { });
58
59
  }
59
60
  }
60
- /** Применить патч onChange к entity-сиблингам (entity-mode). */
61
+ /** Apply an onChange patch to entity siblings (entity mode). */
61
62
  _applyEntityOnChangeResult(patch, view) {
62
63
  if (!patch || typeof patch !== "object" || Object.keys(patch).length === 0)
63
64
  return;
@@ -83,7 +84,7 @@ export class OnChangePipeline {
83
84
  recomputeAndNotify(patchedNodes, () => this.kernel.recompute(patchedNodes), (c) => this.kernel.notifyChanged(c));
84
85
  }
85
86
  }
86
- /** Применить патч onChange к config-узлам (config-mode). */
87
+ /** Apply an onChange patch to config nodes (config mode). */
87
88
  _applyOnChangeResult(patch, sourceNode) {
88
89
  if (!patch || typeof patch !== "object" || Object.keys(patch).length === 0)
89
90
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"onChangePipeline.js","sourceRoot":"","sources":["../../../store/onChangePipeline/onChangePipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"onChangePipeline.js","sourceRoot":"","sources":["../../../store/onChangePipeline/onChangePipeline.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,14 @@
1
1
  /**
2
- * Встроенные драйверы хранения для persist.
2
+ * Built-in storage drivers for persist.
3
3
  *
4
- * Каждый драйвер реализует интерфейс PersistDriver.
5
- * Все драйверы проверяют доступность API (SSR-совместимо).
4
+ * Each driver implements the PersistDriver interface.
5
+ * All drivers check API availability (SSR-safe).
6
6
  */
7
7
  import type { PersistDriver } from "./types";
8
8
  /**
9
- * Драйвер на основе `window.localStorage`.
9
+ * Driver backed by `window.localStorage`.
10
10
  *
11
- * Безопасен для SSR: при отсутствии `localStorage` no-op.
11
+ * SSR-safe: no-op when `localStorage` is unavailable.
12
12
  *
13
13
  * @example
14
14
  * ```ts
@@ -19,9 +19,9 @@ import type { PersistDriver } from "./types";
19
19
  */
20
20
  export declare const localStorageDriver: PersistDriver;
21
21
  /**
22
- * Драйвер на основе `window.sessionStorage`.
22
+ * Driver backed by `window.sessionStorage`.
23
23
  *
24
- * Данные сохраняются до закрытия вкладки/окна.
24
+ * Data survives until the tab/window is closed.
25
25
  *
26
26
  * @example
27
27
  * ```ts
@@ -1,14 +1,14 @@
1
1
  /**
2
- * Встроенные драйверы хранения для persist.
2
+ * Built-in storage drivers for persist.
3
3
  *
4
- * Каждый драйвер реализует интерфейс PersistDriver.
5
- * Все драйверы проверяют доступность API (SSR-совместимо).
4
+ * Each driver implements the PersistDriver interface.
5
+ * All drivers check API availability (SSR-safe).
6
6
  */
7
7
  // ─── localStorage ────────────────────────────────────────────────────────────
8
8
  /**
9
- * Драйвер на основе `window.localStorage`.
9
+ * Driver backed by `window.localStorage`.
10
10
  *
11
- * Безопасен для SSR: при отсутствии `localStorage` no-op.
11
+ * SSR-safe: no-op when `localStorage` is unavailable.
12
12
  *
13
13
  * @example
14
14
  * ```ts
@@ -32,7 +32,7 @@ export const localStorageDriver = {
32
32
  localStorage.setItem(key, value);
33
33
  }
34
34
  catch {
35
- // Quota exceeded или private mode — молчим
35
+ // Quota exceeded or private mode — stay silent
36
36
  }
37
37
  },
38
38
  removeItem(key) {
@@ -47,9 +47,9 @@ export const localStorageDriver = {
47
47
  };
48
48
  // ─── sessionStorage ──────────────────────────────────────────────────────────
49
49
  /**
50
- * Драйвер на основе `window.sessionStorage`.
50
+ * Driver backed by `window.sessionStorage`.
51
51
  *
52
- * Данные сохраняются до закрытия вкладки/окна.
52
+ * Data survives until the tab/window is closed.
53
53
  *
54
54
  * @example
55
55
  * ```ts
@@ -1 +1 @@
1
- {"version":3,"file":"drivers.js","sourceRoot":"","sources":["../../../store/persist/drivers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkB;IAC/C,OAAO,CAAC,GAAW;QACjB,IAAI,CAAC;YACH,OAAO,OAAO,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAW,EAAE,KAAa;QAChC,IAAI,CAAC;YACH,IAAI,OAAO,YAAY,KAAK,WAAW;gBAAE,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5E,CAAC;QAAC,MAAM,CAAC;YACP,2CAA2C;QAC7C,CAAC;IACH,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,IAAI,CAAC;YACH,IAAI,OAAO,YAAY,KAAK,WAAW;gBAAE,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;IACH,CAAC;CACF,CAAC;AAEF,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAkB;IACjD,OAAO,CAAC,GAAW;QACjB,IAAI,CAAC;YACH,OAAO,OAAO,cAAc,KAAK,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAW,EAAE,KAAa;QAChC,IAAI,CAAC;YACH,IAAI,OAAO,cAAc,KAAK,WAAW;gBAAE,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;IACH,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,IAAI,CAAC;YACH,IAAI,OAAO,cAAc,KAAK,WAAW;gBAAE,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC5E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"drivers.js","sourceRoot":"","sources":["../../../store/persist/drivers.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAkB;IAC/C,OAAO,CAAC,GAAW;QACjB,IAAI,CAAC;YACH,OAAO,OAAO,YAAY,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAChF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAW,EAAE,KAAa;QAChC,IAAI,CAAC;YACH,IAAI,OAAO,YAAY,KAAK,WAAW;gBAAE,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAC5E,CAAC;QAAC,MAAM,CAAC;YACP,+CAA+C;QACjD,CAAC;IACH,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,IAAI,CAAC;YACH,IAAI,OAAO,YAAY,KAAK,WAAW;gBAAE,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QACxE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;IACH,CAAC;CACF,CAAC;AAEF,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAkB;IACjD,OAAO,CAAC,GAAW;QACjB,IAAI,CAAC;YACH,OAAO,OAAO,cAAc,KAAK,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAW,EAAE,KAAa;QAChC,IAAI,CAAC;YACH,IAAI,OAAO,cAAc,KAAK,WAAW;gBAAE,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QAChF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;IACH,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,IAAI,CAAC;YACH,IAAI,OAAO,cAAc,KAAK,WAAW;gBAAE,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAC5E,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Persist module — публичный barrel-экспорт.
2
+ * Persist module — public barrel export.
3
3
  */
4
4
  export type { PersistDriver, PersistOptions } from "./types";
5
5
  export { PersistManager } from "./persistManager";
@@ -1,20 +1,20 @@
1
1
  /**
2
- * PersistManager — управляет гидратацией и автосохранением состояния формы.
2
+ * PersistManager — manages hydration and auto-saving of form state.
3
3
  *
4
- * Инстанцируется внутри Palistor.
5
- * Не зависит от React — может быть подключён из любого окружения.
4
+ * Instantiated inside Palistor.
5
+ * React-independentcan be wired up from any environment.
6
6
  *
7
- * Жизненный цикл:
8
- * 1. Создаётся при new Palistor(...) (неактивен).
9
- * 2. Активируется через enable(options) — гидратация + auto-save.
10
- * 3. Деактивируется через disable() — отписка от store, отмена таймеров.
7
+ * Lifecycle:
8
+ * 1. Created by new Palistor(...) (inactive).
9
+ * 2. Activated via enable(options) — hydration + auto-save.
10
+ * 3. Deactivated via disable() — unsubscribes from the store, cancels timers.
11
11
  */
12
12
  import type { PersistOptions } from "./types";
13
13
  import type { Palistor } from "../store/palistor";
14
14
  /**
15
- * Менеджер персистенции формы.
15
+ * The form's persistence manager.
16
16
  *
17
- * Получает доступ ко всем данным формы через `kernel` (Palistor instance).
17
+ * Accesses all form data through the `kernel` (Palistor instance).
18
18
  */
19
19
  export declare class PersistManager {
20
20
  private readonly kernel;
@@ -26,42 +26,42 @@ export declare class PersistManager {
26
26
  private debounceMs;
27
27
  private pickFields;
28
28
  private omitFields;
29
- /** Отписка от subscribeGlobal. */
29
+ /** Unsubscribe from subscribeGlobal. */
30
30
  private unsubscribe;
31
- /** ID таймера debounce. */
31
+ /** Debounce timer ID. */
32
32
  private debounceTimer;
33
- /** Флаг, предотвращающий сохранение во время гидратации. */
33
+ /** Flag preventing saves during hydration. */
34
34
  private isHydrating;
35
35
  constructor(kernel: Palistor<any, any>);
36
36
  private cancelDebounce;
37
37
  /**
38
- * Сохранить текущие значения в storage (без debounce).
38
+ * Save the current values to storage (no debounce).
39
39
  */
40
40
  private saveToStorage;
41
41
  /**
42
- * Запланировать сохранение с debounce.
42
+ * Schedule a debounced save.
43
43
  */
44
44
  private scheduleSave;
45
45
  /**
46
- * Прочитать из storage и применить значения к nodeState.
46
+ * Read from storage and apply the values to nodeState.
47
47
  */
48
48
  private hydrateFromStorage;
49
49
  /**
50
- * Активировать персистенцию: гидратация из storage + auto-save при изменениях.
50
+ * Activate persistence: hydrate from storage + auto-save on changes.
51
51
  *
52
- * Если persist уже активен предыдущий отключается.
53
- * Возвращает Promise, который резолвится после успешной гидратации.
52
+ * When persist is already active, the previous one is disabled first.
53
+ * Returns a Promise that resolves after successful hydration.
54
54
  */
55
55
  enable(options: PersistOptions): Promise<void>;
56
- /** Деактивировать: отписка от store, отмена таймеров, очистка состояния. */
56
+ /** Deactivate: unsubscribe from the store, cancel timers, clear state. */
57
57
  disable(): void;
58
- /** Принудительно сохранить текущие значения в storage (без debounce). */
58
+ /** Force-save the current values to storage (no debounce). */
59
59
  flush(): Promise<void>;
60
- /** Принудительно гидратировать из storage. */
60
+ /** Force-hydrate from storage. */
61
61
  hydrate(): Promise<void>;
62
- /** Удалить данные из storage по текущему ключу. */
62
+ /** Remove the data from storage under the current key. */
63
63
  clear(): Promise<void>;
64
- /** Активна ли персистенция в данный момент. */
64
+ /** Whether persistence is currently active. */
65
65
  isEnabled(): boolean;
66
66
  }
67
67
  //# sourceMappingURL=persistManager.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"persistManager.d.ts","sourceRoot":"","sources":["../../../store/persist/persistManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,SAAS,CAAC;AAG7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAiDlD;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAI5C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,SAAS,CAA0D;IAC3E,OAAO,CAAC,WAAW,CAAwD;IAC3E,OAAO,CAAC,UAAU,CAAO;IACzB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,UAAU,CAAuB;IAEzC,kCAAkC;IAClC,OAAO,CAAC,WAAW,CAA6B;IAEhD,2BAA2B;IAC3B,OAAO,CAAC,aAAa,CAA8C;IAEnE,4DAA4D;IAC5D,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAMtC,OAAO,CAAC,cAAc;IAOtB;;OAEG;YACW,aAAa;IAmB3B;;OAEG;IACH,OAAO,CAAC,YAAY,CAclB;IAEF;;OAEG;YACW,kBAAkB;IAsEhC;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB9C,4EAA4E;IAC5E,OAAO,IAAI,IAAI;IAaf,yEAAyE;IACnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,8CAA8C;IACxC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,mDAAmD;IAC7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B,+CAA+C;IAC/C,SAAS,IAAI,OAAO;CAGrB"}
1
+ {"version":3,"file":"persistManager.d.ts","sourceRoot":"","sources":["../../../store/persist/persistManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,SAAS,CAAC;AAG7D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAiDlD;;;;GAIG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAI5C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,aAAa,CAA8B;IACnD,OAAO,CAAC,SAAS,CAA0D;IAC3E,OAAO,CAAC,WAAW,CAAwD;IAC3E,OAAO,CAAC,UAAU,CAAO;IACzB,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,UAAU,CAAuB;IAEzC,wCAAwC;IACxC,OAAO,CAAC,WAAW,CAA6B;IAEhD,yBAAyB;IACzB,OAAO,CAAC,aAAa,CAA8C;IAEnE,8CAA8C;IAC9C,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAMtC,OAAO,CAAC,cAAc;IAOtB;;OAEG;YACW,aAAa;IAmB3B;;OAEG;IACH,OAAO,CAAC,YAAY,CAclB;IAEF;;OAEG;YACW,kBAAkB;IAsEhC;;;;;OAKG;IACH,MAAM,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAqB9C,0EAA0E;IAC1E,OAAO,IAAI,IAAI;IAaf,8DAA8D;IACxD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,kCAAkC;IAC5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAI9B,0DAA0D;IACpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B,+CAA+C;IAC/C,SAAS,IAAI,OAAO;CAGrB"}