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,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Поверхностное сравнение двух FieldState.
|
|
3
|
+
*/
|
|
4
|
+
export function fieldStateChanged(a, b) {
|
|
5
|
+
return (a.value !== b.value ||
|
|
6
|
+
a.isVisible !== b.isVisible ||
|
|
7
|
+
a.isRequired !== b.isRequired ||
|
|
8
|
+
a.isDisabled !== b.isDisabled ||
|
|
9
|
+
a.isReadOnly !== b.isReadOnly ||
|
|
10
|
+
a.label !== b.label ||
|
|
11
|
+
a.placeholder !== b.placeholder ||
|
|
12
|
+
a.description !== b.description ||
|
|
13
|
+
a.isInvalid !== b.isInvalid ||
|
|
14
|
+
a.errorMessage !== b.errorMessage ||
|
|
15
|
+
a.submitting !== b.submitting ||
|
|
16
|
+
a.dirty !== b.dirty ||
|
|
17
|
+
a.revalidate !== b.revalidate ||
|
|
18
|
+
a.loading !== b.loading);
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=fieldStateChanged.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fieldStateChanged.js","sourceRoot":"","sources":["../../../store/compute/fieldStateChanged.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAAa,EAAE,CAAa;IAC5D,OAAO,CACL,CAAC,CAAC,KAAK,KAAW,CAAC,CAAC,KAAK;QACzB,CAAC,CAAC,SAAS,KAAO,CAAC,CAAC,SAAS;QAC7B,CAAC,CAAC,UAAU,KAAM,CAAC,CAAC,UAAU;QAC9B,CAAC,CAAC,UAAU,KAAM,CAAC,CAAC,UAAU;QAC9B,CAAC,CAAC,UAAU,KAAM,CAAC,CAAC,UAAU;QAC9B,CAAC,CAAC,KAAK,KAAW,CAAC,CAAC,KAAK;QACzB,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW;QAC/B,CAAC,CAAC,WAAW,KAAK,CAAC,CAAC,WAAW;QAC/B,CAAC,CAAC,SAAS,KAAO,CAAC,CAAC,SAAS;QAC7B,CAAC,CAAC,YAAY,KAAI,CAAC,CAAC,YAAY;QAChC,CAAC,CAAC,UAAU,KAAM,CAAC,CAAC,UAAU;QAC9B,CAAC,CAAC,KAAK,KAAW,CAAC,CAAC,KAAK;QACzB,CAAC,CAAC,UAAU,KAAM,CAAC,CAAC,UAAU;QAC9B,CAAC,CAAC,OAAO,KAAS,CAAC,CAAC,OAAO,CAC5B,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { FieldState } from "./types";
|
|
2
|
+
export { resolveFlag } from "./resolveFlag";
|
|
3
|
+
export { resolveString } from "./resolveString";
|
|
4
|
+
export { isEmpty } from "./isEmpty";
|
|
5
|
+
export { computeFieldState } from "./computeFieldState";
|
|
6
|
+
export { fieldStateChanged } from "./fieldStateChanged";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../store/compute/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { resolveFlag } from "./resolveFlag";
|
|
2
|
+
export { resolveString } from "./resolveString";
|
|
3
|
+
export { isEmpty } from "./isEmpty";
|
|
4
|
+
export { computeFieldState } from "./computeFieldState";
|
|
5
|
+
export { fieldStateChanged } from "./fieldStateChanged";
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../store/compute/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEmpty.d.ts","sourceRoot":"","sources":["../../../store/compute/isEmpty.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAK/C"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks if a value is "empty" for isRequired validation purposes.
|
|
3
|
+
* Empty string, null, undefined, NaN → empty.
|
|
4
|
+
*/
|
|
5
|
+
export function isEmpty(value) {
|
|
6
|
+
if (value == null)
|
|
7
|
+
return true;
|
|
8
|
+
if (typeof value === "string" && value.trim() === "")
|
|
9
|
+
return true;
|
|
10
|
+
if (typeof value === "number" && Number.isNaN(value))
|
|
11
|
+
return true;
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=isEmpty.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"isEmpty.js","sourceRoot":"","sources":["../../../store/compute/isEmpty.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAClE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClE,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AnyConfigNode } from "../../store/types";
|
|
2
|
+
import type { ComputeEntry, GroupComputeMap } from "../../store/registerNodes";
|
|
3
|
+
/**
|
|
4
|
+
* Рекурсивно собирает все compute-записи поддерева группового узла.
|
|
5
|
+
*
|
|
6
|
+
* Для каждого группового узла из groupComputeMap берутся его прямые записи
|
|
7
|
+
* (листья + группы с computed-свойствами), затем рекурсия в дочерние группы.
|
|
8
|
+
* Листовые узлы пропускаются — они уже учтены в compute-list своего родителя.
|
|
9
|
+
*/
|
|
10
|
+
export declare function collectGroupComputeNodes(groupNode: AnyConfigNode, groupComputeMap: GroupComputeMap): ComputeEntry[];
|
|
11
|
+
//# sourceMappingURL=collectGroupComputeNodes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectGroupComputeNodes.d.ts","sourceRoot":"","sources":["../../../../store/compute/recompute/collectGroupComputeNodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE/E;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,aAAa,EACxB,eAAe,EAAE,eAAe,GAC/B,YAAY,EAAE,CAkBhB"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { configKeys, isLeafNode } from "../../traversal";
|
|
2
|
+
/**
|
|
3
|
+
* Рекурсивно собирает все compute-записи поддерева группового узла.
|
|
4
|
+
*
|
|
5
|
+
* Для каждого группового узла из groupComputeMap берутся его прямые записи
|
|
6
|
+
* (листья + группы с computed-свойствами), затем рекурсия в дочерние группы.
|
|
7
|
+
* Листовые узлы пропускаются — они уже учтены в compute-list своего родителя.
|
|
8
|
+
*/
|
|
9
|
+
export function collectGroupComputeNodes(groupNode, groupComputeMap) {
|
|
10
|
+
const result = [];
|
|
11
|
+
// Прямые записи этой группы (листья + группы с computed-свойствами)
|
|
12
|
+
const ownEntries = groupComputeMap.get(groupNode);
|
|
13
|
+
if (ownEntries)
|
|
14
|
+
result.push(...ownEntries);
|
|
15
|
+
// Рекурсия в дочерние группы
|
|
16
|
+
for (const key of configKeys(groupNode)) {
|
|
17
|
+
const child = groupNode[key];
|
|
18
|
+
if (!child || typeof child !== "object")
|
|
19
|
+
continue;
|
|
20
|
+
if (isLeafNode(child))
|
|
21
|
+
continue; // уже в ownEntries родителя
|
|
22
|
+
result.push(...collectGroupComputeNodes(child, groupComputeMap));
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=collectGroupComputeNodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectGroupComputeNodes.js","sourceRoot":"","sources":["../../../../store/compute/recompute/collectGroupComputeNodes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGzD;;;;;;GAMG;AACH,MAAM,UAAU,wBAAwB,CACtC,SAAwB,EACxB,eAAgC;IAEhC,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,oEAAoE;IACpE,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAClD,IAAI,UAAU;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC;IAE3C,6BAA6B;IAC7B,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,SAAoC,CAAC,EAAE,CAAC;QACnE,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAkB,CAAC;QAE9C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAElD,IAAI,UAAU,CAAC,KAAK,CAAC;YAAE,SAAS,CAAC,4BAA4B;QAC7D,MAAM,CAAC,IAAI,CAAC,GAAG,wBAAwB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AnyConfigNode } from "../../store/types";
|
|
2
|
+
import type { LeafEntry, GroupLeafMap } from "../../store/registerNodes";
|
|
3
|
+
/**
|
|
4
|
+
* Рекурсивно собирает все leaf-записи поддерева группового узла.
|
|
5
|
+
*
|
|
6
|
+
* Для каждого группового узла из groupLeafMap берутся его прямые листья,
|
|
7
|
+
* затем рекурсия в дочерние группы. Листовые узлы (с "value") пропускаются —
|
|
8
|
+
* они уже учтены в leaf-list своего родителя.
|
|
9
|
+
*/
|
|
10
|
+
export declare function collectGroupLeafNodes(groupNode: AnyConfigNode, groupLeafMap: GroupLeafMap): LeafEntry[];
|
|
11
|
+
//# sourceMappingURL=collectGroupLeafNodes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectGroupLeafNodes.d.ts","sourceRoot":"","sources":["../../../../store/compute/recompute/collectGroupLeafNodes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzE;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,aAAa,EACxB,YAAY,EAAE,YAAY,GACzB,SAAS,EAAE,CAkBb"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { configKeys, isLeaf } from "../../traversal";
|
|
2
|
+
/**
|
|
3
|
+
* Рекурсивно собирает все leaf-записи поддерева группового узла.
|
|
4
|
+
*
|
|
5
|
+
* Для каждого группового узла из groupLeafMap берутся его прямые листья,
|
|
6
|
+
* затем рекурсия в дочерние группы. Листовые узлы (с "value") пропускаются —
|
|
7
|
+
* они уже учтены в leaf-list своего родителя.
|
|
8
|
+
*/
|
|
9
|
+
export function collectGroupLeafNodes(groupNode, groupLeafMap) {
|
|
10
|
+
const result = [];
|
|
11
|
+
// Прямые листья этой группы (включая виртуальный лист самой группы, если есть)
|
|
12
|
+
const ownLeaves = groupLeafMap.get(groupNode);
|
|
13
|
+
if (ownLeaves)
|
|
14
|
+
result.push(...ownLeaves);
|
|
15
|
+
// Рекурсия в дочерние группы
|
|
16
|
+
for (const key of configKeys(groupNode)) {
|
|
17
|
+
const child = groupNode[key];
|
|
18
|
+
if (!child || typeof child !== "object")
|
|
19
|
+
continue;
|
|
20
|
+
if (isLeaf(child))
|
|
21
|
+
continue; // уже в ownLeaves родителя
|
|
22
|
+
result.push(...collectGroupLeafNodes(child, groupLeafMap));
|
|
23
|
+
}
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=collectGroupLeafNodes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collectGroupLeafNodes.js","sourceRoot":"","sources":["../../../../store/compute/recompute/collectGroupLeafNodes.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGrD;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAAwB,EACxB,YAA0B;IAE1B,MAAM,MAAM,GAAgB,EAAE,CAAC;IAE/B,+EAA+E;IAC/E,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,SAAS;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;IAEzC,6BAA6B;IAC7B,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,SAAoC,CAAC,EAAE,CAAC;QACnE,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAkB,CAAC;QAE9C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,SAAS;QAElD,IAAI,MAAM,CAAC,KAAK,CAAC;YAAE,SAAS,CAAC,2BAA2B;QACxD,MAAM,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type { TrackingWrap, RecomputeTargetedDeps } from "./types";
|
|
2
|
+
export { topologicalSortComputed } from "./topologicalSortComputed";
|
|
3
|
+
export { collectGroupComputeNodes } from "./collectGroupComputeNodes";
|
|
4
|
+
export { recomputeLeaves } from "./recomputeLeaves";
|
|
5
|
+
export { recomputeTargeted } from "./recomputeTargeted";
|
|
6
|
+
export { recomputeAndNotify } from "./recomputeAndNotify";
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../store/compute/recompute/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { topologicalSortComputed } from "./topologicalSortComputed";
|
|
2
|
+
export { collectGroupComputeNodes } from "./collectGroupComputeNodes";
|
|
3
|
+
export { recomputeLeaves } from "./recomputeLeaves";
|
|
4
|
+
export { recomputeTargeted } from "./recomputeTargeted";
|
|
5
|
+
export { recomputeAndNotify } from "./recomputeAndNotify";
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../store/compute/recompute/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Пересчитать все computed-свойства, объединить с ранее изменёнными узлами
|
|
3
|
+
* и уведомить подписчиков.
|
|
4
|
+
*
|
|
5
|
+
* Инкапсулирует паттерн: recomputeAll → merge changed → notifyChanged.
|
|
6
|
+
*/
|
|
7
|
+
export declare function recomputeAndNotify(changed: Set<object>, recompute: () => Set<object>, notifyChanged: (changed: Set<object>) => void): void;
|
|
8
|
+
//# sourceMappingURL=recomputeAndNotify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recomputeAndNotify.d.ts","sourceRoot":"","sources":["../../../../store/compute/recompute/recomputeAndNotify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,EACpB,SAAS,EAAE,MAAM,GAAG,CAAC,MAAM,CAAC,EAC5B,aAAa,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,GAC5C,IAAI,CAIN"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Пересчитать все computed-свойства, объединить с ранее изменёнными узлами
|
|
3
|
+
* и уведомить подписчиков.
|
|
4
|
+
*
|
|
5
|
+
* Инкапсулирует паттерн: recomputeAll → merge changed → notifyChanged.
|
|
6
|
+
*/
|
|
7
|
+
export function recomputeAndNotify(changed, recompute, notifyChanged) {
|
|
8
|
+
const recomputed = recompute();
|
|
9
|
+
for (const n of changed)
|
|
10
|
+
recomputed.add(n);
|
|
11
|
+
notifyChanged(recomputed);
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=recomputeAndNotify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recomputeAndNotify.js","sourceRoot":"","sources":["../../../../store/compute/recompute/recomputeAndNotify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAoB,EACpB,SAA4B,EAC5B,aAA6C;IAE7C,MAAM,UAAU,GAAG,SAAS,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,IAAI,OAAO;QAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC3C,aAAa,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type FieldState } from "../index";
|
|
2
|
+
import type { TranslateFn } from "../../store/types";
|
|
3
|
+
import type { ComputeEntry } from "../../store/registerNodes";
|
|
4
|
+
import { type ValuesCache } from "../../valuesCache/valuesCache";
|
|
5
|
+
import type { TrackingWrap } from "./types";
|
|
6
|
+
/**
|
|
7
|
+
* Пересчитать вычисленное состояние для заданного списка листовых узлов.
|
|
8
|
+
*
|
|
9
|
+
* Фаза 1: Пересчитать computed-значения (value — функция) в топологическом порядке.
|
|
10
|
+
* Фаза 2: Пересчитать FieldState (isVisible, isRequired, error…) для всех полей.
|
|
11
|
+
*
|
|
12
|
+
* Каждый узел получает group-scoped values — значения Parent-группы из nodeSlot.
|
|
13
|
+
* Это позволяет конфигу писать функции в терминах своей группы (без навигации
|
|
14
|
+
* от корня), даже когда конфиг вложен в глобальный store.
|
|
15
|
+
* Для кросс-групповых зависимостей используется явная навигация через объект parent.
|
|
16
|
+
*
|
|
17
|
+
* @param trackingWrap — опциональная обёртка для отслеживания кросс-групповых зависимостей.
|
|
18
|
+
* Если передана, group-scoped values оборачиваются через неё.
|
|
19
|
+
*
|
|
20
|
+
* Возвращает Set узлов, чьё состояние изменилось (для notify).
|
|
21
|
+
*/
|
|
22
|
+
export declare function recomputeLeaves(computeNodes: ComputeEntry[], nodeState: WeakMap<object, FieldState>, valuesCache: ValuesCache, translate: TranslateFn, trackingWrap?: TrackingWrap): Set<object>;
|
|
23
|
+
//# sourceMappingURL=recomputeLeaves.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recomputeLeaves.d.ts","sourceRoot":"","sources":["../../../../store/compute/recompute/recomputeLeaves.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAwC,MAAM,UAAU,CAAC;AACjF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAA0B,KAAK,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,YAAY,EAAE,EAC5B,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,EACtC,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,WAAW,EACtB,YAAY,CAAC,EAAE,YAAY,GAC1B,GAAG,CAAC,MAAM,CAAC,CA8Db"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { computeFieldState, fieldStateChanged } from "../index";
|
|
2
|
+
import { updateValuesCacheEntry } from "../../valuesCache/valuesCache";
|
|
3
|
+
import { topologicalSortComputed } from "./topologicalSortComputed";
|
|
4
|
+
/**
|
|
5
|
+
* Пересчитать вычисленное состояние для заданного списка листовых узлов.
|
|
6
|
+
*
|
|
7
|
+
* Фаза 1: Пересчитать computed-значения (value — функция) в топологическом порядке.
|
|
8
|
+
* Фаза 2: Пересчитать FieldState (isVisible, isRequired, error…) для всех полей.
|
|
9
|
+
*
|
|
10
|
+
* Каждый узел получает group-scoped values — значения Parent-группы из nodeSlot.
|
|
11
|
+
* Это позволяет конфигу писать функции в терминах своей группы (без навигации
|
|
12
|
+
* от корня), даже когда конфиг вложен в глобальный store.
|
|
13
|
+
* Для кросс-групповых зависимостей используется явная навигация через объект parent.
|
|
14
|
+
*
|
|
15
|
+
* @param trackingWrap — опциональная обёртка для отслеживания кросс-групповых зависимостей.
|
|
16
|
+
* Если передана, group-scoped values оборачиваются через неё.
|
|
17
|
+
*
|
|
18
|
+
* Возвращает Set узлов, чьё состояние изменилось (для notify).
|
|
19
|
+
*/
|
|
20
|
+
export function recomputeLeaves(computeNodes, nodeState, valuesCache, translate, trackingWrap) {
|
|
21
|
+
// ── Фаза 1: Пересчёт computed-значений ──────────────────────────────────
|
|
22
|
+
const computedEntries = computeNodes.filter(({ node }) => typeof node.value === "function");
|
|
23
|
+
const changed = new Set();
|
|
24
|
+
if (computedEntries.length > 0) {
|
|
25
|
+
const sorted = topologicalSortComputed(computedEntries);
|
|
26
|
+
for (const { node } of sorted) {
|
|
27
|
+
// Получаем group-scoped values: parent-объект из nodeSlot, чтобы computed-функция
|
|
28
|
+
// работала в терминах своей группы, а не глобального корня.
|
|
29
|
+
const groupValues = valuesCache.nodeSlot.get(node)?.parent ?? valuesCache.values;
|
|
30
|
+
const currentValues = trackingWrap ? trackingWrap(node, groupValues) : groupValues;
|
|
31
|
+
const state = nodeState.get(node);
|
|
32
|
+
if (!state)
|
|
33
|
+
continue; // Узел ещё не инициализирован — пропускаем молча; Phase 2 всё равно возьмёт prev?.value ?? "".
|
|
34
|
+
// Вычисляем новое значение, передавая в функцию текущий снапшот.
|
|
35
|
+
// node.value здесь — selector вида (values) => values.a + values.b.
|
|
36
|
+
const computedValue = node.value(currentValues);
|
|
37
|
+
// Сравнение по ссылке (===): computed-функция должна возвращать стабильную ссылку,
|
|
38
|
+
// если содержимое не изменилось; иначе Phase 2 излишне пересчитает downstream-узлы.
|
|
39
|
+
// Если state отсутствует (узел ещё не инициализирован) — пропускаем молча;
|
|
40
|
+
// Phase 2 всё равно возьмёт prev?.value ?? "".
|
|
41
|
+
if (state && state.value !== computedValue) {
|
|
42
|
+
nodeState.set(node, { ...state, value: computedValue });
|
|
43
|
+
// Мутируем valuesCache.values in-place через slot (O(1)), чтобы узлы,
|
|
44
|
+
// идущие дальше в топологическом порядке, уже видели обновлённое значение.
|
|
45
|
+
updateValuesCacheEntry(valuesCache, node, computedValue);
|
|
46
|
+
changed.add(node);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// ── Фаза 2: Пересчёт FieldState (флаги, валидация, строки) ──────────────
|
|
51
|
+
for (const { node } of computeNodes) {
|
|
52
|
+
const prev = nodeState.get(node);
|
|
53
|
+
const currentValue = prev?.value ?? "";
|
|
54
|
+
// Preserve revalidate flag: skip validation when revalidate is false
|
|
55
|
+
const revalidate = prev?.revalidate ?? false;
|
|
56
|
+
// Group-scoped values: config functions получают значения своей группы,
|
|
57
|
+
// а не глобального корня, что позволяет писать isVisible/validate/value
|
|
58
|
+
// в терминах текущего контекста независимо от глубины вложенности.
|
|
59
|
+
const groupValues = valuesCache.nodeSlot.get(node)?.parent ?? valuesCache.values;
|
|
60
|
+
const allValues = trackingWrap ? trackingWrap(node, groupValues) : groupValues;
|
|
61
|
+
const next = computeFieldState(node, currentValue, allValues, revalidate, translate);
|
|
62
|
+
// Preserve management flags that computeFieldState doesn't produce
|
|
63
|
+
if (prev?.submitting !== undefined)
|
|
64
|
+
next.submitting = prev.submitting;
|
|
65
|
+
if (prev?.dirty !== undefined)
|
|
66
|
+
next.dirty = prev.dirty;
|
|
67
|
+
if (prev?.revalidate !== undefined)
|
|
68
|
+
next.revalidate = prev.revalidate;
|
|
69
|
+
// Проверяем, изменилось ли что-то
|
|
70
|
+
if (prev && !fieldStateChanged(prev, next))
|
|
71
|
+
continue;
|
|
72
|
+
nodeState.set(node, next);
|
|
73
|
+
changed.add(node);
|
|
74
|
+
}
|
|
75
|
+
return changed;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=recomputeLeaves.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recomputeLeaves.js","sourceRoot":"","sources":["../../../../store/compute/recompute/recomputeLeaves.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAGjF,OAAO,EAAE,sBAAsB,EAAoB,MAAM,+BAA+B,CAAC;AACzF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAGpE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,eAAe,CAC7B,YAA4B,EAC5B,SAAsC,EACtC,WAAwB,EACxB,SAAsB,EACtB,YAA2B;IAE3B,2EAA2E;IAC3E,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;IAC5F,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAC;QAExD,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,MAAM,EAAE,CAAC;YAC9B,kFAAkF;YAClF,4DAA4D;YAC5D,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC;YACjF,MAAM,aAAa,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;YAEnF,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK;gBAAE,SAAS,CAAC,+FAA+F;YAErH,iEAAiE;YACjE,oEAAoE;YACpE,MAAM,aAAa,GAAI,IAAI,CAAC,KAAsD,CAAC,aAAa,CAAC,CAAC;YAElG,mFAAmF;YACnF,oFAAoF;YACpF,2EAA2E;YAC3E,+CAA+C;YAC/C,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,aAAa,EAAE,CAAC;gBAC3C,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;gBACxD,sEAAsE;gBACtE,2EAA2E;gBAC3E,sBAAsB,CAAC,WAAW,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;gBACzD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,2EAA2E;IAE3E,KAAK,MAAM,EAAE,IAAI,EAAE,IAAI,YAAY,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,YAAY,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;QACvC,qEAAqE;QACrE,MAAM,UAAU,GAAG,IAAI,EAAE,UAAU,IAAI,KAAK,CAAC;QAC7C,wEAAwE;QACxE,wEAAwE;QACxE,mEAAmE;QACnE,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC;QACjF,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC;QAC/E,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAErF,mEAAmE;QACnE,IAAI,IAAI,EAAE,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACtE,IAAI,IAAI,EAAE,KAAK,KAAK,SAAS;YAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvD,IAAI,IAAI,EAAE,UAAU,KAAK,SAAS;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAEtE,kCAAkC;QAClC,IAAI,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS;QAErD,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { RecomputeTargetedDeps } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Таргетированный пересчёт: вместо пересчёта ВСЕХ групп,
|
|
4
|
+
* пересчитывает только затронутые группы + их реципиентов.
|
|
5
|
+
*
|
|
6
|
+
* Алгоритм:
|
|
7
|
+
* 1. Определить группы изменённых узлов (source groups).
|
|
8
|
+
* 2. BFS по карте зависимостей: собрать все группы-реципиенты в топологическом порядке.
|
|
9
|
+
* 3. Для каждой затронутой группы пересчитать только её OWN листья (не рекурсивно).
|
|
10
|
+
*
|
|
11
|
+
* @param changedNodes — узлы, чьи значения изменились (написанный узел + setter targets)
|
|
12
|
+
*/
|
|
13
|
+
export declare function recomputeTargeted(changedNodes: Set<object>, deps: RecomputeTargetedDeps): Set<object>;
|
|
14
|
+
//# sourceMappingURL=recomputeTargeted.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recomputeTargeted.d.ts","sourceRoot":"","sources":["../../../../store/compute/recompute/recomputeTargeted.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAKrD;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EACzB,IAAI,EAAE,qBAAqB,GAC1B,GAAG,CAAC,MAAM,CAAC,CA4Cb"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { getNodeGroupPath, getRecipientGroups, resolveGroupByPath, } from "../../groupDeps/groupDeps";
|
|
2
|
+
import { recomputeLeaves } from "./recomputeLeaves";
|
|
3
|
+
// ─── Таргетированный пересчёт ────────────────────────────────────────────────
|
|
4
|
+
/**
|
|
5
|
+
* Таргетированный пересчёт: вместо пересчёта ВСЕХ групп,
|
|
6
|
+
* пересчитывает только затронутые группы + их реципиентов.
|
|
7
|
+
*
|
|
8
|
+
* Алгоритм:
|
|
9
|
+
* 1. Определить группы изменённых узлов (source groups).
|
|
10
|
+
* 2. BFS по карте зависимостей: собрать все группы-реципиенты в топологическом порядке.
|
|
11
|
+
* 3. Для каждой затронутой группы пересчитать только её OWN листья (не рекурсивно).
|
|
12
|
+
*
|
|
13
|
+
* @param changedNodes — узлы, чьи значения изменились (написанный узел + setter targets)
|
|
14
|
+
*/
|
|
15
|
+
export function recomputeTargeted(changedNodes, deps) {
|
|
16
|
+
const { rootConfig, groupComputeMap, nodeState, nodeParents, nodePaths, groupDeps, valuesCache, translate, } = deps;
|
|
17
|
+
// 1. Находим группы-источники изменений
|
|
18
|
+
const sourceGroups = new Set();
|
|
19
|
+
for (const node of changedNodes) {
|
|
20
|
+
sourceGroups.add(getNodeGroupPath(node, nodeParents, nodePaths));
|
|
21
|
+
}
|
|
22
|
+
// 2. BFS — собираем все затронутые группы в порядке "сначала доноры, потом реципиенты"
|
|
23
|
+
const orderedGroups = [...sourceGroups];
|
|
24
|
+
const visited = new Set(sourceGroups);
|
|
25
|
+
let i = 0;
|
|
26
|
+
while (i < orderedGroups.length) {
|
|
27
|
+
const current = orderedGroups[i++];
|
|
28
|
+
const recipients = getRecipientGroups(groupDeps, current);
|
|
29
|
+
for (const r of recipients) {
|
|
30
|
+
if (!visited.has(r)) {
|
|
31
|
+
visited.add(r);
|
|
32
|
+
orderedGroups.push(r);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// 3. Пересчитываем каждую группу (только OWN листья, не рекурсивно)
|
|
37
|
+
const allChanged = new Set();
|
|
38
|
+
for (const groupPath of orderedGroups) {
|
|
39
|
+
const groupNode = resolveGroupByPath(rootConfig, groupPath);
|
|
40
|
+
// Entity-группы (пути "_entity_.*") не существуют в rootConfig — пропускаем
|
|
41
|
+
if (!groupNode)
|
|
42
|
+
continue;
|
|
43
|
+
const ownEntries = groupComputeMap.get(groupNode) ?? [];
|
|
44
|
+
const changed = recomputeLeaves(ownEntries, nodeState, valuesCache, translate);
|
|
45
|
+
for (const n of changed)
|
|
46
|
+
allChanged.add(n);
|
|
47
|
+
}
|
|
48
|
+
return allChanged;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=recomputeTargeted.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recomputeTargeted.js","sourceRoot":"","sources":["../../../../store/compute/recompute/recomputeTargeted.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,gFAAgF;AAEhF;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iBAAiB,CAC/B,YAAyB,EACzB,IAA2B;IAG3B,MAAM,EACJ,UAAU,EAAE,eAAe,EAC3B,SAAS,EAAE,WAAW,EAAE,SAAS,EACjC,SAAS,EAAE,WAAW,EAAE,SAAS,GAClC,GAAG,IAAI,CAAC;IAET,wCAAwC;IACxC,MAAM,YAAY,GAAG,IAAI,GAAG,EAAU,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,uFAAuF;IACvF,MAAM,aAAa,GAAa,CAAC,GAAG,YAAY,CAAC,CAAC;IAClD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,YAAY,CAAC,CAAC;IAEtC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC;QACnC,MAAM,UAAU,GAAG,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAE1D,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;gBACf,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;IAErC,KAAK,MAAM,SAAS,IAAI,aAAa,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,kBAAkB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC5D,4EAA4E;QAC5E,IAAI,CAAC,SAAS;YAAE,SAAS;QACzB,MAAM,UAAU,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACxD,MAAM,OAAO,GAAG,eAAe,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAC/E,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { AnyConfigNode } from "../../store/types";
|
|
2
|
+
/**
|
|
3
|
+
* Топологическая сортировка computed-узлов по dependencies.
|
|
4
|
+
*
|
|
5
|
+
* Если computed A зависит от computed B (B.path ∈ A.dependencies),
|
|
6
|
+
* B будет вычислен раньше A. Это гарантирует корректный порядок
|
|
7
|
+
* при цепочках вычислений (subtotal → tax → total).
|
|
8
|
+
*/
|
|
9
|
+
export declare function topologicalSortComputed(computedEntries: Array<{
|
|
10
|
+
node: AnyConfigNode;
|
|
11
|
+
path: string;
|
|
12
|
+
}>): Array<{
|
|
13
|
+
node: AnyConfigNode;
|
|
14
|
+
path: string;
|
|
15
|
+
}>;
|
|
16
|
+
//# sourceMappingURL=topologicalSortComputed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topologicalSortComputed.d.ts","sourceRoot":"","sources":["../../../../store/compute/recompute/topologicalSortComputed.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,eAAe,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC5D,KAAK,CAAC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CA4D9C"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Топологическая сортировка computed-узлов по dependencies.
|
|
3
|
+
*
|
|
4
|
+
* Если computed A зависит от computed B (B.path ∈ A.dependencies),
|
|
5
|
+
* B будет вычислен раньше A. Это гарантирует корректный порядок
|
|
6
|
+
* при цепочках вычислений (subtotal → tax → total).
|
|
7
|
+
*/
|
|
8
|
+
export function topologicalSortComputed(computedEntries) {
|
|
9
|
+
if (computedEntries.length <= 1)
|
|
10
|
+
return computedEntries;
|
|
11
|
+
// Множество путей computed-узлов для быстрой проверки
|
|
12
|
+
const computedPaths = new Set(computedEntries.map((e) => e.path));
|
|
13
|
+
// Строим граф: path → зависимости (только те, которые сами computed)
|
|
14
|
+
const deps = new Map();
|
|
15
|
+
const entryByPath = new Map();
|
|
16
|
+
for (const entry of computedEntries) {
|
|
17
|
+
entryByPath.set(entry.path, entry);
|
|
18
|
+
const nodeDeps = entry.node.dependencies ?? [];
|
|
19
|
+
// Оставляем только зависимости на другие computed-узлы
|
|
20
|
+
deps.set(entry.path, nodeDeps.filter((d) => computedPaths.has(d)));
|
|
21
|
+
}
|
|
22
|
+
// Алгоритм Кана (BFS topological sort)
|
|
23
|
+
// Инвертируем: нам нужно «кто зависит от кого», а не «от кого зависит».
|
|
24
|
+
// inDeg считает входящие рёбра: если A зависит от B, то A имеет inDeg += кол-во зависимостей.
|
|
25
|
+
const inDeg = new Map();
|
|
26
|
+
for (const path of computedPaths)
|
|
27
|
+
inDeg.set(path, 0);
|
|
28
|
+
for (const [path, d] of deps) {
|
|
29
|
+
// path зависит от каждого d[i] → path имеет inDeg += кол-во зависимостей
|
|
30
|
+
inDeg.set(path, d.length);
|
|
31
|
+
}
|
|
32
|
+
const queue = [];
|
|
33
|
+
for (const [path, deg] of inDeg) {
|
|
34
|
+
if (deg === 0)
|
|
35
|
+
queue.push(path);
|
|
36
|
+
}
|
|
37
|
+
const sorted = [];
|
|
38
|
+
while (queue.length > 0) {
|
|
39
|
+
const current = queue.shift();
|
|
40
|
+
sorted.push(entryByPath.get(current));
|
|
41
|
+
// Уменьшаем inDeg для всех, кто зависит от current
|
|
42
|
+
for (const [path, d] of deps) {
|
|
43
|
+
if (d.includes(current)) {
|
|
44
|
+
const newDeg = (inDeg.get(path) ?? 0) - 1;
|
|
45
|
+
inDeg.set(path, newDeg);
|
|
46
|
+
if (newDeg === 0)
|
|
47
|
+
queue.push(path);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Если остались узлы (циклическая зависимость) — добавляем как есть
|
|
52
|
+
if (sorted.length < computedEntries.length) {
|
|
53
|
+
for (const entry of computedEntries) {
|
|
54
|
+
if (!sorted.includes(entry))
|
|
55
|
+
sorted.push(entry);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return sorted;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=topologicalSortComputed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"topologicalSortComputed.js","sourceRoot":"","sources":["../../../../store/compute/recompute/topologicalSortComputed.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CACrC,eAA6D;IAE7D,IAAI,eAAe,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,eAAe,CAAC;IAExD,sDAAsD;IACtD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAElE,qEAAqE;IACrE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAoB,CAAC;IACzC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAiD,CAAC;IAE7E,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;QACpC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAI,KAAK,CAAC,IAAI,CAAC,YAAqC,IAAI,EAAE,CAAC;QACzE,uDAAuD;QACvD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,uCAAuC;IACvC,wEAAwE;IACxE,8FAA8F;IAC9F,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IAExC,KAAK,MAAM,IAAI,IAAI,aAAa;QAAE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAGrD,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QAC7B,yEAAyE;QACzE,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;QAChC,IAAI,GAAG,KAAK,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,MAAM,GAAiD,EAAE,CAAC;IAEhE,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;QAC/B,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAE,CAAC,CAAC;QAEvC,mDAAmD;QACnD,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxB,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAC1C,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;gBACxB,IAAI,MAAM,KAAK,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,IAAI,MAAM,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC;QAC3C,KAAK,MAAM,KAAK,IAAI,eAAe,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { FieldState } from "../index";
|
|
2
|
+
import type { AnyConfigNode, TranslateFn } from "../../store/types";
|
|
3
|
+
import type { GroupComputeMap } from "../../store/registerNodes";
|
|
4
|
+
import type { ValuesCache } from "../../valuesCache/valuesCache";
|
|
5
|
+
/**
|
|
6
|
+
* Обёртка для отслеживания кросс-групповых зависимостей.
|
|
7
|
+
* Принимает узел (для определения группы-реципиента) и сырые значения,
|
|
8
|
+
* возвращает те же значения, обёрнутые в tracking-proxy.
|
|
9
|
+
*/
|
|
10
|
+
export type TrackingWrap = (node: object, values: Record<string, unknown>) => Record<string, unknown>;
|
|
11
|
+
/**
|
|
12
|
+
* Зависимости для таргетированного пересчёта.
|
|
13
|
+
*/
|
|
14
|
+
export interface RecomputeTargetedDeps {
|
|
15
|
+
rootConfig: AnyConfigNode;
|
|
16
|
+
groupComputeMap: GroupComputeMap;
|
|
17
|
+
nodeState: WeakMap<object, FieldState>;
|
|
18
|
+
nodeParents: WeakMap<object, object>;
|
|
19
|
+
nodePaths: WeakMap<object, string>;
|
|
20
|
+
groupDeps: Set<string>;
|
|
21
|
+
valuesCache: ValuesCache;
|
|
22
|
+
translate: TranslateFn;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../store/compute/recompute/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAIjE;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtG;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,aAAa,CAAC;IAC1B,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACvC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,WAAW,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../store/compute/recompute/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { TranslateFn } from "../store/types";
|
|
2
|
+
/**
|
|
3
|
+
* Вычисляет одно свойство-флаг из конфига: если это функция — вызывает с values,
|
|
4
|
+
* иначе возвращает как есть. Если undefined — возвращает defaultValue.
|
|
5
|
+
*/
|
|
6
|
+
export declare function resolveFlag(configValue: boolean | ((values: any, translate: TranslateFn) => boolean) | undefined, values: Record<string, any>, defaultValue: boolean, translate: TranslateFn): boolean;
|
|
7
|
+
//# sourceMappingURL=resolveFlag.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveFlag.d.ts","sourceRoot":"","sources":["../../../store/compute/resolveFlag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C;;;GAGG;AACH,wBAAgB,WAAW,CACzB,WAAW,EAAE,OAAO,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,WAAW,KAAK,OAAO,CAAC,GAAG,SAAS,EACrF,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,YAAY,EAAE,OAAO,EACrB,SAAS,EAAE,WAAW,GACrB,OAAO,CAIT"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Вычисляет одно свойство-флаг из конфига: если это функция — вызывает с values,
|
|
3
|
+
* иначе возвращает как есть. Если undefined — возвращает defaultValue.
|
|
4
|
+
*/
|
|
5
|
+
export function resolveFlag(configValue, values, defaultValue, translate) {
|
|
6
|
+
if (configValue === undefined)
|
|
7
|
+
return defaultValue;
|
|
8
|
+
if (typeof configValue === "function")
|
|
9
|
+
return configValue(values, translate);
|
|
10
|
+
return configValue;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=resolveFlag.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveFlag.js","sourceRoot":"","sources":["../../../store/compute/resolveFlag.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,WAAqF,EACrF,MAA2B,EAC3B,YAAqB,EACrB,SAAsB;IAEtB,IAAI,WAAW,KAAK,SAAS;QAAE,OAAO,YAAY,CAAC;IACnD,IAAI,OAAO,WAAW,KAAK,UAAU;QAAE,OAAO,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC7E,OAAO,WAAW,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { TranslateFn } from "../store/types";
|
|
2
|
+
/**
|
|
3
|
+
* Вычисляет строковое свойство (label, placeholder, description) из конфига.
|
|
4
|
+
* Может быть строкой или функцией `(t: TranslateFn, values) => string`.
|
|
5
|
+
*
|
|
6
|
+
* Если translator зарегистрирован — реальный резолв происходит лениво
|
|
7
|
+
* в proxy GET trap (buildProxy.ts). Здесь сохраняем fallback:
|
|
8
|
+
* для функций — вызываем с identity → возвращаем ключ перевода.
|
|
9
|
+
*/
|
|
10
|
+
export declare function resolveString(configValue: string | ((t: TranslateFn, values: Record<string, any>) => string) | undefined, values?: Record<string, any>): string | undefined;
|
|
11
|
+
//# sourceMappingURL=resolveString.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolveString.d.ts","sourceRoot":"","sources":["../../../store/compute/resolveString.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,SAAS,EAC3F,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAC/B,MAAM,GAAG,SAAS,CAOpB"}
|