palistor 0.0.24 → 0.0.26
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 +574 -542
- package/README.ru.md +979 -0
- package/dist/index.d.ts +19 -28
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -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 +92 -42
- 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.d.ts.map +1 -1
- package/dist/store/buildProxy/buildProxy.js +84 -33
- package/dist/store/buildProxy/buildProxy.js.map +1 -1
- package/dist/store/buildProxy/computeProxyKeys.d.ts +8 -8
- package/dist/store/buildProxy/computeProxyKeys.d.ts.map +1 -1
- package/dist/store/buildProxy/computeProxyKeys.js +18 -13
- 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 +57 -38
- package/dist/store/constants.d.ts.map +1 -1
- package/dist/store/constants.js +70 -35
- package/dist/store/constants.js.map +1 -1
- 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 +17 -0
- package/dist/store/flow/buildFlowStepsProxy.d.ts.map +1 -0
- package/dist/store/flow/buildFlowStepsProxy.js +72 -0
- package/dist/store/flow/buildFlowStepsProxy.js.map +1 -0
- package/dist/store/flow/defineFlow.d.ts +92 -0
- package/dist/store/flow/defineFlow.d.ts.map +1 -0
- package/dist/store/flow/defineFlow.js +99 -0
- package/dist/store/flow/defineFlow.js.map +1 -0
- package/dist/store/flow/flowApi.d.ts +18 -0
- package/dist/store/flow/flowApi.d.ts.map +1 -0
- package/dist/store/flow/flowApi.js +18 -0
- package/dist/store/flow/flowApi.js.map +1 -0
- package/dist/store/flow/flowNavigation.d.ts +137 -0
- package/dist/store/flow/flowNavigation.d.ts.map +1 -0
- package/dist/store/flow/flowNavigation.js +384 -0
- package/dist/store/flow/flowNavigation.js.map +1 -0
- package/dist/store/flow/flowState.d.ts +41 -0
- package/dist/store/flow/flowState.d.ts.map +1 -0
- package/dist/store/flow/flowState.js +51 -0
- package/dist/store/flow/flowState.js.map +1 -0
- package/dist/store/flow/index.d.ts +10 -0
- package/dist/store/flow/index.d.ts.map +1 -0
- package/dist/store/flow/index.js +6 -0
- package/dist/store/flow/index.js.map +1 -0
- 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 +73 -42
- 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.d.ts.map +1 -1
- package/dist/store/resetPipeline/resetPipeline.js +17 -12
- 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 +69 -56
- package/dist/store/store/NodeRegistry/nodeRegistry.d.ts.map +1 -1
- package/dist/store/store/NodeRegistry/nodeRegistry.js +94 -78
- 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 +40 -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 +151 -165
- package/dist/store/store/palistor.js.map +1 -1
- package/dist/store/store/registerNodes.d.ts +10 -10
- package/dist/store/store/registerNodes.d.ts.map +1 -1
- package/dist/store/store/registerNodes.js +33 -18
- 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 +277 -223
- 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.d.ts.map +1 -1
- package/dist/store/submitPipeline/submitPipeline.js +15 -11
- 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
- package/dist/store/compute/recompute/collectGroupLeafNodes.d.ts +0 -11
- package/dist/store/compute/recompute/collectGroupLeafNodes.d.ts.map +0 -1
- package/dist/store/compute/recompute/collectGroupLeafNodes.js +0 -26
- package/dist/store/compute/recompute/collectGroupLeafNodes.js.map +0 -1
- package/dist/store/fieldMapping.typecheck.d.ts +0 -2
- package/dist/store/fieldMapping.typecheck.d.ts.map +0 -1
- package/dist/store/fieldMapping.typecheck.js +0 -71
- package/dist/store/fieldMapping.typecheck.js.map +0 -1
- package/dist/store/submitPipeline/getSubValues.d.ts +0 -9
- package/dist/store/submitPipeline/getSubValues.d.ts.map +0 -1
- package/dist/store/submitPipeline/getSubValues.js +0 -26
- package/dist/store/submitPipeline/getSubValues.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,46 +1,35 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Palistor
|
|
2
|
+
* Palistor — reactive form state manager for React.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* useForm(id) вызывается в React-компоненте — привязывает к экземпляру.
|
|
4
|
+
* A store is created from a declarative config (`new Palistor({ config })`)
|
|
5
|
+
* and consumed in React through `useForm(store)`, which returns a tracking
|
|
6
|
+
* proxy: components re-render only when a field they actually read changes.
|
|
8
7
|
*
|
|
9
8
|
* @example
|
|
10
9
|
* ```ts
|
|
11
|
-
* // config/orderForm.ts —
|
|
12
|
-
* import {
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* type: "Order",
|
|
10
|
+
* // config/orderForm.ts — module level
|
|
11
|
+
* import { Palistor } from "palistor";
|
|
12
|
+
*
|
|
13
|
+
* export const orderStore = new Palistor({
|
|
14
|
+
* config: {
|
|
15
|
+
* name: { value: "", isRequired: true },
|
|
16
|
+
* email: { value: "", validate: (v) => (!v.includes("@") ? "Invalid email" : undefined) },
|
|
17
|
+
* },
|
|
20
18
|
* });
|
|
21
19
|
* ```
|
|
22
20
|
*
|
|
23
21
|
* ```tsx
|
|
24
|
-
* //
|
|
25
|
-
*
|
|
26
|
-
* initial: order,
|
|
27
|
-
* onSubmit: async (values) => { await api.saveOrder(values); },
|
|
28
|
-
* });
|
|
29
|
-
*
|
|
30
|
-
* return <Input {...getFieldProps("name")} />;
|
|
31
|
-
* ```
|
|
32
|
-
*
|
|
33
|
-
* ```tsx
|
|
34
|
-
* // Вложенный компонент — подключается к существующему store
|
|
35
|
-
* const { getFieldProps } = useForm(orderId);
|
|
22
|
+
* // Component — subscribes via useForm
|
|
23
|
+
* import { useForm } from "palistor";
|
|
36
24
|
*
|
|
37
|
-
*
|
|
25
|
+
* const form = useForm(orderStore);
|
|
26
|
+
* return <input value={form.name.value} onChange={(e) => form.name.onValueChange(e.target.value)} />;
|
|
38
27
|
* ```
|
|
39
28
|
*/
|
|
40
29
|
export type { PersistDriver, PersistOptions } from "./store/persist/types";
|
|
41
30
|
export type { PersistManager } from "./store/persist/persistManager";
|
|
42
31
|
export { localStorageDriver, sessionStorageDriver } from "./store/persist/drivers";
|
|
43
|
-
export type { TranslateFn, FormConfig, MaybeComputed, MaybeTranslatable, DeepPartialValues, FieldTypeMeta, ConfigNode, FieldProxyNode, GroupProxyNode, ConfigProxy, FieldMapping, ApplyFieldMapping, ValidateExternalConfig, ConfigKeyError, ExternalConfig, ExternalConfigNode, RawStoreProxy, RawStoreProxyMarker, ExtractValues, ProxyStoreOptions, ProxyStore, Unsubscribe, PalistorRef, PalistorList, PalistorEntityProxy, TypedListNode, ListResolver, TemplateConfig, InferEntity, } from "./store/store/types";
|
|
32
|
+
export type { FlowProxyNode, FlowStepProxy, FlowStepsProxy, TranslateFn, FormConfig, MaybeComputed, MaybeTranslatable, DeepPartialValues, FieldTypeMeta, ConfigNode, FieldProxyNode, GroupProxyNode, ConfigProxy, FieldMapping, ApplyFieldMapping, ValidateExternalConfig, ConfigKeyError, ExternalConfig, ExternalConfigNode, RawStoreProxy, RawStoreProxyMarker, ExtractValues, ProxyStoreOptions, ProxyStore, Unsubscribe, PalistorRef, PalistorList, PalistorEntityProxy, TypedListNode, ListResolver, TemplateConfig, InferEntity, } from "./store/store/types";
|
|
44
33
|
export type { Palistor as PalistorProxy } from "./store/store/types";
|
|
45
34
|
export { Palistor } from "./store/store";
|
|
46
35
|
export type { Resolve, NotifyFn, ResolveErrorContext } from "./store/resolvePipeline/";
|
|
@@ -50,5 +39,7 @@ export { usePersist } from "./react/usePersist";
|
|
|
50
39
|
export { useTranslator } from "./react/useTranslator";
|
|
51
40
|
export { useStoreContext } from "./react/useStoreContext";
|
|
52
41
|
export { defineList } from "./store/defineList";
|
|
42
|
+
export { defineFlow, defineStep } from "./store/flow/defineFlow";
|
|
43
|
+
export type { AnyFlowStep, DefineFlowOptions, FlowError, FlowNode, FlowStep, FlowValues, StepStatus, } from "./store/flow/defineFlow";
|
|
53
44
|
export { defineFieldMapping } from "./store/defineFieldMapping";
|
|
54
45
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC3E,YAAY,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAMnF,YAAY,EACV,aAAa,EACb,aAAa,EACb,cAAc,EACd,WAAW,EACX,UAAU,EACV,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,UAAU,EACV,cAAc,EACd,cAAc,EACd,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,UAAU,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,YAAY,EACZ,cAAc,EACd,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,QAAQ,IAAI,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAMzC,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACvF,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMlD,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAM1D,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAMhD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACjE,YAAY,EACV,WAAW,EACX,iBAAiB,EACjB,SAAS,EACT,QAAQ,EACR,QAAQ,EACR,UAAU,EACV,UAAU,GACX,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,40 +1,29 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Palistor
|
|
2
|
+
* Palistor — reactive form state manager for React.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* useForm(id) вызывается в React-компоненте — привязывает к экземпляру.
|
|
4
|
+
* A store is created from a declarative config (`new Palistor({ config })`)
|
|
5
|
+
* and consumed in React through `useForm(store)`, which returns a tracking
|
|
6
|
+
* proxy: components re-render only when a field they actually read changes.
|
|
8
7
|
*
|
|
9
8
|
* @example
|
|
10
9
|
* ```ts
|
|
11
|
-
* // config/orderForm.ts —
|
|
12
|
-
* import {
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* type: "Order",
|
|
10
|
+
* // config/orderForm.ts — module level
|
|
11
|
+
* import { Palistor } from "palistor";
|
|
12
|
+
*
|
|
13
|
+
* export const orderStore = new Palistor({
|
|
14
|
+
* config: {
|
|
15
|
+
* name: { value: "", isRequired: true },
|
|
16
|
+
* email: { value: "", validate: (v) => (!v.includes("@") ? "Invalid email" : undefined) },
|
|
17
|
+
* },
|
|
20
18
|
* });
|
|
21
19
|
* ```
|
|
22
20
|
*
|
|
23
21
|
* ```tsx
|
|
24
|
-
* //
|
|
25
|
-
*
|
|
26
|
-
* initial: order,
|
|
27
|
-
* onSubmit: async (values) => { await api.saveOrder(values); },
|
|
28
|
-
* });
|
|
22
|
+
* // Component — subscribes via useForm
|
|
23
|
+
* import { useForm } from "palistor";
|
|
29
24
|
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* ```tsx
|
|
34
|
-
* // Вложенный компонент — подключается к существующему store
|
|
35
|
-
* const { getFieldProps } = useForm(orderId);
|
|
36
|
-
*
|
|
37
|
-
* return <Input {...getFieldProps("name")} />;
|
|
25
|
+
* const form = useForm(orderStore);
|
|
26
|
+
* return <input value={form.name.value} onChange={(e) => form.name.onValueChange(e.target.value)} />;
|
|
38
27
|
* ```
|
|
39
28
|
*/
|
|
40
29
|
export { localStorageDriver, sessionStorageDriver } from "./store/persist/drivers";
|
|
@@ -52,7 +41,11 @@ export { useStoreContext } from "./react/useStoreContext";
|
|
|
52
41
|
// ============================================================================
|
|
53
42
|
export { defineList } from "./store/defineList";
|
|
54
43
|
// ============================================================================
|
|
55
|
-
//
|
|
44
|
+
// defineFlow / defineStep — step-based flow primitive
|
|
45
|
+
// ============================================================================
|
|
46
|
+
export { defineFlow, defineStep } from "./store/flow/defineFlow";
|
|
47
|
+
// ============================================================================
|
|
48
|
+
// defineFieldMapping — typed fieldMapping helper (preserves literals)
|
|
56
49
|
// ============================================================================
|
|
57
50
|
export { defineFieldMapping } from "./store/defineFieldMapping";
|
|
58
51
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAQH,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAyCnF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAOzC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,+EAA+E;AAC/E,cAAc;AACd,+EAA+E;AAE/E,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE1D,+EAA+E;AAC/E,iCAAiC;AACjC,+EAA+E;AAE/E,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,+EAA+E;AAC/E,sDAAsD;AACtD,+EAA+E;AAE/E,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAWjE,+EAA+E;AAC/E,sEAAsE;AACtE,+EAA+E;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC"}
|
|
@@ -1,55 +1,55 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* createTrackingProxy —
|
|
3
|
-
*
|
|
2
|
+
* createTrackingProxy — wraps store.proxy in a second Proxy layer that
|
|
3
|
+
* records which config nodes a component has read.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Every `useForm` call creates its own tracking proxy → its own tracked set.
|
|
6
|
+
* This lets `getSnapshot` check the versions of only the nodes that were
|
|
7
|
+
* read, avoiding re-renders when fields the component never reads change.
|
|
8
8
|
*
|
|
9
|
-
* Tracking
|
|
10
|
-
*
|
|
9
|
+
* Tracking is node-level: reading ANY property (value, label, isVisible…)
|
|
10
|
+
* adds the whole node to the tracked set.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* set.
|
|
15
|
-
*
|
|
16
|
-
* tracking
|
|
12
|
+
* Lists: `items`, `map`, `length`, `loading`, `dirty` on a list proxy add the
|
|
13
|
+
* `ListState` object (the LIST_STATE brand, shared by root and per-entity) to
|
|
14
|
+
* the tracked set. A mutation/resolve bumps that ListState's version →
|
|
15
|
+
* getSnapshot detects the change → only the list re-renders. `map` → entity
|
|
16
|
+
* proxies are wrapped in tracking proxies for per-leaf row tracking.
|
|
17
17
|
*/
|
|
18
18
|
import type { ProxyStore } from "../store/store";
|
|
19
19
|
export interface TrackingRefs {
|
|
20
|
-
/**
|
|
20
|
+
/** Set of config nodes the component has read. Only grows (accumulates). */
|
|
21
21
|
accessed: Set<object>;
|
|
22
|
-
/**
|
|
23
|
-
*
|
|
22
|
+
/** Each node's version at first tracking — prevents spurious re-renders
|
|
23
|
+
* right after a node is added to the tracked set. */
|
|
24
24
|
lastVersions: Map<object, number>;
|
|
25
25
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
* -
|
|
29
|
-
* -
|
|
26
|
+
* The component accessed child keys (form.email, form.passport) without
|
|
27
|
+
* reading FIELD_STATE_PROPS. Distinguishes:
|
|
28
|
+
* - "navigation without reads" (Parent passes a subtree as a prop) → stable snapshot
|
|
29
|
+
* - "touched nothing" (renderHook without JSX) → fallback to the global version
|
|
30
30
|
*/
|
|
31
31
|
hasNavigated: boolean;
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
|
-
*
|
|
34
|
+
* Check whether an object is a tracking proxy (carries the SOURCE_PROXY symbol).
|
|
35
35
|
*/
|
|
36
36
|
export declare function isTrackingProxy(obj: unknown): boolean;
|
|
37
37
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
38
|
+
* Extract the source proxy and store from a tracking proxy.
|
|
39
|
+
* Returns null when the object is not a tracking proxy.
|
|
40
40
|
*/
|
|
41
41
|
export declare function unwrapTrackingProxy<TConfig extends Record<string, any>>(obj: unknown): {
|
|
42
42
|
sourceProxy: any;
|
|
43
43
|
store: ProxyStore<TConfig>;
|
|
44
44
|
} | null;
|
|
45
45
|
/**
|
|
46
|
-
*
|
|
47
|
-
*
|
|
46
|
+
* Create a tracking proxy on top of a source proxy.
|
|
47
|
+
* Cached by source-proxy object (one tracking proxy per nested node).
|
|
48
48
|
*
|
|
49
|
-
* @param sourceProxy —
|
|
49
|
+
* @param sourceProxy — the base Proxy from store.proxy (or its child node)
|
|
50
50
|
* @param refs — per-component tracking state (accessed, lastVersions)
|
|
51
|
-
* @param store — ProxyStore,
|
|
52
|
-
* @param cache — WeakMap
|
|
51
|
+
* @param store — the ProxyStore, for reading current node versions
|
|
52
|
+
* @param cache — WeakMap caching tracking proxy objects
|
|
53
53
|
*/
|
|
54
54
|
export declare function createTrackingProxy<TConfig extends Record<string, any>>(sourceProxy: any, refs: TrackingRefs, store: ProxyStore<TConfig>, cache: WeakMap<object, object>): any;
|
|
55
55
|
//# sourceMappingURL=createTrackingProxy.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createTrackingProxy.d.ts","sourceRoot":"","sources":["../../react/createTrackingProxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"createTrackingProxy.d.ts","sourceRoot":"","sources":["../../react/createTrackingProxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAmBjD,MAAM,WAAW,YAAY;IAC3B,4EAA4E;IAC5E,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB;0DACsD;IACtD,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC;;;;;OAKG;IACH,YAAY,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAErD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrE,GAAG,EAAE,OAAO,GACX;IAAE,WAAW,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;CAAE,GAAG,IAAI,CAMzD;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACrE,WAAW,EAAE,GAAG,EAChB,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,EAC1B,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,GAAG,CA4JL"}
|
|
@@ -1,30 +1,46 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* createTrackingProxy —
|
|
3
|
-
*
|
|
2
|
+
* createTrackingProxy — wraps store.proxy in a second Proxy layer that
|
|
3
|
+
* records which config nodes a component has read.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
5
|
+
* Every `useForm` call creates its own tracking proxy → its own tracked set.
|
|
6
|
+
* This lets `getSnapshot` check the versions of only the nodes that were
|
|
7
|
+
* read, avoiding re-renders when fields the component never reads change.
|
|
8
8
|
*
|
|
9
|
-
* Tracking
|
|
10
|
-
*
|
|
9
|
+
* Tracking is node-level: reading ANY property (value, label, isVisible…)
|
|
10
|
+
* adds the whole node to the tracked set.
|
|
11
11
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* set.
|
|
15
|
-
*
|
|
16
|
-
* tracking
|
|
12
|
+
* Lists: `items`, `map`, `length`, `loading`, `dirty` on a list proxy add the
|
|
13
|
+
* `ListState` object (the LIST_STATE brand, shared by root and per-entity) to
|
|
14
|
+
* the tracked set. A mutation/resolve bumps that ListState's version →
|
|
15
|
+
* getSnapshot detects the change → only the list re-renders. `map` → entity
|
|
16
|
+
* proxies are wrapped in tracking proxies for per-leaf row tracking.
|
|
17
17
|
*/
|
|
18
|
-
import { FIELD_STATE_PROPS, CONFIG_NODE, SOURCE_PROXY, STORE_REF, ENTITY_ID_LEAF, LIST_STATE } from "../store/constants";
|
|
18
|
+
import { FIELD_STATE_PROPS, CONFIG_NODE, SOURCE_PROXY, STORE_REF, ENTITY_ID_LEAF, LIST_STATE, FLOW_STATE } from "../store/constants";
|
|
19
19
|
/**
|
|
20
|
-
*
|
|
20
|
+
* Flow-/step-proxy keys that are reactive through the FlowState object's
|
|
21
|
+
* version (navigation bumps it). The FLOW_STATE brand check runs only when
|
|
22
|
+
* the key matches — zero overhead for non-flow nodes on other keys.
|
|
23
|
+
*/
|
|
24
|
+
const FLOW_TRACKED_KEYS = new Set([
|
|
25
|
+
"currentStepKey",
|
|
26
|
+
"currentStepIndex",
|
|
27
|
+
"canGoBack",
|
|
28
|
+
"history",
|
|
29
|
+
"errors",
|
|
30
|
+
"status",
|
|
31
|
+
"steps",
|
|
32
|
+
"current",
|
|
33
|
+
"loading",
|
|
34
|
+
]);
|
|
35
|
+
/**
|
|
36
|
+
* Check whether an object is a tracking proxy (carries the SOURCE_PROXY symbol).
|
|
21
37
|
*/
|
|
22
38
|
export function isTrackingProxy(obj) {
|
|
23
39
|
return !!obj && typeof obj === "object" && !!obj[SOURCE_PROXY];
|
|
24
40
|
}
|
|
25
41
|
/**
|
|
26
|
-
*
|
|
27
|
-
*
|
|
42
|
+
* Extract the source proxy and store from a tracking proxy.
|
|
43
|
+
* Returns null when the object is not a tracking proxy.
|
|
28
44
|
*/
|
|
29
45
|
export function unwrapTrackingProxy(obj) {
|
|
30
46
|
if (!isTrackingProxy(obj))
|
|
@@ -35,41 +51,41 @@ export function unwrapTrackingProxy(obj) {
|
|
|
35
51
|
};
|
|
36
52
|
}
|
|
37
53
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
54
|
+
* Create a tracking proxy on top of a source proxy.
|
|
55
|
+
* Cached by source-proxy object (one tracking proxy per nested node).
|
|
40
56
|
*
|
|
41
|
-
* @param sourceProxy —
|
|
57
|
+
* @param sourceProxy — the base Proxy from store.proxy (or its child node)
|
|
42
58
|
* @param refs — per-component tracking state (accessed, lastVersions)
|
|
43
|
-
* @param store — ProxyStore,
|
|
44
|
-
* @param cache — WeakMap
|
|
59
|
+
* @param store — the ProxyStore, for reading current node versions
|
|
60
|
+
* @param cache — WeakMap caching tracking proxy objects
|
|
45
61
|
*/
|
|
46
62
|
export function createTrackingProxy(sourceProxy, refs, store, cache) {
|
|
47
63
|
if (cache.has(sourceProxy))
|
|
48
64
|
return cache.get(sourceProxy);
|
|
49
65
|
const tracked = new Proxy(sourceProxy, {
|
|
50
66
|
get(target, key) {
|
|
51
|
-
// CONFIG_NODE —
|
|
67
|
+
// CONFIG_NODE — forwarded; the tracking proxy is transparent to this symbol
|
|
52
68
|
if (key === CONFIG_NODE)
|
|
53
69
|
return target[CONFIG_NODE];
|
|
54
|
-
// SOURCE_PROXY —
|
|
70
|
+
// SOURCE_PROXY — return the underlying store proxy (the tracking proxy's target)
|
|
55
71
|
if (key === SOURCE_PROXY)
|
|
56
72
|
return target;
|
|
57
|
-
// STORE_REF —
|
|
73
|
+
// STORE_REF — return the ProxyStore reference
|
|
58
74
|
if (key === STORE_REF)
|
|
59
75
|
return store;
|
|
60
|
-
//
|
|
76
|
+
// Other symbols are forwarded as-is
|
|
61
77
|
if (typeof key === "symbol")
|
|
62
78
|
return target[key];
|
|
63
|
-
//
|
|
64
|
-
//
|
|
65
|
-
//
|
|
79
|
+
// Reverse mapping on input: external → internal. State checks (list
|
|
80
|
+
// keys, FIELD_STATE_PROPS) use `ikey`; reads and navigation use the
|
|
81
|
+
// original external `key` (the source proxy translates it back).
|
|
66
82
|
const ikey = (store.externalToInternal[key] ?? key);
|
|
67
|
-
// ── List proxy (
|
|
68
|
-
//
|
|
69
|
-
//
|
|
70
|
-
//
|
|
71
|
-
// `loading`/`dirty`
|
|
72
|
-
//
|
|
83
|
+
// ── List proxy (single building block: root + per-entity) ──────────────
|
|
84
|
+
// The tracking key is the ListState object, NOT the shared listConfigNode:
|
|
85
|
+
// otherwise the versions of different owners of one per-entity list would
|
|
86
|
+
// collapse, and root vs entity would need two branches. Must run BEFORE
|
|
87
|
+
// FIELD_STATE_PROPS: `loading`/`dirty` belong to FIELD_STATE_PROPS, but on
|
|
88
|
+
// a list they must be tracked by ListState, not CONFIG_NODE.
|
|
73
89
|
const listState = target[LIST_STATE];
|
|
74
90
|
if (listState) {
|
|
75
91
|
if (ikey === "length" || ikey === "loading" || ikey === "dirty") {
|
|
@@ -95,21 +111,55 @@ export function createTrackingProxy(sourceProxy, refs, store, cache) {
|
|
|
95
111
|
const origMap = target[key];
|
|
96
112
|
return (fn) => origMap((item, index, id) => fn(createTrackingProxy(item, refs, store, cache), index, id));
|
|
97
113
|
}
|
|
98
|
-
// add/remove/setItems/getById —
|
|
114
|
+
// add/remove/setItems/getById — forwarded without tracking.
|
|
99
115
|
return target[key];
|
|
100
116
|
}
|
|
101
|
-
//
|
|
102
|
-
//
|
|
117
|
+
// ── Flow proxy / step proxy (defineFlow) ────────────────────────────────
|
|
118
|
+
// Navigation state is tracked by the FlowState object (the FLOW_STATE brand
|
|
119
|
+
// is exposed by the flow node, the steps proxy and step nodes). Runs BEFORE
|
|
120
|
+
// FIELD_STATE_PROPS: `loading` belongs there, but on a flow it is composite
|
|
121
|
+
// (any step loading) and needs subscriptions to the step nodes, not just
|
|
122
|
+
// the flow's CONFIG_NODE.
|
|
123
|
+
if (FLOW_TRACKED_KEYS.has(ikey)) {
|
|
124
|
+
const flowState = target[FLOW_STATE];
|
|
125
|
+
if (flowState) {
|
|
126
|
+
// "steps" is pure navigation to the collection (re-read on every
|
|
127
|
+
// re-render); the access itself doesn't depend on the current step — untracked.
|
|
128
|
+
if (ikey !== "steps" && !refs.accessed.has(flowState)) {
|
|
129
|
+
refs.accessed.add(flowState);
|
|
130
|
+
refs.lastVersions.set(flowState, store.getNodeVersion(flowState));
|
|
131
|
+
}
|
|
132
|
+
// Composite loading: a step's resolve bumps the step node's version.
|
|
133
|
+
if (ikey === "loading" && Array.isArray(flowState.stepNodes)) {
|
|
134
|
+
for (const stepNode of flowState.stepNodes) {
|
|
135
|
+
if (!refs.accessed.has(stepNode)) {
|
|
136
|
+
refs.accessed.add(stepNode);
|
|
137
|
+
refs.lastVersions.set(stepNode, store.getNodeVersion(stepNode));
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
const result = target[key];
|
|
142
|
+
// Objects (the steps proxy, step proxies, and any child nodes that
|
|
143
|
+
// happen to match by name) — wrapped recursively, like regular navigation.
|
|
144
|
+
if (result && typeof result === "object") {
|
|
145
|
+
refs.hasNavigated = true;
|
|
146
|
+
return createTrackingProxy(result, refs, store, cache);
|
|
147
|
+
}
|
|
148
|
+
return result;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
// Field-state read → track the node.
|
|
152
|
+
// submitting is a reactive group flag and needs tracking too.
|
|
103
153
|
if (FIELD_STATE_PROPS.has(ikey) || ikey === "submitting") {
|
|
104
154
|
const configNode = target[CONFIG_NODE];
|
|
105
155
|
if (configNode && !refs.accessed.has(configNode)) {
|
|
106
156
|
refs.accessed.add(configNode);
|
|
107
|
-
//
|
|
157
|
+
// Save the current version so getSnapshot doesn't treat it as a change
|
|
108
158
|
refs.lastVersions.set(configNode, store.getNodeVersion(configNode));
|
|
109
159
|
}
|
|
110
160
|
return target[key];
|
|
111
161
|
}
|
|
112
|
-
//
|
|
162
|
+
// Child object → recursive tracking proxy
|
|
113
163
|
const result = target[key];
|
|
114
164
|
// Entity id access: the entity proxy returns the id string directly (not via a
|
|
115
165
|
// leaf proxy), so we would normally miss tracking it. Detect by checking if the
|
|
@@ -129,12 +179,12 @@ export function createTrackingProxy(sourceProxy, refs, store, cache) {
|
|
|
129
179
|
return result;
|
|
130
180
|
},
|
|
131
181
|
set(target, key, value) {
|
|
132
|
-
//
|
|
182
|
+
// Writes are forwarded to the source proxy (the SET trap in buildProxy)
|
|
133
183
|
return Reflect.set(target, key, value);
|
|
134
184
|
},
|
|
135
185
|
/**
|
|
136
|
-
*
|
|
137
|
-
*
|
|
186
|
+
* Forward ownKeys from the source proxy so spread ({...trackingProxy})
|
|
187
|
+
* returns the same keys as the store proxy (no validate, formatter, …).
|
|
138
188
|
*/
|
|
139
189
|
ownKeys(target) {
|
|
140
190
|
return Reflect.ownKeys(target);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createTrackingProxy.js","sourceRoot":"","sources":["../../react/createTrackingProxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"createTrackingProxy.js","sourceRoot":"","sources":["../../react/createTrackingProxy.ts"],"names":[],"mappings":"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"}
|