palistor 0.0.24

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 (431) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +947 -0
  3. package/dist/index.d.ts +54 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +58 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/react/createTrackingProxy.d.ts +55 -0
  8. package/dist/react/createTrackingProxy.d.ts.map +1 -0
  9. package/dist/react/createTrackingProxy.js +149 -0
  10. package/dist/react/createTrackingProxy.js.map +1 -0
  11. package/dist/react/useForm.d.ts +108 -0
  12. package/dist/react/useForm.d.ts.map +1 -0
  13. package/dist/react/useForm.js +180 -0
  14. package/dist/react/useForm.js.map +1 -0
  15. package/dist/react/useNotifier.d.ts +35 -0
  16. package/dist/react/useNotifier.d.ts.map +1 -0
  17. package/dist/react/useNotifier.js +41 -0
  18. package/dist/react/useNotifier.js.map +1 -0
  19. package/dist/react/usePersist.d.ts +45 -0
  20. package/dist/react/usePersist.d.ts.map +1 -0
  21. package/dist/react/usePersist.js +60 -0
  22. package/dist/react/usePersist.js.map +1 -0
  23. package/dist/react/useStoreContext.d.ts +42 -0
  24. package/dist/react/useStoreContext.d.ts.map +1 -0
  25. package/dist/react/useStoreContext.js +46 -0
  26. package/dist/react/useStoreContext.js.map +1 -0
  27. package/dist/react/useTranslator.d.ts +37 -0
  28. package/dist/react/useTranslator.d.ts.map +1 -0
  29. package/dist/react/useTranslator.js +43 -0
  30. package/dist/react/useTranslator.js.map +1 -0
  31. package/dist/store/applyPatch/applyPatch.d.ts +17 -0
  32. package/dist/store/applyPatch/applyPatch.d.ts.map +1 -0
  33. package/dist/store/applyPatch/applyPatch.js +44 -0
  34. package/dist/store/applyPatch/applyPatch.js.map +1 -0
  35. package/dist/store/buildProxy/buildEntityProjectionProxy.d.ts +52 -0
  36. package/dist/store/buildProxy/buildEntityProjectionProxy.d.ts.map +1 -0
  37. package/dist/store/buildProxy/buildEntityProjectionProxy.js +321 -0
  38. package/dist/store/buildProxy/buildEntityProjectionProxy.js.map +1 -0
  39. package/dist/store/buildProxy/buildListProxy.d.ts +33 -0
  40. package/dist/store/buildProxy/buildListProxy.d.ts.map +1 -0
  41. package/dist/store/buildProxy/buildListProxy.js +306 -0
  42. package/dist/store/buildProxy/buildListProxy.js.map +1 -0
  43. package/dist/store/buildProxy/buildProxy.d.ts +41 -0
  44. package/dist/store/buildProxy/buildProxy.d.ts.map +1 -0
  45. package/dist/store/buildProxy/buildProxy.js +380 -0
  46. package/dist/store/buildProxy/buildProxy.js.map +1 -0
  47. package/dist/store/buildProxy/computeProxyKeys.d.ts +15 -0
  48. package/dist/store/buildProxy/computeProxyKeys.d.ts.map +1 -0
  49. package/dist/store/buildProxy/computeProxyKeys.js +28 -0
  50. package/dist/store/buildProxy/computeProxyKeys.js.map +1 -0
  51. package/dist/store/buildProxy/handleLazyResolve.d.ts +10 -0
  52. package/dist/store/buildProxy/handleLazyResolve.d.ts.map +1 -0
  53. package/dist/store/buildProxy/handleLazyResolve.js +26 -0
  54. package/dist/store/buildProxy/handleLazyResolve.js.map +1 -0
  55. package/dist/store/buildProxy/initProxyCaches.d.ts +16 -0
  56. package/dist/store/buildProxy/initProxyCaches.d.ts.map +1 -0
  57. package/dist/store/buildProxy/initProxyCaches.js +17 -0
  58. package/dist/store/buildProxy/initProxyCaches.js.map +1 -0
  59. package/dist/store/compute/computeFieldState.d.ts +10 -0
  60. package/dist/store/compute/computeFieldState.d.ts.map +1 -0
  61. package/dist/store/compute/computeFieldState.js +53 -0
  62. package/dist/store/compute/computeFieldState.js.map +1 -0
  63. package/dist/store/compute/fieldStateChanged.d.ts +6 -0
  64. package/dist/store/compute/fieldStateChanged.d.ts.map +1 -0
  65. package/dist/store/compute/fieldStateChanged.js +20 -0
  66. package/dist/store/compute/fieldStateChanged.js.map +1 -0
  67. package/dist/store/compute/index.d.ts +7 -0
  68. package/dist/store/compute/index.d.ts.map +1 -0
  69. package/dist/store/compute/index.js +6 -0
  70. package/dist/store/compute/index.js.map +1 -0
  71. package/dist/store/compute/isEmpty.d.ts +6 -0
  72. package/dist/store/compute/isEmpty.d.ts.map +1 -0
  73. package/dist/store/compute/isEmpty.js +14 -0
  74. package/dist/store/compute/isEmpty.js.map +1 -0
  75. package/dist/store/compute/recompute/collectGroupComputeNodes.d.ts +11 -0
  76. package/dist/store/compute/recompute/collectGroupComputeNodes.d.ts.map +1 -0
  77. package/dist/store/compute/recompute/collectGroupComputeNodes.js +26 -0
  78. package/dist/store/compute/recompute/collectGroupComputeNodes.js.map +1 -0
  79. package/dist/store/compute/recompute/collectGroupLeafNodes.d.ts +11 -0
  80. package/dist/store/compute/recompute/collectGroupLeafNodes.d.ts.map +1 -0
  81. package/dist/store/compute/recompute/collectGroupLeafNodes.js +26 -0
  82. package/dist/store/compute/recompute/collectGroupLeafNodes.js.map +1 -0
  83. package/dist/store/compute/recompute/index.d.ts +7 -0
  84. package/dist/store/compute/recompute/index.d.ts.map +1 -0
  85. package/dist/store/compute/recompute/index.js +6 -0
  86. package/dist/store/compute/recompute/index.js.map +1 -0
  87. package/dist/store/compute/recompute/recomputeAndNotify.d.ts +8 -0
  88. package/dist/store/compute/recompute/recomputeAndNotify.d.ts.map +1 -0
  89. package/dist/store/compute/recompute/recomputeAndNotify.js +13 -0
  90. package/dist/store/compute/recompute/recomputeAndNotify.js.map +1 -0
  91. package/dist/store/compute/recompute/recomputeLeaves.d.ts +23 -0
  92. package/dist/store/compute/recompute/recomputeLeaves.d.ts.map +1 -0
  93. package/dist/store/compute/recompute/recomputeLeaves.js +77 -0
  94. package/dist/store/compute/recompute/recomputeLeaves.js.map +1 -0
  95. package/dist/store/compute/recompute/recomputeTargeted.d.ts +14 -0
  96. package/dist/store/compute/recompute/recomputeTargeted.d.ts.map +1 -0
  97. package/dist/store/compute/recompute/recomputeTargeted.js +50 -0
  98. package/dist/store/compute/recompute/recomputeTargeted.js.map +1 -0
  99. package/dist/store/compute/recompute/topologicalSortComputed.d.ts +16 -0
  100. package/dist/store/compute/recompute/topologicalSortComputed.d.ts.map +1 -0
  101. package/dist/store/compute/recompute/topologicalSortComputed.js +60 -0
  102. package/dist/store/compute/recompute/topologicalSortComputed.js.map +1 -0
  103. package/dist/store/compute/recompute/types.d.ts +24 -0
  104. package/dist/store/compute/recompute/types.d.ts.map +1 -0
  105. package/dist/store/compute/recompute/types.js +2 -0
  106. package/dist/store/compute/recompute/types.js.map +1 -0
  107. package/dist/store/compute/resolveFlag.d.ts +7 -0
  108. package/dist/store/compute/resolveFlag.d.ts.map +1 -0
  109. package/dist/store/compute/resolveFlag.js +12 -0
  110. package/dist/store/compute/resolveFlag.js.map +1 -0
  111. package/dist/store/compute/resolveString.d.ts +11 -0
  112. package/dist/store/compute/resolveString.d.ts.map +1 -0
  113. package/dist/store/compute/resolveString.js +18 -0
  114. package/dist/store/compute/resolveString.js.map +1 -0
  115. package/dist/store/compute/types.d.ts +37 -0
  116. package/dist/store/compute/types.d.ts.map +1 -0
  117. package/dist/store/compute/types.js +2 -0
  118. package/dist/store/compute/types.js.map +1 -0
  119. package/dist/store/constants.d.ts +83 -0
  120. package/dist/store/constants.d.ts.map +1 -0
  121. package/dist/store/constants.js +145 -0
  122. package/dist/store/constants.js.map +1 -0
  123. package/dist/store/defineFieldMapping.d.ts +41 -0
  124. package/dist/store/defineFieldMapping.d.ts.map +1 -0
  125. package/dist/store/defineFieldMapping.js +42 -0
  126. package/dist/store/defineFieldMapping.js.map +1 -0
  127. package/dist/store/defineList.d.ts +14 -0
  128. package/dist/store/defineList.d.ts.map +1 -0
  129. package/dist/store/defineList.js +7 -0
  130. package/dist/store/defineList.js.map +1 -0
  131. package/dist/store/dirtyTracking/captureInitialValues.d.ts +8 -0
  132. package/dist/store/dirtyTracking/captureInitialValues.d.ts.map +1 -0
  133. package/dist/store/dirtyTracking/captureInitialValues.js +16 -0
  134. package/dist/store/dirtyTracking/captureInitialValues.js.map +1 -0
  135. package/dist/store/dirtyTracking/collectInitialSnapshot.d.ts +10 -0
  136. package/dist/store/dirtyTracking/collectInitialSnapshot.d.ts.map +1 -0
  137. package/dist/store/dirtyTracking/collectInitialSnapshot.js +35 -0
  138. package/dist/store/dirtyTracking/collectInitialSnapshot.js.map +1 -0
  139. package/dist/store/dirtyTracking/index.d.ts +7 -0
  140. package/dist/store/dirtyTracking/index.d.ts.map +1 -0
  141. package/dist/store/dirtyTracking/index.js +6 -0
  142. package/dist/store/dirtyTracking/index.js.map +1 -0
  143. package/dist/store/dirtyTracking/isDirtyValue.d.ts +7 -0
  144. package/dist/store/dirtyTracking/isDirtyValue.d.ts.map +1 -0
  145. package/dist/store/dirtyTracking/isDirtyValue.js +25 -0
  146. package/dist/store/dirtyTracking/isDirtyValue.js.map +1 -0
  147. package/dist/store/dirtyTracking/mergeInitialValues.d.ts +11 -0
  148. package/dist/store/dirtyTracking/mergeInitialValues.d.ts.map +1 -0
  149. package/dist/store/dirtyTracking/mergeInitialValues.js +29 -0
  150. package/dist/store/dirtyTracking/mergeInitialValues.js.map +1 -0
  151. package/dist/store/dirtyTracking/recomputeDirtyTargeted.d.ts +17 -0
  152. package/dist/store/dirtyTracking/recomputeDirtyTargeted.d.ts.map +1 -0
  153. package/dist/store/dirtyTracking/recomputeDirtyTargeted.js +90 -0
  154. package/dist/store/dirtyTracking/recomputeDirtyTargeted.js.map +1 -0
  155. package/dist/store/dirtyTracking/setGroupRevalidate.d.ts +13 -0
  156. package/dist/store/dirtyTracking/setGroupRevalidate.d.ts.map +1 -0
  157. package/dist/store/dirtyTracking/setGroupRevalidate.js +32 -0
  158. package/dist/store/dirtyTracking/setGroupRevalidate.js.map +1 -0
  159. package/dist/store/entityRegistry/entityRegistry.d.ts +166 -0
  160. package/dist/store/entityRegistry/entityRegistry.d.ts.map +1 -0
  161. package/dist/store/entityRegistry/entityRegistry.js +402 -0
  162. package/dist/store/entityRegistry/entityRegistry.js.map +1 -0
  163. package/dist/store/entityRegistry/generateId.d.ts +7 -0
  164. package/dist/store/entityRegistry/generateId.d.ts.map +1 -0
  165. package/dist/store/entityRegistry/generateId.js +18 -0
  166. package/dist/store/entityRegistry/generateId.js.map +1 -0
  167. package/dist/store/entityRegistry/index.d.ts +4 -0
  168. package/dist/store/entityRegistry/index.d.ts.map +1 -0
  169. package/dist/store/entityRegistry/index.js +3 -0
  170. package/dist/store/entityRegistry/index.js.map +1 -0
  171. package/dist/store/entityRegistry/types.d.ts +50 -0
  172. package/dist/store/entityRegistry/types.d.ts.map +1 -0
  173. package/dist/store/entityRegistry/types.js +2 -0
  174. package/dist/store/entityRegistry/types.js.map +1 -0
  175. package/dist/store/fieldMapping.typecheck.d.ts +2 -0
  176. package/dist/store/fieldMapping.typecheck.d.ts.map +1 -0
  177. package/dist/store/fieldMapping.typecheck.js +71 -0
  178. package/dist/store/fieldMapping.typecheck.js.map +1 -0
  179. package/dist/store/groupDeps/createGroupDeps.d.ts +9 -0
  180. package/dist/store/groupDeps/createGroupDeps.d.ts.map +1 -0
  181. package/dist/store/groupDeps/createGroupDeps.js +29 -0
  182. package/dist/store/groupDeps/createGroupDeps.js.map +1 -0
  183. package/dist/store/groupDeps/createTrackingValues.d.ts +15 -0
  184. package/dist/store/groupDeps/createTrackingValues.d.ts.map +1 -0
  185. package/dist/store/groupDeps/createTrackingValues.js +39 -0
  186. package/dist/store/groupDeps/createTrackingValues.js.map +1 -0
  187. package/dist/store/groupDeps/getNodeGroupPath.d.ts +9 -0
  188. package/dist/store/groupDeps/getNodeGroupPath.d.ts.map +1 -0
  189. package/dist/store/groupDeps/getNodeGroupPath.js +20 -0
  190. package/dist/store/groupDeps/getNodeGroupPath.js.map +1 -0
  191. package/dist/store/groupDeps/getRecipientGroups.d.ts +5 -0
  192. package/dist/store/groupDeps/getRecipientGroups.d.ts.map +1 -0
  193. package/dist/store/groupDeps/getRecipientGroups.js +15 -0
  194. package/dist/store/groupDeps/getRecipientGroups.js.map +1 -0
  195. package/dist/store/groupDeps/groupDeps.d.ts +19 -0
  196. package/dist/store/groupDeps/groupDeps.d.ts.map +1 -0
  197. package/dist/store/groupDeps/groupDeps.js +19 -0
  198. package/dist/store/groupDeps/groupDeps.js.map +1 -0
  199. package/dist/store/groupDeps/index.d.ts +7 -0
  200. package/dist/store/groupDeps/index.d.ts.map +1 -0
  201. package/dist/store/groupDeps/index.js +7 -0
  202. package/dist/store/groupDeps/index.js.map +1 -0
  203. package/dist/store/groupDeps/pairKey.d.ts +7 -0
  204. package/dist/store/groupDeps/pairKey.d.ts.map +1 -0
  205. package/dist/store/groupDeps/pairKey.js +12 -0
  206. package/dist/store/groupDeps/pairKey.js.map +1 -0
  207. package/dist/store/groupDeps/resolveGroupByPath.d.ts +8 -0
  208. package/dist/store/groupDeps/resolveGroupByPath.d.ts.map +1 -0
  209. package/dist/store/groupDeps/resolveGroupByPath.js +19 -0
  210. package/dist/store/groupDeps/resolveGroupByPath.js.map +1 -0
  211. package/dist/store/init/createNotificationHub.d.ts +81 -0
  212. package/dist/store/init/createNotificationHub.d.ts.map +1 -0
  213. package/dist/store/init/createNotificationHub.js +149 -0
  214. package/dist/store/init/createNotificationHub.js.map +1 -0
  215. package/dist/store/init/createResolveManager.d.ts +166 -0
  216. package/dist/store/init/createResolveManager.d.ts.map +1 -0
  217. package/dist/store/init/createResolveManager.js +502 -0
  218. package/dist/store/init/createResolveManager.js.map +1 -0
  219. package/dist/store/init/initGroupSubmitting.d.ts +8 -0
  220. package/dist/store/init/initGroupSubmitting.d.ts.map +1 -0
  221. package/dist/store/init/initGroupSubmitting.js +39 -0
  222. package/dist/store/init/initGroupSubmitting.js.map +1 -0
  223. package/dist/store/normalizeConfig.d.ts +28 -0
  224. package/dist/store/normalizeConfig.d.ts.map +1 -0
  225. package/dist/store/normalizeConfig.js +76 -0
  226. package/dist/store/normalizeConfig.js.map +1 -0
  227. package/dist/store/onChangePipeline/computeFieldKey.d.ts +11 -0
  228. package/dist/store/onChangePipeline/computeFieldKey.d.ts.map +1 -0
  229. package/dist/store/onChangePipeline/computeFieldKey.js +18 -0
  230. package/dist/store/onChangePipeline/computeFieldKey.js.map +1 -0
  231. package/dist/store/onChangePipeline/findOnChangeAncestors.d.ts +8 -0
  232. package/dist/store/onChangePipeline/findOnChangeAncestors.d.ts.map +1 -0
  233. package/dist/store/onChangePipeline/findOnChangeAncestors.js +22 -0
  234. package/dist/store/onChangePipeline/findOnChangeAncestors.js.map +1 -0
  235. package/dist/store/onChangePipeline/onChangePipeline.d.ts +29 -0
  236. package/dist/store/onChangePipeline/onChangePipeline.d.ts.map +1 -0
  237. package/dist/store/onChangePipeline/onChangePipeline.js +99 -0
  238. package/dist/store/onChangePipeline/onChangePipeline.js.map +1 -0
  239. package/dist/store/persist/drivers.d.ts +34 -0
  240. package/dist/store/persist/drivers.d.ts.map +1 -0
  241. package/dist/store/persist/drivers.js +89 -0
  242. package/dist/store/persist/drivers.js.map +1 -0
  243. package/dist/store/persist/index.d.ts +7 -0
  244. package/dist/store/persist/index.d.ts.map +1 -0
  245. package/dist/store/persist/index.js +3 -0
  246. package/dist/store/persist/index.js.map +1 -0
  247. package/dist/store/persist/persistManager.d.ts +67 -0
  248. package/dist/store/persist/persistManager.d.ts.map +1 -0
  249. package/dist/store/persist/persistManager.js +198 -0
  250. package/dist/store/persist/persistManager.js.map +1 -0
  251. package/dist/store/persist/types.d.ts +66 -0
  252. package/dist/store/persist/types.d.ts.map +1 -0
  253. package/dist/store/persist/types.js +9 -0
  254. package/dist/store/persist/types.js.map +1 -0
  255. package/dist/store/resetPipeline/buildResetPatch.d.ts +11 -0
  256. package/dist/store/resetPipeline/buildResetPatch.d.ts.map +1 -0
  257. package/dist/store/resetPipeline/buildResetPatch.js +22 -0
  258. package/dist/store/resetPipeline/buildResetPatch.js.map +1 -0
  259. package/dist/store/resetPipeline/collectDefaults.d.ts +12 -0
  260. package/dist/store/resetPipeline/collectDefaults.d.ts.map +1 -0
  261. package/dist/store/resetPipeline/collectDefaults.js +31 -0
  262. package/dist/store/resetPipeline/collectDefaults.js.map +1 -0
  263. package/dist/store/resetPipeline/resetPipeline.d.ts +19 -0
  264. package/dist/store/resetPipeline/resetPipeline.d.ts.map +1 -0
  265. package/dist/store/resetPipeline/resetPipeline.js +49 -0
  266. package/dist/store/resetPipeline/resetPipeline.js.map +1 -0
  267. package/dist/store/resolvePipeline/applyPendingWrites.d.ts +26 -0
  268. package/dist/store/resolvePipeline/applyPendingWrites.d.ts.map +1 -0
  269. package/dist/store/resolvePipeline/applyPendingWrites.js +68 -0
  270. package/dist/store/resolvePipeline/applyPendingWrites.js.map +1 -0
  271. package/dist/store/resolvePipeline/createContextTrackingProxy.d.ts +16 -0
  272. package/dist/store/resolvePipeline/createContextTrackingProxy.d.ts.map +1 -0
  273. package/dist/store/resolvePipeline/createContextTrackingProxy.js +29 -0
  274. package/dist/store/resolvePipeline/createContextTrackingProxy.js.map +1 -0
  275. package/dist/store/resolvePipeline/createValuesTrackingProxy.d.ts +75 -0
  276. package/dist/store/resolvePipeline/createValuesTrackingProxy.d.ts.map +1 -0
  277. package/dist/store/resolvePipeline/createValuesTrackingProxy.js +128 -0
  278. package/dist/store/resolvePipeline/createValuesTrackingProxy.js.map +1 -0
  279. package/dist/store/resolvePipeline/executeEntityFieldResolve.d.ts +29 -0
  280. package/dist/store/resolvePipeline/executeEntityFieldResolve.d.ts.map +1 -0
  281. package/dist/store/resolvePipeline/executeEntityFieldResolve.js +218 -0
  282. package/dist/store/resolvePipeline/executeEntityFieldResolve.js.map +1 -0
  283. package/dist/store/resolvePipeline/executeListResolve.d.ts +32 -0
  284. package/dist/store/resolvePipeline/executeListResolve.d.ts.map +1 -0
  285. package/dist/store/resolvePipeline/executeListResolve.js +157 -0
  286. package/dist/store/resolvePipeline/executeListResolve.js.map +1 -0
  287. package/dist/store/resolvePipeline/executeResolve.d.ts +26 -0
  288. package/dist/store/resolvePipeline/executeResolve.d.ts.map +1 -0
  289. package/dist/store/resolvePipeline/executeResolve.js +201 -0
  290. package/dist/store/resolvePipeline/executeResolve.js.map +1 -0
  291. package/dist/store/resolvePipeline/findResolvesToRetrigger.d.ts +10 -0
  292. package/dist/store/resolvePipeline/findResolvesToRetrigger.d.ts.map +1 -0
  293. package/dist/store/resolvePipeline/findResolvesToRetrigger.js +29 -0
  294. package/dist/store/resolvePipeline/findResolvesToRetrigger.js.map +1 -0
  295. package/dist/store/resolvePipeline/index.d.ts +22 -0
  296. package/dist/store/resolvePipeline/index.d.ts.map +1 -0
  297. package/dist/store/resolvePipeline/index.js +18 -0
  298. package/dist/store/resolvePipeline/index.js.map +1 -0
  299. package/dist/store/resolvePipeline/initResolveStates.d.ts +41 -0
  300. package/dist/store/resolvePipeline/initResolveStates.d.ts.map +1 -0
  301. package/dist/store/resolvePipeline/initResolveStates.js +95 -0
  302. package/dist/store/resolvePipeline/initResolveStates.js.map +1 -0
  303. package/dist/store/resolvePipeline/resetResolveState.d.ts +8 -0
  304. package/dist/store/resolvePipeline/resetResolveState.d.ts.map +1 -0
  305. package/dist/store/resolvePipeline/resetResolveState.js +18 -0
  306. package/dist/store/resolvePipeline/resetResolveState.js.map +1 -0
  307. package/dist/store/resolvePipeline/types.d.ts +134 -0
  308. package/dist/store/resolvePipeline/types.d.ts.map +1 -0
  309. package/dist/store/resolvePipeline/types.js +54 -0
  310. package/dist/store/resolvePipeline/types.js.map +1 -0
  311. package/dist/store/store/NodeRegistry/index.d.ts +3 -0
  312. package/dist/store/store/NodeRegistry/index.d.ts.map +1 -0
  313. package/dist/store/store/NodeRegistry/index.js +2 -0
  314. package/dist/store/store/NodeRegistry/index.js.map +1 -0
  315. package/dist/store/store/NodeRegistry/nodeRegistry.d.ts +139 -0
  316. package/dist/store/store/NodeRegistry/nodeRegistry.d.ts.map +1 -0
  317. package/dist/store/store/NodeRegistry/nodeRegistry.js +255 -0
  318. package/dist/store/store/NodeRegistry/nodeRegistry.js.map +1 -0
  319. package/dist/store/store/NodeRegistry/nodeUtils.d.ts +17 -0
  320. package/dist/store/store/NodeRegistry/nodeUtils.d.ts.map +1 -0
  321. package/dist/store/store/NodeRegistry/nodeUtils.js +21 -0
  322. package/dist/store/store/NodeRegistry/nodeUtils.js.map +1 -0
  323. package/dist/store/store/NodeRegistry/nodeView.d.ts +28 -0
  324. package/dist/store/store/NodeRegistry/nodeView.d.ts.map +1 -0
  325. package/dist/store/store/NodeRegistry/nodeView.js +16 -0
  326. package/dist/store/store/NodeRegistry/nodeView.js.map +1 -0
  327. package/dist/store/store/dirtyTracker.d.ts +27 -0
  328. package/dist/store/store/dirtyTracker.d.ts.map +1 -0
  329. package/dist/store/store/dirtyTracker.js +38 -0
  330. package/dist/store/store/dirtyTracker.js.map +1 -0
  331. package/dist/store/store/groupDepsMap.d.ts +52 -0
  332. package/dist/store/store/groupDepsMap.d.ts.map +1 -0
  333. package/dist/store/store/groupDepsMap.js +84 -0
  334. package/dist/store/store/groupDepsMap.js.map +1 -0
  335. package/dist/store/store/hasComputedProps.d.ts +7 -0
  336. package/dist/store/store/hasComputedProps.d.ts.map +1 -0
  337. package/dist/store/store/hasComputedProps.js +15 -0
  338. package/dist/store/store/hasComputedProps.js.map +1 -0
  339. package/dist/store/store/index.d.ts +6 -0
  340. package/dist/store/store/index.d.ts.map +1 -0
  341. package/dist/store/store/index.js +3 -0
  342. package/dist/store/store/index.js.map +1 -0
  343. package/dist/store/store/nodeMap.d.ts +12 -0
  344. package/dist/store/store/nodeMap.d.ts.map +1 -0
  345. package/dist/store/store/nodeMap.js +30 -0
  346. package/dist/store/store/nodeMap.js.map +1 -0
  347. package/dist/store/store/palistor.d.ts +256 -0
  348. package/dist/store/store/palistor.d.ts.map +1 -0
  349. package/dist/store/store/palistor.js +772 -0
  350. package/dist/store/store/palistor.js.map +1 -0
  351. package/dist/store/store/registerNodes.d.ts +33 -0
  352. package/dist/store/store/registerNodes.d.ts.map +1 -0
  353. package/dist/store/store/registerNodes.js +88 -0
  354. package/dist/store/store/registerNodes.js.map +1 -0
  355. package/dist/store/store/serviceRegistry.d.ts +24 -0
  356. package/dist/store/store/serviceRegistry.d.ts.map +1 -0
  357. package/dist/store/store/serviceRegistry.js +32 -0
  358. package/dist/store/store/serviceRegistry.js.map +1 -0
  359. package/dist/store/store/types.d.ts +622 -0
  360. package/dist/store/store/types.d.ts.map +1 -0
  361. package/dist/store/store/types.js +2 -0
  362. package/dist/store/store/types.js.map +1 -0
  363. package/dist/store/submitPipeline/applyLeafBeforeSubmit.d.ts +7 -0
  364. package/dist/store/submitPipeline/applyLeafBeforeSubmit.d.ts.map +1 -0
  365. package/dist/store/submitPipeline/applyLeafBeforeSubmit.js +26 -0
  366. package/dist/store/submitPipeline/applyLeafBeforeSubmit.js.map +1 -0
  367. package/dist/store/submitPipeline/collectLeafStates.d.ts +11 -0
  368. package/dist/store/submitPipeline/collectLeafStates.d.ts.map +1 -0
  369. package/dist/store/submitPipeline/collectLeafStates.js +17 -0
  370. package/dist/store/submitPipeline/collectLeafStates.js.map +1 -0
  371. package/dist/store/submitPipeline/getSubValues.d.ts +9 -0
  372. package/dist/store/submitPipeline/getSubValues.d.ts.map +1 -0
  373. package/dist/store/submitPipeline/getSubValues.js +26 -0
  374. package/dist/store/submitPipeline/getSubValues.js.map +1 -0
  375. package/dist/store/submitPipeline/submitPipeline.d.ts +32 -0
  376. package/dist/store/submitPipeline/submitPipeline.d.ts.map +1 -0
  377. package/dist/store/submitPipeline/submitPipeline.js +119 -0
  378. package/dist/store/submitPipeline/submitPipeline.js.map +1 -0
  379. package/dist/store/submitPipeline/types.d.ts +12 -0
  380. package/dist/store/submitPipeline/types.d.ts.map +1 -0
  381. package/dist/store/submitPipeline/types.js +2 -0
  382. package/dist/store/submitPipeline/types.js.map +1 -0
  383. package/dist/store/traversal/index.d.ts +4 -0
  384. package/dist/store/traversal/index.d.ts.map +1 -0
  385. package/dist/store/traversal/index.js +3 -0
  386. package/dist/store/traversal/index.js.map +1 -0
  387. package/dist/store/traversal/nodeClassifier.d.ts +23 -0
  388. package/dist/store/traversal/nodeClassifier.d.ts.map +1 -0
  389. package/dist/store/traversal/nodeClassifier.js +46 -0
  390. package/dist/store/traversal/nodeClassifier.js.map +1 -0
  391. package/dist/store/traversal/walkFull.d.ts +33 -0
  392. package/dist/store/traversal/walkFull.d.ts.map +1 -0
  393. package/dist/store/traversal/walkFull.js +28 -0
  394. package/dist/store/traversal/walkFull.js.map +1 -0
  395. package/dist/store/valuesCache/valuesCache.d.ts +27 -0
  396. package/dist/store/valuesCache/valuesCache.d.ts.map +1 -0
  397. package/dist/store/valuesCache/valuesCache.js +58 -0
  398. package/dist/store/valuesCache/valuesCache.js.map +1 -0
  399. package/dist/store/writePipeline/formatPatch.d.ts +14 -0
  400. package/dist/store/writePipeline/formatPatch.d.ts.map +1 -0
  401. package/dist/store/writePipeline/formatPatch.js +35 -0
  402. package/dist/store/writePipeline/formatPatch.js.map +1 -0
  403. package/dist/store/writePipeline/formatValue.d.ts +12 -0
  404. package/dist/store/writePipeline/formatValue.d.ts.map +1 -0
  405. package/dist/store/writePipeline/formatValue.js +15 -0
  406. package/dist/store/writePipeline/formatValue.js.map +1 -0
  407. package/dist/store/writePipeline/index.d.ts +8 -0
  408. package/dist/store/writePipeline/index.d.ts.map +1 -0
  409. package/dist/store/writePipeline/index.js +7 -0
  410. package/dist/store/writePipeline/index.js.map +1 -0
  411. package/dist/store/writePipeline/mergeChanged.d.ts +9 -0
  412. package/dist/store/writePipeline/mergeChanged.d.ts.map +1 -0
  413. package/dist/store/writePipeline/mergeChanged.js +15 -0
  414. package/dist/store/writePipeline/mergeChanged.js.map +1 -0
  415. package/dist/store/writePipeline/runSetter.d.ts +16 -0
  416. package/dist/store/writePipeline/runSetter.d.ts.map +1 -0
  417. package/dist/store/writePipeline/runSetter.js +35 -0
  418. package/dist/store/writePipeline/runSetter.js.map +1 -0
  419. package/dist/store/writePipeline/storeValue.d.ts +11 -0
  420. package/dist/store/writePipeline/storeValue.d.ts.map +1 -0
  421. package/dist/store/writePipeline/storeValue.js +17 -0
  422. package/dist/store/writePipeline/storeValue.js.map +1 -0
  423. package/dist/store/writePipeline/types.d.ts +10 -0
  424. package/dist/store/writePipeline/types.d.ts.map +1 -0
  425. package/dist/store/writePipeline/types.js +2 -0
  426. package/dist/store/writePipeline/types.js.map +1 -0
  427. package/dist/store/writePipeline/writePipeline.d.ts +31 -0
  428. package/dist/store/writePipeline/writePipeline.d.ts.map +1 -0
  429. package/dist/store/writePipeline/writePipeline.js +97 -0
  430. package/dist/store/writePipeline/writePipeline.js.map +1 -0
  431. package/package.json +79 -0
@@ -0,0 +1,402 @@
1
+ import { generateTmpId } from "./generateId";
2
+ import { isLeafNode, isGroupNode } from "../traversal/nodeClassifier";
3
+ /**
4
+ * Создать новую EntityNode из плоского объекта данных.
5
+ * Каждое поле (кроме id) оборачивается в { value }.
6
+ * Поддерживает вложенные объекты — рекурсивно создаёт EntityGroupNode.
7
+ *
8
+ * @param data Плоский или вложенный объект данных
9
+ * @param id Строковый ID (обязателен на верхнем уровне)
10
+ */
11
+ export function createEntityNode(data, id) {
12
+ const node = { id: { value: id } };
13
+ node.id.__kind = "leaf";
14
+ for (const key of Object.keys(data)) {
15
+ if (key === "id")
16
+ continue;
17
+ const val = data[key];
18
+ if (val !== null && typeof val === "object" && !Array.isArray(val)) {
19
+ node[key] = createGroupNode(val);
20
+ }
21
+ else {
22
+ const leaf = { value: val };
23
+ leaf.__kind = "leaf";
24
+ node[key] = leaf;
25
+ }
26
+ }
27
+ // EntityNode root is a group container
28
+ node.__kind = "group";
29
+ return node;
30
+ }
31
+ /**
32
+ * Рекурсивно создать EntityGroupNode для вложенного объекта.
33
+ */
34
+ function createGroupNode(obj) {
35
+ const group = {};
36
+ for (const key of Object.keys(obj)) {
37
+ const val = obj[key];
38
+ if (val !== null && typeof val === "object" && !Array.isArray(val)) {
39
+ group[key] = createGroupNode(val);
40
+ }
41
+ else {
42
+ const leaf = { value: val };
43
+ leaf.__kind = "leaf";
44
+ group[key] = leaf;
45
+ }
46
+ }
47
+ group.__kind = "group";
48
+ return group;
49
+ }
50
+ /**
51
+ * Рекурсивный merge данных в существующую EntityNode.
52
+ *
53
+ * Правила:
54
+ * - Существующие leaf-поля: обновить `.value`
55
+ * - Новые поля: создать leaf `{ value }`
56
+ * - Отсутствующие поля: НЕ удалять
57
+ * - Вложенные объекты в data: рекурсивный merge в group
58
+ *
59
+ * @param target Существующая EntityNode или EntityGroupNode
60
+ * @param data Входные данные (flat или вложенные)
61
+ */
62
+ export function mergeEntityNode(target, data) {
63
+ for (const key of Object.keys(data)) {
64
+ if (key === "id")
65
+ continue;
66
+ const val = data[key];
67
+ const existing = target[key];
68
+ if (val !== null && typeof val === "object" && !Array.isArray(val)) {
69
+ // Вложенный объект
70
+ if (existing && typeof existing === "object" && isGroupNode(existing)) {
71
+ // Существующая группа → рекурсивный merge
72
+ mergeEntityNode(existing, val);
73
+ }
74
+ else if (existing && isLeafNode(existing)) {
75
+ // Был leaf, стал группой — заменяем (редкий случай)
76
+ target[key] = createGroupNode(val);
77
+ }
78
+ else {
79
+ // Новая группа
80
+ target[key] = createGroupNode(val);
81
+ }
82
+ }
83
+ else {
84
+ if (existing && isLeafNode(existing)) {
85
+ // Обновляем существующий leaf
86
+ existing.value = val;
87
+ }
88
+ else {
89
+ // Новый leaf
90
+ const leaf = { value: val };
91
+ leaf.__kind = "leaf";
92
+ target[key] = leaf;
93
+ }
94
+ }
95
+ }
96
+ }
97
+ /**
98
+ * Реестр сущностей.
99
+ *
100
+ * Полностью изолирован от Palistor: не имеет зависимостей на store.
101
+ * Хранит EntityNode-ы, bindings (template-привязки), resolved-кэш.
102
+ *
103
+ * @example
104
+ * const registry = new EntityRegistry();
105
+ * const entity = registry.upsert({ id: 'u1', name: 'Alice' });
106
+ * const node = registry.get('u1');
107
+ * registry.bind('u1', formTemplate);
108
+ */
109
+ export class EntityRegistry {
110
+ constructor() {
111
+ /** Основное хранилище: id → EntityNode */
112
+ this.entities = new Map();
113
+ /**
114
+ * Привязки entity к template-нодам.
115
+ * Один entity может быть привязан к нескольким templates.
116
+ */
117
+ this.bindings = new Map();
118
+ /**
119
+ * Кэш «resolve выполнен»: id → Set<templateNode>.
120
+ * Если templateNode есть в Set, resolve для этой пары можно пропустить.
121
+ */
122
+ this.resolvedCache = new Map();
123
+ /**
124
+ * Зарегистрированные ListState-объекты.
125
+ * Используются в rekey() для обновления itemIds при смене id entity.
126
+ * Структурный тип { itemIds: string[] } — не зависит от импорта ListState.
127
+ */
128
+ this.registeredLists = [];
129
+ /**
130
+ * Обратный индекс владения (вариант C): ownerId → Set<childId>.
131
+ * Заполняется `setEntityOwner` при заливке результатов child-list resolver-а.
132
+ * Нужен для каскадного удаления (C2); заводится с C1, чтобы owner-link
133
+ * регистрировался с самого начала.
134
+ */
135
+ this.childrenByOwner = new Map();
136
+ }
137
+ // ─── CRUD ──────────────────────────────────────────────────────────────
138
+ /**
139
+ * Создать или обновить entity.
140
+ *
141
+ * - Если entity с таким id не существует — создаётся новая EntityNode.
142
+ * - Если существует — рекурсивный merge (существующие поля обновляются,
143
+ * новые добавляются, отсутствующие в data не удаляются).
144
+ * - Если id не указан или пустой — генерируется `_tmp_` id.
145
+ *
146
+ * @returns Итоговая EntityNode
147
+ */
148
+ upsert(data) {
149
+ const id = data.id && typeof data.id === "string" && data.id.trim() !== ""
150
+ ? data.id
151
+ : generateTmpId();
152
+ const existing = this.entities.get(id);
153
+ if (existing) {
154
+ mergeEntityNode(existing, { ...data, id });
155
+ return existing;
156
+ }
157
+ const node = createEntityNode(data, id);
158
+ this.entities.set(id, node);
159
+ return node;
160
+ }
161
+ /**
162
+ * Получить EntityNode по id.
163
+ * Возвращает undefined, если entity не найдена.
164
+ */
165
+ get(id) {
166
+ return this.entities.get(id);
167
+ }
168
+ /**
169
+ * Удалить entity по id.
170
+ * Очищает все bindings и resolvedCache для этого id.
171
+ *
172
+ * @returns true, если entity существовала и была удалена
173
+ */
174
+ delete(id) {
175
+ const existed = this.entities.has(id);
176
+ const node = this.entities.get(id);
177
+ this.entities.delete(id);
178
+ this.bindings.delete(id);
179
+ this.resolvedCache.delete(id);
180
+ // Очистить per-entity списки владельца (C2): EntityListState-объекты больше
181
+ // не нужны — entity удалена. Сам каскад по child-id выполняет Palistor.delete.
182
+ node?.lists?.clear();
183
+ // Очистить owner-индекс: запись этой entity как владельца …
184
+ this.childrenByOwner.delete(id);
185
+ // … и её членство в множестве своего владельца (если это child).
186
+ const ownerId = node?.owner?.ownerId;
187
+ if (ownerId)
188
+ this.childrenByOwner.get(ownerId)?.delete(id);
189
+ return existed;
190
+ }
191
+ /** Количество зарегистрированных entities. */
192
+ get size() {
193
+ return this.entities.size;
194
+ }
195
+ /** Проверить наличие entity. */
196
+ has(id) {
197
+ return this.entities.has(id);
198
+ }
199
+ // ─── Per-entity nested lists (вариант C) ──────────────────────────────────
200
+ /**
201
+ * Получить (или лениво создать) EntityListState для пары (entity, listConfigNode).
202
+ *
203
+ * `entity.lists` создаётся при первом обращении как **non-enumerable** поле,
204
+ * чтобы не протекать в плоские values через `Object.keys`.
205
+ */
206
+ getOrCreateEntityListState(entity, listConfigNode) {
207
+ let lists = entity.lists;
208
+ if (!lists) {
209
+ lists = new Map();
210
+ Object.defineProperty(entity, "lists", {
211
+ value: lists,
212
+ enumerable: false,
213
+ writable: true,
214
+ configurable: true,
215
+ });
216
+ }
217
+ let state = lists.get(listConfigNode);
218
+ if (!state) {
219
+ const arr = listConfigNode;
220
+ state = {
221
+ listConfigNode,
222
+ template: arr[0],
223
+ listConfig: arr.length > 1 ? arr[1] : undefined,
224
+ ownerEntity: entity,
225
+ itemIds: [],
226
+ initialItemIds: [],
227
+ };
228
+ lists.set(listConfigNode, state);
229
+ }
230
+ return state;
231
+ }
232
+ /**
233
+ * Проставить owner-ссылку на child-entity (**non-enumerable**) и
234
+ * проиндексировать её в `childrenByOwner`.
235
+ *
236
+ * Модель «один владелец на child» (C2, Q3): если child уже принадлежал
237
+ * другому владельцу — снимаем устаревшее членство, чтобы каскадное удаление
238
+ * старого владельца не затронуло уже переадресованного child-а.
239
+ */
240
+ setEntityOwner(child, ownerId, ownerListNode) {
241
+ const childId = child.id.value;
242
+ const prevOwnerId = child.owner?.ownerId;
243
+ if (prevOwnerId && prevOwnerId !== ownerId) {
244
+ this.childrenByOwner.get(prevOwnerId)?.delete(childId);
245
+ }
246
+ Object.defineProperty(child, "owner", {
247
+ value: { ownerId, ownerListNode },
248
+ enumerable: false,
249
+ writable: true,
250
+ configurable: true,
251
+ });
252
+ let set = this.childrenByOwner.get(ownerId);
253
+ if (!set) {
254
+ set = new Set();
255
+ this.childrenByOwner.set(ownerId, set);
256
+ }
257
+ set.add(childId);
258
+ }
259
+ /** Получить ID всех child-entity, принадлежащих владельцу. */
260
+ getChildrenByOwner(ownerId) {
261
+ return this.childrenByOwner.get(ownerId);
262
+ }
263
+ /**
264
+ * Восстановить состав всех per-entity списков к initial-снимку (C2 reset).
265
+ *
266
+ * Возвращает затронутые пары `{ owner, state }`, чтобы вызывающий код
267
+ * (resetPipeline) бампнул версии узлов в хабе → React перерисует списки —
268
+ * и пересинхронизировал projectionObj владельца для getValues (C3).
269
+ */
270
+ resetEntityListStates() {
271
+ const affected = [];
272
+ for (const entity of this.entities.values()) {
273
+ const lists = entity.lists;
274
+ if (!lists)
275
+ continue;
276
+ for (const state of lists.values()) {
277
+ state.itemIds = [...state.initialItemIds];
278
+ affected.push({ owner: entity, state });
279
+ }
280
+ }
281
+ return affected;
282
+ }
283
+ // ─── Bindings ──────────────────────────────────────────────────────────
284
+ /**
285
+ * Привязать entity к template-ноде.
286
+ * Один entity может быть привязан к нескольким templates.
287
+ */
288
+ bind(id, templateNode) {
289
+ let set = this.bindings.get(id);
290
+ if (!set) {
291
+ set = new Set();
292
+ this.bindings.set(id, set);
293
+ }
294
+ set.add(templateNode);
295
+ }
296
+ /**
297
+ * Отвязать entity от template-ноды.
298
+ * Если entity не привязана к этому template — no-op.
299
+ */
300
+ unbind(id, templateNode) {
301
+ this.bindings.get(id)?.delete(templateNode);
302
+ }
303
+ /**
304
+ * Получить все template-ноды, привязанные к entity.
305
+ * Возвращает undefined, если привязок нет.
306
+ */
307
+ getBindings(id) {
308
+ return this.bindings.get(id);
309
+ }
310
+ // ─── Resolved cache ────────────────────────────────────────────────────
311
+ /**
312
+ * Пометить пару (entityId, templateNode) как «resolve выполнен».
313
+ * Повторный resolve для этой пары будет пропущен.
314
+ */
315
+ markResolved(id, templateNode) {
316
+ let set = this.resolvedCache.get(id);
317
+ if (!set) {
318
+ set = new Set();
319
+ this.resolvedCache.set(id, set);
320
+ }
321
+ set.add(templateNode);
322
+ }
323
+ /**
324
+ * Проверить, был ли resolve выполнен для пары (entityId, templateNode).
325
+ */
326
+ isResolved(id, templateNode) {
327
+ return this.resolvedCache.get(id)?.has(templateNode) ?? false;
328
+ }
329
+ /**
330
+ * Сбросить resolved-кэш:
331
+ * - `clearResolved(id)` — очистить весь кэш для entity
332
+ * - `clearResolved(id, templateNode)` — очистить только для конкретного template
333
+ */
334
+ clearResolved(id, templateNode) {
335
+ if (templateNode === undefined) {
336
+ this.resolvedCache.delete(id);
337
+ }
338
+ else {
339
+ this.resolvedCache.get(id)?.delete(templateNode);
340
+ }
341
+ }
342
+ // ─── Re-keying ─────────────────────────────────────────────────────────
343
+ /**
344
+ * Переименовать entity: перенести запись с oldId на newId.
345
+ *
346
+ * Обновляет: entities Map, bindings, resolvedCache, id leaf value,
347
+ * и itemIds в всех зарегистрированных ListState-объектах.
348
+ *
349
+ * No-op если entity с oldId не существует.
350
+ */
351
+ rekey(oldId, newId) {
352
+ const entity = this.entities.get(oldId);
353
+ if (!entity)
354
+ return;
355
+ // Обновить id leaf value
356
+ entity.id.value = newId;
357
+ // Переместить в Map
358
+ this.entities.delete(oldId);
359
+ this.entities.set(newId, entity);
360
+ // Переместить bindings
361
+ const binds = this.bindings.get(oldId);
362
+ if (binds) {
363
+ this.bindings.delete(oldId);
364
+ this.bindings.set(newId, binds);
365
+ }
366
+ // Переместить resolvedCache
367
+ const resolved = this.resolvedCache.get(oldId);
368
+ if (resolved) {
369
+ this.resolvedCache.delete(oldId);
370
+ this.resolvedCache.set(newId, resolved);
371
+ }
372
+ // Обновить itemIds во всех зарегистрированных ListState-объектах
373
+ for (const list of this.registeredLists) {
374
+ const idx = list.itemIds.indexOf(oldId);
375
+ if (idx >= 0)
376
+ list.itemIds[idx] = newId;
377
+ }
378
+ // Перенести owner-индекс: запись entity как владельца …
379
+ const owned = this.childrenByOwner.get(oldId);
380
+ if (owned) {
381
+ this.childrenByOwner.delete(oldId);
382
+ this.childrenByOwner.set(newId, owned);
383
+ }
384
+ // … и её членство в множестве своего владельца (как child).
385
+ const ownerId = entity.owner?.ownerId;
386
+ if (ownerId) {
387
+ const set = this.childrenByOwner.get(ownerId);
388
+ if (set?.has(oldId)) {
389
+ set.delete(oldId);
390
+ set.add(newId);
391
+ }
392
+ }
393
+ }
394
+ /**
395
+ * Зарегистрировать ListState для автоматического обновления itemIds при rekey().
396
+ * Вызывается из Palistor после инициализации NodeRegistry.
397
+ */
398
+ registerList(list) {
399
+ this.registeredLists.push(list);
400
+ }
401
+ }
402
+ //# sourceMappingURL=entityRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityRegistry.js","sourceRoot":"","sources":["../../../store/entityRegistry/entityRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Генерирует временный ID с префиксом `_tmp_`.
3
+ * Используется при upsert entity без явного id.
4
+ * Формат: _tmp_<timestamp_base36>_<8 random chars>_<seq>
5
+ */
6
+ export declare function generateTmpId(): string;
7
+ //# sourceMappingURL=generateId.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateId.d.ts","sourceRoot":"","sources":["../../../store/entityRegistry/generateId.ts"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAEtC"}
@@ -0,0 +1,18 @@
1
+ const CHARS = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
2
+ function randomStr(len) {
3
+ let result = '';
4
+ for (let i = 0; i < len; i++) {
5
+ result += CHARS[Math.floor(Math.random() * CHARS.length)];
6
+ }
7
+ return result;
8
+ }
9
+ let seq = 0;
10
+ /**
11
+ * Генерирует временный ID с префиксом `_tmp_`.
12
+ * Используется при upsert entity без явного id.
13
+ * Формат: _tmp_<timestamp_base36>_<8 random chars>_<seq>
14
+ */
15
+ export function generateTmpId() {
16
+ return `_tmp_${Date.now().toString(36)}_${randomStr(8)}_${++seq}`;
17
+ }
18
+ //# sourceMappingURL=generateId.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generateId.js","sourceRoot":"","sources":["../../../store/entityRegistry/generateId.ts"],"names":[],"mappings":"AAAA,MAAM,KAAK,GAAG,gEAAgE,CAAC;AAE/E,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,IAAI,GAAG,GAAG,CAAC,CAAC;AAEZ;;;;GAIG;AACH,MAAM,UAAU,aAAa;IAC3B,OAAO,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC;AACpE,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { EntityRegistry } from "./entityRegistry";
2
+ export type { EntityNode, EntityGroupNode, EntityLeafNode, EntityData } from "./types";
3
+ export { generateTmpId } from "./generateId";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../store/entityRegistry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { EntityRegistry } from "./entityRegistry";
2
+ export { generateTmpId } from "./generateId";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../store/entityRegistry/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,50 @@
1
+ import type { ListState } from "../store/types";
2
+ /**
3
+ * Leaf-нода entity: минимальный объект со значением.
4
+ * Совместим с AnyConfigNode leaf (имеет "value").
5
+ */
6
+ export interface EntityLeafNode {
7
+ value: unknown;
8
+ }
9
+ /**
10
+ * Группа leaf-нод внутри entity.
11
+ * Рекурсивная: поддерживает вложенные группы (e.g. user.passport).
12
+ *
13
+ * Index-сигнатура расширена meta-членами (`lists`/`owner`) варианта C, чтобы
14
+ * EntityNode мог объявить их как именованные поля без конфликта TS2411.
15
+ * На рантайме они non-enumerable и встречаются только на корневых EntityNode.
16
+ */
17
+ export interface EntityGroupNode {
18
+ [key: string]: EntityLeafNode | EntityGroupNode | Map<object, ListState> | {
19
+ ownerId: string;
20
+ ownerListNode: object;
21
+ } | undefined;
22
+ }
23
+ /**
24
+ * Корневая нода entity.
25
+ * Обязательно содержит id-лист и произвольные поля (leaf или group).
26
+ *
27
+ * Поля `lists` и `owner` ОБЯЗАТЕЛЬНО non-enumerable (присваиваются через
28
+ * Object.defineProperty в EntityRegistry) — иначе `buildEntityValues`
29
+ * и любые `Object.keys(entityNode)`-обходы утянут их в плоские values
30
+ * резолверов/computed.
31
+ */
32
+ export interface EntityNode extends EntityGroupNode {
33
+ id: EntityLeafNode;
34
+ /** Map<listConfigNode, ListState> (per-entity, ownerEntity!==null). Лениво. NON-ENUMERABLE. */
35
+ lists?: Map<object, ListState>;
36
+ /** Owner-ссылка для child-entity (проставляется при заливке resolver-результата). NON-ENUMERABLE. */
37
+ owner?: {
38
+ ownerId: string;
39
+ ownerListNode: object;
40
+ };
41
+ }
42
+ /**
43
+ * Плоский объект данных, передаваемый в upsert/set.
44
+ * id — обязательный строковый ключ.
45
+ */
46
+ export type EntityData = {
47
+ id?: string;
48
+ [key: string]: unknown;
49
+ };
50
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../store/entityRegistry/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;CAChB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GACR,cAAc,GACd,eAAe,GACf,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,GACtB;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,GAC1C,SAAS,CAAC;CACf;AAGD;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAW,SAAQ,eAAe;IACjD,EAAE,EAAE,cAAc,CAAC;IACnB,+FAA+F;IAC/F,KAAK,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,qGAAqG;IACrG,KAAK,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;CACpD;AAED;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../store/entityRegistry/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fieldMapping.typecheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldMapping.typecheck.d.ts","sourceRoot":"","sources":["../../store/fieldMapping.typecheck.ts"],"names":[],"mappings":""}
@@ -0,0 +1,71 @@
1
+ // Compile-time проверки Phase 2 (валидатор external-config + strict).
2
+ // Файл ВРЕМЕННЫЙ — используется для ручной валидации типов, потом удаляется.
3
+ import { Palistor } from "./store";
4
+ import { defineFieldMapping } from "./defineFieldMapping";
5
+ const uiMapping = defineFieldMapping({
6
+ isRequired: "required",
7
+ isDisabled: "disabled",
8
+ isReadOnly: "readOnly",
9
+ isInvalid: "error",
10
+ errorMessage: "helperText",
11
+ description: "helpText",
12
+ });
13
+ // 1) чистый external-конфиг → компилируется
14
+ new Palistor({
15
+ fieldMapping: uiMapping,
16
+ config: {
17
+ email: {
18
+ value: "",
19
+ label: "Email",
20
+ required: true,
21
+ helpText: "hi",
22
+ validate: (v) => (v ? undefined : "req"),
23
+ },
24
+ profile: { firstName: { value: "Jane", required: false } },
25
+ },
26
+ });
27
+ // 2) internal-имя ремапленного ключа → ОШИБКА
28
+ new Palistor({
29
+ fieldMapping: uiMapping,
30
+ config: {
31
+ // @ts-expect-error write "required" instead of internal "isRequired"
32
+ email: { value: "", isRequired: true },
33
+ },
34
+ });
35
+ // 3) вложенная группа: internal-имя → ОШИБКА
36
+ new Palistor({
37
+ fieldMapping: uiMapping,
38
+ config: {
39
+ passport: {
40
+ // @ts-expect-error write "disabled" instead of internal "isDisabled"
41
+ number: { value: "", isDisabled: true },
42
+ },
43
+ },
44
+ });
45
+ // 4) list-шаблон: internal-имя → ОШИБКА
46
+ new Palistor({
47
+ fieldMapping: uiMapping,
48
+ config: {
49
+ users: [
50
+ // @ts-expect-error write "required" instead of internal "isRequired"
51
+ { id: { value: "" }, name: { value: "", isRequired: true } },
52
+ { resolve: { resolver: async () => [] } },
53
+ ],
54
+ },
55
+ });
56
+ // 5) без fieldMapping → internal-имена валидны (ошибок нет)
57
+ new Palistor({
58
+ config: {
59
+ email: { value: "", isRequired: true, description: "d" },
60
+ },
61
+ });
62
+ const annotated = {
63
+ email: { value: "", required: true, helpText: "hi" },
64
+ };
65
+ // @ts-expect-error internal-имя под аннотацией → excess property
66
+ const annotatedBad = {
67
+ email: { value: "", isRequired: true },
68
+ };
69
+ void annotated;
70
+ void annotatedBad;
71
+ //# sourceMappingURL=fieldMapping.typecheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fieldMapping.typecheck.js","sourceRoot":"","sources":["../../store/fieldMapping.typecheck.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,6EAA6E;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG1D,MAAM,SAAS,GAAG,kBAAkB,CAAC;IACnC,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE,UAAU;IACtB,UAAU,EAAE,UAAU;IACtB,SAAS,EAAE,OAAO;IAClB,YAAY,EAAE,YAAY;IAC1B,WAAW,EAAE,UAAU;CACxB,CAAC,CAAC;AAEH,4CAA4C;AAC5C,IAAI,QAAQ,CAAC;IACX,YAAY,EAAE,SAAS;IACvB,MAAM,EAAE;QACN,KAAK,EAAE;YACL,KAAK,EAAE,EAAE;YACT,KAAK,EAAE,OAAO;YACd,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC;SACjD;QACD,OAAO,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE;KAC3D;CACF,CAAC,CAAC;AAEH,8CAA8C;AAC9C,IAAI,QAAQ,CAAC;IACX,YAAY,EAAE,SAAS;IACvB,MAAM,EAAE;QACN,qEAAqE;QACrE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;KACvC;CACF,CAAC,CAAC;AAEH,6CAA6C;AAC7C,IAAI,QAAQ,CAAC;IACX,YAAY,EAAE,SAAS;IACvB,MAAM,EAAE;QACN,QAAQ,EAAE;YACR,qEAAqE;YACrE,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;SACxC;KACF;CACF,CAAC,CAAC;AAEH,wCAAwC;AACxC,IAAI,QAAQ,CAAC;IACX,YAAY,EAAE,SAAS;IACvB,MAAM,EAAE;QACN,KAAK,EAAE;YACL,qEAAqE;YACrE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE;YAC5D,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE;SAC1C;KACF;CACF,CAAC,CAAC;AAEH,4DAA4D;AAC5D,IAAI,QAAQ,CAAC;IACX,MAAM,EAAE;QACN,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE;KACzD;CACF,CAAC,CAAC;AAIH,MAAM,SAAS,GAA6C;IAC1D,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE;CACrD,CAAC;AACF,iEAAiE;AACjE,MAAM,YAAY,GAA6C;IAC7D,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;CACvC,CAAC;AACF,KAAK,SAAS,CAAC;AACf,KAAK,YAAY,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type AnyConfigNode } from "../store/types";
2
+ /**
3
+ * Создать карту зависимостей с self-зависимостью для каждой группы.
4
+ *
5
+ * Группа — любой узел конфига без "value".
6
+ * Root-группа обозначается пустой строкой "".
7
+ */
8
+ export declare function createGroupDeps(rootConfig: AnyConfigNode, nodePaths: WeakMap<object, string>): Set<string>;
9
+ //# sourceMappingURL=createGroupDeps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createGroupDeps.d.ts","sourceRoot":"","sources":["../../../store/groupDeps/createGroupDeps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAIpD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,aAAa,EACzB,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,GAAG,CAAC,MAAM,CAAC,CAoBb"}