Skip to content

Commit f9fe9f0

Browse files
committed
feat: adds legacy mode flag
1 parent d033377 commit f9fe9f0

File tree

15 files changed

+33
-5
lines changed

15 files changed

+33
-5
lines changed

.changeset/warm-snakes-remain.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'svelte': patch
3+
---
4+
5+
feat: adds legacy mode flag

packages/svelte/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,9 @@
5353
"./internal/disclose-version": {
5454
"default": "./src/internal/disclose-version.js"
5555
},
56+
"./internal/legacy-component": {
57+
"default": "./src/internal/legacy-component.js"
58+
},
5659
"./internal/server": {
5760
"default": "./src/internal/server/index.js"
5861
},

packages/svelte/src/compiler/phases/3-transform/client/transform-client.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -531,6 +531,10 @@ export function client_component(analysis, options) {
531531
body.push(b.stmt(b.call(b.id('$.mark_module_end'), b.id(analysis.name))));
532532
}
533533

534+
if (!analysis.runes) {
535+
body.unshift(b.imports([], 'svelte/internal/legacy-component'));
536+
}
537+
534538
if (options.discloseVersion) {
535539
body.unshift(b.imports([], 'svelte/internal/disclose-version'));
536540
}

packages/svelte/src/internal/client/reactivity/props.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import * as e from '../errors.js';
2323
import { BRANCH_EFFECT, LEGACY_DERIVED_PROP, ROOT_EFFECT } from '../constants.js';
2424
import { proxy } from '../proxy.js';
2525
import { capture_store_binding } from './store.js';
26+
import { legacy_mode_flag } from '../../feature-flags.js';
2627

2728
/**
2829
* @param {((value?: number) => number)} fn
@@ -270,7 +271,7 @@ function with_parent_branch(fn) {
270271
*/
271272
export function prop(props, key, flags, fallback) {
272273
var immutable = (flags & PROPS_IS_IMMUTABLE) !== 0;
273-
var runes = (flags & PROPS_IS_RUNES) !== 0;
274+
var runes = !legacy_mode_flag || (flags & PROPS_IS_RUNES) !== 0;
274275
var bindable = (flags & PROPS_IS_BINDABLE) !== 0;
275276
var lazy = (flags & PROPS_IS_LAZY_INITIAL) !== 0;
276277
var is_store_sub = false;

packages/svelte/src/internal/client/runtime.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import { destroy_derived, execute_derived, update_derived } from './reactivity/d
3333
import * as e from './errors.js';
3434
import { lifecycle_outside_component } from '../shared/errors.js';
3535
import { FILENAME } from '../../constants.js';
36+
import { legacy_mode_flag } from '../feature-flags.js';
3637

3738
const FLUSH_MICROTASK = 0;
3839
const FLUSH_SYNC = 1;
@@ -162,7 +163,7 @@ export function increment_version() {
162163

163164
/** @returns {boolean} */
164165
export function is_runes() {
165-
return component_context !== null && component_context.l === null;
166+
return !legacy_mode_flag || (component_context !== null && component_context.l === null);
166167
}
167168

168169
/**
@@ -1025,7 +1026,7 @@ export function push(props, runes = false, fn) {
10251026
l: null
10261027
};
10271028

1028-
if (!runes) {
1029+
if (legacy_mode_flag && !runes) {
10291030
component_context.l = {
10301031
s: null,
10311032
u: null,
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
export let legacy_mode_flag = false;
2+
3+
export function enable_legacy_mode_flag() {
4+
legacy_mode_flag = true;
5+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { enable_legacy_mode_flag } from './feature-flags.js';
2+
3+
enable_legacy_mode_flag();

packages/svelte/tests/migrate/samples/derivations/output.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,4 @@
1313
1414
</script>
1515

16-
{count} / {doubled} / {quadrupled} / {time_8} / {time_16}
16+
{count} / {doubled} / {quadrupled} / {time_8} / {time_16}

packages/svelte/tests/migrate/samples/props-ts/output.svelte

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,4 +39,4 @@
3939
{readonly}
4040
{optional}
4141
<input bind:value={binding} />
42-
<input bind:value={bindingOptional} />
42+
<input bind:value={bindingOptional} />

packages/svelte/tests/snapshot/samples/bind-this/_expected/client/index.svelte.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import "svelte/internal/disclose-version";
2+
import "svelte/internal/legacy-component";
23
import * as $ from "svelte/internal/client";
34

45
export default function Bind_this($$anchor) {

0 commit comments

Comments
 (0)