From 022c47edfcb47e369044fba228d90e65cf862783 Mon Sep 17 00:00:00 2001 From: Geoff Rich <4992896+geoffrich@users.noreply.github.com> Date: Sun, 12 Nov 2023 12:09:20 -0800 Subject: [PATCH 001/108] site: allow multiple blog authors (#9390) --- .../blog/2023-02-21-streaming-snapshots-sveltekit.md | 4 ++-- sites/svelte.dev/src/lib/server/blog/index.js | 10 ++++++---- sites/svelte.dev/src/lib/server/blog/types.d.ts | 4 ++-- sites/svelte.dev/src/routes/blog/[slug]/+page.svelte | 9 ++++++++- 4 files changed, 18 insertions(+), 9 deletions(-) diff --git a/documentation/blog/2023-02-21-streaming-snapshots-sveltekit.md b/documentation/blog/2023-02-21-streaming-snapshots-sveltekit.md index a030e8fc410d..b421bd1cc5d9 100644 --- a/documentation/blog/2023-02-21-streaming-snapshots-sveltekit.md +++ b/documentation/blog/2023-02-21-streaming-snapshots-sveltekit.md @@ -1,8 +1,8 @@ --- title: Streaming, snapshots, and other new features since SvelteKit 1.0 description: Exciting improvements in the latest version of SvelteKit -author: Geoff Rich -authorURL: https://geoffrich.net +author: Geoff Rich, Rich Harris +authorURL: https://geoffrich.net, https://twitter.com/Rich_Harris --- The Svelte team has been hard at work since the release of SvelteKit 1.0. Let’s talk about some of the major new features that have shipped since launch: [streaming non-essential data](https://kit.svelte.dev/docs/load#streaming-with-promises), [snapshots](https://kit.svelte.dev/docs/snapshots), and [route-level config](https://kit.svelte.dev/docs/page-options#config). diff --git a/sites/svelte.dev/src/lib/server/blog/index.js b/sites/svelte.dev/src/lib/server/blog/index.js index d0bcbe96c70b..1cd3a16178a4 100644 --- a/sites/svelte.dev/src/lib/server/blog/index.js +++ b/sites/svelte.dev/src/lib/server/blog/index.js @@ -35,6 +35,8 @@ export async function get_blog_data(base = CONTENT_BASE_PATHS.BLOG) { const { date, date_formatted, slug } = get_date_and_slug(file); const { metadata, body } = extractFrontmatter(await readFile(`${base}/${file}`, 'utf-8')); + const authors = metadata.author.split(',').map((author) => author.trim()); + const authorUrls = metadata.authorURL.split(',').map((author) => author.trim()); blog_posts.push({ date, @@ -45,10 +47,10 @@ export async function get_blog_data(base = CONTENT_BASE_PATHS.BLOG) { slug, title: metadata.title, file, - author: { - name: metadata.author, - url: metadata.authorURL - }, + authors: authors.map((author, i) => ({ + name: author, + url: authorUrls[i] + })), sections: await get_sections(body) }); } diff --git a/sites/svelte.dev/src/lib/server/blog/types.d.ts b/sites/svelte.dev/src/lib/server/blog/types.d.ts index cc2ee90f28ac..fc922ca54cc1 100644 --- a/sites/svelte.dev/src/lib/server/blog/types.d.ts +++ b/sites/svelte.dev/src/lib/server/blog/types.d.ts @@ -7,10 +7,10 @@ export interface BlogPost { date_formatted: string; slug: string; file: string; - author: { + authors: { name: string; url?: string; - }; + }[]; draft: boolean; content: string; sections: Section[]; diff --git a/sites/svelte.dev/src/routes/blog/[slug]/+page.svelte b/sites/svelte.dev/src/routes/blog/[slug]/+page.svelte index 158973aebecd..c0d50ee25151 100644 --- a/sites/svelte.dev/src/routes/blog/[slug]/+page.svelte +++ b/sites/svelte.dev/src/routes/blog/[slug]/+page.svelte @@ -26,7 +26,14 @@

{data.post.description}

- {data.post.author.name} + {#each data.post.authors as author, i} + {@const show_comma = data.post.authors.length > 2 && i < data.post.authors.length - 1} + {@const show_and = i === data.post.authors.length - 2} + {author.name}{#if show_comma}, {/if} + {#if show_and}and {/if} + {/each}

From f3e0db1e46f713643e6e601b1c3d2f25febe7b7e Mon Sep 17 00:00:00 2001 From: Wes Keiser <84772241+weskeiser@users.noreply.github.com> Date: Mon, 13 Nov 2023 10:48:39 +0100 Subject: [PATCH 002/108] docs: incorrect order of directives (#9414) The event listener must be registered before the event is dispatched in order for this code snippet to work. --- documentation/docs/03-runtime/07-svelte-action.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/docs/03-runtime/07-svelte-action.md b/documentation/docs/03-runtime/07-svelte-action.md index ebd4185774b6..b5670a6ee237 100644 --- a/documentation/docs/03-runtime/07-svelte-action.md +++ b/documentation/docs/03-runtime/07-svelte-action.md @@ -72,7 +72,7 @@ Sometimes actions emit custom events and apply custom attributes to the element } -
+
``` ## Types From 50abbc81daa84d90c74e3fa8fc1a00b46b8e721d Mon Sep 17 00:00:00 2001 From: Ben McCann <322311+benmccann@users.noreply.github.com> Date: Tue, 14 Nov 2023 13:54:44 -0800 Subject: [PATCH 003/108] blog: fix typo in 'svelte.dev: A complete overhaul' blog entry (#9438) (#9450) Co-authored-by: Arpit Jalan --- documentation/blog/2023-06-29-svelte-dev-overhaul.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/blog/2023-06-29-svelte-dev-overhaul.md b/documentation/blog/2023-06-29-svelte-dev-overhaul.md index b7782abcc272..a3ffd739bf1e 100644 --- a/documentation/blog/2023-06-29-svelte-dev-overhaul.md +++ b/documentation/blog/2023-06-29-svelte-dev-overhaul.md @@ -31,7 +31,7 @@ We've also taken extra care to ensure that all the links from the old website wi The lack of search functionality could make finding stuff a nuisance as Ctrl+F only returns results in order of occurrence and not order of importance. While Ctrl+F did have its benefits such as not requiring JS, now that the site has multiple pages, it's not an option anymore. -And for that, the new website comes with a search bar, which searches through the docs and the API surface. Hit Ctrl+K (or CMD+F for Mac users) and start searching — it even works without JavaScript! +And for that, the new website comes with a search bar, which searches through the docs and the API surface. Hit Ctrl+K (or CMD+K for Mac users) and start searching — it even works without JavaScript! ## Lights, TypeScript, Action! From b2e1f1c1029bd059961a50d51e4da8f2e741a9d7 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Thu, 16 Nov 2023 15:33:04 +0100 Subject: [PATCH 004/108] fix: handle closing tags inside attribute values (#9486) Related to https://github.com/sveltejs/language-tools/issues/2204 --- .changeset/twelve-ears-act.md | 5 +++++ packages/svelte/src/compiler/preprocess/index.js | 6 ++++-- .../samples/attributes-with-closing-tag/_config.js | 6 ++++++ .../samples/attributes-with-closing-tag/input.svelte | 3 +++ .../samples/attributes-with-closing-tag/output.svelte | 1 + 5 files changed, 19 insertions(+), 2 deletions(-) create mode 100644 .changeset/twelve-ears-act.md create mode 100644 packages/svelte/test/preprocess/samples/attributes-with-closing-tag/_config.js create mode 100644 packages/svelte/test/preprocess/samples/attributes-with-closing-tag/input.svelte create mode 100644 packages/svelte/test/preprocess/samples/attributes-with-closing-tag/output.svelte diff --git a/.changeset/twelve-ears-act.md b/.changeset/twelve-ears-act.md new file mode 100644 index 000000000000..0f745d4b48fd --- /dev/null +++ b/.changeset/twelve-ears-act.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: handle closing tags inside attribute values diff --git a/packages/svelte/src/compiler/preprocess/index.js b/packages/svelte/src/compiler/preprocess/index.js index 187c73aff323..492368abd533 100644 --- a/packages/svelte/src/compiler/preprocess/index.js +++ b/packages/svelte/src/compiler/preprocess/index.js @@ -252,8 +252,10 @@ function stringify_tag_attributes(attributes) { return value; } -const regex_style_tags = /|([^]*?)<\/style>|\/>)/gi; -const regex_script_tags = /|([^]*?)<\/script>|\/>)/gi; +const regex_style_tags = + /|'"\/]+=(?:"[^"]*"|'[^']*'|[^>\s])|\s+[^=>'"\/]+)*\s*)(?:\/>|>([\S\s]*?)<\/style>)/g; +const regex_script_tags = + /|'"\/]+=(?:"[^"]*"|'[^']*'|[^>\s])|\s+[^=>'"\/]+)*\s*)(?:\/>|>([\S\s]*?)<\/script>)/g; /** * Calculate the updates required to process all instances of the specified tag. diff --git a/packages/svelte/test/preprocess/samples/attributes-with-closing-tag/_config.js b/packages/svelte/test/preprocess/samples/attributes-with-closing-tag/_config.js new file mode 100644 index 000000000000..ce42ba8e5ba4 --- /dev/null +++ b/packages/svelte/test/preprocess/samples/attributes-with-closing-tag/_config.js @@ -0,0 +1,6 @@ +export default { + preprocess: { + script: ({ attributes }) => + attributes.generics && attributes.generics.includes('>') ? { code: '' } : null + } +}; diff --git a/packages/svelte/test/preprocess/samples/attributes-with-closing-tag/input.svelte b/packages/svelte/test/preprocess/samples/attributes-with-closing-tag/input.svelte new file mode 100644 index 000000000000..aa1a533ac775 --- /dev/null +++ b/packages/svelte/test/preprocess/samples/attributes-with-closing-tag/input.svelte @@ -0,0 +1,3 @@ + diff --git a/packages/svelte/test/preprocess/samples/attributes-with-closing-tag/output.svelte b/packages/svelte/test/preprocess/samples/attributes-with-closing-tag/output.svelte new file mode 100644 index 000000000000..d4ade07a7560 --- /dev/null +++ b/packages/svelte/test/preprocess/samples/attributes-with-closing-tag/output.svelte @@ -0,0 +1 @@ + From 11f4335ae27b4bcacd3e1d4fc8a4977bfe78eb1b Mon Sep 17 00:00:00 2001 From: Rich Harris Date: Thu, 16 Nov 2023 11:49:15 -0500 Subject: [PATCH 005/108] chore: add dummy svelte.dev site (#9490) * chore: add dummy svelte.dev site * link back to PR for context --------- Co-authored-by: Rich Harris --- sites/svelte-5-preview/placeholder/index.html | 1 + sites/svelte-5-preview/vercel.json | 8 ++++++++ 2 files changed, 9 insertions(+) create mode 100644 sites/svelte-5-preview/placeholder/index.html create mode 100644 sites/svelte-5-preview/vercel.json diff --git a/sites/svelte-5-preview/placeholder/index.html b/sites/svelte-5-preview/placeholder/index.html new file mode 100644 index 000000000000..80d72475d2ce --- /dev/null +++ b/sites/svelte-5-preview/placeholder/index.html @@ -0,0 +1 @@ +

see here

diff --git a/sites/svelte-5-preview/vercel.json b/sites/svelte-5-preview/vercel.json new file mode 100644 index 000000000000..2934117193b8 --- /dev/null +++ b/sites/svelte-5-preview/vercel.json @@ -0,0 +1,8 @@ +{ + "$schema": "http://openapi.vercel.sh/vercel.json", + "github": { + "silent": true + }, + "buildCommand": "echo \"ignore this\"", + "outputDirectory": "placeholder" +} From 2ea17648f236724c46590d596048ebfaa29ef21f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 16 Nov 2023 14:53:14 -0500 Subject: [PATCH 006/108] Version Packages (#9491) Co-authored-by: github-actions[bot] --- .changeset/twelve-ears-act.md | 5 ----- packages/svelte/CHANGELOG.md | 6 ++++++ packages/svelte/package.json | 2 +- packages/svelte/src/shared/version.js | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 .changeset/twelve-ears-act.md diff --git a/.changeset/twelve-ears-act.md b/.changeset/twelve-ears-act.md deleted file mode 100644 index 0f745d4b48fd..000000000000 --- a/.changeset/twelve-ears-act.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'svelte': patch ---- - -fix: handle closing tags inside attribute values diff --git a/packages/svelte/CHANGELOG.md b/packages/svelte/CHANGELOG.md index 07edffc2b741..438bbab162cc 100644 --- a/packages/svelte/CHANGELOG.md +++ b/packages/svelte/CHANGELOG.md @@ -1,5 +1,11 @@ # svelte +## 4.2.4 + +### Patch Changes + +- fix: handle closing tags inside attribute values ([#9486](https://github.com/sveltejs/svelte/pull/9486)) + ## 4.2.3 ### Patch Changes diff --git a/packages/svelte/package.json b/packages/svelte/package.json index a4d527b7ac94..25835a429130 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "svelte", - "version": "4.2.3", + "version": "4.2.4", "description": "Cybernetically enhanced web apps", "type": "module", "module": "src/runtime/index.js", diff --git a/packages/svelte/src/shared/version.js b/packages/svelte/src/shared/version.js index 71933bec3a69..a18373fa2a09 100644 --- a/packages/svelte/src/shared/version.js +++ b/packages/svelte/src/shared/version.js @@ -6,5 +6,5 @@ * https://svelte.dev/docs/svelte-compiler#svelte-version * @type {string} */ -export const VERSION = '4.2.3'; +export const VERSION = '4.2.4'; export const PUBLIC_VERSION = '4'; From 9a97d5c547b4c041d9931b95c650f08168054aa2 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Fri, 17 Nov 2023 13:31:07 +0100 Subject: [PATCH 007/108] fix: ignore expressions in top level script/style tag attributes (#9498) Related to sveltejs/language-tools#2204 / sveltejs/language-tools#2039 --- .changeset/ten-ducks-jump.md | 5 + .../svelte/src/compiler/parse/state/tag.js | 44 ++++- .../input.svelte | 5 + .../output.json | 150 ++++++++++++++++++ 4 files changed, 196 insertions(+), 8 deletions(-) create mode 100644 .changeset/ten-ducks-jump.md create mode 100644 packages/svelte/test/parser/samples/script-attribute-with-curly-braces/input.svelte create mode 100644 packages/svelte/test/parser/samples/script-attribute-with-curly-braces/output.json diff --git a/.changeset/ten-ducks-jump.md b/.changeset/ten-ducks-jump.md new file mode 100644 index 000000000000..0bd70fbe173f --- /dev/null +++ b/.changeset/ten-ducks-jump.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: ignore expressions in top level script/style tag attributes diff --git a/packages/svelte/src/compiler/parse/state/tag.js b/packages/svelte/src/compiler/parse/state/tag.js index c0df00df929c..37281c5156e9 100644 --- a/packages/svelte/src/compiler/parse/state/tag.js +++ b/packages/svelte/src/compiler/parse/state/tag.js @@ -161,8 +161,9 @@ export default function tag(parser) { * @type {Set} */ const unique_names = new Set(); + const is_top_level_script_or_style = specials.has(name) && parser.stack.length === 1; let attribute; - while ((attribute = read_attribute(parser, unique_names))) { + while ((attribute = read_attribute(parser, unique_names, is_top_level_script_or_style))) { element.attributes.push(attribute); parser.allow_whitespace(); } @@ -196,8 +197,7 @@ export default function tag(parser) { } element.tag = definition.value[0].data || definition.value[0].expression; } - // special cases – top-level + +

Hello {name}!

\ No newline at end of file diff --git a/packages/svelte/test/parser/samples/script-attribute-with-curly-braces/output.json b/packages/svelte/test/parser/samples/script-attribute-with-curly-braces/output.json new file mode 100644 index 000000000000..af4ec56a68d2 --- /dev/null +++ b/packages/svelte/test/parser/samples/script-attribute-with-curly-braces/output.json @@ -0,0 +1,150 @@ +{ + "html": { + "start": 79, + "end": 101, + "type": "Fragment", + "children": [ + { + "start": 77, + "end": 79, + "type": "Text", + "raw": "\n\n", + "data": "\n\n" + }, + { + "start": 79, + "end": 101, + "type": "Element", + "name": "h1", + "attributes": [], + "children": [ + { + "start": 83, + "end": 89, + "type": "Text", + "raw": "Hello ", + "data": "Hello " + }, + { + "start": 89, + "end": 95, + "type": "MustacheTag", + "expression": { + "type": "Identifier", + "start": 90, + "end": 94, + "loc": { + "start": { + "line": 5, + "column": 11 + }, + "end": { + "line": 5, + "column": 15 + } + }, + "name": "name" + } + }, + { + "start": 95, + "end": 96, + "type": "Text", + "raw": "!", + "data": "!" + } + ] + } + ] + }, + "instance": { + "type": "Script", + "start": 0, + "end": 77, + "context": "default", + "content": { + "type": "Program", + "start": 46, + "end": 68, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 3, + "column": 0 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 48, + "end": 67, + "loc": { + "start": { + "line": 2, + "column": 1 + }, + "end": { + "line": 2, + "column": 20 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 52, + "end": 66, + "loc": { + "start": { + "line": 2, + "column": 5 + }, + "end": { + "line": 2, + "column": 19 + } + }, + "id": { + "type": "Identifier", + "start": 52, + "end": 56, + "loc": { + "start": { + "line": 2, + "column": 5 + }, + "end": { + "line": 2, + "column": 9 + } + }, + "name": "name" + }, + "init": { + "type": "Literal", + "start": 59, + "end": 66, + "loc": { + "start": { + "line": 2, + "column": 12 + }, + "end": { + "line": 2, + "column": 19 + } + }, + "value": "world", + "raw": "'world'" + } + } + ], + "kind": "let" + } + ], + "sourceType": "module" + } + } +} From 36b2c50a705e001a368344be2ae372fc84b14aa7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 17 Nov 2023 14:48:14 +0100 Subject: [PATCH 008/108] Version Packages (#9512) Co-authored-by: github-actions[bot] --- .changeset/ten-ducks-jump.md | 5 ----- packages/svelte/CHANGELOG.md | 6 ++++++ packages/svelte/package.json | 2 +- packages/svelte/src/shared/version.js | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 .changeset/ten-ducks-jump.md diff --git a/.changeset/ten-ducks-jump.md b/.changeset/ten-ducks-jump.md deleted file mode 100644 index 0bd70fbe173f..000000000000 --- a/.changeset/ten-ducks-jump.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'svelte': patch ---- - -fix: ignore expressions in top level script/style tag attributes diff --git a/packages/svelte/CHANGELOG.md b/packages/svelte/CHANGELOG.md index 438bbab162cc..732a8db7d1e4 100644 --- a/packages/svelte/CHANGELOG.md +++ b/packages/svelte/CHANGELOG.md @@ -1,5 +1,11 @@ # svelte +## 4.2.5 + +### Patch Changes + +- fix: ignore expressions in top level script/style tag attributes ([#9498](https://github.com/sveltejs/svelte/pull/9498)) + ## 4.2.4 ### Patch Changes diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 25835a429130..5e4959c03e0d 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "svelte", - "version": "4.2.4", + "version": "4.2.5", "description": "Cybernetically enhanced web apps", "type": "module", "module": "src/runtime/index.js", diff --git a/packages/svelte/src/shared/version.js b/packages/svelte/src/shared/version.js index a18373fa2a09..57882425ff7e 100644 --- a/packages/svelte/src/shared/version.js +++ b/packages/svelte/src/shared/version.js @@ -6,5 +6,5 @@ * https://svelte.dev/docs/svelte-compiler#svelte-version * @type {string} */ -export const VERSION = '4.2.4'; +export const VERSION = '4.2.5'; export const PUBLIC_VERSION = '4'; From 77ba5e7a2ff4cf4e35cadc8e0755a949cac3052f Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Mon, 20 Nov 2023 10:54:23 +0100 Subject: [PATCH 009/108] fix: adjust static attribute regex (#9551) a `+` was missing Fixes https://github.com/sveltejs/vite-plugin-svelte/issues/804 --- .changeset/khaki-turkeys-hunt.md | 5 + .../svelte/src/compiler/parse/state/tag.js | 2 +- .../svelte/src/compiler/preprocess/index.js | 4 +- .../input.svelte | 7 + .../output.json | 178 ++++++++++++++++++ 5 files changed, 193 insertions(+), 3 deletions(-) create mode 100644 .changeset/khaki-turkeys-hunt.md create mode 100644 packages/svelte/test/parser/samples/script-context-module-unquoted/input.svelte create mode 100644 packages/svelte/test/parser/samples/script-context-module-unquoted/output.json diff --git a/.changeset/khaki-turkeys-hunt.md b/.changeset/khaki-turkeys-hunt.md new file mode 100644 index 000000000000..76a45519bf51 --- /dev/null +++ b/.changeset/khaki-turkeys-hunt.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: adjust static attribute regex diff --git a/packages/svelte/src/compiler/parse/state/tag.js b/packages/svelte/src/compiler/parse/state/tag.js index 37281c5156e9..e04d9abc73fd 100644 --- a/packages/svelte/src/compiler/parse/state/tag.js +++ b/packages/svelte/src/compiler/parse/state/tag.js @@ -437,7 +437,7 @@ function get_directive_type(name) { if (name === 'in' || name === 'out' || name === 'transition') return 'Transition'; } -const regex_attribute_value = /^(?:"([^"]*)"|'([^'])*'|([^>\s]))/; +const regex_attribute_value = /^(?:"([^"]*)"|'([^'])*'|([^>\s]+))/; /** * @param {import('../index.js').Parser} parser diff --git a/packages/svelte/src/compiler/preprocess/index.js b/packages/svelte/src/compiler/preprocess/index.js index 492368abd533..0f215598ba1e 100644 --- a/packages/svelte/src/compiler/preprocess/index.js +++ b/packages/svelte/src/compiler/preprocess/index.js @@ -253,9 +253,9 @@ function stringify_tag_attributes(attributes) { } const regex_style_tags = - /|'"\/]+=(?:"[^"]*"|'[^']*'|[^>\s])|\s+[^=>'"\/]+)*\s*)(?:\/>|>([\S\s]*?)<\/style>)/g; + /|'"\/]+=(?:"[^"]*"|'[^']*'|[^>\s]+)|\s+[^=>'"\/]+)*\s*)(?:\/>|>([\S\s]*?)<\/style>)/g; const regex_script_tags = - /|'"\/]+=(?:"[^"]*"|'[^']*'|[^>\s])|\s+[^=>'"\/]+)*\s*)(?:\/>|>([\S\s]*?)<\/script>)/g; + /|'"\/]+=(?:"[^"]*"|'[^']*'|[^>\s]+)|\s+[^=>'"\/]+)*\s*)(?:\/>|>([\S\s]*?)<\/script>)/g; /** * Calculate the updates required to process all instances of the specified tag. diff --git a/packages/svelte/test/parser/samples/script-context-module-unquoted/input.svelte b/packages/svelte/test/parser/samples/script-context-module-unquoted/input.svelte new file mode 100644 index 000000000000..b88dae2a65b2 --- /dev/null +++ b/packages/svelte/test/parser/samples/script-context-module-unquoted/input.svelte @@ -0,0 +1,7 @@ + + + diff --git a/packages/svelte/test/parser/samples/script-context-module-unquoted/output.json b/packages/svelte/test/parser/samples/script-context-module-unquoted/output.json new file mode 100644 index 000000000000..072e10178289 --- /dev/null +++ b/packages/svelte/test/parser/samples/script-context-module-unquoted/output.json @@ -0,0 +1,178 @@ +{ + "html": { + "start": 62, + "end": 60, + "type": "Fragment", + "children": [ + { + "start": 60, + "end": 62, + "type": "Text", + "raw": "\n\n", + "data": "\n\n" + } + ] + }, + "instance": { + "type": "Script", + "start": 62, + "end": 86, + "context": "default", + "content": { + "type": "Program", + "start": 70, + "end": 77, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 7, + "column": 0 + } + }, + "body": [ + { + "type": "ExpressionStatement", + "start": 72, + "end": 76, + "loc": { + "start": { + "line": 6, + "column": 1 + }, + "end": { + "line": 6, + "column": 5 + } + }, + "expression": { + "type": "Identifier", + "start": 72, + "end": 75, + "loc": { + "start": { + "line": 6, + "column": 1 + }, + "end": { + "line": 6, + "column": 4 + } + }, + "name": "foo" + } + } + ], + "sourceType": "module" + } + }, + "module": { + "type": "Script", + "start": 0, + "end": 60, + "context": "module", + "content": { + "type": "Program", + "start": 23, + "end": 51, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 3, + "column": 0 + } + }, + "body": [ + { + "type": "ExportNamedDeclaration", + "start": 25, + "end": 50, + "loc": { + "start": { + "line": 2, + "column": 1 + }, + "end": { + "line": 2, + "column": 26 + } + }, + "declaration": { + "type": "VariableDeclaration", + "start": 32, + "end": 50, + "loc": { + "start": { + "line": 2, + "column": 8 + }, + "end": { + "line": 2, + "column": 26 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 38, + "end": 49, + "loc": { + "start": { + "line": 2, + "column": 14 + }, + "end": { + "line": 2, + "column": 25 + } + }, + "id": { + "type": "Identifier", + "start": 38, + "end": 41, + "loc": { + "start": { + "line": 2, + "column": 14 + }, + "end": { + "line": 2, + "column": 17 + } + }, + "name": "foo" + }, + "init": { + "type": "Literal", + "start": 44, + "end": 49, + "loc": { + "start": { + "line": 2, + "column": 20 + }, + "end": { + "line": 2, + "column": 25 + } + }, + "value": "bar", + "raw": "'bar'" + } + } + ], + "kind": "const" + }, + "specifiers": [], + "source": null + } + ], + "sourceType": "module" + } + } +} From 1fd0b18459e529b6a42cb5961ed114f89f12dd47 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Mon, 20 Nov 2023 10:55:20 +0100 Subject: [PATCH 010/108] Version Packages (#9553) Co-authored-by: github-actions[bot] --- .changeset/khaki-turkeys-hunt.md | 5 ----- packages/svelte/CHANGELOG.md | 6 ++++++ packages/svelte/package.json | 2 +- packages/svelte/src/shared/version.js | 2 +- 4 files changed, 8 insertions(+), 7 deletions(-) delete mode 100644 .changeset/khaki-turkeys-hunt.md diff --git a/.changeset/khaki-turkeys-hunt.md b/.changeset/khaki-turkeys-hunt.md deleted file mode 100644 index 76a45519bf51..000000000000 --- a/.changeset/khaki-turkeys-hunt.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'svelte': patch ---- - -fix: adjust static attribute regex diff --git a/packages/svelte/CHANGELOG.md b/packages/svelte/CHANGELOG.md index 732a8db7d1e4..8ea0a053ca0d 100644 --- a/packages/svelte/CHANGELOG.md +++ b/packages/svelte/CHANGELOG.md @@ -1,5 +1,11 @@ # svelte +## 4.2.6 + +### Patch Changes + +- fix: adjust static attribute regex ([#9551](https://github.com/sveltejs/svelte/pull/9551)) + ## 4.2.5 ### Patch Changes diff --git a/packages/svelte/package.json b/packages/svelte/package.json index 5e4959c03e0d..bc1fb9932d71 100644 --- a/packages/svelte/package.json +++ b/packages/svelte/package.json @@ -1,6 +1,6 @@ { "name": "svelte", - "version": "4.2.5", + "version": "4.2.6", "description": "Cybernetically enhanced web apps", "type": "module", "module": "src/runtime/index.js", diff --git a/packages/svelte/src/shared/version.js b/packages/svelte/src/shared/version.js index 57882425ff7e..74fc1584b366 100644 --- a/packages/svelte/src/shared/version.js +++ b/packages/svelte/src/shared/version.js @@ -6,5 +6,5 @@ * https://svelte.dev/docs/svelte-compiler#svelte-version * @type {string} */ -export const VERSION = '4.2.5'; +export const VERSION = '4.2.6'; export const PUBLIC_VERSION = '4'; From 9b3341378a8b314885b78ce36be01efc09453af0 Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Mon, 20 Nov 2023 15:20:34 +0100 Subject: [PATCH 011/108] fix: handle spreads within static strings (#9554) Previously, if a part of the template was determined be be optimizable using innerHTML, it would error if there's a spread on an attribute --- .changeset/gentle-spies-cover.md | 5 ++++ .../render_dom/wrappers/Element/index.js | 16 ++++++++-- packages/svelte/src/runtime/internal/dom.js | 30 +++++++++++++++++++ .../samples/spread-from-import/_config.js | 11 +++++++ .../samples/spread-from-import/main.svelte | 14 +++++++++ .../samples/spread-from-import/spread.js | 6 ++++ 6 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 .changeset/gentle-spies-cover.md create mode 100644 packages/svelte/test/runtime/samples/spread-from-import/_config.js create mode 100644 packages/svelte/test/runtime/samples/spread-from-import/main.svelte create mode 100644 packages/svelte/test/runtime/samples/spread-from-import/spread.js diff --git a/.changeset/gentle-spies-cover.md b/.changeset/gentle-spies-cover.md new file mode 100644 index 000000000000..d793211734dc --- /dev/null +++ b/.changeset/gentle-spies-cover.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: handle spreads within static strings diff --git a/packages/svelte/src/compiler/compile/render_dom/wrappers/Element/index.js b/packages/svelte/src/compiler/compile/render_dom/wrappers/Element/index.js index 9c54884807ee..134a51a1a27b 100644 --- a/packages/svelte/src/compiler/compile/render_dom/wrappers/Element/index.js +++ b/packages/svelte/src/compiler/compile/render_dom/wrappers/Element/index.js @@ -1312,9 +1312,19 @@ function to_html(wrappers, block, literal, state, can_use_raw_text) { // The value attribute of