Skip to content

Commit fa0a9a5

Browse files
refactor(core): add "kind" to signal prototype nodes (#58333)
Enables debug APIs to determine the kind of a signal given a node. PR Close #58333
1 parent 392c036 commit fa0a9a5

File tree

4 files changed

+14
-0
lines changed

4 files changed

+14
-0
lines changed

goldens/public-api/core/primitives/signals/index.api.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ export interface ReactiveNode {
8686
consumerOnSignalRead(node: unknown): void;
8787
debugName?: string;
8888
dirty: boolean;
89+
kind: string;
8990
lastCleanEpoch: Version;
9091
liveConsumerIndexOfThis: number[] | undefined;
9192
liveConsumerNode: ReactiveNode[] | undefined;

packages/core/primitives/signals/src/computed.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ const COMPUTED_NODE = /* @__PURE__ */ (() => {
101101
dirty: true,
102102
error: null,
103103
equal: defaultEquals,
104+
kind: 'computed',
104105

105106
producerMustRecompute(node: ComputedNode<unknown>): boolean {
106107
// Force a recomputation if there's no current value, or if the current value is in the

packages/core/primitives/signals/src/graph.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ export const REACTIVE_NODE: ReactiveNode = {
6666
liveConsumerIndexOfThis: undefined,
6767
consumerAllowSignalWrites: false,
6868
consumerIsAlwaysLive: false,
69+
kind: 'unknown',
6970
producerMustRecompute: () => false,
7071
producerRecomputeValue: () => {},
7172
consumerMarkedDirty: () => {},
@@ -184,6 +185,16 @@ export interface ReactiveNode {
184185
* A debug name for the reactive node. Used in Angular DevTools to identify the node.
185186
*/
186187
debugName?: string;
188+
189+
/**
190+
* Kind of node. Example: 'signal', 'computed', 'input', 'effect'.
191+
*
192+
* ReactiveNode has this as 'unknown' by default, but derived node types should override this to
193+
* make available the kind of signal that particular instance of a ReactiveNode represents.
194+
*
195+
* Used in Angular DevTools to identify the kind of signal.
196+
*/
197+
kind: string;
187198
}
188199

189200
interface ConsumerNode extends ReactiveNode {

packages/core/primitives/signals/src/signal.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ export const SIGNAL_NODE: SignalNode<unknown> = /* @__PURE__ */ (() => {
9999
...REACTIVE_NODE,
100100
equal: defaultEquals,
101101
value: undefined,
102+
kind: 'signal',
102103
};
103104
})();
104105

0 commit comments

Comments
 (0)