palistor 0.0.25 → 0.0.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +609 -542
- package/README.ru.md +1015 -0
- package/dist/index.d.ts +16 -27
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -28
- package/dist/index.js.map +1 -1
- package/dist/react/createTrackingProxy.d.ts +27 -27
- package/dist/react/createTrackingProxy.d.ts.map +1 -1
- package/dist/react/createTrackingProxy.js +54 -53
- package/dist/react/createTrackingProxy.js.map +1 -1
- package/dist/react/useForm.d.ts +42 -43
- package/dist/react/useForm.d.ts.map +1 -1
- package/dist/react/useForm.js +38 -38
- package/dist/react/useForm.js.map +1 -1
- package/dist/react/usePersist.d.ts +14 -14
- package/dist/react/usePersist.js +18 -18
- package/dist/react/usePersist.js.map +1 -1
- package/dist/react/useStoreContext.d.ts +11 -11
- package/dist/react/useStoreContext.js +11 -11
- package/dist/react/useTranslator.d.ts +12 -12
- package/dist/react/useTranslator.js +12 -12
- package/dist/store/applyPatch/applyPatch.d.ts +8 -8
- package/dist/store/applyPatch/applyPatch.js +12 -12
- package/dist/store/applyPatch/applyPatch.js.map +1 -1
- package/dist/store/buildProxy/buildEntityProjectionProxy.js +6 -6
- package/dist/store/buildProxy/buildEntityProjectionProxy.js.map +1 -1
- package/dist/store/buildProxy/buildListProxy.d.ts +8 -8
- package/dist/store/buildProxy/buildListProxy.js +30 -30
- package/dist/store/buildProxy/buildListProxy.js.map +1 -1
- package/dist/store/buildProxy/buildProxy.d.ts +8 -8
- package/dist/store/buildProxy/buildProxy.js +39 -39
- package/dist/store/buildProxy/buildProxy.js.map +1 -1
- package/dist/store/buildProxy/computeProxyKeys.d.ts +8 -8
- package/dist/store/buildProxy/computeProxyKeys.js +9 -9
- package/dist/store/buildProxy/computeProxyKeys.js.map +1 -1
- package/dist/store/buildProxy/handleLazyResolve.d.ts +3 -3
- package/dist/store/buildProxy/handleLazyResolve.js +3 -3
- package/dist/store/buildProxy/initProxyCaches.d.ts +5 -5
- package/dist/store/buildProxy/initProxyCaches.js +5 -5
- package/dist/store/compute/computeFieldState.d.ts +3 -3
- package/dist/store/compute/computeFieldState.js +8 -8
- package/dist/store/compute/computeFieldState.js.map +1 -1
- package/dist/store/compute/fieldStateChanged.d.ts +1 -1
- package/dist/store/compute/fieldStateChanged.js +1 -1
- package/dist/store/compute/recompute/collectGroupComputeNodes.d.ts +4 -4
- package/dist/store/compute/recompute/collectGroupComputeNodes.js +7 -7
- package/dist/store/compute/recompute/collectGroupComputeNodes.js.map +1 -1
- package/dist/store/compute/recompute/recomputeAndNotify.d.ts +3 -3
- package/dist/store/compute/recompute/recomputeAndNotify.js +3 -3
- package/dist/store/compute/recompute/recomputeLeaves.d.ts +11 -10
- package/dist/store/compute/recompute/recomputeLeaves.d.ts.map +1 -1
- package/dist/store/compute/recompute/recomputeLeaves.js +26 -27
- package/dist/store/compute/recompute/recomputeLeaves.js.map +1 -1
- package/dist/store/compute/recompute/recomputeTargeted.d.ts +7 -7
- package/dist/store/compute/recompute/recomputeTargeted.js +12 -12
- package/dist/store/compute/recompute/recomputeTargeted.js.map +1 -1
- package/dist/store/compute/recompute/topologicalSortComputed.d.ts +4 -4
- package/dist/store/compute/recompute/topologicalSortComputed.d.ts.map +1 -1
- package/dist/store/compute/recompute/topologicalSortComputed.js +11 -13
- package/dist/store/compute/recompute/topologicalSortComputed.js.map +1 -1
- package/dist/store/compute/recompute/types.d.ts +4 -4
- package/dist/store/compute/resolveFlag.d.ts +2 -2
- package/dist/store/compute/resolveFlag.js +2 -2
- package/dist/store/compute/resolveString.d.ts +5 -5
- package/dist/store/compute/resolveString.js +6 -6
- package/dist/store/compute/resolveString.js.map +1 -1
- package/dist/store/compute/types.d.ts +3 -3
- package/dist/store/constants.d.ts +48 -48
- package/dist/store/constants.d.ts.map +1 -1
- package/dist/store/constants.js +45 -45
- package/dist/store/defineFieldMapping.d.ts +21 -19
- package/dist/store/defineFieldMapping.d.ts.map +1 -1
- package/dist/store/defineFieldMapping.js +21 -19
- package/dist/store/defineFieldMapping.js.map +1 -1
- package/dist/store/dirtyTracking/collectInitialSnapshot.js +1 -1
- package/dist/store/dirtyTracking/collectInitialSnapshot.js.map +1 -1
- package/dist/store/dirtyTracking/recomputeDirtyTargeted.d.ts +3 -3
- package/dist/store/dirtyTracking/recomputeDirtyTargeted.js +11 -11
- package/dist/store/dirtyTracking/recomputeDirtyTargeted.js.map +1 -1
- package/dist/store/dirtyTracking/setGroupRevalidate.d.ts +6 -6
- package/dist/store/dirtyTracking/setGroupRevalidate.js +7 -7
- package/dist/store/dirtyTracking/setGroupRevalidate.js.map +1 -1
- package/dist/store/entityRegistry/entityRegistry.d.ts +72 -72
- package/dist/store/entityRegistry/entityRegistry.d.ts.map +1 -1
- package/dist/store/entityRegistry/entityRegistry.js +91 -91
- package/dist/store/entityRegistry/entityRegistry.js.map +1 -1
- package/dist/store/entityRegistry/generateId.d.ts +3 -3
- package/dist/store/entityRegistry/generateId.js +3 -3
- package/dist/store/entityRegistry/types.d.ts +17 -17
- package/dist/store/entityRegistry/types.d.ts.map +1 -1
- package/dist/store/flow/buildFlowStepsProxy.d.ts +9 -9
- package/dist/store/flow/buildFlowStepsProxy.js +13 -13
- package/dist/store/flow/buildFlowStepsProxy.js.map +1 -1
- package/dist/store/flow/defineFlow.d.ts +27 -25
- package/dist/store/flow/defineFlow.d.ts.map +1 -1
- package/dist/store/flow/defineFlow.js +15 -13
- package/dist/store/flow/defineFlow.js.map +1 -1
- package/dist/store/flow/flowApi.d.ts +3 -2
- package/dist/store/flow/flowApi.d.ts.map +1 -1
- package/dist/store/flow/flowApi.js +1 -1
- package/dist/store/flow/flowApi.js.map +1 -1
- package/dist/store/flow/flowNavigation.d.ts +65 -63
- package/dist/store/flow/flowNavigation.d.ts.map +1 -1
- package/dist/store/flow/flowNavigation.js +74 -72
- package/dist/store/flow/flowNavigation.js.map +1 -1
- package/dist/store/flow/flowState.d.ts +16 -16
- package/dist/store/flow/flowState.d.ts.map +1 -1
- package/dist/store/flow/flowState.js +5 -5
- package/dist/store/flow/flowState.js.map +1 -1
- package/dist/store/groupDeps/createGroupDeps.d.ts +3 -3
- package/dist/store/groupDeps/createGroupDeps.js +6 -6
- package/dist/store/groupDeps/createGroupDeps.js.map +1 -1
- package/dist/store/groupDeps/createTrackingValues.d.ts +9 -9
- package/dist/store/groupDeps/createTrackingValues.js +11 -11
- package/dist/store/groupDeps/createTrackingValues.js.map +1 -1
- package/dist/store/groupDeps/getNodeGroupPath.d.ts +3 -3
- package/dist/store/groupDeps/getNodeGroupPath.js +5 -5
- package/dist/store/groupDeps/getNodeGroupPath.js.map +1 -1
- package/dist/store/groupDeps/getRecipientGroups.d.ts +1 -1
- package/dist/store/groupDeps/getRecipientGroups.js +1 -1
- package/dist/store/groupDeps/groupDeps.d.ts +7 -7
- package/dist/store/groupDeps/groupDeps.js +7 -7
- package/dist/store/groupDeps/pairKey.d.ts +3 -3
- package/dist/store/groupDeps/pairKey.d.ts.map +1 -1
- package/dist/store/groupDeps/pairKey.js +4 -4
- package/dist/store/groupDeps/pairKey.js.map +1 -1
- package/dist/store/groupDeps/resolveGroupByPath.d.ts +3 -3
- package/dist/store/groupDeps/resolveGroupByPath.js +3 -3
- package/dist/store/init/createNotificationHub.d.ts +31 -31
- package/dist/store/init/createNotificationHub.d.ts.map +1 -1
- package/dist/store/init/createNotificationHub.js +36 -37
- package/dist/store/init/createNotificationHub.js.map +1 -1
- package/dist/store/init/createResolveManager.d.ts +72 -69
- package/dist/store/init/createResolveManager.d.ts.map +1 -1
- package/dist/store/init/createResolveManager.js +101 -98
- package/dist/store/init/createResolveManager.js.map +1 -1
- package/dist/store/init/initGroupSubmitting.d.ts +2 -2
- package/dist/store/init/initGroupSubmitting.js +4 -4
- package/dist/store/init/initGroupSubmitting.js.map +1 -1
- package/dist/store/normalizeConfig.d.ts +20 -18
- package/dist/store/normalizeConfig.d.ts.map +1 -1
- package/dist/store/normalizeConfig.js +31 -29
- package/dist/store/normalizeConfig.js.map +1 -1
- package/dist/store/onChangePipeline/computeFieldKey.d.ts +2 -2
- package/dist/store/onChangePipeline/computeFieldKey.js +2 -2
- package/dist/store/onChangePipeline/findOnChangeAncestors.d.ts +2 -2
- package/dist/store/onChangePipeline/findOnChangeAncestors.js +4 -4
- package/dist/store/onChangePipeline/findOnChangeAncestors.js.map +1 -1
- package/dist/store/onChangePipeline/onChangePipeline.d.ts +13 -12
- package/dist/store/onChangePipeline/onChangePipeline.d.ts.map +1 -1
- package/dist/store/onChangePipeline/onChangePipeline.js +14 -13
- package/dist/store/onChangePipeline/onChangePipeline.js.map +1 -1
- package/dist/store/persist/drivers.d.ts +7 -7
- package/dist/store/persist/drivers.js +8 -8
- package/dist/store/persist/drivers.js.map +1 -1
- package/dist/store/persist/index.d.ts +1 -1
- package/dist/store/persist/persistManager.d.ts +23 -23
- package/dist/store/persist/persistManager.d.ts.map +1 -1
- package/dist/store/persist/persistManager.js +51 -51
- package/dist/store/persist/persistManager.js.map +1 -1
- package/dist/store/persist/types.d.ts +23 -23
- package/dist/store/persist/types.d.ts.map +1 -1
- package/dist/store/persist/types.js +4 -4
- package/dist/store/resetPipeline/buildResetPatch.d.ts +5 -5
- package/dist/store/resetPipeline/buildResetPatch.js +5 -5
- package/dist/store/resetPipeline/collectDefaults.d.ts +5 -5
- package/dist/store/resetPipeline/collectDefaults.js +6 -6
- package/dist/store/resetPipeline/collectDefaults.js.map +1 -1
- package/dist/store/resetPipeline/resetPipeline.d.ts +7 -7
- package/dist/store/resetPipeline/resetPipeline.js +15 -15
- package/dist/store/resetPipeline/resetPipeline.js.map +1 -1
- package/dist/store/resolvePipeline/applyPendingWrites.d.ts +10 -10
- package/dist/store/resolvePipeline/applyPendingWrites.d.ts.map +1 -1
- package/dist/store/resolvePipeline/applyPendingWrites.js +35 -38
- package/dist/store/resolvePipeline/applyPendingWrites.js.map +1 -1
- package/dist/store/resolvePipeline/createContextTrackingProxy.d.ts +8 -7
- package/dist/store/resolvePipeline/createContextTrackingProxy.d.ts.map +1 -1
- package/dist/store/resolvePipeline/createContextTrackingProxy.js +6 -5
- package/dist/store/resolvePipeline/createContextTrackingProxy.js.map +1 -1
- package/dist/store/resolvePipeline/createValuesTrackingProxy.d.ts +43 -43
- package/dist/store/resolvePipeline/createValuesTrackingProxy.d.ts.map +1 -1
- package/dist/store/resolvePipeline/createValuesTrackingProxy.js +70 -70
- package/dist/store/resolvePipeline/createValuesTrackingProxy.js.map +1 -1
- package/dist/store/resolvePipeline/executeListResolve.d.ts +14 -14
- package/dist/store/resolvePipeline/executeListResolve.js +27 -27
- package/dist/store/resolvePipeline/executeListResolve.js.map +1 -1
- package/dist/store/resolvePipeline/executeResolve.d.ts +15 -15
- package/dist/store/resolvePipeline/executeResolve.js +46 -46
- package/dist/store/resolvePipeline/executeResolve.js.map +1 -1
- package/dist/store/store/NodeRegistry/nodeRegistry.d.ts +61 -61
- package/dist/store/store/NodeRegistry/nodeRegistry.d.ts.map +1 -1
- package/dist/store/store/NodeRegistry/nodeRegistry.js +85 -86
- package/dist/store/store/NodeRegistry/nodeRegistry.js.map +1 -1
- package/dist/store/store/NodeRegistry/nodeUtils.d.ts +5 -5
- package/dist/store/store/NodeRegistry/nodeUtils.d.ts.map +1 -1
- package/dist/store/store/NodeRegistry/nodeUtils.js +5 -5
- package/dist/store/store/NodeRegistry/nodeUtils.js.map +1 -1
- package/dist/store/store/groupDepsMap.d.ts +23 -23
- package/dist/store/store/groupDepsMap.d.ts.map +1 -1
- package/dist/store/store/groupDepsMap.js +35 -34
- package/dist/store/store/groupDepsMap.js.map +1 -1
- package/dist/store/store/hasComputedProps.d.ts +2 -2
- package/dist/store/store/hasComputedProps.js +2 -2
- package/dist/store/store/nodeMap.d.ts +5 -5
- package/dist/store/store/nodeMap.js +7 -7
- package/dist/store/store/nodeMap.js.map +1 -1
- package/dist/store/store/palistor.d.ts +80 -80
- package/dist/store/store/palistor.d.ts.map +1 -1
- package/dist/store/store/palistor.js +149 -169
- package/dist/store/store/palistor.js.map +1 -1
- package/dist/store/store/registerNodes.d.ts +10 -10
- package/dist/store/store/registerNodes.js +15 -15
- package/dist/store/store/registerNodes.js.map +1 -1
- package/dist/store/store/serviceRegistry.d.ts +8 -8
- package/dist/store/store/serviceRegistry.d.ts.map +1 -1
- package/dist/store/store/serviceRegistry.js +8 -8
- package/dist/store/store/serviceRegistry.js.map +1 -1
- package/dist/store/store/types.d.ts +236 -234
- package/dist/store/store/types.d.ts.map +1 -1
- package/dist/store/submitPipeline/applyLeafBeforeSubmit.d.ts +2 -2
- package/dist/store/submitPipeline/applyLeafBeforeSubmit.js +2 -2
- package/dist/store/submitPipeline/collectLeafStates.d.ts +2 -2
- package/dist/store/submitPipeline/collectLeafStates.js +2 -2
- package/dist/store/submitPipeline/submitPipeline.d.ts +8 -8
- package/dist/store/submitPipeline/submitPipeline.js +12 -12
- package/dist/store/submitPipeline/submitPipeline.js.map +1 -1
- package/dist/store/submitPipeline/types.d.ts +1 -1
- package/dist/store/submitPipeline/types.d.ts.map +1 -1
- package/dist/store/traversal/nodeClassifier.d.ts +9 -9
- package/dist/store/traversal/nodeClassifier.d.ts.map +1 -1
- package/dist/store/traversal/nodeClassifier.js +11 -11
- package/dist/store/traversal/nodeClassifier.js.map +1 -1
- package/dist/store/traversal/walkFull.d.ts +14 -14
- package/dist/store/traversal/walkFull.js +2 -2
- package/dist/store/valuesCache/valuesCache.d.ts +9 -9
- package/dist/store/valuesCache/valuesCache.d.ts.map +1 -1
- package/dist/store/valuesCache/valuesCache.js +6 -6
- package/dist/store/writePipeline/formatPatch.d.ts +5 -5
- package/dist/store/writePipeline/formatPatch.js +7 -7
- package/dist/store/writePipeline/formatPatch.js.map +1 -1
- package/dist/store/writePipeline/formatValue.d.ts +5 -5
- package/dist/store/writePipeline/formatValue.js +5 -5
- package/dist/store/writePipeline/mergeChanged.d.ts +4 -4
- package/dist/store/writePipeline/mergeChanged.js +4 -4
- package/dist/store/writePipeline/runSetter.d.ts +6 -6
- package/dist/store/writePipeline/runSetter.js +8 -8
- package/dist/store/writePipeline/storeValue.d.ts +3 -3
- package/dist/store/writePipeline/storeValue.js +3 -3
- package/dist/store/writePipeline/types.d.ts +4 -4
- package/dist/store/writePipeline/types.d.ts.map +1 -1
- package/dist/store/writePipeline/writePipeline.d.ts +7 -7
- package/dist/store/writePipeline/writePipeline.d.ts.map +1 -1
- package/dist/store/writePipeline/writePipeline.js +15 -15
- package/dist/store/writePipeline/writePipeline.js.map +1 -1
- package/package.json +11 -4
|
@@ -6,41 +6,41 @@ import { recomputeAndNotify } from "../compute/recompute";
|
|
|
6
6
|
import { applyPendingWrites } from "./applyPendingWrites";
|
|
7
7
|
// ─── Core execution ──────────────────────────────────────────────────────────
|
|
8
8
|
/**
|
|
9
|
-
*
|
|
9
|
+
* Run resolve for a given node.
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
* 1.
|
|
13
|
-
* 2.
|
|
14
|
-
* 3.
|
|
15
|
-
* 4.
|
|
16
|
-
* 5.
|
|
17
|
-
* 6.
|
|
18
|
-
* 7.
|
|
19
|
-
* - applyPatch(result)
|
|
20
|
-
* -
|
|
11
|
+
* Pipeline:
|
|
12
|
+
* 1. Check status → if pending, return the existing promise (deduplication)
|
|
13
|
+
* 2. Set status = pending, loading = true
|
|
14
|
+
* 3. If there's an optimisticResolver → run it, apply the patch (no notify, batched)
|
|
15
|
+
* 4. Wrap values in a tracking write-proxy
|
|
16
|
+
* 5. Call resolver(trackedValues)
|
|
17
|
+
* 6. Retry logic: on error retry up to retry.attempts times
|
|
18
|
+
* 7. On success:
|
|
19
|
+
* - applyPatch(result) to the node's subtree
|
|
20
|
+
* - flush buffered writes (side effects)
|
|
21
21
|
* - loading = false, status = resolved
|
|
22
|
-
* - recomputeAll (
|
|
23
|
-
* - notifyChanged (
|
|
24
|
-
* 8.
|
|
22
|
+
* - recomputeAll (once)
|
|
23
|
+
* - notifyChanged (once)
|
|
24
|
+
* 8. On error (after all retries):
|
|
25
25
|
* - onError(error, { notify })
|
|
26
26
|
* - loading = false, status = error
|
|
27
27
|
* - recomputeAll + notifyChanged
|
|
28
|
-
* 9.
|
|
28
|
+
* 9. Store accessedPaths for auto-dependencies
|
|
29
29
|
*/
|
|
30
30
|
export function executeResolve(node, resolve, deps) {
|
|
31
31
|
const { rootConfig, nodeState, resolveStates, recompute, notifyChanged, notify, getValues, initialValueMap, valuesCache, store } = deps;
|
|
32
32
|
const state = resolveStates.get(node);
|
|
33
33
|
if (!state)
|
|
34
34
|
return Promise.resolve();
|
|
35
|
-
//
|
|
35
|
+
// Deduplication: if already pending, return the same promise
|
|
36
36
|
if (state.status === "pending" && state.promise) {
|
|
37
37
|
return state.promise;
|
|
38
38
|
}
|
|
39
|
-
// ──
|
|
39
|
+
// ── Set loading state ──────────────────────────────────────────────────────
|
|
40
40
|
state.status = "pending";
|
|
41
41
|
state.attempt = 0;
|
|
42
42
|
state.error = null;
|
|
43
|
-
//
|
|
43
|
+
// Update loading in FieldState
|
|
44
44
|
const nodeSt = nodeState.get(node);
|
|
45
45
|
if (nodeSt) {
|
|
46
46
|
nodeState.set(node, { ...nodeSt, loading: true });
|
|
@@ -55,9 +55,9 @@ export function executeResolve(node, resolve, deps) {
|
|
|
55
55
|
loading: true,
|
|
56
56
|
});
|
|
57
57
|
}
|
|
58
|
-
// ──
|
|
58
|
+
// ── Optimistic resolver (synchronous) ──────────────────────────────────────
|
|
59
59
|
const allChanged = new Set();
|
|
60
|
-
allChanged.add(node); //
|
|
60
|
+
allChanged.add(node); // the node itself changed (loading: true)
|
|
61
61
|
if (resolve.optimisticResolver) {
|
|
62
62
|
try {
|
|
63
63
|
const values = getValues();
|
|
@@ -67,13 +67,13 @@ export function executeResolve(node, resolve, deps) {
|
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
catch (error) {
|
|
70
|
-
//
|
|
70
|
+
// An optimistic resolver error is non-critical — continue with the async resolver
|
|
71
71
|
console.warn('Error in optimistic resolver:', error);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
|
-
//
|
|
74
|
+
// Notify about loading: true (and any optimistic data)
|
|
75
75
|
recomputeAndNotify(allChanged, recompute, notifyChanged);
|
|
76
|
-
// ──
|
|
76
|
+
// ── Async resolver execution ─────────────────────────────────────────────
|
|
77
77
|
const retryOpts = resolve.options?.retry ?? { attempts: 0, delay: 1000 };
|
|
78
78
|
const maxAttempts = retryOpts.attempts;
|
|
79
79
|
const retryDelay = retryOpts.delay ?? 1000;
|
|
@@ -83,18 +83,18 @@ export function executeResolve(node, resolve, deps) {
|
|
|
83
83
|
let contextTracking = null;
|
|
84
84
|
for (let attempt = 0; attempt <= maxAttempts; attempt++) {
|
|
85
85
|
state.attempt = attempt;
|
|
86
|
-
//
|
|
86
|
+
// Wait before retrying (except the first attempt)
|
|
87
87
|
if (attempt > 0) {
|
|
88
88
|
await new Promise((r) => setTimeout(r, retryDelay));
|
|
89
|
-
//
|
|
89
|
+
// Re-check: if the status changed meanwhile (e.g. a reset happened) — abort
|
|
90
90
|
if (state.status !== "pending")
|
|
91
91
|
return;
|
|
92
92
|
}
|
|
93
93
|
try {
|
|
94
|
-
//
|
|
94
|
+
// Create a tracking proxy over a fresh values snapshot
|
|
95
95
|
const freshValues = getValues();
|
|
96
96
|
const tracking = createValuesTrackingProxy(freshValues);
|
|
97
|
-
//
|
|
97
|
+
// Wrap store.context in a tracking proxy for automatic context dependencies
|
|
98
98
|
contextTracking = createContextTrackingProxy(store.context);
|
|
99
99
|
const storeProxy = new Proxy(store, {
|
|
100
100
|
get(target, key) {
|
|
@@ -104,45 +104,45 @@ export function executeResolve(node, resolve, deps) {
|
|
|
104
104
|
},
|
|
105
105
|
});
|
|
106
106
|
const result = await resolve.resolver(tracking.proxy, storeProxy);
|
|
107
|
-
//
|
|
107
|
+
// Re-check: if the status changed while awaiting — abort
|
|
108
108
|
if (state.status !== "pending")
|
|
109
109
|
return result;
|
|
110
|
-
// ──
|
|
110
|
+
// ── Success path ─────────────────────────────────────────────────
|
|
111
111
|
const changed = new Set();
|
|
112
112
|
changed.add(node);
|
|
113
|
-
// 1.
|
|
113
|
+
// 1. Apply the resolver result to the node's subtree
|
|
114
114
|
if (result && typeof result === "object") {
|
|
115
115
|
applyPatch(node, nodeState, result, changed, valuesCache);
|
|
116
|
-
//
|
|
116
|
+
// Update the initial snapshot for the affected leaves (resolver data = initial state)
|
|
117
117
|
mergeInitialValues(node, nodeState, initialValueMap, result);
|
|
118
118
|
}
|
|
119
|
-
// 2.
|
|
119
|
+
// 2. Flush buffered side effects
|
|
120
120
|
const writes = tracking.getPendingWrites();
|
|
121
121
|
if (writes.length > 0) {
|
|
122
122
|
const writeChanged = applyPendingWrites(writes, rootConfig, nodeState, valuesCache);
|
|
123
123
|
for (const n of writeChanged)
|
|
124
124
|
changed.add(n);
|
|
125
125
|
}
|
|
126
|
-
// 3.
|
|
126
|
+
// 3. Update loading / status
|
|
127
127
|
const updatedState = nodeState.get(node);
|
|
128
128
|
if (updatedState) {
|
|
129
129
|
nodeState.set(node, { ...updatedState, loading: false });
|
|
130
130
|
}
|
|
131
131
|
state.status = "resolved";
|
|
132
132
|
state.error = null;
|
|
133
|
-
// 4.
|
|
133
|
+
// 4. Store auto-dependencies (merged with explicit deps)
|
|
134
134
|
const accessedPaths = tracking.getAccessedPaths();
|
|
135
135
|
const mergedDeps = new Set(resolve.deps ?? []);
|
|
136
136
|
for (const p of accessedPaths)
|
|
137
137
|
mergedDeps.add(p);
|
|
138
|
-
//
|
|
138
|
+
// Add context dependencies with the $context. prefix
|
|
139
139
|
for (const key of contextTracking.getAccessedKeys()) {
|
|
140
140
|
mergedDeps.add(`$context.${key}`);
|
|
141
141
|
}
|
|
142
142
|
state.dependencies = mergedDeps;
|
|
143
|
-
// 5. Recompute + notify (
|
|
143
|
+
// 5. Recompute + notify (once)
|
|
144
144
|
recomputeAndNotify(changed, recompute, notifyChanged);
|
|
145
|
-
// 6.
|
|
145
|
+
// 6. If a dependency changed while pending — re-run immediately
|
|
146
146
|
if (state.pendingRetrigger) {
|
|
147
147
|
state.pendingRetrigger = false;
|
|
148
148
|
state.status = "idle";
|
|
@@ -153,23 +153,23 @@ export function executeResolve(node, resolve, deps) {
|
|
|
153
153
|
}
|
|
154
154
|
catch (err) {
|
|
155
155
|
lastError = err;
|
|
156
|
-
//
|
|
156
|
+
// Move on to the next attempt (if any)
|
|
157
157
|
}
|
|
158
158
|
}
|
|
159
|
-
// ──
|
|
159
|
+
// ── Error path (all attempts exhausted) ──────────────────────────────────
|
|
160
160
|
if (state.status !== "pending")
|
|
161
|
-
return; //
|
|
161
|
+
return; // aborted
|
|
162
162
|
const changed = new Set();
|
|
163
163
|
changed.add(node);
|
|
164
|
-
//
|
|
164
|
+
// Update loading / status / error
|
|
165
165
|
const updatedState = nodeState.get(node);
|
|
166
166
|
if (updatedState) {
|
|
167
167
|
nodeState.set(node, { ...updatedState, loading: false });
|
|
168
168
|
}
|
|
169
169
|
state.status = "error";
|
|
170
170
|
state.error = lastError;
|
|
171
|
-
//
|
|
172
|
-
// (
|
|
171
|
+
// Store context dependencies even on the error path
|
|
172
|
+
// (so setContext can re-trigger resolvers in the "error" status)
|
|
173
173
|
if (contextTracking && contextTracking.getAccessedKeys().size > 0) {
|
|
174
174
|
const mergedDeps = new Set(resolve.deps ?? []);
|
|
175
175
|
for (const key of contextTracking.getAccessedKeys()) {
|
|
@@ -177,16 +177,16 @@ export function executeResolve(node, resolve, deps) {
|
|
|
177
177
|
}
|
|
178
178
|
state.dependencies = mergedDeps;
|
|
179
179
|
}
|
|
180
|
-
//
|
|
180
|
+
// Invoke the onError handler
|
|
181
181
|
try {
|
|
182
182
|
resolve.onError(lastError, { notify });
|
|
183
183
|
}
|
|
184
184
|
catch {
|
|
185
|
-
// onError
|
|
185
|
+
// onError should not throw, but if it does — swallow
|
|
186
186
|
}
|
|
187
187
|
// Recompute + notify
|
|
188
188
|
recomputeAndNotify(changed, recompute, notifyChanged);
|
|
189
|
-
//
|
|
189
|
+
// If a dependency changed while pending — re-run immediately
|
|
190
190
|
if (state.pendingRetrigger) {
|
|
191
191
|
state.pendingRetrigger = false;
|
|
192
192
|
state.status = "idle";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executeResolve.js","sourceRoot":"","sources":["../../../store/resolvePipeline/executeResolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAEtD,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,gFAAgF;AAEhF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,cAAc,CAC5B,IAAmB,EACnB,OAAgB,EAChB,IAAiB;IAEjB,MAAM,EACJ,UAAU,EAAE,SAAS,EACrB,aAAa,EAAE,SAAS,EACxB,aAAa,EAAE,MAAM,EACrB,SAAS,EAAE,eAAe,EAC1B,WAAW,EAAE,KAAK,EACnB,GAAG,IAAI,CAAC;IAET,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAEtC,IAAI,CAAC,KAAK;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAErC,
|
|
1
|
+
{"version":3,"file":"executeResolve.js","sourceRoot":"","sources":["../../../store/resolvePipeline/executeResolve.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,87 +5,86 @@ import { isLeafNode, isGroupNode, isListNode } from "./nodeUtils";
|
|
|
5
5
|
import { type NodeView, type NodeViewKernel } from "./nodeView";
|
|
6
6
|
import { type FlowState } from "../../flow/flowState";
|
|
7
7
|
/**
|
|
8
|
-
*
|
|
8
|
+
* Registry of config nodes.
|
|
9
9
|
*
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
* groupComputeMap, proxyCache.
|
|
10
|
+
* Bundles the data used by `Palistor`: nodeState, nodePaths, nodeParents,
|
|
11
|
+
* computeNodes, groupComputeMap, proxyCache.
|
|
13
12
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* Runs initialization (registerNodes + buildNodeMaps + initGroupSubmitting)
|
|
14
|
+
* in the constructor.
|
|
16
15
|
*
|
|
17
|
-
* @internal
|
|
16
|
+
* @internal used by pipelines and subsystems via the kernel
|
|
18
17
|
*/
|
|
19
18
|
export declare class NodeRegistry {
|
|
20
19
|
constructor(rootConfig: AnyConfigNode, initialValues: Record<string, unknown>, translate: TranslateFn);
|
|
21
20
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
21
|
+
* Computed state of every config node.
|
|
22
|
+
* Key — the node object, value — its FieldState.
|
|
24
23
|
*/
|
|
25
24
|
readonly nodeState: WeakMap<object, FieldState>;
|
|
26
25
|
/**
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
26
|
+
* Absolute dot-path of every config node.
|
|
27
|
+
* e.g. passport.number → "passport.number".
|
|
28
|
+
* The root node has no entry in this map ("" is used).
|
|
30
29
|
*/
|
|
31
30
|
readonly nodePaths: WeakMap<object, string>;
|
|
32
31
|
/**
|
|
33
|
-
*
|
|
34
|
-
*
|
|
32
|
+
* Direct parent of every config node.
|
|
33
|
+
* The root node has no entry.
|
|
35
34
|
*/
|
|
36
35
|
readonly nodeParents: WeakMap<object, object>;
|
|
37
36
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
37
|
+
* All compute nodes in traversal (DFS) order.
|
|
38
|
+
* Contains leaf nodes and group nodes with computed props.
|
|
39
|
+
* Used by NotificationHub for bumpLeafVersions().
|
|
41
40
|
*/
|
|
42
41
|
readonly computeNodes: ComputeEntry[];
|
|
43
42
|
/**
|
|
44
|
-
*
|
|
45
|
-
*
|
|
43
|
+
* Group node → array of its direct child entries (leaves + groups with computed props).
|
|
44
|
+
* Used by recomputeTargeted to recompute a subtree.
|
|
46
45
|
*/
|
|
47
46
|
readonly groupComputeMap: GroupComputeMap;
|
|
48
47
|
/**
|
|
49
|
-
*
|
|
50
|
-
*
|
|
48
|
+
* Proxy object cache — one proxy per config node.
|
|
49
|
+
* Guarantees stable (===) proxy references.
|
|
51
50
|
*/
|
|
52
51
|
readonly proxyCache: WeakMap<object, unknown>;
|
|
53
52
|
/**
|
|
54
|
-
* ListState
|
|
55
|
-
*
|
|
56
|
-
*
|
|
53
|
+
* ListState for every ListNode in the config.
|
|
54
|
+
* Key — the config array object (the ListNode itself).
|
|
55
|
+
* Populated during registerNodes.
|
|
57
56
|
*/
|
|
58
57
|
readonly listStates: WeakMap<object, ListState>;
|
|
59
58
|
/**
|
|
60
|
-
*
|
|
61
|
-
*
|
|
59
|
+
* All ListState objects in registration order.
|
|
60
|
+
* Used by Palistor to register lists in EntityRegistry.rekey().
|
|
62
61
|
*/
|
|
63
62
|
readonly allListStates: ListState[];
|
|
64
63
|
/**
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
*
|
|
68
|
-
* `ListState`,
|
|
64
|
+
* Single list-proxy cache (root + per-entity) — keyed by the `ListState` object.
|
|
65
|
+
* Guarantees stable list-proxy references for React (like proxyCache for groups).
|
|
66
|
+
* Every (owner, listConfigNode) pair and every root list has its own
|
|
67
|
+
* `ListState`, so keying by it gives correct isolation.
|
|
69
68
|
*/
|
|
70
69
|
readonly listProxyCache: WeakMap<object, object>;
|
|
71
70
|
/**
|
|
72
|
-
*
|
|
73
|
-
*
|
|
74
|
-
* (`["contacts"]
|
|
75
|
-
*
|
|
76
|
-
* projectionObj
|
|
71
|
+
* Reverse index `listConfigNode → fieldPath`.
|
|
72
|
+
* The path is an array of keys relative to the owner's entity scope
|
|
73
|
+
* (`["contacts"]`, or `["profile", "contacts"]` for a list in a nested group).
|
|
74
|
+
* Used to write per-entity list membership into the right nested spot of
|
|
75
|
+
* the owner's projectionObj — so `store.getValues()` includes nested lists.
|
|
77
76
|
*/
|
|
78
77
|
readonly listFieldKeys: WeakMap<object, string[]>;
|
|
79
78
|
/**
|
|
80
|
-
* FlowState
|
|
81
|
-
*
|
|
79
|
+
* FlowState for every flow node (defineFlow) in the config.
|
|
80
|
+
* Key — the flow's config node. Populated in collectFlowStates.
|
|
82
81
|
*/
|
|
83
82
|
readonly flowStates: WeakMap<object, FlowState>;
|
|
84
|
-
/**
|
|
83
|
+
/** All FlowStates in registration order (persist, reset, init lifecycle). */
|
|
85
84
|
readonly allFlowStates: FlowState[];
|
|
86
85
|
/**
|
|
87
|
-
*
|
|
88
|
-
*
|
|
86
|
+
* Reverse index: step config node → FlowState of the owning flow.
|
|
87
|
+
* Used by the group proxy to compute step.status / step.isInvalid.
|
|
89
88
|
*/
|
|
90
89
|
readonly stepToFlow: WeakMap<object, FlowState>;
|
|
91
90
|
/**
|
|
@@ -105,47 +104,48 @@ export declare class NodeRegistry {
|
|
|
105
104
|
* - via present → entity view registered by _setEntitiesRaw; throws if not found.
|
|
106
105
|
*/
|
|
107
106
|
getView(storage: AnyConfigNode, via?: object): NodeView;
|
|
108
|
-
/**
|
|
107
|
+
/** Get the computed state of a node. */
|
|
109
108
|
getState(node: object): FieldState | undefined;
|
|
110
|
-
/**
|
|
109
|
+
/** Set the state of a node. */
|
|
111
110
|
setState(node: object, state: FieldState): void;
|
|
112
|
-
/**
|
|
111
|
+
/** Get the absolute dot-path of a node. undefined for the root. */
|
|
113
112
|
getPath(node: object): string | undefined;
|
|
114
|
-
/**
|
|
113
|
+
/** Get the direct parent of a node. */
|
|
115
114
|
getParent(node: object): object | undefined;
|
|
116
115
|
/**
|
|
117
|
-
*
|
|
118
|
-
* -
|
|
119
|
-
* -
|
|
120
|
-
* -
|
|
116
|
+
* Get the path of the group a node belongs to.
|
|
117
|
+
* - Leaf node → the parent group's path
|
|
118
|
+
* - Group node → its own path
|
|
119
|
+
* - Root → ""
|
|
121
120
|
*/
|
|
122
121
|
getGroupPath(node: object): string;
|
|
123
|
-
/**
|
|
122
|
+
/** Find a node by dot-path. Scans computeNodes and checks their paths. */
|
|
124
123
|
findByPath(path: string): object | undefined;
|
|
125
|
-
/**
|
|
124
|
+
/** Iterate over all compute nodes. */
|
|
126
125
|
forEachCompute(callback: (entry: ComputeEntry) => void): void;
|
|
127
126
|
isLeafNode: typeof isLeafNode;
|
|
128
127
|
isGroupNode: typeof isGroupNode;
|
|
129
128
|
isListNode: typeof isListNode;
|
|
130
129
|
/**
|
|
131
|
-
*
|
|
130
|
+
* Register a leaf node created at runtime (e.g. an entity leaf on store.set()).
|
|
132
131
|
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
132
|
+
* Updates all registry WeakMaps and appends an entry to `computeNodes`,
|
|
133
|
+
* so `bumpLeafVersions` (NotificationHub) automatically picks up the new node.
|
|
135
134
|
*
|
|
136
|
-
* @param node
|
|
137
|
-
* @param path
|
|
138
|
-
* @param parent
|
|
139
|
-
* @param state
|
|
135
|
+
* @param node Node object (`{ value }`)
|
|
136
|
+
* @param path Absolute dot-path, e.g. "users.0.name"
|
|
137
|
+
* @param parent Direct parent node object
|
|
138
|
+
* @param state Initial FieldState
|
|
140
139
|
*/
|
|
141
140
|
registerDynamicLeaf(node: object, path: string, parent: object, state: import("../../compute/index").FieldState): void;
|
|
142
141
|
/**
|
|
143
|
-
*
|
|
142
|
+
* Unregister a leaf node (e.g. when an entity is deleted).
|
|
144
143
|
*
|
|
145
|
-
*
|
|
146
|
-
* WeakMap
|
|
144
|
+
* Removes the entry from `computeNodes` and from the parent's
|
|
145
|
+
* `groupComputeMap`. WeakMap entries (nodeState, nodePaths, nodeParents)
|
|
146
|
+
* are reclaimed by the GC automatically.
|
|
147
147
|
*
|
|
148
|
-
* @param node
|
|
148
|
+
* @param node Leaf node object
|
|
149
149
|
*/
|
|
150
150
|
unregisterLeaf(node: object): void;
|
|
151
151
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeRegistry.d.ts","sourceRoot":"","sources":["../../../../store/store/NodeRegistry/nodeRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAiB,KAAK,eAAe,EAAE,KAAK,YAAY,EAAqB,MAAM,kBAAkB,CAAC;AAK7G,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAoB,MAAM,YAAY,CAAC;AAClF,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"nodeRegistry.d.ts","sourceRoot":"","sources":["../../../../store/store/NodeRegistry/nodeRegistry.ts"],"names":[],"mappings":"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"}
|