Skip to content

Commit 784af9f

Browse files
committed
feat: inspect map without adding new data source
1 parent e01556c commit 784af9f

File tree

2 files changed

+14
-17
lines changed
  • packages/svelte

2 files changed

+14
-17
lines changed

packages/svelte/src/reactivity/map.js

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ export class ReactiveMap extends Map {
1313
/** @type {Map<K, import('#client').Source<V>>} */
1414
#sources = new Map();
1515
#version = source(0);
16-
#inspect_version = source(0);
1716
#size = source(0);
1817

1918
/**
@@ -40,9 +39,6 @@ export class ReactiveMap extends Map {
4039
#increment_version() {
4140
set(this.#version, this.#version.v + 1);
4241
}
43-
#increment_inspect_version() {
44-
set(this.#inspect_version, this.#inspect_version.v + 1);
45-
}
4642

4743
/** @param {K} key */
4844
has(key) {
@@ -97,11 +93,8 @@ export class ReactiveMap extends Map {
9793
sources.set(key, source(value));
9894
set(this.#size, sources.size);
9995
this.#increment_version();
100-
this.#increment_inspect_version();
10196
} else {
102-
const old_version = s.version;
10397
set(s, value);
104-
if (s.version !== old_version) this.#increment_inspect_version();
10598
}
10699

107100
return super.set(key, value);
@@ -117,7 +110,6 @@ export class ReactiveMap extends Map {
117110
set(this.#size, sources.size);
118111
set(s, /** @type {V} */ (UNINITIALIZED));
119112
this.#increment_version();
120-
this.#increment_inspect_version();
121113
}
122114

123115
return super.delete(key);
@@ -132,7 +124,6 @@ export class ReactiveMap extends Map {
132124
set(s, /** @type {V} */ (UNINITIALIZED));
133125
}
134126
this.#increment_version();
135-
this.#increment_inspect_version();
136127
}
137128

138129
sources.clear();
@@ -167,6 +158,12 @@ export class ReactiveMap extends Map {
167158
}
168159

169160
[INSPECT_SYMBOL]() {
170-
get(this.#inspect_version);
161+
// changes could either introduced by
162+
// - modifying the value, or
163+
// - add / remove entries to the map
164+
for (const [, source] of this.#sources) {
165+
get(source);
166+
}
167+
get(this.#size);
171168
}
172169
}

packages/svelte/tests/runtime-runes/samples/inspect-reactivity/_config.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export default test({
2020
]);
2121
log.length = 0;
2222

23-
b1.click(); // map.set('key', 'value')
23+
flushSync(() => b1.click()); // map.set('key', 'value')
2424

2525
in1.value = 'name';
2626
in2.value = 'Svelte';
@@ -54,23 +54,23 @@ export default test({
5454
]);
5555
log.length = 0;
5656

57-
b2.click(); // set.add('name');
57+
flushSync(() => b2.click()); // set.add('name');
5858

5959
in1.value = 'Svelte';
6060
in1.dispatchEvent(new window.Event('input', { bubbles: true }));
61-
b2.click(); // set.add('Svelte');
61+
flushSync(() => b2.click()); // set.add('Svelte');
6262

63-
b2.click(); // set.add('Svelte');
63+
flushSync(() => b2.click()); // set.add('Svelte');
6464

6565
assert.deepEqual(log, [
6666
{ label: 'set', type: 'update', values: ['name'] },
6767
{ label: 'set', type: 'update', values: ['name', 'Svelte'] }
6868
]);
6969
log.length = 0;
7070

71-
b3.click(); // date.minutes++
72-
b3.click(); // date.minutes++
73-
b3.click(); // date.minutes++
71+
flushSync(() => b3.click()); // date.minutes++
72+
flushSync(() => b3.click()); // date.minutes++
73+
flushSync(() => b3.click()); // date.minutes++
7474

7575
assert.deepEqual(log, [
7676
{ label: 'date', type: 'update', values: 1712966460000 },

0 commit comments

Comments
 (0)