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.
- package/LICENSE +21 -0
- package/README.md +947 -0
- package/dist/index.d.ts +54 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/react/createTrackingProxy.d.ts +55 -0
- package/dist/react/createTrackingProxy.d.ts.map +1 -0
- package/dist/react/createTrackingProxy.js +149 -0
- package/dist/react/createTrackingProxy.js.map +1 -0
- package/dist/react/useForm.d.ts +108 -0
- package/dist/react/useForm.d.ts.map +1 -0
- package/dist/react/useForm.js +180 -0
- package/dist/react/useForm.js.map +1 -0
- package/dist/react/useNotifier.d.ts +35 -0
- package/dist/react/useNotifier.d.ts.map +1 -0
- package/dist/react/useNotifier.js +41 -0
- package/dist/react/useNotifier.js.map +1 -0
- package/dist/react/usePersist.d.ts +45 -0
- package/dist/react/usePersist.d.ts.map +1 -0
- package/dist/react/usePersist.js +60 -0
- package/dist/react/usePersist.js.map +1 -0
- package/dist/react/useStoreContext.d.ts +42 -0
- package/dist/react/useStoreContext.d.ts.map +1 -0
- package/dist/react/useStoreContext.js +46 -0
- package/dist/react/useStoreContext.js.map +1 -0
- package/dist/react/useTranslator.d.ts +37 -0
- package/dist/react/useTranslator.d.ts.map +1 -0
- package/dist/react/useTranslator.js +43 -0
- package/dist/react/useTranslator.js.map +1 -0
- package/dist/store/applyPatch/applyPatch.d.ts +17 -0
- package/dist/store/applyPatch/applyPatch.d.ts.map +1 -0
- package/dist/store/applyPatch/applyPatch.js +44 -0
- package/dist/store/applyPatch/applyPatch.js.map +1 -0
- package/dist/store/buildProxy/buildEntityProjectionProxy.d.ts +52 -0
- package/dist/store/buildProxy/buildEntityProjectionProxy.d.ts.map +1 -0
- package/dist/store/buildProxy/buildEntityProjectionProxy.js +321 -0
- package/dist/store/buildProxy/buildEntityProjectionProxy.js.map +1 -0
- package/dist/store/buildProxy/buildListProxy.d.ts +33 -0
- package/dist/store/buildProxy/buildListProxy.d.ts.map +1 -0
- package/dist/store/buildProxy/buildListProxy.js +306 -0
- package/dist/store/buildProxy/buildListProxy.js.map +1 -0
- package/dist/store/buildProxy/buildProxy.d.ts +41 -0
- package/dist/store/buildProxy/buildProxy.d.ts.map +1 -0
- package/dist/store/buildProxy/buildProxy.js +380 -0
- package/dist/store/buildProxy/buildProxy.js.map +1 -0
- package/dist/store/buildProxy/computeProxyKeys.d.ts +15 -0
- package/dist/store/buildProxy/computeProxyKeys.d.ts.map +1 -0
- package/dist/store/buildProxy/computeProxyKeys.js +28 -0
- package/dist/store/buildProxy/computeProxyKeys.js.map +1 -0
- package/dist/store/buildProxy/handleLazyResolve.d.ts +10 -0
- package/dist/store/buildProxy/handleLazyResolve.d.ts.map +1 -0
- package/dist/store/buildProxy/handleLazyResolve.js +26 -0
- package/dist/store/buildProxy/handleLazyResolve.js.map +1 -0
- package/dist/store/buildProxy/initProxyCaches.d.ts +16 -0
- package/dist/store/buildProxy/initProxyCaches.d.ts.map +1 -0
- package/dist/store/buildProxy/initProxyCaches.js +17 -0
- package/dist/store/buildProxy/initProxyCaches.js.map +1 -0
- package/dist/store/compute/computeFieldState.d.ts +10 -0
- package/dist/store/compute/computeFieldState.d.ts.map +1 -0
- package/dist/store/compute/computeFieldState.js +53 -0
- package/dist/store/compute/computeFieldState.js.map +1 -0
- package/dist/store/compute/fieldStateChanged.d.ts +6 -0
- package/dist/store/compute/fieldStateChanged.d.ts.map +1 -0
- package/dist/store/compute/fieldStateChanged.js +20 -0
- package/dist/store/compute/fieldStateChanged.js.map +1 -0
- package/dist/store/compute/index.d.ts +7 -0
- package/dist/store/compute/index.d.ts.map +1 -0
- package/dist/store/compute/index.js +6 -0
- package/dist/store/compute/index.js.map +1 -0
- package/dist/store/compute/isEmpty.d.ts +6 -0
- package/dist/store/compute/isEmpty.d.ts.map +1 -0
- package/dist/store/compute/isEmpty.js +14 -0
- package/dist/store/compute/isEmpty.js.map +1 -0
- package/dist/store/compute/recompute/collectGroupComputeNodes.d.ts +11 -0
- package/dist/store/compute/recompute/collectGroupComputeNodes.d.ts.map +1 -0
- package/dist/store/compute/recompute/collectGroupComputeNodes.js +26 -0
- package/dist/store/compute/recompute/collectGroupComputeNodes.js.map +1 -0
- package/dist/store/compute/recompute/collectGroupLeafNodes.d.ts +11 -0
- package/dist/store/compute/recompute/collectGroupLeafNodes.d.ts.map +1 -0
- package/dist/store/compute/recompute/collectGroupLeafNodes.js +26 -0
- package/dist/store/compute/recompute/collectGroupLeafNodes.js.map +1 -0
- package/dist/store/compute/recompute/index.d.ts +7 -0
- package/dist/store/compute/recompute/index.d.ts.map +1 -0
- package/dist/store/compute/recompute/index.js +6 -0
- package/dist/store/compute/recompute/index.js.map +1 -0
- package/dist/store/compute/recompute/recomputeAndNotify.d.ts +8 -0
- package/dist/store/compute/recompute/recomputeAndNotify.d.ts.map +1 -0
- package/dist/store/compute/recompute/recomputeAndNotify.js +13 -0
- package/dist/store/compute/recompute/recomputeAndNotify.js.map +1 -0
- package/dist/store/compute/recompute/recomputeLeaves.d.ts +23 -0
- package/dist/store/compute/recompute/recomputeLeaves.d.ts.map +1 -0
- package/dist/store/compute/recompute/recomputeLeaves.js +77 -0
- package/dist/store/compute/recompute/recomputeLeaves.js.map +1 -0
- package/dist/store/compute/recompute/recomputeTargeted.d.ts +14 -0
- package/dist/store/compute/recompute/recomputeTargeted.d.ts.map +1 -0
- package/dist/store/compute/recompute/recomputeTargeted.js +50 -0
- package/dist/store/compute/recompute/recomputeTargeted.js.map +1 -0
- package/dist/store/compute/recompute/topologicalSortComputed.d.ts +16 -0
- package/dist/store/compute/recompute/topologicalSortComputed.d.ts.map +1 -0
- package/dist/store/compute/recompute/topologicalSortComputed.js +60 -0
- package/dist/store/compute/recompute/topologicalSortComputed.js.map +1 -0
- package/dist/store/compute/recompute/types.d.ts +24 -0
- package/dist/store/compute/recompute/types.d.ts.map +1 -0
- package/dist/store/compute/recompute/types.js +2 -0
- package/dist/store/compute/recompute/types.js.map +1 -0
- package/dist/store/compute/resolveFlag.d.ts +7 -0
- package/dist/store/compute/resolveFlag.d.ts.map +1 -0
- package/dist/store/compute/resolveFlag.js +12 -0
- package/dist/store/compute/resolveFlag.js.map +1 -0
- package/dist/store/compute/resolveString.d.ts +11 -0
- package/dist/store/compute/resolveString.d.ts.map +1 -0
- package/dist/store/compute/resolveString.js +18 -0
- package/dist/store/compute/resolveString.js.map +1 -0
- package/dist/store/compute/types.d.ts +37 -0
- package/dist/store/compute/types.d.ts.map +1 -0
- package/dist/store/compute/types.js +2 -0
- package/dist/store/compute/types.js.map +1 -0
- package/dist/store/constants.d.ts +83 -0
- package/dist/store/constants.d.ts.map +1 -0
- package/dist/store/constants.js +145 -0
- package/dist/store/constants.js.map +1 -0
- package/dist/store/defineFieldMapping.d.ts +41 -0
- package/dist/store/defineFieldMapping.d.ts.map +1 -0
- package/dist/store/defineFieldMapping.js +42 -0
- package/dist/store/defineFieldMapping.js.map +1 -0
- package/dist/store/defineList.d.ts +14 -0
- package/dist/store/defineList.d.ts.map +1 -0
- package/dist/store/defineList.js +7 -0
- package/dist/store/defineList.js.map +1 -0
- package/dist/store/dirtyTracking/captureInitialValues.d.ts +8 -0
- package/dist/store/dirtyTracking/captureInitialValues.d.ts.map +1 -0
- package/dist/store/dirtyTracking/captureInitialValues.js +16 -0
- package/dist/store/dirtyTracking/captureInitialValues.js.map +1 -0
- package/dist/store/dirtyTracking/collectInitialSnapshot.d.ts +10 -0
- package/dist/store/dirtyTracking/collectInitialSnapshot.d.ts.map +1 -0
- package/dist/store/dirtyTracking/collectInitialSnapshot.js +35 -0
- package/dist/store/dirtyTracking/collectInitialSnapshot.js.map +1 -0
- package/dist/store/dirtyTracking/index.d.ts +7 -0
- package/dist/store/dirtyTracking/index.d.ts.map +1 -0
- package/dist/store/dirtyTracking/index.js +6 -0
- package/dist/store/dirtyTracking/index.js.map +1 -0
- package/dist/store/dirtyTracking/isDirtyValue.d.ts +7 -0
- package/dist/store/dirtyTracking/isDirtyValue.d.ts.map +1 -0
- package/dist/store/dirtyTracking/isDirtyValue.js +25 -0
- package/dist/store/dirtyTracking/isDirtyValue.js.map +1 -0
- package/dist/store/dirtyTracking/mergeInitialValues.d.ts +11 -0
- package/dist/store/dirtyTracking/mergeInitialValues.d.ts.map +1 -0
- package/dist/store/dirtyTracking/mergeInitialValues.js +29 -0
- package/dist/store/dirtyTracking/mergeInitialValues.js.map +1 -0
- package/dist/store/dirtyTracking/recomputeDirtyTargeted.d.ts +17 -0
- package/dist/store/dirtyTracking/recomputeDirtyTargeted.d.ts.map +1 -0
- package/dist/store/dirtyTracking/recomputeDirtyTargeted.js +90 -0
- package/dist/store/dirtyTracking/recomputeDirtyTargeted.js.map +1 -0
- package/dist/store/dirtyTracking/setGroupRevalidate.d.ts +13 -0
- package/dist/store/dirtyTracking/setGroupRevalidate.d.ts.map +1 -0
- package/dist/store/dirtyTracking/setGroupRevalidate.js +32 -0
- package/dist/store/dirtyTracking/setGroupRevalidate.js.map +1 -0
- package/dist/store/entityRegistry/entityRegistry.d.ts +166 -0
- package/dist/store/entityRegistry/entityRegistry.d.ts.map +1 -0
- package/dist/store/entityRegistry/entityRegistry.js +402 -0
- package/dist/store/entityRegistry/entityRegistry.js.map +1 -0
- package/dist/store/entityRegistry/generateId.d.ts +7 -0
- package/dist/store/entityRegistry/generateId.d.ts.map +1 -0
- package/dist/store/entityRegistry/generateId.js +18 -0
- package/dist/store/entityRegistry/generateId.js.map +1 -0
- package/dist/store/entityRegistry/index.d.ts +4 -0
- package/dist/store/entityRegistry/index.d.ts.map +1 -0
- package/dist/store/entityRegistry/index.js +3 -0
- package/dist/store/entityRegistry/index.js.map +1 -0
- package/dist/store/entityRegistry/types.d.ts +50 -0
- package/dist/store/entityRegistry/types.d.ts.map +1 -0
- package/dist/store/entityRegistry/types.js +2 -0
- package/dist/store/entityRegistry/types.js.map +1 -0
- package/dist/store/fieldMapping.typecheck.d.ts +2 -0
- package/dist/store/fieldMapping.typecheck.d.ts.map +1 -0
- package/dist/store/fieldMapping.typecheck.js +71 -0
- package/dist/store/fieldMapping.typecheck.js.map +1 -0
- package/dist/store/groupDeps/createGroupDeps.d.ts +9 -0
- package/dist/store/groupDeps/createGroupDeps.d.ts.map +1 -0
- package/dist/store/groupDeps/createGroupDeps.js +29 -0
- package/dist/store/groupDeps/createGroupDeps.js.map +1 -0
- package/dist/store/groupDeps/createTrackingValues.d.ts +15 -0
- package/dist/store/groupDeps/createTrackingValues.d.ts.map +1 -0
- package/dist/store/groupDeps/createTrackingValues.js +39 -0
- package/dist/store/groupDeps/createTrackingValues.js.map +1 -0
- package/dist/store/groupDeps/getNodeGroupPath.d.ts +9 -0
- package/dist/store/groupDeps/getNodeGroupPath.d.ts.map +1 -0
- package/dist/store/groupDeps/getNodeGroupPath.js +20 -0
- package/dist/store/groupDeps/getNodeGroupPath.js.map +1 -0
- package/dist/store/groupDeps/getRecipientGroups.d.ts +5 -0
- package/dist/store/groupDeps/getRecipientGroups.d.ts.map +1 -0
- package/dist/store/groupDeps/getRecipientGroups.js +15 -0
- package/dist/store/groupDeps/getRecipientGroups.js.map +1 -0
- package/dist/store/groupDeps/groupDeps.d.ts +19 -0
- package/dist/store/groupDeps/groupDeps.d.ts.map +1 -0
- package/dist/store/groupDeps/groupDeps.js +19 -0
- package/dist/store/groupDeps/groupDeps.js.map +1 -0
- package/dist/store/groupDeps/index.d.ts +7 -0
- package/dist/store/groupDeps/index.d.ts.map +1 -0
- package/dist/store/groupDeps/index.js +7 -0
- package/dist/store/groupDeps/index.js.map +1 -0
- package/dist/store/groupDeps/pairKey.d.ts +7 -0
- package/dist/store/groupDeps/pairKey.d.ts.map +1 -0
- package/dist/store/groupDeps/pairKey.js +12 -0
- package/dist/store/groupDeps/pairKey.js.map +1 -0
- package/dist/store/groupDeps/resolveGroupByPath.d.ts +8 -0
- package/dist/store/groupDeps/resolveGroupByPath.d.ts.map +1 -0
- package/dist/store/groupDeps/resolveGroupByPath.js +19 -0
- package/dist/store/groupDeps/resolveGroupByPath.js.map +1 -0
- package/dist/store/init/createNotificationHub.d.ts +81 -0
- package/dist/store/init/createNotificationHub.d.ts.map +1 -0
- package/dist/store/init/createNotificationHub.js +149 -0
- package/dist/store/init/createNotificationHub.js.map +1 -0
- package/dist/store/init/createResolveManager.d.ts +166 -0
- package/dist/store/init/createResolveManager.d.ts.map +1 -0
- package/dist/store/init/createResolveManager.js +502 -0
- package/dist/store/init/createResolveManager.js.map +1 -0
- package/dist/store/init/initGroupSubmitting.d.ts +8 -0
- package/dist/store/init/initGroupSubmitting.d.ts.map +1 -0
- package/dist/store/init/initGroupSubmitting.js +39 -0
- package/dist/store/init/initGroupSubmitting.js.map +1 -0
- package/dist/store/normalizeConfig.d.ts +28 -0
- package/dist/store/normalizeConfig.d.ts.map +1 -0
- package/dist/store/normalizeConfig.js +76 -0
- package/dist/store/normalizeConfig.js.map +1 -0
- package/dist/store/onChangePipeline/computeFieldKey.d.ts +11 -0
- package/dist/store/onChangePipeline/computeFieldKey.d.ts.map +1 -0
- package/dist/store/onChangePipeline/computeFieldKey.js +18 -0
- package/dist/store/onChangePipeline/computeFieldKey.js.map +1 -0
- package/dist/store/onChangePipeline/findOnChangeAncestors.d.ts +8 -0
- package/dist/store/onChangePipeline/findOnChangeAncestors.d.ts.map +1 -0
- package/dist/store/onChangePipeline/findOnChangeAncestors.js +22 -0
- package/dist/store/onChangePipeline/findOnChangeAncestors.js.map +1 -0
- package/dist/store/onChangePipeline/onChangePipeline.d.ts +29 -0
- package/dist/store/onChangePipeline/onChangePipeline.d.ts.map +1 -0
- package/dist/store/onChangePipeline/onChangePipeline.js +99 -0
- package/dist/store/onChangePipeline/onChangePipeline.js.map +1 -0
- package/dist/store/persist/drivers.d.ts +34 -0
- package/dist/store/persist/drivers.d.ts.map +1 -0
- package/dist/store/persist/drivers.js +89 -0
- package/dist/store/persist/drivers.js.map +1 -0
- package/dist/store/persist/index.d.ts +7 -0
- package/dist/store/persist/index.d.ts.map +1 -0
- package/dist/store/persist/index.js +3 -0
- package/dist/store/persist/index.js.map +1 -0
- package/dist/store/persist/persistManager.d.ts +67 -0
- package/dist/store/persist/persistManager.d.ts.map +1 -0
- package/dist/store/persist/persistManager.js +198 -0
- package/dist/store/persist/persistManager.js.map +1 -0
- package/dist/store/persist/types.d.ts +66 -0
- package/dist/store/persist/types.d.ts.map +1 -0
- package/dist/store/persist/types.js +9 -0
- package/dist/store/persist/types.js.map +1 -0
- package/dist/store/resetPipeline/buildResetPatch.d.ts +11 -0
- package/dist/store/resetPipeline/buildResetPatch.d.ts.map +1 -0
- package/dist/store/resetPipeline/buildResetPatch.js +22 -0
- package/dist/store/resetPipeline/buildResetPatch.js.map +1 -0
- package/dist/store/resetPipeline/collectDefaults.d.ts +12 -0
- package/dist/store/resetPipeline/collectDefaults.d.ts.map +1 -0
- package/dist/store/resetPipeline/collectDefaults.js +31 -0
- package/dist/store/resetPipeline/collectDefaults.js.map +1 -0
- package/dist/store/resetPipeline/resetPipeline.d.ts +19 -0
- package/dist/store/resetPipeline/resetPipeline.d.ts.map +1 -0
- package/dist/store/resetPipeline/resetPipeline.js +49 -0
- package/dist/store/resetPipeline/resetPipeline.js.map +1 -0
- package/dist/store/resolvePipeline/applyPendingWrites.d.ts +26 -0
- package/dist/store/resolvePipeline/applyPendingWrites.d.ts.map +1 -0
- package/dist/store/resolvePipeline/applyPendingWrites.js +68 -0
- package/dist/store/resolvePipeline/applyPendingWrites.js.map +1 -0
- package/dist/store/resolvePipeline/createContextTrackingProxy.d.ts +16 -0
- package/dist/store/resolvePipeline/createContextTrackingProxy.d.ts.map +1 -0
- package/dist/store/resolvePipeline/createContextTrackingProxy.js +29 -0
- package/dist/store/resolvePipeline/createContextTrackingProxy.js.map +1 -0
- package/dist/store/resolvePipeline/createValuesTrackingProxy.d.ts +75 -0
- package/dist/store/resolvePipeline/createValuesTrackingProxy.d.ts.map +1 -0
- package/dist/store/resolvePipeline/createValuesTrackingProxy.js +128 -0
- package/dist/store/resolvePipeline/createValuesTrackingProxy.js.map +1 -0
- package/dist/store/resolvePipeline/executeEntityFieldResolve.d.ts +29 -0
- package/dist/store/resolvePipeline/executeEntityFieldResolve.d.ts.map +1 -0
- package/dist/store/resolvePipeline/executeEntityFieldResolve.js +218 -0
- package/dist/store/resolvePipeline/executeEntityFieldResolve.js.map +1 -0
- package/dist/store/resolvePipeline/executeListResolve.d.ts +32 -0
- package/dist/store/resolvePipeline/executeListResolve.d.ts.map +1 -0
- package/dist/store/resolvePipeline/executeListResolve.js +157 -0
- package/dist/store/resolvePipeline/executeListResolve.js.map +1 -0
- package/dist/store/resolvePipeline/executeResolve.d.ts +26 -0
- package/dist/store/resolvePipeline/executeResolve.d.ts.map +1 -0
- package/dist/store/resolvePipeline/executeResolve.js +201 -0
- package/dist/store/resolvePipeline/executeResolve.js.map +1 -0
- package/dist/store/resolvePipeline/findResolvesToRetrigger.d.ts +10 -0
- package/dist/store/resolvePipeline/findResolvesToRetrigger.d.ts.map +1 -0
- package/dist/store/resolvePipeline/findResolvesToRetrigger.js +29 -0
- package/dist/store/resolvePipeline/findResolvesToRetrigger.js.map +1 -0
- package/dist/store/resolvePipeline/index.d.ts +22 -0
- package/dist/store/resolvePipeline/index.d.ts.map +1 -0
- package/dist/store/resolvePipeline/index.js +18 -0
- package/dist/store/resolvePipeline/index.js.map +1 -0
- package/dist/store/resolvePipeline/initResolveStates.d.ts +41 -0
- package/dist/store/resolvePipeline/initResolveStates.d.ts.map +1 -0
- package/dist/store/resolvePipeline/initResolveStates.js +95 -0
- package/dist/store/resolvePipeline/initResolveStates.js.map +1 -0
- package/dist/store/resolvePipeline/resetResolveState.d.ts +8 -0
- package/dist/store/resolvePipeline/resetResolveState.d.ts.map +1 -0
- package/dist/store/resolvePipeline/resetResolveState.js +18 -0
- package/dist/store/resolvePipeline/resetResolveState.js.map +1 -0
- package/dist/store/resolvePipeline/types.d.ts +134 -0
- package/dist/store/resolvePipeline/types.d.ts.map +1 -0
- package/dist/store/resolvePipeline/types.js +54 -0
- package/dist/store/resolvePipeline/types.js.map +1 -0
- package/dist/store/store/NodeRegistry/index.d.ts +3 -0
- package/dist/store/store/NodeRegistry/index.d.ts.map +1 -0
- package/dist/store/store/NodeRegistry/index.js +2 -0
- package/dist/store/store/NodeRegistry/index.js.map +1 -0
- package/dist/store/store/NodeRegistry/nodeRegistry.d.ts +139 -0
- package/dist/store/store/NodeRegistry/nodeRegistry.d.ts.map +1 -0
- package/dist/store/store/NodeRegistry/nodeRegistry.js +255 -0
- package/dist/store/store/NodeRegistry/nodeRegistry.js.map +1 -0
- package/dist/store/store/NodeRegistry/nodeUtils.d.ts +17 -0
- package/dist/store/store/NodeRegistry/nodeUtils.d.ts.map +1 -0
- package/dist/store/store/NodeRegistry/nodeUtils.js +21 -0
- package/dist/store/store/NodeRegistry/nodeUtils.js.map +1 -0
- package/dist/store/store/NodeRegistry/nodeView.d.ts +28 -0
- package/dist/store/store/NodeRegistry/nodeView.d.ts.map +1 -0
- package/dist/store/store/NodeRegistry/nodeView.js +16 -0
- package/dist/store/store/NodeRegistry/nodeView.js.map +1 -0
- package/dist/store/store/dirtyTracker.d.ts +27 -0
- package/dist/store/store/dirtyTracker.d.ts.map +1 -0
- package/dist/store/store/dirtyTracker.js +38 -0
- package/dist/store/store/dirtyTracker.js.map +1 -0
- package/dist/store/store/groupDepsMap.d.ts +52 -0
- package/dist/store/store/groupDepsMap.d.ts.map +1 -0
- package/dist/store/store/groupDepsMap.js +84 -0
- package/dist/store/store/groupDepsMap.js.map +1 -0
- package/dist/store/store/hasComputedProps.d.ts +7 -0
- package/dist/store/store/hasComputedProps.d.ts.map +1 -0
- package/dist/store/store/hasComputedProps.js +15 -0
- package/dist/store/store/hasComputedProps.js.map +1 -0
- package/dist/store/store/index.d.ts +6 -0
- package/dist/store/store/index.d.ts.map +1 -0
- package/dist/store/store/index.js +3 -0
- package/dist/store/store/index.js.map +1 -0
- package/dist/store/store/nodeMap.d.ts +12 -0
- package/dist/store/store/nodeMap.d.ts.map +1 -0
- package/dist/store/store/nodeMap.js +30 -0
- package/dist/store/store/nodeMap.js.map +1 -0
- package/dist/store/store/palistor.d.ts +256 -0
- package/dist/store/store/palistor.d.ts.map +1 -0
- package/dist/store/store/palistor.js +772 -0
- package/dist/store/store/palistor.js.map +1 -0
- package/dist/store/store/registerNodes.d.ts +33 -0
- package/dist/store/store/registerNodes.d.ts.map +1 -0
- package/dist/store/store/registerNodes.js +88 -0
- package/dist/store/store/registerNodes.js.map +1 -0
- package/dist/store/store/serviceRegistry.d.ts +24 -0
- package/dist/store/store/serviceRegistry.d.ts.map +1 -0
- package/dist/store/store/serviceRegistry.js +32 -0
- package/dist/store/store/serviceRegistry.js.map +1 -0
- package/dist/store/store/types.d.ts +622 -0
- package/dist/store/store/types.d.ts.map +1 -0
- package/dist/store/store/types.js +2 -0
- package/dist/store/store/types.js.map +1 -0
- package/dist/store/submitPipeline/applyLeafBeforeSubmit.d.ts +7 -0
- package/dist/store/submitPipeline/applyLeafBeforeSubmit.d.ts.map +1 -0
- package/dist/store/submitPipeline/applyLeafBeforeSubmit.js +26 -0
- package/dist/store/submitPipeline/applyLeafBeforeSubmit.js.map +1 -0
- package/dist/store/submitPipeline/collectLeafStates.d.ts +11 -0
- package/dist/store/submitPipeline/collectLeafStates.d.ts.map +1 -0
- package/dist/store/submitPipeline/collectLeafStates.js +17 -0
- package/dist/store/submitPipeline/collectLeafStates.js.map +1 -0
- package/dist/store/submitPipeline/getSubValues.d.ts +9 -0
- package/dist/store/submitPipeline/getSubValues.d.ts.map +1 -0
- package/dist/store/submitPipeline/getSubValues.js +26 -0
- package/dist/store/submitPipeline/getSubValues.js.map +1 -0
- package/dist/store/submitPipeline/submitPipeline.d.ts +32 -0
- package/dist/store/submitPipeline/submitPipeline.d.ts.map +1 -0
- package/dist/store/submitPipeline/submitPipeline.js +119 -0
- package/dist/store/submitPipeline/submitPipeline.js.map +1 -0
- package/dist/store/submitPipeline/types.d.ts +12 -0
- package/dist/store/submitPipeline/types.d.ts.map +1 -0
- package/dist/store/submitPipeline/types.js +2 -0
- package/dist/store/submitPipeline/types.js.map +1 -0
- package/dist/store/traversal/index.d.ts +4 -0
- package/dist/store/traversal/index.d.ts.map +1 -0
- package/dist/store/traversal/index.js +3 -0
- package/dist/store/traversal/index.js.map +1 -0
- package/dist/store/traversal/nodeClassifier.d.ts +23 -0
- package/dist/store/traversal/nodeClassifier.d.ts.map +1 -0
- package/dist/store/traversal/nodeClassifier.js +46 -0
- package/dist/store/traversal/nodeClassifier.js.map +1 -0
- package/dist/store/traversal/walkFull.d.ts +33 -0
- package/dist/store/traversal/walkFull.d.ts.map +1 -0
- package/dist/store/traversal/walkFull.js +28 -0
- package/dist/store/traversal/walkFull.js.map +1 -0
- package/dist/store/valuesCache/valuesCache.d.ts +27 -0
- package/dist/store/valuesCache/valuesCache.d.ts.map +1 -0
- package/dist/store/valuesCache/valuesCache.js +58 -0
- package/dist/store/valuesCache/valuesCache.js.map +1 -0
- package/dist/store/writePipeline/formatPatch.d.ts +14 -0
- package/dist/store/writePipeline/formatPatch.d.ts.map +1 -0
- package/dist/store/writePipeline/formatPatch.js +35 -0
- package/dist/store/writePipeline/formatPatch.js.map +1 -0
- package/dist/store/writePipeline/formatValue.d.ts +12 -0
- package/dist/store/writePipeline/formatValue.d.ts.map +1 -0
- package/dist/store/writePipeline/formatValue.js +15 -0
- package/dist/store/writePipeline/formatValue.js.map +1 -0
- package/dist/store/writePipeline/index.d.ts +8 -0
- package/dist/store/writePipeline/index.d.ts.map +1 -0
- package/dist/store/writePipeline/index.js +7 -0
- package/dist/store/writePipeline/index.js.map +1 -0
- package/dist/store/writePipeline/mergeChanged.d.ts +9 -0
- package/dist/store/writePipeline/mergeChanged.d.ts.map +1 -0
- package/dist/store/writePipeline/mergeChanged.js +15 -0
- package/dist/store/writePipeline/mergeChanged.js.map +1 -0
- package/dist/store/writePipeline/runSetter.d.ts +16 -0
- package/dist/store/writePipeline/runSetter.d.ts.map +1 -0
- package/dist/store/writePipeline/runSetter.js +35 -0
- package/dist/store/writePipeline/runSetter.js.map +1 -0
- package/dist/store/writePipeline/storeValue.d.ts +11 -0
- package/dist/store/writePipeline/storeValue.d.ts.map +1 -0
- package/dist/store/writePipeline/storeValue.js +17 -0
- package/dist/store/writePipeline/storeValue.js.map +1 -0
- package/dist/store/writePipeline/types.d.ts +10 -0
- package/dist/store/writePipeline/types.d.ts.map +1 -0
- package/dist/store/writePipeline/types.js +2 -0
- package/dist/store/writePipeline/types.js.map +1 -0
- package/dist/store/writePipeline/writePipeline.d.ts +31 -0
- package/dist/store/writePipeline/writePipeline.d.ts.map +1 -0
- package/dist/store/writePipeline/writePipeline.js +97 -0
- package/dist/store/writePipeline/writePipeline.js.map +1 -0
- package/package.json +79 -0
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import { registerNodes } from "../registerNodes";
|
|
2
|
+
import { buildNodeMaps } from "../nodeMap";
|
|
3
|
+
import { initGroupSubmitting } from "../../init/initGroupSubmitting";
|
|
4
|
+
import { getNodeGroupPath } from "../../groupDeps/getNodeGroupPath";
|
|
5
|
+
import { CONFIG_PROPS } from "../../constants";
|
|
6
|
+
import { isLeafNode, isGroupNode, isListNode } from "./nodeUtils";
|
|
7
|
+
import { makeIdentityView } from "./nodeView";
|
|
8
|
+
/**
|
|
9
|
+
* Рекурсивно собрать обратный индекс `listConfigNode → fieldPath` для ВСЕХ
|
|
10
|
+
* списков конфига, включая вложенные в template списка (per-entity lists, C3)
|
|
11
|
+
* и вложенные в nested-группы (C4).
|
|
12
|
+
*
|
|
13
|
+
* Путь хранится массивом ключей **относительно ближайшего entity-scope**:
|
|
14
|
+
* - список прямо под template → `["contacts"]`;
|
|
15
|
+
* - список внутри nested-группы → `["profile", "contacts"]`.
|
|
16
|
+
* Путь сбрасывается на границе каждого списка (`child[0]` открывает новый
|
|
17
|
+
* entity-scope — его item-ы это отдельные entity со своим projectionObj).
|
|
18
|
+
* Это позволяет `syncListValuesCache` (per-entity ветка) записать состав в
|
|
19
|
+
* правильное вложенное место projectionObj владельца.
|
|
20
|
+
*/
|
|
21
|
+
function collectListFieldKeys(node, map, prefix = []) {
|
|
22
|
+
for (const key of Object.keys(node)) {
|
|
23
|
+
if (CONFIG_PROPS.has(key))
|
|
24
|
+
continue;
|
|
25
|
+
const child = node[key];
|
|
26
|
+
if (!child || typeof child !== "object")
|
|
27
|
+
continue;
|
|
28
|
+
if (Array.isArray(child)) {
|
|
29
|
+
map.set(child, [...prefix, key]);
|
|
30
|
+
const template = child[0];
|
|
31
|
+
if (template && typeof template === "object") {
|
|
32
|
+
// Новый entity-scope — путь сбрасывается.
|
|
33
|
+
collectListFieldKeys(template, map, []);
|
|
34
|
+
}
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (isGroupNode(child)) {
|
|
38
|
+
collectListFieldKeys(child, map, [...prefix, key]);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Реестр узлов конфига.
|
|
44
|
+
*
|
|
45
|
+
* Объединяет данные,
|
|
46
|
+
* `Palistor`: nodeState, nodePaths, nodeParents, computeNodes,
|
|
47
|
+
* groupComputeMap, proxyCache.
|
|
48
|
+
*
|
|
49
|
+
* Выполняет инициализацию (registerNodes + buildNodeMaps + initGroupSubmitting)
|
|
50
|
+
* в конструкторе.
|
|
51
|
+
*
|
|
52
|
+
* @internal используется пайплайнами и подсистемами через kernel
|
|
53
|
+
*/
|
|
54
|
+
export class NodeRegistry {
|
|
55
|
+
// ─── Инициализация ───────────────────────────────────────────────────────
|
|
56
|
+
constructor(rootConfig, initialValues, translate) {
|
|
57
|
+
// ─── Данные ──────────────────────────────────────────────────────────────
|
|
58
|
+
/**
|
|
59
|
+
* Вычисленное состояние каждого узла конфига.
|
|
60
|
+
* Ключ — объект-узел, значение — FieldState.
|
|
61
|
+
*/
|
|
62
|
+
this.nodeState = new WeakMap();
|
|
63
|
+
/**
|
|
64
|
+
* Абсолютный dot-путь каждого узла конфига.
|
|
65
|
+
* Например, passport.number → "passport.number".
|
|
66
|
+
* Корневой узел не имеет пути в этой карте (используется "").
|
|
67
|
+
*/
|
|
68
|
+
this.nodePaths = new WeakMap();
|
|
69
|
+
/**
|
|
70
|
+
* Прямой родитель каждого узла конфига.
|
|
71
|
+
* Корневой узел → не имеет записи.
|
|
72
|
+
*/
|
|
73
|
+
this.nodeParents = new WeakMap();
|
|
74
|
+
/**
|
|
75
|
+
* Все compute-узлы в порядке обхода (DFS).
|
|
76
|
+
* Содержит листовые узлы и групповые узлы с computed-свойствами.
|
|
77
|
+
* Используется NotificationHub для bumpLeafVersions().
|
|
78
|
+
*/
|
|
79
|
+
this.computeNodes = [];
|
|
80
|
+
/**
|
|
81
|
+
* Маппинг группового узла → массив его прямых дочерних записей (листья + группы с computed-свойствами).
|
|
82
|
+
* Используется recomputeTargeted для пересчёта поддерева.
|
|
83
|
+
*/
|
|
84
|
+
this.groupComputeMap = new WeakMap();
|
|
85
|
+
/**
|
|
86
|
+
* Кэш Proxy-объектов — один прокси на узел конфига.
|
|
87
|
+
* Гарантирует стабильность ссылок (===) на proxy.
|
|
88
|
+
*/
|
|
89
|
+
this.proxyCache = new WeakMap();
|
|
90
|
+
/**
|
|
91
|
+
* ListState для каждого ListNode в конфиге.
|
|
92
|
+
* Ключ — объект-массив конфига (сам ListNode).
|
|
93
|
+
* Заполняется при registerNodes (Phase 2A).
|
|
94
|
+
*/
|
|
95
|
+
this.listStates = new WeakMap();
|
|
96
|
+
/**
|
|
97
|
+
* Все ListState-объекты в порядке регистрации.
|
|
98
|
+
* Используется Palistor для регистрации списков в EntityRegistry.rekey() (Phase 2C).
|
|
99
|
+
*/
|
|
100
|
+
this.allListStates = [];
|
|
101
|
+
/**
|
|
102
|
+
* Единый кэш list proxy (root + per-entity) — ключ: объект `ListState`.
|
|
103
|
+
* Гарантирует стабильные ссылки на list-proxy для React (как proxyCache для групп).
|
|
104
|
+
* Каждой паре (owner, listConfigNode) и каждому root-списку соответствует свой
|
|
105
|
+
* `ListState`, поэтому ключевание по нему даёт корректную изоляцию.
|
|
106
|
+
*/
|
|
107
|
+
this.listProxyCache = new WeakMap();
|
|
108
|
+
/**
|
|
109
|
+
* Обратный индекс `listConfigNode → fieldPath` (вариант C, C3/C4).
|
|
110
|
+
* Путь — массив ключей относительно entity-scope владельца
|
|
111
|
+
* (`["contacts"]` или `["profile", "contacts"]` для списка в nested-группе).
|
|
112
|
+
* Используется для записи состава per-entity списка в нужное вложенное место
|
|
113
|
+
* projectionObj владельца — чтобы `store.getValues()` включал вложенные списки.
|
|
114
|
+
*/
|
|
115
|
+
this.listFieldKeys = new WeakMap();
|
|
116
|
+
/**
|
|
117
|
+
* NodeView per storage node.
|
|
118
|
+
* - Config-mode: populated lazily via getView (identity views cached in _identityViews).
|
|
119
|
+
* - Entity-mode: populated by Palistor._setEntitiesRaw per (entityLeaf, templateField) pair.
|
|
120
|
+
* Map key = templateField (rules); supports multiple template bindings for one entity leaf.
|
|
121
|
+
*/
|
|
122
|
+
this.nodeViews = new WeakMap();
|
|
123
|
+
this._identityViews = new WeakMap();
|
|
124
|
+
this.isLeafNode = isLeafNode;
|
|
125
|
+
this.isGroupNode = isGroupNode;
|
|
126
|
+
this.isListNode = isListNode;
|
|
127
|
+
// Фаза 1: регистрируем все листовые узлы, устанавливаем начальные значения
|
|
128
|
+
registerNodes(rootConfig, initialValues, this.computeNodes, this.nodeState, "", this.groupComputeMap, translate, this.listStates, this.allListStates);
|
|
129
|
+
// Фаза 2: инициализируем submitting/dirty/revalidate для групп
|
|
130
|
+
initGroupSubmitting(rootConfig, this.nodeState);
|
|
131
|
+
// Фаза 3: строим маппинги путей и родителей
|
|
132
|
+
buildNodeMaps(rootConfig, this.nodePaths, this.nodeParents);
|
|
133
|
+
// Фаза 4 (вариант C, C3): обратный индекс listConfigNode → fieldKey,
|
|
134
|
+
// нужен для материализации per-entity списков в projectionObj (getValues).
|
|
135
|
+
collectListFieldKeys(rootConfig, this.listFieldKeys);
|
|
136
|
+
}
|
|
137
|
+
/** Called by Palistor after construction to wire the kernel reference. */
|
|
138
|
+
setKernel(kernel) {
|
|
139
|
+
this._kernel = kernel;
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Get NodeView for a node.
|
|
143
|
+
* - via absent → identity view (storage === rules === node), cached.
|
|
144
|
+
* - via present → entity view registered by _setEntitiesRaw; throws if not found.
|
|
145
|
+
*/
|
|
146
|
+
getView(storage, via) {
|
|
147
|
+
if (via !== undefined) {
|
|
148
|
+
const view = this.nodeViews.get(storage)?.get(via);
|
|
149
|
+
if (!view) {
|
|
150
|
+
throw new Error("[NodeRegistry] NodeView not found for via — register it before calling getView");
|
|
151
|
+
}
|
|
152
|
+
return view;
|
|
153
|
+
}
|
|
154
|
+
let view = this._identityViews.get(storage);
|
|
155
|
+
if (!view) {
|
|
156
|
+
if (!this._kernel) {
|
|
157
|
+
throw new Error("[NodeRegistry] getView called before setKernel");
|
|
158
|
+
}
|
|
159
|
+
view = makeIdentityView(storage, this._kernel);
|
|
160
|
+
this._identityViews.set(storage, view);
|
|
161
|
+
}
|
|
162
|
+
return view;
|
|
163
|
+
}
|
|
164
|
+
// ─── Навигация ───────────────────────────────────────────────────────────
|
|
165
|
+
/** Получить вычисленное состояние узла. */
|
|
166
|
+
getState(node) {
|
|
167
|
+
return this.nodeState.get(node);
|
|
168
|
+
}
|
|
169
|
+
/** Установить состояние узла. */
|
|
170
|
+
setState(node, state) {
|
|
171
|
+
this.nodeState.set(node, state);
|
|
172
|
+
}
|
|
173
|
+
/** Получить абсолютный dot-путь узла. Для корневого — undefined. */
|
|
174
|
+
getPath(node) {
|
|
175
|
+
return this.nodePaths.get(node);
|
|
176
|
+
}
|
|
177
|
+
/** Получить непосредственного родителя узла. */
|
|
178
|
+
getParent(node) {
|
|
179
|
+
return this.nodeParents.get(node);
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Получить path группы, к которой принадлежит узел.
|
|
183
|
+
* - Листовой узел → path родительской группы
|
|
184
|
+
* - Групповой узел → собственный path
|
|
185
|
+
* - Корневой → ""
|
|
186
|
+
*/
|
|
187
|
+
getGroupPath(node) {
|
|
188
|
+
return getNodeGroupPath(node, this.nodeParents, this.nodePaths);
|
|
189
|
+
}
|
|
190
|
+
/** Найти узел по dot-пути. Перебирает computeNodes и проверяет их пути. */
|
|
191
|
+
findByPath(path) {
|
|
192
|
+
for (const entry of this.computeNodes) {
|
|
193
|
+
if (entry.path === path)
|
|
194
|
+
return entry.node;
|
|
195
|
+
}
|
|
196
|
+
return undefined;
|
|
197
|
+
}
|
|
198
|
+
/** Перебрать все compute-узлы. */
|
|
199
|
+
forEachCompute(callback) {
|
|
200
|
+
for (const entry of this.computeNodes) {
|
|
201
|
+
callback(entry);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Зарегистрировать листовой узел, созданный в runtime (например, entity leaf при store.set()).
|
|
206
|
+
*
|
|
207
|
+
* Обновляет все WeakMap-ы реестра и добавляет запись в `computeNodes`,
|
|
208
|
+
* чтобы `bumpLeafVersions` (NotificationHub) автоматически захватил новый узел.
|
|
209
|
+
*
|
|
210
|
+
* @param node Объект-узел (`{ value }`)
|
|
211
|
+
* @param path Абсолютный dot-путь, e.g. "users.0.name"
|
|
212
|
+
* @param parent Непосредственный родительский объект-узел
|
|
213
|
+
* @param state Начальное FieldState
|
|
214
|
+
*/
|
|
215
|
+
registerDynamicLeaf(node, path, parent, state) {
|
|
216
|
+
const entry = { node: node, path };
|
|
217
|
+
this.computeNodes.push(entry);
|
|
218
|
+
this.nodeState.set(node, state);
|
|
219
|
+
this.nodePaths.set(node, path);
|
|
220
|
+
this.nodeParents.set(node, parent);
|
|
221
|
+
// groupComputeMap: добавить в список родительской группы
|
|
222
|
+
let list = this.groupComputeMap.get(parent);
|
|
223
|
+
if (!list) {
|
|
224
|
+
list = [];
|
|
225
|
+
this.groupComputeMap.set(parent, list);
|
|
226
|
+
}
|
|
227
|
+
list.push(entry);
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Снять регистрацию листового узла (например, при удалении entity).
|
|
231
|
+
*
|
|
232
|
+
* Удаляет запись из `computeNodes` и из `groupComputeMap` родителя.
|
|
233
|
+
* WeakMap-записи (nodeState, nodePaths, nodeParents) утилизируются GC автоматически.
|
|
234
|
+
*
|
|
235
|
+
* @param node Листовой объект-узел
|
|
236
|
+
*/
|
|
237
|
+
unregisterLeaf(node) {
|
|
238
|
+
// Удалить из computeNodes
|
|
239
|
+
const idx = this.computeNodes.findIndex((e) => e.node === node);
|
|
240
|
+
if (idx !== -1) {
|
|
241
|
+
this.computeNodes.splice(idx, 1);
|
|
242
|
+
}
|
|
243
|
+
// Удалить из groupComputeMap родителя
|
|
244
|
+
const parent = this.nodeParents.get(node);
|
|
245
|
+
if (parent) {
|
|
246
|
+
const list = this.groupComputeMap.get(parent);
|
|
247
|
+
if (list) {
|
|
248
|
+
const listIdx = list.findIndex((e) => e.node === node);
|
|
249
|
+
if (listIdx !== -1)
|
|
250
|
+
list.splice(listIdx, 1);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
//# sourceMappingURL=nodeRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeRegistry.js","sourceRoot":"","sources":["../../../../store/store/NodeRegistry/nodeRegistry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { isLeafNode, isGroupNode } from "../../traversal/nodeClassifier";
|
|
2
|
+
export { isLeafNode, isGroupNode } from "../../traversal/nodeClassifier";
|
|
3
|
+
/**
|
|
4
|
+
* Является ли узел списком (массив длины 1-2).
|
|
5
|
+
* array[0] — template (обычная группа), array[1] — опциональный listConfig.
|
|
6
|
+
*
|
|
7
|
+
* NOTE: Более строгая проверка чем traversal.isListNode (длина 1-2).
|
|
8
|
+
* Используется при построении proxy и разрастании keys.
|
|
9
|
+
*/
|
|
10
|
+
export declare function isListNode(node: unknown): node is readonly [object, ...unknown[]];
|
|
11
|
+
/** Утилитарный класс для проверки типа узла. Инициализируется без аргументов. */
|
|
12
|
+
export declare class NodeUtils {
|
|
13
|
+
isLeafNode: typeof isLeafNode;
|
|
14
|
+
isGroupNode: typeof isGroupNode;
|
|
15
|
+
isListNode: typeof isListNode;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=nodeUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeUtils.d.ts","sourceRoot":"","sources":["../../../../store/store/NodeRegistry/nodeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACzE;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,SAAS,CAAC,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAEjF;AAED,iFAAiF;AACjF,qBAAa,SAAS;IACpB,UAAU,oBAAc;IACxB,WAAW,qBAAe;IAC1B,UAAU,oBAAc;CACzB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { isLeafNode, isGroupNode } from "../../traversal/nodeClassifier";
|
|
2
|
+
export { isLeafNode, isGroupNode } from "../../traversal/nodeClassifier";
|
|
3
|
+
/**
|
|
4
|
+
* Является ли узел списком (массив длины 1-2).
|
|
5
|
+
* array[0] — template (обычная группа), array[1] — опциональный listConfig.
|
|
6
|
+
*
|
|
7
|
+
* NOTE: Более строгая проверка чем traversal.isListNode (длина 1-2).
|
|
8
|
+
* Используется при построении proxy и разрастании keys.
|
|
9
|
+
*/
|
|
10
|
+
export function isListNode(node) {
|
|
11
|
+
return Array.isArray(node) && node.length >= 1 && node.length <= 2;
|
|
12
|
+
}
|
|
13
|
+
/** Утилитарный класс для проверки типа узла. Инициализируется без аргументов. */
|
|
14
|
+
export class NodeUtils {
|
|
15
|
+
constructor() {
|
|
16
|
+
this.isLeafNode = isLeafNode;
|
|
17
|
+
this.isGroupNode = isGroupNode;
|
|
18
|
+
this.isListNode = isListNode;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=nodeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeUtils.js","sourceRoot":"","sources":["../../../../store/store/NodeRegistry/nodeUtils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AACzE;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;AACrE,CAAC;AAED,iFAAiF;AACjF,MAAM,OAAO,SAAS;IAAtB;QACE,eAAU,GAAG,UAAU,CAAC;QACxB,gBAAW,GAAG,WAAW,CAAC;QAC1B,eAAU,GAAG,UAAU,CAAC;IAC1B,CAAC;CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { AnyConfigNode } from "../types";
|
|
2
|
+
export interface NodeView {
|
|
3
|
+
storage: AnyConfigNode;
|
|
4
|
+
rules: AnyConfigNode;
|
|
5
|
+
parent: {
|
|
6
|
+
proxy: object | undefined;
|
|
7
|
+
getValues: () => Record<string, unknown>;
|
|
8
|
+
};
|
|
9
|
+
onReset: () => void;
|
|
10
|
+
}
|
|
11
|
+
/** Minimal kernel interface needed to build identity views — avoids circular imports. */
|
|
12
|
+
export interface NodeViewKernel {
|
|
13
|
+
readonly rootConfig: AnyConfigNode;
|
|
14
|
+
readonly nodes: {
|
|
15
|
+
readonly proxyCache: WeakMap<object, unknown>;
|
|
16
|
+
readonly nodeParents: WeakMap<object, object>;
|
|
17
|
+
};
|
|
18
|
+
readonly values: {
|
|
19
|
+
readonly groupSlot: WeakMap<object, Record<string, unknown>>;
|
|
20
|
+
readonly values: Record<string, unknown>;
|
|
21
|
+
};
|
|
22
|
+
readonly resetPipeline: {
|
|
23
|
+
execute(node: AnyConfigNode, vals?: Record<string, unknown>): void;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
/** Build an identity NodeView for a config-mode node (storage === rules === node). */
|
|
27
|
+
export declare function makeIdentityView(node: AnyConfigNode, kernel: NodeViewKernel): NodeView;
|
|
28
|
+
//# sourceMappingURL=nodeView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeView.d.ts","sourceRoot":"","sources":["../../../../store/store/NodeRegistry/nodeView.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,aAAa,CAAC;IACvB,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B,SAAS,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC1C,CAAC;IACF,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,yFAAyF;AACzF,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,UAAU,EAAE,aAAa,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9C,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/C,CAAC;IACF,QAAQ,CAAC,MAAM,EAAE;QACf,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7D,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC1C,CAAC;IACF,QAAQ,CAAC,aAAa,EAAE;QACtB,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;KACpE,CAAC;CACH;AAED,sFAAsF;AACtF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,cAAc,GAAG,QAAQ,CActF"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/** Build an identity NodeView for a config-mode node (storage === rules === node). */
|
|
2
|
+
export function makeIdentityView(node, kernel) {
|
|
3
|
+
const parentNode = kernel.nodes.nodeParents.get(node);
|
|
4
|
+
const effectiveParent = (parentNode ?? kernel.rootConfig);
|
|
5
|
+
return {
|
|
6
|
+
storage: node,
|
|
7
|
+
rules: node,
|
|
8
|
+
parent: {
|
|
9
|
+
// undefined when node is root — matches existing onSubmit(value, store, parent) contract
|
|
10
|
+
proxy: parentNode ? kernel.nodes.proxyCache.get(parentNode) : undefined,
|
|
11
|
+
getValues: () => kernel.values.groupSlot.get(effectiveParent) ?? kernel.values.values,
|
|
12
|
+
},
|
|
13
|
+
onReset: () => kernel.resetPipeline.execute(effectiveParent),
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=nodeView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodeView.js","sourceRoot":"","sources":["../../../../store/store/NodeRegistry/nodeView.ts"],"names":[],"mappings":"AA4BA,sFAAsF;AACtF,MAAM,UAAU,gBAAgB,CAAC,IAAmB,EAAE,MAAsB;IAC1E,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAc,CAA8B,CAAC;IAC7F,MAAM,eAAe,GAAG,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,CAAkB,CAAC;IAC3E,OAAO;QACL,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,IAAI;QACX,MAAM,EAAE;YACN,yFAAyF;YACzF,KAAK,EAAE,UAAU,CAAC,CAAC,CAAE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,UAAoB,CAAwB,CAAC,CAAC,CAAC,SAAS;YACzG,SAAS,EAAE,GAAG,EAAE,CACd,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,eAAyB,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM;SACjF;QACD,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,eAAe,CAAC;KAC7D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { AnyConfigNode } from "./types";
|
|
2
|
+
import type { FieldState } from "../compute/index";
|
|
3
|
+
/**
|
|
4
|
+
* Encapsulates dirty tracking state for the store.
|
|
5
|
+
*
|
|
6
|
+
* Owns the `initialValueMap` WeakMap and provides methods to:
|
|
7
|
+
* - `capture`: record current node values as the baseline (called after init/reset)
|
|
8
|
+
* - `merge`: update baseline from a resolve result patch
|
|
9
|
+
* - `recompute`: recompute dirty flags for the whole tree
|
|
10
|
+
* - `collectSnapshot`: read a subtree's initial snapshot (used by reset)
|
|
11
|
+
*/
|
|
12
|
+
export declare class DirtyTracker {
|
|
13
|
+
private readonly _initialValues;
|
|
14
|
+
/** Capture initial values for all leaf nodes. Called after init and after reset with explicit values. */
|
|
15
|
+
capture(node: AnyConfigNode, nodeState: WeakMap<object, FieldState>): void;
|
|
16
|
+
/** Merge a resolver result patch into the initial snapshot (makes resolver data part of baseline). */
|
|
17
|
+
merge(node: AnyConfigNode, nodeState: WeakMap<object, FieldState>, patch: Record<string, unknown>): void;
|
|
18
|
+
/** Collect initial snapshot for a subtree — used by reset to restore to initial state. */
|
|
19
|
+
collectSnapshot(node: AnyConfigNode): Record<string, unknown>;
|
|
20
|
+
/**
|
|
21
|
+
* Raw WeakMap — retained for backward compatibility with existing deps interfaces
|
|
22
|
+
* (ResetDeps, DirtyDeps, ResolveDeps) that still accept `initialValueMap` directly.
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
get initialValueMap(): WeakMap<object, unknown>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=dirtyTracker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dirtyTracker.d.ts","sourceRoot":"","sources":["../../../store/store/dirtyTracker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAKnD;;;;;;;;GAQG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkC;IAEjE,yGAAyG;IACzG,OAAO,CAAC,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,GAAG,IAAI;IAI1E,sGAAsG;IACtG,KAAK,CACH,IAAI,EAAE,aAAa,EACnB,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,EACtC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,IAAI;IAIP,0FAA0F;IAC1F,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI7D;;;;OAIG;IACH,IAAI,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAE9C;CACF"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { captureInitialValues } from "../dirtyTracking/captureInitialValues";
|
|
2
|
+
import { mergeInitialValues } from "../dirtyTracking/mergeInitialValues";
|
|
3
|
+
import { collectInitialSnapshot } from "../dirtyTracking/collectInitialSnapshot";
|
|
4
|
+
/**
|
|
5
|
+
* Encapsulates dirty tracking state for the store.
|
|
6
|
+
*
|
|
7
|
+
* Owns the `initialValueMap` WeakMap and provides methods to:
|
|
8
|
+
* - `capture`: record current node values as the baseline (called after init/reset)
|
|
9
|
+
* - `merge`: update baseline from a resolve result patch
|
|
10
|
+
* - `recompute`: recompute dirty flags for the whole tree
|
|
11
|
+
* - `collectSnapshot`: read a subtree's initial snapshot (used by reset)
|
|
12
|
+
*/
|
|
13
|
+
export class DirtyTracker {
|
|
14
|
+
constructor() {
|
|
15
|
+
this._initialValues = new WeakMap();
|
|
16
|
+
}
|
|
17
|
+
/** Capture initial values for all leaf nodes. Called after init and after reset with explicit values. */
|
|
18
|
+
capture(node, nodeState) {
|
|
19
|
+
captureInitialValues(node, nodeState, this._initialValues);
|
|
20
|
+
}
|
|
21
|
+
/** Merge a resolver result patch into the initial snapshot (makes resolver data part of baseline). */
|
|
22
|
+
merge(node, nodeState, patch) {
|
|
23
|
+
mergeInitialValues(node, nodeState, this._initialValues, patch);
|
|
24
|
+
}
|
|
25
|
+
/** Collect initial snapshot for a subtree — used by reset to restore to initial state. */
|
|
26
|
+
collectSnapshot(node) {
|
|
27
|
+
return collectInitialSnapshot(node, this._initialValues);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Raw WeakMap — retained for backward compatibility with existing deps interfaces
|
|
31
|
+
* (ResetDeps, DirtyDeps, ResolveDeps) that still accept `initialValueMap` directly.
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
get initialValueMap() {
|
|
35
|
+
return this._initialValues;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=dirtyTracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dirtyTracker.js","sourceRoot":"","sources":["../../../store/store/dirtyTracker.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AAEjF;;;;;;;;GAQG;AACH,MAAM,OAAO,YAAY;IAAzB;QACmB,mBAAc,GAAG,IAAI,OAAO,EAAmB,CAAC;IA6BnE,CAAC;IA3BC,yGAAyG;IACzG,OAAO,CAAC,IAAmB,EAAE,SAAsC;QACjE,oBAAoB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7D,CAAC;IAED,sGAAsG;IACtG,KAAK,CACH,IAAmB,EACnB,SAAsC,EACtC,KAA8B;QAE9B,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;IAED,0FAA0F;IAC1F,eAAe,CAAC,IAAmB;QACjC,OAAO,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC3D,CAAC;IAED;;;;OAIG;IACH,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { AnyConfigNode } from "./types";
|
|
2
|
+
import type { TrackingWrap } from "../compute/recompute";
|
|
3
|
+
/**
|
|
4
|
+
* Карта зависимостей между группами.
|
|
5
|
+
*
|
|
6
|
+
* Объединяет:
|
|
7
|
+
* - `Set<string>` пар donor→recipient (межгрупповые зависимости)
|
|
8
|
+
* - кэш tracking-proxy и флаг «зависимости построены»
|
|
9
|
+
* - логику `createTrackingValues` при первом полном recomputeAll
|
|
10
|
+
*
|
|
11
|
+
* @internal используется `Palistor` и compute-пайплайнами
|
|
12
|
+
*/
|
|
13
|
+
export declare class GroupDepsMap {
|
|
14
|
+
private readonly _deps;
|
|
15
|
+
private readonly _proxyCache;
|
|
16
|
+
private _built;
|
|
17
|
+
private readonly _nodeParents;
|
|
18
|
+
private readonly _nodePaths;
|
|
19
|
+
constructor(rootConfig: AnyConfigNode, nodePaths: WeakMap<object, string>, nodeParents: WeakMap<object, object>);
|
|
20
|
+
/**
|
|
21
|
+
* Raw `Set<string>` пар зависимостей — для совместимости с `recomputeTargeted`
|
|
22
|
+
* и другими функциями, принимающими `groupDeps` напрямую.
|
|
23
|
+
* @internal
|
|
24
|
+
*/
|
|
25
|
+
get deps(): Set<string>;
|
|
26
|
+
/** Были ли кросс-групповые зависимости уже построены в первом recomputeAll? */
|
|
27
|
+
get isBuilt(): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Возвращает `TrackingWrap`-функцию, которая перехватывает READ-доступы
|
|
30
|
+
* к значениям других групп и записывает зависимости в `deps`.
|
|
31
|
+
*
|
|
32
|
+
* Использовать ТОЛЬКО при первом `recomputeAll` (`isBuilt === false`).
|
|
33
|
+
* После завершения вызвать `markBuilt()`.
|
|
34
|
+
*
|
|
35
|
+
* Принимает group-scoped values (parent из nodeSlot):
|
|
36
|
+
* - Для листовых узлов: values = scope родительской группы,
|
|
37
|
+
* currentGroupPath = recipientPath (= путь родительской группы).
|
|
38
|
+
* - Для групповых узлов (с isVisible и т.п.): values = scope
|
|
39
|
+
* родителя группы (grandparent scope), currentGroupPath = путь родителя.
|
|
40
|
+
* recipientPath при этом = собственный путь группы.
|
|
41
|
+
*
|
|
42
|
+
* Кэш использует составной ключ `currentGroupPath\0recipientPath`, чтобы
|
|
43
|
+
* избежать коллизии между листовыми и групповыми узлами с одинаковым recipientPath.
|
|
44
|
+
*/
|
|
45
|
+
getTrackingWrap(): TrackingWrap;
|
|
46
|
+
/**
|
|
47
|
+
* Пометить зависимости как построенные и освободить proxy-кэш.
|
|
48
|
+
* Вызывается ровно один раз — после первого полного `recomputeAll`.
|
|
49
|
+
*/
|
|
50
|
+
markBuilt(): void;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=groupDepsMap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groupDepsMap.d.ts","sourceRoot":"","sources":["../../../store/store/groupDepsMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAI7C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGzD;;;;;;;;;GASG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAc;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8C;IAC1E,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0B;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;gBAGnD,UAAU,EAAE,aAAa,EACzB,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,EAClC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC;IAOtC;;;;OAIG;IACH,IAAI,IAAI,IAAI,GAAG,CAAC,MAAM,CAAC,CAEtB;IAED,+EAA+E;IAC/E,IAAI,OAAO,IAAI,OAAO,CAErB;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe,IAAI,YAAY;IA0B/B;;;OAGG;IACH,SAAS,IAAI,IAAI;CAIlB"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { createGroupDeps } from "../groupDeps/createGroupDeps";
|
|
2
|
+
import { createTrackingValues } from "../groupDeps/createTrackingValues";
|
|
3
|
+
import { getNodeGroupPath } from "../groupDeps/getNodeGroupPath";
|
|
4
|
+
import { isLeafNode } from "../traversal";
|
|
5
|
+
/**
|
|
6
|
+
* Карта зависимостей между группами.
|
|
7
|
+
*
|
|
8
|
+
* Объединяет:
|
|
9
|
+
* - `Set<string>` пар donor→recipient (межгрупповые зависимости)
|
|
10
|
+
* - кэш tracking-proxy и флаг «зависимости построены»
|
|
11
|
+
* - логику `createTrackingValues` при первом полном recomputeAll
|
|
12
|
+
*
|
|
13
|
+
* @internal используется `Palistor` и compute-пайплайнами
|
|
14
|
+
*/
|
|
15
|
+
export class GroupDepsMap {
|
|
16
|
+
constructor(rootConfig, nodePaths, nodeParents) {
|
|
17
|
+
this._proxyCache = new Map();
|
|
18
|
+
this._built = false;
|
|
19
|
+
this._deps = createGroupDeps(rootConfig, nodePaths);
|
|
20
|
+
this._nodePaths = nodePaths;
|
|
21
|
+
this._nodeParents = nodeParents;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Raw `Set<string>` пар зависимостей — для совместимости с `recomputeTargeted`
|
|
25
|
+
* и другими функциями, принимающими `groupDeps` напрямую.
|
|
26
|
+
* @internal
|
|
27
|
+
*/
|
|
28
|
+
get deps() {
|
|
29
|
+
return this._deps;
|
|
30
|
+
}
|
|
31
|
+
/** Были ли кросс-групповые зависимости уже построены в первом recomputeAll? */
|
|
32
|
+
get isBuilt() {
|
|
33
|
+
return this._built;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Возвращает `TrackingWrap`-функцию, которая перехватывает READ-доступы
|
|
37
|
+
* к значениям других групп и записывает зависимости в `deps`.
|
|
38
|
+
*
|
|
39
|
+
* Использовать ТОЛЬКО при первом `recomputeAll` (`isBuilt === false`).
|
|
40
|
+
* После завершения вызвать `markBuilt()`.
|
|
41
|
+
*
|
|
42
|
+
* Принимает group-scoped values (parent из nodeSlot):
|
|
43
|
+
* - Для листовых узлов: values = scope родительской группы,
|
|
44
|
+
* currentGroupPath = recipientPath (= путь родительской группы).
|
|
45
|
+
* - Для групповых узлов (с isVisible и т.п.): values = scope
|
|
46
|
+
* родителя группы (grandparent scope), currentGroupPath = путь родителя.
|
|
47
|
+
* recipientPath при этом = собственный путь группы.
|
|
48
|
+
*
|
|
49
|
+
* Кэш использует составной ключ `currentGroupPath\0recipientPath`, чтобы
|
|
50
|
+
* избежать коллизии между листовыми и групповыми узлами с одинаковым recipientPath.
|
|
51
|
+
*/
|
|
52
|
+
getTrackingWrap() {
|
|
53
|
+
return (node, values) => {
|
|
54
|
+
const recipientPath = getNodeGroupPath(node, this._nodeParents, this._nodePaths);
|
|
55
|
+
// Leaf node: currentGroupPath = recipientPath (= parent group path).
|
|
56
|
+
// Group node (with computed props): currentGroupPath = parent group's path
|
|
57
|
+
// (which is the root of the group-scoped values we receive),
|
|
58
|
+
// recipientPath = group's own path.
|
|
59
|
+
const isLeaf = isLeafNode(node);
|
|
60
|
+
const currentGroupPath = isLeaf
|
|
61
|
+
? recipientPath
|
|
62
|
+
: (() => {
|
|
63
|
+
const parent = this._nodeParents.get(node);
|
|
64
|
+
return parent ? (this._nodePaths.get(parent) ?? "") : "";
|
|
65
|
+
})();
|
|
66
|
+
const cacheKey = `${currentGroupPath}\0${recipientPath}`;
|
|
67
|
+
const cached = this._proxyCache.get(cacheKey);
|
|
68
|
+
if (cached)
|
|
69
|
+
return cached;
|
|
70
|
+
const proxy = createTrackingValues(values, recipientPath, this._deps, currentGroupPath);
|
|
71
|
+
this._proxyCache.set(cacheKey, proxy);
|
|
72
|
+
return proxy;
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Пометить зависимости как построенные и освободить proxy-кэш.
|
|
77
|
+
* Вызывается ровно один раз — после первого полного `recomputeAll`.
|
|
78
|
+
*/
|
|
79
|
+
markBuilt() {
|
|
80
|
+
this._built = true;
|
|
81
|
+
this._proxyCache.clear();
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=groupDepsMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groupDepsMap.js","sourceRoot":"","sources":["../../../store/store/groupDepsMap.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;;;;;;;;GASG;AACH,MAAM,OAAO,YAAY;IAOvB,YACE,UAAyB,EACzB,SAAkC,EAClC,WAAoC;QARrB,gBAAW,GAAG,IAAI,GAAG,EAAmC,CAAC;QAClE,WAAM,GAAG,KAAK,CAAC;QASrB,IAAI,CAAC,KAAK,GAAG,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,+EAA+E;IAC/E,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe;QACb,OAAO,CAAC,IAAY,EAAE,MAA+B,EAA2B,EAAE;YAChF,MAAM,aAAa,GAAG,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YAEjF,qEAAqE;YACrE,2EAA2E;YAC3E,6DAA6D;YAC7D,oCAAoC;YACpC,MAAM,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,gBAAgB,GAAW,MAAM;gBACrC,CAAC,CAAC,aAAa;gBACf,CAAC,CAAC,CAAC,GAAG,EAAE;oBACJ,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC3C,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,CAAC,CAAC,EAAE,CAAC;YAET,MAAM,QAAQ,GAAG,GAAG,gBAAgB,KAAK,aAAa,EAAE,CAAC;YACzD,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,MAAM;gBAAE,OAAO,MAAM,CAAC;YAE1B,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;YACxF,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACtC,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AnyConfigNode } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Проверяет, есть ли у узла вычисляемые свойства (функции isVisible, isRequired…).
|
|
4
|
+
* Нужно для промежуточных узлов-групп (passport.isVisible).
|
|
5
|
+
*/
|
|
6
|
+
export declare function hasComputedProps(node: AnyConfigNode): boolean;
|
|
7
|
+
//# sourceMappingURL=hasComputedProps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasComputedProps.d.ts","sourceRoot":"","sources":["../../../store/store/hasComputedProps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAM7D"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { FIELD_STATE_PROPS } from "../constants";
|
|
2
|
+
/**
|
|
3
|
+
* Проверяет, есть ли у узла вычисляемые свойства (функции isVisible, isRequired…).
|
|
4
|
+
* Нужно для промежуточных узлов-групп (passport.isVisible).
|
|
5
|
+
*/
|
|
6
|
+
export function hasComputedProps(node) {
|
|
7
|
+
for (const key of FIELD_STATE_PROPS) {
|
|
8
|
+
if (key === "value")
|
|
9
|
+
continue;
|
|
10
|
+
if (node[key] !== undefined)
|
|
11
|
+
return true;
|
|
12
|
+
}
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=hasComputedProps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hasComputedProps.js","sourceRoot":"","sources":["../../../store/store/hasComputedProps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAmB;IAClD,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACpC,IAAI,GAAG,KAAK,OAAO;YAAE,SAAS;QAC9B,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC;IAC3C,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export type { FieldState } from "../compute/index";
|
|
2
|
+
export type { Resolve, NotifyFn } from "../resolvePipeline";
|
|
3
|
+
export type { SubmitResult } from "../submitPipeline/submitPipeline";
|
|
4
|
+
export type { Unsubscribe, MaybeComputed, MaybeTranslatable, DeepPartialValues, FieldTypeMeta, ConfigNode, FieldProxyNode, GroupProxyNode, ConfigProxy, FieldMapping, ApplyFieldMapping, RawStoreProxy, RawStoreProxyMarker, ExtractValues, ProxyStoreOptions, ProxyStore, } from "./types";
|
|
5
|
+
export { Palistor } from "./palistor";
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../store/store/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC5D,YAAY,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGrE,YAAY,EACV,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|