From 4267082c8ef7644baedaea665fbcf4cc836f6731 Mon Sep 17 00:00:00 2001 From: Alex Rickabaugh Date: Fri, 28 Jun 2024 12:08:07 -0700 Subject: [PATCH] refactor(core): export additional methods from primitives/signals (#56759) Export `producerIncrementEpoch` which was missing before, as well as a new `runPostSignalSetFn` helper. These changes make it easier to write `signal`- like utilities which don't use the `createSignal` abstraction. PR Close #56759 --- goldens/public-api/core/primitives/signals/index.api.md | 6 ++++++ packages/core/primitives/signals/index.ts | 2 ++ packages/core/primitives/signals/src/signal.ts | 4 ++++ 3 files changed, 12 insertions(+) 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.