diff --git a/cmd/astro-wasm/astro-wasm.go b/cmd/astro-wasm/astro-wasm.go
index 3dfdba83..bcaef443 100644
--- a/cmd/astro-wasm/astro-wasm.go
+++ b/cmd/astro-wasm/astro-wasm.go
@@ -143,21 +143,27 @@ func makeTransformOptions(options js.Value) transform.TransformOptions {
 		experimentalScriptOrder = true
 	}
 
+	experimentalExactParsingThingy := false
+	if jsBool(options.Get("experimentalExactParsingThingy")) {
+		experimentalExactParsingThingy = true
+	}
+
 	return transform.TransformOptions{
-		Filename:                filename,
-		NormalizedFilename:      normalizedFilename,
-		InternalURL:             internalURL,
-		SourceMap:               sourcemap,
-		AstroGlobalArgs:         astroGlobalArgs,
-		Compact:                 compact,
-		ResolvePath:             resolvePathFn,
-		PreprocessStyle:         preprocessStyle,
-		ResultScopedSlot:        scopedSlot,
-		ScopedStyleStrategy:     scopedStyleStrategy,
-		TransitionsAnimationURL: transitionsAnimationURL,
-		AnnotateSourceFile:      annotateSourceFile,
-		RenderScript:            renderScript,
-		ExperimentalScriptOrder: experimentalScriptOrder,
+		Filename:                       filename,
+		NormalizedFilename:             normalizedFilename,
+		InternalURL:                    internalURL,
+		SourceMap:                      sourcemap,
+		AstroGlobalArgs:                astroGlobalArgs,
+		Compact:                        compact,
+		ResolvePath:                    resolvePathFn,
+		PreprocessStyle:                preprocessStyle,
+		ResultScopedSlot:               scopedSlot,
+		ScopedStyleStrategy:            scopedStyleStrategy,
+		TransitionsAnimationURL:        transitionsAnimationURL,
+		AnnotateSourceFile:             annotateSourceFile,
+		RenderScript:                   renderScript,
+		ExperimentalScriptOrder:        experimentalScriptOrder,
+		ExperimentalExactParsingThingy: experimentalExactParsingThingy,
 	}
 }
 
@@ -257,7 +263,7 @@ func Parse() any {
 		h := handler.NewHandler(source, parseOptions.Filename)
 
 		var doc *astro.Node
-		doc, err := astro.ParseWithOptions(strings.NewReader(source), astro.ParseOptionWithHandler(h), astro.ParseOptionEnableLiteral(true))
+		doc, err := astro.ParseWithOptions(strings.NewReader(source), astro.ParseOptionWithHandler(h), astro.ParseOptionEnableLiteral(true), astro.ParseOptionExperimentalBetterLiteralThingy(transformOptions.ExperimentalExactParsingThingy))
 		if err != nil {
 			h.AppendError(err)
 		}
@@ -281,7 +287,7 @@ func ConvertToTSX() any {
 		h := handler.NewHandler(source, transformOptions.Filename)
 
 		var doc *astro.Node
-		doc, err := astro.ParseWithOptions(strings.NewReader(source), astro.ParseOptionWithHandler(h), astro.ParseOptionEnableLiteral(true))
+		doc, err := astro.ParseWithOptions(strings.NewReader(source), astro.ParseOptionWithHandler(h), astro.ParseOptionEnableLiteral(true), astro.ParseOptionExperimentalBetterLiteralThingy(transformOptions.ExperimentalExactParsingThingy))
 		if err != nil {
 			h.AppendError(err)
 		}
@@ -335,7 +341,7 @@ func Transform() any {
 					}
 				}()
 
-				doc, err := astro.ParseWithOptions(strings.NewReader(source), astro.ParseOptionWithHandler(h))
+				doc, err := astro.ParseWithOptions(strings.NewReader(source), astro.ParseOptionWithHandler(h), astro.ParseOptionExperimentalBetterLiteralThingy(transformOptions.ExperimentalExactParsingThingy))
 				if err != nil {
 					reject.Invoke(wasm_utils.ErrorToJSError(h, err))
 					return
diff --git a/internal/doctype.go b/internal/doctype.go
index 934abf91..faba7e0b 100644
--- a/internal/doctype.go
+++ b/internal/doctype.go
@@ -154,3 +154,53 @@ var quirkyIDs = []string{
 	"-//webtechs//dtd mozilla html 2.0//",
 	"-//webtechs//dtd mozilla html//",
 }
+
+func parseDoctypeExact(s string) (n *Node) {
+	n = &Node{Type: DoctypeNode}
+
+	// Find the name.
+	space := strings.IndexAny(s, whitespace)
+	if space == -1 {
+		space = len(s)
+	}
+	n.Data = s[:space]
+	n.Data = strings.ToLower(n.Data)
+	s = strings.TrimLeft(s[space:], whitespace)
+
+	if len(s) < 6 {
+		// It can't start with "PUBLIC" or "SYSTEM".
+		// Ignore the rest of the string.
+		return n
+	}
+
+	key := strings.ToLower(s[:6])
+	s = s[6:]
+	for key == "public" || key == "system" {
+		s = strings.TrimLeft(s, whitespace)
+		if s == "" {
+			break
+		}
+		quote := s[0]
+		if quote != '"' && quote != '\'' {
+			break
+		}
+		s = s[1:]
+		q := strings.IndexRune(s, rune(quote))
+		var id string
+		if q == -1 {
+			id = s
+			s = ""
+		} else {
+			id = s[:q]
+			s = s[q+1:]
+		}
+		n.Attr = append(n.Attr, Attribute{Key: key, Val: id})
+		if key == "public" {
+			key = "system"
+		} else {
+			key = ""
+		}
+	}
+
+	return n
+}
diff --git a/internal/parser.go b/internal/parser.go
index 42d7eb0d..352aff16 100644
--- a/internal/parser.go
+++ b/internal/parser.go
@@ -393,7 +393,6 @@ func (p *parser) addExpression() {
 		Loc:           p.generateLoc(),
 		Namespace:     p.top().Namespace,
 	})
-
 }
 
 func isFragment(data string) bool {
@@ -725,6 +724,38 @@ func beforeHTMLIM(p *parser) bool {
 	return false
 }
 
+func initialIMExact(p *parser) bool {
+	switch p.tok.Type {
+	case FrontmatterFenceToken:
+		p.setOriginalIM()
+		p.im = frontmatterIM
+		return false
+	case TextToken:
+		p.tok.Data = strings.TrimLeft(p.tok.Data, whitespace)
+		if len(p.tok.Data) == 0 {
+			// It was all whitespace, so ignore it.
+			return true
+		}
+	case CommentToken:
+		p.doc.AppendChild(&Node{
+			Type: CommentNode,
+			Data: p.tok.Data,
+			Loc:  p.generateLoc(),
+		})
+		return true
+	case DoctypeToken:
+		n := parseDoctypeExact(p.tok.Data)
+		p.doc.AppendChild(n)
+		p.im = inLiteralIMExact
+		return true
+	}
+	if p.frontmatterState == FrontmatterInitial {
+		p.addFrontmatter(true)
+	}
+	p.im = inLiteralIMExact
+	return false
+}
+
 // Section 12.2.6.4.3.
 func beforeHeadIM(p *parser) bool {
 	switch p.tok.Type {
@@ -1776,6 +1807,14 @@ func textIM(p *parser) bool {
 	return p.tok.Type == EndTagToken
 }
 
+func parseText(p *parser) {
+	d := p.tok.Data
+	if d == "" {
+		return
+	}
+	p.addText(d)
+}
+
 // Section 12.2.6.4.9.
 func inTableIM(p *parser) bool {
 	switch p.tok.Type {
@@ -2805,6 +2844,42 @@ func inExpressionIM(p *parser) bool {
 	return p.tok.Type == EndTagToken
 }
 
+func inLiteralIMExact(p *parser) bool {
+	switch p.tok.Type {
+	case DoctypeToken:
+		n := parseDoctypeExact(p.tok.Data)
+		p.doc.AppendChild(n)
+	case StartTagToken:
+		p.addElement()
+		if p.hasSelfClosingToken {
+			p.addLoc()
+			p.oe.pop()
+			p.acknowledgeSelfClosingTag()
+		}
+	case StartExpressionToken:
+		p.addExpression()
+		p.setOriginalIM()
+		p.im = inExpressionIMExact
+	case ErrorToken:
+		// ignore the token
+	case TextToken:
+		parseText(p)
+	case CommentToken:
+		p.addChild(&Node{
+			Type: CommentNode,
+			Data: p.tok.Data,
+			Loc:  p.generateLoc(),
+		})
+	case EndTagToken:
+		p.addLoc()
+		p.oe.pop()
+	case EndExpressionToken:
+		p.addLoc()
+		p.oe.pop()
+	}
+	return true
+}
+
 func ignoreTheRemainingTokens(p *parser) bool {
 	return true
 }
@@ -2817,6 +2892,34 @@ func getExitLiteralFunc(p *parser) func() bool {
 	}
 }
 
+func inExpressionIMExact(p *parser) bool {
+	switch p.tok.Type {
+	case ErrorToken:
+		p.oe.pop()
+	case TextToken:
+		parseText(p)
+		return true
+	case StartTagToken, EndTagToken:
+		return inLiteralIMExact(p)
+	case EndExpressionToken:
+		p.addLoc()
+		p.oe.pop()
+		p.im = p.originalIM
+		p.originalIM = nil
+		return true
+	case CommentToken:
+		p.addChild(&Node{
+			Type: CommentNode,
+			Data: p.tok.Data,
+			Loc:  p.generateLoc(),
+		})
+		return true
+	}
+	p.im = p.originalIM
+	p.originalIM = nil
+	return p.tok.Type == EndTagToken
+}
+
 const whitespaceOrNUL = whitespace + "\x00"
 
 // Section 12.2.6.5
@@ -3052,6 +3155,14 @@ func ParseOptionEnableLiteral(enable bool) ParseOption {
 	}
 }
 
+func ParseOptionExperimentalBetterLiteralThingy(enable bool) ParseOption {
+	return func(p *parser) {
+		if enable {
+			p.im = initialIMExact
+		}
+	}
+}
+
 // ParseWithOptions is like Parse, with options.
 func ParseWithOptions(r io.Reader, opts ...ParseOption) (*Node, error) {
 	p := &parser{
diff --git a/internal/printer/__printer_js__/Preserve_namespaces_in_expressions_-_with_exact_parsing.snap b/internal/printer/__printer_js__/Preserve_namespaces_in_expressions_-_with_exact_parsing.snap
new file mode 100755
index 00000000..3205c24f
--- /dev/null
+++ b/internal/printer/__printer_js__/Preserve_namespaces_in_expressions_-_with_exact_parsing.snap
@@ -0,0 +1,41 @@
+
+[TestPrinter/Preserve_namespaces_in_expressions_-_with_exact_parsing - 1]
+## Input
+
+```
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`${$$maybeRenderHead($$result)}`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/React_framework_example_-_with_exact_parsing.snap b/internal/printer/__printer_js__/React_framework_example_-_with_exact_parsing.snap
new file mode 100755
index 00000000..39fe3881
--- /dev/null
+++ b/internal/printer/__printer_js__/React_framework_example_-_with_exact_parsing.snap
@@ -0,0 +1,116 @@
+
+[TestPrinter/React_framework_example_-_with_exact_parsing - 1]
+## Input
+
+```
+/-/-/-/
+// Component Imports
+import Counter from '../components/Counter.jsx'
+const someProps = {
+  count: 0,
+}
+
+// Full Astro Component Syntax:
+// https://docs.astro.build/core-concepts/astro-components/
+/-/-/-/
+
+  
+    
+    
+    
+    
+  
+  
+    
+      
+        Hello React!
+      
+    
+  
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import Counter from '../components/Counter.jsx'
+
+
+import * as $$module1 from '../components/Counter.jsx';
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [{ module: $$module1, specifier: '../components/Counter.jsx', assert: {} }], hydratedComponents: [Counter], clientOnlyComponents: [], hydrationDirectives: new Set(['visible']), hoisted: [] });
+
+const $$Astro = $$createAstro('https://astro.build');
+const Astro = $$Astro;
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+const Astro = $$result.createAstro($$Astro, $$props, $$slots);
+Astro.self = $$Component;
+
+// Component Imports
+
+const someProps = {
+  count: 0,
+}
+
+// Full Astro Component Syntax:
+// https://docs.astro.build/core-concepts/astro-components/
+
+return $$render`
+  
+    
+    
+    
+
+  ${$$renderHead($$result)}
+  
+    
+      ${$$renderComponent($$result,'Counter',Counter,{...(someProps),"client:visible":true,"client:component-hydration":"visible","client:component-path":("../components/Counter.jsx"),"client:component-export":("default"),"class":"astro-hmnnhvcq"},{"default": () => $$render`
+        Hello React!
+      `,})}
+    
+  
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/Self-closing_components_in_head_can_have_siblings.snap b/internal/printer/__printer_js__/Self-closing_components_in_head_can_have_siblings.snap
index e11dfd4e..1624a479 100755
--- a/internal/printer/__printer_js__/Self-closing_components_in_head_can_have_siblings.snap
+++ b/internal/printer/__printer_js__/Self-closing_components_in_head_can_have_siblings.snap
@@ -3,7 +3,7 @@
 ## Input
 
 ```
-
+
 ```
 
 ## Output
diff --git a/internal/printer/__printer_js__/Self-closing_script_in_head_works.snap b/internal/printer/__printer_js__/Self-closing_script_in_head_works.snap
index ec156d5e..bb6a9de3 100755
--- a/internal/printer/__printer_js__/Self-closing_script_in_head_works.snap
+++ b/internal/printer/__printer_js__/Self-closing_script_in_head_works.snap
@@ -3,7 +3,7 @@
 ## Input
 
 ```
-
+
 ```
 
 ## Output
diff --git a/internal/printer/__printer_js__/anchor_tag_in_template,_containing_an_expression,_isn_t_duplicated___971_.snap b/internal/printer/__printer_js__/anchor_tag_in_template,_containing_an_expression,_isn_t_duplicated___971_.snap
new file mode 100755
index 00000000..15532de8
--- /dev/null
+++ b/internal/printer/__printer_js__/anchor_tag_in_template,_containing_an_expression,_isn_t_duplicated___971_.snap
@@ -0,0 +1,47 @@
+
+[TestPrinter/anchor_tag_in_template,_containing_an_expression,_isn't_duplicated_(#971) - 1]
+## Input
+
+```
+
+    {text}.
+
+This should not be a link
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`
+    ${$$maybeRenderHead($$result)}${text}.
+
+This should not be a link
`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/client_only_component__default__-_with_exact_parsing.snap b/internal/printer/__printer_js__/client_only_component__default__-_with_exact_parsing.snap
new file mode 100755
index 00000000..0db0091f
--- /dev/null
+++ b/internal/printer/__printer_js__/client_only_component__default__-_with_exact_parsing.snap
@@ -0,0 +1,59 @@
+
+[TestPrinter/client:only_component_(default)_-_with_exact_parsing - 1]
+## Input
+
+```
+/-/-/-/
+import Component from '../components';
+/-/-/-/
+
+  
+    Hello world
+  
+  
+    
+  
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import Component from '../components';
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: ['../components'], hydrationDirectives: new Set(['only']), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`
+  
+    Hello world
+  ${$$renderHead($$result)}
+  
+    ${$$renderComponent($$result,'Component',null,{"client:only":true,"client:component-hydration":"only","client:component-path":($$metadata.resolvePath("../components")),"client:component-export":"default"})}
+  
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/client_only_component__multiple__-_with_exact_parsing.snap b/internal/printer/__printer_js__/client_only_component__multiple__-_with_exact_parsing.snap
new file mode 100755
index 00000000..2fc23069
--- /dev/null
+++ b/internal/printer/__printer_js__/client_only_component__multiple__-_with_exact_parsing.snap
@@ -0,0 +1,63 @@
+
+[TestPrinter/client:only_component_(multiple)_-_with_exact_parsing - 1]
+## Input
+
+```
+/-/-/-/
+import Component from '../components';
+/-/-/-/
+
+  
+    Hello world
+  
+  
+    
+    
+    
+  
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import Component from '../components';
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: ['../components'], hydrationDirectives: new Set(['only']), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`
+  
+    Hello world
+  ${$$renderHead($$result)}
+  
+    ${$$renderComponent($$result,'Component',null,{"test":"a","client:only":true,"client:component-hydration":"only","client:component-path":($$metadata.resolvePath("../components")),"client:component-export":"default"})}
+    ${$$renderComponent($$result,'Component',null,{"test":"b","client:only":true,"client:component-hydration":"only","client:component-path":($$metadata.resolvePath("../components")),"client:component-export":"default"})}
+    ${$$renderComponent($$result,'Component',null,{"test":"c","client:only":true,"client:component-hydration":"only","client:component-path":($$metadata.resolvePath("../components")),"client:component-export":"default"})}
+  
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/client_only_component__named__-_with_exact_parsing.snap b/internal/printer/__printer_js__/client_only_component__named__-_with_exact_parsing.snap
new file mode 100755
index 00000000..693ad786
--- /dev/null
+++ b/internal/printer/__printer_js__/client_only_component__named__-_with_exact_parsing.snap
@@ -0,0 +1,59 @@
+
+[TestPrinter/client:only_component_(named)_-_with_exact_parsing - 1]
+## Input
+
+```
+/-/-/-/
+import { Component } from '../components';
+/-/-/-/
+
+  
+    Hello world
+  
+  
+    
+  
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import { Component } from '../components';
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: ['../components'], hydrationDirectives: new Set(['only']), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`
+  
+    Hello world
+  ${$$renderHead($$result)}
+  
+    ${$$renderComponent($$result,'Component',null,{"client:only":true,"client:component-hydration":"only","client:component-path":($$metadata.resolvePath("../components")),"client:component-export":"Component"})}
+  
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/client_only_component__namespace__-_with_exact_parsing.snap b/internal/printer/__printer_js__/client_only_component__namespace__-_with_exact_parsing.snap
new file mode 100755
index 00000000..c1079b88
--- /dev/null
+++ b/internal/printer/__printer_js__/client_only_component__namespace__-_with_exact_parsing.snap
@@ -0,0 +1,59 @@
+
+[TestPrinter/client:only_component_(namespace)_-_with_exact_parsing - 1]
+## Input
+
+```
+/-/-/-/
+import * as components from '../components';
+/-/-/-/
+
+  
+    Hello world
+  
+  
+    
+  
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import * as components from '../components';
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: ['../components'], hydrationDirectives: new Set(['only']), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`
+  
+    Hello world
+  ${$$renderHead($$result)}
+  
+    ${$$renderComponent($$result,'components.A',null,{"client:only":true,"client:component-hydration":"only","client:component-path":($$metadata.resolvePath("../components")),"client:component-export":"A"})}
+  
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/client_only_component__namespaced_default__-_with_exact_parsing.snap b/internal/printer/__printer_js__/client_only_component__namespaced_default__-_with_exact_parsing.snap
new file mode 100755
index 00000000..bb101a5f
--- /dev/null
+++ b/internal/printer/__printer_js__/client_only_component__namespaced_default__-_with_exact_parsing.snap
@@ -0,0 +1,59 @@
+
+[TestPrinter/client:only_component_(namespaced_default)_-_with_exact_parsing - 1]
+## Input
+
+```
+/-/-/-/
+import defaultImport from '../components/ui-1';
+/-/-/-/
+
+  
+    Hello world
+  
+  
+    
+  
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import defaultImport from '../components/ui-1';
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: ['../components/ui-1'], hydrationDirectives: new Set(['only']), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`
+  
+    Hello world
+  ${$$renderHead($$result)}
+  
+    ${$$renderComponent($$result,'defaultImport.Counter1',null,{"client:only":true,"client:component-hydration":"only","client:component-path":($$metadata.resolvePath("../components/ui-1")),"client:component-export":"default.Counter1"})}
+  
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/client_only_component__namespaced_named__-_with_exact_parsing.snap b/internal/printer/__printer_js__/client_only_component__namespaced_named__-_with_exact_parsing.snap
new file mode 100755
index 00000000..d1cf91a1
--- /dev/null
+++ b/internal/printer/__printer_js__/client_only_component__namespaced_named__-_with_exact_parsing.snap
@@ -0,0 +1,59 @@
+
+[TestPrinter/client:only_component_(namespaced_named)_-_with_exact_parsing - 1]
+## Input
+
+```
+/-/-/-/
+import { namedImport } from '../components/ui-2';
+/-/-/-/
+
+  
+    Hello world
+  
+  
+    
+  
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import { namedImport } from '../components/ui-2';
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: ['../components/ui-2'], hydrationDirectives: new Set(['only']), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`
+  
+    Hello world
+  ${$$renderHead($$result)}
+  
+    ${$$renderComponent($$result,'namedImport.Counter2',null,{"client:only":true,"client:component-hydration":"only","client:component-path":($$metadata.resolvePath("../components/ui-2")),"client:component-export":"namedImport.Counter2"})}
+  
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/code_tag_not_duplicated_II___983_.snap b/internal/printer/__printer_js__/code_tag_not_duplicated_II___983_.snap
new file mode 100755
index 00000000..3b92995c
--- /dev/null
+++ b/internal/printer/__printer_js__/code_tag_not_duplicated_II___983_.snap
@@ -0,0 +1,91 @@
+
+[TestPrinter/code_tag_not_duplicated_II_(#983) - 1]
+## Input
+
+```
+
+
+  
+    
+  
+  
+    
+      
+        
+          | A+ | B+ | 
+      
+      
+        
+          | Code element with HTML entities+ | +<bar> | 
+        
+          | Code element below with curly braces+ | +{``} | 
+      
+    
+  
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`
+
+  
+    
+  ${$$renderHead($$result)}
+  
+    
+      
+        
+          | A+ | B+ | 
+      
+      
+        
+          | Code element with HTML entities+ | +<bar> | 
+        
+          | Code element below with curly braces+ | +${``} | 
+      
+    
+  
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/code_tag_not_duplicated_I___983_.snap b/internal/printer/__printer_js__/code_tag_not_duplicated_I___983_.snap
new file mode 100755
index 00000000..f19b6be5
--- /dev/null
+++ b/internal/printer/__printer_js__/code_tag_not_duplicated_I___983_.snap
@@ -0,0 +1,61 @@
+
+[TestPrinter/code_tag_not_duplicated_I_(#983) - 1]
+## Input
+
+```
+
+  
+    
+  
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`
+  ${$$maybeRenderHead($$result)}
+    
+  
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/component_-_with_exact_parsing.snap b/internal/printer/__printer_js__/component_-_with_exact_parsing.snap
new file mode 100755
index 00000000..77fa56a7
--- /dev/null
+++ b/internal/printer/__printer_js__/component_-_with_exact_parsing.snap
@@ -0,0 +1,61 @@
+
+[TestPrinter/component_-_with_exact_parsing - 1]
+## Input
+
+```
+/-/-/-/
+import VueComponent from '../components/Vue.vue';
+/-/-/-/
+
+  
+    Hello world
+  
+  
+    
+  
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import VueComponent from '../components/Vue.vue';
+
+import * as $$module1 from '../components/Vue.vue';
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [{ module: $$module1, specifier: '../components/Vue.vue', assert: {} }], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`
+  
+    Hello world
+  ${$$renderHead($$result)}
+  
+    ${$$renderComponent($$result,'VueComponent',VueComponent,{})}
+  
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/dot_component__-_with_exact_parsing.snap b/internal/printer/__printer_js__/dot_component__-_with_exact_parsing.snap
new file mode 100755
index 00000000..265872db
--- /dev/null
+++ b/internal/printer/__printer_js__/dot_component__-_with_exact_parsing.snap
@@ -0,0 +1,61 @@
+
+[TestPrinter/dot_component__-_with_exact_parsing - 1]
+## Input
+
+```
+/-/-/-/
+import * as ns from '../components';
+/-/-/-/
+
+  
+    Hello world
+  
+  
+    
+  
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import * as ns from '../components';
+
+import * as $$module1 from '../components';
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [{ module: $$module1, specifier: '../components', assert: {} }], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`
+  
+    Hello world
+  ${$$renderHead($$result)}
+  
+    ${$$renderComponent($$result,'ns.Component',ns.Component,{})}
+  
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/expression_in_title___1049_.snap b/internal/printer/__printer_js__/expression_in_title___1049_.snap
new file mode 100755
index 00000000..295b0893
--- /dev/null
+++ b/internal/printer/__printer_js__/expression_in_title___1049_.snap
@@ -0,0 +1,65 @@
+
+[TestPrinter/expression_in_title_(#1049) - 1]
+## Input
+
+```
+
+
+
+  
+  
+  
+  {title ? `${title} - ` : ""}Placeholder
+  {title} - Placeholder
+
+
+  
+
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`
+
+
+  
+  
+  
+  ${title ? `${title} - ` : ""}Placeholder
+  ${title} - Placeholder
+${$$renderHead($$result)}
+
+  ${$$renderSlot($$result,$$slots["default"])}
+
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/expression_returning_multiple_elements_-_with_verbatim_parsing.snap b/internal/printer/__printer_js__/expression_returning_multiple_elements_-_with_verbatim_parsing.snap
new file mode 100755
index 00000000..452905f2
--- /dev/null
+++ b/internal/printer/__printer_js__/expression_returning_multiple_elements_-_with_verbatim_parsing.snap
@@ -0,0 +1,89 @@
+
+[TestPrinter/expression_returning_multiple_elements_-_with_verbatim_parsing - 1]
+## Input
+
+```
+
+    
+        Welcome to Astro
+        {
+            Object.entries(DUMMY_DATA).map(([dummyKey, dummyValue]) => {
+                return (
+                    
+                        onlyp {dummyKey}
+                    
+                    
+                        onlyh2 {dummyKey}
+                    
+                    
+                        
div+h2 {dummyKey}
+                    
+                    
+                        
p+h2 {dummyKey}
+                    
+                );
+            })
+        }
+    
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Astro = $$createAstro('https://astro.build');
+const Astro = $$Astro;
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+const Astro = $$result.createAstro($$Astro, $$props, $$slots);
+Astro.self = $$Component;
+
+return $$render`${$$renderComponent($$result,'Layout',Layout,{"title":"Welcome to Astro."},{"default": () => $$render`
+    ${$$maybeRenderHead($$result)}
+        Welcome to Astro
+        ${
+            Object.entries(DUMMY_DATA).map(([dummyKey, dummyValue]) => {
+                return (
+                    $$render`
+                        onlyp ${dummyKey}
+                    
+                    
+                        onlyh2 ${dummyKey}
+                    
+                    
+                        
div+h2 ${dummyKey}
+                    
+                    
+                        
p+h2 ${dummyKey}
+                    `
+                );
+            })
+        }
+    
+`,})}`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/head_expression_-_with_exact_parsing.snap b/internal/printer/__printer_js__/head_expression_-_with_exact_parsing.snap
new file mode 100755
index 00000000..d12289e2
--- /dev/null
+++ b/internal/printer/__printer_js__/head_expression_-_with_exact_parsing.snap
@@ -0,0 +1,60 @@
+
+[TestPrinter/head_expression_-_with_exact_parsing - 1]
+## Input
+
+```
+/-/-/-/
+const name = "world";
+/-/-/-/
+
+  
+    Hello {name}
+  
+  
+    
+  
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+const name = "world";
+
+return $$render`
+  
+    Hello ${name}
+  ${$$renderHead($$result)}
+  
+    
+  
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/head_expression_and_conditional_rendering_of_fragment_-_with_exact_parsing.snap b/internal/printer/__printer_js__/head_expression_and_conditional_rendering_of_fragment_-_with_exact_parsing.snap
new file mode 100755
index 00000000..b5560bf7
--- /dev/null
+++ b/internal/printer/__printer_js__/head_expression_and_conditional_rendering_of_fragment_-_with_exact_parsing.snap
@@ -0,0 +1,64 @@
+
+[TestPrinter/head_expression_and_conditional_rendering_of_fragment_-_with_exact_parsing - 1]
+## Input
+
+```
+/-/-/-/
+const testBool = true;
+/-/-/-/
+
+    
+        
+        {testBool ? "Hey" : "Bye"}
+        {testBool && (<>>)}
+    
+    
+      
+    
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+const testBool = true;
+
+return $$render`
+    
+        
+        ${testBool ? "Hey" : "Bye"}
+        ${testBool && ($$render`${$$renderComponent($$result,'Fragment',Fragment,{},{"default": () => $$render``,})}`)}
+    ${$$renderHead($$result)}
+    
+      
+    
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/html5_boilerplate_-_with_exact_parsing.snap b/internal/printer/__printer_js__/html5_boilerplate_-_with_exact_parsing.snap
new file mode 100755
index 00000000..ec614654
--- /dev/null
+++ b/internal/printer/__printer_js__/html5_boilerplate_-_with_exact_parsing.snap
@@ -0,0 +1,99 @@
+
+[TestPrinter/html5_boilerplate_-_with_exact_parsing - 1]
+## Input
+
+```
+
+
+
+
+  
+  
+
+  A Basic HTML5 Template
+  
+  
+
+  
+  
+  
+  
+  
+
+  
+  
+  
+
+  
+
+
+
+
+  
+  
+  
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`
+
+
+
+  
+  
+
+  A Basic HTML5 Template
+  
+  
+
+  
+  
+  
+  
+  
+
+  
+  
+  
+
+  
+
+${$$renderHead($$result)}
+
+
+  
+  
+  
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/import.meta.env_-_with_exact_parsing.snap b/internal/printer/__printer_js__/import.meta.env_-_with_exact_parsing.snap
new file mode 100755
index 00000000..97f0026f
--- /dev/null
+++ b/internal/printer/__printer_js__/import.meta.env_-_with_exact_parsing.snap
@@ -0,0 +1,131 @@
+
+[TestPrinter/import.meta.env_-_with_exact_parsing - 1]
+## Input
+
+```
+/-/-/-/
+import Header from '../../components/Header.jsx'
+import Footer from '../../components/Footer.astro'
+import ProductPageContent from '../../components/ProductPageContent.jsx';
+
+export async function getStaticPaths() {
+  let products = await fetch(`${import.meta.env.PUBLIC_NETLIFY_URL}/.netlify/functions/get-product-list`)
+    .then(res => res.json()).then((response) => {
+      console.log('--- built product pages ---')
+      return response.products.edges
+    });
+
+  return products.map((p, i) => {
+    return {
+      params: {pid: p.node.handle},
+      props: {product: p},
+    };
+  });
+}
+
+const { product } = Astro.props;
+/-/-/-/
+
+
+
+
+  
+  
+  Shoperoni | Buy {product.node.title}
+
+  
+  
+
+
+  
+  
+  
+
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import Header from '../../components/Header.jsx'
+
+import Footer from '../../components/Footer.astro'
+
+import ProductPageContent from '../../components/ProductPageContent.jsx';
+
+import * as $$module1 from '../../components/Header.jsx';
+import * as $$module2 from '../../components/Footer.astro';
+import * as $$module3 from '../../components/ProductPageContent.jsx';
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [{ module: $$module1, specifier: '../../components/Header.jsx', assert: {} }, { module: $$module2, specifier: '../../components/Footer.astro', assert: {} }, { module: $$module3, specifier: '../../components/ProductPageContent.jsx', assert: {} }], hydratedComponents: [ProductPageContent], clientOnlyComponents: [], hydrationDirectives: new Set(['visible']), hoisted: [] });
+
+const $$Astro = $$createAstro('https://astro.build');
+const Astro = $$Astro;
+export async function getStaticPaths() {
+  let products = await fetch(`${import.meta.env.PUBLIC_NETLIFY_URL}/.netlify/functions/get-product-list`)
+    .then(res => res.json()).then((response) => {
+      console.log('--- built product pages ---')
+      return response.products.edges
+    });
+
+  return products.map((p, i) => {
+    return {
+      params: {pid: p.node.handle},
+      props: {product: p},
+    };
+  });
+}
+const $$Component = $$createComponent(async ($$result, $$props, $$slots) => {
+const Astro = $$result.createAstro($$Astro, $$props, $$slots);
+Astro.self = $$Component;
+
+const { product } = Astro.props;
+
+return $$render`
+
+
+  
+  
+  Shoperoni | Buy ${product.node.title}
+
+  
+  
+${$$renderHead($$result)}
+
+  ${$$renderComponent($$result,'Header',Header,{})}
+  
+    
+      ${$$renderComponent($$result,'ProductPageContent',ProductPageContent,{"client:visible":true,"product":(product.node),"client:component-hydration":"visible","client:component-path":("../../components/ProductPageContent.jsx"),"client:component-export":("default")})}
+    
+  
My App
+    
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+const meta = { title: 'My App' };
+
+return $$render`
+    
+        
+
+        ${
+            meta && $$render`${meta.title}`
+        }
+
+        
+    ${$$renderHead($$result)}
+    
+        My App
+    
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/nested_template_literal_expression_-_with_exact_parsing.snap b/internal/printer/__printer_js__/nested_template_literal_expression_-_with_exact_parsing.snap
new file mode 100755
index 00000000..f0f877b1
--- /dev/null
+++ b/internal/printer/__printer_js__/nested_template_literal_expression_-_with_exact_parsing.snap
@@ -0,0 +1,51 @@
+
+[TestPrinter/nested_template_literal_expression_-_with_exact_parsing - 1]
+## Input
+
+```
+
+
+{Object.keys(importedAuthors).map(author => hello
)}
+{Object.keys(importedAuthors).map(author => {author}
)}
+
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`
+${$$maybeRenderHead($$result)}
+${Object.keys(importedAuthors).map(author => $$render`hello
`)}
+${Object.keys(importedAuthors).map(author => $$render`${author}
`)}
+
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/no_space_after_expression_in_title_works___1049_.snap b/internal/printer/__printer_js__/no_space_after_expression_in_title_works___1049_.snap
new file mode 100755
index 00000000..d08b3d80
--- /dev/null
+++ b/internal/printer/__printer_js__/no_space_after_expression_in_title_works___1049_.snap
@@ -0,0 +1,65 @@
+
+[TestPrinter/no_space_after_expression_in_title_works_(#1049) - 1]
+## Input
+
+```
+
+
+
+  
+  
+  
+  {title ? `${title} - ` : ""}Placeholder
+  {title}- Placeholder
+
+
+  
+
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`
+
+
+  
+  
+  
+  ${title ? `${title} - ` : ""}Placeholder
+  ${title}- Placeholder
+${$$renderHead($$result)}
+
+  ${$$renderSlot($$result,$$slots["default"])}
+
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/noscript_component_-_with_exact_parsing.snap b/internal/printer/__printer_js__/noscript_component_-_with_exact_parsing.snap
new file mode 100755
index 00000000..5375b936
--- /dev/null
+++ b/internal/printer/__printer_js__/noscript_component_-_with_exact_parsing.snap
@@ -0,0 +1,55 @@
+
+[TestPrinter/noscript_component_-_with_exact_parsing - 1]
+## Input
+
+```
+
+  
+  
+    
+  
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`
+  ${$$renderHead($$result)}
+  
+    
+  
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/select_with_2_options_containing_element.snap b/internal/printer/__printer_js__/select_with_2_options_containing_element.snap
new file mode 100755
index 00000000..25bf2885
--- /dev/null
+++ b/internal/printer/__printer_js__/select_with_2_options_containing_element.snap
@@ -0,0 +1,41 @@
+
+[TestPrinter/select_with_2_options_containing_element - 1]
+## Input
+
+```
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`${$$maybeRenderHead($$result)}`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/select_with_2_options_containing_element_with_div_sibling.snap b/internal/printer/__printer_js__/select_with_2_options_containing_element_with_div_sibling.snap
new file mode 100755
index 00000000..6e404e4b
--- /dev/null
+++ b/internal/printer/__printer_js__/select_with_2_options_containing_element_with_div_sibling.snap
@@ -0,0 +1,41 @@
+
+[TestPrinter/select_with_2_options_containing_element_with_div_sibling - 1]
+## Input
+
+```
+Orange
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`${$$maybeRenderHead($$result)}Orange
`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/select_with_option_containing_element.snap b/internal/printer/__printer_js__/select_with_option_containing_element.snap
new file mode 100755
index 00000000..50d4fa23
--- /dev/null
+++ b/internal/printer/__printer_js__/select_with_option_containing_element.snap
@@ -0,0 +1,41 @@
+
+[TestPrinter/select_with_option_containing_element - 1]
+## Input
+
+```
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`${$$maybeRenderHead($$result)}`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/select_with_option_containing_element_and_button_containing_selected_content.snap b/internal/printer/__printer_js__/select_with_option_containing_element_and_button_containing_selected_content.snap
new file mode 100755
index 00000000..eb1d207e
--- /dev/null
+++ b/internal/printer/__printer_js__/select_with_option_containing_element_and_button_containing_selected_content.snap
@@ -0,0 +1,41 @@
+
+[TestPrinter/select_with_option_containing_element_and_button_containing_selected_content - 1]
+## Input
+
+```
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`${$$maybeRenderHead($$result)}`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/select_with_option_containing_element_with_div_sibling.snap b/internal/printer/__printer_js__/select_with_option_containing_element_with_div_sibling.snap
new file mode 100755
index 00000000..f8b51d8b
--- /dev/null
+++ b/internal/printer/__printer_js__/select_with_option_containing_element_with_div_sibling.snap
@@ -0,0 +1,41 @@
+
+[TestPrinter/select_with_option_containing_element_with_div_sibling - 1]
+## Input
+
+```
+Orange
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`${$$maybeRenderHead($$result)}Orange
`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/slot_with_fallback.snap b/internal/printer/__printer_js__/slot_with_fallback.snap
index 45e425c8..dcbf747a 100755
--- a/internal/printer/__printer_js__/slot_with_fallback.snap
+++ b/internal/printer/__printer_js__/slot_with_fallback.snap
@@ -3,7 +3,7 @@
 ## Input
 
 ```
-Hello world!
+Hello world!
 ```
 
 ## Output
diff --git a/internal/printer/__printer_js__/table_component_wrapped_in_element_containing_expression_II___958_.snap b/internal/printer/__printer_js__/table_component_wrapped_in_element_containing_expression_II___958_.snap
new file mode 100755
index 00000000..617a2774
--- /dev/null
+++ b/internal/printer/__printer_js__/table_component_wrapped_in_element_containing_expression_II___958_.snap
@@ -0,0 +1,79 @@
+
+[TestPrinter/table_component_wrapped_in_element_containing_expression_II_(#958) - 1]
+## Input
+
+```
+/-/-/-/
+import Layout from '../layouts/Layout.astro';
+const linkURL = '0000';
+/-/-/-/
+
+
+    
+        
+        
+            test
+        
+    
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import Layout from '../layouts/Layout.astro';
+
+import * as $$module1 from '../layouts/Layout.astro';
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [{ module: $$module1, specifier: '../layouts/Layout.astro', assert: {} }], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Astro = $$createAstro('https://astro.build');
+const Astro = $$Astro;
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+const Astro = $$result.createAstro($$Astro, $$props, $$slots);
+Astro.self = $$Component;
+
+const linkURL = '0000';
+
+return $$render`${$$renderComponent($$result,'Layout',Layout,{"title":"Welcome to Astro."},{"default": () => $$render`
+    ${$$maybeRenderHead($$result)}
+        
+        
+            test
+        
+    
+`,})}`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/table_component_wrapped_in_element_containing_expression_I___1015_.snap b/internal/printer/__printer_js__/table_component_wrapped_in_element_containing_expression_I___1015_.snap
new file mode 100755
index 00000000..a893e02d
--- /dev/null
+++ b/internal/printer/__printer_js__/table_component_wrapped_in_element_containing_expression_I___1015_.snap
@@ -0,0 +1,88 @@
+
+[TestPrinter/table_component_wrapped_in_element_containing_expression_I_(#1015) - 1]
+## Input
+
+```
+/-/-/-/
+import Table from "./base/table.astro";
+
+const headingContent = "foo";
+const cellContent = "bar";
+/-/-/-/
+
+
+  
+    
+      
+        | {headingContent}+ | Cell 2+ | Cell 3+ | 
+    
+    
+      
+        | {cellContent}+ | Data 2+ | Data 3+ | 
+    
+  
+ 
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import Table from "./base/table.astro";
+
+import * as $$module1 from './base/table.astro';
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [{ module: $$module1, specifier: './base/table.astro', assert: {} }], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+const headingContent = "foo";
+const cellContent = "bar";
+
+return $$render`${$$maybeRenderHead($$result)}
+  ${$$renderComponent($$result,'Table',Table,{},{"default": () => $$render`
+    
+      
+        | ${headingContent}+ | Cell 2+ | Cell 3+ | 
+    
+    
+      
+        | ${cellContent}+ | Data 2+ | Data 3+ | 
+    
+  `,})}
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/table_simple_case_-_with_exact_parsing.snap b/internal/printer/__printer_js__/table_simple_case_-_with_exact_parsing.snap
new file mode 100755
index 00000000..22fab06d
--- /dev/null
+++ b/internal/printer/__printer_js__/table_simple_case_-_with_exact_parsing.snap
@@ -0,0 +1,77 @@
+
+[TestPrinter/table_simple_case_-_with_exact_parsing - 1]
+## Input
+
+```
+/-/-/-/
+const content = "lol";
+/-/-/-/
+
+
+  
+    
+      
+        | {content}+ | 
+      {
+        (
+          
+            | 1+ | 
+        )
+      }
+    
Hello
+  
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+const content = "lol";
+
+return $$render`
+  ${$$maybeRenderHead($$result)}
+    
+      
+        | ${content}+ | 
+      ${
+        (
+          $$render`
+            | 1+ | 
`
+        )
+      }
+    
Hello
+  
+`;
+}, undefined, undefined);
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/transition_animate_with_an_expression_-_with_exact_parsing.snap b/internal/printer/__printer_js__/transition_animate_with_an_expression_-_with_exact_parsing.snap
new file mode 100755
index 00000000..10fd6e1f
--- /dev/null
+++ b/internal/printer/__printer_js__/transition_animate_with_an_expression_-_with_exact_parsing.snap
@@ -0,0 +1,42 @@
+
+[TestPrinter/transition:animate_with_an_expression_-_with_exact_parsing - 1]
+## Input
+
+```
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import "transitions.css";
+
+export const $$metadata = $$createMetadata("/projects/app/src/pages/page.astro", { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Page = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`${$$maybeRenderHead($$result)}`;
+}, '/projects/app/src/pages/page.astro', 'self');
+export default $$Page;
+```
+---
diff --git a/internal/printer/__printer_js__/transition_name_with_an_expression_-_with_exact_parsing.snap b/internal/printer/__printer_js__/transition_name_with_an_expression_-_with_exact_parsing.snap
new file mode 100755
index 00000000..f1f5977f
--- /dev/null
+++ b/internal/printer/__printer_js__/transition_name_with_an_expression_-_with_exact_parsing.snap
@@ -0,0 +1,42 @@
+
+[TestPrinter/transition:name_with_an_expression_-_with_exact_parsing - 1]
+## Input
+
+```
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import "transitions.css";
+
+export const $$metadata = $$createMetadata("/projects/app/src/pages/page.astro", { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Page = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`${$$maybeRenderHead($$result)}`;
+}, '/projects/app/src/pages/page.astro', 'self');
+export default $$Page;
+```
+---
diff --git a/internal/printer/__printer_js__/transition_name_with_an_template_literal_-_with_exact_parsing.snap b/internal/printer/__printer_js__/transition_name_with_an_template_literal_-_with_exact_parsing.snap
new file mode 100755
index 00000000..d65a43ea
--- /dev/null
+++ b/internal/printer/__printer_js__/transition_name_with_an_template_literal_-_with_exact_parsing.snap
@@ -0,0 +1,42 @@
+
+[TestPrinter/transition:name_with_an_template_literal_-_with_exact_parsing - 1]
+## Input
+
+```
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import "transitions.css";
+
+export const $$metadata = $$createMetadata("/projects/app/src/pages/page.astro", { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Page = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`${$$maybeRenderHead($$result)}`;
+}, '/projects/app/src/pages/page.astro', 'self');
+export default $$Page;
+```
+---
diff --git a/internal/printer/__printer_js__/transition_persist-props_converted_to_a_data_attribute_-_with_exact_parsing.snap b/internal/printer/__printer_js__/transition_persist-props_converted_to_a_data_attribute_-_with_exact_parsing.snap
new file mode 100755
index 00000000..5e459e52
--- /dev/null
+++ b/internal/printer/__printer_js__/transition_persist-props_converted_to_a_data_attribute_-_with_exact_parsing.snap
@@ -0,0 +1,42 @@
+
+[TestPrinter/transition:persist-props_converted_to_a_data_attribute_-_with_exact_parsing - 1]
+## Input
+
+```
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import "transitions.css";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`${$$renderComponent($$result,'my-island','my-island',{"data-astro-transition-persist-props":"false","data-astro-transition-persist":($$createTransitionScope($$result, "oh2whuuc"))})}`;
+}, undefined, 'self');
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/transition_persist_converted_to_a_data_attribute_-_with_exact_parsing.snap b/internal/printer/__printer_js__/transition_persist_converted_to_a_data_attribute_-_with_exact_parsing.snap
new file mode 100755
index 00000000..dd9275e1
--- /dev/null
+++ b/internal/printer/__printer_js__/transition_persist_converted_to_a_data_attribute_-_with_exact_parsing.snap
@@ -0,0 +1,42 @@
+
+[TestPrinter/transition:persist_converted_to_a_data_attribute_-_with_exact_parsing - 1]
+## Input
+
+```
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import "transitions.css";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`${$$maybeRenderHead($$result)}`;
+}, undefined, 'self');
+export default $$Component;
+```
+---
diff --git a/internal/printer/__printer_js__/transition_persist_uses_transition_name_if_defined_-_with_exact_parsing.snap b/internal/printer/__printer_js__/transition_persist_uses_transition_name_if_defined_-_with_exact_parsing.snap
new file mode 100755
index 00000000..8d44f6eb
--- /dev/null
+++ b/internal/printer/__printer_js__/transition_persist_uses_transition_name_if_defined_-_with_exact_parsing.snap
@@ -0,0 +1,42 @@
+
+[TestPrinter/transition:persist_uses_transition:name_if_defined_-_with_exact_parsing - 1]
+## Input
+
+```
+
+```
+
+## Output
+
+```js
+import {
+  Fragment,
+  render as $$render,
+  createAstro as $$createAstro,
+  createComponent as $$createComponent,
+  renderComponent as $$renderComponent,
+  renderHead as $$renderHead,
+  maybeRenderHead as $$maybeRenderHead,
+  unescapeHTML as $$unescapeHTML,
+  renderSlot as $$renderSlot,
+  mergeSlots as $$mergeSlots,
+  addAttribute as $$addAttribute,
+  spreadAttributes as $$spreadAttributes,
+  defineStyleVars as $$defineStyleVars,
+  defineScriptVars as $$defineScriptVars,
+  renderTransition as $$renderTransition,
+  createTransitionScope as $$createTransitionScope,
+  renderScript as $$renderScript,
+  createMetadata as $$createMetadata
+} from "http://localhost:3000/";
+import "transitions.css";
+
+export const $$metadata = $$createMetadata(import.meta.url, { modules: [], hydratedComponents: [], clientOnlyComponents: [], hydrationDirectives: new Set([]), hoisted: [] });
+
+const $$Component = $$createComponent(($$result, $$props, $$slots) => {
+
+return $$render`${$$maybeRenderHead($$result)}`;
+}, undefined, 'self');
+export default $$Component;
+```
+---
diff --git a/internal/printer/printer_test.go b/internal/printer/printer_test.go
index fedea94a..e8732915 100644
--- a/internal/printer/printer_test.go
+++ b/internal/printer/printer_test.go
@@ -185,7 +185,7 @@ func TestPrinter(t *testing.T) {
 		},
 		{
 			name:   "slot with fallback",
-			source: `Hello world!
`,
+			source: `Hello world!
`,
 		},
 		{
 			name:   "slot with fallback II",
@@ -368,6 +368,35 @@ import type data from "test"
 	
 `,
 		},
+		{
+			name: "expression returning multiple elements - with verbatim parsing",
+			source: `
+	
+		Welcome to Astro
+		{
+			Object.entries(DUMMY_DATA).map(([dummyKey, dummyValue]) => {
+				return (
+					
+						onlyp {dummyKey}
+					
+					
+						onlyh2 {dummyKey}
+					
+					
+						
div+h2 {dummyKey}
+					
+					
+						
p+h2 {dummyKey}
+					
+				);
+			})
+		}
+	
+`,
+			transformOptions: transform.TransformOptions{
+				ExperimentalExactParsingThingy: true,
+			},
+		},
 		{
 			name: "nested template literal expression",
 			source: `
@@ -377,6 +406,18 @@ import type data from "test"
 
 `,
 		},
+		{
+			name: "nested template literal expression - with exact parsing",
+			source: `
+
+{Object.keys(importedAuthors).map(author => hello
)}
+{Object.keys(importedAuthors).map(author => {author}
)}
+
+`,
+			transformOptions: transform.TransformOptions{
+				ExperimentalExactParsingThingy: true,
+			},
+		},
 		{
 			name:   "complex nested template literal expression",
 			source: "",
@@ -395,6 +436,23 @@ import VueComponent from '../components/Vue.vue';
   
 `,
 		},
+		{
+			name: "component - with exact parsing",
+			source: `---
+import VueComponent from '../components/Vue.vue';
+---
+
+  
+    Hello world
+  
+  
+    
+  
+`,
+			transformOptions: transform.TransformOptions{
+				ExperimentalExactParsingThingy: true,
+			},
+		},
 		{
 			name: "dot component",
 			source: `---
@@ -409,6 +467,23 @@ import * as ns from '../components';
   
 `,
 		},
+		{
+			name: "dot component  - with exact parsing",
+			source: `---
+import * as ns from '../components';
+---
+
+  
+    Hello world
+  
+  
+    
+  
+`,
+			transformOptions: transform.TransformOptions{
+				ExperimentalExactParsingThingy: true,
+			},
+		},
 		{
 			name:   "component with quoted attributes",
 			source: ``,
@@ -437,6 +512,21 @@ import * as ns from '../components';
   
 `,
 		},
+		{
+			name: "noscript component - with exact parsing",
+			source: `
+
+  
+  
+	
+  
+`,
+			transformOptions: transform.TransformOptions{
+				ExperimentalExactParsingThingy: true,
+			},
+		},
 		{
 			name:   "noscript styles",
 			source: ``,
@@ -463,6 +553,23 @@ import Component from '../components';