Skip to content

Commit 8f63b17

Browse files
committed
feedback and tweaks
1 parent 4cd06e2 commit 8f63b17

File tree

2 files changed

+35
-21
lines changed

2 files changed

+35
-21
lines changed

packages/svelte/scripts/check-treeshakeability.js

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ for (const key in pkg.exports) {
5757
if (key === './compiler') continue;
5858
if (key === './internal') continue;
5959
if (key === './internal/disclose-version') continue;
60+
if (key === './internal/flags/legacy') continue;
6061

6162
for (const type of ['browser', 'default']) {
6263
if (!pkg.exports[key][type]) continue;
@@ -83,6 +84,7 @@ const bundle = await bundle_code(
8384
// Use all features which contain hydration code to ensure it's treeshakeable
8485
compile(
8586
`
87+
<svelte:options runes />
8688
<script>
8789
import { mount } from ${JSON.stringify(client_main)}; mount();
8890
let foo;
@@ -118,12 +120,23 @@ if (!bundle.includes('hydrate_node') && !bundle.includes('hydrate_next')) {
118120
// eslint-disable-next-line no-console
119121
console.error(`✅ Hydration code treeshakeable`);
120122
} else {
121-
// eslint-disable-next-line no-console
122-
console.error(bundle);
123+
failed = true;
123124
// eslint-disable-next-line no-console
124125
console.error(`❌ Hydration code not treeshakeable`);
126+
}
127+
128+
if (!bundle.includes('component_context.l')) {
129+
// eslint-disable-next-line no-console
130+
console.error(`✅ Legacy code treeshakeable`);
131+
} else {
125132
failed = true;
133+
// eslint-disable-next-line no-console
134+
console.error(`❌ Legacy code not treeshakeable`);
135+
}
126136

137+
if (failed) {
138+
// eslint-disable-next-line no-console
139+
// console.error(bundle);
127140
fs.writeFileSync('scripts/_bundle.js', bundle);
128141
}
129142

packages/svelte/src/internal/client/dom/blocks/each.js

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ import { array_from, is_array } from '../../../shared/utils.js';
3636
import { INERT } from '../../constants.js';
3737
import { queue_micro_task } from '../task.js';
3838
import { active_effect, active_reaction } from '../../runtime.js';
39+
import { legacy_mode_flag } from '../../../flags/index.js';
3940

4041
/**
4142
* The row of a keyed each block that is currently updating. We track this
@@ -490,27 +491,27 @@ function update_item(item, value, index, type) {
490491
*/
491492
function create_item(anchor, state, prev, next, value, key, index, render_fn, flags) {
492493
var previous_each_item = current_each_item;
494+
var reactive = (flags & EACH_ITEM_REACTIVE) !== 0;
495+
var mutable = (flags & EACH_ITEM_IMMUTABLE) === 0;
496+
497+
var v = reactive ? (legacy_mode_flag && mutable ? mutable_source(value) : source(value)) : value;
498+
var i = (flags & EACH_INDEX_REACTIVE) === 0 ? index : source(index);
499+
500+
/** @type {EachItem} */
501+
var item = {
502+
i,
503+
v,
504+
k: key,
505+
a: null,
506+
// @ts-expect-error
507+
e: null,
508+
prev,
509+
next
510+
};
511+
512+
current_each_item = item;
493513

494514
try {
495-
var reactive = (flags & EACH_ITEM_REACTIVE) !== 0;
496-
var mutable = (flags & EACH_ITEM_IMMUTABLE) === 0;
497-
498-
var v = reactive ? (mutable ? mutable_source(value) : source(value)) : value;
499-
var i = (flags & EACH_INDEX_REACTIVE) === 0 ? index : source(index);
500-
501-
/** @type {EachItem} */
502-
var item = {
503-
i,
504-
v,
505-
k: key,
506-
a: null,
507-
// @ts-expect-error
508-
e: null,
509-
prev,
510-
next
511-
};
512-
513-
current_each_item = item;
514515
item.e = branch(() => render_fn(anchor, v, i), hydrating);
515516

516517
item.e.prev = prev && prev.e;

0 commit comments

Comments
 (0)