Skip to content

Commit 51ed7d5

Browse files
committed
Cleanup inspector
1 parent fd49aad commit 51ed7d5

File tree

1 file changed

+30
-25
lines changed

1 file changed

+30
-25
lines changed

packages/debugger/src/inspector/inspector.ts

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ export enum Value_Kind {
1616
}
1717

1818
export type Value_Data =
19-
| {kind: Value_Kind.Observed_Getter; data: Observed_Prop_Data}
19+
| {kind: Value_Kind.Observed_Getter; data: Observed_Getter}
2020
| {kind: Value_Kind.Value; value: unknown}
2121
| {kind: Value_Kind.Value_Obj; obj: {value?: unknown}}
2222

@@ -42,10 +42,10 @@ export type Observed_Props = {
4242
props: Solid.Props
4343
on_prop_state_change?: On_Prop_State_Change | undefined
4444
on_value_update?: On_Value_Update | undefined
45-
observed_getters: Record<string, Observed_Prop_Data>
45+
observed_getters: Record<string, Observed_Getter>
4646
}
4747

48-
export type Observed_Prop_Data = {
48+
export type Observed_Getter = {
4949
v: unknown | typeof $NOT_SET
5050
n: number // number of listeners
5151
}
@@ -87,7 +87,7 @@ export function value_node_make_obj(obj: {value?: unknown}): Value_Node {
8787
export function value_node_make_value(value: unknown): Value_Node {
8888
return value_node_make({kind: Value_Kind.Value, value})
8989
}
90-
export function value_node_make_observed_getter(data: Observed_Prop_Data): Value_Node {
90+
export function value_node_make_observed_getter(data: Observed_Getter): Value_Node {
9191
return value_node_make({kind: Value_Kind.Observed_Getter, data})
9292
}
9393

@@ -123,7 +123,7 @@ export function observed_props_make(props: Solid.Props): Observed_Props {
123123
props: props,
124124
on_prop_state_change: undefined,
125125
on_value_update: undefined,
126-
observed_getters: {} as Record<string, Observed_Prop_Data>
126+
observed_getters: {} as Record<string, Observed_Getter>
127127
}
128128
}
129129

@@ -132,32 +132,38 @@ export function observed_props_observe_prop(
132132
key: string,
133133
id: ValueItemID,
134134
get: () => unknown,
135-
): {data: Observed_Prop_Data; is_stale: boolean} {
135+
): Observed_Getter {
136136
if (observed.observed_getters[key]) {
137-
let o = observed.observed_getters[key]
138-
return {data: o, is_stale: o.n === 0}
137+
return observed.observed_getters[key]
139138
}
140139

141-
let o: Observed_Prop_Data = (observed.observed_getters[key] = {v: $NOT_SET, n: 0})
140+
let o: Observed_Getter = observed.observed_getters[key] = {v: $NOT_SET, n: 0}
142141

143142
// monkey patch the getter to track when it is accessed and when it is no longer accessed.
144143
// and to track when the value changes.
145144
Object.defineProperty(observed.props, key, {
146145
get() {
147146
let value = get()
148-
if (setup.solid.getListener()) {
149-
utils.onCleanup(
150-
() => --o.n === 0 && observed.on_prop_state_change?.(key, PropGetterState.Stale),
151-
)
147+
let listener = setup.solid.getListener()
148+
if (listener != null) {
149+
utils.onOwnerCleanup(listener, () => {
150+
if (--o.n === 0) {
151+
observed.on_prop_state_change?.(key, PropGetterState.Stale)
152+
}
153+
})
152154
}
153-
++o.n === 1 && observed.on_prop_state_change?.(key, PropGetterState.Live)
154-
if (value !== o.v) observed.on_value_update?.(id)
155-
return (o.v = value)
155+
if (++o.n === 1) {
156+
observed.on_prop_state_change?.(key, PropGetterState.Live)
157+
}
158+
if (value !== o.v) {
159+
observed.on_value_update?.(id)
160+
}
161+
return o.v = value
156162
},
157163
enumerable: true,
158164
})
159165

160-
return {data: o, is_stale: true}
166+
return o
161167
}
162168

163169
function compare_proxy_prop_keys(
@@ -256,9 +262,8 @@ export function pre_observe_component_props(
256262

257263
// Set up getters for all props to enable tracking
258264
for (let [key, desc] of Object.entries(Object.getOwnPropertyDescriptors(props))) {
259-
if (desc.get) {
260-
let id: ValueItemID = `prop:${key}`
261-
observed_props_observe_prop(observed, key, id, desc.get)
265+
if (desc.get != null) {
266+
observed_props_observe_prop(observed, key, `prop:${key}`, desc.get)
262267
}
263268
}
264269
}
@@ -292,12 +297,12 @@ function map_props<TEl extends object>(
292297
for (let [key, desc] of Object.entries(Object.getOwnPropertyDescriptors(props))) {
293298
let id: ValueItemID = `prop:${key}`
294299
// GETTER
295-
if (desc.get) {
296-
let {data, is_stale} = observed_props_observe_prop(observed, key, id, desc.get)
297-
ctx.value_map.set(id, value_node_make_observed_getter(data))
300+
if (desc.get != null) {
301+
let prop_data = observed_props_observe_prop(observed, key, id, desc.get)
302+
ctx.value_map.set(id, value_node_make_observed_getter(prop_data))
298303
record[key] = {
299-
getter: is_stale ? PropGetterState.Stale : PropGetterState.Live,
300-
value: data.v !== $NOT_SET ? encodeValue(data.v, false, ctx.config.eli) : null,
304+
getter: prop_data.n === 0 ? PropGetterState.Stale : PropGetterState.Live,
305+
value: prop_data.v !== $NOT_SET ? encodeValue(prop_data.v, false, ctx.config.eli) : null,
301306
}
302307
}
303308
// VALUE

0 commit comments

Comments
 (0)