From f1aeaf19e5ed0044e5728a6357403f617abc6f6e Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Wed, 6 Nov 2024 16:41:17 +0000 Subject: [PATCH] feat: adds legacy mode flag (#14180) * feat: adds legacy mode flag * feedback * feedback and tweaks * feedback and tweaks * tweaks * tweaks * tweaks * tweaks --- .changeset/warm-snakes-remain.md | 5 +++ packages/svelte/package.json | 3 ++ .../svelte/scripts/check-treeshakeability.js | 17 ++++++++- .../3-transform/client/transform-client.js | 4 ++ packages/svelte/src/index-client.js | 3 +- .../src/internal/client/dom/blocks/each.js | 38 +++++++++---------- .../src/internal/client/reactivity/props.js | 3 +- .../src/internal/client/reactivity/sources.js | 3 +- .../svelte/src/internal/client/runtime.js | 5 ++- packages/svelte/src/internal/flags/index.js | 5 +++ packages/svelte/src/internal/flags/legacy.js | 3 ++ .../migrate/samples/derivations/output.svelte | 2 +- .../migrate/samples/props-ts/output.svelte | 2 +- .../_expected/client/index.svelte.js | 1 + .../_expected/client/index.svelte.js | 1 + .../_expected/client/index.svelte.js | 1 + .../hmr/_expected/client/index.svelte.js | 1 + .../_expected/client/index.svelte.js | 1 + .../purity/_expected/client/index.svelte.js | 1 + 19 files changed, 71 insertions(+), 28 deletions(-) create mode 100644 .changeset/warm-snakes-remain.md create mode 100644 packages/svelte/src/internal/flags/index.js create mode 100644 packages/svelte/src/internal/flags/legacy.js diff --git a/.changeset/warm-snakes-remain.md b/.changeset/warm-snakes-remain.md new file mode 100644 index 000000000000..508e8763e5f3 --- /dev/null +++ b/.changeset/warm-snakes-remain.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +chore: adds legacy mode flag reducing bundle size in runes mode only apps diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 4ee792827db1..62fa40620a6e 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -53,6 +53,9 @@ "./internal/disclose-version": { "default": "./src/internal/disclose-version.js" }, + "./internal/flags/legacy": { + "default": "./src/internal/flags/legacy.js" + }, "./internal/server": { "default": "./src/internal/server/index.js" }, diff --git a/packages/svelte/scripts/check-treeshakeability.js b/packages/svelte/scripts/check-treeshakeability.js index 9263649956f5..1b50111b8755 100644 --- a/packages/svelte/scripts/check-treeshakeability.js +++ b/packages/svelte/scripts/check-treeshakeability.js @@ -57,6 +57,7 @@ for (const key in pkg.exports) { if (key === './compiler') continue; if (key === './internal') continue; if (key === './internal/disclose-version') continue; + if (key === './internal/flags/legacy') continue; for (const type of ['browser', 'default']) { if (!pkg.exports[key][type]) continue; @@ -83,6 +84,7 @@ const bundle = await bundle_code( // Use all features which contain hydration code to ensure it's treeshakeable compile( ` + -{count} / {doubled} / {quadrupled} / {time_8} / {time_16} +{count} / {doubled} / {quadrupled} / {time_8} / {time_16} \ No newline at end of file diff --git a/packages/svelte/tests/migrate/samples/props-ts/output.svelte b/packages/svelte/tests/migrate/samples/props-ts/output.svelte index e9deea13846d..b75f4383f52f 100644 --- a/packages/svelte/tests/migrate/samples/props-ts/output.svelte +++ b/packages/svelte/tests/migrate/samples/props-ts/output.svelte @@ -39,4 +39,4 @@ {readonly} {optional} - + \ No newline at end of file diff --git a/packages/svelte/tests/snapshot/samples/bind-this/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/bind-this/_expected/client/index.svelte.js index bd24eca96227..fedcc87696cf 100644 --- a/packages/svelte/tests/snapshot/samples/bind-this/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/bind-this/_expected/client/index.svelte.js @@ -1,4 +1,5 @@ import "svelte/internal/disclose-version"; +import "svelte/internal/flags/legacy"; import * as $ from "svelte/internal/client"; export default function Bind_this($$anchor) { diff --git a/packages/svelte/tests/snapshot/samples/each-string-template/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/each-string-template/_expected/client/index.svelte.js index 81c06f23ec3a..80f2da11a2a1 100644 --- a/packages/svelte/tests/snapshot/samples/each-string-template/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/each-string-template/_expected/client/index.svelte.js @@ -1,4 +1,5 @@ import "svelte/internal/disclose-version"; +import "svelte/internal/flags/legacy"; import * as $ from "svelte/internal/client"; export default function Each_string_template($$anchor) { diff --git a/packages/svelte/tests/snapshot/samples/hello-world/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/hello-world/_expected/client/index.svelte.js index 92354d8f1483..9f6f29166975 100644 --- a/packages/svelte/tests/snapshot/samples/hello-world/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/hello-world/_expected/client/index.svelte.js @@ -1,4 +1,5 @@ import "svelte/internal/disclose-version"; +import "svelte/internal/flags/legacy"; import * as $ from "svelte/internal/client"; var root = $.template(`

hello world

`); diff --git a/packages/svelte/tests/snapshot/samples/hmr/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/hmr/_expected/client/index.svelte.js index 01daada7acd0..86c2880abc8f 100644 --- a/packages/svelte/tests/snapshot/samples/hmr/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/hmr/_expected/client/index.svelte.js @@ -1,4 +1,5 @@ import "svelte/internal/disclose-version"; +import "svelte/internal/flags/legacy"; import * as $ from "svelte/internal/client"; var root = $.template(`

hello world

`); diff --git a/packages/svelte/tests/snapshot/samples/imports-in-modules/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/imports-in-modules/_expected/client/index.svelte.js index 464ef519afa0..9c7d2f3f23b0 100644 --- a/packages/svelte/tests/snapshot/samples/imports-in-modules/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/imports-in-modules/_expected/client/index.svelte.js @@ -1,4 +1,5 @@ import "svelte/internal/disclose-version"; +import "svelte/internal/flags/legacy"; import * as $ from "svelte/internal/client"; import { random } from './module.svelte'; diff --git a/packages/svelte/tests/snapshot/samples/purity/_expected/client/index.svelte.js b/packages/svelte/tests/snapshot/samples/purity/_expected/client/index.svelte.js index 305e9aa0d772..0a627a55ae6c 100644 --- a/packages/svelte/tests/snapshot/samples/purity/_expected/client/index.svelte.js +++ b/packages/svelte/tests/snapshot/samples/purity/_expected/client/index.svelte.js @@ -1,4 +1,5 @@ import "svelte/internal/disclose-version"; +import "svelte/internal/flags/legacy"; import * as $ from "svelte/internal/client"; var root = $.template(`

`, 1);