+```
+
+## Output
+
+```css
+.title:where(.astro-dpohflym){font-family:fantasy;font-size:28px}.body:where(.astro-dpohflym){font-size:1em}
+```
+---
diff --git a/internal/printer/__snapshots__/All_components.snap b/internal/printer/__printer_js__/All_components.snap
similarity index 100%
rename from internal/printer/__snapshots__/All_components.snap
rename to internal/printer/__printer_js__/All_components.snap
diff --git a/internal/printer/__snapshots__/Component_is_raw.snap b/internal/printer/__printer_js__/Component_is_raw.snap
similarity index 100%
rename from internal/printer/__snapshots__/Component_is_raw.snap
rename to internal/printer/__printer_js__/Component_is_raw.snap
diff --git a/internal/printer/__snapshots__/Component_names_A-Z.snap b/internal/printer/__printer_js__/Component_names_A-Z.snap
similarity index 100%
rename from internal/printer/__snapshots__/Component_names_A-Z.snap
rename to internal/printer/__printer_js__/Component_names_A-Z.snap
diff --git a/internal/printer/__snapshots__/Component_siblings_are_siblings.snap b/internal/printer/__printer_js__/Component_siblings_are_siblings.snap
similarity index 100%
rename from internal/printer/__snapshots__/Component_siblings_are_siblings.snap
rename to internal/printer/__printer_js__/Component_siblings_are_siblings.snap
diff --git a/internal/printer/__snapshots__/Empty_attribute_expression.snap b/internal/printer/__printer_js__/Empty_attribute_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/Empty_attribute_expression.snap
rename to internal/printer/__printer_js__/Empty_attribute_expression.snap
diff --git a/internal/printer/__snapshots__/Empty_expression.snap b/internal/printer/__printer_js__/Empty_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/Empty_expression.snap
rename to internal/printer/__printer_js__/Empty_expression.snap
diff --git a/internal/printer/__snapshots__/Empty_expression_with_whitespace.snap b/internal/printer/__printer_js__/Empty_expression_with_whitespace.snap
similarity index 100%
rename from internal/printer/__snapshots__/Empty_expression_with_whitespace.snap
rename to internal/printer/__printer_js__/Empty_expression_with_whitespace.snap
diff --git a/internal/printer/__snapshots__/Empty_script.snap b/internal/printer/__printer_js__/Empty_script.snap
similarity index 100%
rename from internal/printer/__snapshots__/Empty_script.snap
rename to internal/printer/__printer_js__/Empty_script.snap
diff --git a/internal/printer/__snapshots__/Empty_style.snap b/internal/printer/__printer_js__/Empty_style.snap
similarity index 100%
rename from internal/printer/__snapshots__/Empty_style.snap
rename to internal/printer/__printer_js__/Empty_style.snap
diff --git a/internal/printer/__snapshots__/Expression_in_form_followed_by_other_sibling_forms.snap b/internal/printer/__printer_js__/Expression_in_form_followed_by_other_sibling_forms.snap
similarity index 100%
rename from internal/printer/__snapshots__/Expression_in_form_followed_by_other_sibling_forms.snap
rename to internal/printer/__printer_js__/Expression_in_form_followed_by_other_sibling_forms.snap
diff --git a/internal/printer/__snapshots__/Fragment.snap b/internal/printer/__printer_js__/Fragment.snap
similarity index 100%
rename from internal/printer/__snapshots__/Fragment.snap
rename to internal/printer/__printer_js__/Fragment.snap
diff --git a/internal/printer/__snapshots__/Fragment_literal_only.snap b/internal/printer/__printer_js__/Fragment_literal_only.snap
similarity index 100%
rename from internal/printer/__snapshots__/Fragment_literal_only.snap
rename to internal/printer/__printer_js__/Fragment_literal_only.snap
diff --git a/internal/printer/__snapshots__/Fragment_shorthand.snap b/internal/printer/__printer_js__/Fragment_shorthand.snap
similarity index 100%
rename from internal/printer/__snapshots__/Fragment_shorthand.snap
rename to internal/printer/__printer_js__/Fragment_shorthand.snap
diff --git a/internal/printer/__snapshots__/Fragment_shorthand_only.snap b/internal/printer/__printer_js__/Fragment_shorthand_only.snap
similarity index 100%
rename from internal/printer/__snapshots__/Fragment_shorthand_only.snap
rename to internal/printer/__printer_js__/Fragment_shorthand_only.snap
diff --git a/internal/printer/__snapshots__/Fragment_slotted.snap b/internal/printer/__printer_js__/Fragment_slotted.snap
similarity index 100%
rename from internal/printer/__snapshots__/Fragment_slotted.snap
rename to internal/printer/__printer_js__/Fragment_slotted.snap
diff --git a/internal/printer/__snapshots__/Fragment_slotted_with_name.snap b/internal/printer/__printer_js__/Fragment_slotted_with_name.snap
similarity index 100%
rename from internal/printer/__snapshots__/Fragment_slotted_with_name.snap
rename to internal/printer/__printer_js__/Fragment_slotted_with_name.snap
diff --git a/internal/printer/__snapshots__/HTML_comment_in_component_inside_expression_I.snap b/internal/printer/__printer_js__/HTML_comment_in_component_inside_expression_I.snap
similarity index 100%
rename from internal/printer/__snapshots__/HTML_comment_in_component_inside_expression_I.snap
rename to internal/printer/__printer_js__/HTML_comment_in_component_inside_expression_I.snap
diff --git a/internal/printer/__snapshots__/HTML_comment_in_component_inside_expression_II.snap b/internal/printer/__printer_js__/HTML_comment_in_component_inside_expression_II.snap
similarity index 100%
rename from internal/printer/__snapshots__/HTML_comment_in_component_inside_expression_II.snap
rename to internal/printer/__printer_js__/HTML_comment_in_component_inside_expression_II.snap
diff --git a/internal/printer/__snapshots__/Mixed_style_siblings.snap b/internal/printer/__printer_js__/Mixed_style_siblings.snap
similarity index 100%
rename from internal/printer/__snapshots__/Mixed_style_siblings.snap
rename to internal/printer/__printer_js__/Mixed_style_siblings.snap
diff --git a/internal/printer/__snapshots__/Nested_HTML_in_expressions,_wrapped_in_parens.snap b/internal/printer/__printer_js__/Nested_HTML_in_expressions,_wrapped_in_parens.snap
similarity index 100%
rename from internal/printer/__snapshots__/Nested_HTML_in_expressions,_wrapped_in_parens.snap
rename to internal/printer/__printer_js__/Nested_HTML_in_expressions,_wrapped_in_parens.snap
diff --git a/internal/printer/__snapshots__/No_extra_script_tag.snap b/internal/printer/__printer_js__/No_extra_script_tag.snap
similarity index 100%
rename from internal/printer/__snapshots__/No_extra_script_tag.snap
rename to internal/printer/__printer_js__/No_extra_script_tag.snap
diff --git a/internal/printer/__snapshots__/Parser_can_handle_files___4096_chars.snap b/internal/printer/__printer_js__/Parser_can_handle_files___4096_chars.snap
similarity index 100%
rename from internal/printer/__snapshots__/Parser_can_handle_files___4096_chars.snap
rename to internal/printer/__printer_js__/Parser_can_handle_files___4096_chars.snap
diff --git a/internal/printer/__snapshots__/Preserve_namespaces.snap b/internal/printer/__printer_js__/Preserve_namespaces.snap
similarity index 100%
rename from internal/printer/__snapshots__/Preserve_namespaces.snap
rename to internal/printer/__printer_js__/Preserve_namespaces.snap
diff --git a/internal/printer/__snapshots__/Preserve_namespaces_for_components.snap b/internal/printer/__printer_js__/Preserve_namespaces_for_components.snap
similarity index 100%
rename from internal/printer/__snapshots__/Preserve_namespaces_for_components.snap
rename to internal/printer/__printer_js__/Preserve_namespaces_for_components.snap
diff --git a/internal/printer/__snapshots__/Preserve_namespaces_in_expressions.snap b/internal/printer/__printer_js__/Preserve_namespaces_in_expressions.snap
similarity index 100%
rename from internal/printer/__snapshots__/Preserve_namespaces_in_expressions.snap
rename to internal/printer/__printer_js__/Preserve_namespaces_in_expressions.snap
diff --git a/internal/printer/__snapshots__/Preserve_slot_whitespace.snap b/internal/printer/__printer_js__/Preserve_slot_whitespace.snap
similarity index 100%
rename from internal/printer/__snapshots__/Preserve_slot_whitespace.snap
rename to internal/printer/__printer_js__/Preserve_slot_whitespace.snap
diff --git a/internal/printer/__snapshots__/Preserve_slots_inside_custom-element.snap b/internal/printer/__printer_js__/Preserve_slots_inside_custom-element.snap
similarity index 100%
rename from internal/printer/__snapshots__/Preserve_slots_inside_custom-element.snap
rename to internal/printer/__printer_js__/Preserve_slots_inside_custom-element.snap
diff --git a/internal/printer/__snapshots__/React_framework_example.snap b/internal/printer/__printer_js__/React_framework_example.snap
similarity index 100%
rename from internal/printer/__snapshots__/React_framework_example.snap
rename to internal/printer/__printer_js__/React_framework_example.snap
diff --git a/internal/printer/__snapshots__/SVG_styles.snap b/internal/printer/__printer_js__/SVG_styles.snap
similarity index 100%
rename from internal/printer/__snapshots__/SVG_styles.snap
rename to internal/printer/__printer_js__/SVG_styles.snap
diff --git a/internal/printer/__snapshots__/Self-closing_components_in_head_can_have_siblings.snap b/internal/printer/__printer_js__/Self-closing_components_in_head_can_have_siblings.snap
similarity index 100%
rename from internal/printer/__snapshots__/Self-closing_components_in_head_can_have_siblings.snap
rename to internal/printer/__printer_js__/Self-closing_components_in_head_can_have_siblings.snap
diff --git a/internal/printer/__snapshots__/Self-closing_components_siblings_are_siblings.snap b/internal/printer/__printer_js__/Self-closing_components_siblings_are_siblings.snap
similarity index 100%
rename from internal/printer/__snapshots__/Self-closing_components_siblings_are_siblings.snap
rename to internal/printer/__printer_js__/Self-closing_components_siblings_are_siblings.snap
diff --git a/internal/printer/__snapshots__/Self-closing_formatting_elements.snap b/internal/printer/__printer_js__/Self-closing_formatting_elements.snap
similarity index 100%
rename from internal/printer/__snapshots__/Self-closing_formatting_elements.snap
rename to internal/printer/__printer_js__/Self-closing_formatting_elements.snap
diff --git a/internal/printer/__snapshots__/Self-closing_formatting_elements_2.snap b/internal/printer/__printer_js__/Self-closing_formatting_elements_2.snap
similarity index 100%
rename from internal/printer/__snapshots__/Self-closing_formatting_elements_2.snap
rename to internal/printer/__printer_js__/Self-closing_formatting_elements_2.snap
diff --git a/internal/printer/__snapshots__/Self-closing_script_in_head_works.snap b/internal/printer/__printer_js__/Self-closing_script_in_head_works.snap
similarity index 100%
rename from internal/printer/__snapshots__/Self-closing_script_in_head_works.snap
rename to internal/printer/__printer_js__/Self-closing_script_in_head_works.snap
diff --git a/internal/printer/__snapshots__/Self-closing_title.snap b/internal/printer/__printer_js__/Self-closing_title.snap
similarity index 100%
rename from internal/printer/__snapshots__/Self-closing_title.snap
rename to internal/printer/__printer_js__/Self-closing_title.snap
diff --git a/internal/printer/__snapshots__/Self-closing_title_II.snap b/internal/printer/__printer_js__/Self-closing_title_II.snap
similarity index 100%
rename from internal/printer/__snapshots__/Self-closing_title_II.snap
rename to internal/printer/__printer_js__/Self-closing_title_II.snap
diff --git a/internal/printer/__snapshots__/Use_of_interfaces_within_frontmatter.snap b/internal/printer/__printer_js__/Use_of_interfaces_within_frontmatter.snap
similarity index 100%
rename from internal/printer/__snapshots__/Use_of_interfaces_within_frontmatter.snap
rename to internal/printer/__printer_js__/Use_of_interfaces_within_frontmatter.snap
diff --git a/internal/printer/__snapshots__/XElement.snap b/internal/printer/__printer_js__/XElement.snap
similarity index 100%
rename from internal/printer/__snapshots__/XElement.snap
rename to internal/printer/__printer_js__/XElement.snap
diff --git a/internal/printer/__snapshots__/_955_ternary_slot_with_elements.snap b/internal/printer/__printer_js__/_955_ternary_slot_with_elements.snap
similarity index 100%
rename from internal/printer/__snapshots__/_955_ternary_slot_with_elements.snap
rename to internal/printer/__printer_js__/_955_ternary_slot_with_elements.snap
diff --git a/internal/printer/__snapshots__/_955_ternary_slot_with_text.snap b/internal/printer/__printer_js__/_955_ternary_slot_with_text.snap
similarity index 100%
rename from internal/printer/__snapshots__/_955_ternary_slot_with_text.snap
rename to internal/printer/__printer_js__/_955_ternary_slot_with_text.snap
diff --git a/internal/printer/__snapshots__/advanced_svg_expression.snap b/internal/printer/__printer_js__/advanced_svg_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/advanced_svg_expression.snap
rename to internal/printer/__printer_js__/advanced_svg_expression.snap
diff --git a/internal/printer/__snapshots__/anchor_content.snap b/internal/printer/__printer_js__/anchor_content.snap
similarity index 100%
rename from internal/printer/__snapshots__/anchor_content.snap
rename to internal/printer/__printer_js__/anchor_content.snap
diff --git a/internal/printer/__snapshots__/anchor_expressions.snap b/internal/printer/__printer_js__/anchor_expressions.snap
similarity index 100%
rename from internal/printer/__snapshots__/anchor_expressions.snap
rename to internal/printer/__printer_js__/anchor_expressions.snap
diff --git a/internal/printer/__snapshots__/anchor_inside_expression.snap b/internal/printer/__printer_js__/anchor_inside_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/anchor_inside_expression.snap
rename to internal/printer/__printer_js__/anchor_inside_expression.snap
diff --git a/internal/printer/__snapshots__/attribute_with_template_literal.snap b/internal/printer/__printer_js__/attribute_with_template_literal.snap
similarity index 100%
rename from internal/printer/__snapshots__/attribute_with_template_literal.snap
rename to internal/printer/__printer_js__/attribute_with_template_literal.snap
diff --git a/internal/printer/__snapshots__/attribute_with_template_literal_interpolation.snap b/internal/printer/__printer_js__/attribute_with_template_literal_interpolation.snap
similarity index 100%
rename from internal/printer/__snapshots__/attribute_with_template_literal_interpolation.snap
rename to internal/printer/__printer_js__/attribute_with_template_literal_interpolation.snap
diff --git a/internal/printer/__snapshots__/backtick_in_HTML_comment.snap b/internal/printer/__printer_js__/backtick_in_HTML_comment.snap
similarity index 100%
rename from internal/printer/__snapshots__/backtick_in_HTML_comment.snap
rename to internal/printer/__printer_js__/backtick_in_HTML_comment.snap
diff --git a/internal/printer/__snapshots__/basic__frontmatter_.snap b/internal/printer/__printer_js__/basic__frontmatter_.snap
similarity index 100%
rename from internal/printer/__snapshots__/basic__frontmatter_.snap
rename to internal/printer/__printer_js__/basic__frontmatter_.snap
diff --git a/internal/printer/__snapshots__/basic__no_frontmatter_.snap b/internal/printer/__printer_js__/basic__no_frontmatter_.snap
similarity index 100%
rename from internal/printer/__snapshots__/basic__no_frontmatter_.snap
rename to internal/printer/__printer_js__/basic__no_frontmatter_.snap
diff --git a/internal/printer/__snapshots__/basic_renderHead.snap b/internal/printer/__printer_js__/basic_renderHead.snap
similarity index 100%
rename from internal/printer/__snapshots__/basic_renderHead.snap
rename to internal/printer/__printer_js__/basic_renderHead.snap
diff --git a/internal/printer/__snapshots__/caption_only.snap b/internal/printer/__printer_js__/caption_only.snap
similarity index 100%
rename from internal/printer/__snapshots__/caption_only.snap
rename to internal/printer/__printer_js__/caption_only.snap
diff --git a/internal/printer/__snapshots__/class_and_class_list_object.snap b/internal/printer/__printer_js__/class_and_class_list_object.snap
similarity index 100%
rename from internal/printer/__snapshots__/class_and_class_list_object.snap
rename to internal/printer/__printer_js__/class_and_class_list_object.snap
diff --git a/internal/printer/__snapshots__/class_and_class_list_set.snap b/internal/printer/__printer_js__/class_and_class_list_set.snap
similarity index 100%
rename from internal/printer/__snapshots__/class_and_class_list_set.snap
rename to internal/printer/__printer_js__/class_and_class_list_set.snap
diff --git a/internal/printer/__snapshots__/class_and_class_list_simple_array.snap b/internal/printer/__printer_js__/class_and_class_list_simple_array.snap
similarity index 100%
rename from internal/printer/__snapshots__/class_and_class_list_simple_array.snap
rename to internal/printer/__printer_js__/class_and_class_list_simple_array.snap
diff --git a/internal/printer/__snapshots__/class_list.snap b/internal/printer/__printer_js__/class_list.snap
similarity index 100%
rename from internal/printer/__snapshots__/class_list.snap
rename to internal/printer/__printer_js__/class_list.snap
diff --git a/internal/printer/__snapshots__/class_list_with_spread.snap b/internal/printer/__printer_js__/class_list_with_spread.snap
similarity index 100%
rename from internal/printer/__snapshots__/class_list_with_spread.snap
rename to internal/printer/__printer_js__/class_list_with_spread.snap
diff --git a/internal/printer/__snapshots__/class_with_spread.snap b/internal/printer/__printer_js__/class_with_spread.snap
similarity index 100%
rename from internal/printer/__snapshots__/class_with_spread.snap
rename to internal/printer/__printer_js__/class_with_spread.snap
diff --git a/internal/printer/__snapshots__/client_only_component__default_.snap b/internal/printer/__printer_js__/client_only_component__default_.snap
similarity index 100%
rename from internal/printer/__snapshots__/client_only_component__default_.snap
rename to internal/printer/__printer_js__/client_only_component__default_.snap
diff --git a/internal/printer/__snapshots__/client_only_component__multiple_.snap b/internal/printer/__printer_js__/client_only_component__multiple_.snap
similarity index 100%
rename from internal/printer/__snapshots__/client_only_component__multiple_.snap
rename to internal/printer/__printer_js__/client_only_component__multiple_.snap
diff --git a/internal/printer/__snapshots__/client_only_component__named_.snap b/internal/printer/__printer_js__/client_only_component__named_.snap
similarity index 100%
rename from internal/printer/__snapshots__/client_only_component__named_.snap
rename to internal/printer/__printer_js__/client_only_component__named_.snap
diff --git a/internal/printer/__snapshots__/client_only_component__namespace_.snap b/internal/printer/__printer_js__/client_only_component__namespace_.snap
similarity index 100%
rename from internal/printer/__snapshots__/client_only_component__namespace_.snap
rename to internal/printer/__printer_js__/client_only_component__namespace_.snap
diff --git a/internal/printer/__snapshots__/client_only_component__namespaced_default_.snap b/internal/printer/__printer_js__/client_only_component__namespaced_default_.snap
similarity index 100%
rename from internal/printer/__snapshots__/client_only_component__namespaced_default_.snap
rename to internal/printer/__printer_js__/client_only_component__namespaced_default_.snap
diff --git a/internal/printer/__snapshots__/client_only_component__namespaced_named_.snap b/internal/printer/__printer_js__/client_only_component__namespaced_named_.snap
similarity index 100%
rename from internal/printer/__snapshots__/client_only_component__namespaced_named_.snap
rename to internal/printer/__printer_js__/client_only_component__namespaced_named_.snap
diff --git a/internal/printer/__snapshots__/comment_only_expressions_are_removed_I.snap b/internal/printer/__printer_js__/comment_only_expressions_are_removed_I.snap
similarity index 100%
rename from internal/printer/__snapshots__/comment_only_expressions_are_removed_I.snap
rename to internal/printer/__printer_js__/comment_only_expressions_are_removed_I.snap
diff --git a/internal/printer/__snapshots__/comment_only_expressions_are_removed_II.snap b/internal/printer/__printer_js__/comment_only_expressions_are_removed_II.snap
similarity index 100%
rename from internal/printer/__snapshots__/comment_only_expressions_are_removed_II.snap
rename to internal/printer/__printer_js__/comment_only_expressions_are_removed_II.snap
diff --git a/internal/printer/__snapshots__/comment_only_expressions_are_removed_III.snap b/internal/printer/__printer_js__/comment_only_expressions_are_removed_III.snap
similarity index 100%
rename from internal/printer/__snapshots__/comment_only_expressions_are_removed_III.snap
rename to internal/printer/__printer_js__/comment_only_expressions_are_removed_III.snap
diff --git a/internal/printer/__snapshots__/comments_removed_from_attribute_list.snap b/internal/printer/__printer_js__/comments_removed_from_attribute_list.snap
similarity index 100%
rename from internal/printer/__snapshots__/comments_removed_from_attribute_list.snap
rename to internal/printer/__printer_js__/comments_removed_from_attribute_list.snap
diff --git a/internal/printer/__snapshots__/complex_nested_template_literal_expression.snap b/internal/printer/__printer_js__/complex_nested_template_literal_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/complex_nested_template_literal_expression.snap
rename to internal/printer/__printer_js__/complex_nested_template_literal_expression.snap
diff --git a/internal/printer/__snapshots__/complex_recursive_component.snap b/internal/printer/__printer_js__/complex_recursive_component.snap
similarity index 100%
rename from internal/printer/__snapshots__/complex_recursive_component.snap
rename to internal/printer/__printer_js__/complex_recursive_component.snap
diff --git a/internal/printer/__snapshots__/complex_table.snap b/internal/printer/__printer_js__/complex_table.snap
similarity index 100%
rename from internal/printer/__snapshots__/complex_table.snap
rename to internal/printer/__printer_js__/complex_table.snap
diff --git a/internal/printer/__snapshots__/component.snap b/internal/printer/__printer_js__/component.snap
similarity index 100%
rename from internal/printer/__snapshots__/component.snap
rename to internal/printer/__printer_js__/component.snap
diff --git a/internal/printer/__snapshots__/component_in_expression_with_its_child_expression_before_its_child_element.snap b/internal/printer/__printer_js__/component_in_expression_with_its_child_expression_before_its_child_element.snap
similarity index 100%
rename from internal/printer/__snapshots__/component_in_expression_with_its_child_expression_before_its_child_element.snap
rename to internal/printer/__printer_js__/component_in_expression_with_its_child_expression_before_its_child_element.snap
diff --git a/internal/printer/__snapshots__/component_with_only_a_script.snap b/internal/printer/__printer_js__/component_with_only_a_script.snap
similarity index 100%
rename from internal/printer/__snapshots__/component_with_only_a_script.snap
rename to internal/printer/__printer_js__/component_with_only_a_script.snap
diff --git a/internal/printer/__snapshots__/component_with_quoted_attributes.snap b/internal/printer/__printer_js__/component_with_quoted_attributes.snap
similarity index 100%
rename from internal/printer/__snapshots__/component_with_quoted_attributes.snap
rename to internal/printer/__printer_js__/component_with_quoted_attributes.snap
diff --git a/internal/printer/__snapshots__/condition_expressions_at_the_top-level.snap b/internal/printer/__printer_js__/condition_expressions_at_the_top-level.snap
similarity index 100%
rename from internal/printer/__snapshots__/condition_expressions_at_the_top-level.snap
rename to internal/printer/__printer_js__/condition_expressions_at_the_top-level.snap
diff --git a/internal/printer/__snapshots__/condition_expressions_at_the_top-level_with_head_content.snap b/internal/printer/__printer_js__/condition_expressions_at_the_top-level_with_head_content.snap
similarity index 100%
rename from internal/printer/__snapshots__/condition_expressions_at_the_top-level_with_head_content.snap
rename to internal/printer/__printer_js__/condition_expressions_at_the_top-level_with_head_content.snap
diff --git a/internal/printer/__snapshots__/conditional_iframe.snap b/internal/printer/__printer_js__/conditional_iframe.snap
similarity index 100%
rename from internal/printer/__snapshots__/conditional_iframe.snap
rename to internal/printer/__printer_js__/conditional_iframe.snap
diff --git a/internal/printer/__snapshots__/conditional_noscript.snap b/internal/printer/__printer_js__/conditional_noscript.snap
similarity index 100%
rename from internal/printer/__snapshots__/conditional_noscript.snap
rename to internal/printer/__printer_js__/conditional_noscript.snap
diff --git a/internal/printer/__snapshots__/conditional_render.snap b/internal/printer/__printer_js__/conditional_render.snap
similarity index 100%
rename from internal/printer/__snapshots__/conditional_render.snap
rename to internal/printer/__printer_js__/conditional_render.snap
diff --git a/internal/printer/__snapshots__/conditional_rendering_of_title_containing_expression.snap b/internal/printer/__printer_js__/conditional_rendering_of_title_containing_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/conditional_rendering_of_title_containing_expression.snap
rename to internal/printer/__printer_js__/conditional_rendering_of_title_containing_expression.snap
diff --git a/internal/printer/__snapshots__/conditional_slot.snap b/internal/printer/__printer_js__/conditional_slot.snap
similarity index 100%
rename from internal/printer/__snapshots__/conditional_slot.snap
rename to internal/printer/__printer_js__/conditional_slot.snap
diff --git "a/internal/printer/__snapshots__/css_comment_doesn\342\200\231t_produce_semicolon.snap" "b/internal/printer/__printer_js__/css_comment_doesn\342\200\231t_produce_semicolon.snap"
similarity index 100%
rename from "internal/printer/__snapshots__/css_comment_doesn\342\200\231t_produce_semicolon.snap"
rename to "internal/printer/__printer_js__/css_comment_doesn\342\200\231t_produce_semicolon.snap"
diff --git a/internal/printer/__snapshots__/css_imports_are_not_included_in_module_metadata.snap b/internal/printer/__printer_js__/css_imports_are_not_included_in_module_metadata.snap
similarity index 100%
rename from internal/printer/__snapshots__/css_imports_are_not_included_in_module_metadata.snap
rename to internal/printer/__printer_js__/css_imports_are_not_included_in_module_metadata.snap
diff --git a/internal/printer/__snapshots__/custom-element.snap b/internal/printer/__printer_js__/custom-element.snap
similarity index 100%
rename from internal/printer/__snapshots__/custom-element.snap
rename to internal/printer/__printer_js__/custom-element.snap
diff --git a/internal/printer/__snapshots__/custom_elements.snap b/internal/printer/__printer_js__/custom_elements.snap
similarity index 100%
rename from internal/printer/__snapshots__/custom_elements.snap
rename to internal/printer/__printer_js__/custom_elements.snap
diff --git a/internal/printer/__snapshots__/define_vars_on_a_module_script_with_imports.snap b/internal/printer/__printer_js__/define_vars_on_a_module_script_with_imports.snap
similarity index 100%
rename from internal/printer/__snapshots__/define_vars_on_a_module_script_with_imports.snap
rename to internal/printer/__printer_js__/define_vars_on_a_module_script_with_imports.snap
diff --git a/internal/printer/__snapshots__/define_vars_on_non-root_elements.snap b/internal/printer/__printer_js__/define_vars_on_non-root_elements.snap
similarity index 100%
rename from internal/printer/__snapshots__/define_vars_on_non-root_elements.snap
rename to internal/printer/__printer_js__/define_vars_on_non-root_elements.snap
diff --git a/internal/printer/__snapshots__/define_vars_on_script_with_StaticExpression_turned_on.snap b/internal/printer/__printer_js__/define_vars_on_script_with_StaticExpression_turned_on.snap
similarity index 100%
rename from internal/printer/__snapshots__/define_vars_on_script_with_StaticExpression_turned_on.snap
rename to internal/printer/__printer_js__/define_vars_on_script_with_StaticExpression_turned_on.snap
diff --git a/internal/printer/__snapshots__/define_vars_on_style.snap b/internal/printer/__printer_js__/define_vars_on_style.snap
similarity index 100%
rename from internal/printer/__snapshots__/define_vars_on_style.snap
rename to internal/printer/__printer_js__/define_vars_on_style.snap
diff --git a/internal/printer/__snapshots__/define_vars_on_style_tag_with_style_empty_attribute_on_element.snap b/internal/printer/__printer_js__/define_vars_on_style_tag_with_style_empty_attribute_on_element.snap
similarity index 100%
rename from internal/printer/__snapshots__/define_vars_on_style_tag_with_style_empty_attribute_on_element.snap
rename to internal/printer/__printer_js__/define_vars_on_style_tag_with_style_empty_attribute_on_element.snap
diff --git a/internal/printer/__snapshots__/define_vars_on_style_tag_with_style_expression_attribute_on_element.snap b/internal/printer/__printer_js__/define_vars_on_style_tag_with_style_expression_attribute_on_element.snap
similarity index 100%
rename from internal/printer/__snapshots__/define_vars_on_style_tag_with_style_expression_attribute_on_element.snap
rename to internal/printer/__printer_js__/define_vars_on_style_tag_with_style_expression_attribute_on_element.snap
diff --git a/internal/printer/__snapshots__/define_vars_on_style_tag_with_style_quoted_attribute_on_element.snap b/internal/printer/__printer_js__/define_vars_on_style_tag_with_style_quoted_attribute_on_element.snap
similarity index 100%
rename from internal/printer/__snapshots__/define_vars_on_style_tag_with_style_quoted_attribute_on_element.snap
rename to internal/printer/__printer_js__/define_vars_on_style_tag_with_style_quoted_attribute_on_element.snap
diff --git a/internal/printer/__snapshots__/define_vars_on_style_tag_with_style_shorthand_attribute_on_element.snap b/internal/printer/__printer_js__/define_vars_on_style_tag_with_style_shorthand_attribute_on_element.snap
similarity index 100%
rename from internal/printer/__snapshots__/define_vars_on_style_tag_with_style_shorthand_attribute_on_element.snap
rename to internal/printer/__printer_js__/define_vars_on_style_tag_with_style_shorthand_attribute_on_element.snap
diff --git a/internal/printer/__snapshots__/define_vars_on_style_tag_with_style_template_literal_attribute_on_element.snap b/internal/printer/__printer_js__/define_vars_on_style_tag_with_style_template_literal_attribute_on_element.snap
similarity index 100%
rename from internal/printer/__snapshots__/define_vars_on_style_tag_with_style_template_literal_attribute_on_element.snap
rename to internal/printer/__printer_js__/define_vars_on_style_tag_with_style_template_literal_attribute_on_element.snap
diff --git a/internal/printer/__snapshots__/division_inside_expression.snap b/internal/printer/__printer_js__/division_inside_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/division_inside_expression.snap
rename to internal/printer/__printer_js__/division_inside_expression.snap
diff --git a/internal/printer/__snapshots__/doctype.snap b/internal/printer/__printer_js__/doctype.snap
similarity index 100%
rename from internal/printer/__snapshots__/doctype.snap
rename to internal/printer/__printer_js__/doctype.snap
diff --git a/internal/printer/__snapshots__/dot_component.snap b/internal/printer/__printer_js__/dot_component.snap
similarity index 100%
rename from internal/printer/__snapshots__/dot_component.snap
rename to internal/printer/__printer_js__/dot_component.snap
diff --git a/internal/printer/__snapshots__/dynamic_import.snap b/internal/printer/__printer_js__/dynamic_import.snap
similarity index 100%
rename from internal/printer/__snapshots__/dynamic_import.snap
rename to internal/printer/__printer_js__/dynamic_import.snap
diff --git a/internal/printer/__snapshots__/escaped_entity.snap b/internal/printer/__printer_js__/escaped_entity.snap
similarity index 100%
rename from internal/printer/__snapshots__/escaped_entity.snap
rename to internal/printer/__printer_js__/escaped_entity.snap
diff --git a/internal/printer/__snapshots__/export_comments_I.snap b/internal/printer/__printer_js__/export_comments_I.snap
similarity index 100%
rename from internal/printer/__snapshots__/export_comments_I.snap
rename to internal/printer/__printer_js__/export_comments_I.snap
diff --git a/internal/printer/__snapshots__/export_comments_II.snap b/internal/printer/__printer_js__/export_comments_II.snap
similarity index 100%
rename from internal/printer/__snapshots__/export_comments_II.snap
rename to internal/printer/__printer_js__/export_comments_II.snap
diff --git a/internal/printer/__snapshots__/export_member_does_not_panic.snap b/internal/printer/__printer_js__/export_member_does_not_panic.snap
similarity index 100%
rename from internal/printer/__snapshots__/export_member_does_not_panic.snap
rename to internal/printer/__printer_js__/export_member_does_not_panic.snap
diff --git a/internal/printer/__snapshots__/expression_returning_multiple_elements.snap b/internal/printer/__printer_js__/expression_returning_multiple_elements.snap
similarity index 100%
rename from internal/printer/__snapshots__/expression_returning_multiple_elements.snap
rename to internal/printer/__printer_js__/expression_returning_multiple_elements.snap
diff --git a/internal/printer/__snapshots__/expression_slot.snap b/internal/printer/__printer_js__/expression_slot.snap
similarity index 100%
rename from internal/printer/__snapshots__/expression_slot.snap
rename to internal/printer/__printer_js__/expression_slot.snap
diff --git a/internal/printer/__snapshots__/expression_with_leading_whitespace.snap b/internal/printer/__printer_js__/expression_with_leading_whitespace.snap
similarity index 100%
rename from internal/printer/__snapshots__/expression_with_leading_whitespace.snap
rename to internal/printer/__printer_js__/expression_with_leading_whitespace.snap
diff --git a/internal/printer/__snapshots__/expressions_with_JS_comments.snap b/internal/printer/__printer_js__/expressions_with_JS_comments.snap
similarity index 100%
rename from internal/printer/__snapshots__/expressions_with_JS_comments.snap
rename to internal/printer/__printer_js__/expressions_with_JS_comments.snap
diff --git a/internal/printer/__snapshots__/expressions_with_multiple_curly_braces.snap b/internal/printer/__printer_js__/expressions_with_multiple_curly_braces.snap
similarity index 100%
rename from internal/printer/__snapshots__/expressions_with_multiple_curly_braces.snap
rename to internal/printer/__printer_js__/expressions_with_multiple_curly_braces.snap
diff --git a/internal/printer/__snapshots__/function_expression_slots_I.snap b/internal/printer/__printer_js__/function_expression_slots_I.snap
similarity index 100%
rename from internal/printer/__snapshots__/function_expression_slots_I.snap
rename to internal/printer/__printer_js__/function_expression_slots_I.snap
diff --git a/internal/printer/__snapshots__/function_expression_slots_II___959_.snap b/internal/printer/__printer_js__/function_expression_slots_II___959_.snap
similarity index 100%
rename from internal/printer/__snapshots__/function_expression_slots_II___959_.snap
rename to internal/printer/__printer_js__/function_expression_slots_II___959_.snap
diff --git a/internal/printer/__snapshots__/getStaticPaths__basic_.snap b/internal/printer/__printer_js__/getStaticPaths__basic_.snap
similarity index 100%
rename from internal/printer/__snapshots__/getStaticPaths__basic_.snap
rename to internal/printer/__printer_js__/getStaticPaths__basic_.snap
diff --git a/internal/printer/__snapshots__/getStaticPaths__hoisted_.snap b/internal/printer/__printer_js__/getStaticPaths__hoisted_.snap
similarity index 100%
rename from internal/printer/__snapshots__/getStaticPaths__hoisted_.snap
rename to internal/printer/__printer_js__/getStaticPaths__hoisted_.snap
diff --git a/internal/printer/__snapshots__/getStaticPaths__hoisted_II_.snap b/internal/printer/__printer_js__/getStaticPaths__hoisted_II_.snap
similarity index 100%
rename from internal/printer/__snapshots__/getStaticPaths__hoisted_II_.snap
rename to internal/printer/__printer_js__/getStaticPaths__hoisted_II_.snap
diff --git a/internal/printer/__snapshots__/gets_all_potential_hydrated_components.snap b/internal/printer/__printer_js__/gets_all_potential_hydrated_components.snap
similarity index 100%
rename from internal/printer/__snapshots__/gets_all_potential_hydrated_components.snap
rename to internal/printer/__printer_js__/gets_all_potential_hydrated_components.snap
diff --git a/internal/printer/__snapshots__/head_expression.snap b/internal/printer/__printer_js__/head_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/head_expression.snap
rename to internal/printer/__printer_js__/head_expression.snap
diff --git a/internal/printer/__snapshots__/head_expression_and_conditional_rendering_of_fragment.snap b/internal/printer/__printer_js__/head_expression_and_conditional_rendering_of_fragment.snap
similarity index 100%
rename from internal/printer/__snapshots__/head_expression_and_conditional_rendering_of_fragment.snap
rename to internal/printer/__printer_js__/head_expression_and_conditional_rendering_of_fragment.snap
diff --git a/internal/printer/__snapshots__/head_inside_slot.snap b/internal/printer/__printer_js__/head_inside_slot.snap
similarity index 100%
rename from internal/printer/__snapshots__/head_inside_slot.snap
rename to internal/printer/__printer_js__/head_inside_slot.snap
diff --git a/internal/printer/__snapshots__/head_slot.snap b/internal/printer/__printer_js__/head_slot.snap
similarity index 100%
rename from internal/printer/__snapshots__/head_slot.snap
rename to internal/printer/__printer_js__/head_slot.snap
diff --git a/internal/printer/__snapshots__/head_slot_II.snap b/internal/printer/__printer_js__/head_slot_II.snap
similarity index 100%
rename from internal/printer/__snapshots__/head_slot_II.snap
rename to internal/printer/__printer_js__/head_slot_II.snap
diff --git a/internal/printer/__snapshots__/head_slot_III.snap b/internal/printer/__printer_js__/head_slot_III.snap
similarity index 100%
rename from internal/printer/__snapshots__/head_slot_III.snap
rename to internal/printer/__printer_js__/head_slot_III.snap
diff --git a/internal/printer/__snapshots__/html5_boilerplate.snap b/internal/printer/__printer_js__/html5_boilerplate.snap
similarity index 100%
rename from internal/printer/__snapshots__/html5_boilerplate.snap
rename to internal/printer/__printer_js__/html5_boilerplate.snap
diff --git a/internal/printer/__snapshots__/iframe.snap b/internal/printer/__printer_js__/iframe.snap
similarity index 100%
rename from internal/printer/__snapshots__/iframe.snap
rename to internal/printer/__printer_js__/iframe.snap
diff --git a/internal/printer/__snapshots__/import.meta.env.snap b/internal/printer/__printer_js__/import.meta.env.snap
similarity index 100%
rename from internal/printer/__snapshots__/import.meta.env.snap
rename to internal/printer/__printer_js__/import.meta.env.snap
diff --git a/internal/printer/__snapshots__/import.meta.snap b/internal/printer/__printer_js__/import.meta.snap
similarity index 100%
rename from internal/printer/__snapshots__/import.meta.snap
rename to internal/printer/__printer_js__/import.meta.snap
diff --git a/internal/printer/__snapshots__/import_assertions.snap b/internal/printer/__printer_js__/import_assertions.snap
similarity index 100%
rename from internal/printer/__snapshots__/import_assertions.snap
rename to internal/printer/__printer_js__/import_assertions.snap
diff --git a/internal/printer/__snapshots__/import_order.snap b/internal/printer/__printer_js__/import_order.snap
similarity index 100%
rename from internal/printer/__snapshots__/import_order.snap
rename to internal/printer/__printer_js__/import_order.snap
diff --git a/internal/printer/__snapshots__/import_to_identifier_named_assert.snap b/internal/printer/__printer_js__/import_to_identifier_named_assert.snap
similarity index 100%
rename from internal/printer/__snapshots__/import_to_identifier_named_assert.snap
rename to internal/printer/__printer_js__/import_to_identifier_named_assert.snap
diff --git a/internal/printer/__snapshots__/includes_comments_for_expression_attribute.snap b/internal/printer/__printer_js__/includes_comments_for_expression_attribute.snap
similarity index 100%
rename from internal/printer/__snapshots__/includes_comments_for_expression_attribute.snap
rename to internal/printer/__printer_js__/includes_comments_for_expression_attribute.snap
diff --git a/internal/printer/__snapshots__/includes_comments_for_shorthand_attribute.snap b/internal/printer/__printer_js__/includes_comments_for_shorthand_attribute.snap
similarity index 100%
rename from internal/printer/__snapshots__/includes_comments_for_shorthand_attribute.snap
rename to internal/printer/__printer_js__/includes_comments_for_shorthand_attribute.snap
diff --git a/internal/printer/__snapshots__/is_raw.snap b/internal/printer/__printer_js__/is_raw.snap
similarity index 100%
rename from internal/printer/__snapshots__/is_raw.snap
rename to internal/printer/__printer_js__/is_raw.snap
diff --git a/internal/printer/__snapshots__/map_basic.snap b/internal/printer/__printer_js__/map_basic.snap
similarity index 100%
rename from internal/printer/__snapshots__/map_basic.snap
rename to internal/printer/__printer_js__/map_basic.snap
diff --git a/internal/printer/__snapshots__/map_nested.snap b/internal/printer/__printer_js__/map_nested.snap
similarity index 100%
rename from internal/printer/__snapshots__/map_nested.snap
rename to internal/printer/__printer_js__/map_nested.snap
diff --git a/internal/printer/__snapshots__/map_with_component.snap b/internal/printer/__printer_js__/map_with_component.snap
similarity index 100%
rename from internal/printer/__snapshots__/map_with_component.snap
rename to internal/printer/__printer_js__/map_with_component.snap
diff --git a/internal/printer/__snapshots__/map_without_component.snap b/internal/printer/__printer_js__/map_without_component.snap
similarity index 100%
rename from internal/printer/__snapshots__/map_without_component.snap
rename to internal/printer/__printer_js__/map_without_component.snap
diff --git a/internal/printer/__snapshots__/maybeRenderHead_not_printed_for_hoisted_scripts.snap b/internal/printer/__printer_js__/maybeRenderHead_not_printed_for_hoisted_scripts.snap
similarity index 100%
rename from internal/printer/__snapshots__/maybeRenderHead_not_printed_for_hoisted_scripts.snap
rename to internal/printer/__printer_js__/maybeRenderHead_not_printed_for_hoisted_scripts.snap
diff --git a/internal/printer/__snapshots__/multibyte_character_+_script.snap b/internal/printer/__printer_js__/multibyte_character___script.snap
similarity index 100%
rename from internal/printer/__snapshots__/multibyte_character_+_script.snap
rename to internal/printer/__printer_js__/multibyte_character___script.snap
diff --git a/internal/printer/__snapshots__/multibyte_character_+_style.snap b/internal/printer/__printer_js__/multibyte_character___style.snap
similarity index 100%
rename from internal/printer/__snapshots__/multibyte_character_+_style.snap
rename to internal/printer/__printer_js__/multibyte_character___style.snap
diff --git a/internal/printer/__snapshots__/multibyte_characters.snap b/internal/printer/__printer_js__/multibyte_characters.snap
similarity index 100%
rename from internal/printer/__snapshots__/multibyte_characters.snap
rename to internal/printer/__printer_js__/multibyte_characters.snap
diff --git a/internal/printer/__snapshots__/multiple_define_vars_on_style.snap b/internal/printer/__printer_js__/multiple_define_vars_on_style.snap
similarity index 100%
rename from internal/printer/__snapshots__/multiple_define_vars_on_style.snap
rename to internal/printer/__printer_js__/multiple_define_vars_on_style.snap
diff --git a/internal/printer/__snapshots__/nested_expressions.snap b/internal/printer/__printer_js__/nested_expressions.snap
similarity index 100%
rename from internal/printer/__snapshots__/nested_expressions.snap
rename to internal/printer/__printer_js__/nested_expressions.snap
diff --git a/internal/printer/__snapshots__/nested_expressions_II.snap b/internal/printer/__printer_js__/nested_expressions_II.snap
similarity index 100%
rename from internal/printer/__snapshots__/nested_expressions_II.snap
rename to internal/printer/__printer_js__/nested_expressions_II.snap
diff --git a/internal/printer/__snapshots__/nested_expressions_III.snap b/internal/printer/__printer_js__/nested_expressions_III.snap
similarity index 100%
rename from internal/printer/__snapshots__/nested_expressions_III.snap
rename to internal/printer/__printer_js__/nested_expressions_III.snap
diff --git a/internal/printer/__snapshots__/nested_expressions_IV.snap b/internal/printer/__printer_js__/nested_expressions_IV.snap
similarity index 100%
rename from internal/printer/__snapshots__/nested_expressions_IV.snap
rename to internal/printer/__printer_js__/nested_expressions_IV.snap
diff --git a/internal/printer/__snapshots__/nested_expressions_V.snap b/internal/printer/__printer_js__/nested_expressions_V.snap
similarity index 100%
rename from internal/printer/__snapshots__/nested_expressions_V.snap
rename to internal/printer/__printer_js__/nested_expressions_V.snap
diff --git a/internal/printer/__snapshots__/nested_expressions_VI.snap b/internal/printer/__printer_js__/nested_expressions_VI.snap
similarity index 100%
rename from internal/printer/__snapshots__/nested_expressions_VI.snap
rename to internal/printer/__printer_js__/nested_expressions_VI.snap
diff --git a/internal/printer/__snapshots__/nested_expressions_VII.snap b/internal/printer/__printer_js__/nested_expressions_VII.snap
similarity index 100%
rename from internal/printer/__snapshots__/nested_expressions_VII.snap
rename to internal/printer/__printer_js__/nested_expressions_VII.snap
diff --git a/internal/printer/__snapshots__/nested_expressions_VIII.snap b/internal/printer/__printer_js__/nested_expressions_VIII.snap
similarity index 100%
rename from internal/printer/__snapshots__/nested_expressions_VIII.snap
rename to internal/printer/__printer_js__/nested_expressions_VIII.snap
diff --git a/internal/printer/__snapshots__/nested_head_content_stays_in_the_head.snap b/internal/printer/__printer_js__/nested_head_content_stays_in_the_head.snap
similarity index 100%
rename from internal/printer/__snapshots__/nested_head_content_stays_in_the_head.snap
rename to internal/printer/__printer_js__/nested_head_content_stays_in_the_head.snap
diff --git a/internal/printer/__snapshots__/nested_template_literal_expression.snap b/internal/printer/__printer_js__/nested_template_literal_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/nested_template_literal_expression.snap
rename to internal/printer/__printer_js__/nested_template_literal_expression.snap
diff --git a/internal/printer/__snapshots__/no_expressions_in_math.snap b/internal/printer/__printer_js__/no_expressions_in_math.snap
similarity index 100%
rename from internal/printer/__snapshots__/no_expressions_in_math.snap
rename to internal/printer/__printer_js__/no_expressions_in_math.snap
diff --git a/internal/printer/__snapshots__/noscript_component.snap b/internal/printer/__printer_js__/noscript_component.snap
similarity index 100%
rename from internal/printer/__snapshots__/noscript_component.snap
rename to internal/printer/__printer_js__/noscript_component.snap
diff --git a/internal/printer/__snapshots__/noscript_deep_styles.snap b/internal/printer/__printer_js__/noscript_deep_styles.snap
similarity index 100%
rename from internal/printer/__snapshots__/noscript_deep_styles.snap
rename to internal/printer/__printer_js__/noscript_deep_styles.snap
diff --git a/internal/printer/__snapshots__/noscript_only.snap b/internal/printer/__printer_js__/noscript_only.snap
similarity index 100%
rename from internal/printer/__snapshots__/noscript_only.snap
rename to internal/printer/__printer_js__/noscript_only.snap
diff --git a/internal/printer/__snapshots__/noscript_styles.snap b/internal/printer/__printer_js__/noscript_styles.snap
similarity index 100%
rename from internal/printer/__snapshots__/noscript_styles.snap
rename to internal/printer/__printer_js__/noscript_styles.snap
diff --git a/internal/printer/__snapshots__/orphan_slot.snap b/internal/printer/__printer_js__/orphan_slot.snap
similarity index 100%
rename from internal/printer/__snapshots__/orphan_slot.snap
rename to internal/printer/__printer_js__/orphan_slot.snap
diff --git a/internal/printer/__snapshots__/passes_escaped_filename_into_createComponent_if_it_contains_single_quotes.snap b/internal/printer/__printer_js__/passes_escaped_filename_into_createComponent_if_it_contains_single_quotes.snap
similarity index 100%
rename from internal/printer/__snapshots__/passes_escaped_filename_into_createComponent_if_it_contains_single_quotes.snap
rename to internal/printer/__printer_js__/passes_escaped_filename_into_createComponent_if_it_contains_single_quotes.snap
diff --git a/internal/printer/__snapshots__/passes_filename_into_createComponent_if_passed_into_the_compiler_options.snap b/internal/printer/__printer_js__/passes_filename_into_createComponent_if_passed_into_the_compiler_options.snap
similarity index 100%
rename from internal/printer/__snapshots__/passes_filename_into_createComponent_if_passed_into_the_compiler_options.snap
rename to internal/printer/__printer_js__/passes_filename_into_createComponent_if_passed_into_the_compiler_options.snap
diff --git a/internal/printer/__snapshots__/preserve_is_inline_slot.snap b/internal/printer/__printer_js__/preserve_is_inline_slot.snap
similarity index 100%
rename from internal/printer/__snapshots__/preserve_is_inline_slot.snap
rename to internal/printer/__printer_js__/preserve_is_inline_slot.snap
diff --git a/internal/printer/__snapshots__/preserve_is_inline_slot_II.snap b/internal/printer/__printer_js__/preserve_is_inline_slot_II.snap
similarity index 100%
rename from internal/printer/__snapshots__/preserve_is_inline_slot_II.snap
rename to internal/printer/__printer_js__/preserve_is_inline_slot_II.snap
diff --git a/internal/printer/__snapshots__/script__renderScript__true_.snap b/internal/printer/__printer_js__/script__renderScript__true_.snap
similarity index 100%
rename from internal/printer/__snapshots__/script__renderScript__true_.snap
rename to internal/printer/__printer_js__/script__renderScript__true_.snap
diff --git a/internal/printer/__snapshots__/script_before_elements.snap b/internal/printer/__printer_js__/script_before_elements.snap
similarity index 100%
rename from internal/printer/__snapshots__/script_before_elements.snap
rename to internal/printer/__printer_js__/script_before_elements.snap
diff --git a/internal/printer/__snapshots__/script_define_vars_I.snap b/internal/printer/__printer_js__/script_define_vars_I.snap
similarity index 100%
rename from internal/printer/__snapshots__/script_define_vars_I.snap
rename to internal/printer/__printer_js__/script_define_vars_I.snap
diff --git a/internal/printer/__snapshots__/script_define_vars_II.snap b/internal/printer/__printer_js__/script_define_vars_II.snap
similarity index 100%
rename from internal/printer/__snapshots__/script_define_vars_II.snap
rename to internal/printer/__printer_js__/script_define_vars_II.snap
diff --git a/internal/printer/__snapshots__/script_external__renderScript__true_.snap b/internal/printer/__printer_js__/script_external__renderScript__true_.snap
similarity index 100%
rename from internal/printer/__snapshots__/script_external__renderScript__true_.snap
rename to internal/printer/__printer_js__/script_external__renderScript__true_.snap
diff --git a/internal/printer/__snapshots__/script_hoist_with_frontmatter.snap b/internal/printer/__printer_js__/script_hoist_with_frontmatter.snap
similarity index 100%
rename from internal/printer/__snapshots__/script_hoist_with_frontmatter.snap
rename to internal/printer/__printer_js__/script_hoist_with_frontmatter.snap
diff --git a/internal/printer/__snapshots__/script_hoist_without_frontmatter.snap b/internal/printer/__printer_js__/script_hoist_without_frontmatter.snap
similarity index 100%
rename from internal/printer/__snapshots__/script_hoist_without_frontmatter.snap
rename to internal/printer/__printer_js__/script_hoist_without_frontmatter.snap
diff --git a/internal/printer/__snapshots__/script_in__head_.snap b/internal/printer/__printer_js__/script_in__head_.snap
similarity index 100%
rename from internal/printer/__snapshots__/script_in__head_.snap
rename to internal/printer/__printer_js__/script_in__head_.snap
diff --git a/internal/printer/__snapshots__/script_inline.snap b/internal/printer/__printer_js__/script_inline.snap
similarity index 100%
rename from internal/printer/__snapshots__/script_inline.snap
rename to internal/printer/__printer_js__/script_inline.snap
diff --git a/internal/printer/__snapshots__/script_inline__renderScript__true_.snap b/internal/printer/__printer_js__/script_inline__renderScript__true_.snap
similarity index 100%
rename from internal/printer/__snapshots__/script_inline__renderScript__true_.snap
rename to internal/printer/__printer_js__/script_inline__renderScript__true_.snap
diff --git a/internal/printer/__snapshots__/script_mixed_handled_and_inline__renderScript__true_.snap b/internal/printer/__printer_js__/script_mixed_handled_and_inline__renderScript__true_.snap
similarity index 100%
rename from internal/printer/__snapshots__/script_mixed_handled_and_inline__renderScript__true_.snap
rename to internal/printer/__printer_js__/script_mixed_handled_and_inline__renderScript__true_.snap
diff --git a/internal/printer/__snapshots__/script_multiple__renderScript__true_.snap b/internal/printer/__printer_js__/script_multiple__renderScript__true_.snap
similarity index 100%
rename from internal/printer/__snapshots__/script_multiple__renderScript__true_.snap
rename to internal/printer/__printer_js__/script_multiple__renderScript__true_.snap
diff --git a/internal/printer/__snapshots__/select_in_form.snap b/internal/printer/__printer_js__/select_in_form.snap
similarity index 100%
rename from internal/printer/__snapshots__/select_in_form.snap
rename to internal/printer/__printer_js__/select_in_form.snap
diff --git a/internal/printer/__snapshots__/select_map_expression.snap b/internal/printer/__printer_js__/select_map_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/select_map_expression.snap
rename to internal/printer/__printer_js__/select_map_expression.snap
diff --git a/internal/printer/__snapshots__/select_nested_option.snap b/internal/printer/__printer_js__/select_nested_option.snap
similarity index 100%
rename from internal/printer/__snapshots__/select_nested_option.snap
rename to internal/printer/__printer_js__/select_nested_option.snap
diff --git a/internal/printer/__snapshots__/select_option_expression.snap b/internal/printer/__printer_js__/select_option_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/select_option_expression.snap
rename to internal/printer/__printer_js__/select_option_expression.snap
diff --git a/internal/printer/__snapshots__/self-closing_td.snap b/internal/printer/__printer_js__/self-closing_td.snap
similarity index 100%
rename from internal/printer/__snapshots__/self-closing_td.snap
rename to internal/printer/__printer_js__/self-closing_td.snap
diff --git a/internal/printer/__snapshots__/set_html.snap b/internal/printer/__printer_js__/set_html.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html.snap
rename to internal/printer/__printer_js__/set_html.snap
diff --git a/internal/printer/__snapshots__/set_html_and_set_text.snap b/internal/printer/__printer_js__/set_html_and_set_text.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_and_set_text.snap
rename to internal/printer/__printer_js__/set_html_and_set_text.snap
diff --git a/internal/printer/__snapshots__/set_html_on_Component.snap b/internal/printer/__printer_js__/set_html_on_Component.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_Component.snap
rename to internal/printer/__printer_js__/set_html_on_Component.snap
diff --git a/internal/printer/__snapshots__/set_html_on_Component_with_quoted_attribute.snap b/internal/printer/__printer_js__/set_html_on_Component_with_quoted_attribute.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_Component_with_quoted_attribute.snap
rename to internal/printer/__printer_js__/set_html_on_Component_with_quoted_attribute.snap
diff --git a/internal/printer/__snapshots__/set_html_on_Component_with_template_literal_attribute_with_variable.snap b/internal/printer/__printer_js__/set_html_on_Component_with_template_literal_attribute_with_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_Component_with_template_literal_attribute_with_variable.snap
rename to internal/printer/__printer_js__/set_html_on_Component_with_template_literal_attribute_with_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_on_Component_with_template_literal_attribute_without_variable.snap b/internal/printer/__printer_js__/set_html_on_Component_with_template_literal_attribute_without_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_Component_with_template_literal_attribute_without_variable.snap
rename to internal/printer/__printer_js__/set_html_on_Component_with_template_literal_attribute_without_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_on_Fragment.snap b/internal/printer/__printer_js__/set_html_on_Fragment.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_Fragment.snap
rename to internal/printer/__printer_js__/set_html_on_Fragment.snap
diff --git a/internal/printer/__snapshots__/set_html_on_Fragment_with_quoted_attribute.snap b/internal/printer/__printer_js__/set_html_on_Fragment_with_quoted_attribute.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_Fragment_with_quoted_attribute.snap
rename to internal/printer/__printer_js__/set_html_on_Fragment_with_quoted_attribute.snap
diff --git a/internal/printer/__snapshots__/set_html_on_Fragment_with_template_literal_attribute_with_variable.snap b/internal/printer/__printer_js__/set_html_on_Fragment_with_template_literal_attribute_with_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_Fragment_with_template_literal_attribute_with_variable.snap
rename to internal/printer/__printer_js__/set_html_on_Fragment_with_template_literal_attribute_with_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_on_Fragment_with_template_literal_attribute_without_variable.snap b/internal/printer/__printer_js__/set_html_on_Fragment_with_template_literal_attribute_without_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_Fragment_with_template_literal_attribute_without_variable.snap
rename to internal/printer/__printer_js__/set_html_on_Fragment_with_template_literal_attribute_without_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_on_custom-element.snap b/internal/printer/__printer_js__/set_html_on_custom-element.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_custom-element.snap
rename to internal/printer/__printer_js__/set_html_on_custom-element.snap
diff --git a/internal/printer/__snapshots__/set_html_on_custom-element_with_quoted_attribute.snap b/internal/printer/__printer_js__/set_html_on_custom-element_with_quoted_attribute.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_custom-element_with_quoted_attribute.snap
rename to internal/printer/__printer_js__/set_html_on_custom-element_with_quoted_attribute.snap
diff --git a/internal/printer/__snapshots__/set_html_on_custom-element_with_template_literal_attribute_with_variable.snap b/internal/printer/__printer_js__/set_html_on_custom-element_with_template_literal_attribute_with_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_custom-element_with_template_literal_attribute_with_variable.snap
rename to internal/printer/__printer_js__/set_html_on_custom-element_with_template_literal_attribute_with_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_on_custom-element_with_template_literal_attribute_without_variable.snap b/internal/printer/__printer_js__/set_html_on_custom-element_with_template_literal_attribute_without_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_custom-element_with_template_literal_attribute_without_variable.snap
rename to internal/printer/__printer_js__/set_html_on_custom-element_with_template_literal_attribute_without_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_on_empty_tag.snap b/internal/printer/__printer_js__/set_html_on_empty_tag.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_empty_tag.snap
rename to internal/printer/__printer_js__/set_html_on_empty_tag.snap
diff --git a/internal/printer/__snapshots__/set_html_on_empty_tag_with_quoted_attribute.snap b/internal/printer/__printer_js__/set_html_on_empty_tag_with_quoted_attribute.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_empty_tag_with_quoted_attribute.snap
rename to internal/printer/__printer_js__/set_html_on_empty_tag_with_quoted_attribute.snap
diff --git a/internal/printer/__snapshots__/set_html_on_empty_tag_with_template_literal_attribute_with_variable.snap b/internal/printer/__printer_js__/set_html_on_empty_tag_with_template_literal_attribute_with_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_empty_tag_with_template_literal_attribute_with_variable.snap
rename to internal/printer/__printer_js__/set_html_on_empty_tag_with_template_literal_attribute_with_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_on_empty_tag_with_template_literal_attribute_without_variable.snap b/internal/printer/__printer_js__/set_html_on_empty_tag_with_template_literal_attribute_without_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_empty_tag_with_template_literal_attribute_without_variable.snap
rename to internal/printer/__printer_js__/set_html_on_empty_tag_with_template_literal_attribute_without_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_on_script.snap b/internal/printer/__printer_js__/set_html_on_script.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_script.snap
rename to internal/printer/__printer_js__/set_html_on_script.snap
diff --git a/internal/printer/__snapshots__/set_html_on_script_with_quoted_attribute.snap b/internal/printer/__printer_js__/set_html_on_script_with_quoted_attribute.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_script_with_quoted_attribute.snap
rename to internal/printer/__printer_js__/set_html_on_script_with_quoted_attribute.snap
diff --git a/internal/printer/__snapshots__/set_html_on_script_with_template_literal_attribute_with_variable.snap b/internal/printer/__printer_js__/set_html_on_script_with_template_literal_attribute_with_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_script_with_template_literal_attribute_with_variable.snap
rename to internal/printer/__printer_js__/set_html_on_script_with_template_literal_attribute_with_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_on_script_with_template_literal_attribute_without_variable.snap b/internal/printer/__printer_js__/set_html_on_script_with_template_literal_attribute_without_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_script_with_template_literal_attribute_without_variable.snap
rename to internal/printer/__printer_js__/set_html_on_script_with_template_literal_attribute_without_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_on_self-closing_tag.snap b/internal/printer/__printer_js__/set_html_on_self-closing_tag.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_self-closing_tag.snap
rename to internal/printer/__printer_js__/set_html_on_self-closing_tag.snap
diff --git a/internal/printer/__snapshots__/set_html_on_self-closing_tag_with_quoted_attribute.snap b/internal/printer/__printer_js__/set_html_on_self-closing_tag_with_quoted_attribute.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_self-closing_tag_with_quoted_attribute.snap
rename to internal/printer/__printer_js__/set_html_on_self-closing_tag_with_quoted_attribute.snap
diff --git a/internal/printer/__snapshots__/set_html_on_self-closing_tag_with_template_literal_attribute_with_variable.snap b/internal/printer/__printer_js__/set_html_on_self-closing_tag_with_template_literal_attribute_with_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_self-closing_tag_with_template_literal_attribute_with_variable.snap
rename to internal/printer/__printer_js__/set_html_on_self-closing_tag_with_template_literal_attribute_with_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_on_self-closing_tag_with_template_literal_attribute_without_variable.snap b/internal/printer/__printer_js__/set_html_on_self-closing_tag_with_template_literal_attribute_without_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_self-closing_tag_with_template_literal_attribute_without_variable.snap
rename to internal/printer/__printer_js__/set_html_on_self-closing_tag_with_template_literal_attribute_without_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_on_style.snap b/internal/printer/__printer_js__/set_html_on_style.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_style.snap
rename to internal/printer/__printer_js__/set_html_on_style.snap
diff --git a/internal/printer/__snapshots__/set_html_on_style_with_quoted_attribute.snap b/internal/printer/__printer_js__/set_html_on_style_with_quoted_attribute.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_style_with_quoted_attribute.snap
rename to internal/printer/__printer_js__/set_html_on_style_with_quoted_attribute.snap
diff --git a/internal/printer/__snapshots__/set_html_on_style_with_template_literal_attribute_with_variable.snap b/internal/printer/__printer_js__/set_html_on_style_with_template_literal_attribute_with_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_style_with_template_literal_attribute_with_variable.snap
rename to internal/printer/__printer_js__/set_html_on_style_with_template_literal_attribute_with_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_on_style_with_template_literal_attribute_without_variable.snap b/internal/printer/__printer_js__/set_html_on_style_with_template_literal_attribute_without_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_style_with_template_literal_attribute_without_variable.snap
rename to internal/printer/__printer_js__/set_html_on_style_with_template_literal_attribute_without_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_on_tag_with_children.snap b/internal/printer/__printer_js__/set_html_on_tag_with_children.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_tag_with_children.snap
rename to internal/printer/__printer_js__/set_html_on_tag_with_children.snap
diff --git a/internal/printer/__snapshots__/set_html_on_tag_with_children_and_quoted_attribute.snap b/internal/printer/__printer_js__/set_html_on_tag_with_children_and_quoted_attribute.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_tag_with_children_and_quoted_attribute.snap
rename to internal/printer/__printer_js__/set_html_on_tag_with_children_and_quoted_attribute.snap
diff --git a/internal/printer/__snapshots__/set_html_on_tag_with_children_and_template_literal_attribute_with_variable.snap b/internal/printer/__printer_js__/set_html_on_tag_with_children_and_template_literal_attribute_with_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_tag_with_children_and_template_literal_attribute_with_variable.snap
rename to internal/printer/__printer_js__/set_html_on_tag_with_children_and_template_literal_attribute_with_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_on_tag_with_children_and_template_literal_attribute_without_variable.snap b/internal/printer/__printer_js__/set_html_on_tag_with_children_and_template_literal_attribute_without_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_tag_with_children_and_template_literal_attribute_without_variable.snap
rename to internal/printer/__printer_js__/set_html_on_tag_with_children_and_template_literal_attribute_without_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_on_tag_with_empty_whitespace.snap b/internal/printer/__printer_js__/set_html_on_tag_with_empty_whitespace.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_tag_with_empty_whitespace.snap
rename to internal/printer/__printer_js__/set_html_on_tag_with_empty_whitespace.snap
diff --git a/internal/printer/__snapshots__/set_html_on_tag_with_empty_whitespace_and_quoted_attribute.snap b/internal/printer/__printer_js__/set_html_on_tag_with_empty_whitespace_and_quoted_attribute.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_tag_with_empty_whitespace_and_quoted_attribute.snap
rename to internal/printer/__printer_js__/set_html_on_tag_with_empty_whitespace_and_quoted_attribute.snap
diff --git a/internal/printer/__snapshots__/set_html_on_tag_with_empty_whitespace_and_template_literal_attribute_with_variable.snap b/internal/printer/__printer_js__/set_html_on_tag_with_empty_whitespace_and_template_literal_attribute_with_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_tag_with_empty_whitespace_and_template_literal_attribute_with_variable.snap
rename to internal/printer/__printer_js__/set_html_on_tag_with_empty_whitespace_and_template_literal_attribute_with_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_on_tag_with_empty_whitespace_and_template_literal_attribute_without_variable.snap b/internal/printer/__printer_js__/set_html_on_tag_with_empty_whitespace_and_template_literal_attribute_without_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_on_tag_with_empty_whitespace_and_template_literal_attribute_without_variable.snap
rename to internal/printer/__printer_js__/set_html_on_tag_with_empty_whitespace_and_template_literal_attribute_without_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_with_other_attributes.snap b/internal/printer/__printer_js__/set_html_with_other_attributes.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_with_other_attributes.snap
rename to internal/printer/__printer_js__/set_html_with_other_attributes.snap
diff --git a/internal/printer/__snapshots__/set_html_with_quoted_attribute.snap b/internal/printer/__printer_js__/set_html_with_quoted_attribute.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_with_quoted_attribute.snap
rename to internal/printer/__printer_js__/set_html_with_quoted_attribute.snap
diff --git a/internal/printer/__snapshots__/set_html_with_quoted_attribute_and_other_attributes.snap b/internal/printer/__printer_js__/set_html_with_quoted_attribute_and_other_attributes.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_with_quoted_attribute_and_other_attributes.snap
rename to internal/printer/__printer_js__/set_html_with_quoted_attribute_and_other_attributes.snap
diff --git a/internal/printer/__snapshots__/set_html_with_template_literal_attribute_with_variable.snap b/internal/printer/__printer_js__/set_html_with_template_literal_attribute_with_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_with_template_literal_attribute_with_variable.snap
rename to internal/printer/__printer_js__/set_html_with_template_literal_attribute_with_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_with_template_literal_attribute_with_variable_and_other_attributes.snap b/internal/printer/__printer_js__/set_html_with_template_literal_attribute_with_variable_and_other_attributes.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_with_template_literal_attribute_with_variable_and_other_attributes.snap
rename to internal/printer/__printer_js__/set_html_with_template_literal_attribute_with_variable_and_other_attributes.snap
diff --git a/internal/printer/__snapshots__/set_html_with_template_literal_attribute_without_variable.snap b/internal/printer/__printer_js__/set_html_with_template_literal_attribute_without_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_with_template_literal_attribute_without_variable.snap
rename to internal/printer/__printer_js__/set_html_with_template_literal_attribute_without_variable.snap
diff --git a/internal/printer/__snapshots__/set_html_with_template_literal_attribute_without_variable_and_other_attributes.snap b/internal/printer/__printer_js__/set_html_with_template_literal_attribute_without_variable_and_other_attributes.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_html_with_template_literal_attribute_without_variable_and_other_attributes.snap
rename to internal/printer/__printer_js__/set_html_with_template_literal_attribute_without_variable_and_other_attributes.snap
diff --git a/internal/printer/__snapshots__/set_text.snap b/internal/printer/__printer_js__/set_text.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_text.snap
rename to internal/printer/__printer_js__/set_text.snap
diff --git a/internal/printer/__snapshots__/set_text_on_Component.snap b/internal/printer/__printer_js__/set_text_on_Component.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_text_on_Component.snap
rename to internal/printer/__printer_js__/set_text_on_Component.snap
diff --git a/internal/printer/__snapshots__/set_text_on_Component_with_quoted_attribute.snap b/internal/printer/__printer_js__/set_text_on_Component_with_quoted_attribute.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_text_on_Component_with_quoted_attribute.snap
rename to internal/printer/__printer_js__/set_text_on_Component_with_quoted_attribute.snap
diff --git a/internal/printer/__snapshots__/set_text_on_Component_with_template_literal_attribute_with_variable.snap b/internal/printer/__printer_js__/set_text_on_Component_with_template_literal_attribute_with_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_text_on_Component_with_template_literal_attribute_with_variable.snap
rename to internal/printer/__printer_js__/set_text_on_Component_with_template_literal_attribute_with_variable.snap
diff --git a/internal/printer/__snapshots__/set_text_on_Component_with_template_literal_attribute_without_variable.snap b/internal/printer/__printer_js__/set_text_on_Component_with_template_literal_attribute_without_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_text_on_Component_with_template_literal_attribute_without_variable.snap
rename to internal/printer/__printer_js__/set_text_on_Component_with_template_literal_attribute_without_variable.snap
diff --git a/internal/printer/__snapshots__/set_text_on_custom-element.snap b/internal/printer/__printer_js__/set_text_on_custom-element.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_text_on_custom-element.snap
rename to internal/printer/__printer_js__/set_text_on_custom-element.snap
diff --git a/internal/printer/__snapshots__/set_text_on_custom-element_with_quoted_attribute.snap b/internal/printer/__printer_js__/set_text_on_custom-element_with_quoted_attribute.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_text_on_custom-element_with_quoted_attribute.snap
rename to internal/printer/__printer_js__/set_text_on_custom-element_with_quoted_attribute.snap
diff --git a/internal/printer/__snapshots__/set_text_on_custom-element_with_template_literal_attribute_with_variable.snap b/internal/printer/__printer_js__/set_text_on_custom-element_with_template_literal_attribute_with_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_text_on_custom-element_with_template_literal_attribute_with_variable.snap
rename to internal/printer/__printer_js__/set_text_on_custom-element_with_template_literal_attribute_with_variable.snap
diff --git a/internal/printer/__snapshots__/set_text_on_custom-element_with_template_literal_attribute_without_variable.snap b/internal/printer/__printer_js__/set_text_on_custom-element_with_template_literal_attribute_without_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_text_on_custom-element_with_template_literal_attribute_without_variable.snap
rename to internal/printer/__printer_js__/set_text_on_custom-element_with_template_literal_attribute_without_variable.snap
diff --git a/internal/printer/__snapshots__/set_text_with_quoted_attribute.snap b/internal/printer/__printer_js__/set_text_with_quoted_attribute.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_text_with_quoted_attribute.snap
rename to internal/printer/__printer_js__/set_text_with_quoted_attribute.snap
diff --git a/internal/printer/__snapshots__/set_text_with_template_literal_attribute_with_variable.snap b/internal/printer/__printer_js__/set_text_with_template_literal_attribute_with_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_text_with_template_literal_attribute_with_variable.snap
rename to internal/printer/__printer_js__/set_text_with_template_literal_attribute_with_variable.snap
diff --git a/internal/printer/__snapshots__/set_text_with_template_literal_attribute_without_variable.snap b/internal/printer/__printer_js__/set_text_with_template_literal_attribute_without_variable.snap
similarity index 100%
rename from internal/printer/__snapshots__/set_text_with_template_literal_attribute_without_variable.snap
rename to internal/printer/__printer_js__/set_text_with_template_literal_attribute_without_variable.snap
diff --git a/internal/printer/__snapshots__/sibling_expressions.snap b/internal/printer/__printer_js__/sibling_expressions.snap
similarity index 100%
rename from internal/printer/__snapshots__/sibling_expressions.snap
rename to internal/printer/__printer_js__/sibling_expressions.snap
diff --git a/internal/printer/__snapshots__/simple_ternary.snap b/internal/printer/__printer_js__/simple_ternary.snap
similarity index 100%
rename from internal/printer/__snapshots__/simple_ternary.snap
rename to internal/printer/__printer_js__/simple_ternary.snap
diff --git a/internal/printer/__snapshots__/slot_inside_of_Base.snap b/internal/printer/__printer_js__/slot_inside_of_Base.snap
similarity index 100%
rename from internal/printer/__snapshots__/slot_inside_of_Base.snap
rename to internal/printer/__printer_js__/slot_inside_of_Base.snap
diff --git a/internal/printer/__snapshots__/slot_with_fallback.snap b/internal/printer/__printer_js__/slot_with_fallback.snap
similarity index 100%
rename from internal/printer/__snapshots__/slot_with_fallback.snap
rename to internal/printer/__printer_js__/slot_with_fallback.snap
diff --git a/internal/printer/__snapshots__/slot_with_fallback_II.snap b/internal/printer/__printer_js__/slot_with_fallback_II.snap
similarity index 100%
rename from internal/printer/__snapshots__/slot_with_fallback_II.snap
rename to internal/printer/__printer_js__/slot_with_fallback_II.snap
diff --git a/internal/printer/__snapshots__/slot_with_fallback_III.snap b/internal/printer/__printer_js__/slot_with_fallback_III.snap
similarity index 100%
rename from internal/printer/__snapshots__/slot_with_fallback_III.snap
rename to internal/printer/__printer_js__/slot_with_fallback_III.snap
diff --git a/internal/printer/__snapshots__/slot_with_quoted_attributes.snap b/internal/printer/__printer_js__/slot_with_quoted_attributes.snap
similarity index 100%
rename from internal/printer/__snapshots__/slot_with_quoted_attributes.snap
rename to internal/printer/__printer_js__/slot_with_quoted_attributes.snap
diff --git a/internal/printer/__snapshots__/slots__basic_.snap b/internal/printer/__printer_js__/slots__basic_.snap
similarity index 100%
rename from internal/printer/__snapshots__/slots__basic_.snap
rename to internal/printer/__printer_js__/slots__basic_.snap
diff --git a/internal/printer/__snapshots__/slots__dynamic_name_.snap b/internal/printer/__printer_js__/slots__dynamic_name_.snap
similarity index 100%
rename from internal/printer/__snapshots__/slots__dynamic_name_.snap
rename to internal/printer/__printer_js__/slots__dynamic_name_.snap
diff --git a/internal/printer/__snapshots__/slots__expression_.snap b/internal/printer/__printer_js__/slots__expression_.snap
similarity index 100%
rename from internal/printer/__snapshots__/slots__expression_.snap
rename to internal/printer/__printer_js__/slots__expression_.snap
diff --git a/internal/printer/__snapshots__/slots__named_only_.snap b/internal/printer/__printer_js__/slots__named_only_.snap
similarity index 100%
rename from internal/printer/__snapshots__/slots__named_only_.snap
rename to internal/printer/__printer_js__/slots__named_only_.snap
diff --git a/internal/printer/__snapshots__/slots__no_comments_.snap b/internal/printer/__printer_js__/slots__no_comments_.snap
similarity index 100%
rename from internal/printer/__snapshots__/slots__no_comments_.snap
rename to internal/printer/__printer_js__/slots__no_comments_.snap
diff --git a/internal/printer/__snapshots__/small_expression.snap b/internal/printer/__printer_js__/small_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/small_expression.snap
rename to internal/printer/__printer_js__/small_expression.snap
diff --git a/internal/printer/__snapshots__/solidus_in_template_literal_expression.snap b/internal/printer/__printer_js__/solidus_in_template_literal_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/solidus_in_template_literal_expression.snap
rename to internal/printer/__printer_js__/solidus_in_template_literal_expression.snap
diff --git a/internal/printer/__snapshots__/spread_with_double_quotation_marks.snap b/internal/printer/__printer_js__/spread_with_double_quotation_marks.snap
similarity index 100%
rename from internal/printer/__snapshots__/spread_with_double_quotation_marks.snap
rename to internal/printer/__printer_js__/spread_with_double_quotation_marks.snap
diff --git a/internal/printer/__snapshots__/spread_with_style_but_no_explicit_class.snap b/internal/printer/__printer_js__/spread_with_style_but_no_explicit_class.snap
similarity index 100%
rename from internal/printer/__snapshots__/spread_with_style_but_no_explicit_class.snap
rename to internal/printer/__printer_js__/spread_with_style_but_no_explicit_class.snap
diff --git a/internal/printer/__snapshots__/spread_without_style_or_class.snap b/internal/printer/__printer_js__/spread_without_style_or_class.snap
similarity index 100%
rename from internal/printer/__snapshots__/spread_without_style_or_class.snap
rename to internal/printer/__printer_js__/spread_without_style_or_class.snap
diff --git a/internal/printer/__snapshots__/styles__no_frontmatter_.snap b/internal/printer/__printer_js__/styles__no_frontmatter_.snap
similarity index 100%
rename from internal/printer/__snapshots__/styles__no_frontmatter_.snap
rename to internal/printer/__printer_js__/styles__no_frontmatter_.snap
diff --git a/internal/printer/__snapshots__/svg_expressions.snap b/internal/printer/__printer_js__/svg_expressions.snap
similarity index 100%
rename from internal/printer/__snapshots__/svg_expressions.snap
rename to internal/printer/__printer_js__/svg_expressions.snap
diff --git a/internal/printer/__snapshots__/table.snap b/internal/printer/__printer_js__/table.snap
similarity index 100%
rename from internal/printer/__snapshots__/table.snap
rename to internal/printer/__printer_js__/table.snap
diff --git a/internal/printer/__snapshots__/table_II.snap b/internal/printer/__printer_js__/table_II.snap
similarity index 100%
rename from internal/printer/__snapshots__/table_II.snap
rename to internal/printer/__printer_js__/table_II.snap
diff --git a/internal/printer/__snapshots__/table_III.snap b/internal/printer/__printer_js__/table_III.snap
similarity index 100%
rename from internal/printer/__snapshots__/table_III.snap
rename to internal/printer/__printer_js__/table_III.snap
diff --git a/internal/printer/__snapshots__/table_IV.snap b/internal/printer/__printer_js__/table_IV.snap
similarity index 100%
rename from internal/printer/__snapshots__/table_IV.snap
rename to internal/printer/__printer_js__/table_IV.snap
diff --git a/internal/printer/__snapshots__/table_caption_expression.snap b/internal/printer/__printer_js__/table_caption_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/table_caption_expression.snap
rename to internal/printer/__printer_js__/table_caption_expression.snap
diff --git a/internal/printer/__snapshots__/table_expression_with_trailing_div.snap b/internal/printer/__printer_js__/table_expression_with_trailing_div.snap
similarity index 100%
rename from internal/printer/__snapshots__/table_expression_with_trailing_div.snap
rename to internal/printer/__printer_js__/table_expression_with_trailing_div.snap
diff --git a/internal/printer/__snapshots__/table_expressions__no_implicit_tbody_.snap b/internal/printer/__printer_js__/table_expressions__no_implicit_tbody_.snap
similarity index 100%
rename from internal/printer/__snapshots__/table_expressions__no_implicit_tbody_.snap
rename to internal/printer/__printer_js__/table_expressions__no_implicit_tbody_.snap
diff --git a/internal/printer/__snapshots__/table_simple_case.snap b/internal/printer/__printer_js__/table_simple_case.snap
similarity index 100%
rename from internal/printer/__snapshots__/table_simple_case.snap
rename to internal/printer/__printer_js__/table_simple_case.snap
diff --git a/internal/printer/__snapshots__/table_slot_I.snap b/internal/printer/__printer_js__/table_slot_I.snap
similarity index 100%
rename from internal/printer/__snapshots__/table_slot_I.snap
rename to internal/printer/__printer_js__/table_slot_I.snap
diff --git a/internal/printer/__snapshots__/table_slot_II.snap b/internal/printer/__printer_js__/table_slot_II.snap
similarity index 100%
rename from internal/printer/__snapshots__/table_slot_II.snap
rename to internal/printer/__printer_js__/table_slot_II.snap
diff --git a/internal/printer/__snapshots__/table_slot_III.snap b/internal/printer/__printer_js__/table_slot_III.snap
similarity index 100%
rename from internal/printer/__snapshots__/table_slot_III.snap
rename to internal/printer/__printer_js__/table_slot_III.snap
diff --git a/internal/printer/__snapshots__/table_slot_IV.snap b/internal/printer/__printer_js__/table_slot_IV.snap
similarity index 100%
rename from internal/printer/__snapshots__/table_slot_IV.snap
rename to internal/printer/__printer_js__/table_slot_IV.snap
diff --git a/internal/printer/__snapshots__/table_slot_V.snap b/internal/printer/__printer_js__/table_slot_V.snap
similarity index 100%
rename from internal/printer/__snapshots__/table_slot_V.snap
rename to internal/printer/__printer_js__/table_slot_V.snap
diff --git a/internal/printer/__snapshots__/table_with_expression_in_'th'.snap b/internal/printer/__printer_js__/table_with_expression_in__th_.snap
similarity index 100%
rename from internal/printer/__snapshots__/table_with_expression_in_'th'.snap
rename to internal/printer/__printer_js__/table_with_expression_in__th_.snap
diff --git a/internal/printer/__snapshots__/tbody_expressions.snap b/internal/printer/__printer_js__/tbody_expressions.snap
similarity index 100%
rename from internal/printer/__snapshots__/tbody_expressions.snap
rename to internal/printer/__printer_js__/tbody_expressions.snap
diff --git a/internal/printer/__snapshots__/tbody_expressions_2.snap b/internal/printer/__printer_js__/tbody_expressions_2.snap
similarity index 100%
rename from internal/printer/__snapshots__/tbody_expressions_2.snap
rename to internal/printer/__printer_js__/tbody_expressions_2.snap
diff --git a/internal/printer/__snapshots__/tbody_expressions_3.snap b/internal/printer/__printer_js__/tbody_expressions_3.snap
similarity index 100%
rename from internal/printer/__snapshots__/tbody_expressions_3.snap
rename to internal/printer/__printer_js__/tbody_expressions_3.snap
diff --git a/internal/printer/__snapshots__/td_expressions.snap b/internal/printer/__printer_js__/td_expressions.snap
similarity index 100%
rename from internal/printer/__snapshots__/td_expressions.snap
rename to internal/printer/__printer_js__/td_expressions.snap
diff --git a/internal/printer/__snapshots__/td_expressions_II.snap b/internal/printer/__printer_js__/td_expressions_II.snap
similarity index 100%
rename from internal/printer/__snapshots__/td_expressions_II.snap
rename to internal/printer/__printer_js__/td_expressions_II.snap
diff --git a/internal/printer/__snapshots__/template_literal_attribute_on_component.snap b/internal/printer/__printer_js__/template_literal_attribute_on_component.snap
similarity index 100%
rename from internal/printer/__snapshots__/template_literal_attribute_on_component.snap
rename to internal/printer/__printer_js__/template_literal_attribute_on_component.snap
diff --git a/internal/printer/__snapshots__/template_literal_attribute_with_variable_on_component.snap b/internal/printer/__printer_js__/template_literal_attribute_with_variable_on_component.snap
similarity index 100%
rename from internal/printer/__snapshots__/template_literal_attribute_with_variable_on_component.snap
rename to internal/printer/__printer_js__/template_literal_attribute_with_variable_on_component.snap
diff --git a/internal/printer/__snapshots__/ternary_component.snap b/internal/printer/__printer_js__/ternary_component.snap
similarity index 100%
rename from internal/printer/__snapshots__/ternary_component.snap
rename to internal/printer/__printer_js__/ternary_component.snap
diff --git a/internal/printer/__snapshots__/ternary_layout.snap b/internal/printer/__printer_js__/ternary_layout.snap
similarity index 100%
rename from internal/printer/__snapshots__/ternary_layout.snap
rename to internal/printer/__printer_js__/ternary_layout.snap
diff --git a/internal/printer/__snapshots__/ternary_slot.snap b/internal/printer/__printer_js__/ternary_slot.snap
similarity index 100%
rename from internal/printer/__snapshots__/ternary_slot.snap
rename to internal/printer/__printer_js__/ternary_slot.snap
diff --git a/internal/printer/__snapshots__/text_after_title_expression.snap b/internal/printer/__printer_js__/text_after_title_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/text_after_title_expression.snap
rename to internal/printer/__printer_js__/text_after_title_expression.snap
diff --git a/internal/printer/__snapshots__/text_after_title_expressions.snap b/internal/printer/__printer_js__/text_after_title_expressions.snap
similarity index 100%
rename from internal/printer/__snapshots__/text_after_title_expressions.snap
rename to internal/printer/__printer_js__/text_after_title_expressions.snap
diff --git a/internal/printer/__snapshots__/text_only.snap b/internal/printer/__printer_js__/text_only.snap
similarity index 100%
rename from internal/printer/__snapshots__/text_only.snap
rename to internal/printer/__printer_js__/text_only.snap
diff --git a/internal/printer/__snapshots__/textarea.snap b/internal/printer/__printer_js__/textarea.snap
similarity index 100%
rename from internal/printer/__snapshots__/textarea.snap
rename to internal/printer/__printer_js__/textarea.snap
diff --git a/internal/printer/__snapshots__/textarea_in_form.snap b/internal/printer/__printer_js__/textarea_in_form.snap
similarity index 100%
rename from internal/printer/__snapshots__/textarea_in_form.snap
rename to internal/printer/__printer_js__/textarea_in_form.snap
diff --git a/internal/printer/__snapshots__/textarea_inside_expression.snap b/internal/printer/__printer_js__/textarea_inside_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/textarea_inside_expression.snap
rename to internal/printer/__printer_js__/textarea_inside_expression.snap
diff --git a/internal/printer/__snapshots__/th_expressions.snap b/internal/printer/__printer_js__/th_expressions.snap
similarity index 100%
rename from internal/printer/__snapshots__/th_expressions.snap
rename to internal/printer/__printer_js__/th_expressions.snap
diff --git a/internal/printer/__snapshots__/tr_only.snap b/internal/printer/__printer_js__/tr_only.snap
similarity index 100%
rename from internal/printer/__snapshots__/tr_only.snap
rename to internal/printer/__printer_js__/tr_only.snap
diff --git a/internal/printer/__snapshots__/trailing_expression.snap b/internal/printer/__printer_js__/trailing_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/trailing_expression.snap
rename to internal/printer/__printer_js__/trailing_expression.snap
diff --git a/internal/printer/__snapshots__/transition_animate_on_Component.snap b/internal/printer/__printer_js__/transition_animate_on_Component.snap
similarity index 100%
rename from internal/printer/__snapshots__/transition_animate_on_Component.snap
rename to internal/printer/__printer_js__/transition_animate_on_Component.snap
diff --git a/internal/printer/__snapshots__/transition_animate_with_an_expression.snap b/internal/printer/__printer_js__/transition_animate_with_an_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/transition_animate_with_an_expression.snap
rename to internal/printer/__printer_js__/transition_animate_with_an_expression.snap
diff --git a/internal/printer/__snapshots__/transition_name_with_an_expression.snap b/internal/printer/__printer_js__/transition_name_with_an_expression.snap
similarity index 100%
rename from internal/printer/__snapshots__/transition_name_with_an_expression.snap
rename to internal/printer/__printer_js__/transition_name_with_an_expression.snap
diff --git a/internal/printer/__snapshots__/transition_name_with_an_template_literal.snap b/internal/printer/__printer_js__/transition_name_with_an_template_literal.snap
similarity index 100%
rename from internal/printer/__snapshots__/transition_name_with_an_template_literal.snap
rename to internal/printer/__printer_js__/transition_name_with_an_template_literal.snap
diff --git a/internal/printer/__snapshots__/transition_persist-props_converted_to_a_data_attribute.snap b/internal/printer/__printer_js__/transition_persist-props_converted_to_a_data_attribute.snap
similarity index 100%
rename from internal/printer/__snapshots__/transition_persist-props_converted_to_a_data_attribute.snap
rename to internal/printer/__printer_js__/transition_persist-props_converted_to_a_data_attribute.snap
diff --git a/internal/printer/__snapshots__/transition_persist_converted_to_a_data_attribute.snap b/internal/printer/__printer_js__/transition_persist_converted_to_a_data_attribute.snap
similarity index 100%
rename from internal/printer/__snapshots__/transition_persist_converted_to_a_data_attribute.snap
rename to internal/printer/__printer_js__/transition_persist_converted_to_a_data_attribute.snap
diff --git a/internal/printer/__snapshots__/transition_persist_uses_transition_name_if_defined.snap b/internal/printer/__printer_js__/transition_persist_uses_transition_name_if_defined.snap
similarity index 100%
rename from internal/printer/__snapshots__/transition_persist_uses_transition_name_if_defined.snap
rename to internal/printer/__printer_js__/transition_persist_uses_transition_name_if_defined.snap
diff --git a/internal/printer/__snapshots__/type_import.snap b/internal/printer/__printer_js__/type_import.snap
similarity index 100%
rename from internal/printer/__snapshots__/type_import.snap
rename to internal/printer/__printer_js__/type_import.snap
diff --git a/internal/printer/__snapshots__/unusual_line_terminator_I.snap b/internal/printer/__printer_js__/unusual_line_terminator_I.snap
similarity index 100%
rename from internal/printer/__snapshots__/unusual_line_terminator_I.snap
rename to internal/printer/__printer_js__/unusual_line_terminator_I.snap
diff --git a/internal/printer/__snapshots__/unusual_line_terminator_II.snap b/internal/printer/__printer_js__/unusual_line_terminator_II.snap
similarity index 100%
rename from internal/printer/__snapshots__/unusual_line_terminator_II.snap
rename to internal/printer/__printer_js__/unusual_line_terminator_II.snap
diff --git a/internal/printer/__snapshots__/user-defined_`implicit`_is_printed.snap b/internal/printer/__printer_js__/user-defined__implicit__is_printed.snap
similarity index 100%
rename from internal/printer/__snapshots__/user-defined_`implicit`_is_printed.snap
rename to internal/printer/__printer_js__/user-defined__implicit__is_printed.snap
diff --git a/internal/printer/__printer_json__/Comment.snap b/internal/printer/__printer_json__/Comment.snap
new file mode 100755
index 000000000..e229e982a
--- /dev/null
+++ b/internal/printer/__printer_json__/Comment.snap
@@ -0,0 +1,14 @@
+
+[TestPrintToJSON/Comment - 1]
+## Input
+
+```
+
+```
+
+## Output
+
+```json
+{"type":"root","children":[{"type":"comment","value":"hello"}]}
+```
+---
diff --git a/internal/printer/__printer_json__/Comment_preserves_whitespace.snap b/internal/printer/__printer_json__/Comment_preserves_whitespace.snap
new file mode 100755
index 000000000..fa89df036
--- /dev/null
+++ b/internal/printer/__printer_json__/Comment_preserves_whitespace.snap
@@ -0,0 +1,14 @@
+
+[TestPrintToJSON/Comment_preserves_whitespace - 1]
+## Input
+
+```
+
+```
+
+## Output
+
+```json
+{"type":"root","children":[{"type":"comment","value":" hello "}]}
+```
+---
diff --git a/internal/printer/__printer_json__/Component.snap b/internal/printer/__printer_json__/Component.snap
new file mode 100755
index 000000000..b0c833fc7
--- /dev/null
+++ b/internal/printer/__printer_json__/Component.snap
@@ -0,0 +1,14 @@
+
+[TestPrintToJSON/Component - 1]
+## Input
+
+```
+
+```
+
+## Output
+
+```json
+{"type":"root","children":[{"type":"component","name":"Component","attributes":[],"children":[]}]}
+```
+---
diff --git a/internal/printer/__printer_json__/Doctype.snap b/internal/printer/__printer_json__/Doctype.snap
new file mode 100755
index 000000000..feaedfd9e
--- /dev/null
+++ b/internal/printer/__printer_json__/Doctype.snap
@@ -0,0 +1,14 @@
+
+[TestPrintToJSON/Doctype - 1]
+## Input
+
+```
+
+```
+
+## Output
+
+```json
+{"type":"root","children":[{"type":"doctype","value":"html"}]}
+```
+---
diff --git a/internal/printer/__printer_json__/Fragment_Literal.snap b/internal/printer/__printer_json__/Fragment_Literal.snap
new file mode 100755
index 000000000..326e337db
--- /dev/null
+++ b/internal/printer/__printer_json__/Fragment_Literal.snap
@@ -0,0 +1,14 @@
+
+[TestPrintToJSON/Fragment_Literal - 1]
+## Input
+
+```
+World
+```
+
+## Output
+
+```json
+{"type":"root","children":[{"type":"fragment","name":"Fragment","attributes":[],"children":[{"type":"text","value":"World"}]}]}
+```
+---
diff --git a/internal/printer/__printer_json__/Fragment_Shorthand.snap b/internal/printer/__printer_json__/Fragment_Shorthand.snap
new file mode 100755
index 000000000..01023c606
--- /dev/null
+++ b/internal/printer/__printer_json__/Fragment_Shorthand.snap
@@ -0,0 +1,14 @@
+
+[TestPrintToJSON/Fragment_Shorthand - 1]
+## Input
+
+```
+<>Hello>
+```
+
+## Output
+
+```json
+{"type":"root","children":[{"type":"fragment","name":"","attributes":[],"children":[{"type":"text","value":"Hello"}]}]}
+```
+---
diff --git a/internal/printer/__printer_json__/Frontmatter.snap b/internal/printer/__printer_json__/Frontmatter.snap
new file mode 100755
index 000000000..69f6875e3
--- /dev/null
+++ b/internal/printer/__printer_json__/Frontmatter.snap
@@ -0,0 +1,17 @@
+
+[TestPrintToJSON/Frontmatter - 1]
+## Input
+
+```
+/-/-/-/
+const a = "hey"
+/-/-/-/
+
{a}
+```
+
+## Output
+
+```json
+{"type":"root","children":[{"type":"frontmatter","value":"\nconst a = \"hey\"\n"},{"type":"element","name":"div","attributes":[],"children":[{"type":"expression","children":[{"type":"text","value":"a"}]}]}]}
+```
+---
diff --git a/internal/printer/__printer_json__/JSON_escape.snap b/internal/printer/__printer_json__/JSON_escape.snap
new file mode 100755
index 000000000..876b4117a
--- /dev/null
+++ b/internal/printer/__printer_json__/JSON_escape.snap
@@ -0,0 +1,19 @@
+
+[TestPrintToJSON/JSON_escape - 1]
+## Input
+
+```
+/-/-/-/
+const a = "\n"
+const b = "\""
+const c = '\''
+/-/-/-/
+{a + b + c}
+```
+
+## Output
+
+```json
+{"type":"root","children":[{"type":"frontmatter","value":"\nconst a = \"\\n\"\nconst b = \"\\\"\"\nconst c = '\\''\n"},{"type":"expression","children":[{"type":"text","value":"a + b + c"}]}]}
+```
+---
diff --git a/internal/printer/__printer_json__/Preserve_namespaces.snap b/internal/printer/__printer_json__/Preserve_namespaces.snap
new file mode 100755
index 000000000..034f752a0
--- /dev/null
+++ b/internal/printer/__printer_json__/Preserve_namespaces.snap
@@ -0,0 +1,14 @@
+
+[TestPrintToJSON/Preserve_namespaces - 1]
+## Input
+
+```
+
+```
+
+## Output
+
+```json
+{"type":"root","children":[{"type":"element","name":"svg","attributes":[{"type":"attribute","kind":"quoted","name":"xmlns","value":"http://www.w3.org/2000/svg","raw":"\"http://www.w3.org/2000/svg\""},{"type":"attribute","kind":"quoted","name":"xmlns:xlink","value":"http://www.w3.org/1999/xlink","raw":"\"http://www.w3.org/1999/xlink\""}],"children":[{"type":"element","name":"rect","attributes":[{"type":"attribute","kind":"quoted","name":"xlink:href","value":"#id","raw":"\"#id\""}],"children":[]}]}]}
+```
+---
diff --git a/internal/printer/__printer_json__/basic.snap b/internal/printer/__printer_json__/basic.snap
new file mode 100755
index 000000000..a52e1917d
--- /dev/null
+++ b/internal/printer/__printer_json__/basic.snap
@@ -0,0 +1,14 @@
+
+[TestPrintToJSON/basic - 1]
+## Input
+
+```
+