\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/container-query/_actual.css b/packages/svelte/test/css/samples/container-query/_actual.css
new file mode 100644
index 000000000..47aa63135
--- /dev/null
+++ b/packages/svelte/test/css/samples/container-query/_actual.css
@@ -0,0 +1 @@
+div.svelte-1t7rfxs{container:test-container / inline-size}@container (min-width: 400px){div.svelte-1t7rfxs{color:red}}@container test-container (min-width: 410px){div.svelte-1t7rfxs{color:green}}@container test-container (width < 400px){div.svelte-1t7rfxs{color:blue}}@container test-container (0 <= width < 300px){div.svelte-1t7rfxs{color:purple}}@container not (width < 400px){div.svelte-1t7rfxs{color:pink}}@container (width > 400px) and (height > 400px){div.svelte-1t7rfxs{color:lightgreen}}@container (width > 400px) or (height > 400px){div.svelte-1t7rfxs{color:lightblue}}@container (width > 400px) and (width > 800px) or (orientation: portrait){div.svelte-1t7rfxs{color:salmon}}@container style(color: blue){div.svelte-1t7rfxs{color:tan}}@container test-container (min-width: calc(400px + 1px)){div.svelte-1t7rfxs{color:green}}@container test-container (width < clamp(200px, 40%, 400px)){div.svelte-1t7rfxs{color:blue}}@container test-container (calc(400px + 1px) <= width < calc(500px + 1px)){div.svelte-1t7rfxs{color:purple}}@container style(--var: calc(400px + 1px)){div.svelte-1t7rfxs{color:sandybrown}}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/css-vars/_actual.css b/packages/svelte/test/css/samples/css-vars/_actual.css
new file mode 100644
index 000000000..1afcee6f1
--- /dev/null
+++ b/packages/svelte/test/css/samples/css-vars/_actual.css
@@ -0,0 +1 @@
+:root{--root-test:20}div.svelte-ns0u2p{--test:10}div.svelte-ns0u2p{--foo: ;--bar: !important}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/custom-css-hash/_actual.css b/packages/svelte/test/css/samples/custom-css-hash/_actual.css
new file mode 100644
index 000000000..fe710597e
--- /dev/null
+++ b/packages/svelte/test/css/samples/custom-css-hash/_actual.css
@@ -0,0 +1 @@
+div.sv-FooSwitcher-scf-bzh57p{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/descendant-selector-non-top-level-outer/_actual.css b/packages/svelte/test/css/samples/descendant-selector-non-top-level-outer/_actual.css
new file mode 100644
index 000000000..ad19206da
--- /dev/null
+++ b/packages/svelte/test/css/samples/descendant-selector-non-top-level-outer/_actual.css
@@ -0,0 +1 @@
+p.svelte-6to1l6 span.svelte-6to1l6{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/descendant-selector-non-top-level-outer/_actual.html b/packages/svelte/test/css/samples/descendant-selector-non-top-level-outer/_actual.html
new file mode 100644
index 000000000..b197847b6
--- /dev/null
+++ b/packages/svelte/test/css/samples/descendant-selector-non-top-level-outer/_actual.html
@@ -0,0 +1 @@
+
styled
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/directive-special-character/_actual.css b/packages/svelte/test/css/samples/directive-special-character/_actual.css
new file mode 100644
index 000000000..07ef999a6
--- /dev/null
+++ b/packages/svelte/test/css/samples/directive-special-character/_actual.css
@@ -0,0 +1 @@
+.foo\:bar.svelte-ftrecr{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/directive-special-character/_actual.html b/packages/svelte/test/css/samples/directive-special-character/_actual.html
new file mode 100644
index 000000000..6c4837882
--- /dev/null
+++ b/packages/svelte/test/css/samples/directive-special-character/_actual.html
@@ -0,0 +1 @@
+
Hello world
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/dynamic-element-tag/_actual.css b/packages/svelte/test/css/samples/dynamic-element-tag/_actual.css
new file mode 100644
index 000000000..da61e6988
--- /dev/null
+++ b/packages/svelte/test/css/samples/dynamic-element-tag/_actual.css
@@ -0,0 +1 @@
+div.svelte-2iqyui.svelte-2iqyui.svelte-2iqyui{color:red}h2.svelte-2iqyui>p.svelte-2iqyui.svelte-2iqyui{color:red}h2.svelte-2iqyui span.svelte-2iqyui.svelte-2iqyui{color:red}h2.svelte-2iqyui>span.svelte-2iqyui>b.svelte-2iqyui{color:red}h2.svelte-2iqyui span b.svelte-2iqyui.svelte-2iqyui{color:red}h2.svelte-2iqyui b.svelte-2iqyui.svelte-2iqyui{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/dynamic-element-tag/_actual.html b/packages/svelte/test/css/samples/dynamic-element-tag/_actual.html
new file mode 100644
index 000000000..55892f8e2
--- /dev/null
+++ b/packages/svelte/test/css/samples/dynamic-element-tag/_actual.html
@@ -0,0 +1 @@
+
text
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/dynamic-element/_actual.css b/packages/svelte/test/css/samples/dynamic-element/_actual.css
new file mode 100644
index 000000000..e0149ce00
--- /dev/null
+++ b/packages/svelte/test/css/samples/dynamic-element/_actual.css
@@ -0,0 +1 @@
+.used.svelte-ue9igz{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/dynamic-element/_actual.html b/packages/svelte/test/css/samples/dynamic-element/_actual.html
new file mode 100644
index 000000000..50e0955c3
--- /dev/null
+++ b/packages/svelte/test/css/samples/dynamic-element/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/empty-class/_actual.css b/packages/svelte/test/css/samples/empty-class/_actual.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/svelte/test/css/samples/empty-rule-dev/_actual.css b/packages/svelte/test/css/samples/empty-rule-dev/_actual.css
new file mode 100644
index 000000000..d10b211ac
--- /dev/null
+++ b/packages/svelte/test/css/samples/empty-rule-dev/_actual.css
@@ -0,0 +1 @@
+.foo.svelte-vkl626{}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/empty-rule/_actual.css b/packages/svelte/test/css/samples/empty-rule/_actual.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-await-not-exhaustive/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator-await-not-exhaustive/_actual.css
new file mode 100644
index 000000000..cef5f48e6
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-await-not-exhaustive/_actual.css
@@ -0,0 +1 @@
+.a.svelte-1mbgm5k~.b.svelte-1mbgm5k.svelte-1mbgm5k.svelte-1mbgm5k{color:green}.a.svelte-1mbgm5k~.c.svelte-1mbgm5k.svelte-1mbgm5k.svelte-1mbgm5k{color:green}.a.svelte-1mbgm5k~.d.svelte-1mbgm5k.svelte-1mbgm5k.svelte-1mbgm5k{color:green}.a.svelte-1mbgm5k~.e.svelte-1mbgm5k.svelte-1mbgm5k.svelte-1mbgm5k{color:green}.a.svelte-1mbgm5k~.f.svelte-1mbgm5k.svelte-1mbgm5k.svelte-1mbgm5k{color:green}.a.svelte-1mbgm5k~.g.svelte-1mbgm5k.svelte-1mbgm5k.svelte-1mbgm5k{color:green}.a.svelte-1mbgm5k~.h.svelte-1mbgm5k.svelte-1mbgm5k.svelte-1mbgm5k{color:green}.b.svelte-1mbgm5k~.d.svelte-1mbgm5k.svelte-1mbgm5k.svelte-1mbgm5k{color:green}.c.svelte-1mbgm5k~.d.svelte-1mbgm5k.svelte-1mbgm5k.svelte-1mbgm5k{color:green}.b.svelte-1mbgm5k~.e.svelte-1mbgm5k~.f.svelte-1mbgm5k~.h.svelte-1mbgm5k{color:green}.b.svelte-1mbgm5k~.d.svelte-1mbgm5k~.h.svelte-1mbgm5k.svelte-1mbgm5k{color:green}.c.svelte-1mbgm5k~.g.svelte-1mbgm5k.svelte-1mbgm5k.svelte-1mbgm5k{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-await-not-exhaustive/_actual.html b/packages/svelte/test/css/samples/general-siblings-combinator-await-not-exhaustive/_actual.html
new file mode 100644
index 000000000..bfeec8243
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-await-not-exhaustive/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-await/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator-await/_actual.css
new file mode 100644
index 000000000..1bf7d9c20
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-await/_actual.css
@@ -0,0 +1 @@
+.a.svelte-1gtzv5m~.b.svelte-1gtzv5m{color:green}.a.svelte-1gtzv5m~.c.svelte-1gtzv5m{color:green}.a.svelte-1gtzv5m~.d.svelte-1gtzv5m{color:green}.b.svelte-1gtzv5m~.e.svelte-1gtzv5m{color:green}.c.svelte-1gtzv5m~.e.svelte-1gtzv5m{color:green}.d.svelte-1gtzv5m~.e.svelte-1gtzv5m{color:green}.a.svelte-1gtzv5m~.e.svelte-1gtzv5m{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-await/_actual.html b/packages/svelte/test/css/samples/general-siblings-combinator-await/_actual.html
new file mode 100644
index 000000000..a8f2e7d17
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-await/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-each-2/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator-each-2/_actual.css
new file mode 100644
index 000000000..f074a9e13
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-each-2/_actual.css
@@ -0,0 +1 @@
+.a.svelte-shrlqw~.b.svelte-shrlqw{color:green}.c.svelte-shrlqw~.d.svelte-shrlqw{color:green}.a.svelte-shrlqw~.d.svelte-shrlqw{color:green}.c.svelte-shrlqw~.b.svelte-shrlqw{color:green}.b.svelte-shrlqw~.c.svelte-shrlqw{color:green}.a.svelte-shrlqw~.c.svelte-shrlqw{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-each-2/_actual.html b/packages/svelte/test/css/samples/general-siblings-combinator-each-2/_actual.html
new file mode 100644
index 000000000..8da04c4f3
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-each-2/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-each-else-nested/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator-each-else-nested/_actual.css
new file mode 100644
index 000000000..00f0c630f
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-each-else-nested/_actual.css
@@ -0,0 +1 @@
+.a.svelte-1x6f59f~.e.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.a.svelte-1x6f59f~.f.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.b.svelte-1x6f59f~.c.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.b.svelte-1x6f59f~.d.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.c.svelte-1x6f59f~.e.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.c.svelte-1x6f59f~.f.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.d.svelte-1x6f59f~.e.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.d.svelte-1x6f59f~.f.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.e.svelte-1x6f59f~.e.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.i.svelte-1x6f59f~.j.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.g.svelte-1x6f59f~.h.svelte-1x6f59f~.j.svelte-1x6f59f.svelte-1x6f59f{color:green}.g.svelte-1x6f59f~.i.svelte-1x6f59f~.j.svelte-1x6f59f.svelte-1x6f59f{color:green}.m.svelte-1x6f59f~.m.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.m.svelte-1x6f59f~.l.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.l.svelte-1x6f59f~.m.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.a.svelte-1x6f59f~.c.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.a.svelte-1x6f59f~.g.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.b.svelte-1x6f59f~.e.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.c.svelte-1x6f59f~.g.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.c.svelte-1x6f59f~.k.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.d.svelte-1x6f59f~.d.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.g.svelte-1x6f59f~.g.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.h.svelte-1x6f59f~.h.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.i.svelte-1x6f59f~.i.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.j.svelte-1x6f59f~.j.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.g.svelte-1x6f59f~.j.svelte-1x6f59f.svelte-1x6f59f.svelte-1x6f59f{color:green}.g.svelte-1x6f59f~.h.svelte-1x6f59f~.i.svelte-1x6f59f~.j.svelte-1x6f59f{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-each-else-nested/_actual.html b/packages/svelte/test/css/samples/general-siblings-combinator-each-else-nested/_actual.html
new file mode 100644
index 000000000..7415e3412
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-each-else-nested/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-each-else/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator-each-else/_actual.css
new file mode 100644
index 000000000..fed090893
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-each-else/_actual.css
@@ -0,0 +1 @@
+.a.svelte-217p25~.b.svelte-217p25{color:green}.a.svelte-217p25~.c.svelte-217p25{color:green}.b.svelte-217p25~.d.svelte-217p25{color:green}.c.svelte-217p25~.d.svelte-217p25{color:green}.a.svelte-217p25~.d.svelte-217p25{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-each-else/_actual.html b/packages/svelte/test/css/samples/general-siblings-combinator-each-else/_actual.html
new file mode 100644
index 000000000..5d3d39d20
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-each-else/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-each-nested/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator-each-nested/_actual.css
new file mode 100644
index 000000000..2dd438dd4
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-each-nested/_actual.css
@@ -0,0 +1 @@
+.a.svelte-1c40xdd~.d.svelte-1c40xdd.svelte-1c40xdd{color:green}.a.svelte-1c40xdd~.e.svelte-1c40xdd.svelte-1c40xdd{color:green}.a.svelte-1c40xdd~.f.svelte-1c40xdd.svelte-1c40xdd{color:green}.a.svelte-1c40xdd~.g.svelte-1c40xdd.svelte-1c40xdd{color:green}.c.svelte-1c40xdd~.d.svelte-1c40xdd.svelte-1c40xdd{color:green}.c.svelte-1c40xdd~.e.svelte-1c40xdd.svelte-1c40xdd{color:green}.c.svelte-1c40xdd~.f.svelte-1c40xdd.svelte-1c40xdd{color:green}.c.svelte-1c40xdd~.g.svelte-1c40xdd.svelte-1c40xdd{color:green}.j.svelte-1c40xdd~.m.svelte-1c40xdd.svelte-1c40xdd{color:green}.j.svelte-1c40xdd~.n.svelte-1c40xdd.svelte-1c40xdd{color:green}.j.svelte-1c40xdd~.o.svelte-1c40xdd.svelte-1c40xdd{color:green}.k.svelte-1c40xdd~.m.svelte-1c40xdd.svelte-1c40xdd{color:green}.k.svelte-1c40xdd~.n.svelte-1c40xdd.svelte-1c40xdd{color:green}.k.svelte-1c40xdd~.o.svelte-1c40xdd.svelte-1c40xdd{color:green}.l.svelte-1c40xdd~.m.svelte-1c40xdd.svelte-1c40xdd{color:green}.l.svelte-1c40xdd~.n.svelte-1c40xdd.svelte-1c40xdd{color:green}.l.svelte-1c40xdd~.o.svelte-1c40xdd.svelte-1c40xdd{color:green}.d.svelte-1c40xdd~.e.svelte-1c40xdd.svelte-1c40xdd{color:green}.e.svelte-1c40xdd~.f.svelte-1c40xdd.svelte-1c40xdd{color:green}.g.svelte-1c40xdd~.h.svelte-1c40xdd.svelte-1c40xdd{color:green}.f.svelte-1c40xdd~.d.svelte-1c40xdd.svelte-1c40xdd{color:green}.f.svelte-1c40xdd~.e.svelte-1c40xdd.svelte-1c40xdd{color:green}.f.svelte-1c40xdd~.f.svelte-1c40xdd.svelte-1c40xdd{color:green}.h.svelte-1c40xdd~.g.svelte-1c40xdd.svelte-1c40xdd{color:green}.i.svelte-1c40xdd~.h.svelte-1c40xdd.svelte-1c40xdd{color:green}.i.svelte-1c40xdd~.g.svelte-1c40xdd.svelte-1c40xdd{color:green}.d.svelte-1c40xdd~.d.svelte-1c40xdd.svelte-1c40xdd{color:green}.e.svelte-1c40xdd~.e.svelte-1c40xdd.svelte-1c40xdd{color:green}.f.svelte-1c40xdd~.f.svelte-1c40xdd.svelte-1c40xdd{color:green}.g.svelte-1c40xdd~.g.svelte-1c40xdd.svelte-1c40xdd{color:green}.h.svelte-1c40xdd~.h.svelte-1c40xdd.svelte-1c40xdd{color:green}.i.svelte-1c40xdd~.i.svelte-1c40xdd.svelte-1c40xdd{color:green}.e.svelte-1c40xdd~.e.svelte-1c40xdd~.f.svelte-1c40xdd{color:green}.e.svelte-1c40xdd~.e.svelte-1c40xdd~.d.svelte-1c40xdd{color:green}.h.svelte-1c40xdd~.h.svelte-1c40xdd~.i.svelte-1c40xdd{color:green}.h.svelte-1c40xdd~.h.svelte-1c40xdd~.g.svelte-1c40xdd{color:green}.a.svelte-1c40xdd~.h.svelte-1c40xdd.svelte-1c40xdd{color:green}.a.svelte-1c40xdd~.i.svelte-1c40xdd.svelte-1c40xdd{color:green}.c.svelte-1c40xdd~.h.svelte-1c40xdd.svelte-1c40xdd{color:green}.c.svelte-1c40xdd~.i.svelte-1c40xdd.svelte-1c40xdd{color:green}.d.svelte-1c40xdd~.f.svelte-1c40xdd.svelte-1c40xdd{color:green}.d.svelte-1c40xdd~.g.svelte-1c40xdd.svelte-1c40xdd{color:green}.e.svelte-1c40xdd~.g.svelte-1c40xdd.svelte-1c40xdd{color:green}.g.svelte-1c40xdd~.i.svelte-1c40xdd.svelte-1c40xdd{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-each-nested/_actual.html b/packages/svelte/test/css/samples/general-siblings-combinator-each-nested/_actual.html
new file mode 100644
index 000000000..856d7d908
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-each-nested/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-each/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator-each/_actual.css
new file mode 100644
index 000000000..c0904789e
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-each/_actual.css
@@ -0,0 +1 @@
+div.svelte-186edgx~span.svelte-186edgx{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-each/_actual.html b/packages/svelte/test/css/samples/general-siblings-combinator-each/_actual.html
new file mode 100644
index 000000000..f630e5ce5
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-each/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-former-element-in-slot/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator-former-element-in-slot/_actual.css
new file mode 100644
index 000000000..39a5ab7bc
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-former-element-in-slot/_actual.css
@@ -0,0 +1 @@
+h1.svelte-11j9i8n~p.svelte-11j9i8n{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-if-not-exhaustive-with-each/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator-if-not-exhaustive-with-each/_actual.css
new file mode 100644
index 000000000..e73255df0
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-if-not-exhaustive-with-each/_actual.css
@@ -0,0 +1 @@
+.a.svelte-qvtl8y~.b.svelte-qvtl8y.svelte-qvtl8y.svelte-qvtl8y{color:green}.a.svelte-qvtl8y~.c.svelte-qvtl8y.svelte-qvtl8y.svelte-qvtl8y{color:green}.a.svelte-qvtl8y~.d.svelte-qvtl8y.svelte-qvtl8y.svelte-qvtl8y{color:green}.b.svelte-qvtl8y~.d.svelte-qvtl8y.svelte-qvtl8y.svelte-qvtl8y{color:green}.c.svelte-qvtl8y~.d.svelte-qvtl8y.svelte-qvtl8y.svelte-qvtl8y{color:green}.a.svelte-qvtl8y~.c.svelte-qvtl8y~.c.svelte-qvtl8y.svelte-qvtl8y{color:green}.c.svelte-qvtl8y~.c.svelte-qvtl8y~.d.svelte-qvtl8y.svelte-qvtl8y{color:green}.a.svelte-qvtl8y~.c.svelte-qvtl8y~.c.svelte-qvtl8y~.d.svelte-qvtl8y{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-if-not-exhaustive-with-each/_actual.html b/packages/svelte/test/css/samples/general-siblings-combinator-if-not-exhaustive-with-each/_actual.html
new file mode 100644
index 000000000..dc9fc9913
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-if-not-exhaustive-with-each/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-if-not-exhaustive/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator-if-not-exhaustive/_actual.css
new file mode 100644
index 000000000..4c19cdea9
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-if-not-exhaustive/_actual.css
@@ -0,0 +1 @@
+.a.svelte-8j80gc~.b.svelte-8j80gc{color:green}.a.svelte-8j80gc~.c.svelte-8j80gc{color:green}.a.svelte-8j80gc~.d.svelte-8j80gc{color:green}.b.svelte-8j80gc~.d.svelte-8j80gc{color:green}.c.svelte-8j80gc~.d.svelte-8j80gc{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-if-not-exhaustive/_actual.html b/packages/svelte/test/css/samples/general-siblings-combinator-if-not-exhaustive/_actual.html
new file mode 100644
index 000000000..418dc42cc
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-if-not-exhaustive/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-if/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator-if/_actual.css
new file mode 100644
index 000000000..88bb88247
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-if/_actual.css
@@ -0,0 +1 @@
+.a.svelte-z0g2hg~.b.svelte-z0g2hg{color:green}.a.svelte-z0g2hg~.c.svelte-z0g2hg{color:green}.a.svelte-z0g2hg~.d.svelte-z0g2hg{color:green}.b.svelte-z0g2hg~.e.svelte-z0g2hg{color:green}.c.svelte-z0g2hg~.e.svelte-z0g2hg{color:green}.d.svelte-z0g2hg~.e.svelte-z0g2hg{color:green}.a.svelte-z0g2hg~.e.svelte-z0g2hg{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-if/_actual.html b/packages/svelte/test/css/samples/general-siblings-combinator-if/_actual.html
new file mode 100644
index 000000000..1f0cdb505
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-if/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-nested-slots-flattened/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator-nested-slots-flattened/_actual.css
new file mode 100644
index 000000000..39a5ab7bc
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-nested-slots-flattened/_actual.css
@@ -0,0 +1 @@
+h1.svelte-11j9i8n~p.svelte-11j9i8n{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-nested-slots/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator-nested-slots/_actual.css
new file mode 100644
index 000000000..39a5ab7bc
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-nested-slots/_actual.css
@@ -0,0 +1 @@
+h1.svelte-11j9i8n~p.svelte-11j9i8n{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-selects-slot-fallback/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator-selects-slot-fallback/_actual.css
new file mode 100644
index 000000000..39a5ab7bc
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-selects-slot-fallback/_actual.css
@@ -0,0 +1 @@
+h1.svelte-11j9i8n~p.svelte-11j9i8n{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-slot/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator-slot/_actual.css
new file mode 100644
index 000000000..9efa9dc33
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-slot/_actual.css
@@ -0,0 +1 @@
+.d.svelte-1est859~.e.svelte-1est859{color:green}.a.svelte-1est859~.g.svelte-1est859{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-slots-between/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator-slots-between/_actual.css
new file mode 100644
index 000000000..0699911c6
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-slots-between/_actual.css
@@ -0,0 +1 @@
+h1.svelte-1j0crw7~span.svelte-1j0crw7{color:green}h1.svelte-1j0crw7~p.svelte-1j0crw7{color:red}span.svelte-1j0crw7~p.svelte-1j0crw7{color:blue}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-star/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator-star/_actual.css
new file mode 100644
index 000000000..44ce09acd
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-star/_actual.css
@@ -0,0 +1 @@
+.match.svelte-1sz9unp>.svelte-1sz9unp~.svelte-1sz9unp{margin-left:4px}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator-star/_actual.html b/packages/svelte/test/css/samples/general-siblings-combinator-star/_actual.html
new file mode 100644
index 000000000..febe32beb
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator-star/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator/_actual.css b/packages/svelte/test/css/samples/general-siblings-combinator/_actual.css
new file mode 100644
index 000000000..dc53eda71
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator/_actual.css
@@ -0,0 +1 @@
+div.svelte-wyu2n5~article.svelte-wyu2n5.svelte-wyu2n5{color:green}span.svelte-wyu2n5~b.svelte-wyu2n5.svelte-wyu2n5{color:green}div.svelte-wyu2n5 span.svelte-wyu2n5~b.svelte-wyu2n5{color:green}.a.svelte-wyu2n5~article.svelte-wyu2n5.svelte-wyu2n5{color:green}div.svelte-wyu2n5~.b.svelte-wyu2n5.svelte-wyu2n5{color:green}.a.svelte-wyu2n5~.c.svelte-wyu2n5.svelte-wyu2n5{color:green}article.svelte-wyu2n5~details.svelte-wyu2n5.svelte-wyu2n5{color:green}.a.svelte-wyu2n5~details.svelte-wyu2n5.svelte-wyu2n5{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/general-siblings-combinator/_actual.html b/packages/svelte/test/css/samples/general-siblings-combinator/_actual.html
new file mode 100644
index 000000000..32446658d
--- /dev/null
+++ b/packages/svelte/test/css/samples/general-siblings-combinator/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/global-compound-selector/_actual.css b/packages/svelte/test/css/samples/global-compound-selector/_actual.css
new file mode 100644
index 000000000..3d029d3d1
--- /dev/null
+++ b/packages/svelte/test/css/samples/global-compound-selector/_actual.css
@@ -0,0 +1 @@
+div.svelte-4trd59.svelte-4trd59.bar{color:red}.foo.svelte-4trd59.svelte-4trd59.bar{color:red}.foo.svelte-4trd59.bar span.svelte-4trd59{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/global-compound-selector/_actual.html b/packages/svelte/test/css/samples/global-compound-selector/_actual.html
new file mode 100644
index 000000000..0abbe157f
--- /dev/null
+++ b/packages/svelte/test/css/samples/global-compound-selector/_actual.html
@@ -0,0 +1 @@
+
text
texttext
text
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/global-keyframes-with-no-elements/_actual.css b/packages/svelte/test/css/samples/global-keyframes-with-no-elements/_actual.css
new file mode 100644
index 000000000..50a57ac47
--- /dev/null
+++ b/packages/svelte/test/css/samples/global-keyframes-with-no-elements/_actual.css
@@ -0,0 +1 @@
+@keyframes why{0%{color:red}100%{color:blue}}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/global-keyframes/_actual.css b/packages/svelte/test/css/samples/global-keyframes/_actual.css
new file mode 100644
index 000000000..d26fab99b
--- /dev/null
+++ b/packages/svelte/test/css/samples/global-keyframes/_actual.css
@@ -0,0 +1 @@
+@keyframes why{0%{color:red}100%{color:blue}}.animated.svelte-zxxeux{animation:why 2s}.also-animated.svelte-zxxeux{animation:not-defined-here 2s}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/global-with-child-combinator-2/_actual.css b/packages/svelte/test/css/samples/global-with-child-combinator-2/_actual.css
new file mode 100644
index 000000000..8109b122f
--- /dev/null
+++ b/packages/svelte/test/css/samples/global-with-child-combinator-2/_actual.css
@@ -0,0 +1 @@
+div>div.svelte-1ny8lzs.svelte-1ny8lzs{color:red}div.svelte-1ny8lzs.foo>div.svelte-1ny8lzs{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/global-with-child-combinator-2/_actual.html b/packages/svelte/test/css/samples/global-with-child-combinator-2/_actual.html
new file mode 100644
index 000000000..5dac3e526
--- /dev/null
+++ b/packages/svelte/test/css/samples/global-with-child-combinator-2/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/global-with-child-combinator-3/_actual.css b/packages/svelte/test/css/samples/global-with-child-combinator-3/_actual.css
new file mode 100644
index 000000000..db14e0b96
--- /dev/null
+++ b/packages/svelte/test/css/samples/global-with-child-combinator-3/_actual.css
@@ -0,0 +1 @@
+a>b>div.svelte-rjk392{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/global-with-child-combinator-3/_actual.html b/packages/svelte/test/css/samples/global-with-child-combinator-3/_actual.html
new file mode 100644
index 000000000..941be58d5
--- /dev/null
+++ b/packages/svelte/test/css/samples/global-with-child-combinator-3/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/global-with-child-combinator/_actual.css b/packages/svelte/test/css/samples/global-with-child-combinator/_actual.css
new file mode 100644
index 000000000..1a34b5131
--- /dev/null
+++ b/packages/svelte/test/css/samples/global-with-child-combinator/_actual.css
@@ -0,0 +1 @@
+div>div.svelte-lxuwwe{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/global-with-child-combinator/_actual.html b/packages/svelte/test/css/samples/global-with-child-combinator/_actual.html
new file mode 100644
index 000000000..dc74b9088
--- /dev/null
+++ b/packages/svelte/test/css/samples/global-with-child-combinator/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/global-with-unused-descendant/_actual.css b/packages/svelte/test/css/samples/global-with-unused-descendant/_actual.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/svelte/test/css/samples/global/_actual.css b/packages/svelte/test/css/samples/global/_actual.css
new file mode 100644
index 000000000..8a38dbada
--- /dev/null
+++ b/packages/svelte/test/css/samples/global/_actual.css
@@ -0,0 +1 @@
+div{color:red}div.foo.svelte-1v5yi8z{color:blue}div.foo{color:pink}.foo{font-weight:bold}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/host/_actual.css b/packages/svelte/test/css/samples/host/_actual.css
new file mode 100644
index 000000000..9f35ce4b7
--- /dev/null
+++ b/packages/svelte/test/css/samples/host/_actual.css
@@ -0,0 +1 @@
+:host h1.svelte-sdhllc{color:red}:host>h1.svelte-sdhllc{color:red}:host>.svelte-sdhllc{color:red}:host span.svelte-sdhllc{color:red}:host{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/keyframes-autoprefixed/_actual.css b/packages/svelte/test/css/samples/keyframes-autoprefixed/_actual.css
new file mode 100644
index 000000000..601f4c2b0
--- /dev/null
+++ b/packages/svelte/test/css/samples/keyframes-autoprefixed/_actual.css
@@ -0,0 +1 @@
+@keyframes svelte-1hocwnw-why{0%{color:red}100%{color:blue}}@-webkit-keyframes svelte-1hocwnw-why{0%{color:red}100%{color:blue}}@-moz-keyframes svelte-1hocwnw-why{0%{color:red}100%{color:blue}}@-o-keyframes svelte-1hocwnw-why{0%{color:red}100%{color:blue}}.animated.svelte-1hocwnw{-webkit-animation:svelte-1hocwnw-why 2s;animation:svelte-1hocwnw-why 2s}.also-animated.svelte-1hocwnw{-webkit-animation:not-defined-here 2s;animation:not-defined-here 2s}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/keyframes-from-to/_actual.css b/packages/svelte/test/css/samples/keyframes-from-to/_actual.css
new file mode 100644
index 000000000..f10275a13
--- /dev/null
+++ b/packages/svelte/test/css/samples/keyframes-from-to/_actual.css
@@ -0,0 +1 @@
+@keyframes svelte-1jlcdh5-why{from{color:red}to{color:blue}}.animated.svelte-1jlcdh5{animation:svelte-1jlcdh5-why 2s}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/keyframes/_actual.css b/packages/svelte/test/css/samples/keyframes/_actual.css
new file mode 100644
index 000000000..7e792457c
--- /dev/null
+++ b/packages/svelte/test/css/samples/keyframes/_actual.css
@@ -0,0 +1 @@
+@keyframes svelte-3awyh0-why{0%{color:red}100%{color:blue}}.animated.svelte-3awyh0{animation:svelte-3awyh0-why 2s}.also-animated.svelte-3awyh0{animation:not-defined-here 2s}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/local-inside-global/_actual.css b/packages/svelte/test/css/samples/local-inside-global/_actual.css
new file mode 100644
index 000000000..28a84c28e
--- /dev/null
+++ b/packages/svelte/test/css/samples/local-inside-global/_actual.css
@@ -0,0 +1 @@
+div .foo.svelte-1bokjbm{color:red}div>.foo.svelte-1bokjbm{font-weight:bold}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/media-query-word/_actual.css b/packages/svelte/test/css/samples/media-query-word/_actual.css
new file mode 100644
index 000000000..8e8728790
--- /dev/null
+++ b/packages/svelte/test/css/samples/media-query-word/_actual.css
@@ -0,0 +1 @@
+@media only screen and (min-width: 400px){div.svelte-1e723i3{color:red}}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/media-query/_actual.css b/packages/svelte/test/css/samples/media-query/_actual.css
new file mode 100644
index 000000000..eddfeb987
--- /dev/null
+++ b/packages/svelte/test/css/samples/media-query/_actual.css
@@ -0,0 +1 @@
+@media(min-width: 400px){.large-screen.svelte-ut97bv{display:block}}@media(min-width: calc(400px + 1px)){.large-screen.svelte-ut97bv{display:block}}@media(width >= 600px){.large-screen.svelte-ut97bv{display:block}}@media(400px <= width <= 1000px){.large-screen.svelte-ut97bv{display:block}}@media(width < clamp(200px, 40%, 400px)){.large-screen.svelte-ut97bv{display:block}}@media(calc(400px + 1px) <= width <= calc(1000px + 1px)){.large-screen.svelte-ut97bv{display:block}}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/nested/_actual.css b/packages/svelte/test/css/samples/nested/_actual.css
new file mode 100644
index 000000000..b0715d8a2
--- /dev/null
+++ b/packages/svelte/test/css/samples/nested/_actual.css
@@ -0,0 +1 @@
+.foo.svelte-vn5l63{color:red}.bar.svelte-vn5l63{font-style:italic}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/nested/_actual.html b/packages/svelte/test/css/samples/nested/_actual.html
new file mode 100644
index 000000000..a8de1d1d6
--- /dev/null
+++ b/packages/svelte/test/css/samples/nested/_actual.html
@@ -0,0 +1 @@
+textx
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/not-selector/_actual.css b/packages/svelte/test/css/samples/not-selector/_actual.css
new file mode 100644
index 000000000..9344fa427
--- /dev/null
+++ b/packages/svelte/test/css/samples/not-selector/_actual.css
@@ -0,0 +1 @@
+.svelte-1q1gm38:not(.foo){color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-contains/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-contains/_actual.css
new file mode 100644
index 000000000..4a7ae7ddc
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-contains/_actual.css
@@ -0,0 +1 @@
+[data-foo*='bar'].svelte-pmkpyh{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-contains/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-contains/_actual.html
new file mode 100644
index 000000000..4e54ae907
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-contains/_actual.html
@@ -0,0 +1 @@
+
this is styled
this is unstyled
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals-case-insensitive/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals-case-insensitive/_actual.css
new file mode 100644
index 000000000..de4d7ffb0
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals-case-insensitive/_actual.css
@@ -0,0 +1 @@
+[data-foo='bar' i].svelte-t0qk0q{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals-case-insensitive/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals-case-insensitive/_actual.html
new file mode 100644
index 000000000..3695463e1
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals-case-insensitive/_actual.html
@@ -0,0 +1 @@
+
this is styled
this is unstyled
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals-dynamic/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals-dynamic/_actual.css
new file mode 100644
index 000000000..71f953d95
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals-dynamic/_actual.css
@@ -0,0 +1 @@
+[data-foo='bar'].svelte-10ipr5b{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals-dynamic/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals-dynamic/_actual.html
new file mode 100644
index 000000000..cacde03c9
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals-dynamic/_actual.html
@@ -0,0 +1 @@
+
this is styled
this is unstyled
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals/_actual.css
new file mode 100644
index 000000000..71f953d95
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals/_actual.css
@@ -0,0 +1 @@
+[data-foo='bar'].svelte-10ipr5b{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals/_actual.html
new file mode 100644
index 000000000..3ac6d21dc
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-equals/_actual.html
@@ -0,0 +1 @@
+
this is styled
this is unstyled
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-pipe-equals/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-pipe-equals/_actual.css
new file mode 100644
index 000000000..3f23bab97
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-pipe-equals/_actual.css
@@ -0,0 +1 @@
+[data-foo|='bar'].svelte-1t0xbsf{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-pipe-equals/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-pipe-equals/_actual.html
new file mode 100644
index 000000000..541bc1e84
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-pipe-equals/_actual.html
@@ -0,0 +1 @@
+
this is styled
this is styled
this is unstyled
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-prefix/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-prefix/_actual.css
new file mode 100644
index 000000000..5ad6bff36
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-prefix/_actual.css
@@ -0,0 +1 @@
+[data-foo^='bar'].svelte-7w0vr9{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-prefix/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-prefix/_actual.html
new file mode 100644
index 000000000..66e7e8073
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-prefix/_actual.html
@@ -0,0 +1 @@
+
this is styled
this is unstyled
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-suffix/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-suffix/_actual.css
new file mode 100644
index 000000000..b312baf7e
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-suffix/_actual.css
@@ -0,0 +1 @@
+[data-foo$='bar'].svelte-1ftuxev{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-suffix/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-suffix/_actual.html
new file mode 100644
index 000000000..233f748e0
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-suffix/_actual.html
@@ -0,0 +1 @@
+
this is unstyled
this is styled
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-word-equals/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-word-equals/_actual.css
new file mode 100644
index 000000000..2600783f8
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-word-equals/_actual.css
@@ -0,0 +1 @@
+[data-foo~='bar'].svelte-1pb4pb9{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-word-equals/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-word-equals/_actual.html
new file mode 100644
index 000000000..95ca3451c
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector-word-equals/_actual.html
@@ -0,0 +1 @@
+
this is styled
this is unstyled
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector/_actual.css
new file mode 100644
index 000000000..7101b03cb
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector/_actual.css
@@ -0,0 +1 @@
+[autoplay].svelte-da5mkx{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector/_actual.html
new file mode 100644
index 000000000..7e9b8678c
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-attribute-selector/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-class-dynamic/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-class-dynamic/_actual.css
new file mode 100644
index 000000000..92580c249
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-class-dynamic/_actual.css
@@ -0,0 +1 @@
+.foo.svelte-sg04hs{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-class-dynamic/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-class-dynamic/_actual.html
new file mode 100644
index 000000000..a4d7aa15e
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-class-dynamic/_actual.html
@@ -0,0 +1 @@
+
this is styled
this is unstyled
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-class-static/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-class-static/_actual.css
new file mode 100644
index 000000000..92580c249
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-class-static/_actual.css
@@ -0,0 +1 @@
+.foo.svelte-sg04hs{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-class-static/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-class-static/_actual.html
new file mode 100644
index 000000000..8080653ae
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-class-static/_actual.html
@@ -0,0 +1 @@
+
this is styled
this is unstyled
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner-class/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner-class/_actual.css
new file mode 100644
index 000000000..6642b22a6
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner-class/_actual.css
@@ -0,0 +1 @@
+.foo.svelte-fazssr .bar{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner-class/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner-class/_actual.html
new file mode 100644
index 000000000..b7c093269
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner-class/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner-multiple/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner-multiple/_actual.css
new file mode 100644
index 000000000..59b245f18
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner-multiple/_actual.css
@@ -0,0 +1 @@
+div.svelte-16twcr3>p>em{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner-multiple/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner-multiple/_actual.html
new file mode 100644
index 000000000..1617bd949
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner-multiple/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner/_actual.css
new file mode 100644
index 000000000..0fc195bbd
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner/_actual.css
@@ -0,0 +1 @@
+div.svelte-7m23o5>p{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner/_actual.html
new file mode 100644
index 000000000..dbf9f040c
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-inner/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-outer-multiple/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-outer-multiple/_actual.css
new file mode 100644
index 000000000..2247c27f5
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-outer-multiple/_actual.css
@@ -0,0 +1 @@
+div>section>p.svelte-1vu6226{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-outer-multiple/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-outer-multiple/_actual.html
new file mode 100644
index 000000000..7828a34a6
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-outer-multiple/_actual.html
@@ -0,0 +1 @@
+
this may or may not be styled
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-outer/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-outer/_actual.css
new file mode 100644
index 000000000..35842089b
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-outer/_actual.css
@@ -0,0 +1 @@
+div>p.svelte-1wxg27t{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-outer/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-outer/_actual.html
new file mode 100644
index 000000000..4cb8f3d32
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant-global-outer/_actual.html
@@ -0,0 +1 @@
+
this may or may not be styled
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-descendant/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant/_actual.css
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-descendant/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant/_actual.html
new file mode 100644
index 000000000..c3cd49d71
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-descendant/_actual.html
@@ -0,0 +1 @@
+
this is not styled
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-global-children/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-global-children/_actual.css
new file mode 100644
index 000000000..5d6de2893
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-global-children/_actual.css
@@ -0,0 +1 @@
+.root.svelte-1rmr3v4 p{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-global-children/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-global-children/_actual.html
new file mode 100644
index 000000000..06c8ef74f
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-global-children/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-global-descendants/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-global-descendants/_actual.css
new file mode 100644
index 000000000..f6fa59e86
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-global-descendants/_actual.css
@@ -0,0 +1 @@
+html body .root.svelte-1fk9dmz p.svelte-1fk9dmz{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-global-descendants/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-global-descendants/_actual.html
new file mode 100644
index 000000000..0050f1b67
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-global-descendants/_actual.html
@@ -0,0 +1 @@
+
hello
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-global/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-global/_actual.css
new file mode 100644
index 000000000..6a9013fcc
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-global/_actual.css
@@ -0,0 +1 @@
+div{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-global/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-global/_actual.html
new file mode 100644
index 000000000..281c6866c
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-global/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-id/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-id/_actual.css
new file mode 100644
index 000000000..d7c93520d
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-id/_actual.css
@@ -0,0 +1 @@
+#foo.svelte-sg0d3d{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-id/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-id/_actual.html
new file mode 100644
index 000000000..05c3749b4
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-id/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-multiple-descendants/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-multiple-descendants/_actual.css
new file mode 100644
index 000000000..0d7c4673f
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-multiple-descendants/_actual.css
@@ -0,0 +1 @@
+.root.svelte-18fdw5y p.svelte-18fdw5y{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-multiple-descendants/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-multiple-descendants/_actual.html
new file mode 100644
index 000000000..4e4fae15b
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-multiple-descendants/_actual.html
@@ -0,0 +1 @@
+
hello
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-whitespace-multiple/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-whitespace-multiple/_actual.css
new file mode 100644
index 000000000..6dcf10f3f
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-whitespace-multiple/_actual.css
@@ -0,0 +1 @@
+div.svelte-fddoqg section p.svelte-fddoqg{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-whitespace-multiple/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-whitespace-multiple/_actual.html
new file mode 100644
index 000000000..c5d538236
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-whitespace-multiple/_actual.html
@@ -0,0 +1 @@
+
this is styled
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-whitespace/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute-whitespace/_actual.css
new file mode 100644
index 000000000..c83fade0d
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-whitespace/_actual.css
@@ -0,0 +1 @@
+div.svelte-5619x1 p.svelte-5619x1{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute-whitespace/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute-whitespace/_actual.html
new file mode 100644
index 000000000..786ddb650
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute-whitespace/_actual.html
@@ -0,0 +1 @@
+
this is styled
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute/_actual.css b/packages/svelte/test/css/samples/omit-scoping-attribute/_actual.css
new file mode 100644
index 000000000..ffef754aa
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute/_actual.css
@@ -0,0 +1 @@
+p.svelte-1a7i8ec{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/omit-scoping-attribute/_actual.html b/packages/svelte/test/css/samples/omit-scoping-attribute/_actual.html
new file mode 100644
index 000000000..b07dc2876
--- /dev/null
+++ b/packages/svelte/test/css/samples/omit-scoping-attribute/_actual.html
@@ -0,0 +1 @@
+
this is styled
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/preserve-specificity/_actual.css b/packages/svelte/test/css/samples/preserve-specificity/_actual.css
new file mode 100644
index 000000000..961bf92fa
--- /dev/null
+++ b/packages/svelte/test/css/samples/preserve-specificity/_actual.css
@@ -0,0 +1 @@
+a.svelte-1ugai9y b c span.svelte-1ugai9y{color:red;font-size:2em;font-family:'Comic Sans MS'}.foo.svelte-1ugai9y.svelte-1ugai9y{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/preserve-specificity/_actual.html b/packages/svelte/test/css/samples/preserve-specificity/_actual.html
new file mode 100644
index 000000000..ee4b6d3e2
--- /dev/null
+++ b/packages/svelte/test/css/samples/preserve-specificity/_actual.html
@@ -0,0 +1 @@
+Big red Comic SansBig red Comic Sans
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/pseudo-element/_actual.css b/packages/svelte/test/css/samples/pseudo-element/_actual.css
new file mode 100644
index 000000000..5a523ddc8
--- /dev/null
+++ b/packages/svelte/test/css/samples/pseudo-element/_actual.css
@@ -0,0 +1 @@
+span.svelte-1q2p1u3::after{content:'i am a pseudo-element'}span.svelte-1q2p1u3:first-child{color:red}span.svelte-1q2p1u3:last-child::after{color:blue}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/root/_actual.css b/packages/svelte/test/css/samples/root/_actual.css
new file mode 100644
index 000000000..ce35d8835
--- /dev/null
+++ b/packages/svelte/test/css/samples/root/_actual.css
@@ -0,0 +1 @@
+:root{color:red}.foo:root{color:blue}:root.foo{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/root/_actual.html b/packages/svelte/test/css/samples/root/_actual.html
new file mode 100644
index 000000000..1d90ab5df
--- /dev/null
+++ b/packages/svelte/test/css/samples/root/_actual.html
@@ -0,0 +1 @@
+
Hello!
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-await-not-exhaustive/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-await-not-exhaustive/_actual.css
new file mode 100644
index 000000000..a163a1756
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-await-not-exhaustive/_actual.css
@@ -0,0 +1 @@
+.a.svelte-189d5st+.b.svelte-189d5st.svelte-189d5st.svelte-189d5st{color:green}.a.svelte-189d5st+.c.svelte-189d5st.svelte-189d5st.svelte-189d5st{color:green}.a.svelte-189d5st+.d.svelte-189d5st.svelte-189d5st.svelte-189d5st{color:green}.a.svelte-189d5st+.e.svelte-189d5st.svelte-189d5st.svelte-189d5st{color:green}.a.svelte-189d5st+.f.svelte-189d5st.svelte-189d5st.svelte-189d5st{color:green}.a.svelte-189d5st+.g.svelte-189d5st.svelte-189d5st.svelte-189d5st{color:green}.a.svelte-189d5st+.h.svelte-189d5st.svelte-189d5st.svelte-189d5st{color:green}.b.svelte-189d5st+.d.svelte-189d5st.svelte-189d5st.svelte-189d5st{color:green}.c.svelte-189d5st+.d.svelte-189d5st.svelte-189d5st.svelte-189d5st{color:green}.b.svelte-189d5st+.e.svelte-189d5st+.f.svelte-189d5st+.h.svelte-189d5st{color:green}.b.svelte-189d5st+.d.svelte-189d5st+.h.svelte-189d5st.svelte-189d5st{color:green}.c.svelte-189d5st+.g.svelte-189d5st.svelte-189d5st.svelte-189d5st{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-await-not-exhaustive/_actual.html b/packages/svelte/test/css/samples/siblings-combinator-await-not-exhaustive/_actual.html
new file mode 100644
index 000000000..c73df77fc
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-await-not-exhaustive/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-await/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-await/_actual.css
new file mode 100644
index 000000000..6f475561b
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-await/_actual.css
@@ -0,0 +1 @@
+.a.svelte-1hpfgbi+.b.svelte-1hpfgbi{color:green}.a.svelte-1hpfgbi+.c.svelte-1hpfgbi{color:green}.a.svelte-1hpfgbi+.d.svelte-1hpfgbi{color:green}.b.svelte-1hpfgbi+.e.svelte-1hpfgbi{color:green}.c.svelte-1hpfgbi+.e.svelte-1hpfgbi{color:green}.d.svelte-1hpfgbi+.e.svelte-1hpfgbi{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-await/_actual.html b/packages/svelte/test/css/samples/siblings-combinator-await/_actual.html
new file mode 100644
index 000000000..839e1a5bb
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-await/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-each-2/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-each-2/_actual.css
new file mode 100644
index 000000000..381e05bf5
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-each-2/_actual.css
@@ -0,0 +1 @@
+.a.svelte-y8v3zt+.b.svelte-y8v3zt{color:green}.c.svelte-y8v3zt+.d.svelte-y8v3zt{color:green}.a.svelte-y8v3zt+.d.svelte-y8v3zt{color:green}.c.svelte-y8v3zt+.b.svelte-y8v3zt{color:green}.b.svelte-y8v3zt+.c.svelte-y8v3zt{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-each-2/_actual.html b/packages/svelte/test/css/samples/siblings-combinator-each-2/_actual.html
new file mode 100644
index 000000000..91856f272
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-each-2/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-each-else-nested/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-each-else-nested/_actual.css
new file mode 100644
index 000000000..b7b289044
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-each-else-nested/_actual.css
@@ -0,0 +1 @@
+.a.svelte-17e5nfr+.e.svelte-17e5nfr.svelte-17e5nfr{color:green}.a.svelte-17e5nfr+.f.svelte-17e5nfr.svelte-17e5nfr{color:green}.b.svelte-17e5nfr+.c.svelte-17e5nfr.svelte-17e5nfr{color:green}.b.svelte-17e5nfr+.d.svelte-17e5nfr.svelte-17e5nfr{color:green}.c.svelte-17e5nfr+.e.svelte-17e5nfr.svelte-17e5nfr{color:green}.c.svelte-17e5nfr+.f.svelte-17e5nfr.svelte-17e5nfr{color:green}.d.svelte-17e5nfr+.e.svelte-17e5nfr.svelte-17e5nfr{color:green}.d.svelte-17e5nfr+.f.svelte-17e5nfr.svelte-17e5nfr{color:green}.e.svelte-17e5nfr+.e.svelte-17e5nfr.svelte-17e5nfr{color:green}.i.svelte-17e5nfr+.j.svelte-17e5nfr.svelte-17e5nfr{color:green}.g.svelte-17e5nfr+.h.svelte-17e5nfr+.j.svelte-17e5nfr{color:green}.g.svelte-17e5nfr+.i.svelte-17e5nfr+.j.svelte-17e5nfr{color:green}.m.svelte-17e5nfr+.m.svelte-17e5nfr.svelte-17e5nfr{color:green}.m.svelte-17e5nfr+.l.svelte-17e5nfr.svelte-17e5nfr{color:green}.l.svelte-17e5nfr+.m.svelte-17e5nfr.svelte-17e5nfr{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-each-else-nested/_actual.html b/packages/svelte/test/css/samples/siblings-combinator-each-else-nested/_actual.html
new file mode 100644
index 000000000..fbce9713d
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-each-else-nested/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-each-else/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-each-else/_actual.css
new file mode 100644
index 000000000..39a55fd8b
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-each-else/_actual.css
@@ -0,0 +1 @@
+.a.svelte-p9bt6f+.b.svelte-p9bt6f{color:green}.a.svelte-p9bt6f+.c.svelte-p9bt6f{color:green}.b.svelte-p9bt6f+.d.svelte-p9bt6f{color:green}.c.svelte-p9bt6f+.d.svelte-p9bt6f{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-each-else/_actual.html b/packages/svelte/test/css/samples/siblings-combinator-each-else/_actual.html
new file mode 100644
index 000000000..1580ac441
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-each-else/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-each-nested/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-each-nested/_actual.css
new file mode 100644
index 000000000..464340ef4
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-each-nested/_actual.css
@@ -0,0 +1 @@
+.a.svelte-1henwcf+.d.svelte-1henwcf.svelte-1henwcf{color:green}.a.svelte-1henwcf+.e.svelte-1henwcf.svelte-1henwcf{color:green}.a.svelte-1henwcf+.f.svelte-1henwcf.svelte-1henwcf{color:green}.a.svelte-1henwcf+.g.svelte-1henwcf.svelte-1henwcf{color:green}.c.svelte-1henwcf+.d.svelte-1henwcf.svelte-1henwcf{color:green}.c.svelte-1henwcf+.e.svelte-1henwcf.svelte-1henwcf{color:green}.c.svelte-1henwcf+.f.svelte-1henwcf.svelte-1henwcf{color:green}.c.svelte-1henwcf+.g.svelte-1henwcf.svelte-1henwcf{color:green}.j.svelte-1henwcf+.m.svelte-1henwcf.svelte-1henwcf{color:green}.j.svelte-1henwcf+.n.svelte-1henwcf.svelte-1henwcf{color:green}.j.svelte-1henwcf+.o.svelte-1henwcf.svelte-1henwcf{color:green}.k.svelte-1henwcf+.m.svelte-1henwcf.svelte-1henwcf{color:green}.k.svelte-1henwcf+.n.svelte-1henwcf.svelte-1henwcf{color:green}.k.svelte-1henwcf+.o.svelte-1henwcf.svelte-1henwcf{color:green}.l.svelte-1henwcf+.m.svelte-1henwcf.svelte-1henwcf{color:green}.l.svelte-1henwcf+.n.svelte-1henwcf.svelte-1henwcf{color:green}.l.svelte-1henwcf+.o.svelte-1henwcf.svelte-1henwcf{color:green}.d.svelte-1henwcf+.e.svelte-1henwcf.svelte-1henwcf{color:green}.e.svelte-1henwcf+.f.svelte-1henwcf.svelte-1henwcf{color:green}.g.svelte-1henwcf+.h.svelte-1henwcf.svelte-1henwcf{color:green}.f.svelte-1henwcf+.d.svelte-1henwcf.svelte-1henwcf{color:green}.f.svelte-1henwcf+.e.svelte-1henwcf.svelte-1henwcf{color:green}.f.svelte-1henwcf+.f.svelte-1henwcf.svelte-1henwcf{color:green}.h.svelte-1henwcf+.g.svelte-1henwcf.svelte-1henwcf{color:green}.i.svelte-1henwcf+.h.svelte-1henwcf.svelte-1henwcf{color:green}.i.svelte-1henwcf+.g.svelte-1henwcf.svelte-1henwcf{color:green}.d.svelte-1henwcf+.d.svelte-1henwcf.svelte-1henwcf{color:green}.e.svelte-1henwcf+.e.svelte-1henwcf.svelte-1henwcf{color:green}.f.svelte-1henwcf+.f.svelte-1henwcf.svelte-1henwcf{color:green}.g.svelte-1henwcf+.g.svelte-1henwcf.svelte-1henwcf{color:green}.h.svelte-1henwcf+.h.svelte-1henwcf.svelte-1henwcf{color:green}.i.svelte-1henwcf+.i.svelte-1henwcf.svelte-1henwcf{color:green}.e.svelte-1henwcf+.e.svelte-1henwcf+.f.svelte-1henwcf{color:green}.e.svelte-1henwcf+.e.svelte-1henwcf+.d.svelte-1henwcf{color:green}.h.svelte-1henwcf+.h.svelte-1henwcf+.i.svelte-1henwcf{color:green}.h.svelte-1henwcf+.h.svelte-1henwcf+.g.svelte-1henwcf{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-each-nested/_actual.html b/packages/svelte/test/css/samples/siblings-combinator-each-nested/_actual.html
new file mode 100644
index 000000000..dc44ba8e7
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-each-nested/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-each/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-each/_actual.css
new file mode 100644
index 000000000..3a78ee959
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-each/_actual.css
@@ -0,0 +1 @@
+div.svelte-147jcfw+span.svelte-147jcfw{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-each/_actual.html b/packages/svelte/test/css/samples/siblings-combinator-each/_actual.html
new file mode 100644
index 000000000..b577aca24
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-each/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-former-element-in-slot/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-former-element-in-slot/_actual.css
new file mode 100644
index 000000000..baacd7783
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-former-element-in-slot/_actual.css
@@ -0,0 +1 @@
+h1.svelte-142nm4m+span.svelte-142nm4m{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-global/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-global/_actual.css
new file mode 100644
index 000000000..20bbcd151
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-global/_actual.css
@@ -0,0 +1 @@
+input+div.svelte-cph4yt{color:red}input~div.svelte-cph4yt{color:red}input+h1.svelte-cph4yt{color:red}input~h1.svelte-cph4yt{color:red}input+p.svelte-cph4yt{color:red}input~p.svelte-cph4yt{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-if-not-exhaustive-with-each/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-if-not-exhaustive-with-each/_actual.css
new file mode 100644
index 000000000..7f808360f
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-if-not-exhaustive-with-each/_actual.css
@@ -0,0 +1 @@
+.a.svelte-184w0n+.b.svelte-184w0n.svelte-184w0n.svelte-184w0n{color:green}.a.svelte-184w0n+.c.svelte-184w0n.svelte-184w0n.svelte-184w0n{color:green}.a.svelte-184w0n+.d.svelte-184w0n.svelte-184w0n.svelte-184w0n{color:green}.b.svelte-184w0n+.d.svelte-184w0n.svelte-184w0n.svelte-184w0n{color:green}.c.svelte-184w0n+.d.svelte-184w0n.svelte-184w0n.svelte-184w0n{color:green}.a.svelte-184w0n+.c.svelte-184w0n+.c.svelte-184w0n.svelte-184w0n{color:green}.c.svelte-184w0n+.c.svelte-184w0n+.d.svelte-184w0n.svelte-184w0n{color:green}.a.svelte-184w0n+.c.svelte-184w0n+.c.svelte-184w0n+.d.svelte-184w0n{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-if-not-exhaustive-with-each/_actual.html b/packages/svelte/test/css/samples/siblings-combinator-if-not-exhaustive-with-each/_actual.html
new file mode 100644
index 000000000..510c2a675
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-if-not-exhaustive-with-each/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-if-not-exhaustive/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-if-not-exhaustive/_actual.css
new file mode 100644
index 000000000..31f92a48b
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-if-not-exhaustive/_actual.css
@@ -0,0 +1 @@
+.a.svelte-myzmfc+.b.svelte-myzmfc{color:green}.a.svelte-myzmfc+.c.svelte-myzmfc{color:green}.a.svelte-myzmfc+.d.svelte-myzmfc{color:green}.b.svelte-myzmfc+.d.svelte-myzmfc{color:green}.c.svelte-myzmfc+.d.svelte-myzmfc{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-if-not-exhaustive/_actual.html b/packages/svelte/test/css/samples/siblings-combinator-if-not-exhaustive/_actual.html
new file mode 100644
index 000000000..da0d8a627
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-if-not-exhaustive/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-if/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-if/_actual.css
new file mode 100644
index 000000000..6337bbfa4
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-if/_actual.css
@@ -0,0 +1 @@
+.a.svelte-tfophw+.b.svelte-tfophw{color:green}.a.svelte-tfophw+.c.svelte-tfophw{color:green}.a.svelte-tfophw+.d.svelte-tfophw{color:green}.b.svelte-tfophw+.e.svelte-tfophw{color:green}.c.svelte-tfophw+.e.svelte-tfophw{color:green}.d.svelte-tfophw+.e.svelte-tfophw{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-if/_actual.html b/packages/svelte/test/css/samples/siblings-combinator-if/_actual.html
new file mode 100644
index 000000000..c0fe44263
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-if/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-nested-slots-flattened/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-nested-slots-flattened/_actual.css
new file mode 100644
index 000000000..baacd7783
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-nested-slots-flattened/_actual.css
@@ -0,0 +1 @@
+h1.svelte-142nm4m+span.svelte-142nm4m{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-nested-slots/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-nested-slots/_actual.css
new file mode 100644
index 000000000..baacd7783
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-nested-slots/_actual.css
@@ -0,0 +1 @@
+h1.svelte-142nm4m+span.svelte-142nm4m{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-selects-slot-fallback/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-selects-slot-fallback/_actual.css
new file mode 100644
index 000000000..baacd7783
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-selects-slot-fallback/_actual.css
@@ -0,0 +1 @@
+h1.svelte-142nm4m+span.svelte-142nm4m{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-slot/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-slot/_actual.css
new file mode 100644
index 000000000..208859722
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-slot/_actual.css
@@ -0,0 +1 @@
+.d.svelte-1u6ytwn+.e.svelte-1u6ytwn{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-slots-between/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-slots-between/_actual.css
new file mode 100644
index 000000000..baacd7783
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-slots-between/_actual.css
@@ -0,0 +1 @@
+h1.svelte-142nm4m+span.svelte-142nm4m{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-star/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-star/_actual.css
new file mode 100644
index 000000000..9d9ee9a8d
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-star/_actual.css
@@ -0,0 +1 @@
+.match.svelte-uetho3>.svelte-uetho3+.svelte-uetho3{margin-left:4px}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-star/_actual.html b/packages/svelte/test/css/samples/siblings-combinator-star/_actual.html
new file mode 100644
index 000000000..8413691e1
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-star/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-with-spread/_actual.css b/packages/svelte/test/css/samples/siblings-combinator-with-spread/_actual.css
new file mode 100644
index 000000000..8ed3c96c8
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-with-spread/_actual.css
@@ -0,0 +1 @@
+input.svelte-n3uz0i:focus+div.svelte-n3uz0i{color:red}input.svelte-n3uz0i:focus~div.svelte-n3uz0i{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator-with-spread/_actual.html b/packages/svelte/test/css/samples/siblings-combinator-with-spread/_actual.html
new file mode 100644
index 000000000..b1b2823d7
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator-with-spread/_actual.html
@@ -0,0 +1 @@
+
Should be red, when input is focused
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator/_actual.css b/packages/svelte/test/css/samples/siblings-combinator/_actual.css
new file mode 100644
index 000000000..88dd78e74
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator/_actual.css
@@ -0,0 +1 @@
+div.svelte-1uqoncx+article.svelte-1uqoncx.svelte-1uqoncx{color:green}span.svelte-1uqoncx+b.svelte-1uqoncx.svelte-1uqoncx{color:green}div.svelte-1uqoncx span.svelte-1uqoncx+b.svelte-1uqoncx{color:green}.a.svelte-1uqoncx+article.svelte-1uqoncx.svelte-1uqoncx{color:green}div.svelte-1uqoncx+.b.svelte-1uqoncx.svelte-1uqoncx{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/siblings-combinator/_actual.html b/packages/svelte/test/css/samples/siblings-combinator/_actual.html
new file mode 100644
index 000000000..02569f1e1
--- /dev/null
+++ b/packages/svelte/test/css/samples/siblings-combinator/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/spread/_actual.css b/packages/svelte/test/css/samples/spread/_actual.css
new file mode 100644
index 000000000..b224df0ae
--- /dev/null
+++ b/packages/svelte/test/css/samples/spread/_actual.css
@@ -0,0 +1 @@
+.foo.svelte-c15suh{color:red;font-size:2em;font-family:'Comic Sans MS'}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/supports-charset/_actual.css b/packages/svelte/test/css/samples/supports-charset/_actual.css
new file mode 100644
index 000000000..55cfd4ea2
--- /dev/null
+++ b/packages/svelte/test/css/samples/supports-charset/_actual.css
@@ -0,0 +1 @@
+@charset "utf-8";
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/supports-font-face/_actual.css b/packages/svelte/test/css/samples/supports-font-face/_actual.css
new file mode 100644
index 000000000..652ecb1dc
--- /dev/null
+++ b/packages/svelte/test/css/samples/supports-font-face/_actual.css
@@ -0,0 +1 @@
+@font-face{font-family:MyHelvetica;src:local('Helvetica Neue Bold'), local('HelveticaNeue-Bold'), url(MgOpenModernaBold.ttf);font-weight:bold}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/supports-import/_actual.css b/packages/svelte/test/css/samples/supports-import/_actual.css
new file mode 100644
index 000000000..485d9d272
--- /dev/null
+++ b/packages/svelte/test/css/samples/supports-import/_actual.css
@@ -0,0 +1 @@
+@import 'custom.css';@import "common.css" screen;@import url(chrome://communicator/skin/);@import url(fineprint.css) print;@import url(landscape.css) screen and (orientation:landscape);@import url(red.css) (min-width:400px);
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/supports-namespace/_actual.css b/packages/svelte/test/css/samples/supports-namespace/_actual.css
new file mode 100644
index 000000000..7ca9f4f23
--- /dev/null
+++ b/packages/svelte/test/css/samples/supports-namespace/_actual.css
@@ -0,0 +1 @@
+@namespace url(http://www.w3.org/1999/xhtml);@namespace svg url(http://www.w3.org/2000/svg);a{color:blue}svg|a{color:green}*|a{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/supports-nested-page/_actual.css b/packages/svelte/test/css/samples/supports-nested-page/_actual.css
new file mode 100644
index 000000000..d526b5798
--- /dev/null
+++ b/packages/svelte/test/css/samples/supports-nested-page/_actual.css
@@ -0,0 +1 @@
+@page vertical{size:A4 portrait;@top-center{content:"Vertical"}}@page :right{@top-center{content:"Preliminary edition"}@bottom-center{content:counter(page)}}@page :first{color:green;font-size:20pt;@top-left{content:"foo";color:blue}@top-right{content:"bar"}}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/supports-page/_actual.css b/packages/svelte/test/css/samples/supports-page/_actual.css
new file mode 100644
index 000000000..6978c3ece
--- /dev/null
+++ b/packages/svelte/test/css/samples/supports-page/_actual.css
@@ -0,0 +1 @@
+@page{margin:1cm;size:A4;bleed:7pt}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/supports-query/_actual.css b/packages/svelte/test/css/samples/supports-query/_actual.css
new file mode 100644
index 000000000..f6cef0fbd
--- /dev/null
+++ b/packages/svelte/test/css/samples/supports-query/_actual.css
@@ -0,0 +1 @@
+@supports (display: grid){.maybe-grid.svelte-fdlmet{display:grid}}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/undefined-with-scope/_actual.css b/packages/svelte/test/css/samples/undefined-with-scope/_actual.css
new file mode 100644
index 000000000..1d88c0ce4
--- /dev/null
+++ b/packages/svelte/test/css/samples/undefined-with-scope/_actual.css
@@ -0,0 +1 @@
+p.svelte-14l9336{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/undefined-with-scope/_actual.html b/packages/svelte/test/css/samples/undefined-with-scope/_actual.html
new file mode 100644
index 000000000..ed6905c1f
--- /dev/null
+++ b/packages/svelte/test/css/samples/undefined-with-scope/_actual.html
@@ -0,0 +1 @@
+
Foo
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/universal-selector/_actual.css b/packages/svelte/test/css/samples/universal-selector/_actual.css
new file mode 100644
index 000000000..a296e2b4f
--- /dev/null
+++ b/packages/svelte/test/css/samples/universal-selector/_actual.css
@@ -0,0 +1 @@
+.svelte-1a7hglu{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/unknown-at-rule-with-following-rules/_actual.css b/packages/svelte/test/css/samples/unknown-at-rule-with-following-rules/_actual.css
new file mode 100644
index 000000000..16f71dc25
--- /dev/null
+++ b/packages/svelte/test/css/samples/unknown-at-rule-with-following-rules/_actual.css
@@ -0,0 +1 @@
+div.svelte-tq5j3b{@apply --funky-div;}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/unknown-at-rule/_actual.css b/packages/svelte/test/css/samples/unknown-at-rule/_actual.css
new file mode 100644
index 000000000..f426d6eba
--- /dev/null
+++ b/packages/svelte/test/css/samples/unknown-at-rule/_actual.css
@@ -0,0 +1 @@
+div.svelte-js31hw{@apply --funky-div;}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/unused-selector-child-combinator/_actual.css b/packages/svelte/test/css/samples/unused-selector-child-combinator/_actual.css
new file mode 100644
index 000000000..9d28a122a
--- /dev/null
+++ b/packages/svelte/test/css/samples/unused-selector-child-combinator/_actual.css
@@ -0,0 +1 @@
+div.svelte-1sutz8c>.svelte-1sutz8c{color:orange}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/unused-selector-empty-attribute/_actual.css b/packages/svelte/test/css/samples/unused-selector-empty-attribute/_actual.css
new file mode 100644
index 000000000..b66947853
--- /dev/null
+++ b/packages/svelte/test/css/samples/unused-selector-empty-attribute/_actual.css
@@ -0,0 +1 @@
+img[alt].svelte-1stpad6{border:1px solid green}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/unused-selector-empty-attribute/_actual.html b/packages/svelte/test/css/samples/unused-selector-empty-attribute/_actual.html
new file mode 100644
index 000000000..3b11e20c1
--- /dev/null
+++ b/packages/svelte/test/css/samples/unused-selector-empty-attribute/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/unused-selector-leading/_actual.css b/packages/svelte/test/css/samples/unused-selector-leading/_actual.css
new file mode 100644
index 000000000..afcbd98cc
--- /dev/null
+++ b/packages/svelte/test/css/samples/unused-selector-leading/_actual.css
@@ -0,0 +1 @@
+.bar.svelte-xoebgw{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/unused-selector-leading/_actual.html b/packages/svelte/test/css/samples/unused-selector-leading/_actual.html
new file mode 100644
index 000000000..edbd06409
--- /dev/null
+++ b/packages/svelte/test/css/samples/unused-selector-leading/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/unused-selector-string-concat/_actual.css b/packages/svelte/test/css/samples/unused-selector-string-concat/_actual.css
new file mode 100644
index 000000000..827ab4db2
--- /dev/null
+++ b/packages/svelte/test/css/samples/unused-selector-string-concat/_actual.css
@@ -0,0 +1 @@
+.foo.svelte-15j1tal{color:red}.foocc.svelte-15j1tal{color:red}.aa.svelte-15j1tal{color:red}.bb.svelte-15j1tal{color:red}.cc.svelte-15j1tal{color:red}.dd.svelte-15j1tal{color:red}.aabar.svelte-15j1tal{color:red}.fooddbar.svelte-15j1tal{color:red}.baz.svelte-15j1tal{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/unused-selector-ternary-bailed/_actual.css b/packages/svelte/test/css/samples/unused-selector-ternary-bailed/_actual.css
new file mode 100644
index 000000000..587ecf466
--- /dev/null
+++ b/packages/svelte/test/css/samples/unused-selector-ternary-bailed/_actual.css
@@ -0,0 +1 @@
+.thing.svelte-1rhq37d{color:blue}.active.svelte-1rhq37d{color:blue}.thing.active.svelte-1rhq37d{color:blue}.hover.svelte-1rhq37d{color:blue}.hover.unused.svelte-1rhq37d{color:blue}.unused.svelte-1rhq37d{color:blue}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/unused-selector-ternary-concat/_actual.css b/packages/svelte/test/css/samples/unused-selector-ternary-concat/_actual.css
new file mode 100644
index 000000000..cb065d7d4
--- /dev/null
+++ b/packages/svelte/test/css/samples/unused-selector-ternary-concat/_actual.css
@@ -0,0 +1 @@
+.thing.svelte-1ra5x3f{color:blue}.active.svelte-1ra5x3f{color:blue}.thing.active.svelte-1ra5x3f{color:blue}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/unused-selector-ternary-nested/_actual.css b/packages/svelte/test/css/samples/unused-selector-ternary-nested/_actual.css
new file mode 100644
index 000000000..1809909d4
--- /dev/null
+++ b/packages/svelte/test/css/samples/unused-selector-ternary-nested/_actual.css
@@ -0,0 +1 @@
+.thing.svelte-1rhq37d{color:blue}.active.svelte-1rhq37d{color:blue}.thing.active.svelte-1rhq37d{color:blue}.hover.svelte-1rhq37d{color:blue}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/unused-selector-ternary/_actual.css b/packages/svelte/test/css/samples/unused-selector-ternary/_actual.css
new file mode 100644
index 000000000..fafd128bc
--- /dev/null
+++ b/packages/svelte/test/css/samples/unused-selector-ternary/_actual.css
@@ -0,0 +1 @@
+.active.svelte-1v4rqd0{color:red}.inactive.svelte-1v4rqd0{color:blue}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/unused-selector-ternary/_actual.html b/packages/svelte/test/css/samples/unused-selector-ternary/_actual.html
new file mode 100644
index 000000000..1e8b5b196
--- /dev/null
+++ b/packages/svelte/test/css/samples/unused-selector-ternary/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/unused-selector/_actual.css b/packages/svelte/test/css/samples/unused-selector/_actual.css
new file mode 100644
index 000000000..809c7b6f9
--- /dev/null
+++ b/packages/svelte/test/css/samples/unused-selector/_actual.css
@@ -0,0 +1 @@
+.foo.svelte-eu2hfl{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/unused-selector/_actual.html b/packages/svelte/test/css/samples/unused-selector/_actual.html
new file mode 100644
index 000000000..1a9f3811f
--- /dev/null
+++ b/packages/svelte/test/css/samples/unused-selector/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/css/samples/weird-selectors/_actual.css b/packages/svelte/test/css/samples/weird-selectors/_actual.css
new file mode 100644
index 000000000..72515f0cf
--- /dev/null
+++ b/packages/svelte/test/css/samples/weird-selectors/_actual.css
@@ -0,0 +1 @@
+.-foo.svelte-1onfw41{color:red}[title='['].svelte-1onfw41{color:blue}
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/action-custom-event-handler/_actual.js b/packages/svelte/test/js/samples/action-custom-event-handler/_actual.js
new file mode 100644
index 000000000..aef87ecd1
--- /dev/null
+++ b/packages/svelte/test/js/samples/action-custom-event-handler/_actual.js
@@ -0,0 +1,75 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ action_destroyer,
+ detach,
+ element,
+ init,
+ insert,
+ is_function,
+ noop,
+ safe_not_equal
+} from "svelte/internal";
+
+function create_fragment(ctx) {
+ let button;
+ let foo_action;
+ let mounted;
+ let dispose;
+
+ return {
+ c() {
+ button = element("button");
+ button.textContent = "foo";
+ },
+ m(target, anchor) {
+ insert(target, button, anchor);
+
+ if (!mounted) {
+ dispose = action_destroyer(foo_action = foo.call(null, button, /*foo_function*/ ctx[1]));
+ mounted = true;
+ }
+ },
+ p(ctx, [dirty]) {
+ if (foo_action && is_function(foo_action.update) && dirty & /*bar*/ 1) foo_action.update.call(null, /*foo_function*/ ctx[1]);
+ },
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (detaching) {
+ detach(button);
+ }
+
+ mounted = false;
+ dispose();
+ }
+ };
+}
+
+function handleFoo(bar) {
+ console.log(bar);
+}
+
+function foo(node, callback) {
+
+} // code goes here
+
+function instance($$self, $$props, $$invalidate) {
+ let { bar } = $$props;
+ const foo_function = () => handleFoo(bar);
+
+ $$self.$$set = $$props => {
+ if ('bar' in $$props) $$invalidate(0, bar = $$props.bar);
+ };
+
+ return [bar, foo_function];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, { bar: 0 });
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/action/_actual.js b/packages/svelte/test/js/samples/action/_actual.js
new file mode 100644
index 000000000..01ac6aa3a
--- /dev/null
+++ b/packages/svelte/test/js/samples/action/_actual.js
@@ -0,0 +1,70 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ action_destroyer,
+ attr,
+ detach,
+ element,
+ init,
+ insert,
+ noop,
+ safe_not_equal
+} from "svelte/internal";
+
+function create_fragment(ctx) {
+ let a;
+ let link_action;
+ let mounted;
+ let dispose;
+
+ return {
+ c() {
+ a = element("a");
+ a.textContent = "Test";
+ attr(a, "href", "#");
+ },
+ m(target, anchor) {
+ insert(target, a, anchor);
+
+ if (!mounted) {
+ dispose = action_destroyer(link_action = link.call(null, a));
+ mounted = true;
+ }
+ },
+ p: noop,
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (detaching) {
+ detach(a);
+ }
+
+ mounted = false;
+ dispose();
+ }
+ };
+}
+
+function link(node) {
+ function onClick(event) {
+ event.preventDefault();
+ history.pushState(null, null, event.target.href);
+ }
+
+ node.addEventListener('click', onClick);
+
+ return {
+ destroy() {
+ node.removeEventListener('click', onClick);
+ }
+ };
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, null, create_fragment, safe_not_equal, {});
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/bind-online/_actual.js b/packages/svelte/test/js/samples/bind-online/_actual.js
new file mode 100644
index 000000000..887195bce
--- /dev/null
+++ b/packages/svelte/test/js/samples/bind-online/_actual.js
@@ -0,0 +1,56 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ add_render_callback,
+ init,
+ listen,
+ noop,
+ run_all,
+ safe_not_equal
+} from "svelte/internal";
+
+function create_fragment(ctx) {
+ let mounted;
+ let dispose;
+ add_render_callback(/*onlinestatuschanged*/ ctx[1]);
+
+ return {
+ c: noop,
+ m(target, anchor) {
+ if (!mounted) {
+ dispose = [
+ listen(window, "online", /*onlinestatuschanged*/ ctx[1]),
+ listen(window, "offline", /*onlinestatuschanged*/ ctx[1])
+ ];
+
+ mounted = true;
+ }
+ },
+ p: noop,
+ i: noop,
+ o: noop,
+ d(detaching) {
+ mounted = false;
+ run_all(dispose);
+ }
+ };
+}
+
+function instance($$self, $$props, $$invalidate) {
+ let online;
+
+ function onlinestatuschanged() {
+ $$invalidate(0, online = navigator.onLine);
+ }
+
+ return [online, onlinestatuschanged];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, {});
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/bind-open/_actual.js b/packages/svelte/test/js/samples/bind-open/_actual.js
new file mode 100644
index 000000000..a96d26c59
--- /dev/null
+++ b/packages/svelte/test/js/samples/bind-open/_actual.js
@@ -0,0 +1,72 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ detach,
+ element,
+ init,
+ insert,
+ listen,
+ noop,
+ safe_not_equal
+} from "svelte/internal";
+
+function create_fragment(ctx) {
+ let details;
+ let mounted;
+ let dispose;
+
+ return {
+ c() {
+ details = element("details");
+ details.innerHTML = `summarycontent`;
+ },
+ m(target, anchor) {
+ insert(target, details, anchor);
+ details.open = /*open*/ ctx[0];
+
+ if (!mounted) {
+ dispose = listen(details, "toggle", /*details_toggle_handler*/ ctx[1]);
+ mounted = true;
+ }
+ },
+ p(ctx, [dirty]) {
+ if (dirty & /*open*/ 1) {
+ details.open = /*open*/ ctx[0];
+ }
+ },
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (detaching) {
+ detach(details);
+ }
+
+ mounted = false;
+ dispose();
+ }
+ };
+}
+
+function instance($$self, $$props, $$invalidate) {
+ let { open } = $$props;
+
+ function details_toggle_handler() {
+ open = this.open;
+ $$invalidate(0, open);
+ }
+
+ $$self.$$set = $$props => {
+ if ('open' in $$props) $$invalidate(0, open = $$props.open);
+ };
+
+ return [open, details_toggle_handler];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, { open: 0 });
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/bind-width-height/_actual.js b/packages/svelte/test/js/samples/bind-width-height/_actual.js
new file mode 100644
index 000000000..ca84a502c
--- /dev/null
+++ b/packages/svelte/test/js/samples/bind-width-height/_actual.js
@@ -0,0 +1,67 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ add_iframe_resize_listener,
+ add_render_callback,
+ detach,
+ element,
+ init,
+ insert,
+ noop,
+ safe_not_equal
+} from "svelte/internal";
+
+function create_fragment(ctx) {
+ let div;
+ let div_resize_listener;
+
+ return {
+ c() {
+ div = element("div");
+ div.textContent = "some content";
+ add_render_callback(() => /*div_elementresize_handler*/ ctx[2].call(div));
+ },
+ m(target, anchor) {
+ insert(target, div, anchor);
+ div_resize_listener = add_iframe_resize_listener(div, /*div_elementresize_handler*/ ctx[2].bind(div));
+ },
+ p: noop,
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (detaching) {
+ detach(div);
+ }
+
+ div_resize_listener();
+ }
+ };
+}
+
+function instance($$self, $$props, $$invalidate) {
+ let { w } = $$props;
+ let { h } = $$props;
+
+ function div_elementresize_handler() {
+ w = this.offsetWidth;
+ h = this.offsetHeight;
+ $$invalidate(0, w);
+ $$invalidate(1, h);
+ }
+
+ $$self.$$set = $$props => {
+ if ('w' in $$props) $$invalidate(0, w = $$props.w);
+ if ('h' in $$props) $$invalidate(1, h = $$props.h);
+ };
+
+ return [w, h, div_elementresize_handler];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, { w: 0, h: 1 });
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/bindings-readonly-order/_actual.js b/packages/svelte/test/js/samples/bindings-readonly-order/_actual.js
new file mode 100644
index 000000000..2f2a779d9
--- /dev/null
+++ b/packages/svelte/test/js/samples/bindings-readonly-order/_actual.js
@@ -0,0 +1,88 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ attr,
+ detach,
+ element,
+ init,
+ insert,
+ listen,
+ noop,
+ run_all,
+ safe_not_equal,
+ space
+} from "svelte/internal";
+
+function create_fragment(ctx) {
+ let input0;
+ let t;
+ let input1;
+ let mounted;
+ let dispose;
+
+ return {
+ c() {
+ input0 = element("input");
+ t = space();
+ input1 = element("input");
+ attr(input0, "type", "file");
+ attr(input1, "type", "file");
+ },
+ m(target, anchor) {
+ insert(target, input0, anchor);
+ insert(target, t, anchor);
+ insert(target, input1, anchor);
+
+ if (!mounted) {
+ dispose = [
+ listen(input0, "change", /*input0_change_handler*/ ctx[1]),
+ listen(input1, "change", /*input1_change_handler*/ ctx[2])
+ ];
+
+ mounted = true;
+ }
+ },
+ p: noop,
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (detaching) {
+ detach(input0);
+ detach(t);
+ detach(input1);
+ }
+
+ mounted = false;
+ run_all(dispose);
+ }
+ };
+}
+
+function instance($$self, $$props, $$invalidate) {
+ let { files } = $$props;
+
+ function input0_change_handler() {
+ files = this.files;
+ $$invalidate(0, files);
+ }
+
+ function input1_change_handler() {
+ files = this.files;
+ $$invalidate(0, files);
+ }
+
+ $$self.$$set = $$props => {
+ if ('files' in $$props) $$invalidate(0, files = $$props.files);
+ };
+
+ return [files, input0_change_handler, input1_change_handler];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, { files: 0 });
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/capture-inject-dev-only/_actual.js b/packages/svelte/test/js/samples/capture-inject-dev-only/_actual.js
new file mode 100644
index 000000000..84d340e75
--- /dev/null
+++ b/packages/svelte/test/js/samples/capture-inject-dev-only/_actual.js
@@ -0,0 +1,85 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ append,
+ detach,
+ element,
+ init,
+ insert,
+ listen,
+ noop,
+ safe_not_equal,
+ set_data,
+ set_input_value,
+ space,
+ text
+} from "svelte/internal";
+
+function create_fragment(ctx) {
+ let p;
+ let t0;
+ let t1;
+ let input;
+ let mounted;
+ let dispose;
+
+ return {
+ c() {
+ p = element("p");
+ t0 = text(/*foo*/ ctx[0]);
+ t1 = space();
+ input = element("input");
+ },
+ m(target, anchor) {
+ insert(target, p, anchor);
+ append(p, t0);
+ insert(target, t1, anchor);
+ insert(target, input, anchor);
+ set_input_value(input, /*foo*/ ctx[0]);
+
+ if (!mounted) {
+ dispose = listen(input, "input", /*input_input_handler*/ ctx[1]);
+ mounted = true;
+ }
+ },
+ p(ctx, [dirty]) {
+ if (dirty & /*foo*/ 1) set_data(t0, /*foo*/ ctx[0]);
+
+ if (dirty & /*foo*/ 1 && input.value !== /*foo*/ ctx[0]) {
+ set_input_value(input, /*foo*/ ctx[0]);
+ }
+ },
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (detaching) {
+ detach(p);
+ detach(t1);
+ detach(input);
+ }
+
+ mounted = false;
+ dispose();
+ }
+ };
+}
+
+function instance($$self, $$props, $$invalidate) {
+ let foo = "bar";
+
+ function input_input_handler() {
+ foo = this.value;
+ $$invalidate(0, foo);
+ }
+
+ return [foo, input_input_handler];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, {});
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/capture-inject-state/_actual.js b/packages/svelte/test/js/samples/capture-inject-state/_actual.js
new file mode 100644
index 000000000..0c081eaae
--- /dev/null
+++ b/packages/svelte/test/js/samples/capture-inject-state/_actual.js
@@ -0,0 +1,202 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponentDev,
+ add_location,
+ append_dev,
+ detach_dev,
+ dispatch_dev,
+ element,
+ init,
+ insert_dev,
+ noop,
+ safe_not_equal,
+ set_data_dev,
+ space,
+ subscribe,
+ text,
+ validate_slots,
+ validate_store
+} from "svelte/internal";
+
+const file = undefined;
+
+function create_fragment(ctx) {
+ let p;
+ let t0;
+ let t1;
+ let t2;
+ let t3;
+ let t4;
+ let t5;
+ let t6;
+ let t7;
+ let t8;
+ let t9;
+ let t10;
+
+ const block = {
+ c: function create() {
+ p = element("p");
+ t0 = text(/*prop*/ ctx[0]);
+ t1 = space();
+ t2 = text(/*realName*/ ctx[1]);
+ t3 = space();
+ t4 = text(/*local*/ ctx[3]);
+ t5 = space();
+ t6 = text(priv);
+ t7 = space();
+ t8 = text(/*$prop*/ ctx[2]);
+ t9 = space();
+ t10 = text(/*shadowedByModule*/ ctx[4]);
+ add_location(p, file, 22, 0, 431);
+ },
+ l: function claim(nodes) {
+ throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
+ },
+ m: function mount(target, anchor) {
+ insert_dev(target, p, anchor);
+ append_dev(p, t0);
+ append_dev(p, t1);
+ append_dev(p, t2);
+ append_dev(p, t3);
+ append_dev(p, t4);
+ append_dev(p, t5);
+ append_dev(p, t6);
+ append_dev(p, t7);
+ append_dev(p, t8);
+ append_dev(p, t9);
+ append_dev(p, t10);
+ },
+ p: function update(ctx, [dirty]) {
+ if (dirty & /*prop*/ 1) set_data_dev(t0, /*prop*/ ctx[0]);
+ if (dirty & /*realName*/ 2) set_data_dev(t2, /*realName*/ ctx[1]);
+ if (dirty & /*$prop*/ 4) set_data_dev(t8, /*$prop*/ ctx[2]);
+ },
+ i: noop,
+ o: noop,
+ d: function destroy(detaching) {
+ if (detaching) {
+ detach_dev(p);
+ }
+ }
+ };
+
+ dispatch_dev("SvelteRegisterBlock", {
+ block,
+ id: create_fragment.name,
+ type: "component",
+ source: "",
+ ctx
+ });
+
+ return block;
+}
+
+let moduleLiveBinding;
+const moduleConstantProps = 4;
+let moduleLet;
+const moduleConst = 2;
+let shadowedByModule;
+const priv = 'priv';
+
+function instance($$self, $$props, $$invalidate) {
+ let computed;
+
+ let $prop,
+ $$unsubscribe_prop = noop,
+ $$subscribe_prop = () => ($$unsubscribe_prop(), $$unsubscribe_prop = subscribe(prop, $$value => $$invalidate(2, $prop = $$value)), prop);
+
+ $$self.$$.on_destroy.push(() => $$unsubscribe_prop());
+ let { $$slots: slots = {}, $$scope } = $$props;
+ validate_slots('Component', slots, []);
+ let { prop } = $$props;
+ validate_store(prop, 'prop');
+ $$subscribe_prop();
+ let { alias: realName } = $$props;
+ let local;
+ let shadowedByModule;
+
+ $$self.$$.on_mount.push(function () {
+ if (prop === undefined && !('prop' in $$props || $$self.$$.bound[$$self.$$.props['prop']])) {
+ console.warn(" was created without expected prop 'prop'");
+ }
+
+ if (realName === undefined && !('alias' in $$props || $$self.$$.bound[$$self.$$.props['alias']])) {
+ console.warn(" was created without expected prop 'alias'");
+ }
+ });
+
+ const writable_props = ['prop', 'alias'];
+
+ Object.keys($$props).forEach(key => {
+ if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`);
+ });
+
+ $$self.$$set = $$props => {
+ if ('prop' in $$props) $$subscribe_prop($$invalidate(0, prop = $$props.prop));
+ if ('alias' in $$props) $$invalidate(1, realName = $$props.alias);
+ };
+
+ $$self.$capture_state = () => ({
+ moduleLiveBinding,
+ moduleConstantProps,
+ moduleLet,
+ moduleConst,
+ shadowedByModule,
+ prop,
+ realName,
+ local,
+ priv,
+ shadowedByModule,
+ computed,
+ $prop
+ });
+
+ $$self.$inject_state = $$props => {
+ if ('prop' in $$props) $$subscribe_prop($$invalidate(0, prop = $$props.prop));
+ if ('realName' in $$props) $$invalidate(1, realName = $$props.realName);
+ if ('local' in $$props) $$invalidate(3, local = $$props.local);
+ if ('shadowedByModule' in $$props) $$invalidate(4, shadowedByModule = $$props.shadowedByModule);
+ if ('computed' in $$props) computed = $$props.computed;
+ };
+
+ if ($$props && "$$inject" in $$props) {
+ $$self.$inject_state($$props.$$inject);
+ }
+
+ $: computed = local * 2;
+ return [prop, realName, $prop, local, shadowedByModule];
+}
+
+class Component extends SvelteComponentDev {
+ constructor(options) {
+ super(options);
+ init(this, options, instance, create_fragment, safe_not_equal, { prop: 0, alias: 1 });
+
+ dispatch_dev("SvelteRegisterComponent", {
+ component: this,
+ tagName: "Component",
+ options,
+ id: create_fragment.name
+ });
+ }
+
+ get prop() {
+ throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''");
+ }
+
+ set prop(value) {
+ throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''");
+ }
+
+ get alias() {
+ throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''");
+ }
+
+ set alias(value) {
+ throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''");
+ }
+}
+
+export default Component;
+export { moduleLiveBinding, moduleConstantProps };
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/class-field/_actual.js b/packages/svelte/test/js/samples/class-field/_actual.js
new file mode 100644
index 000000000..c14629b6a
--- /dev/null
+++ b/packages/svelte/test/js/samples/class-field/_actual.js
@@ -0,0 +1,25 @@
+/* generated by Svelte vX.Y.Z */
+import { SvelteComponent, init, safe_not_equal } from "svelte/internal";
+
+function instance($$self) {
+ class A {
+ p1;
+ p2 = 1;
+ #p3 = 2;
+
+ #getP3() {
+ return this.#p3;
+ }
+ }
+
+ return [];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, null, safe_not_equal, {});
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/collapse-element-class-name/_actual.js b/packages/svelte/test/js/samples/collapse-element-class-name/_actual.js
new file mode 100644
index 000000000..d137d8b61
--- /dev/null
+++ b/packages/svelte/test/js/samples/collapse-element-class-name/_actual.js
@@ -0,0 +1,117 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ assign,
+ attr,
+ compute_rest_props,
+ create_component,
+ destroy_component,
+ detach,
+ element,
+ exclude_internal_props,
+ init,
+ insert,
+ mount_component,
+ safe_not_equal,
+ space,
+ transition_in,
+ transition_out
+} from "svelte/internal";
+
+import Component from "./Component.svelte";
+
+function create_fragment(ctx) {
+ let div;
+ let div_class_value;
+ let div_style_value;
+ let div_other_value;
+ let t;
+ let component;
+ let current;
+
+ component = new Component({
+ props: {
+ class: "\n\t\tbutton\n\t\tbutton--size--" + /*size*/ ctx[0] + "\n\t\tbutton--theme--" + /*theme*/ ctx[1] + "\n \t" + (/*$$restProps*/ ctx[2].class || ''),
+ style: "\n\t\tcolor: green;\n\t\tbackground: white;\n\t\tfont-size: " + /*size*/ ctx[0] + ";\n \ttransform: " + /*$$restProps*/ ctx[2].scale + " " + /*$$restProps*/ ctx[2].rotate + ";\n\t\t" + /*$$restProps*/ ctx[2].styles,
+ other: "\n\t\tbutton\n\t\tbutton--size--" + /*size*/ ctx[0] + "\n\t\tbutton--theme--" + /*theme*/ ctx[1] + "\n \t" + (/*$$restProps*/ ctx[2].class || '')
+ }
+ });
+
+ return {
+ c() {
+ div = element("div");
+ t = space();
+ create_component(component.$$.fragment);
+ attr(div, "class", div_class_value = "button button--size--" + /*size*/ ctx[0] + " button--theme--" + /*theme*/ ctx[1] + " " + (/*$$restProps*/ ctx[2].class || ''));
+ attr(div, "style", div_style_value = "color: green; background: white; font-size: " + /*size*/ ctx[0] + "; transform: " + /*$$restProps*/ ctx[2].scale + " " + /*$$restProps*/ ctx[2].rotate + "; " + /*$$restProps*/ ctx[2].styles);
+ attr(div, "other", div_other_value = "\n\t\tbutton\n\t\tbutton--size--" + /*size*/ ctx[0] + "\n\t\tbutton--theme--" + /*theme*/ ctx[1] + "\n \t" + (/*$$restProps*/ ctx[2].class || ''));
+ },
+ m(target, anchor) {
+ insert(target, div, anchor);
+ insert(target, t, anchor);
+ mount_component(component, target, anchor);
+ current = true;
+ },
+ p(ctx, [dirty]) {
+ if (!current || dirty & /*size, theme, $$restProps*/ 7 && div_class_value !== (div_class_value = "button button--size--" + /*size*/ ctx[0] + " button--theme--" + /*theme*/ ctx[1] + " " + (/*$$restProps*/ ctx[2].class || ''))) {
+ attr(div, "class", div_class_value);
+ }
+
+ if (!current || dirty & /*size, $$restProps*/ 5 && div_style_value !== (div_style_value = "color: green; background: white; font-size: " + /*size*/ ctx[0] + "; transform: " + /*$$restProps*/ ctx[2].scale + " " + /*$$restProps*/ ctx[2].rotate + "; " + /*$$restProps*/ ctx[2].styles)) {
+ attr(div, "style", div_style_value);
+ }
+
+ if (!current || dirty & /*size, theme, $$restProps*/ 7 && div_other_value !== (div_other_value = "\n\t\tbutton\n\t\tbutton--size--" + /*size*/ ctx[0] + "\n\t\tbutton--theme--" + /*theme*/ ctx[1] + "\n \t" + (/*$$restProps*/ ctx[2].class || ''))) {
+ attr(div, "other", div_other_value);
+ }
+
+ const component_changes = {};
+ if (dirty & /*size, theme, $$restProps*/ 7) component_changes.class = "\n\t\tbutton\n\t\tbutton--size--" + /*size*/ ctx[0] + "\n\t\tbutton--theme--" + /*theme*/ ctx[1] + "\n \t" + (/*$$restProps*/ ctx[2].class || '');
+ if (dirty & /*size, $$restProps*/ 5) component_changes.style = "\n\t\tcolor: green;\n\t\tbackground: white;\n\t\tfont-size: " + /*size*/ ctx[0] + ";\n \ttransform: " + /*$$restProps*/ ctx[2].scale + " " + /*$$restProps*/ ctx[2].rotate + ";\n\t\t" + /*$$restProps*/ ctx[2].styles;
+ if (dirty & /*size, theme, $$restProps*/ 7) component_changes.other = "\n\t\tbutton\n\t\tbutton--size--" + /*size*/ ctx[0] + "\n\t\tbutton--theme--" + /*theme*/ ctx[1] + "\n \t" + (/*$$restProps*/ ctx[2].class || '');
+ component.$set(component_changes);
+ },
+ i(local) {
+ if (current) return;
+ transition_in(component.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(component.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ if (detaching) {
+ detach(div);
+ detach(t);
+ }
+
+ destroy_component(component, detaching);
+ }
+ };
+}
+
+function instance($$self, $$props, $$invalidate) {
+ const omit_props_names = ["size","theme"];
+ let $$restProps = compute_rest_props($$props, omit_props_names);
+ let { size } = $$props;
+ let { theme } = $$props;
+
+ $$self.$$set = $$new_props => {
+ $$props = assign(assign({}, $$props), exclude_internal_props($$new_props));
+ $$invalidate(2, $$restProps = compute_rest_props($$props, omit_props_names));
+ if ('size' in $$new_props) $$invalidate(0, size = $$new_props.size);
+ if ('theme' in $$new_props) $$invalidate(1, theme = $$new_props.theme);
+ };
+
+ return [size, theme, $$restProps];
+}
+
+class Component_1 extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, { size: 0, theme: 1 });
+ }
+}
+
+export default Component_1;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/collapse-literal-ssr/_actual.js b/packages/svelte/test/js/samples/collapse-literal-ssr/_actual.js
new file mode 100644
index 000000000..a5102337f
--- /dev/null
+++ b/packages/svelte/test/js/samples/collapse-literal-ssr/_actual.js
@@ -0,0 +1,15 @@
+/* generated by Svelte vX.Y.Z */
+import { add_attribute, create_ssr_component, escape } from "svelte/internal";
+
+const const1 = 1;
+const const2 = 'const2';
+
+function foo() {
+ return '';
+}
+
+const Component = create_ssr_component(($$result, $$props, $$bindings, slots) => {
+ return `
-
-
-
-
-
-
`;
+});
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/collapses-text-around-comments/_actual.js b/packages/svelte/test/js/samples/collapses-text-around-comments/_actual.js
new file mode 100644
index 000000000..c3fad2c8b
--- /dev/null
+++ b/packages/svelte/test/js/samples/collapses-text-around-comments/_actual.js
@@ -0,0 +1,65 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ append,
+ append_styles,
+ attr,
+ detach,
+ element,
+ init,
+ insert,
+ noop,
+ safe_not_equal,
+ set_data,
+ text
+} from "svelte/internal";
+
+function add_css(target) {
+ append_styles(target, "svelte-1a7i8ec", "p.svelte-1a7i8ec{color:red}");
+}
+
+function create_fragment(ctx) {
+ let p;
+ let t;
+
+ return {
+ c() {
+ p = element("p");
+ t = text(/*foo*/ ctx[0]);
+ attr(p, "class", "svelte-1a7i8ec");
+ },
+ m(target, anchor) {
+ insert(target, p, anchor);
+ append(p, t);
+ },
+ p(ctx, [dirty]) {
+ if (dirty & /*foo*/ 1) set_data(t, /*foo*/ ctx[0]);
+ },
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (detaching) {
+ detach(p);
+ }
+ }
+ };
+}
+
+function instance($$self, $$props, $$invalidate) {
+ let { foo = 42 } = $$props;
+
+ $$self.$$set = $$props => {
+ if ('foo' in $$props) $$invalidate(0, foo = $$props.foo);
+ };
+
+ return [foo];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, { foo: 0 }, add_css);
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/component-static-array/_actual.js b/packages/svelte/test/js/samples/component-static-array/_actual.js
new file mode 100644
index 000000000..0ecb0f32b
--- /dev/null
+++ b/packages/svelte/test/js/samples/component-static-array/_actual.js
@@ -0,0 +1,55 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ create_component,
+ destroy_component,
+ init,
+ mount_component,
+ noop,
+ safe_not_equal,
+ transition_in,
+ transition_out
+} from "svelte/internal";
+
+function create_fragment(ctx) {
+ let nested;
+ let current;
+ nested = new /*Nested*/ ctx[0]({ props: { foo: [1, 2, 3] } });
+
+ return {
+ c() {
+ create_component(nested.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(nested, target, anchor);
+ current = true;
+ },
+ p: noop,
+ i(local) {
+ if (current) return;
+ transition_in(nested.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(nested.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(nested, detaching);
+ }
+ };
+}
+
+function instance($$self) {
+ const Nested = window.Nested;
+ return [Nested];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, {});
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/component-static-immutable/_actual.js b/packages/svelte/test/js/samples/component-static-immutable/_actual.js
new file mode 100644
index 000000000..b0c416541
--- /dev/null
+++ b/packages/svelte/test/js/samples/component-static-immutable/_actual.js
@@ -0,0 +1,55 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ create_component,
+ destroy_component,
+ init,
+ mount_component,
+ noop,
+ not_equal,
+ transition_in,
+ transition_out
+} from "svelte/internal";
+
+function create_fragment(ctx) {
+ let nested;
+ let current;
+ nested = new /*Nested*/ ctx[0]({ props: { foo: "bar" } });
+
+ return {
+ c() {
+ create_component(nested.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(nested, target, anchor);
+ current = true;
+ },
+ p: noop,
+ i(local) {
+ if (current) return;
+ transition_in(nested.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(nested.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(nested, detaching);
+ }
+ };
+}
+
+function instance($$self) {
+ const Nested = window.Nested;
+ return [Nested];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, not_equal, {});
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/component-static-immutable2/_actual.js b/packages/svelte/test/js/samples/component-static-immutable2/_actual.js
new file mode 100644
index 000000000..b0c416541
--- /dev/null
+++ b/packages/svelte/test/js/samples/component-static-immutable2/_actual.js
@@ -0,0 +1,55 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ create_component,
+ destroy_component,
+ init,
+ mount_component,
+ noop,
+ not_equal,
+ transition_in,
+ transition_out
+} from "svelte/internal";
+
+function create_fragment(ctx) {
+ let nested;
+ let current;
+ nested = new /*Nested*/ ctx[0]({ props: { foo: "bar" } });
+
+ return {
+ c() {
+ create_component(nested.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(nested, target, anchor);
+ current = true;
+ },
+ p: noop,
+ i(local) {
+ if (current) return;
+ transition_in(nested.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(nested.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(nested, detaching);
+ }
+ };
+}
+
+function instance($$self) {
+ const Nested = window.Nested;
+ return [Nested];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, not_equal, {});
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/component-static-var/_actual.js b/packages/svelte/test/js/samples/component-static-var/_actual.js
new file mode 100644
index 000000000..e333fdb3c
--- /dev/null
+++ b/packages/svelte/test/js/samples/component-static-var/_actual.js
@@ -0,0 +1,111 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ create_component,
+ destroy_component,
+ detach,
+ element,
+ init,
+ insert,
+ listen,
+ mount_component,
+ safe_not_equal,
+ set_input_value,
+ space,
+ transition_in,
+ transition_out
+} from "svelte/internal";
+
+import Foo from './Foo.svelte';
+import Bar from './Bar.svelte';
+
+function create_fragment(ctx) {
+ let foo;
+ let t0;
+ let bar;
+ let t1;
+ let input;
+ let current;
+ let mounted;
+ let dispose;
+ foo = new Foo({ props: { x: y } });
+ bar = new Bar({ props: { x: /*z*/ ctx[0] } });
+
+ return {
+ c() {
+ create_component(foo.$$.fragment);
+ t0 = space();
+ create_component(bar.$$.fragment);
+ t1 = space();
+ input = element("input");
+ },
+ m(target, anchor) {
+ mount_component(foo, target, anchor);
+ insert(target, t0, anchor);
+ mount_component(bar, target, anchor);
+ insert(target, t1, anchor);
+ insert(target, input, anchor);
+ set_input_value(input, /*z*/ ctx[0]);
+ current = true;
+
+ if (!mounted) {
+ dispose = listen(input, "input", /*input_input_handler*/ ctx[1]);
+ mounted = true;
+ }
+ },
+ p(ctx, [dirty]) {
+ const bar_changes = {};
+ if (dirty & /*z*/ 1) bar_changes.x = /*z*/ ctx[0];
+ bar.$set(bar_changes);
+
+ if (dirty & /*z*/ 1 && input.value !== /*z*/ ctx[0]) {
+ set_input_value(input, /*z*/ ctx[0]);
+ }
+ },
+ i(local) {
+ if (current) return;
+ transition_in(foo.$$.fragment, local);
+ transition_in(bar.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(foo.$$.fragment, local);
+ transition_out(bar.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ if (detaching) {
+ detach(t0);
+ detach(t1);
+ detach(input);
+ }
+
+ destroy_component(foo, detaching);
+ destroy_component(bar, detaching);
+ mounted = false;
+ dispose();
+ }
+ };
+}
+
+let y = 1;
+
+function instance($$self, $$props, $$invalidate) {
+ let z = 2;
+
+ function input_input_handler() {
+ z = this.value;
+ $$invalidate(0, z);
+ }
+
+ return [z, input_input_handler];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, {});
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/component-static/_actual.js b/packages/svelte/test/js/samples/component-static/_actual.js
new file mode 100644
index 000000000..186f6350e
--- /dev/null
+++ b/packages/svelte/test/js/samples/component-static/_actual.js
@@ -0,0 +1,55 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ create_component,
+ destroy_component,
+ init,
+ mount_component,
+ noop,
+ safe_not_equal,
+ transition_in,
+ transition_out
+} from "svelte/internal";
+
+function create_fragment(ctx) {
+ let nested;
+ let current;
+ nested = new /*Nested*/ ctx[0]({ props: { foo: "bar" } });
+
+ return {
+ c() {
+ create_component(nested.$$.fragment);
+ },
+ m(target, anchor) {
+ mount_component(nested, target, anchor);
+ current = true;
+ },
+ p: noop,
+ i(local) {
+ if (current) return;
+ transition_in(nested.$$.fragment, local);
+ current = true;
+ },
+ o(local) {
+ transition_out(nested.$$.fragment, local);
+ current = false;
+ },
+ d(detaching) {
+ destroy_component(nested, detaching);
+ }
+ };
+}
+
+function instance($$self) {
+ const Nested = window.Nested;
+ return [Nested];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, {});
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/component-store-access-invalidate/_actual.js b/packages/svelte/test/js/samples/component-store-access-invalidate/_actual.js
new file mode 100644
index 000000000..4b12c4060
--- /dev/null
+++ b/packages/svelte/test/js/samples/component-store-access-invalidate/_actual.js
@@ -0,0 +1,58 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ append,
+ component_subscribe,
+ detach,
+ element,
+ init,
+ insert,
+ noop,
+ safe_not_equal,
+ set_data,
+ text
+} from "svelte/internal";
+
+import { writable } from 'svelte/store';
+
+function create_fragment(ctx) {
+ let h1;
+ let t;
+
+ return {
+ c() {
+ h1 = element("h1");
+ t = text(/*$foo*/ ctx[0]);
+ },
+ m(target, anchor) {
+ insert(target, h1, anchor);
+ append(h1, t);
+ },
+ p(ctx, [dirty]) {
+ if (dirty & /*$foo*/ 1) set_data(t, /*$foo*/ ctx[0]);
+ },
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (detaching) {
+ detach(h1);
+ }
+ }
+ };
+}
+
+function instance($$self, $$props, $$invalidate) {
+ let $foo;
+ const foo = writable(0);
+ component_subscribe($$self, foo, value => $$invalidate(0, $foo = value));
+ return [$foo, foo];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, {});
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/component-store-file-invalidate/_actual.js b/packages/svelte/test/js/samples/component-store-file-invalidate/_actual.js
new file mode 100644
index 000000000..86a467f36
--- /dev/null
+++ b/packages/svelte/test/js/samples/component-store-file-invalidate/_actual.js
@@ -0,0 +1,34 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ component_subscribe,
+ init,
+ safe_not_equal,
+ set_store_value
+} from "svelte/internal";
+
+import { count } from './store.js';
+
+function instance($$self, $$props, $$invalidate) {
+ let $count;
+ component_subscribe($$self, count, $$value => $$invalidate(1, $count = $$value));
+
+ function increment() {
+ set_store_value(count, $count++, $count);
+ }
+
+ return [increment];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, null, safe_not_equal, { increment: 0 });
+ }
+
+ get increment() {
+ return this.$$.ctx[0];
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/component-store-reassign-invalidate/_actual.js b/packages/svelte/test/js/samples/component-store-reassign-invalidate/_actual.js
new file mode 100644
index 000000000..edff2112e
--- /dev/null
+++ b/packages/svelte/test/js/samples/component-store-reassign-invalidate/_actual.js
@@ -0,0 +1,84 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ append,
+ detach,
+ element,
+ init,
+ insert,
+ listen,
+ noop,
+ safe_not_equal,
+ set_data,
+ space,
+ subscribe,
+ text
+} from "svelte/internal";
+
+import { writable } from 'svelte/store';
+
+function create_fragment(ctx) {
+ let h1;
+ let t0;
+ let t1;
+ let button;
+ let mounted;
+ let dispose;
+
+ return {
+ c() {
+ h1 = element("h1");
+ t0 = text(/*$foo*/ ctx[1]);
+ t1 = space();
+ button = element("button");
+ button.textContent = "reset";
+ },
+ m(target, anchor) {
+ insert(target, h1, anchor);
+ append(h1, t0);
+ insert(target, t1, anchor);
+ insert(target, button, anchor);
+
+ if (!mounted) {
+ dispose = listen(button, "click", /*click_handler*/ ctx[2]);
+ mounted = true;
+ }
+ },
+ p(ctx, [dirty]) {
+ if (dirty & /*$foo*/ 2) set_data(t0, /*$foo*/ ctx[1]);
+ },
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (detaching) {
+ detach(h1);
+ detach(t1);
+ detach(button);
+ }
+
+ mounted = false;
+ dispose();
+ }
+ };
+}
+
+function instance($$self, $$props, $$invalidate) {
+ let $foo,
+ $$unsubscribe_foo = noop,
+ $$subscribe_foo = () => ($$unsubscribe_foo(), $$unsubscribe_foo = subscribe(foo, $$value => $$invalidate(1, $foo = $$value)), foo);
+
+ $$self.$$.on_destroy.push(() => $$unsubscribe_foo());
+ let foo = writable(0);
+ $$subscribe_foo();
+ const click_handler = () => $$subscribe_foo($$invalidate(0, foo = writable(0)));
+ return [foo, $foo, click_handler];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, {});
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/computed-collapsed-if/_actual.js b/packages/svelte/test/js/samples/computed-collapsed-if/_actual.js
new file mode 100644
index 000000000..8bcb5ed8b
--- /dev/null
+++ b/packages/svelte/test/js/samples/computed-collapsed-if/_actual.js
@@ -0,0 +1,37 @@
+/* generated by Svelte vX.Y.Z */
+import { SvelteComponent, init, safe_not_equal } from "svelte/internal";
+
+function instance($$self, $$props, $$invalidate) {
+ let { x } = $$props;
+
+ function a() {
+ return x * 2;
+ }
+
+ function b() {
+ return x * 3;
+ }
+
+ $$self.$$set = $$props => {
+ if ('x' in $$props) $$invalidate(0, x = $$props.x);
+ };
+
+ return [x, a, b];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, null, safe_not_equal, { x: 0, a: 1, b: 2 });
+ }
+
+ get a() {
+ return this.$$.ctx[1];
+ }
+
+ get b() {
+ return this.$$.ctx[2];
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/css-media-query/_actual.js b/packages/svelte/test/js/samples/css-media-query/_actual.js
new file mode 100644
index 000000000..49a9fafef
--- /dev/null
+++ b/packages/svelte/test/js/samples/css-media-query/_actual.js
@@ -0,0 +1,47 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ append_styles,
+ attr,
+ detach,
+ element,
+ init,
+ insert,
+ noop,
+ safe_not_equal
+} from "svelte/internal";
+
+function add_css(target) {
+ append_styles(target, "svelte-1slhpfn", "@media(min-width: 1px){div.svelte-1slhpfn{color:red}}");
+}
+
+function create_fragment(ctx) {
+ let div;
+
+ return {
+ c() {
+ div = element("div");
+ attr(div, "class", "svelte-1slhpfn");
+ },
+ m(target, anchor) {
+ insert(target, div, anchor);
+ },
+ p: noop,
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (detaching) {
+ detach(div);
+ }
+ }
+ };
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, null, create_fragment, safe_not_equal, {}, add_css);
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/css-shadow-dom-keyframes/_actual.js b/packages/svelte/test/js/samples/css-shadow-dom-keyframes/_actual.js
new file mode 100644
index 000000000..a37fe84f4
--- /dev/null
+++ b/packages/svelte/test/js/samples/css-shadow-dom-keyframes/_actual.js
@@ -0,0 +1,50 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ append_styles,
+ attr,
+ create_custom_element,
+ detach,
+ element,
+ init,
+ insert,
+ noop,
+ safe_not_equal
+} from "svelte/internal";
+
+function add_css(target) {
+ append_styles(target, "svelte-10axo0s", "div.svelte-10axo0s{animation:svelte-10axo0s-foo 1s}@keyframes svelte-10axo0s-foo{0%{opacity:0}100%{opacity:1}}");
+}
+
+function create_fragment(ctx) {
+ let div;
+
+ return {
+ c() {
+ div = element("div");
+ div.textContent = "fades in";
+ attr(div, "class", "svelte-10axo0s");
+ },
+ m(target, anchor) {
+ insert(target, div, anchor);
+ },
+ p: noop,
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (detaching) {
+ detach(div);
+ }
+ }
+ };
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, null, create_fragment, safe_not_equal, {}, add_css);
+ }
+}
+
+customElements.define("custom-element", create_custom_element(Component, {}, [], [], true));
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/custom-svelte-path/_actual.js b/packages/svelte/test/js/samples/custom-svelte-path/_actual.js
new file mode 100644
index 000000000..b95296ce0
--- /dev/null
+++ b/packages/svelte/test/js/samples/custom-svelte-path/_actual.js
@@ -0,0 +1,66 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ append,
+ detach,
+ element,
+ init,
+ insert,
+ noop,
+ safe_not_equal,
+ set_data,
+ text
+} from "a/b/svelte/internal";
+
+import { onMount } from "a/b/svelte";
+
+function create_fragment(ctx) {
+ let h1;
+ let t0;
+ let t1;
+ let t2;
+
+ return {
+ c() {
+ h1 = element("h1");
+ t0 = text("Hello ");
+ t1 = text(/*name*/ ctx[0]);
+ t2 = text("!");
+ },
+ m(target, anchor) {
+ insert(target, h1, anchor);
+ append(h1, t0);
+ append(h1, t1);
+ append(h1, t2);
+ },
+ p(ctx, [dirty]) {
+ if (dirty & /*name*/ 1) set_data(t1, /*name*/ ctx[0]);
+ },
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (detaching) {
+ detach(h1);
+ }
+ }
+ };
+}
+
+function instance($$self, $$props, $$invalidate) {
+ let name = '';
+
+ onMount(() => {
+ $$invalidate(0, name = 'world');
+ });
+
+ return [name];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, {});
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/data-attribute/_actual.js b/packages/svelte/test/js/samples/data-attribute/_actual.js
new file mode 100644
index 000000000..b4302a897
--- /dev/null
+++ b/packages/svelte/test/js/samples/data-attribute/_actual.js
@@ -0,0 +1,66 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponent,
+ attr,
+ detach,
+ element,
+ init,
+ insert,
+ noop,
+ safe_not_equal,
+ space
+} from "svelte/internal";
+
+function create_fragment(ctx) {
+ let div0;
+ let t;
+ let div1;
+
+ return {
+ c() {
+ div0 = element("div");
+ t = space();
+ div1 = element("div");
+ attr(div0, "data-foo", "bar");
+ attr(div1, "data-foo", /*bar*/ ctx[0]);
+ },
+ m(target, anchor) {
+ insert(target, div0, anchor);
+ insert(target, t, anchor);
+ insert(target, div1, anchor);
+ },
+ p(ctx, [dirty]) {
+ if (dirty & /*bar*/ 1) {
+ attr(div1, "data-foo", /*bar*/ ctx[0]);
+ }
+ },
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (detaching) {
+ detach(div0);
+ detach(t);
+ detach(div1);
+ }
+ }
+ };
+}
+
+function instance($$self, $$props, $$invalidate) {
+ let { bar } = $$props;
+
+ $$self.$$set = $$props => {
+ if ('bar' in $$props) $$invalidate(0, bar = $$props.bar);
+ };
+
+ return [bar];
+}
+
+class Component extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, instance, create_fragment, safe_not_equal, { bar: 0 });
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/debug-empty/_actual.js b/packages/svelte/test/js/samples/debug-empty/_actual.js
new file mode 100644
index 000000000..01e1d463b
--- /dev/null
+++ b/packages/svelte/test/js/samples/debug-empty/_actual.js
@@ -0,0 +1,129 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponentDev,
+ add_location,
+ append_dev,
+ detach_dev,
+ dispatch_dev,
+ element,
+ init,
+ insert_dev,
+ noop,
+ safe_not_equal,
+ set_data_dev,
+ space,
+ text,
+ validate_slots
+} from "svelte/internal";
+
+const file = undefined;
+
+function create_fragment(ctx) {
+ let h1;
+ let t0;
+ let t1;
+ let t2;
+ let t3;
+
+ const block = {
+ c: function create() {
+ h1 = element("h1");
+ t0 = text("Hello ");
+ t1 = text(/*name*/ ctx[0]);
+ t2 = text("!");
+ t3 = space();
+ debugger;
+ add_location(h1, file, 4, 0, 38);
+ },
+ l: function claim(nodes) {
+ throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
+ },
+ m: function mount(target, anchor) {
+ insert_dev(target, h1, anchor);
+ append_dev(h1, t0);
+ append_dev(h1, t1);
+ append_dev(h1, t2);
+ insert_dev(target, t3, anchor);
+ },
+ p: function update(ctx, [dirty]) {
+ if (dirty & /*name*/ 1) set_data_dev(t1, /*name*/ ctx[0]);
+ debugger;
+ },
+ i: noop,
+ o: noop,
+ d: function destroy(detaching) {
+ if (detaching) {
+ detach_dev(h1);
+ detach_dev(t3);
+ }
+ }
+ };
+
+ dispatch_dev("SvelteRegisterBlock", {
+ block,
+ id: create_fragment.name,
+ type: "component",
+ source: "",
+ ctx
+ });
+
+ return block;
+}
+
+function instance($$self, $$props, $$invalidate) {
+ let { $$slots: slots = {}, $$scope } = $$props;
+ validate_slots('Component', slots, []);
+ let { name } = $$props;
+
+ $$self.$$.on_mount.push(function () {
+ if (name === undefined && !('name' in $$props || $$self.$$.bound[$$self.$$.props['name']])) {
+ console.warn(" was created without expected prop 'name'");
+ }
+ });
+
+ const writable_props = ['name'];
+
+ Object.keys($$props).forEach(key => {
+ if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`);
+ });
+
+ $$self.$$set = $$props => {
+ if ('name' in $$props) $$invalidate(0, name = $$props.name);
+ };
+
+ $$self.$capture_state = () => ({ name });
+
+ $$self.$inject_state = $$props => {
+ if ('name' in $$props) $$invalidate(0, name = $$props.name);
+ };
+
+ if ($$props && "$$inject" in $$props) {
+ $$self.$inject_state($$props.$$inject);
+ }
+
+ return [name];
+}
+
+class Component extends SvelteComponentDev {
+ constructor(options) {
+ super(options);
+ init(this, options, instance, create_fragment, safe_not_equal, { name: 0 });
+
+ dispatch_dev("SvelteRegisterComponent", {
+ component: this,
+ tagName: "Component",
+ options,
+ id: create_fragment.name
+ });
+ }
+
+ get name() {
+ throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''");
+ }
+
+ set name(value) {
+ throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''");
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/debug-foo-bar-baz-things/_actual.js b/packages/svelte/test/js/samples/debug-foo-bar-baz-things/_actual.js
new file mode 100644
index 000000000..1398f0f50
--- /dev/null
+++ b/packages/svelte/test/js/samples/debug-foo-bar-baz-things/_actual.js
@@ -0,0 +1,278 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponentDev,
+ add_location,
+ append_dev,
+ destroy_each,
+ detach_dev,
+ dispatch_dev,
+ element,
+ ensure_array_like_dev,
+ init,
+ insert_dev,
+ noop,
+ safe_not_equal,
+ set_data_dev,
+ space,
+ text,
+ validate_slots
+} from "svelte/internal";
+
+const file = undefined;
+
+function get_each_context(ctx, list, i) {
+ const child_ctx = ctx.slice();
+ child_ctx[4] = list[i];
+ return child_ctx;
+}
+
+// (8:0) {#each things as thing}
+function create_each_block(ctx) {
+ let span;
+ let t0_value = /*thing*/ ctx[4].name + "";
+ let t0;
+ let t1;
+
+ const block = {
+ c: function create() {
+ span = element("span");
+ t0 = text(t0_value);
+ t1 = space();
+
+ {
+ const foo = /*foo*/ ctx[1];
+ const bar = /*bar*/ ctx[2];
+ const baz = /*baz*/ ctx[3];
+ const thing = /*thing*/ ctx[4];
+ console.log({ foo, bar, baz, thing });
+ debugger;
+ }
+
+ add_location(span, file, 8, 1, 116);
+ },
+ m: function mount(target, anchor) {
+ insert_dev(target, span, anchor);
+ append_dev(span, t0);
+ insert_dev(target, t1, anchor);
+ },
+ p: function update(ctx, dirty) {
+ if (dirty & /*things*/ 1 && t0_value !== (t0_value = /*thing*/ ctx[4].name + "")) set_data_dev(t0, t0_value);
+
+ if (dirty & /*foo, bar, baz, things*/ 15) {
+ const foo = /*foo*/ ctx[1];
+ const bar = /*bar*/ ctx[2];
+ const baz = /*baz*/ ctx[3];
+ const thing = /*thing*/ ctx[4];
+ console.log({ foo, bar, baz, thing });
+ debugger;
+ }
+ },
+ d: function destroy(detaching) {
+ if (detaching) {
+ detach_dev(span);
+ detach_dev(t1);
+ }
+ }
+ };
+
+ dispatch_dev("SvelteRegisterBlock", {
+ block,
+ id: create_each_block.name,
+ type: "each",
+ source: "(8:0) {#each things as thing}",
+ ctx
+ });
+
+ return block;
+}
+
+function create_fragment(ctx) {
+ let t0;
+ let p;
+ let t1;
+ let t2;
+ let each_value = ensure_array_like_dev(/*things*/ ctx[0]);
+ let each_blocks = [];
+
+ for (let i = 0; i < each_value.length; i += 1) {
+ each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
+ }
+
+ const block = {
+ c: function create() {
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].c();
+ }
+
+ t0 = space();
+ p = element("p");
+ t1 = text("foo: ");
+ t2 = text(/*foo*/ ctx[1]);
+ add_location(p, file, 12, 0, 182);
+ },
+ l: function claim(nodes) {
+ throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
+ },
+ m: function mount(target, anchor) {
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ if (each_blocks[i]) {
+ each_blocks[i].m(target, anchor);
+ }
+ }
+
+ insert_dev(target, t0, anchor);
+ insert_dev(target, p, anchor);
+ append_dev(p, t1);
+ append_dev(p, t2);
+ },
+ p: function update(ctx, [dirty]) {
+ if (dirty & /*things*/ 1) {
+ each_value = ensure_array_like_dev(/*things*/ ctx[0]);
+ let i;
+
+ for (i = 0; i < each_value.length; i += 1) {
+ const child_ctx = get_each_context(ctx, each_value, i);
+
+ if (each_blocks[i]) {
+ each_blocks[i].p(child_ctx, dirty);
+ } else {
+ each_blocks[i] = create_each_block(child_ctx);
+ each_blocks[i].c();
+ each_blocks[i].m(t0.parentNode, t0);
+ }
+ }
+
+ for (; i < each_blocks.length; i += 1) {
+ each_blocks[i].d(1);
+ }
+
+ each_blocks.length = each_value.length;
+ }
+
+ if (dirty & /*foo*/ 2) set_data_dev(t2, /*foo*/ ctx[1]);
+ },
+ i: noop,
+ o: noop,
+ d: function destroy(detaching) {
+ if (detaching) {
+ detach_dev(t0);
+ detach_dev(p);
+ }
+
+ destroy_each(each_blocks, detaching);
+ }
+ };
+
+ dispatch_dev("SvelteRegisterBlock", {
+ block,
+ id: create_fragment.name,
+ type: "component",
+ source: "",
+ ctx
+ });
+
+ return block;
+}
+
+function instance($$self, $$props, $$invalidate) {
+ let { $$slots: slots = {}, $$scope } = $$props;
+ validate_slots('Component', slots, []);
+ let { things } = $$props;
+ let { foo } = $$props;
+ let { bar } = $$props;
+ let { baz } = $$props;
+
+ $$self.$$.on_mount.push(function () {
+ if (things === undefined && !('things' in $$props || $$self.$$.bound[$$self.$$.props['things']])) {
+ console.warn(" was created without expected prop 'things'");
+ }
+
+ if (foo === undefined && !('foo' in $$props || $$self.$$.bound[$$self.$$.props['foo']])) {
+ console.warn(" was created without expected prop 'foo'");
+ }
+
+ if (bar === undefined && !('bar' in $$props || $$self.$$.bound[$$self.$$.props['bar']])) {
+ console.warn(" was created without expected prop 'bar'");
+ }
+
+ if (baz === undefined && !('baz' in $$props || $$self.$$.bound[$$self.$$.props['baz']])) {
+ console.warn(" was created without expected prop 'baz'");
+ }
+ });
+
+ const writable_props = ['things', 'foo', 'bar', 'baz'];
+
+ Object.keys($$props).forEach(key => {
+ if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`);
+ });
+
+ $$self.$$set = $$props => {
+ if ('things' in $$props) $$invalidate(0, things = $$props.things);
+ if ('foo' in $$props) $$invalidate(1, foo = $$props.foo);
+ if ('bar' in $$props) $$invalidate(2, bar = $$props.bar);
+ if ('baz' in $$props) $$invalidate(3, baz = $$props.baz);
+ };
+
+ $$self.$capture_state = () => ({ things, foo, bar, baz });
+
+ $$self.$inject_state = $$props => {
+ if ('things' in $$props) $$invalidate(0, things = $$props.things);
+ if ('foo' in $$props) $$invalidate(1, foo = $$props.foo);
+ if ('bar' in $$props) $$invalidate(2, bar = $$props.bar);
+ if ('baz' in $$props) $$invalidate(3, baz = $$props.baz);
+ };
+
+ if ($$props && "$$inject" in $$props) {
+ $$self.$inject_state($$props.$$inject);
+ }
+
+ return [things, foo, bar, baz];
+}
+
+class Component extends SvelteComponentDev {
+ constructor(options) {
+ super(options);
+ init(this, options, instance, create_fragment, safe_not_equal, { things: 0, foo: 1, bar: 2, baz: 3 });
+
+ dispatch_dev("SvelteRegisterComponent", {
+ component: this,
+ tagName: "Component",
+ options,
+ id: create_fragment.name
+ });
+ }
+
+ get things() {
+ throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''");
+ }
+
+ set things(value) {
+ throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''");
+ }
+
+ get foo() {
+ throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''");
+ }
+
+ set foo(value) {
+ throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''");
+ }
+
+ get bar() {
+ throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''");
+ }
+
+ set bar(value) {
+ throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''");
+ }
+
+ get baz() {
+ throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''");
+ }
+
+ set baz(value) {
+ throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''");
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/debug-foo/_actual.js b/packages/svelte/test/js/samples/debug-foo/_actual.js
new file mode 100644
index 000000000..800c9c14b
--- /dev/null
+++ b/packages/svelte/test/js/samples/debug-foo/_actual.js
@@ -0,0 +1,242 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponentDev,
+ add_location,
+ append_dev,
+ destroy_each,
+ detach_dev,
+ dispatch_dev,
+ element,
+ ensure_array_like_dev,
+ init,
+ insert_dev,
+ noop,
+ safe_not_equal,
+ set_data_dev,
+ space,
+ text,
+ validate_slots
+} from "svelte/internal";
+
+const file = undefined;
+
+function get_each_context(ctx, list, i) {
+ const child_ctx = ctx.slice();
+ child_ctx[2] = list[i];
+ return child_ctx;
+}
+
+// (6:0) {#each things as thing}
+function create_each_block(ctx) {
+ let span;
+ let t0_value = /*thing*/ ctx[2].name + "";
+ let t0;
+ let t1;
+
+ const block = {
+ c: function create() {
+ span = element("span");
+ t0 = text(t0_value);
+ t1 = space();
+
+ {
+ const foo = /*foo*/ ctx[1];
+ console.log({ foo });
+ debugger;
+ }
+
+ add_location(span, file, 6, 1, 82);
+ },
+ m: function mount(target, anchor) {
+ insert_dev(target, span, anchor);
+ append_dev(span, t0);
+ insert_dev(target, t1, anchor);
+ },
+ p: function update(ctx, dirty) {
+ if (dirty & /*things*/ 1 && t0_value !== (t0_value = /*thing*/ ctx[2].name + "")) set_data_dev(t0, t0_value);
+
+ if (dirty & /*foo*/ 2) {
+ const foo = /*foo*/ ctx[1];
+ console.log({ foo });
+ debugger;
+ }
+ },
+ d: function destroy(detaching) {
+ if (detaching) {
+ detach_dev(span);
+ detach_dev(t1);
+ }
+ }
+ };
+
+ dispatch_dev("SvelteRegisterBlock", {
+ block,
+ id: create_each_block.name,
+ type: "each",
+ source: "(6:0) {#each things as thing}",
+ ctx
+ });
+
+ return block;
+}
+
+function create_fragment(ctx) {
+ let t0;
+ let p;
+ let t1;
+ let t2;
+ let each_value = ensure_array_like_dev(/*things*/ ctx[0]);
+ let each_blocks = [];
+
+ for (let i = 0; i < each_value.length; i += 1) {
+ each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
+ }
+
+ const block = {
+ c: function create() {
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].c();
+ }
+
+ t0 = space();
+ p = element("p");
+ t1 = text("foo: ");
+ t2 = text(/*foo*/ ctx[1]);
+ add_location(p, file, 10, 0, 131);
+ },
+ l: function claim(nodes) {
+ throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
+ },
+ m: function mount(target, anchor) {
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ if (each_blocks[i]) {
+ each_blocks[i].m(target, anchor);
+ }
+ }
+
+ insert_dev(target, t0, anchor);
+ insert_dev(target, p, anchor);
+ append_dev(p, t1);
+ append_dev(p, t2);
+ },
+ p: function update(ctx, [dirty]) {
+ if (dirty & /*things*/ 1) {
+ each_value = ensure_array_like_dev(/*things*/ ctx[0]);
+ let i;
+
+ for (i = 0; i < each_value.length; i += 1) {
+ const child_ctx = get_each_context(ctx, each_value, i);
+
+ if (each_blocks[i]) {
+ each_blocks[i].p(child_ctx, dirty);
+ } else {
+ each_blocks[i] = create_each_block(child_ctx);
+ each_blocks[i].c();
+ each_blocks[i].m(t0.parentNode, t0);
+ }
+ }
+
+ for (; i < each_blocks.length; i += 1) {
+ each_blocks[i].d(1);
+ }
+
+ each_blocks.length = each_value.length;
+ }
+
+ if (dirty & /*foo*/ 2) set_data_dev(t2, /*foo*/ ctx[1]);
+ },
+ i: noop,
+ o: noop,
+ d: function destroy(detaching) {
+ if (detaching) {
+ detach_dev(t0);
+ detach_dev(p);
+ }
+
+ destroy_each(each_blocks, detaching);
+ }
+ };
+
+ dispatch_dev("SvelteRegisterBlock", {
+ block,
+ id: create_fragment.name,
+ type: "component",
+ source: "",
+ ctx
+ });
+
+ return block;
+}
+
+function instance($$self, $$props, $$invalidate) {
+ let { $$slots: slots = {}, $$scope } = $$props;
+ validate_slots('Component', slots, []);
+ let { things } = $$props;
+ let { foo } = $$props;
+
+ $$self.$$.on_mount.push(function () {
+ if (things === undefined && !('things' in $$props || $$self.$$.bound[$$self.$$.props['things']])) {
+ console.warn(" was created without expected prop 'things'");
+ }
+
+ if (foo === undefined && !('foo' in $$props || $$self.$$.bound[$$self.$$.props['foo']])) {
+ console.warn(" was created without expected prop 'foo'");
+ }
+ });
+
+ const writable_props = ['things', 'foo'];
+
+ Object.keys($$props).forEach(key => {
+ if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`);
+ });
+
+ $$self.$$set = $$props => {
+ if ('things' in $$props) $$invalidate(0, things = $$props.things);
+ if ('foo' in $$props) $$invalidate(1, foo = $$props.foo);
+ };
+
+ $$self.$capture_state = () => ({ things, foo });
+
+ $$self.$inject_state = $$props => {
+ if ('things' in $$props) $$invalidate(0, things = $$props.things);
+ if ('foo' in $$props) $$invalidate(1, foo = $$props.foo);
+ };
+
+ if ($$props && "$$inject" in $$props) {
+ $$self.$inject_state($$props.$$inject);
+ }
+
+ return [things, foo];
+}
+
+class Component extends SvelteComponentDev {
+ constructor(options) {
+ super(options);
+ init(this, options, instance, create_fragment, safe_not_equal, { things: 0, foo: 1 });
+
+ dispatch_dev("SvelteRegisterComponent", {
+ component: this,
+ tagName: "Component",
+ options,
+ id: create_fragment.name
+ });
+ }
+
+ get things() {
+ throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''");
+ }
+
+ set things(value) {
+ throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''");
+ }
+
+ get foo() {
+ throw new Error(": Props cannot be read directly from the component instance unless compiling with 'accessors: true' or ''");
+ }
+
+ set foo(value) {
+ throw new Error(": Props cannot be set directly on the component instance unless compiling with 'accessors: true' or ''");
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/debug-hoisted/_actual.js b/packages/svelte/test/js/samples/debug-hoisted/_actual.js
new file mode 100644
index 000000000..9fc4f7cf4
--- /dev/null
+++ b/packages/svelte/test/js/samples/debug-hoisted/_actual.js
@@ -0,0 +1,90 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponentDev,
+ dispatch_dev,
+ init,
+ noop,
+ safe_not_equal,
+ validate_slots
+} from "svelte/internal";
+
+const file = undefined;
+
+function create_fragment(ctx) {
+ const block = {
+ c: function create() {
+ {
+ const obj = /*obj*/ ctx[0];
+ const kobzol = /*kobzol*/ ctx[1];
+ console.log({ obj, kobzol });
+ debugger;
+ }
+ },
+ l: function claim(nodes) {
+ throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
+ },
+ m: noop,
+ p: function update(ctx, [dirty]) {
+ if (dirty & /*obj, kobzol*/ 3) {
+ const obj = /*obj*/ ctx[0];
+ const kobzol = /*kobzol*/ ctx[1];
+ console.log({ obj, kobzol });
+ debugger;
+ }
+ },
+ i: noop,
+ o: noop,
+ d: noop
+ };
+
+ dispatch_dev("SvelteRegisterBlock", {
+ block,
+ id: create_fragment.name,
+ type: "component",
+ source: "",
+ ctx
+ });
+
+ return block;
+}
+
+function instance($$self, $$props, $$invalidate) {
+ let { $$slots: slots = {}, $$scope } = $$props;
+ validate_slots('Component', slots, []);
+ let obj = { x: 5 };
+ let kobzol = 5;
+ const writable_props = [];
+
+ Object.keys($$props).forEach(key => {
+ if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`);
+ });
+
+ $$self.$capture_state = () => ({ obj, kobzol });
+
+ $$self.$inject_state = $$props => {
+ if ('obj' in $$props) $$invalidate(0, obj = $$props.obj);
+ if ('kobzol' in $$props) $$invalidate(1, kobzol = $$props.kobzol);
+ };
+
+ if ($$props && "$$inject" in $$props) {
+ $$self.$inject_state($$props.$$inject);
+ }
+
+ return [obj, kobzol];
+}
+
+class Component extends SvelteComponentDev {
+ constructor(options) {
+ super(options);
+ init(this, options, instance, create_fragment, safe_not_equal, {});
+
+ dispatch_dev("SvelteRegisterComponent", {
+ component: this,
+ tagName: "Component",
+ options,
+ id: create_fragment.name
+ });
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/debug-no-dependencies/_actual.js b/packages/svelte/test/js/samples/debug-no-dependencies/_actual.js
new file mode 100644
index 000000000..fb06e42e1
--- /dev/null
+++ b/packages/svelte/test/js/samples/debug-no-dependencies/_actual.js
@@ -0,0 +1,169 @@
+/* generated by Svelte vX.Y.Z */
+import {
+ SvelteComponentDev,
+ destroy_each,
+ detach_dev,
+ dispatch_dev,
+ empty,
+ ensure_array_like_dev,
+ init,
+ insert_dev,
+ noop,
+ safe_not_equal,
+ space,
+ text,
+ validate_slots
+} from "svelte/internal";
+
+const file = undefined;
+
+function get_each_context(ctx, list, i) {
+ const child_ctx = ctx.slice();
+ child_ctx[0] = list[i];
+ child_ctx[2] = i;
+ return child_ctx;
+}
+
+// (4:0) {#each things as thing, index}
+function create_each_block(ctx) {
+ let t0;
+ let t1_value = /*thing*/ ctx[0] + "";
+ let t1;
+
+ const block = {
+ c: function create() {
+ {
+ const index = /*index*/ ctx[2];
+ console.log({ index });
+ debugger;
+ }
+
+ t0 = space();
+ t1 = text(t1_value);
+ },
+ m: function mount(target, anchor) {
+ insert_dev(target, t0, anchor);
+ insert_dev(target, t1, anchor);
+ },
+ p: noop,
+ d: function destroy(detaching) {
+ if (detaching) {
+ detach_dev(t0);
+ detach_dev(t1);
+ }
+ }
+ };
+
+ dispatch_dev("SvelteRegisterBlock", {
+ block,
+ id: create_each_block.name,
+ type: "each",
+ source: "(4:0) {#each things as thing, index}",
+ ctx
+ });
+
+ return block;
+}
+
+function create_fragment(ctx) {
+ let each_1_anchor;
+ let each_value = ensure_array_like_dev(things);
+ let each_blocks = [];
+
+ for (let i = 0; i < each_value.length; i += 1) {
+ each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
+ }
+
+ const block = {
+ c: function create() {
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ each_blocks[i].c();
+ }
+
+ each_1_anchor = empty();
+ },
+ l: function claim(nodes) {
+ throw new Error("options.hydrate only works if the component was compiled with the `hydratable: true` option");
+ },
+ m: function mount(target, anchor) {
+ for (let i = 0; i < each_blocks.length; i += 1) {
+ if (each_blocks[i]) {
+ each_blocks[i].m(target, anchor);
+ }
+ }
+
+ insert_dev(target, each_1_anchor, anchor);
+ },
+ p: function update(ctx, [dirty]) {
+ if (dirty & /*things*/ 0) {
+ each_value = ensure_array_like_dev(things);
+ let i;
+
+ for (i = 0; i < each_value.length; i += 1) {
+ const child_ctx = get_each_context(ctx, each_value, i);
+
+ if (each_blocks[i]) {
+ each_blocks[i].p(child_ctx, dirty);
+ } else {
+ each_blocks[i] = create_each_block(child_ctx);
+ each_blocks[i].c();
+ each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
+ }
+ }
+
+ for (; i < each_blocks.length; i += 1) {
+ each_blocks[i].d(1);
+ }
+
+ each_blocks.length = each_value.length;
+ }
+ },
+ i: noop,
+ o: noop,
+ d: function destroy(detaching) {
+ if (detaching) {
+ detach_dev(each_1_anchor);
+ }
+
+ destroy_each(each_blocks, detaching);
+ }
+ };
+
+ dispatch_dev("SvelteRegisterBlock", {
+ block,
+ id: create_fragment.name,
+ type: "component",
+ source: "",
+ ctx
+ });
+
+ return block;
+}
+
+function instance($$self, $$props) {
+ let { $$slots: slots = {}, $$scope } = $$props;
+ validate_slots('Component', slots, []);
+ const writable_props = [];
+
+ Object.keys($$props).forEach(key => {
+ if (!~writable_props.indexOf(key) && key.slice(0, 2) !== '$$' && key !== 'slot') console.warn(` was created with unknown prop '${key}'`);
+ });
+
+ return [];
+}
+
+class Component extends SvelteComponentDev {
+ constructor(options) {
+ super(options);
+ init(this, options, instance, create_fragment, safe_not_equal, {});
+
+ dispatch_dev("SvelteRegisterComponent", {
+ component: this,
+ tagName: "Component",
+ options,
+ id: create_fragment.name
+ });
+ }
+}
+
+export default Component;
\ No newline at end of file
diff --git a/packages/svelte/test/js/samples/debug-ssr-foo/_actual.js b/packages/svelte/test/js/samples/debug-ssr-foo/_actual.js
new file mode 100644
index 000000000..250898fe7
--- /dev/null
+++ b/packages/svelte/test/js/samples/debug-ssr-foo/_actual.js
@@ -0,0 +1,15 @@
+/* generated by Svelte vX.Y.Z */
+import { create_ssr_component, debug, each, escape } from "svelte/internal";
+
+const Component = create_ssr_component(($$result, $$props, $$bindings, slots) => {
+ let { things } = $$props;
+ let { foo } = $$props;
+ if ($$props.things === void 0 && $$bindings.things && things !== void 0) $$bindings.things(things);
+ if ($$props.foo === void 0 && $$bindings.foo && foo !== void 0) $$bindings.foo(foo);
+
+ return `${each(things, thing => {
+ return `${escape(thing.name)} ${debug(null, 7, 2, { foo })}`;
+ })}
+
+
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/empty-sourcemap/_actual.html.map b/packages/svelte/test/preprocess/samples/empty-sourcemap/_actual.html.map
new file mode 100644
index 000000000..4d9dacc86
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/empty-sourcemap/_actual.html.map
@@ -0,0 +1,8 @@
+{
+ "version": 3,
+ "mappings": "AAAA,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG;;AAEzB,CAAC,KAAK;;;;AAIN,CAAC,CAAC,KAAK",
+ "names": [],
+ "sources": [
+ "input.svelte"
+ ]
+}
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/filename/_actual.html b/packages/svelte/test/preprocess/samples/filename/_actual.html
new file mode 100644
index 000000000..9eece2e22
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/filename/_actual.html
@@ -0,0 +1,3 @@
+
Hello file.svelte!
+
+
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/filename/_actual.html.map b/packages/svelte/test/preprocess/samples/filename/_actual.html.map
new file mode 100644
index 000000000..0258c326c
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/filename/_actual.html.map
@@ -0,0 +1,8 @@
+{
+ "version": 3,
+ "mappings": "AAAA,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;AAC1B,CAAC,KAAK,6BAAoC,CAAC,CAAC,KAAK;AACjD,CAAC,MAAM,4BAAoC,CAAC,CAAC,MAAM",
+ "names": [],
+ "sources": [
+ "file.svelte"
+ ]
+}
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/ignores-null/_actual.html b/packages/svelte/test/preprocess/samples/ignores-null/_actual.html
new file mode 100644
index 000000000..b3fc25b64
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/ignores-null/_actual.html
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/ignores-null/_actual.html.map b/packages/svelte/test/preprocess/samples/ignores-null/_actual.html.map
new file mode 100644
index 000000000..93351e190
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/ignores-null/_actual.html.map
@@ -0,0 +1,8 @@
+{
+ "version": 3,
+ "mappings": "AAAA,CAAC,MAAM;AACP,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AACzB,CAAC,CAAC,MAAM",
+ "names": [],
+ "sources": [
+ "input.svelte"
+ ]
+}
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/markup/_actual.html b/packages/svelte/test/preprocess/samples/markup/_actual.html
new file mode 100644
index 000000000..efe5048cb
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/markup/_actual.html
@@ -0,0 +1 @@
+
Hello world!
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/multiple-preprocessors/_actual.html b/packages/svelte/test/preprocess/samples/multiple-preprocessors/_actual.html
new file mode 100644
index 000000000..a92d6e2bf
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/multiple-preprocessors/_actual.html
@@ -0,0 +1,11 @@
+
three
+
+
+
+
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/multiple-preprocessors/_actual.html.map b/packages/svelte/test/preprocess/samples/multiple-preprocessors/_actual.html.map
new file mode 100644
index 000000000..65935e48c
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/multiple-preprocessors/_actual.html.map
@@ -0,0 +1,8 @@
+{
+ "version": 3,
+ "mappings": "AAAA,CAAC,CAAC,CAAC,KAAK,CAAC;;AAET,CAAC,KAAK;;;;AAIN,CAAC,CAAC,KAAK;;AAEP,CAAC,MAAM;;AAEP,CAAC,CAAC,MAAM",
+ "names": [],
+ "sources": [
+ "input.svelte"
+ ]
+}
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/partial-names/_actual.html b/packages/svelte/test/preprocess/samples/partial-names/_actual.html
new file mode 100644
index 000000000..34c789a82
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/partial-names/_actual.html
@@ -0,0 +1,8 @@
+
+ foo
+
+
+
+ foo
+
+
diff --git a/packages/svelte/test/preprocess/samples/partial-names/_actual.html.map b/packages/svelte/test/preprocess/samples/partial-names/_actual.html.map
new file mode 100644
index 000000000..f53f16db2
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/partial-names/_actual.html.map
@@ -0,0 +1,8 @@
+{
+ "version": 3,
+ "mappings": "AAAA,CAAC,MAAM,CAAC,GAAG;AACX,CAAC;AACD,CAAC,CAAC,MAAM,CAAC,GAAG;AACZ,CAAC,MAAM,CAEP,CAAC,CAAC,MAAM;AACR,CAAC,KAAK,CAAC,GAAG;AACV,CAAC;AACD,CAAC,CAAC,KAAK,CAAC,GAAG;AACX,CAAC,KAAK,CAEN,CAAC,CAAC,KAAK",
+ "names": [],
+ "sources": [
+ "input.svelte"
+ ]
+}
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/script-multiple/_actual.html b/packages/svelte/test/preprocess/samples/script-multiple/_actual.html
new file mode 100644
index 000000000..64fe4c1f2
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/script-multiple/_actual.html
@@ -0,0 +1,9 @@
+
+
+
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/script-multiple/_actual.html.map b/packages/svelte/test/preprocess/samples/script-multiple/_actual.html.map
new file mode 100644
index 000000000..ba9bc2f6a
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/script-multiple/_actual.html.map
@@ -0,0 +1,8 @@
+{
+ "version": 3,
+ "mappings": "AAAA,CAAC,MAAM;;AAEP,CAAC,CAAC,MAAM;AACR,CAAC,KAAK;AACN,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;AACf,CAAC,CAAC,KAAK;AACP,CAAC,MAAM;;AAEP,CAAC,CAAC,MAAM",
+ "names": [],
+ "sources": [
+ "input.svelte"
+ ]
+}
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/script-self-closing/_actual.html b/packages/svelte/test/preprocess/samples/script-self-closing/_actual.html
new file mode 100644
index 000000000..291287688
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/script-self-closing/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/script-self-closing/_actual.html.map b/packages/svelte/test/preprocess/samples/script-self-closing/_actual.html.map
new file mode 100644
index 000000000..e8bf74dba
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/script-self-closing/_actual.html.map
@@ -0,0 +1,8 @@
+{
+ "version": 3,
+ "mappings": "AAAA,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,mBAAC,CAAC,CAAC,MAAM",
+ "names": [],
+ "sources": [
+ "input.svelte"
+ ]
+}
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/script/_actual.html b/packages/svelte/test/preprocess/samples/script/_actual.html
new file mode 100644
index 000000000..5bef15aab
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/script/_actual.html
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/script/_actual.html.map b/packages/svelte/test/preprocess/samples/script/_actual.html.map
new file mode 100644
index 000000000..d5bf98483
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/script/_actual.html.map
@@ -0,0 +1,8 @@
+{
+ "version": 3,
+ "mappings": "AAAA,CAAC,MAAM,CAAC;AACR,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAc,CAAC,CAAC;AAC7B,CAAC,CAAC,MAAM",
+ "names": [],
+ "sources": [
+ "input.svelte"
+ ]
+}
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/style-async/_actual.html b/packages/svelte/test/preprocess/samples/style-async/_actual.html
new file mode 100644
index 000000000..2847cc525
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/style-async/_actual.html
@@ -0,0 +1,7 @@
+
$brand
+
+
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/style-async/_actual.html.map b/packages/svelte/test/preprocess/samples/style-async/_actual.html.map
new file mode 100644
index 000000000..2cbdf5a67
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/style-async/_actual.html.map
@@ -0,0 +1,8 @@
+{
+ "version": 3,
+ "mappings": "AAAA,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG;;AAEpC,CAAC,KAAK;;;;AAIN,CAAC,CAAC,KAAK",
+ "names": [],
+ "sources": [
+ "input.svelte"
+ ]
+}
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/style-attributes-modified-longer/_actual.html b/packages/svelte/test/preprocess/samples/style-attributes-modified-longer/_actual.html
new file mode 100644
index 000000000..e9971f7f1
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/style-attributes-modified-longer/_actual.html
@@ -0,0 +1,5 @@
+foo
+
+
+
+bar
diff --git a/packages/svelte/test/preprocess/samples/style-attributes-modified-longer/_actual.html.map b/packages/svelte/test/preprocess/samples/style-attributes-modified-longer/_actual.html.map
new file mode 100644
index 000000000..28397f95d
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/style-attributes-modified-longer/_actual.html.map
@@ -0,0 +1,8 @@
+{
+ "version": 3,
+ "mappings": "AAAA;;AAEA,MAAM,mCAAa,UAAM,CAAC,CAAC,KAAK;;AAEhC",
+ "names": [],
+ "sources": [
+ "input.svelte"
+ ]
+}
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/style-attributes-modified/_actual.html b/packages/svelte/test/preprocess/samples/style-attributes-modified/_actual.html
new file mode 100644
index 000000000..ff8ca98bf
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/style-attributes-modified/_actual.html
@@ -0,0 +1,5 @@
+foo
+
+
+
+bar
diff --git a/packages/svelte/test/preprocess/samples/style-attributes-modified/_actual.html.map b/packages/svelte/test/preprocess/samples/style-attributes-modified/_actual.html.map
new file mode 100644
index 000000000..65f340c1c
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/style-attributes-modified/_actual.html.map
@@ -0,0 +1,8 @@
+{
+ "version": 3,
+ "mappings": "AAAA;;AAEA,MAAM,WAAiC,UAAM,CAAC,CAAC,KAAK;;AAEpD",
+ "names": [],
+ "sources": [
+ "input.svelte"
+ ]
+}
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/style-attributes/_actual.html b/packages/svelte/test/preprocess/samples/style-attributes/_actual.html
new file mode 100644
index 000000000..c83defeeb
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/style-attributes/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/style-attributes/_actual.html.map b/packages/svelte/test/preprocess/samples/style-attributes/_actual.html.map
new file mode 100644
index 000000000..2eca3ec76
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/style-attributes/_actual.html.map
@@ -0,0 +1,8 @@
+{
+ "version": 3,
+ "mappings": "AAAA,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,UAAO,CAAC,CAAC,KAAK",
+ "names": [],
+ "sources": [
+ "input.svelte"
+ ]
+}
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/style-self-closing/_actual.html b/packages/svelte/test/preprocess/samples/style-self-closing/_actual.html
new file mode 100644
index 000000000..c376cd00c
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/style-self-closing/_actual.html
@@ -0,0 +1,3 @@
+
$brand
+
+
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/style-self-closing/_actual.html.map b/packages/svelte/test/preprocess/samples/style-self-closing/_actual.html.map
new file mode 100644
index 000000000..6bc93ab22
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/style-self-closing/_actual.html.map
@@ -0,0 +1,8 @@
+{
+ "version": 3,
+ "mappings": "AAAA,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG;;AAEpC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,oBAAC,CAAC,CAAC,KAAK",
+ "names": [],
+ "sources": [
+ "input.svelte"
+ ]
+}
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/style/_actual.html b/packages/svelte/test/preprocess/samples/style/_actual.html
new file mode 100644
index 000000000..2847cc525
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/style/_actual.html
@@ -0,0 +1,7 @@
+
$brand
+
+
\ No newline at end of file
diff --git a/packages/svelte/test/preprocess/samples/style/_actual.html.map b/packages/svelte/test/preprocess/samples/style/_actual.html.map
new file mode 100644
index 000000000..2cbdf5a67
--- /dev/null
+++ b/packages/svelte/test/preprocess/samples/style/_actual.html.map
@@ -0,0 +1,8 @@
+{
+ "version": 3,
+ "mappings": "AAAA,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG;;AAEpC,CAAC,KAAK;;;;AAIN,CAAC,CAAC,KAAK",
+ "names": [],
+ "sources": [
+ "input.svelte"
+ ]
+}
\ No newline at end of file
diff --git a/packages/svelte/test/runtime/shards/runtime_1.test.js b/packages/svelte/test/runtime/shards/runtime_1.test.js
new file mode 100644
index 000000000..da21445ba
--- /dev/null
+++ b/packages/svelte/test/runtime/shards/runtime_1.test.js
@@ -0,0 +1,3 @@
+// @vitest-environment jsdom
+import { run_shard } from '../runtime.shared.js';
+run_shard(1, 1);
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/attribute-boolean/_actual.html b/packages/svelte/test/server-side-rendering/samples/attribute-boolean/_actual.html
new file mode 100644
index 000000000..56750e91d
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/attribute-boolean/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/attribute-dynamic/_actual.html b/packages/svelte/test/server-side-rendering/samples/attribute-dynamic/_actual.html
new file mode 100644
index 000000000..896038291
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/attribute-dynamic/_actual.html
@@ -0,0 +1 @@
+
aquamarine sans-serif
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/attribute-escape-quotes-spread-2/_actual.html b/packages/svelte/test/server-side-rendering/samples/attribute-escape-quotes-spread-2/_actual.html
new file mode 100644
index 000000000..c9c3c0e35
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/attribute-escape-quotes-spread-2/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/attribute-escaped-quotes-spread/_actual.html b/packages/svelte/test/server-side-rendering/samples/attribute-escaped-quotes-spread/_actual.html
new file mode 100644
index 000000000..39292c2d1
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/attribute-escaped-quotes-spread/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/attribute-escaped-quotes/_actual.html b/packages/svelte/test/server-side-rendering/samples/attribute-escaped-quotes/_actual.html
new file mode 100644
index 000000000..c63ab3488
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/attribute-escaped-quotes/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/attribute-spread-with-null/_actual.html b/packages/svelte/test/server-side-rendering/samples/attribute-spread-with-null/_actual.html
new file mode 100644
index 000000000..281c6866c
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/attribute-spread-with-null/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/attribute-static/_actual.html b/packages/svelte/test/server-side-rendering/samples/attribute-static/_actual.html
new file mode 100644
index 000000000..99ed594ea
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/attribute-static/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/bindings-empty-string/_actual.html b/packages/svelte/test/server-side-rendering/samples/bindings-empty-string/_actual.html
new file mode 100644
index 000000000..f0a30b7f9
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/bindings-empty-string/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/bindings-group/_actual.html b/packages/svelte/test/server-side-rendering/samples/bindings-group/_actual.html
new file mode 100644
index 000000000..9bae00b6b
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/bindings-group/_actual.html
@@ -0,0 +1 @@
+
Cheese
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/bindings-readonly/_actual.html b/packages/svelte/test/server-side-rendering/samples/bindings-readonly/_actual.html
new file mode 100644
index 000000000..e7339faa6
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/bindings-readonly/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/bindings-zero/_actual.html b/packages/svelte/test/server-side-rendering/samples/bindings-zero/_actual.html
new file mode 100644
index 000000000..73d2b65a9
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/bindings-zero/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/bindings/_actual.html b/packages/svelte/test/server-side-rendering/samples/bindings/_actual.html
new file mode 100644
index 000000000..cd8e347cd
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/bindings/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/comment-preserve/_actual.html b/packages/svelte/test/server-side-rendering/samples/comment-preserve/_actual.html
new file mode 100644
index 000000000..e3f82ea2f
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/comment-preserve/_actual.html
@@ -0,0 +1 @@
+
before
after
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/comment/_actual.html b/packages/svelte/test/server-side-rendering/samples/comment/_actual.html
new file mode 100644
index 000000000..394dfd948
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/comment/_actual.html
@@ -0,0 +1 @@
+
before
after
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/component-binding-renamed/_actual.html b/packages/svelte/test/server-side-rendering/samples/component-binding-renamed/_actual.html
new file mode 100644
index 000000000..8009a9607
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/component-binding-renamed/_actual.html
@@ -0,0 +1 @@
+1:foo:1
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/component-binding/_actual.html b/packages/svelte/test/server-side-rendering/samples/component-binding/_actual.html
new file mode 100644
index 000000000..8009a9607
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/component-binding/_actual.html
@@ -0,0 +1 @@
+1:foo:1
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/component-data-dynamic/_actual.html b/packages/svelte/test/server-side-rendering/samples/component-data-dynamic/_actual.html
new file mode 100644
index 000000000..cd3134d18
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/component-data-dynamic/_actual.html
@@ -0,0 +1 @@
+
foo: lol
baz: 42 (number)
qux: this is a piece of string
quux: core
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/component-data-empty/_actual.html b/packages/svelte/test/server-side-rendering/samples/component-data-empty/_actual.html
new file mode 100644
index 000000000..f423fab39
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/component-data-empty/_actual.html
@@ -0,0 +1 @@
+
foo: ''
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/component-refs-and-attributes/_actual.html b/packages/svelte/test/server-side-rendering/samples/component-refs-and-attributes/_actual.html
new file mode 100644
index 000000000..bc50561da
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/component-refs-and-attributes/_actual.html
@@ -0,0 +1 @@
+
42
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/component-refs/_actual.html b/packages/svelte/test/server-side-rendering/samples/component-refs/_actual.html
new file mode 100644
index 000000000..d355c1968
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/component-refs/_actual.html
@@ -0,0 +1 @@
+
widget
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/component-with-different-extension/_actual.html b/packages/svelte/test/server-side-rendering/samples/component-with-different-extension/_actual.html
new file mode 100644
index 000000000..715d1a85c
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/component-with-different-extension/_actual.html
@@ -0,0 +1 @@
+
i am a widget
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/component-yield/_actual.html b/packages/svelte/test/server-side-rendering/samples/component-yield/_actual.html
new file mode 100644
index 000000000..3c0acf1a8
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/component-yield/_actual.html
@@ -0,0 +1 @@
+
Hello
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/component/_actual.html b/packages/svelte/test/server-side-rendering/samples/component/_actual.html
new file mode 100644
index 000000000..715d1a85c
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/component/_actual.html
@@ -0,0 +1 @@
+
i am a widget
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/computed/_actual.html b/packages/svelte/test/server-side-rendering/samples/computed/_actual.html
new file mode 100644
index 000000000..106f2409a
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/computed/_actual.html
@@ -0,0 +1 @@
+
1 + 2 = 3
3 * 3 = 9
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/constructor-prefer-passed-context/_actual.html b/packages/svelte/test/server-side-rendering/samples/constructor-prefer-passed-context/_actual.html
new file mode 100644
index 000000000..af5aa08e5
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/constructor-prefer-passed-context/_actual.html
@@ -0,0 +1 @@
+
Value in child component: undefined
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/default-data-override/_actual.html b/packages/svelte/test/server-side-rendering/samples/default-data-override/_actual.html
new file mode 100644
index 000000000..cfe6edcec
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/default-data-override/_actual.html
@@ -0,0 +1 @@
+
2
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/default-data/_actual.html b/packages/svelte/test/server-side-rendering/samples/default-data/_actual.html
new file mode 100644
index 000000000..40001b681
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/default-data/_actual.html
@@ -0,0 +1 @@
+
1
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/directives/_actual.html b/packages/svelte/test/server-side-rendering/samples/directives/_actual.html
new file mode 100644
index 000000000..13cd34a99
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/directives/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/dynamic-element-string/_actual.html b/packages/svelte/test/server-side-rendering/samples/dynamic-element-string/_actual.html
new file mode 100644
index 000000000..567a9ce3d
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/dynamic-element-string/_actual.html
@@ -0,0 +1 @@
+
Foo
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/dynamic-element-variable/_actual.html b/packages/svelte/test/server-side-rendering/samples/dynamic-element-variable/_actual.html
new file mode 100644
index 000000000..172244f93
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/dynamic-element-variable/_actual.html
@@ -0,0 +1 @@
+
Foo
Bar
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/dynamic-text-escaped/_actual.html b/packages/svelte/test/server-side-rendering/samples/dynamic-text-escaped/_actual.html
new file mode 100644
index 000000000..a02b6acdb
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/dynamic-text-escaped/_actual.html
@@ -0,0 +1 @@
+<p>this should be <em>escaped</em> & so should 'this'</p>
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/dynamic-text/_actual.html b/packages/svelte/test/server-side-rendering/samples/dynamic-text/_actual.html
new file mode 100644
index 000000000..85c882939
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/dynamic-text/_actual.html
@@ -0,0 +1 @@
+it works
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/each-block/_actual.html b/packages/svelte/test/server-side-rendering/samples/each-block/_actual.html
new file mode 100644
index 000000000..9f0c3c2b5
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/each-block/_actual.html
@@ -0,0 +1 @@
+
1: alligator
2: beetle
3: cuckoo
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/empty-elements-closed/_actual.html b/packages/svelte/test/server-side-rendering/samples/empty-elements-closed/_actual.html
new file mode 100644
index 000000000..1ea661184
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/empty-elements-closed/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/entities/_actual.html b/packages/svelte/test/server-side-rendering/samples/entities/_actual.html
new file mode 100644
index 000000000..6ecbcf1a8
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/entities/_actual.html
@@ -0,0 +1 @@
+it's working
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/head-html-and-component/_actual-head.html b/packages/svelte/test/server-side-rendering/samples/head-html-and-component/_actual-head.html
new file mode 100644
index 000000000..f2b26c47e
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/head-html-and-component/_actual-head.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/head-html-and-component/_actual.html b/packages/svelte/test/server-side-rendering/samples/head-html-and-component/_actual.html
new file mode 100644
index 000000000..0519ecba6
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/head-html-and-component/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/head-meta-hydrate-duplicate/_actual-head.html b/packages/svelte/test/server-side-rendering/samples/head-meta-hydrate-duplicate/_actual-head.html
new file mode 100644
index 000000000..5aa410c0e
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/head-meta-hydrate-duplicate/_actual-head.html
@@ -0,0 +1 @@
+Some Title
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/head-meta-hydrate-duplicate/_actual.html b/packages/svelte/test/server-side-rendering/samples/head-meta-hydrate-duplicate/_actual.html
new file mode 100644
index 000000000..8edc2860a
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/head-meta-hydrate-duplicate/_actual.html
@@ -0,0 +1 @@
+
Just a dummy page.
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/head-multiple-title/_actual-head.html b/packages/svelte/test/server-side-rendering/samples/head-multiple-title/_actual-head.html
new file mode 100644
index 000000000..af5c5feba
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/head-multiple-title/_actual-head.html
@@ -0,0 +1 @@
+B
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/head-multiple-title/_actual.html b/packages/svelte/test/server-side-rendering/samples/head-multiple-title/_actual.html
new file mode 100644
index 000000000..136d06384
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/head-multiple-title/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/head-no-duplicates-with-binding/_actual-head.html b/packages/svelte/test/server-side-rendering/samples/head-no-duplicates-with-binding/_actual-head.html
new file mode 100644
index 000000000..4be5391bc
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/head-no-duplicates-with-binding/_actual-head.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/head-no-duplicates-with-binding/_actual.html b/packages/svelte/test/server-side-rendering/samples/head-no-duplicates-with-binding/_actual.html
new file mode 100644
index 000000000..0519ecba6
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/head-no-duplicates-with-binding/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/head-title/_actual-head.html b/packages/svelte/test/server-side-rendering/samples/head-title/_actual-head.html
new file mode 100644
index 000000000..7d696352f
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/head-title/_actual-head.html
@@ -0,0 +1 @@
+a custom title
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/head-title/_actual.html b/packages/svelte/test/server-side-rendering/samples/head-title/_actual.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/svelte/test/server-side-rendering/samples/helpers/_actual.html b/packages/svelte/test/server-side-rendering/samples/helpers/_actual.html
new file mode 100644
index 000000000..4b5c34ffb
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/helpers/_actual.html
@@ -0,0 +1 @@
+
3
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/if-block-false/_actual.html b/packages/svelte/test/server-side-rendering/samples/if-block-false/_actual.html
new file mode 100644
index 000000000..e69de29bb
diff --git a/packages/svelte/test/server-side-rendering/samples/if-block-true/_actual.html b/packages/svelte/test/server-side-rendering/samples/if-block-true/_actual.html
new file mode 100644
index 000000000..df979b8d5
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/if-block-true/_actual.html
@@ -0,0 +1 @@
+
foo is true
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/import-non-component/_actual.html b/packages/svelte/test/server-side-rendering/samples/import-non-component/_actual.html
new file mode 100644
index 000000000..62283bf51
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/import-non-component/_actual.html
@@ -0,0 +1 @@
+
i got 99 problems
the answer is 42
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/raw-mustaches/_actual.html b/packages/svelte/test/server-side-rendering/samples/raw-mustaches/_actual.html
new file mode 100644
index 000000000..c44897a0c
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/raw-mustaches/_actual.html
@@ -0,0 +1 @@
+beforeraw html!!!\o/after
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/sanitize-name/_actual.html b/packages/svelte/test/server-side-rendering/samples/sanitize-name/_actual.html
new file mode 100644
index 000000000..5ed8b34a5
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/sanitize-name/_actual.html
@@ -0,0 +1 @@
+
foo!
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/spread-attributes-boolean/_actual.html b/packages/svelte/test/server-side-rendering/samples/spread-attributes-boolean/_actual.html
new file mode 100644
index 000000000..3772bb367
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/spread-attributes-boolean/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/spread-attributes-white-space/_actual.html b/packages/svelte/test/server-side-rendering/samples/spread-attributes-white-space/_actual.html
new file mode 100644
index 000000000..dfefdbb0d
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/spread-attributes-white-space/_actual.html
@@ -0,0 +1,3 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/spread-attributes/_actual.html b/packages/svelte/test/server-side-rendering/samples/spread-attributes/_actual.html
new file mode 100644
index 000000000..8ade9d267
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/spread-attributes/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/static-div/_actual.html b/packages/svelte/test/server-side-rendering/samples/static-div/_actual.html
new file mode 100644
index 000000000..281c6866c
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/static-div/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/static-text/_actual.html b/packages/svelte/test/server-side-rendering/samples/static-text/_actual.html
new file mode 100644
index 000000000..b649a9bf8
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/static-text/_actual.html
@@ -0,0 +1 @@
+some text
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/styles-nested/_actual.css b/packages/svelte/test/server-side-rendering/samples/styles-nested/_actual.css
new file mode 100644
index 000000000..775ae8a91
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/styles-nested/_actual.css
@@ -0,0 +1,2 @@
+div.svelte-bzh57p{color:red}
+div.svelte-4yw8vx{color:green}
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/styles-nested/_actual.html b/packages/svelte/test/server-side-rendering/samples/styles-nested/_actual.html
new file mode 100644
index 000000000..ddb55ae5f
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/styles-nested/_actual.html
@@ -0,0 +1 @@
+
red
green: foo
green: bar
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/styles/_actual.css b/packages/svelte/test/server-side-rendering/samples/styles/_actual.css
new file mode 100644
index 000000000..2025c64f8
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/styles/_actual.css
@@ -0,0 +1 @@
+div.svelte-bzh57p{color:red}
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/styles/_actual.html b/packages/svelte/test/server-side-rendering/samples/styles/_actual.html
new file mode 100644
index 000000000..4c164bd84
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/styles/_actual.html
@@ -0,0 +1 @@
+
red
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/text-area-bind/_actual.html b/packages/svelte/test/server-side-rendering/samples/text-area-bind/_actual.html
new file mode 100644
index 000000000..c3c8441f5
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/text-area-bind/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/textarea-children/_actual.html b/packages/svelte/test/server-side-rendering/samples/textarea-children/_actual.html
new file mode 100644
index 000000000..6e4d60885
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/textarea-children/_actual.html
@@ -0,0 +1,2 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/textarea-value/_actual.html b/packages/svelte/test/server-side-rendering/samples/textarea-value/_actual.html
new file mode 100644
index 000000000..cd39aabde
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/textarea-value/_actual.html
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/packages/svelte/test/server-side-rendering/samples/triple/_actual.html b/packages/svelte/test/server-side-rendering/samples/triple/_actual.html
new file mode 100644
index 000000000..924d26dd6
--- /dev/null
+++ b/packages/svelte/test/server-side-rendering/samples/triple/_actual.html
@@ -0,0 +1 @@
+
html
\ No newline at end of file
diff --git a/packages/svelte/test/sourcemaps/samples/attached-sourcemap/_actual.css b/packages/svelte/test/sourcemaps/samples/attached-sourcemap/_actual.css
new file mode 100644
index 000000000..fa3a3c421
--- /dev/null
+++ b/packages/svelte/test/sourcemaps/samples/attached-sourcemap/_actual.css
@@ -0,0 +1,2 @@
+.done_replace_style_2.svelte-o6vre{color:red}
+/*# sourceMappingURL=_actual.css.map */
\ No newline at end of file
diff --git a/packages/svelte/test/sourcemaps/samples/attached-sourcemap/_actual.css.map b/packages/svelte/test/sourcemaps/samples/attached-sourcemap/_actual.css.map
new file mode 100644
index 000000000..1d1f53ba7
--- /dev/null
+++ b/packages/svelte/test/sourcemaps/samples/attached-sourcemap/_actual.css.map
@@ -0,0 +1,11 @@
+{
+ "version": 3,
+ "file": "input.svelte",
+ "mappings": "AACCA,kCAAkB,CACjB,KAAK,CAAE,GACR",
+ "names": [
+ ".replace_me_style"
+ ],
+ "sources": [
+ "input.svelte"
+ ]
+}
\ No newline at end of file
diff --git a/packages/svelte/test/sourcemaps/samples/attached-sourcemap/_actual.js b/packages/svelte/test/sourcemaps/samples/attached-sourcemap/_actual.js
new file mode 100644
index 000000000..8b7038e65
--- /dev/null
+++ b/packages/svelte/test/sourcemaps/samples/attached-sourcemap/_actual.js
@@ -0,0 +1,53 @@
+/* input.svelte generated by Svelte vx.x.x */
+import {
+ SvelteComponent,
+ append_styles,
+ attr,
+ detach,
+ element,
+ init,
+ insert,
+ noop,
+ safe_not_equal
+} from "svelte/internal";
+
+import "svelte/internal/disclose-version";
+
+function add_css(target) {
+ append_styles(target, "svelte-o6vre", ".done_replace_style_2.svelte-o6vre{color:red}");
+}
+
+function create_fragment(ctx) {
+ let h1;
+
+ return {
+ c() {
+ h1 = element("h1");
+ h1.textContent = `${done_replace_script_2}`;
+ attr(h1, "class", "done_replace_style_2 svelte-o6vre");
+ },
+ m(target, anchor) {
+ insert(target, h1, anchor);
+ },
+ p: noop,
+ i: noop,
+ o: noop,
+ d(detaching) {
+ if (detaching) {
+ detach(h1);
+ }
+ }
+ };
+}
+
+let done_replace_script_2 = 'hello';
+
+class Input extends SvelteComponent {
+ constructor(options) {
+ super();
+ init(this, options, null, create_fragment, safe_not_equal, {}, add_css);
+ }
+}
+
+export default Input;
+//# sourceMappingURL=_actual.js.map
\ No newline at end of file
diff --git a/packages/svelte/test/sourcemaps/samples/attached-sourcemap/_actual.js.map b/packages/svelte/test/sourcemaps/samples/attached-sourcemap/_actual.js.map
new file mode 100644
index 000000000..0d33d46aa
--- /dev/null
+++ b/packages/svelte/test/sourcemaps/samples/attached-sourcemap/_actual.js.map
@@ -0,0 +1,10 @@
+{
+ "version": 3,
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;uBAUkC,qBAAqB;;;;GAAvD,MAA4D;;;;;;;;;;;;;IAH1DA,qBAAiB,GAAG,OAAM",
+ "names": [
+ "replace_me_script"
+ ],
+ "sources": [
+ "input.svelte"
+ ]
+}
\ No newline at end of file
diff --git a/packages/svelte/test/sourcemaps/samples/attached-sourcemap/_actual.svelte b/packages/svelte/test/sourcemaps/samples/attached-sourcemap/_actual.svelte
new file mode 100644
index 000000000..9055fe6ad
--- /dev/null
+++ b/packages/svelte/test/sourcemaps/samples/attached-sourcemap/_actual.svelte
@@ -0,0 +1,19 @@
+
+
+