Skip to content

Commit bd8383e

Browse files
committed
Cleanup inspector
1 parent d6bffa2 commit bd8383e

File tree

4 files changed

+55
-64
lines changed

4 files changed

+55
-64
lines changed

packages/debugger/src/inspector/index.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export function createInspector(props: {
2828

2929
let lastDetails: Mapped.OwnerDetails | undefined
3030
let inspectedOwner: Solid.Owner | null
31-
let valueMap = inspector.value_node_map_make()
31+
let valueMap: inspector.Value_Node_Map = new Map()
3232
const propsMap: inspector.Observed_Props_Map = new WeakMap()
3333
/** compare props object with the previous one to see whats changed */
3434
let checkProxyProps: (() => InspectorUpdateMap['propKeys'] | null) | null
@@ -37,7 +37,7 @@ export function createInspector(props: {
3737
For the extension for inspecting values through `inspect()`
3838
*/
3939
function getValue(id: ValueItemID): unknown {
40-
return inspector.value_node_map_get(valueMap, id)?.get_value?.()
40+
return valueMap.get(id)?.get_value?.()
4141
}
4242
window[GLOBAL_GET_VALUE] = getValue
4343

@@ -55,7 +55,7 @@ export function createInspector(props: {
5555

5656
// Value Nodes (signals, props, and owner value)
5757
for (const [id, toggleChange] of valueUpdates) {
58-
const node = inspector.value_node_map_get(valueMap, id)
58+
const node = valueMap.get(id)
5959
if (!node || !node.get_value) continue
6060
// TODO shouldn't the previous stores be unsubscribed here? after update, they might no longer be here
6161
const selected = inspector.value_node_is_selected(node)
@@ -210,7 +210,7 @@ export function createInspector(props: {
210210
return {
211211
getLastDetails: () => lastDetails,
212212
toggleValueNode({id, selected}: ToggleInspectedValueData): void {
213-
const node = inspector.value_node_map_get(valueMap, id)
213+
const node = valueMap.get(id)
214214
if (!node) return warn('Could not find value node:', id)
215215
inspector.value_node_set_selected(node, selected)
216216
pushInspectToggle(id, selected)

packages/debugger/src/inspector/inspector.test.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import * as test from 'vitest'
55
import {getObjectById, getSdtId, ObjectType} from '../main/id.ts'
66
import setup from '../main/setup.ts'
77
import {dom_element_interface, type Mapped, NodeType, PropGetterState, type Solid, ValueType} from '../types.ts'
8-
import {collect_owner_details, value_node_map_get} from './inspector.ts'
8+
import {collect_owner_details} from './inspector.ts'
99

1010
const eli = dom_element_interface
1111

@@ -77,9 +77,9 @@ test.describe('collect_owner_details', () => {
7777
],
7878
} satisfies Mapped.OwnerDetails)
7979

80-
test.expect(value_node_map_get(value_map, `signal:${getSdtId(customValue, ObjectType.CustomValue)}`)).toBeTruthy()
81-
test.expect(value_node_map_get(value_map, `signal:${getSdtId(signalB, ObjectType.Signal)}`)).toBeTruthy()
82-
test.expect(value_node_map_get(value_map, `signal:${getSdtId(innerMemo, ObjectType.Owner)}`)).toBeTruthy()
80+
test.expect(value_map.get(`signal:${getSdtId(customValue, ObjectType.CustomValue)}`)).toBeTruthy()
81+
test.expect(value_map.get(`signal:${getSdtId(signalB, ObjectType.Signal)}`)).toBeTruthy()
82+
test.expect(value_map.get(`signal:${getSdtId(innerMemo, ObjectType.Owner)}`)).toBeTruthy()
8383

8484
test.expect(getObjectById('#3', ObjectType.Element)).toBe(div)
8585

packages/debugger/src/inspector/inspector.ts

Lines changed: 45 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,42 @@ export type Value_Node = {
1515
get_value: (() => unknown) | undefined
1616
}
1717

18+
export type Value_Node_Map = Map<ValueItemID, Value_Node>
19+
20+
/** Prop becomes stale or live (is being currently listened to reactively or not) */
21+
export type On_Prop_State_Change = (key: string, state: PropGetterState) => void
22+
export type On_Value_Update = (id: ValueItemID) => void
23+
24+
export type Observed_Props_Map = WeakMap<Solid.Props, Observed_Props>
25+
26+
/**
27+
* Manages observing getter properties.
28+
* This is used to track when a prop is accessed and when it is no longer accessed. (STALE | LIVE)
29+
*/
30+
export type Observed_Props = {
31+
props: Solid.Props
32+
on_prop_state_change?: On_Prop_State_Change | undefined
33+
on_value_update?: On_Value_Update | undefined
34+
observed_getters: Record<string, {v: unknown | typeof $NOT_SET; n: number}>
35+
}
36+
37+
export type Inspector_Context<TEl extends object> = {
38+
value_map: Value_Node_Map
39+
config: Collect_Details_Config<TEl>
40+
}
41+
42+
export type Collect_Details_Config<TEl extends object> = {
43+
on_prop_state_change: On_Prop_State_Change
44+
on_value_update: On_Value_Update
45+
props_map: Observed_Props_Map
46+
eli: ElementInterface<TEl>
47+
}
48+
49+
50+
const $INSPECTOR = Symbol('inspector')
51+
const $NOT_SET = Symbol('not-set')
52+
53+
1854
export function value_node_make(get_value: (() => unknown) | undefined): Value_Node {
1955
return {
2056
tracked_stores: [],
@@ -46,44 +82,11 @@ export function value_node_set_selected(node: Value_Node, selected: boolean): vo
4682
if (!selected) value_node_unsubscribe(node)
4783
}
4884

49-
export type Value_Node_Map = Map<ValueItemID, Value_Node>
50-
51-
export function value_node_map_make(): Value_Node_Map {
52-
return new Map()
53-
}
54-
55-
export function value_node_map_get(map: Value_Node_Map, id: ValueItemID): Value_Node | undefined {
56-
return map.get(id)
57-
}
58-
59-
export function value_node_map_add(map: Value_Node_Map, id: ValueItemID, get_value: (() => unknown) | undefined): void {
60-
map.set(id, value_node_make(get_value))
61-
}
62-
6385
export function value_node_map_reset(map: Value_Node_Map): void {
6486
for (let signal of map.values()) value_node_reset(signal)
6587
}
6688

67-
/** Prop becomes stale or live (is being currently listened to reactively or not) */
68-
export type On_Prop_State_Change = (key: string, state: PropGetterState) => void
69-
export type On_Value_Update = (id: ValueItemID) => void
70-
71-
export type Observed_Props_Map = WeakMap<Solid.Component['props'], Observed_Props>
72-
73-
const $NOT_SET = Symbol('not-set')
74-
75-
/**
76-
* Manages observing getter properties.
77-
* This is used to track when a prop is accessed and when it is no longer accessed. (STALE | LIVE)
78-
*/
79-
export type Observed_Props = {
80-
props: Solid.Component['props']
81-
on_prop_state_change?: On_Prop_State_Change | undefined
82-
on_value_update?: On_Value_Update | undefined
83-
observed_getters: Record<string, {v: unknown | typeof $NOT_SET; n: number}>
84-
}
85-
86-
export function observed_props_make(props: Solid.Component['props']): Observed_Props {
89+
export function observed_props_make(props: Solid.Props): Observed_Props {
8790
return {
8891
props: props,
8992
on_prop_state_change: undefined,
@@ -170,21 +173,6 @@ export function clear_owner_observers(owner: Solid.Owner, observed_props_map: Ob
170173
}
171174
}
172175

173-
type Inspector_Context<TEl extends object> = {
174-
value_map: Value_Node_Map
175-
config: Collect_Details_Config<TEl>
176-
}
177-
178-
export
179-
type Collect_Details_Config<TEl extends object> = {
180-
on_prop_state_change: On_Prop_State_Change
181-
on_value_update: On_Value_Update
182-
props_map: Observed_Props_Map
183-
eli: ElementInterface<TEl>
184-
}
185-
186-
const $INSPECTOR = Symbol('inspector')
187-
188176
function map_source_value<TEl extends object>(
189177
node_raw: Solid.SourceMapValue | Solid.Computation,
190178
handler: (nodeId: NodeID, value: unknown) => void,
@@ -205,7 +193,7 @@ function map_source_value<TEl extends object>(
205193
return null
206194
}
207195

208-
value_node_map_add(ctx.value_map, `${ValueItemType.Signal}:${id}`, () => node_raw.value)
196+
ctx.value_map.set(`${ValueItemType.Signal}:${id}`, value_node_make(() => node_raw.value))
209197

210198
if (node.kind === NodeType.Memo ||
211199
node.kind === NodeType.Signal
@@ -247,7 +235,7 @@ export function pre_observe_component_props(
247235
}
248236

249237
function map_props<TEl extends object>(
250-
props: Solid.Component['props'],
238+
props: Solid.Props,
251239
ctx: Inspector_Context<TEl>,
252240
) {
253241
// proxy props need to be checked for changes in keys
@@ -277,7 +265,7 @@ function map_props<TEl extends object>(
277265
// GETTER
278266
if (desc.get) {
279267
let {get_value, is_stale} = observed_props_observe_prop(observed, key, id, desc.get)
280-
value_node_map_add(ctx.value_map, id, get_value)
268+
ctx.value_map.set(id, value_node_make(get_value))
281269
let last_value = get_value()
282270
record[key] = {
283271
getter: is_stale ? PropGetterState.Stale : PropGetterState.Live,
@@ -291,8 +279,9 @@ function map_props<TEl extends object>(
291279
value: encodeValue(desc.value, false, ctx.config.eli),
292280
}
293281
// non-object props cannot be inspected (won't ever change and aren't deep)
294-
if (Array.isArray(desc.value) || misc.is_plain_object(desc.value))
295-
value_node_map_add(ctx.value_map, id, () => desc.value)
282+
if (Array.isArray(desc.value) || misc.is_plain_object(desc.value)) {
283+
ctx.value_map.set(id, value_node_make(() => desc.value))
284+
}
296285
}
297286
}
298287
}
@@ -305,7 +294,7 @@ export function collect_owner_details<TEl extends object>(
305294
config: Collect_Details_Config<TEl>,
306295
) {
307296
let ctx: Inspector_Context<TEl> = {
308-
value_map: value_node_map_make(),
297+
value_map: new Map(),
309298
config: config,
310299
}
311300

@@ -400,7 +389,7 @@ export function collect_owner_details<TEl extends object>(
400389
}
401390
}
402391

403-
value_node_map_add(ctx.value_map, ValueItemType.Value, get_value)
392+
ctx.value_map.set(ValueItemType.Value, value_node_make(get_value))
404393

405394
return {
406395
details: details,

packages/debugger/src/main/types.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,8 @@ export namespace Solid {
225225

226226
export type Owner = Root | Computation | CatchError
227227

228+
export type Props = {[key: string]: unknown}
229+
228230
//
229231
// STORE
230232
//

0 commit comments

Comments
 (0)