diff --git a/goldens/public-api/core/primitives/signals/index.api.md b/goldens/public-api/core/primitives/signals/index.api.md index af7ecedd023..a98427bb99f 100644 --- a/goldens/public-api/core/primitives/signals/index.api.md +++ b/goldens/public-api/core/primitives/signals/index.api.md @@ -52,6 +52,9 @@ export function isReactive(value: unknown): value is Reactive; // @public export function producerAccessed(node: ReactiveNode): void; +// @public +export function producerIncrementEpoch(): void; + // @public export function producerNotifyConsumers(node: ReactiveNode): void; @@ -92,6 +95,9 @@ export interface ReactiveNode { version: Version; } +// @public (undocumented) +export function runPostSignalSetFn(): void; + // @public (undocumented) export function setActiveConsumer(consumer: ReactiveNode | null): ReactiveNode | null; diff --git a/packages/core/primitives/signals/index.ts b/packages/core/primitives/signals/index.ts index 0fa7a4a1569..7f962d068f3 100644 --- a/packages/core/primitives/signals/index.ts +++ b/packages/core/primitives/signals/index.ts @@ -23,6 +23,7 @@ export { isInNotificationPhase, isReactive, producerAccessed, + producerIncrementEpoch, producerNotifyConsumers, producerUpdateValueVersion, producerUpdatesAllowed, @@ -33,6 +34,7 @@ export { SignalGetter, SignalNode, createSignal, + runPostSignalSetFn, setPostSignalSetFn, signalSetFn, signalUpdateFn, diff --git a/packages/core/primitives/signals/src/signal.ts b/packages/core/primitives/signals/src/signal.ts index 7c20ee66a7a..8daad830a0f 100644 --- a/packages/core/primitives/signals/src/signal.ts +++ b/packages/core/primitives/signals/src/signal.ts @@ -87,6 +87,10 @@ export function signalUpdateFn(node: SignalNode, updater: (value: T) => T) signalSetFn(node, updater(node.value)); } +export function runPostSignalSetFn(): void { + postSignalSetFn?.(); +} + // Note: Using an IIFE here to ensure that the spread assignment is not considered // a side-effect, ending up preserving `COMPUTED_NODE` and `REACTIVE_NODE`. // TODO: remove when https://github.com/evanw/esbuild/issues/3392 is resolved.