diff --git a/.changeset/angry-books-jam.md b/.changeset/angry-books-jam.md new file mode 100644 index 0000000000..6552a54e31 --- /dev/null +++ b/.changeset/angry-books-jam.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: improve nested effect heuristics diff --git a/.changeset/angry-plums-punch.md b/.changeset/angry-plums-punch.md new file mode 100644 index 0000000000..22af9d313b --- /dev/null +++ b/.changeset/angry-plums-punch.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +chore: improve should_proxy_or_freeze logic internally diff --git a/.changeset/big-cars-serve.md b/.changeset/big-cars-serve.md new file mode 100644 index 0000000000..ada0f61ba9 --- /dev/null +++ b/.changeset/big-cars-serve.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: transform textarea and contenteditable binding expressions diff --git a/.changeset/blue-timers-film.md b/.changeset/blue-timers-film.md new file mode 100644 index 0000000000..4a7e421700 --- /dev/null +++ b/.changeset/blue-timers-film.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: skip certain slot validations for custom elements diff --git a/.changeset/brave-shrimps-kiss.md b/.changeset/brave-shrimps-kiss.md new file mode 100644 index 0000000000..096a156794 --- /dev/null +++ b/.changeset/brave-shrimps-kiss.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: improve transition outro easing diff --git a/.changeset/breezy-carrots-flash.md b/.changeset/breezy-carrots-flash.md new file mode 100644 index 0000000000..8d9fce63f9 --- /dev/null +++ b/.changeset/breezy-carrots-flash.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: improve ssr template code generation diff --git a/.changeset/bright-peas-juggle.md b/.changeset/bright-peas-juggle.md new file mode 100644 index 0000000000..8ef8beaeab --- /dev/null +++ b/.changeset/bright-peas-juggle.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +A transition's parameters are now evaluated when the transition is initialized. diff --git a/.changeset/bright-snakes-sing.md b/.changeset/bright-snakes-sing.md new file mode 100644 index 0000000000..23989cab63 --- /dev/null +++ b/.changeset/bright-snakes-sing.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: make `@types/estree` a dependency diff --git a/.changeset/clever-chefs-relate.md b/.changeset/clever-chefs-relate.md new file mode 100644 index 0000000000..46db5c6ae7 --- /dev/null +++ b/.changeset/clever-chefs-relate.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: allow transition undefined payload diff --git a/.changeset/curvy-ties-shout.md b/.changeset/curvy-ties-shout.md new file mode 100644 index 0000000000..ee8bc567e3 --- /dev/null +++ b/.changeset/curvy-ties-shout.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: deeply unstate objects passed to inspect diff --git a/.changeset/dirty-bats-punch.md b/.changeset/dirty-bats-punch.md new file mode 100644 index 0000000000..8274a2bbc3 --- /dev/null +++ b/.changeset/dirty-bats-punch.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: handle delegated events of elements moved outside the container diff --git a/.changeset/dry-clocks-grow.md b/.changeset/dry-clocks-grow.md new file mode 100644 index 0000000000..1975d9785c --- /dev/null +++ b/.changeset/dry-clocks-grow.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +feat: add `$state.frozen` rune diff --git a/.changeset/dry-eggs-play.md b/.changeset/dry-eggs-play.md new file mode 100644 index 0000000000..962e26fbff --- /dev/null +++ b/.changeset/dry-eggs-play.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: improve text node output diff --git a/.changeset/dry-eggs-retire.md b/.changeset/dry-eggs-retire.md new file mode 100644 index 0000000000..1e8bb95d75 --- /dev/null +++ b/.changeset/dry-eggs-retire.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: improve style parser whitespace handling diff --git a/.changeset/dull-roses-relate.md b/.changeset/dull-roses-relate.md new file mode 100644 index 0000000000..b0da71fe59 --- /dev/null +++ b/.changeset/dull-roses-relate.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: infer `svg` namespace correctly diff --git a/.changeset/eighty-days-cheat.md b/.changeset/eighty-days-cheat.md new file mode 100644 index 0000000000..1dab9a948f --- /dev/null +++ b/.changeset/eighty-days-cheat.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: improve template literal expression output generation diff --git a/.changeset/empty-bulldogs-exercise.md b/.changeset/empty-bulldogs-exercise.md new file mode 100644 index 0000000000..087a8f7775 --- /dev/null +++ b/.changeset/empty-bulldogs-exercise.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: improve outro behavior with transitions diff --git a/.changeset/empty-tools-share.md b/.changeset/empty-tools-share.md new file mode 100644 index 0000000000..da284dec37 --- /dev/null +++ b/.changeset/empty-tools-share.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: add compiler error for invalid

contents diff --git a/.changeset/fair-pianos-talk.md b/.changeset/fair-pianos-talk.md new file mode 100644 index 0000000000..f9622afbe9 --- /dev/null +++ b/.changeset/fair-pianos-talk.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: correctly apply event.currentTarget diff --git a/.changeset/famous-falcons-melt.md b/.changeset/famous-falcons-melt.md new file mode 100644 index 0000000000..e891fdfbcd --- /dev/null +++ b/.changeset/famous-falcons-melt.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: add back `derived` type overload diff --git a/.changeset/fast-weeks-clean.md b/.changeset/fast-weeks-clean.md new file mode 100644 index 0000000000..4ce7f286b3 --- /dev/null +++ b/.changeset/fast-weeks-clean.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: keep intermediate number value representations diff --git a/.changeset/forty-peaches-unite.md b/.changeset/forty-peaches-unite.md new file mode 100644 index 0000000000..b24993deb2 --- /dev/null +++ b/.changeset/forty-peaches-unite.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: ensure unstate() only deeply applies to plain objects and arrays diff --git a/.changeset/gentle-spies-happen.md b/.changeset/gentle-spies-happen.md new file mode 100644 index 0000000000..faee9e8d42 --- /dev/null +++ b/.changeset/gentle-spies-happen.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: more robust url equality check at dev time diff --git a/.changeset/giant-moons-own.md b/.changeset/giant-moons-own.md new file mode 100644 index 0000000000..7568f3868d --- /dev/null +++ b/.changeset/giant-moons-own.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: improve invalid nested interactive element error diff --git a/.changeset/good-cars-visit.md b/.changeset/good-cars-visit.md new file mode 100644 index 0000000000..38e71d6633 --- /dev/null +++ b/.changeset/good-cars-visit.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: allow input elements within button elements diff --git a/.changeset/great-fans-unite.md b/.changeset/great-fans-unite.md new file mode 100644 index 0000000000..813edfa99a --- /dev/null +++ b/.changeset/great-fans-unite.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +chore: cleanup derived destruction diff --git a/.changeset/hip-balloons-begin.md b/.changeset/hip-balloons-begin.md new file mode 100644 index 0000000000..413b254065 --- /dev/null +++ b/.changeset/hip-balloons-begin.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: improve script `lang` attribute detection diff --git a/.changeset/honest-buses-add.md b/.changeset/honest-buses-add.md new file mode 100644 index 0000000000..6c28608f65 --- /dev/null +++ b/.changeset/honest-buses-add.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: correct increment/decrement code generation diff --git a/.changeset/hungry-boxes-relate.md b/.changeset/hungry-boxes-relate.md new file mode 100644 index 0000000000..926fdf7e50 --- /dev/null +++ b/.changeset/hungry-boxes-relate.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: sanitize component event names diff --git a/.changeset/hungry-trees-travel.md b/.changeset/hungry-trees-travel.md new file mode 100644 index 0000000000..d90a448daa --- /dev/null +++ b/.changeset/hungry-trees-travel.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +feat: allow modifiying derived props diff --git a/.changeset/itchy-kings-deliver.md b/.changeset/itchy-kings-deliver.md new file mode 100644 index 0000000000..1a188b77f3 --- /dev/null +++ b/.changeset/itchy-kings-deliver.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +Fix issue with assigning prop values as defaults of other props diff --git a/.changeset/itchy-terms-guess.md b/.changeset/itchy-terms-guess.md new file mode 100644 index 0000000000..b101a6c138 --- /dev/null +++ b/.changeset/itchy-terms-guess.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: apply key animations on proxied arrays diff --git a/.changeset/kind-baboons-approve.md b/.changeset/kind-baboons-approve.md new file mode 100644 index 0000000000..720a71cffd --- /dev/null +++ b/.changeset/kind-baboons-approve.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: improve intro transitions on dynamic mount diff --git a/.changeset/kind-rings-flash.md b/.changeset/kind-rings-flash.md new file mode 100644 index 0000000000..525a5dd54b --- /dev/null +++ b/.changeset/kind-rings-flash.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: handle deep assignments to `$state()` class properties correctly diff --git a/.changeset/light-humans-hang.md b/.changeset/light-humans-hang.md new file mode 100644 index 0000000000..de1f6ed8ff --- /dev/null +++ b/.changeset/light-humans-hang.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: support TypeScript's `satisfies` operator diff --git a/.changeset/long-buckets-lay.md b/.changeset/long-buckets-lay.md new file mode 100644 index 0000000000..3611480fbc --- /dev/null +++ b/.changeset/long-buckets-lay.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +Fix interopability between backticks and templates diff --git a/.changeset/loud-cheetahs-flow.md b/.changeset/loud-cheetahs-flow.md new file mode 100644 index 0000000000..6013f2f4e7 --- /dev/null +++ b/.changeset/loud-cheetahs-flow.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: improve signal consumer tracking behavior diff --git a/.changeset/lucky-toes-begin.md b/.changeset/lucky-toes-begin.md new file mode 100644 index 0000000000..07d78c0d14 --- /dev/null +++ b/.changeset/lucky-toes-begin.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +chore: remove internal functions from `svelte/transition` exports diff --git a/.changeset/many-trees-fix.md b/.changeset/many-trees-fix.md new file mode 100644 index 0000000000..1eaf163104 --- /dev/null +++ b/.changeset/many-trees-fix.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: don't hoist function when already referenced in module scope diff --git a/.changeset/nasty-lions-double.md b/.changeset/nasty-lions-double.md new file mode 100644 index 0000000000..404e08168d --- /dev/null +++ b/.changeset/nasty-lions-double.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: improve pseudo class parsing diff --git a/.changeset/nasty-yaks-peel.md b/.changeset/nasty-yaks-peel.md new file mode 100644 index 0000000000..267e4458a5 --- /dev/null +++ b/.changeset/nasty-yaks-peel.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: support async/await in destructuring assignments diff --git a/.changeset/odd-buckets-lie.md b/.changeset/odd-buckets-lie.md new file mode 100644 index 0000000000..240cf02d9a --- /dev/null +++ b/.changeset/odd-buckets-lie.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: improve code generation diff --git a/.changeset/old-houses-drum.md b/.changeset/old-houses-drum.md new file mode 100644 index 0000000000..78f26ee549 --- /dev/null +++ b/.changeset/old-houses-drum.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: provide `unstate` in server environment diff --git a/.changeset/old-oranges-compete.md b/.changeset/old-oranges-compete.md new file mode 100644 index 0000000000..cf5b699546 --- /dev/null +++ b/.changeset/old-oranges-compete.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: improve key block reactivity detection diff --git a/.changeset/olive-kangaroos-brake.md b/.changeset/olive-kangaroos-brake.md new file mode 100644 index 0000000000..68f3d40704 --- /dev/null +++ b/.changeset/olive-kangaroos-brake.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: improve internal signal dependency checking logic diff --git a/.changeset/olive-shirts-complain.md b/.changeset/olive-shirts-complain.md new file mode 100644 index 0000000000..56387284db --- /dev/null +++ b/.changeset/olive-shirts-complain.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: react to mutated slot props in legacy mode diff --git a/.changeset/orange-dingos-poke.md b/.changeset/orange-dingos-poke.md new file mode 100644 index 0000000000..3e9e6b8ade --- /dev/null +++ b/.changeset/orange-dingos-poke.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: add types for popover attributes and events diff --git a/.changeset/pre.json b/.changeset/pre.json index c978e21281..a928afb7d1 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -10,41 +10,66 @@ }, "changesets": [ "afraid-moose-matter", + "angry-books-jam", + "angry-plums-punch", "beige-flies-wash", "beige-rabbits-shave", + "big-cars-serve", + "blue-timers-film", + "brave-shrimps-kiss", "brave-walls-destroy", + "breezy-carrots-flash", + "bright-peas-juggle", + "bright-snakes-sing", "brown-spoons-boil", "chatty-cups-drop", "chatty-taxis-juggle", "chilled-pumas-invite", "chilly-dolphins-lick", "clean-eels-beg", + "clever-chefs-relate", "clever-rockets-burn", "cold-birds-own", "cool-ants-leave", "cuddly-pianos-drop", "curly-lizards-dream", + "curvy-ties-shout", + "dirty-bats-punch", "dirty-garlics-design", "dirty-tips-add", + "dry-clocks-grow", + "dry-eggs-play", + "dry-eggs-retire", "dull-mangos-wave", + "dull-roses-relate", "early-ads-tie", "eight-steaks-shout", "eighty-bikes-camp", + "eighty-days-cheat", + "empty-bulldogs-exercise", "empty-crabs-think", + "empty-tools-share", "fair-crabs-check", + "fair-pianos-talk", + "famous-falcons-melt", "famous-knives-sneeze", + "fast-weeks-clean", "few-mugs-fail", "fifty-rice-wait", "fifty-steaks-float", "five-tigers-search", "flat-melons-protect", "forty-comics-invent", + "forty-peaches-unite", "four-flies-hammer", "fresh-weeks-trade", "friendly-lies-camp", "funny-wombats-argue", "gentle-sheep-hug", + "gentle-spies-happen", + "giant-moons-own", "giant-roses-press", + "good-cars-visit", "good-pianos-jump", "great-icons-retire", "green-eggs-approve", @@ -52,15 +77,23 @@ "happy-suits-film", "healthy-planes-vanish", "heavy-ears-rule", + "hip-balloons-begin", + "honest-buses-add", "honest-icons-change", + "hungry-boxes-relate", "hungry-dots-fry", "hungry-tips-unite", + "hungry-trees-travel", "itchy-beans-melt", + "itchy-kings-deliver", "itchy-lions-wash", + "itchy-terms-guess", "khaki-mails-draw", "khaki-moose-arrive", + "kind-baboons-approve", "kind-deers-lay", "kind-eagles-join", + "kind-rings-flash", "large-clouds-carry", "large-turkeys-deny", "late-crabs-lay", @@ -68,85 +101,132 @@ "lazy-months-knock", "lazy-spiders-think", "lemon-geese-drum", + "light-humans-hang", "light-pens-watch", + "long-buckets-lay", "long-crews-return", + "loud-cheetahs-flow", "lovely-carpets-lick", "lovely-items-turn", "lovely-rules-eat", "lucky-schools-hang", + "lucky-toes-begin", + "many-trees-fix", "moody-frogs-exist", "moody-owls-cry", + "nasty-lions-double", + "nasty-yaks-peel", "neat-dingos-clap", "new-boats-wait", "ninety-dingos-walk", + "odd-buckets-lie", "odd-needles-joke", "odd-schools-wait", "odd-shoes-cheat", "old-flies-jog", + "old-houses-drum", "old-mails-sneeze", + "old-oranges-compete", + "olive-kangaroos-brake", + "olive-shirts-complain", + "orange-dingos-poke", "polite-dolphins-care", "polite-pumpkins-guess", "polite-ravens-study", "poor-eggs-enjoy", "poor-seahorses-flash", "popular-mangos-rest", + "pretty-ties-help", "purple-dragons-peel", "quiet-camels-mate", + "quiet-crabs-nail", "rare-pears-whisper", "real-guests-do", + "red-doors-own", + "rich-cobras-exist", "rich-sheep-burn", "rich-tables-sing", + "rich-waves-mix", "rotten-bags-type", "rotten-buckets-develop", + "selfish-dragons-knock", "selfish-tools-hide", + "serious-kids-deliver", "serious-socks-cover", "serious-zebras-scream", "seven-deers-jam", + "seven-jobs-sniff", "seven-ravens-check", "sharp-gorillas-impress", + "sharp-kids-happen", "sharp-tomatoes-learn", "shiny-baboons-play", "shiny-shrimps-march", + "short-buses-camp", "slimy-clouds-talk", + "slimy-walls-draw", + "slow-beds-shave", "slow-chefs-dream", + "slow-wombats-reply", "small-papayas-laugh", "smart-parents-swim", + "smart-zebras-pay", "soft-clocks-remember", "soft-geese-learn", + "soft-months-grab", + "soft-tigers-wink", "sour-forks-stare", "sour-rules-march", + "sour-weeks-fix", "spicy-plums-admire", + "spotty-pens-agree", + "spotty-spiders-compare", + "stale-books-perform", "stale-comics-look", "strong-gifts-smoke", "strong-lemons-provide", "sweet-mangos-beg", + "sweet-pens-sniff", "swift-donkeys-perform", + "swift-fans-stare", "swift-ravens-hunt", "swift-seahorses-deliver", "tall-books-grin", + "tall-garlics-try", + "tall-mugs-buy", "tall-shrimps-worry", "tall-tigers-wait", + "tame-spies-drum", "tasty-numbers-perform", "ten-foxes-repeat", "ten-peaches-sleep", + "ten-ties-repair", "ten-worms-reflect", + "thick-cycles-rule", "thin-foxes-lick", "thirty-flowers-sit", "thirty-ghosts-fix", "thirty-impalas-repair", + "thirty-pears-hug", "thirty-wombats-relax", + "three-camels-sell", + "three-suits-grin", + "tidy-buses-whisper", "tiny-kings-whisper", "twelve-dragons-join", "twelve-onions-juggle", "two-dragons-yell", "two-falcons-buy", "unlucky-boxes-obey", + "unlucky-trees-lick", "wet-games-fly", "wicked-clouds-exercise", "wicked-doors-train", + "wicked-hairs-cheer", "wild-foxes-wonder", "wise-dancers-hang", "wise-donkeys-marry", - "witty-camels-warn" + "witty-camels-warn", + "witty-steaks-dream" ] } diff --git a/.changeset/pretty-ties-help.md b/.changeset/pretty-ties-help.md new file mode 100644 index 0000000000..f2408416d4 --- /dev/null +++ b/.changeset/pretty-ties-help.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: skip generating $.proxy() calls for unary and binary expressions diff --git a/.changeset/quiet-crabs-nail.md b/.changeset/quiet-crabs-nail.md new file mode 100644 index 0000000000..78ea5ba14e --- /dev/null +++ b/.changeset/quiet-crabs-nail.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: take into account member expressions when determining legacy reactive dependencies diff --git a/.changeset/red-doors-own.md b/.changeset/red-doors-own.md new file mode 100644 index 0000000000..4cd8d80791 --- /dev/null +++ b/.changeset/red-doors-own.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: make `ComponentType` generic optional diff --git a/.changeset/rich-cobras-exist.md b/.changeset/rich-cobras-exist.md new file mode 100644 index 0000000000..ca560d0e63 --- /dev/null +++ b/.changeset/rich-cobras-exist.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: simplify event delegation logic, only delegate event attributes diff --git a/.changeset/rich-waves-mix.md b/.changeset/rich-waves-mix.md new file mode 100644 index 0000000000..5b640517b9 --- /dev/null +++ b/.changeset/rich-waves-mix.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: try-catch deep read during `$inspect` diff --git a/.changeset/selfish-dragons-knock.md b/.changeset/selfish-dragons-knock.md new file mode 100644 index 0000000000..b3c2f5b42b --- /dev/null +++ b/.changeset/selfish-dragons-knock.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: allow ts casts in bindings diff --git a/.changeset/serious-kids-deliver.md b/.changeset/serious-kids-deliver.md new file mode 100644 index 0000000000..8c863eccff --- /dev/null +++ b/.changeset/serious-kids-deliver.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: allow `:global(..)` in compound selectors diff --git a/.changeset/seven-hornets-smile.md b/.changeset/seven-hornets-smile.md new file mode 100644 index 0000000000..7ae0106acb --- /dev/null +++ b/.changeset/seven-hornets-smile.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: correctly parse at-rules containing special characters in strings diff --git a/.changeset/seven-jobs-sniff.md b/.changeset/seven-jobs-sniff.md new file mode 100644 index 0000000000..4faeced47b --- /dev/null +++ b/.changeset/seven-jobs-sniff.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: adjust `$inspect.with` type diff --git a/.changeset/sharp-kids-happen.md b/.changeset/sharp-kids-happen.md new file mode 100644 index 0000000000..88b5badb15 --- /dev/null +++ b/.changeset/sharp-kids-happen.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: always treat spread attributes as reactive and separate them if needed diff --git a/.changeset/short-buses-camp.md b/.changeset/short-buses-camp.md new file mode 100644 index 0000000000..b7c0976bc8 --- /dev/null +++ b/.changeset/short-buses-camp.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: silence false positive state warning diff --git a/.changeset/slimy-walls-draw.md b/.changeset/slimy-walls-draw.md new file mode 100644 index 0000000000..fd0ec42dd0 --- /dev/null +++ b/.changeset/slimy-walls-draw.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: correctly call exported state diff --git a/.changeset/slow-beds-shave.md b/.changeset/slow-beds-shave.md new file mode 100644 index 0000000000..793c66b6a0 --- /dev/null +++ b/.changeset/slow-beds-shave.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: further animation transition improvements diff --git a/.changeset/slow-wombats-reply.md b/.changeset/slow-wombats-reply.md new file mode 100644 index 0000000000..78b6b94861 --- /dev/null +++ b/.changeset/slow-wombats-reply.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: improve how transitions are handled on mount diff --git a/.changeset/smart-zebras-pay.md b/.changeset/smart-zebras-pay.md new file mode 100644 index 0000000000..77f1c723b1 --- /dev/null +++ b/.changeset/smart-zebras-pay.md @@ -0,0 +1,5 @@ +--- +'svelte': patch +--- + +fix: support hydrating around `

` contents ([#10201](https://github.com/sveltejs/svelte/pull/10201)) + +- fix: correctly apply event.currentTarget ([#10216](https://github.com/sveltejs/svelte/pull/10216)) + +- fix: ensure derived signals properly capture consumers ([#10213](https://github.com/sveltejs/svelte/pull/10213)) + +## 5.0.0-next.36 + +### Patch Changes + +- fix: transform textarea and contenteditable binding expressions ([#10187](https://github.com/sveltejs/svelte/pull/10187)) + +- fix: improve transition outro easing ([#10190](https://github.com/sveltejs/svelte/pull/10190)) + +- fix: ensure unstate() only deeply applies to plain objects and arrays ([#10191](https://github.com/sveltejs/svelte/pull/10191)) + +- fix: improve invalid nested interactive element error ([#10199](https://github.com/sveltejs/svelte/pull/10199)) + +- fix: react to mutated slot props in legacy mode ([#10197](https://github.com/sveltejs/svelte/pull/10197)) + +## 5.0.0-next.35 + +### Patch Changes + +- fix: improve nested effect heuristics ([#10171](https://github.com/sveltejs/svelte/pull/10171)) + +- fix: simplify event delegation logic, only delegate event attributes ([#10169](https://github.com/sveltejs/svelte/pull/10169)) + +- fix: prevent transition action overfiring ([#10163](https://github.com/sveltejs/svelte/pull/10163)) + +- fix: improve event handling compatibility with delegation ([#10168](https://github.com/sveltejs/svelte/pull/10168)) + +- fix: ensure topological order for render effects ([#10175](https://github.com/sveltejs/svelte/pull/10175)) + +## 5.0.0-next.34 + +### Patch Changes + +- fix: make `@types/estree` a dependency ([#10150](https://github.com/sveltejs/svelte/pull/10150)) + +- fix: improve intro transitions on dynamic mount ([#10162](https://github.com/sveltejs/svelte/pull/10162)) + +- fix: improve code generation ([#10156](https://github.com/sveltejs/svelte/pull/10156)) + +- fix: adjust `$inspect.with` type ([`c7cb90c91`](https://github.com/sveltejs/svelte/commit/c7cb90c91cd3553ad59126267c9bfddecbb290b4)) + +- fix: improve how transitions are handled on mount ([#10157](https://github.com/sveltejs/svelte/pull/10157)) + +- fix: adjust `parse` return type ([`a271878ab`](https://github.com/sveltejs/svelte/commit/a271878abe7018923839401129b18082eb2c811a)) + +## 5.0.0-next.33 + +### Patch Changes + +- fix: improve ssr template code generation ([#10151](https://github.com/sveltejs/svelte/pull/10151)) + +- fix: improve template literal expression output generation ([#10147](https://github.com/sveltejs/svelte/pull/10147)) + +## 5.0.0-next.32 + +### Patch Changes + +- fix: improve outro behavior with transitions ([#10139](https://github.com/sveltejs/svelte/pull/10139)) + +- chore: remove internal functions from `svelte/transition` exports ([#10132](https://github.com/sveltejs/svelte/pull/10132)) + +- fix: further animation transition improvements ([#10138](https://github.com/sveltejs/svelte/pull/10138)) + +- fix: improve animation transition heuristics ([#10119](https://github.com/sveltejs/svelte/pull/10119)) + +## 5.0.0-next.31 + +### Patch Changes + +- fix: infer `svg` namespace correctly ([#10027](https://github.com/sveltejs/svelte/pull/10027)) + +- fix: keep intermediate number value representations ([`d171a39b0`](https://github.com/sveltejs/svelte/commit/d171a39b0ad97e2a05de1f38bc76a3d345e2b3d5)) + +- feat: allow modifiying derived props ([#10080](https://github.com/sveltejs/svelte/pull/10080)) + +- fix: improve signal consumer tracking behavior ([#10121](https://github.com/sveltejs/svelte/pull/10121)) + +- fix: support async/await in destructuring assignments ([#9962](https://github.com/sveltejs/svelte/pull/9962)) + +- fix: take into account member expressions when determining legacy reactive dependencies ([#10128](https://github.com/sveltejs/svelte/pull/10128)) + +- fix: make `ComponentType` generic optional ([`14dbc1be1`](https://github.com/sveltejs/svelte/commit/14dbc1be1720ff69e6f3c407e43c9c0765b0c140)) + +- fix: silence false positive state warning ([`dda4ad510`](https://github.com/sveltejs/svelte/commit/dda4ad510f1907a114a16227c3412eb00bd21738)) + +- fix: ensure nested blocks are inert during outro transitions ([#10126](https://github.com/sveltejs/svelte/pull/10126)) + +- fix: improve ssr template literal generation ([#10127](https://github.com/sveltejs/svelte/pull/10127)) + +## 5.0.0-next.30 + +### Patch Changes + +- fix: allow transition undefined payload ([#10117](https://github.com/sveltejs/svelte/pull/10117)) + +- fix: apply key animations on proxied arrays ([#10113](https://github.com/sveltejs/svelte/pull/10113)) + +- fix: improve internal signal dependency checking logic ([#10111](https://github.com/sveltejs/svelte/pull/10111)) + +- fix: correctly call exported state ([#10114](https://github.com/sveltejs/svelte/pull/10114)) + +- fix: take into account setters when spreading and binding ([#10091](https://github.com/sveltejs/svelte/pull/10091)) + +- fix: transform `{@render ...}` expression ([#10116](https://github.com/sveltejs/svelte/pull/10116)) + +## 5.0.0-next.29 + +### Patch Changes + +- fix: improve text node output ([#10081](https://github.com/sveltejs/svelte/pull/10081)) + +- fix: improve style parser whitespace handling ([#10077](https://github.com/sveltejs/svelte/pull/10077)) + +- fix: allow input elements within button elements ([#10083](https://github.com/sveltejs/svelte/pull/10083)) + +- fix: support TypeScript's `satisfies` operator ([#10068](https://github.com/sveltejs/svelte/pull/10068)) + +- fix: provide `unstate` in server environment ([`877ff1ee7`](https://github.com/sveltejs/svelte/commit/877ff1ee7d637e2248145d975748e1012a977396)) + +- fix: improve key block reactivity detection ([#10092](https://github.com/sveltejs/svelte/pull/10092)) + +- fix: always treat spread attributes as reactive and separate them if needed ([#10071](https://github.com/sveltejs/svelte/pull/10071)) + +## 5.0.0-next.28 + +### Patch Changes + +- fix: deeply unstate objects passed to inspect ([#10056](https://github.com/sveltejs/svelte/pull/10056)) + +- fix: handle delegated events of elements moved outside the container ([#10060](https://github.com/sveltejs/svelte/pull/10060)) + +- fix: improve script `lang` attribute detection ([#10046](https://github.com/sveltejs/svelte/pull/10046)) + +- fix: improve pseudo class parsing ([#10055](https://github.com/sveltejs/svelte/pull/10055)) + +- fix: add types for popover attributes and events ([#10041](https://github.com/sveltejs/svelte/pull/10041)) + +- fix: skip generating $.proxy() calls for unary and binary expressions ([#9979](https://github.com/sveltejs/svelte/pull/9979)) + +- fix: allow pseudo classes after `:global(..)` ([#10055](https://github.com/sveltejs/svelte/pull/10055)) + +- fix: bail-out event handler referencing each index ([#10063](https://github.com/sveltejs/svelte/pull/10063)) + +- fix: parse `:nth-of-type(xn+y)` correctly ([#9970](https://github.com/sveltejs/svelte/pull/9970)) + +- fix: ensure if block is executed in correct order ([#10053](https://github.com/sveltejs/svelte/pull/10053)) + +## 5.0.0-next.27 + +### Patch Changes + +- fix: evaluate transition parameters when the transition runs ([#9836](https://github.com/sveltejs/svelte/pull/9836)) + +- feat: add `$state.frozen` rune ([#9851](https://github.com/sveltejs/svelte/pull/9851)) + +- fix: correctly transform prop fallback values that use other props ([#9985](https://github.com/sveltejs/svelte/pull/9985)) + +- fix: escape template literal characters in text sequences ([#9973](https://github.com/sveltejs/svelte/pull/9973)) + +- fix: inject comment in place of `

{value}

{value}

diff --git a/packages/svelte/tests/compiler-errors/samples/runes-no-derived-assignment/main.svelte b/packages/svelte/tests/compiler-errors/samples/runes-no-derived-assignment/main.svelte index f89cc7b6ba..3bf836f6c5 100644 --- a/packages/svelte/tests/compiler-errors/samples/runes-no-derived-assignment/main.svelte +++ b/packages/svelte/tests/compiler-errors/samples/runes-no-derived-assignment/main.svelte @@ -1,5 +1,5 @@ diff --git a/packages/svelte/tests/compiler-errors/samples/runes-no-derived-update/main.svelte b/packages/svelte/tests/compiler-errors/samples/runes-no-derived-update/main.svelte index a4aca48089..d266c95bb8 100644 --- a/packages/svelte/tests/compiler-errors/samples/runes-no-derived-update/main.svelte +++ b/packages/svelte/tests/compiler-errors/samples/runes-no-derived-update/main.svelte @@ -1,5 +1,5 @@ diff --git a/packages/svelte/tests/compiler-errors/samples/store-autosub-context-module/_config.js b/packages/svelte/tests/compiler-errors/samples/store-autosub-context-module/_config.js index 7d74507968..526d292530 100644 --- a/packages/svelte/tests/compiler-errors/samples/store-autosub-context-module/_config.js +++ b/packages/svelte/tests/compiler-errors/samples/store-autosub-context-module/_config.js @@ -3,6 +3,7 @@ import { test } from '../../test'; export default test({ error: { code: 'illegal-subscription', - message: 'Cannot reference store value inside + +

{answer}

\ No newline at end of file diff --git a/packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag-autoclose/_config.js b/packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag-autoclose/_config.js index b485095bc0..38731fed64 100644 --- a/packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag-autoclose/_config.js +++ b/packages/svelte/tests/compiler-errors/samples/unmatched-closing-tag-autoclose/_config.js @@ -3,7 +3,8 @@ import { test } from '../../test'; export default test({ error: { code: 'invalid-closing-tag-after-autoclose', - message: '

attempted to close element that was already automatically closed by
',
+		message:
+			'

attempted to close element that was already automatically closed by
 (cannot nest 
 inside 

)', position: [24, 24] } }); diff --git a/packages/svelte/tests/css/samples/global-with-class/_config.js b/packages/svelte/tests/css/samples/global-with-class/_config.js new file mode 100644 index 0000000000..292c6c49ac --- /dev/null +++ b/packages/svelte/tests/css/samples/global-with-class/_config.js @@ -0,0 +1,5 @@ +import { test } from '../../test'; + +export default test({ + warnings: [] +}); diff --git a/packages/svelte/tests/css/samples/global-with-class/expected.css b/packages/svelte/tests/css/samples/global-with-class/expected.css new file mode 100644 index 0000000000..e568ab5d9a --- /dev/null +++ b/packages/svelte/tests/css/samples/global-with-class/expected.css @@ -0,0 +1,9 @@ + div.svelte-xyz.blue { + color: blue; + } + span.blue.x.svelte-xyz { + color: blue; + } + span.x.svelte-xyz.bg { + background: red; + } diff --git a/packages/svelte/tests/css/samples/global-with-class/expected.html b/packages/svelte/tests/css/samples/global-with-class/expected.html new file mode 100644 index 0000000000..977a1303f1 --- /dev/null +++ b/packages/svelte/tests/css/samples/global-with-class/expected.html @@ -0,0 +1,2 @@ +

someone could programmatically add a class to this, so having global be part of a modifier is necessary
+- \ No newline at end of file diff --git a/packages/svelte/tests/css/samples/global-with-class/input.svelte b/packages/svelte/tests/css/samples/global-with-class/input.svelte new file mode 100644 index 0000000000..a041cf282e --- /dev/null +++ b/packages/svelte/tests/css/samples/global-with-class/input.svelte @@ -0,0 +1,14 @@ +
someone could programmatically add a class to this, so having global be part of a modifier is necessary
+- + + diff --git a/packages/svelte/tests/hydration/samples/each-else/_before.html b/packages/svelte/tests/hydration/samples/each-else/_before.html index 6422263334..3335979fb8 100644 --- a/packages/svelte/tests/hydration/samples/each-else/_before.html +++ b/packages/svelte/tests/hydration/samples/each-else/_before.html @@ -1,3 +1,3 @@

Hello, world

-

weird

- +

foo

+

foo

diff --git a/packages/svelte/tests/hydration/samples/each-else/main.svelte b/packages/svelte/tests/hydration/samples/each-else/main.svelte index 64d3a37c58..5e50436cde 100644 --- a/packages/svelte/tests/hydration/samples/each-else/main.svelte +++ b/packages/svelte/tests/hydration/samples/each-else/main.svelte @@ -1,15 +1,16 @@

Hello, {name}

-{#each array as elem} -

- item -

-{:else} -

- weird -

+{#each [] as _}nope{:else} +

{foo}

{/each} + + +
+ {#each [] as _}nope{:else} +

{foo}

+ {/each} +
diff --git a/packages/svelte/tests/hydration/samples/noscript/_before.html b/packages/svelte/tests/hydration/samples/noscript/_before.html new file mode 100644 index 0000000000..34ac9d9bc3 --- /dev/null +++ b/packages/svelte/tests/hydration/samples/noscript/_before.html @@ -0,0 +1,2 @@ + +

Hello!

Count: 0

diff --git a/packages/svelte/tests/hydration/samples/noscript/main.svelte b/packages/svelte/tests/hydration/samples/noscript/main.svelte new file mode 100644 index 0000000000..ed6f644820 --- /dev/null +++ b/packages/svelte/tests/hydration/samples/noscript/main.svelte @@ -0,0 +1,9 @@ + + + + +

Hello!

Count: {count}

diff --git a/packages/svelte/tests/parser-modern/samples/comment-before-script/input.svelte b/packages/svelte/tests/parser-modern/samples/comment-before-script/input.svelte new file mode 100644 index 0000000000..5086ed08bb --- /dev/null +++ b/packages/svelte/tests/parser-modern/samples/comment-before-script/input.svelte @@ -0,0 +1,4 @@ + + diff --git a/packages/svelte/tests/parser-modern/samples/comment-before-script/output.json b/packages/svelte/tests/parser-modern/samples/comment-before-script/output.json new file mode 100644 index 0000000000..d52a3752b4 --- /dev/null +++ b/packages/svelte/tests/parser-modern/samples/comment-before-script/output.json @@ -0,0 +1,132 @@ +{ + "css": null, + "js": [], + "start": 0, + "end": 27, + "type": "Root", + "fragment": { + "type": "Fragment", + "nodes": [ + { + "type": "Comment", + "start": 0, + "end": 27, + "data": "should not error out", + "ignores": [] + }, + { + "type": "Text", + "start": 27, + "end": 28, + "raw": "\n", + "data": "\n" + } + ], + "transparent": false + }, + "options": null, + "instance": { + "type": "Script", + "start": 28, + "end": 76, + "context": "default", + "content": { + "type": "Program", + "start": 46, + "end": 67, + "loc": { + "start": { + "line": 1, + "column": 0 + }, + "end": { + "line": 4, + "column": 0 + } + }, + "body": [ + { + "type": "VariableDeclaration", + "start": 48, + "end": 66, + "loc": { + "start": { + "line": 3, + "column": 1 + }, + "end": { + "line": 3, + "column": 19 + } + }, + "declarations": [ + { + "type": "VariableDeclarator", + "start": 52, + "end": 65, + "loc": { + "start": { + "line": 3, + "column": 5 + }, + "end": { + "line": 3, + "column": 18 + } + }, + "id": { + "type": "Identifier", + "start": 52, + "end": 18, + "loc": { + "start": { + "line": 3, + "column": 5 + }, + "end": { + "line": 3, + "column": 18 + } + }, + "name": "count", + "typeAnnotation": { + "type": "TSTypeAnnotation", + "start": 57, + "end": 65, + "loc": { + "start": { + "line": 3, + "column": 10 + }, + "end": { + "line": 3, + "column": 18 + } + }, + "typeAnnotation": { + "type": "TSNumberKeyword", + "start": 59, + "end": 65, + "loc": { + "start": { + "line": 3, + "column": 12 + }, + "end": { + "line": 3, + "column": 18 + } + } + } + } + }, + "init": null + } + ], + "kind": "let" + } + ], + "sourceType": "module" + } + } +} diff --git a/packages/svelte/tests/parser-modern/samples/css-nth-syntax/input.svelte b/packages/svelte/tests/parser-modern/samples/css-nth-syntax/input.svelte index 5668a7799a..ce3813f3ad 100644 --- a/packages/svelte/tests/parser-modern/samples/css-nth-syntax/input.svelte +++ b/packages/svelte/tests/parser-modern/samples/css-nth-syntax/input.svelte @@ -28,6 +28,18 @@ } h1:global(nav) { background: red; + } + h1:nth-of-type(10n+1){ + background: red; + } + h1:nth-of-type(-2n+3){ + background: red; + } + h1:nth-of-type(+12){ + background: red; + } + h1:nth-of-type(+3n){ + background: red; } diff --git a/packages/svelte/tests/parser-modern/samples/css-nth-syntax/output.json b/packages/svelte/tests/parser-modern/samples/css-nth-syntax/output.json index 3716981b37..9e13a7cb86 100644 --- a/packages/svelte/tests/parser-modern/samples/css-nth-syntax/output.json +++ b/packages/svelte/tests/parser-modern/samples/css-nth-syntax/output.json @@ -2,7 +2,7 @@ "css": { "type": "Style", "start": 0, - "end": 586, + "end": 806, "attributes": [], "children": [ { @@ -495,19 +495,19 @@ "name": "nth-child", "args": { "type": "SelectorList", - "start": 476, - "end": 491, + "start": 485, + "end": 486, "children": [ { "type": "Selector", - "start": 476, - "end": 491, + "start": 485, + "end": 486, "children": [ { "type": "Nth", - "value": "\n n\n ", - "start": 476, - "end": 491 + "value": "n", + "start": 485, + "end": 486 } ] } @@ -601,32 +601,292 @@ }, "start": 530, "end": 577 + }, + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 580, + "end": 601, + "children": [ + { + "type": "Selector", + "start": 580, + "end": 601, + "children": [ + { + "type": "TypeSelector", + "name": "h1", + "start": 580, + "end": 582 + }, + { + "type": "PseudoClassSelector", + "name": "nth-of-type", + "args": { + "type": "SelectorList", + "start": 595, + "end": 600, + "children": [ + { + "type": "Selector", + "start": 595, + "end": 600, + "children": [ + { + "type": "Nth", + "value": "10n+1", + "start": 595, + "end": 600 + } + ] + } + ] + }, + "start": 582, + "end": 601 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 601, + "end": 633, + "children": [ + { + "type": "Declaration", + "start": 611, + "end": 626, + "property": "background", + "value": "red" + } + ] + }, + "start": 580, + "end": 633 + }, + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 636, + "end": 657, + "children": [ + { + "type": "Selector", + "start": 636, + "end": 657, + "children": [ + { + "type": "TypeSelector", + "name": "h1", + "start": 636, + "end": 638 + }, + { + "type": "PseudoClassSelector", + "name": "nth-of-type", + "args": { + "type": "SelectorList", + "start": 651, + "end": 656, + "children": [ + { + "type": "Selector", + "start": 651, + "end": 656, + "children": [ + { + "type": "Nth", + "value": "-2n+3", + "start": 651, + "end": 656 + } + ] + } + ] + }, + "start": 638, + "end": 657 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 657, + "end": 689, + "children": [ + { + "type": "Declaration", + "start": 667, + "end": 682, + "property": "background", + "value": "red" + } + ] + }, + "start": 636, + "end": 689 + }, + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 692, + "end": 711, + "children": [ + { + "type": "Selector", + "start": 692, + "end": 711, + "children": [ + { + "type": "TypeSelector", + "name": "h1", + "start": 692, + "end": 694 + }, + { + "type": "PseudoClassSelector", + "name": "nth-of-type", + "args": { + "type": "SelectorList", + "start": 707, + "end": 710, + "children": [ + { + "type": "Selector", + "start": 707, + "end": 710, + "children": [ + { + "type": "Nth", + "value": "+12", + "start": 707, + "end": 710 + } + ] + } + ] + }, + "start": 694, + "end": 711 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 711, + "end": 743, + "children": [ + { + "type": "Declaration", + "start": 721, + "end": 736, + "property": "background", + "value": "red" + } + ] + }, + "start": 692, + "end": 743 + }, + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 746, + "end": 765, + "children": [ + { + "type": "Selector", + "start": 746, + "end": 765, + "children": [ + { + "type": "TypeSelector", + "name": "h1", + "start": 746, + "end": 748 + }, + { + "type": "PseudoClassSelector", + "name": "nth-of-type", + "args": { + "type": "SelectorList", + "start": 761, + "end": 764, + "children": [ + { + "type": "Selector", + "start": 761, + "end": 764, + "children": [ + { + "type": "Nth", + "value": "+3n", + "start": 761, + "end": 764 + } + ] + } + ] + }, + "start": 748, + "end": 765 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 765, + "end": 797, + "children": [ + { + "type": "Declaration", + "start": 775, + "end": 790, + "property": "background", + "value": "red" + } + ] + }, + "start": 746, + "end": 797 } ], "content": { "start": 7, - "end": 578, - "styles": "\n /* test that all these are parsed correctly */\n\th1:nth-of-type(2n+1){\n background: red;\n }\n h1:nth-child(-n + 3 of li.important) {\n background: red;\n }\n h1:nth-child(1) {\n background: red;\n }\n h1:nth-child(p) {\n background: red;\n }\n h1:nth-child(n+7) {\n background: red;\n }\n h1:nth-child(even) {\n background: red;\n }\n h1:nth-child(odd) {\n background: red;\n }\n h1:nth-child(\n n\n ) {\n background: red;\n }\n h1:global(nav) {\n background: red;\n }\n" + "end": 798, + "styles": "\n /* test that all these are parsed correctly */\n\th1:nth-of-type(2n+1){\n background: red;\n }\n h1:nth-child(-n + 3 of li.important) {\n background: red;\n }\n h1:nth-child(1) {\n background: red;\n }\n h1:nth-child(p) {\n background: red;\n }\n h1:nth-child(n+7) {\n background: red;\n }\n h1:nth-child(even) {\n background: red;\n }\n h1:nth-child(odd) {\n background: red;\n }\n h1:nth-child(\n n\n ) {\n background: red;\n }\n h1:global(nav) {\n background: red;\n }\n\t\th1:nth-of-type(10n+1){\n background: red;\n }\n\t\th1:nth-of-type(-2n+3){\n background: red;\n }\n\t\th1:nth-of-type(+12){\n background: red;\n }\n\t\th1:nth-of-type(+3n){\n background: red;\n }\n" } }, "js": [], - "start": 588, - "end": 600, + "start": 808, + "end": 820, "type": "Root", "fragment": { "type": "Fragment", "nodes": [ { "type": "Text", - "start": 586, - "end": 588, + "start": 806, + "end": 808, "raw": "\n\n", "data": "\n\n" }, { "type": "RegularElement", - "start": 588, - "end": 600, + "start": 808, + "end": 820, "name": "h1", "attributes": [], "fragment": { @@ -634,8 +894,8 @@ "nodes": [ { "type": "Text", - "start": 592, - "end": 595, + "start": 812, + "end": 815, "raw": "Foo", "data": "Foo" } diff --git a/packages/svelte/tests/parser-modern/samples/css-pseudo-classes/input.svelte b/packages/svelte/tests/parser-modern/samples/css-pseudo-classes/input.svelte new file mode 100644 index 0000000000..d8ed0f9e36 --- /dev/null +++ b/packages/svelte/tests/parser-modern/samples/css-pseudo-classes/input.svelte @@ -0,0 +1,24 @@ + diff --git a/packages/svelte/tests/parser-modern/samples/css-pseudo-classes/output.json b/packages/svelte/tests/parser-modern/samples/css-pseudo-classes/output.json new file mode 100644 index 0000000000..1431b123a4 --- /dev/null +++ b/packages/svelte/tests/parser-modern/samples/css-pseudo-classes/output.json @@ -0,0 +1,330 @@ +{ + "css": { + "type": "Style", + "start": 0, + "end": 386, + "attributes": [], + "children": [ + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 60, + "end": 86, + "children": [ + { + "type": "Selector", + "start": 60, + "end": 86, + "children": [ + { + "type": "PseudoElementSelector", + "name": "view-transition-old", + "start": 60, + "end": 81 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 88, + "end": 109, + "children": [ + { + "type": "Declaration", + "start": 92, + "end": 102, + "property": "color", + "value": "red" + } + ] + }, + "start": 60, + "end": 109 + }, + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 111, + "end": 146, + "children": [ + { + "type": "Selector", + "start": 111, + "end": 146, + "children": [ + { + "type": "PseudoClassSelector", + "name": "global", + "args": { + "type": "SelectorList", + "start": 119, + "end": 145, + "children": [ + { + "type": "Selector", + "start": 119, + "end": 145, + "children": [ + { + "type": "PseudoElementSelector", + "name": "view-transition-old", + "start": 119, + "end": 140 + } + ] + } + ] + }, + "start": 111, + "end": 146 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 148, + "end": 169, + "children": [ + { + "type": "Declaration", + "start": 152, + "end": 162, + "property": "color", + "value": "red" + } + ] + }, + "start": 111, + "end": 169 + }, + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 171, + "end": 199, + "children": [ + { + "type": "Selector", + "start": 171, + "end": 199, + "children": [ + { + "type": "PseudoElementSelector", + "name": "highlight", + "start": 171, + "end": 182 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 200, + "end": 218, + "children": [ + { + "type": "Declaration", + "start": 204, + "end": 214, + "property": "color", + "value": "red" + } + ] + }, + "start": 171, + "end": 218 + }, + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 220, + "end": 245, + "children": [ + { + "type": "Selector", + "start": 220, + "end": 245, + "children": [ + { + "type": "TypeSelector", + "name": "custom-element", + "start": 220, + "end": 234 + }, + { + "type": "PseudoElementSelector", + "name": "part", + "start": 234, + "end": 240 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 246, + "end": 264, + "children": [ + { + "type": "Declaration", + "start": 250, + "end": 260, + "property": "color", + "value": "red" + } + ] + }, + "start": 220, + "end": 264 + }, + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 266, + "end": 285, + "children": [ + { + "type": "Selector", + "start": 266, + "end": 285, + "children": [ + { + "type": "PseudoElementSelector", + "name": "slotted", + "start": 266, + "end": 275 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 286, + "end": 304, + "children": [ + { + "type": "Declaration", + "start": 290, + "end": 300, + "property": "color", + "value": "red" + } + ] + }, + "start": 266, + "end": 304 + }, + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 306, + "end": 359, + "children": [ + { + "type": "Selector", + "start": 306, + "end": 359, + "children": [ + { + "type": "PseudoClassSelector", + "name": "is", + "args": { + "type": "SelectorList", + "start": 324, + "end": 355, + "children": [ + { + "type": "Selector", + "start": 324, + "end": 330, + "children": [ + { + "type": "TypeSelector", + "name": "button", + "start": 324, + "end": 330 + } + ] + }, + { + "type": "Selector", + "start": 349, + "end": 355, + "children": [ + { + "type": "TypeSelector", + "name": "h1", + "start": 349, + "end": 351 + }, + { + "type": "Combinator", + "name": "+", + "start": 352, + "end": 353 + }, + { + "type": "TypeSelector", + "name": "p", + "start": 354, + "end": 355 + } + ] + } + ] + }, + "start": 306, + "end": 359 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 359, + "end": 377, + "children": [ + { + "type": "Declaration", + "start": 363, + "end": 373, + "property": "color", + "value": "red" + } + ] + }, + "start": 306, + "end": 377 + } + ], + "content": { + "start": 7, + "end": 378, + "styles": "\n /* test that all these are parsed correctly */\n\t::view-transition-old(x-y) {\n\t\tcolor: red;\n }\n\t:global(::view-transition-old(x-y)) {\n\t\tcolor: red;\n }\n\t::highlight(rainbow-color-1) {\n\t\tcolor: red;\n\t}\n\tcustom-element::part(foo) {\n\t\tcolor: red;\n\t}\n\t::slotted(.content) {\n\t\tcolor: red;\n\t}\n\t:is( /*button*/\n\t\tbutton, /*p after h1*/\n\t\th1 + p\n\t\t){\n\t\tcolor: red;\n\t}\n" + } + }, + "js": [], + "start": null, + "end": null, + "type": "Root", + "fragment": { + "type": "Fragment", + "nodes": [], + "transparent": false + }, + "options": null +} diff --git a/packages/svelte/tests/parser-modern/samples/semicolon-inside-quotes/input.svelte b/packages/svelte/tests/parser-modern/samples/semicolon-inside-quotes/input.svelte new file mode 100644 index 0000000000..8473391f94 --- /dev/null +++ b/packages/svelte/tests/parser-modern/samples/semicolon-inside-quotes/input.svelte @@ -0,0 +1,10 @@ +

+ Semicolon inside quotes +

+ diff --git a/packages/svelte/tests/parser-modern/samples/semicolon-inside-quotes/output.json b/packages/svelte/tests/parser-modern/samples/semicolon-inside-quotes/output.json new file mode 100644 index 0000000000..c6fbb599c7 --- /dev/null +++ b/packages/svelte/tests/parser-modern/samples/semicolon-inside-quotes/output.json @@ -0,0 +1,107 @@ +{ + "css": { + "type": "Style", + "start": 36, + "end": 205, + "attributes": [], + "children": [ + { + "type": "Atrule", + "start": 45, + "end": 135, + "name": "import", + "prelude": "url(\"https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap\")", + "block": null + }, + { + "type": "Rule", + "prelude": { + "type": "SelectorList", + "start": 137, + "end": 139, + "children": [ + { + "type": "Selector", + "start": 137, + "end": 139, + "children": [ + { + "type": "TypeSelector", + "name": "h1", + "start": 137, + "end": 139 + } + ] + } + ] + }, + "block": { + "type": "Block", + "start": 140, + "end": 196, + "children": [ + { + "type": "Declaration", + "start": 144, + "end": 161, + "property": "font-weight", + "value": "bold" + }, + { + "type": "Declaration", + "start": 165, + "end": 192, + "property": "background", + "value": "url(\"whatever\")" + } + ] + }, + "start": 137, + "end": 196 + } + ], + "content": { + "start": 43, + "end": 197, + "styles": "\n\t@import url(\"https://fonts.googleapis.com/css2?family=Poppins:wght@400;700&display=swap\");\n\th1 {\n\t\tfont-weight: bold;\n\t\tbackground: url(\"whatever\");\n\t}\n" + } + }, + "js": [], + "start": 0, + "end": 35, + "type": "Root", + "fragment": { + "type": "Fragment", + "nodes": [ + { + "type": "RegularElement", + "start": 0, + "end": 35, + "name": "h1", + "attributes": [], + "fragment": { + "type": "Fragment", + "nodes": [ + { + "type": "Text", + "start": 4, + "end": 30, + "raw": "\n\tSemicolon inside quotes\n", + "data": "\n\tSemicolon inside quotes\n" + } + ], + "transparent": true + } + }, + { + "type": "Text", + "start": 35, + "end": 36, + "raw": "\n", + "data": "\n" + } + ], + "transparent": false + }, + "options": null +} diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-store/_config.js b/packages/svelte/tests/runtime-legacy/samples/binding-store/_config.js index 81c83d73de..b8c4ab1f9a 100644 --- a/packages/svelte/tests/runtime-legacy/samples/binding-store/_config.js +++ b/packages/svelte/tests/runtime-legacy/samples/binding-store/_config.js @@ -4,11 +4,15 @@ export default test({ html: `

hello world

+ +
world
`, ssrHtml: `

hello world

+ +
world
`, async test({ assert, component, target, window }) { @@ -34,6 +38,8 @@ export default test({ `

hello everybody

+ +
everybody
` ); @@ -44,6 +50,8 @@ export default test({ `

hello goodbye

+ +
goodbye
` ); diff --git a/packages/svelte/tests/runtime-legacy/samples/binding-store/main.svelte b/packages/svelte/tests/runtime-legacy/samples/binding-store/main.svelte index fd022a34b3..2bcf939af5 100644 --- a/packages/svelte/tests/runtime-legacy/samples/binding-store/main.svelte +++ b/packages/svelte/tests/runtime-legacy/samples/binding-store/main.svelte @@ -6,4 +6,6 @@ -

hello {$name}

\ No newline at end of file +

hello {$name}

+